与Keyence PLC的C#EasyModbusTCP.NET通信

时间:2019-07-15 11:35:26

标签: c# plc

因此,我需要通过串行端口与Keyence 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;
            }



        }

1 个答案:

答案 0 :(得分:1)

上面显示的代码只是完成目标所需内容的一半。

要切换PLC状态,您需要在其软件中编写一个例程,这样,当您写入某个Modbus线圈(不超过其内存中的地址)时,它将触发该状态更改。这一点都不难,但是您需要在PLC本身中完成。

一旦实现了可以在上面使用代码的位置,则注释的行之一就足够了:

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

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

一旦弄清楚了要使用哪种语言对PLC进行编程(有多种选择)并进行尝试,您可以重新关注问题或编写新问题。