0

我正在尝试通过将新值写入正确的寄存器来更改能量计的从属 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);
            }

4

1 回答 1

0

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

于 2020-10-10T07:00:05.203 回答