因此,我需要通过串口与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;
}
}发布于 2019-07-16 16:35:08
上面显示的代码只是实现目标所需代码的一半。
为了能够切换PLC状态,您需要在其软件中编写一个例程,以便当您写入某个Modbus线圈(只不过是其存储器中的一个地址)时,它会触发该状态更改。这应该一点都不难,但您需要在PLC本身中完成。
一旦你实现了可以使用上面的代码,你注释的一行代码就足够了:
modbusClient.WriteSingleCoil(run_stop, true); // True to run, False to stop其中run_stop是您在可编程控制器中使用的Modbus地址。
一旦你弄清楚你想要用什么语言来编程你的PLC (你有几个选择)并尝试它,你就可以重新聚焦你的问题或者写一个新的问题。
https://stackoverflow.com/questions/57038864
复制相似问题