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

参考:

1. Ethernet/IP协议简介

2. 通用工业协议(CIP)  百度文库

3. 工控安全入门之Ethernet/IP

4. 通用工业协议(CIP)形式化的安全分析(前期概念的梳理)

5. 工业以太网EtherNet/IP协议安全分析

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

15.         How to communicate to an Allen Bradley Plc with C# and LibPlcTag Ethernet/IP library – Mesta Automation

16.         cip及cip - 图文 - 百度文库

17.         AB 多个PLC的TAG互通设定 - 百度文库

18.         AB - PLC通讯 - 图文 - 百度文库

EtherNet/IP CIP协议的更多相关文章

  1. 工业以太网EtherNet/IP协议安全分析整理

    1.     EtherNet/IP : 设备可以用户数据报协议(UDP)的隐式报文传送基于IO的资料 ,用户传输控制协议(TCP)显示报文上传和下参数,设定值,程式 ,用户主站的轮询 从站周期性的更 ...

  2. 工控安全入门之Ethernet/IP

    这一篇依然是协议层面的,协议层面会翻译三篇,下一篇是电力系统中用的比较多的DNP3.这一篇中大部分引用的资料都可以访问到,只有一篇reversemode.com上的writeup(http://rev ...

  3. 工控安全入门之 Ethernet/IP

    工控安全入门之 Ethernet/IP Ethernet/IP 与 Modbus 相比,EtherNet/IP 是一个更现代化的标准协议.由工作组 ControlNet International 与 ...

  4. EtherNet/IP 协议结构

    一.Ethernet/IP 协议 将标准的TCP/IP以太网延伸 到工业实时控制并和通用工业协议(CIP)结合,将很好地帮助用户获得更加开放集成的工业自动化和信息化的整体解决方案.EtherNet/I ...

  5. c#基于TCP/IP、CIP协议的欧姆龙PLC通信

    一.关于CIP协议 CIP通信是Common Industrial Protocl(CIP)的简称,它是一个点到点的面向对象协议,能够实现工业器件(传感器,执行器)之间的连接,和高等级的控制器之间的连 ...

  6. 标准的TCP/IP工业以太网-EtherNet/IP

    标准的TCP/IP工业以太网-EtherNet/IP                            徐智穹以太网具有传输速度高.兼容性好.应用广泛等方面的优势,支持几乎所有流行的网络协议,其中 ...

  7. 各种工业以太网比较(EtherCAT,EtherNet/IP,ProfiNet,Modbus-TCP,Powerlink)

    EtherCAT(以太网控制自动化技术)是一个以以太网为基础的开放架构的现场总线系统,EterCAT名称中的CAT为ControlAutomation Technology(控制自动化技术)首字母的缩 ...

  8. EtherNet/IP 基本信息

    /********************************************************************************* * EtherNet/IP 基本信 ...

  9. 【新阁教育】基于EtherNet/IP实现欧姆龙NX系列PLC通信

    1.引言 工业以太网协议 (Ethernet/IP) 是由ODVA所开发并得到了罗克韦尔自动化的强大支持.它使用已用于ControlNet和DeviceNet的控制和信息协议 (CIP) 为应用层协议 ...

随机推荐

  1. Nexus 私服上传文件,并通过 Gradle 引用

    一.上传文件到 Nexus 1,进入 Nexus 仓库界面 如果你电脑还没有使用 Nexus,需要先下载并启动 Nexus 私服. 在浏览器输入:http://127.0.0.1:8081/nexus ...

  2. 基于github发布 个人网站/博客

    我们可以使用GitHub去发布自己的网站了(静态网站), 只要经过简单几步即可.这样小伙伴可以给朋友或面试官展示自己个人项目啦. 第一步:创建一个新仓库 第二步:在仓库选择“Settings”页,找到 ...

  3. 洛谷P2996 [USACO10NOV]拜访奶牛Visiting Cows

    题目 树形dp 设f[i][j]表示走到第i号节点的最大权值 j为0/1表示这个点选或者不选 如果这个点不选 就从他的子树里的选或者不选选最大 如果这个点选 就加上他子树的不选 f[x][0] += ...

  4. zr2019暑期高端峰会AB组十测

    郑睿round 1 代码真的好写,还是太笨了,爆零了. 郑睿round_2 好失败,A题真的是日狗了,第一发就可以A的,忘记费用流的反向边也要加一发流量了.哎,我注定是要爆零. 正睿round_3 日 ...

  5. Linux性能优化实战学习笔记:第六讲

    一.环境准备 1.安装软件包 终端1 机器配置:2 CPU,8GB 内存 预先安装 docker.sysstat.perf等工具 [root@luoahong ~]# docker -v Docker ...

  6. [LeetCode] 312. Burst Balloons 打气球游戏

    Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by ...

  7. 用 cgroups 管理 cpu 资源

    转自:http://xiezhenye.com/2013/10/用-cgroups-管理-cpu-资源.html 这回说说怎样通过 cgroups 来管理 cpu 资源.先说控制进程的 cpu 使用. ...

  8. Codeforces 652F 解题报告

    题意 有n只蚂蚁在长度为m个格子的环上,环上的格子以逆时针编号,每只蚂蚁每秒往它面向的方向移动一格.如果有两只蚂蚁相撞则相互调换方向,问t秒后每只蚂蚁的位置. 题解 首先通过观察可以发现 蚂蚁相撞产生 ...

  9. java8 关于Set集合的线程安全使用

    场景:并发多线程,往Set集合中存放数据时,发现最终的数量结果不对,经过排查,没有使用线程安全的Set导致 哈哈,不会描述,代码解释一切,下面代码,使用的 Sets.newHashSet() 和 Co ...

  10. Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序

    系列目录     [已更新最新开发文章,点击查看详细] 要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用 ...