C# EasyModbusTCP.NET 与基恩士 PLC 的通信



所以我需要通过串行端口与基恩士 PLC 通信,并希望至少通过 C# 应用程序运行 PLC,我遇到了 EasyModBusTCP.net 库并使用下面的代码我设法将 PLC 连接到我的应用程序,但无法使用应用程序将 PLC 的状态从"停止"更改为"运行", 不知道easyModbus是否是这种类型的PLC(KV-60(的正确库

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                ModbusClient modbusClient = new ModbusClient("COM8");
                modbusClient.UnitIdentifier = 1; //Not necessary since default slaveID = 1;
                modbusClient.Baudrate = 115200; // Not necessary since default baudrate = 9600
                modbusClient.Parity = System.IO.Ports.Parity.None;
                modbusClient.StopBits = System.IO.Ports.StopBits.Two;
                modbusClient.ConnectionTimeout = 500;           
                modbusClient.Connect();
                modbusClient.UDPFlag = true;
                label1.Text = "Online";
                //modbusClient.WriteSingleCoil(203, true);
                //modbusClient.WriteSingleRegister(000, 300);
            }
            catch(Exception ex)
            {
                label1.Text = ex.Message.ToString();
                throw;
            }

        }

您上面显示的代码只是实现目标所需代码的一半。

为了能够切换PLC状态,您需要在其软件中编写一个例程,以便当您写入某个Modbus线圈(只不过是其内存中的一个地址(时,它会触发该状态更改。这应该一点也不难,但您需要在PLC本身中完成。

一旦你实现了你可以使用上面的代码,你评论的一行就足够了:

modbusClient.WriteSingleCoil(run_stop, true); // True to run, False to stop

其中run_stop是您在 PLC 中使用的 Modbus 地址。

一旦你弄清楚你想用什么语言来编程你的PLC(你有几个选择(并使用它,你就可以重新关注你的问题或写一个新的问题。

相关内容

  • 没有找到相关文章

最新更新