首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# EasyModbusTCP.NET与keyence PLC的通信

C# EasyModbusTCP.NET与keyence PLC的通信
EN

Stack Overflow用户
提问于 2019-07-15 19:35:26
回答 1查看 794关注 0票数 0

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

代码语言:javascript
复制
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;
            }



        }
EN

回答 1

Stack Overflow用户

发布于 2019-07-16 16:35:08

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

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

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

代码语言:javascript
复制
modbusClient.WriteSingleCoil(run_stop, true); // True to run, False to stop

其中run_stop是您在可编程控制器中使用的Modbus地址。

一旦你弄清楚你想要用什么语言来编程你的PLC (你有几个选择)并尝试它,你就可以重新聚焦你的问题或者写一个新的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57038864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档