因此,我需要通过串行端口与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;
}
}
答案 0 :(得分:1)
上面显示的代码只是完成目标所需内容的一半。
要切换PLC状态,您需要在其软件中编写一个例程,这样,当您写入某个Modbus线圈(不超过其内存中的地址)时,它将触发该状态更改。这一点都不难,但是您需要在PLC本身中完成。
一旦实现了可以在上面使用代码的位置,则注释的行之一就足够了:
modbusClient.WriteSingleCoil(run_stop, true); // True to run, False to stop
run_stop
是您在PLC中使用的Modbus地址。
一旦弄清楚了要使用哪种语言对PLC进行编程(有多种选择)并进行尝试,您可以重新关注问题或编写新问题。