EtherNet/IP CIP协议
EtherNet/IP CIP协议
1.EtherNet/IP简述
EtherNet/IP(Ethernet/Indstrial Protocol,以太网/工业协议)是一种基于以太网和TCP/IP技术的工业以太网,其物理层和数据链路层使用以太网协议,网络层和传输层使用TCP/IP协议族中的协议,应用层使用CIP协议。EtherNet/IP允许工业设备在对时间要求比较苛刻的环境中交换应用程序信息。这些设备包括简单的I/O设备,如传感器/执行器,以及复杂的控制设备,如机器人、可编程逻辑控制器、焊工和过程控制器等。CIP(Common Industry Protocol)是一种端对端的面向对象协议,它规范了工业设备(传感器、执行器)和高级设备(控制器)之间的连接。CIP作为开放性应用层协议,独立于物理媒体和数据链路层的,目前被EtherNet/IP、CompoNet、ControlNet和DeviceNet四种网络共用。对于用户而言,所有CIP工业网络是无缝集成的“一种”网络。EtherNet/IP利用标准以太网和TCP/IP技术传输CIP通信数据包。应该注意的是EtherNet/IP不是以太网(IEEE 802.3)协议,它只是通过常规TCP/IP连接传输。

EtherNet/IP协议网络遵循开放的OSI模型,协议结构图如下:

由于以太网数据传输速度的大幅度提升和工业网络交换机技术的快速发展,在网络高负载通信时EtherNet/IP协议也能够满足工业网络对实时性和确定性的要求。EtherNet/IP协议使用高效的数据传输模式——生产者/消费者模式(Producer/Consummer)。端点之间的联系不是通过具体的源和目的地址关联起来,而是一个生产者可以对应多个消费者,使数据的传输达到了最优化。网络源节点按照内容将数据进行标识,采用组播的方式同时发送到多个节点,网络上其它节点按照自己的需要通过标识符来确定要接受的数据。这样避免了带宽浪费,节省了网络资源,同时提高了系统的通信效率。能够很好的支持系统的控制,组态和数据采集,并且非实时性通信和实时性通信可以在同一子网中实现。
EtherNet/IP数据手册中给出的详细网络模型视图如下:


EtherNet/IP是为了在以太网中使用CIP协议而进行的封装。EtherNet/IP的CIP帧封装了命令、数据点和消息等信息。CIP帧包括CIP设备配置文件层、应用层、表示层和会话层四层。数据包的其余部分是EtherNet/IP帧,CIP帧通过它们在以太网上传输。
2. CIP协议报文
CIP协议最重要的特点是可以传输多种类型的数据,由于不同数据类型对传输的性能要求不一样,CIP协议报文可分为两类:显式报文和隐式报文。当CIP协议嵌入UDP协议用于发送隐式报文(Implicit(I/O)Message)。而CIP协议嵌入TCP协议用于发送显式报文(Explicit Message)。两种报文使用的封装协议不同,传输的消息类型也不同。CIP将应用对象之间的通讯关系抽象为连接,并与之相应制定了对象逻辑规范,使CIP协议可以不依赖与某一具体的网路硬件技术,用逻辑来定义连接的关系,在通信之前先建立连接获取唯一的标识符(Connection ID,CID),如果连接设计到双向的数据传输,就要分配两个CID。
显式报文针对组态信息、设备配置、故障诊断等非实时性信息,其优先级较低(包含解读该报文所需要的信息),通过点对点的报文在两个对象之间,以交互的方式进行传输。报文本身携带有关地址、数据类型和功能描述等相关内容,接受设备根据内容做出相应的处理,采用源/目的地址传送方式。在通信之前通过TCP协议获得标识符CID,之后进行数据报文传输。使用通信端口0XAF12f 。CIP显示报文连接如下图:

隐式报文用于节点之间传输实时I/O数据、实时互锁,优先级较高(隐式报文中不包含传送地址、数据类型标识和功能描述内容),全部作为有效数据,传输效率高,在报文头部有数据标识符,消费者根据标识符选择自己需要的内容,通过UDP协议将实时I/O消息传送到总线上。CIP隐式报文连接如下图:

CIP数据帧格式如下:

3. EtherNet/IP协议实现
基于开源软件OpENer实现了EtherNet/IP协议。OpENer是一个为I/O设备开发的EtherNet/IP协议栈,支持多路I/O和显示连接,包含objects和services,以兼容ODVA规范中的EtherNet/IP设备。
OpENer地址:https://github.com/EIPStackGroup/OpENer.git。
访问AB PLC的CIP实现可参考:libplctag。
参考:
2. 通用工业协议(CIP) 百度文库
4. 通用工业协议(CIP)形式化的安全分析(前期概念的梳理)
6. Ethernet/IP Industrial Protocol (C# code)
7. libplctag github
8. node-ethernet-ip 访问AB PLC文档
9. cpppo github
10. OpENer github
11. Volume 1: CIP Common Specification
12. Volume 2: EtherNet/IP Adaptation of CIP
13. EtherNet/IP: Industrial Protocol White Paper
14. The Common Industrial Protocol and the Family of CIP Networks
EtherNet/IP CIP协议的更多相关文章
- 工业以太网EtherNet/IP协议安全分析整理
1. EtherNet/IP : 设备可以用户数据报协议(UDP)的隐式报文传送基于IO的资料 ,用户传输控制协议(TCP)显示报文上传和下参数,设定值,程式 ,用户主站的轮询 从站周期性的更 ...
- 工控安全入门之Ethernet/IP
这一篇依然是协议层面的,协议层面会翻译三篇,下一篇是电力系统中用的比较多的DNP3.这一篇中大部分引用的资料都可以访问到,只有一篇reversemode.com上的writeup(http://rev ...
- 工控安全入门之 Ethernet/IP
工控安全入门之 Ethernet/IP Ethernet/IP 与 Modbus 相比,EtherNet/IP 是一个更现代化的标准协议.由工作组 ControlNet International 与 ...
- EtherNet/IP 协议结构
一.Ethernet/IP 协议 将标准的TCP/IP以太网延伸 到工业实时控制并和通用工业协议(CIP)结合,将很好地帮助用户获得更加开放集成的工业自动化和信息化的整体解决方案.EtherNet/I ...
- c#基于TCP/IP、CIP协议的欧姆龙PLC通信
一.关于CIP协议 CIP通信是Common Industrial Protocl(CIP)的简称,它是一个点到点的面向对象协议,能够实现工业器件(传感器,执行器)之间的连接,和高等级的控制器之间的连 ...
- 标准的TCP/IP工业以太网-EtherNet/IP
标准的TCP/IP工业以太网-EtherNet/IP 徐智穹以太网具有传输速度高.兼容性好.应用广泛等方面的优势,支持几乎所有流行的网络协议,其中 ...
- 各种工业以太网比较(EtherCAT,EtherNet/IP,ProfiNet,Modbus-TCP,Powerlink)
EtherCAT(以太网控制自动化技术)是一个以以太网为基础的开放架构的现场总线系统,EterCAT名称中的CAT为ControlAutomation Technology(控制自动化技术)首字母的缩 ...
- EtherNet/IP 基本信息
/********************************************************************************* * EtherNet/IP 基本信 ...
- 【新阁教育】基于EtherNet/IP实现欧姆龙NX系列PLC通信
1.引言 工业以太网协议 (Ethernet/IP) 是由ODVA所开发并得到了罗克韦尔自动化的强大支持.它使用已用于ControlNet和DeviceNet的控制和信息协议 (CIP) 为应用层协议 ...
随机推荐
- java第三讲课后动手动脑及代码编写
1. 类就是类型,对象就是这种类型的实例,也就是例子.类是抽象的东西,对象是某种类的实实在在的例子.例如:车是一个类,汽车,自行车就是他的对象. 对象的定义方法? (1)对象声明:类名 对象名: (2 ...
- Install docker to Redhat 7
1) sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 2) s ...
- <String> 49 87
49. Group Anagrams class Solution { public List<List<String>> groupAnagrams(String[] str ...
- Linux性能优化实战学习笔记:第三讲
一.关于上下文切换的几个为什么 1. 上下文切换是什么? 上下文切换是对任务当前运行状态的暂存和恢复 2. CPU为什么要进行上下文切换? 当多个进程竞争CPU的时候,CPU为了保证每个进程能公平被调 ...
- [LeetCode] 20. Valid Parentheses 验证括号
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)
项目需求:扫码根据不同平台下载不同版本的APP.主要是ios和Android. 网上找了很多,前面判断平台的代码很容易找到,但是后面的就有些坑了.有的人的是根本跑不通.有的是代码补全. 下面是 微信扫 ...
- java --后缀符号
public class Sample { public static void main(String[] args) { , num2 = ; num1--; System.out.println ...
- 利用ANSYS进行橡胶坝的静力分析和模态计算
这个是我一个同学的毕业论文,我也帮了一点小忙,所以征得同学同意,把相关的经验共享一下(当时候做得也很艰难,网上查到的可参考的资料太少了,而且没有具体步骤). 先占一个位子,以前的模型还有命令流文件都找 ...
- nodejs的作用【转】
来源地址:https://www.zhihu.com/question/33578075/answer/56951771 如果你去年注意过技术方面的新闻,我敢说你至少看到node.js不下一两次.那么 ...
- 框架之jQuery妙用
1.jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交 ...