python实现Ethernet/IP协议的客户端(一)

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 中,CIPDriverLogixDriverSLCDriver 是三个关键的驱动类,用于实现与设备进行通信的功能。以下是它们的简要解释:

(1)CIPDriver:

解释: CIPDriver 是一个基础的 CIP(Common Industrial Protocol)驱动器类。它实现了一些常见的 CIP 服务,如会话注册、前向打开/关闭、通用消息传递等。这个类提供了一些基本的功能,可以在更高层次的协议中使用,如 Logix。

用途: 一般用于构建更高级别的驱动器,如 LogixDriver

(2)LogixDriver:

解释: LogixDriverCIPDriver 的一个衍生类,专门用于与 Logix 系列的工业控制器进行通信。它实现了与 Logix 控制器通信的协议和服务,提供了对 Logix 控制器的更高级别的访问。

用途: 用于与 Allen-Bradley Logix 系列控制器进行通信,支持对控制器进行读写、订阅通知等操作。

(3)SLCDriver:

解释: SLCDriverCIPDriver 的另一个衍生类,专门用于与 Allen-Bradley SLC 系列的工业控制器进行通信。它实现了适用于 SLC 控制器的通信协议和服务。

用途: 主要用于与 Allen-Bradley SLC 系列控制器进行通信,支持读写 SLC 控制器的数据。

这些驱动器类提供了一种在 Python 中与工业自动化设备进行通信的方式,允许开发人员构建与特定工业控制设备交互的应用程序。

Python-CIP是用于解析CIP(Common Industrial Protocol)协议的Python库。CIP是用于工业自动化领域的一种通信协议,可用于在工业设备之间进行数据传输和控制。 Python-CIP库提供了一组工具和函数,用于解析和处理CIP协议中的数据和报文。它可以帮助开发人员在Python环境中轻松地解析和处理CIP协议。 使用Python-CIP库,我们可以通过以下步骤解析CIP协议: 1. 导入python_cip包:首先,我们需要在Python脚本中导入python_cip包,以便可以使用其中的函数和类。 2. 连接到设备:通过使用CIP协议的连接指令,我们可以建立与CIP设备的连接。可以指定设备的IP地址和端口号。 3. 发送和接收数据:使用CIP协议的数据传输指令,我们可以发送数据到设备或从设备接收数据。可以指定要发送或接收的数据的格式、大小和内容。 4. 解析和处理数据:使用Python-CIP库提供的函数,我们可以解析和处理从设备收到的数据。可以根据需要使用不同的数据类型进行解析,例如整数、浮点数、字符串等。 5. 关闭连接:在完成数据传输和处理后,我们可以使用CIP协议的断开连接指令来关闭与设备的连接。 通过使用Python-CIP库,开发人员可以方便地解析和处理CIP协议实现工业自动化系统中的数据传输和控制功能。这使得在Python环境中开发和调试CIP协议相关的应用程序变得更加简单和高效。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lion King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值