工业现场总线协议-EtherNet/IP协议与实现

Posted 姚家湾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工业现场总线协议-EtherNet/IP协议与实现相关的知识,希望对你有一定的参考价值。

    工业现场总线协议既是自动化领域的财富,又是这个行业的负担,尽管现在提倡开放自动化,提出OPCUA 这样统一的接口协议,但是当这个美好时代还没有到来之际,各种工业现场协议盘据了各种自动化控制应用领域。这是开放自动化绕不过的槛。设计任何一个工业软件和设备都需要充分考虑对各种各样的工业现场协议的支持。本文讨论EtherNet/IP协议。

ODVA协议族

        EtherNet/IP 是一个协议族中的其中之一,ODVA 成立于 1995 年,是一个全球性协会,其成员包括世界领先的自动化公司。ODVA 的使命是在工业自动化中推进开放、可互操作的信息和通信技术。

        ODVA 的协议标准根据不同的物理传输介质,提出了一组现场协议,它们分别是EtherNet/IP™, DeviceNet™, CompoNet™ 和 ControlNet™ 四个协议

  1. EtherNet/IP :CIP基于以太网技术
  2. DeviceNet:CIP 基于CAN技术
  3. ControlNet:CIP 基于CTDMA技术
  4. CompoNet :CIP 基于TDMA技术

这四个协议通过一个工业自动化协议连接在一起。它就是公共工业协议(the Common Industrial Protocol, known as CIP™)。CIP 包括了一组用于工业自动化应用的消息和服务。它们包括:控制,安全,能源,同步和运动,信息和网络管理。CIP允许用户这些应用与企业级以太网和互联网集成在一起。CIP被世界上几百家企业支持。

CIP 与四个协议之间的架构如下图所示:

 CIP 协议

对于使用者而言,主要使用上层的CIP 协议相互通信。应用程序主要与CIP 协议的API 打交道。因此了解CIP是关键。

  CIP 协议吸收了面向对象程序设计的思想。使用的对象,实例,属性,服务·等面向对象程序设计的基本思想和术语。

     类是表示同一类型系统组件的一组对象。对象是一个类中的某一个特定对象的实际表示。一个类中的每一个实例都具有相同的属性。但是也能够具有它特定的一组属性值。

类和实例之间的关系如下图所示:

在CIP 中 对象,属性,服务等内部组件都具有唯一的地址。它们包括

  1. Node Address
  2. Class Identifier
  3. Instance Identifier
  4. Attribute Identifier
  5. Servce Code

通过地址来标识这些元素。如下图所示

       对象Id 可分为两类,公共定义对象(0x0000~0x0063 和0x00F0~0x02FF)和厂商专有对象(0x0064~0x00C7 和0x0300~0X04ff)

对象库

通用对象

 应用对象

 

 网络对象

标识对象(Identity object Class ID: 0x01)

参数对象(Parameter Object  Class ID: 0x0F)

汇集对象(Assembly Object Class ID: 0x04)

       汇集对象是将不同对象实例的属性组合成为汇集对象的一个属性。它通常用于IO消息,将许多的IO’数据汇集成为一个数据块,这样使网络上的数据交换更加有效。CIP 区分了input和output 汇集对象。下图表示了汇集对象与其它对象之间的映射方法。

设备描述(Device Profiles)

对于常见设备,CIP 建立了设备描述,使不同的厂商的设备使用规范的对象 。

每个设备描述中包含了一组对象。大多数设备描述定义了一个或者多个IO数据格式(汇集的),它们定义了IO数据的格式。厂商也可以添加对象和描述。更进一步地,厂商也可用自己构建设备描述。

配置和电子数据表 

CIP 的网络适配

EtherNet/IP 的特性

  1. 与以太网兼容
  2. 完全独立的数据速率:10.100,1000Mbit/s
  3. 系统能够使用标准网络架构
  4. 几乎没有节点数量限制
  5. 实时与非实时通信共存
  6. 支持(device Level Ring DLR) 实现故障冗余

EtherNET 的网络架构 

     EtherNet/IP 是构建在标准TCP/IP,UDP 协议之上的。是一种Client/Sever 架构。Client 向Server 发出请求,Server 做出响应。它们又被称为Producer/Consumer 结构。

Client端除了发起TCP 连接之外,还具有Scanner 扫描设备的功能。

EtherNet/IP的实现

   学习一个通信协议的最好方法是实现它,EtherNet/IP 相比MQTT,ModbusTCP 而言,要更加复杂一点。如果通过学习协议文本来实现相关的软件是比较难的。最好的方法是使用开源项目

EtherNet 设备端开源包:OpENer

地址:https://github.com/EIPStackGroup/OpENer

这是一个在设备端实现的EtherNet/IP 开源项目。

为了测试这个程序,最好使用一个Client 工具软件,比如EIPScan ,但是这些商业软件是收费的。在网络上搜索到一个molex 的免费工具。

EtherNet 的client 工具 Molex EtherNet/IP tools

地址:https://www.molex.com/mx_upload/superfamily/iccc/EtherNet_IPTool.html

EtherNet/IP开源Scanner 项目EIPScanner

https://github.com/nimbuscontrols/EIPScanner

EtherNet/IP 构建Object 的项目

https://github.com/EIPStackGroup/OpENerElectricalEnergyObject

https://github.com/EIPStackGroup/OpENerBaseEnergyObject

        这些项目都是在linux 操作系统上实现的项目。本人都尝试编译运行。感兴趣的读者可用与我联系,相互交流。

以上是关于工业现场总线协议-EtherNet/IP协议与实现的主要内容,如果未能解决你的问题,请参考以下文章

谁知道abplc用的是啥通讯协议,比如cclink modbus之类的

工业以太网协议安全分析整理

[工业互联-2]:工业有线互联总线之CAN总线

[工业互联-3]:工业有线互联总线之工业以太网总线

Ethernet/IP学习

Ethernet/IP学习