在easymodbus RTU c#中更改从属ID后恢复连接



我正试图通过向右侧寄存器写入一个新值来更改我的电表的从属Id。一旦值被更改,连接显然会丢失,但我找不到续订的方法。我无法在不关闭整个应用程序的情况下关闭端口,没有对modbusClient的响应。Disconnect((;如何恢复连接并从那里继续?

private void button1_Click(object sender, EventArgs e)
{
try
{
ModbusClient modbusClient = new ModbusClient(ConnectionSetUp.SetValueForCom);
modbusClient.UnitIdentifier = byte.Parse(ConnectionSetUp.SetValueForAdress);
// Not necessary since default baudrate = 9600
modbusClient.Baudrate = int.Parse(ConnectionSetUp.SetValueForBuad);
modbusClient.Parity = System.IO.Ports.Parity.None;
modbusClient.StopBits = System.IO.Ports.StopBits.One;
modbusClient.ConnectionTimeout = int.Parse(ConnectionSetUp.SetValueDelayTime);
modbusClient.Connect();
int Mult = int.Parse(MeterMult.Text);
int Adress = int.Parse(MeterAdress.Text);
int Baud = int.Parse(MeterBaud.Text);
//mult
modbusClient.WriteMultipleRegisters(4001, new int[1] { Mult });
//Adress
modbusClient.WriteMultipleRegisters(4002, new int[1] { Adress });
ConnectionSetUp.SetValueForAdress = string.Format("{0}", Adress);
modbusClient.Disconnect();

modbusClient.Disconnect();
}
catch (Exception ex)
{

MessageBox.Show(this, ex.Message, "bad settings",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

在不知道它是什么设备的情况下,很难回答这个问题,可能设备需要重新启动/电源循环才能识别从属ID更改。你也可以改进你的应用程序,因为你关闭了一个端口而关闭应用程序是没有意义的。至于为什么断开连接不起作用,正如你所说的那样,你已经更改了从属ID,所以如果连接设置(从属ID(从最初的初始连接更改,则可能无法断开连接。

最新更新