所以我需要通过串行端口与基恩士 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(你有几个选择(并使用它,你就可以重新关注你的问题或写一个新的问题。