Соединение Modbus потеряно сразу после смены SlaveID

Я использую метод для изменения значений моего счетчика энергии. когда я записываю новое значение Slave ID/Adress, соединение немедленно отключается и выдает исключение, что значение порта равно нулю. Я пытался закрыть соединение после записи в регистры, но это не помогает. как восстановить соединение и продолжить изменение других значений?

не могли бы вы помочь?

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
        ConnectionSetUp.SetValueForAdress = string.Format("{0,0:N2}", Adress);
        modbusClient.WriteMultipleRegisters(4002, new int[1] {Adress });
        modbusClient.Disconnect();
    }
    catch (Exception ex)
    {
        modbusClient.Disconnect();
        MessageBox.Show(this, ex.Message, "בדוק הגדרות תקשורת", 
            MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

0 ответов

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