我正在开发一个程序,将我的PC连接到Omron CJ2M PLC以发送读/写命令。
根据我的理解,欧姆龙PLC可通过3种方式进行通信:
1)Hostlink,
2)FINS,(TCP或UDP)和
3)EIP。
我的要求是通过EIP连接CJ2M,并通过EIP(CIP)协议发送读/写命令。
最初EIP通信需要发送2个请求:
1)列出服务和2)注册会话
注册会话返回一个句柄,该句柄应该用于通过EIP进一步通信。
我已成功发送列表服务,注册会话和转发开放(RR数据),这些都是由欧姆龙PLC成功回复的。这3个请求/响应没有问题。
现在我想知道需要使用哪个命令/服务来读取欧姆龙的内存区域(比如DR 20内存地址)。
我在RR数据上发送服务代码0x4d,但它显示“供应商特定错误”,然后连接终止。
我需要Omron EIP或wireshark日志或一些嗅探数据包的协议规范,其中通过EIP通信从PC到Omron PLC捕获请求/响应(没有鳍,没有主机链接)。
答案 0 :(得分:1)
我们可以使用"发送单位数据"向欧姆龙EIP发送请求服务代码为0x4d。
此服务(0x4d)用于根据EIP文档发送写请求,但我们可以插入Omron特定命令(FINS)来读取命令特定数据中的内存区域。
<00> 0000 00 00 00 00 00 80 0e 00 01 00 80 00 02 00 00 00 <00> 0010 00 00 00 12 01 01 82 00 00 00 00 01