Ethernet/IP 协议的开源实现汇总
CIP协议由ODVA维护和更新,协议分为好几卷,正版的协议需要成为ODVA会员才能得到。
与大多数工业总线一样,CIP协议分为主从两个部分,分别为master/slave 或scanner/adapter。Ethernet/IP 总线要复杂一些,有部分设备如支持冗余的网关,提供设备级环形(DLR)的环型总线监督器不能简单地分为slave或者adapter。CIP协议中,每个对象,对象的每个实例,对象的每个属性都有ID。同名同一个ID的协议对象在不同的设备中,拥有的属性可能会不同。比如DLR对象的3,4,5,6,7,8,9和11属性只在环型总线监督器中才有,属性13,14,15和16只在冗余网关里才有。
Scaner 的开源实现比较少,而且也不怎么成熟:
一、EIPScanner C++ 写的EIP扫描器,功能不怎么强大但是应该能满足大部分日常需求,但是文档比较完善。该项目使用MIT 许可,对商业应用较为友好。
https://github.com/nimbuscontrols/EIPScanner https://eipscanner.readthedocs.io/en/latest/index.html
二、tuxeip 也是C++ 写的EIP 扫描器,目前好像已没有人维护了,文档也较为简陋。该项目使用GPL 2.0 许可,商业使用必须开源。
Adapter 的开源实现比较多。相对较为流行的是OpENer。OpENer声称通过了ODVA的厂商设备交叉测试,但是其代码质量和文档成熟度堪忧,不建议使用于生产环境中。
https://github.com/EIPStackGroup/OpENer
OpENer 是用C写的,有一个C++的移植。
https://github.com/liftoff-sr/CIPster
另外一个C++ 的实现,基于ROS https://github.com/ros-drivers/odva_ethernetip
其他编程语言的实现
Javascript https://github.com/cmseaton42/node-ethernet-ip
Java https://github.com/digitalpetri/ethernet-ip
c# https://github.com/rossmann-engineering/EEIP.NET (商业公司开源) https://github.com/tswaehn/ethernetIP-explorer (相当成熟的工具,推荐工程调试使用)
Python https://github.com/pjkundert/cpppo https://github.com/ottowayi/pycomm3
总结的很不错,当时吃够了OpENer C版本的苦