public static ModbusClient modbusClient = null;
public MainViewModel()
{
modbusClient = new ModbusClient("192.168.0.202", 502);
try
{
modbusClient.UnitIdentifier = 1;//地址
modbusClient.Baudrate = 9600;
modbusClient.ConnectionTimeout = 500;
modbusClient.Connect();
//-----------bool 写入地址位----
string tbAddr = "39"; //地址
string tbBit = "10"; //位
var tmp_read = modbusClient.ReadHoldingRegisters(int.Parse(tbAddr), 1);
//写入true
int pos = int.Parse(tbBit);
var wr_f = tmp_read[0] | (1 << pos);
modbusClient.WriteSingleRegister(int.Parse(tbAddr), wr_f);
Thread.Sleep(3000);
//写入false
int mask = ~(1 << int.Parse(tbBit));
int rr = tmp_read[0] & mask;
modbusClient.WriteSingleRegister(int.Parse(tbAddr), rr);
//-----------bool 写入地址位----
//bool
modbusClient.WriteSingleCoil(0, true);
bool[] result_bool = modbusClient.ReadCoils(0, 8);
Console.WriteLine("bool:" + result_bool[0]);
//int V4060
modbusClient.WriteMultipleRegisters(2030, ModbusClient.ConvertIntToRegisters(555, RegisterOrder.HighLow));
int[] intValue = modbusClient.ReadHoldingRegisters(2030, 2);
int result = ModbusClient.ConvertRegistersToInt(intValue, RegisterOrder.HighLow); //地址号
Console.WriteLine("int:" + result);
//float VD400
modbusClient.WriteMultipleRegisters(2000, ModbusClient.ConvertFloatToRegisters(3.3f, RegisterOrder.HighLow));
int[] floatValue = modbusClient.ReadHoldingRegisters(2000, 2);
float floatResult2 = ModbusClient.ConvertRegistersToFloat(floatValue, RegisterOrder.HighLow);//0为LowHigh 1为HighLow
Console.WriteLine("float:" + floatResult2.ToString("0.00"));
modbusClient.Disconnect();
MessageBox.Show("连接成功");
}
catch (Exception ex)
{
MessageBox.Show("连接失败");
Console.WriteLine(ex);
modbusClient.Disconnect();
//return -1;
}