• IIANews微官网
    扫描二维码 进入微官网
    IIANews微信
    扫描二维码 关注微信
    移动客户端
  • English
2026全景工博会 菲尼克斯电气二级-工业链接
I/O 设备

Linux下EtherNet IP协议的实现

  2008年11月21日  

东北大学秦皇岛分校自动化系 顾德英 何风行

摘要:分析了EtherNet/IP协议、CIP协议对象模型,根据实际数据分析了报文封装,给出了Linux下Socket编程方法和EtherNet/IP协议的实现方法。

关键词: EtherNet/IP CIP TCP/IP 套接口编程

1引 言

  Linux作为一款稳定的、源代码开放的、免费的类Unix操作系统,已广泛应用到工业控制领域。与Win-dows操作系统相比,Linux操作系统具有很多明显的优势:性能更加稳定、系统更加安全;采用模块化的内核体系,具有可定制性、可配置性,可方便的裁剪;源代码完全开放,有着更成熟、更友好的编程接口;成本低廉。由于Linux内核的极大的可裁剪性、可配置性,在嵌入式系统中也取得了越来越广泛的应用,提高了系统的可靠性并降低了系统的成本。文中给出了在Linux下EtherNet/IP协议的实现方法。本程序也可方便的移植到嵌入式系统中,作为EtherNet/IP网络上的一个智能节点。

2 Linux下Socket编程

  套接口Socket是开发TCP/IP网络应用程序的API,它定义了很多函数和例程,提供了访问TCP、UDP等协议的接口。应用程序只需通过这些接口就可通过TCP/IP协议发送接收数据,而无需了解其协议细节。套接口是面向客户端/服务器(C/S)模型设计的。为了实现通过TCP或UDP协议传输数据,需要在客户端和服务器端执行不同的函数调用。

  图1为采用TCP协议通讯时的函数调用模型,数据通讯前要先建立连接。服务器端要先用Socket()函数调用创建一个TCP套接字,函数Bind()将本地地址接字地址绑定在一起,并可指定服务器的端口号和接受的客户端的IP地址范围。函数Listen()将套接字转化为倾听套接字。Accept()返回一个新的套接字与客户端通信。当客户端通过Connect()和服务器建立连接后就可以通过Read()和Write()传送数据。通讯完毕通过Close()关闭套接字。EtherNet/IP协议采用TCP传送显性报文。图2为采用UDP协议通讯时的函数调用模型,此时不需建立连接。对方地址通过在Sendto( )和Recvfrom( )函数中指定。EtherNet/IP协议采用UDP传送隐性报文。

图1 TCP协议的Socket编程模型

图2 UDP协议的Socket编程模型

3 EtherNet/IP协议体系结构

  EtherNet/IP协议的体系结构如图3所示。应用层采用CIP协议,其底层完全采用了现有以太网的传输层、网络层、数据链路层、物理层,未作任何修改。因此,应用Linux的Socket编程接口,实现EtherNet/IP协议主要就是实现应用层的CIP协议。EtherNet/IP协议不仅支持点对点的通讯模式,还支持生产者/消费者通讯模式,这种一对一个或多个的通讯模式是通过IP多播的技术实现的。值得提出的是, EtherNet/IP、ControlNet、De-viceNet网络的应用层都是CIP协议,只是它们基于的物理层、数据链路层不同,实现了一种网络的CIP协议,略加修改就可以应用到其余两种网络上。这使得CIP协议有着更好的通用性,也使得CIP设备之间有更好的交互性。

图3 EtherNet/IP协议体系结构图

4 CIP协议模型

CIP协议提供了基于连接的数据通讯机制。CIP连接可以动态的建立。CIP连接可分为I/O连接(隐性报文连接)和显性报文连接。I/O连接为一个生产者和一个或多个消费者提供了专用的通讯路径。显性报文连接提供了典型的面向请求/应答的网络通讯,一般用来上载下载程序、设备信息、组态信息等。CIP协议的I/O连接模型如图4所示。CIP协议的显性报文连接模型如图5所示。数据通讯都要通过专门的连接对象进行。

图4 CIP协议I/O连接模型

图5 CIP协议显性报文连接模型

  CIP协议用面向对象语言描述。CIP协议对象模型如图6所示。未连接报文管理器(UCMM)的主要作用是建立I/O连接和显性连接。当一设备要与网络上另一设备建立连接时,先给对方设备的UCMM发送连接请求,对方设备若答应请求则创建、初始化连接对象,并向请求设备的UCMM返回响应信息。然后原来发出请求的设备创建、初始化自己的连接对象。连接完成之后,就可以通过连接对象传送显性报I/O报文。报文路由的主要作用是对报文打包、解包,将连接对象接收过来的报文解包,分发给各个对象。然后将各对象返回的数据打包,交给连接对象发送。

  CIP设备中的对象分为3类:通用对象、应用对象和网络特定对象。通用对象有连接对象、报文路由对象、身份对象等。身份对象中存有设备型号、名称等信息。网络特定对象有TCP/IP接口对象、ControlNet接口对象和DeviceNet接口对象,分别存有和EtherNet/IP、ControlNet、DeviceNet特定网络相关的信息。应用对象是和具体应用、具体设备相关的对象,比如有AC/DC变频器,离散量、模拟量I/O等。

图6 CIP协议抽象对象模型

  以离散量I/O的设备为例,需要实现的类有:身份类、报文路由类、连接类、连接管理类、TCP/IP接口类、Ethernet连接类、离散量I/O点类、离散量输入组/输出组类、汇编类。此外还要实现未连接报文管理器UCMM,虽然UCMM不是一个类,但是它是每一个设备所必需的。

5 EtherNet/IP协议数据封装格式

  图7为EtherNet/IP协议的报文封装示意图。CIP协议报文经封装之后,在通讯时又逐层被封装上了TCP、IP、Ethernet报头。

图7 EtherNet/IP协议的报文封装

  CIP报文封装的格式如表1所示。下面以向对方的UCMM发送建立显性连接的请求报文为例说明CIP报文封装。其16进制表示的报文为:

6F003E00000002200000 00000000000000000000

00000000000000000004 020000000000B2002E00

5402200624010AF00000 000000000180ABCD0100

98765432070000004082 1F00FB4240821F00FB42

A30220022401

表1 CIP报文封装格式

  分析报文时需要注意网络字节顺序和本机字节。网络字节顺序是从高位到低位,本机字节顺序是从低位到高位。前两字节为命令字Command,注意高位低位存放顺序,0x006F为发送RRData命令。数据长度为0x3E=62字节,CIP报文总长度为62+24(报文头长度)=86字节。Session ID=0x20020000。Status=0x00000000。Sender Context=0x00000000000000000。

Options=0x00000000。接下来为RRData命令相关数据。Interface Handle=0x00000000,Time out项为0x0400。Item Count=0x0002,表明下面有两项:地址项和数据项。地址项Addr Item ID=0x0000,Addr Len=0x0000。数据项Data Item=0x00B2,Data Len=0x2E=46。接下来为CIP Data的内容。将CIP报文正确封装好,通过Socket编程接口发送到网络上的其他节点,就可以实现与网络上其他节点的通讯。具体命令、类、属性、行为、服务的ID请参照EtherNet/IP Specification。

6 结束语

  本文通过分析EtherNet/IP协议给出了EtherNet/ IP协议在Linux上的实现方法。虽然目前工业以太网所占工业现场控制的份额较小,但是由于以太网已经取得的任何其他现场总线都不可比拟的商业应用,以及以太网技术的日益成熟、稳定、高速,工业以太网在未来的现场总线领域也一定会有所作为甚至“一网到底”。

参考文献

[1] 张斌,高波等.Linux下网络编程.北京:清华大学出版社,2000

[2] ODVA/CI. EtherNet/IP specifications [M], Release1.0. 2001.

[3] 吴爱国,李长滨.工业以太网协议EtherNet/I P.计算机应用.2003,23(11):9~11.


最新视频
魏德米勒麒麟系列隆重上市,麒麟MV同步出街   
构建数据底座,助力制造业AI应用进入新阶段   
魏德米勒麒麟驾到——飞!超!好!
工业 AI 赋能电子/半导体产业 智能制造升级
Creo13:体验AI驱动的下一代CAD平台
PTC Codebeamer
专题报道
《我们的回答》ABB电气客户故事
《我们的回答》ABB电气客户故事 ABB以电气问题解决专家之志,回答未来之问。讲述与中国用户携手开拓创新、引领行业发展、推动绿色转型的合作故事,共同谱写安全、智慧和可持续的电气化未来。
企业通讯
PTC Creo 13:体验 AI 驱动的下一代 CAD 平台
PTC Creo 13:体验 AI 驱动的下一代 CAD 平台

PTC Creo 13 以人工智能驱动产品研发创新,帮助企业构建更加智能、高效、协同的数字化研发平台。作为业界领先的3D

集成微电源 · 信号链IC如何赋能工业智能化
集成微电源 · 信号链IC如何赋能工业智能化

金升阳专场在线研讨会将拆解微型多系统高集成封装的技术逻辑、无忧化 EMC 设计要点,以及面向工业控制、仪器仪表、电力等场

在线会议

社区

null /ca/_01-ABC00000000000106822.shtml /ca/_01-ABC00000000000106822.shtml