标签: fins

从C#发送FINS命令到PLC

我尝试通过UDP从PC(C#.NET)发送FINS命令到PLC以太网模块(Omron),但是没有从PLC得到任何响应,并且不知道我可以在哪里开始故障排除.

PLC有一个非常简单的梯形逻辑如下:如果DM100有值#0001,则触发输出101.00.(这里,"触发器"只是存储区域的符号名称D100,"输出"是输出的符号101.00) 在此输入图像描述

然后我写了一段执行"存储区写"的FINS命令的C#,命令代码为01 02,后跟开始地址,要写入的项目数和数据.C#代码应将#的值写入0001PLC的D100区域以触发ON 101.00.

[删除不起作用的代码] ..

输出101.00没有被触发,也没有收到任何异常.我确定了以下内容:

  1. 正确配置的端口,节点和地址由CX-Programmer中的"在线工作"确认.我还ping每个IP以确保节点已连接.
  2. UdpClient代码是有效的,因为我写了一个非常简单的服务器/客户端的代码,成功地发送和接收数据包.
  3. 梯形逻辑没有问题.我将梯子转移到PLC并通过Work Online在监控模式下测试并D100手动设置值.

我怀疑fins_cmnd数组中存在错误,但正如我的代码中所见,我已尽可能详细地评论每个值; 我不可能发现自己错过任何东西.我怀疑我可能没有正确解析十六进制,但同样,我也没有例外来指导我.

我不知道在哪里以及如何排除故障.希望有FINS编程或PLC经验的人可以给我一些帮助.

[答案]
感谢Porge的链接 - 这让我发现了问题.经过几条路径终于让它发挥作用.请参阅下面的工作代码.

string SERV_IP_ADDR = "192.168.250.1";
const int FINS_UDP_PORT = 9600;

byte[] sendPacket = new byte[]
{
    // Full UDP packet: 80 00 02 00 00 00 00 05 00 19 01 …
Run Code Online (Sandbox Code Playgroud)

c# udp plc fins

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

fins ×1

plc ×1

udp ×1