1

我正在开发一个程序来将我的 PC 连接到 Omron CJ2M PLC 以发送读/写命令。

据我了解,欧姆龙 PLC 可以通过 3 种方法进行通信:

1)主机链接,

2) FINS,(TCP 或 UDP)和

3) EIP。

我这里的要求是通过 EIP 连接 CJ2M,并通过 EIP(CIP) 协议发送读/写命令。

最初 EIP 通信需要发送 2 个请求:

1) 列出服务和 2) 注册会话

注册会话返回一个句柄,该句柄应该用于通过 EIP 进行的进一步通信。

我能够成功发送列表服务、注册会话和转发打开(RR 数据),并且这些都由 Omron PLC 成功回复。这 3 个请求/响应没有问题。

现在我想知道需要使用哪个命令/服务来读取欧姆龙的内存区域(比如 DR 20 内存地址)。

我正在通过 RR 数据发送服务代码 0x4d,但它显示“供应商特定错误”,然后连接被终止。

我需要 Omron EIP 或 wireshark 日志或一些嗅探数据包的协议规范,其中通过从 PC 到 Omron PLC 的 EIP 通信捕获请求/响应(无鳍,无主机链接)。

4

1 回答 1

1

我们可以使用服务代码为 0x4d 的“发送单元数据”向 Omron EIP 发送请求。

此服务 (0x4d) 用于根据 EIP 文档发送写入请求,但我们可以插入 Omron 特定命令 (FINS) 以读取命令特定数据中的内存区域。

0000 00 00 00 00 00 80 0e 00 01 00 80 00 02 00 00 00

0010 00 00 00 12 01 01 82 00 00 00 00 01

于 2016-08-30T10:47:49.510 回答