Ethernet/IP是一种工业自动化领域中常用的网络通信协议,它是基于标准以太网技术的应用层协议。作为工业领域的通信协议之一,Ethernet/IP 提供了一种在工业自动化设备之间实现通信和数据交换的标准化方法。python要实现Ethernet/IP的客户端,可以采用pycomm3模块,但不一定是pycomm3,其中原委咋们慢慢聊,本文为第一篇。
一、关于Ethernet/IP
1、Ethernet/IP的特点
实时性和可靠性: Ethernet/IP 被设计用于满足工业控制系统中对实时性和可靠性的高要求。这对于需要在严格时间限制内传输数据的应用非常重要,例如,在自动化制造过程中。
基于 TCP/IP: Ethernet/IP 是基于 TCP/IP 协议栈的,这使得它可以与通用的互联网技术和网络设备兼容。这也使得它相对于其他专有的工业网络更易于集成。
多层次和多协议: Ethernet/IP 属于 CIP(Common Industrial Protocol)协议族的一部分。CIP 是一种多层次、多协议的体系结构,它支持以太网、控制网(ControlNet)、设备网(DeviceNet)等多种网络。Ethernet/IP是CIP的一个扩展,其中一种扩展方式为引入EDS文件,详见CIP相关文档的扩展方式。
开放标准: Ethernet/IP 是一个开放的标准,其规范是由 ODVA(Open DeviceNet Vendors Association)维护的。这种开放性意味着各种厂商的设备可以使用 Ethernet/IP 进行通信,促进了设备的互操作性。
应用领域: Ethernet/IP 广泛应用于工业自动化中,包括了生产线控制、传感器和执行器之间的通信、工业机器人控制等。
2、CIP相关文档
https://download.csdn.net/download/weixin_54178481/87825320?utm_medium=distribute.pc_relevant_download.none-task-download-2~default~OPENSEARCH~Rate-1-87825320-download-88243395.257%5Ev14%5Epc_dl_relevant_base&depth_1-utm_source=distribute.pc_relevant_download.none-task-download-2~default~OPENSEARCH~Rate-1-87825320-download-88243395.257%5Ev14%5Epc_dl_relevant_base&spm=1003.2020.3001.6616.1
3、EDS文件解释
https://zhidao.baidu.com/question/756737794820675884.html
4、假如Ethernet/IP的服务端会提供一个EDS文件,pycomm3该怎么用?
假设我有一个Ethernet/IP的服务端,那么PLC如何与其建立通信呢?
PLC编程软件将该服务端的EDS文件写入到PLC中,而因为EDS文件定义了该设备的寄存器等信息,所以PLC可以通过Ethernet/IP协议与服务端进行通信。
而pycomm3模块是通过CIP进行通信的,没有EDS文件的加载接口,因此需要直接通过CIP通信,应该是可行的。
二、Ethernet/IP通信与实验
1、抓包过程
以下过程是我以非专业的术语描述,详细过程可查阅官方文档。
2、实验与理论
本文将以实验的方式来探究CIP协议的理论文档,这样就可以了解理论知识的同时,学会如何调试协议。
比如现在,我们已经有了正常的通信包(PLC与服务端),那么我们将使用pycomm3来替换PLC,对比二者的通信包,进行调试。
三、pycomm3
1、一定是pycomm3么?
不一定,如果使用pycomm3实现不了通信,我们将采用其他模块,比如cpppo,甚至自己组装协议包来实现通信,这都是有可能的。
2、pycomm3官方文档
Getting Started - pycomm3 1.2.14 documentation
3、关于实现CIP的三个类
在 pycomm3
中,CIPDriver
、LogixDriver
、SLCDriver
是三个关键的驱动类,用于实现与设备进行通信的功能。以下是它们的简要解释:
(1)CIPDriver:
解释: CIPDriver
是一个基础的 CIP(Common Industrial Protocol)驱动器类。它实现了一些常见的 CIP 服务,如会话注册、前向打开/关闭、通用消息传递等。这个类提供了一些基本的功能,可以在更高层次的协议中使用,如 Logix。
用途: 一般用于构建更高级别的驱动器,如 LogixDriver
。
(2)LogixDriver:
解释: LogixDriver
是 CIPDriver
的一个衍生类,专门用于与 Logix 系列的工业控制器进行通信。它实现了与 Logix 控制器通信的协议和服务,提供了对 Logix 控制器的更高级别的访问。
用途: 用于与 Allen-Bradley Logix 系列控制器进行通信,支持对控制器进行读写、订阅通知等操作。
(3)SLCDriver:
解释: SLCDriver
是 CIPDriver
的另一个衍生类,专门用于与 Allen-Bradley SLC 系列的工业控制器进行通信。它实现了适用于 SLC 控制器的通信协议和服务。
用途: 主要用于与 Allen-Bradley SLC 系列控制器进行通信,支持读写 SLC 控制器的数据。
这些驱动器类提供了一种在 Python 中与工业自动化设备进行通信的方式,允许开发人员构建与特定工业控制设备交互的应用程序。