восстановить соединение после изменения идентификатора ведомого устройства в easymodbus RTU C#

Я пытаюсь изменить идентификатор ведомого устройства моего счетчика энергии, записав новое значение в правый регистр. после изменения значения соединение, очевидно, потеряно, но я не могу найти способ его восстановить. я не могу закрыть порт, не закрывая все мое приложение, нет ответа на 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);
            }

1 ответ

Не зная, что это за устройство, трудно ответить на этот вопрос. Возможно, устройству требуется перезапуск / цикл питания, прежде чем оно распознает изменение идентификатора ведомого. Вы также можете улучшить свое приложение, для приложения не имеет смысла завершать работу из-за того, что вы закрыли порт. Что касается того, почему отключение не работает должным образом, поскольку вы сказали, что изменили идентификатор ведомого устройства, поэтому, возможно, не может отключиться, если настройки подключения (идентификатор ведомого устройства) изменились по сравнению с исходным начальным подключением.

Другие вопросы по тегам