Modbus TCP master для нескольких подчиненных

Я занимаюсь разработкой формы Windows для работы в качестве Modbus tcp Master Simulator. Я использую библиотеку NModbus. Я хочу подключиться к нескольким ведомым устройствам одновременно и выполнить операцию чтения и записи, поддерживает ли библиотека NModbus такую ​​реализацию? и если да, то как? В настоящее время я могу подключиться к одному ведомому устройству и выполнять операции чтения / записи, но я застрял на том же, что и с несколькими ведомыми устройствами. Должен ли я использовать Threading Concept для достижения того же. Вот мой код для подключения к одному ведомому устройству и выполнения операции чтения / записи.

        private void btnConnect_Click(object sender, EventArgs e)
        {
            try
            {
                TcpClient masterTcpClient = new TcpClient(txtIP.Text, 502);
                master = ModbusIpMaster.CreateIp(masterTcpClient);
                MessageBox.Show("Connected");

            }
            catch (SystemException error)
            {
                MessageBox.Show(error.Message);
            }

        }

        private void btnReadCoil_Click(object sender, EventArgs e)
        {
            try
            {

                byte slaveID = 255;
                ushort startAddress = Convert.ToUInt16(txtStartaddress.Text);
                ushort numInputs = Convert.ToUInt16(txtSize.Text);
                bool[] inputs = master.ReadCoils(slaveID, startAddress, numInputs);
                AnswerFromServer.Items.Clear();
                for (int i = 0; i < inputs.Length; i++)
                {
                    AnswerFromServer.Items.Add(Convert.ToInt16(inputs[i]));
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Exception Reading values from Server", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


        }

        private void btnWriteSingleRegister_Click(object sender, EventArgs e)
        {
            try
            {

                byte slaveID = 255;
                ushort RegisterAddress = Convert.ToUInt16(txtStartaddress.Text);
                ushort value = Convert.ToUInt16(txtSingleValue.Text);
                master.WriteSingleRegister(slaveID, RegisterAddress, value);

            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Exception writing values to Server", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

Может ли кто-нибудь помочь мне с этим?

1 ответ

создайте еще один экземпляр этого сокета и поддерживайте его.

      TcpClient masterTcpClient_Two = new TcpClient(txtIPTwo.Text, 502);
Другие вопросы по тегам