Соединение 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);
}
}