# 工业互联网通信协议
# Modbus
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
# 协议版本
Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。
大多数Modbus设备通信通过串口EIA-485物理层进行。
对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通信(serial communication)方式。RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。
对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和计算。
对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。
Modbus有一个扩展版本Modbus Plus(Modbus+或者MB+),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PMCIA总线的板卡。
# 通信和设备
Modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。
一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会运行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个RTU改变它的寄存器的某个值,控制或者读取一个I/O端口,以及指挥设备回送一个或者多个其寄存器中的数据。
有许多modems和网关支持Modbus协议,因为Modbus协议很简单而且容易复制。它们当中一些为这个协议特别设计的。有使用有线、无线通信甚至短消息和GPRS的不同实现。不过设计者需要克服一些包括高延迟和时序的问题。
# 实现
几乎所有的实现都是官方标准的某种变体。不同的供应商设备之间可能无法正确的通信。一些主要的变化有: 数据类型
- IEEE标准的浮点数
- 32位整型数
- 8位数据
- 混合数据类型
- 整数中的位域
- multipliers to change data to/from integer. 10, 100, 1000, 256 ... 协议扩展
- 16位的从站地址
- 32位的数据大小(1个地址 = 返回32位数据)
- 字交换数据
# EtherCAT
EtherCAT(以太网控制自动化技术)是一个开放架构,以以太网为基础的现场总线系统,其名称的CAT为控制自动化技术(Control Automation Technology)字首的缩写。EtherCAT是确定性的工业以太网,最早是由德国的Beckhoff公司研发。 自动化对通讯一般会要求较短的资料更新时间(或称为周期时间)、资料同步时的通讯抖动量低,而且硬件的成本要低,EtherCAT开发的目的就是让以太网可以运用在自动化应用中。
# 机能原理
一般工业通讯的网络各节点传送的资料长度不长,多半都比以太网帧的最小长度要小。而每个节点每次更新资料都要送出一个帧,造成带宽的低利用率,网络的整体性能也随之下降。EtherCAT利用一种称为“飞速传输”(processing on the fly)的技术改善以上的问题。 ^[1]^
在EtherCAT网络中,当资料帧通过EtherCAT节点时,节点会复制资料,再传送到下一个节点,同时识别对应此节点的资料,则会进行对应的处理,若节点需要送出资料,也会在传送到下一个节点的资料中插入要送出的资料。每个节点接收及传送资料的时间少于1微秒,一般而言只用一个帧的资料就可以供所有的网络上的节点传送及接收资料。
# 通讯协定
EtherCAT通讯协定是针对程序资料而进行优化,利用标准的IEEE 802.3以太网帧传递,Ethertype为0x88a4。其资料顺序和网站上设备的实体顺序无关,定址顺序也没有限制。主站可以和从站进行广播及多播等通讯。若需要IP路由,EtherCAT通讯协定可以放入UDP/IP资料包中。
# 性能
EtherCAT的周期时间短,是因从站的微处理器不需处理以太网的封包。所有程序资料都是由从站控制器的硬件来处理。此特性再配合EtherCAT的机能原理,使得EtherCAT可以成为高性能的分散式I/O系统:包含一千个分散式数位输入/输出的程序资料交换只需30us,相当于在100Mbit/s的以太网传输125个字节的资料。读写一百个伺服轴的系统可以以10kHz的速率更新,一般的更新速率约为1–30kHz,但也可以使用较低的更新速率,以避免太频繁的直接内存存取影响主站个人电脑的运作。 ^[2]^
# 拓扑
EtherCAT使用全双工的以太网实体层,从站可能有二个或二个以上的埠。若设备没侦测到其下游有其他设备,从站的控制器会自动关闭对应的埠并回传以太网帧。由于上述的特性,EtherCAT几乎支援所有的网络拓扑,包括总线式、树状或是星状,现场总线常用的总线式拓扑也可以用在以太网中。 EtherCAT的拓扑可以用网络线、分枝或是短线(stub)作任意的组合。有三个或三个以上以太网接口的设备就可以当作分接器,不一定一定要用网络交换器。 由于使用100BASE-TX的以太网物理层,二个设备之间的距离可以到100米,一个EtherCAT区段的网络最多可以有65535个设备。若EtherCAT网络是使用环状拓扑(主站设备需要有二个通讯埠),则此网络还有缆线冗余的机能。
# 同步
为了系统的同步,EtherCAT协定中有提供分散式时钟机制,即使通讯循环周期有抖动,时钟的抖动远小于1µs,大约接近IEEE 1588精密时间协议的标准。因此EtherCAT的主站设备不需针对时钟使用特殊的硬件,可以用软件实现在任何标准的的以太网MAC,即使没有特殊的通讯协处理器也没有关系。 标准建立分散式时钟的程序是由主站送出一特定位址的广播讯息给所有从站来启动。若使用环状拓扑,所有从站会在收到讯息时闩锁内部时钟,当讯息回来时会再闩锁内部时钟一次。主站会读所有从站闩锁的值,计算各个从站的延迟。为了消除抖动的影响及求得平均值,主站会尽可能的多次进行上述的程序。所有的从站延迟会依各从站在从站环状拓扑的位置来计算,并记录在一个偏移寄存器中。最后主站送出一个读写系统时钟的广播讯息,会使第一个从站的时钟为参考时钟,其他从站的内部时钟会调整到和第一个从站相同。 为了在初始化后保持时钟的同步,主站或从站需定期的再送出广播讯号,以计算各个从站内部时钟的速度差异,若有需要时,从站需要可以调整自身时钟的速度,或是有其他调整时钟的机制。 系统时钟是一个64位元的计时器,计数内容是从2000年1月1日0点0分开始所经过的时间,单位是纳秒(ns)。
# 设备行规
设备行规(device profile)描述应用需要的参数及设备的机能特性,包括可能依设备种类而不同的状态机。总线技术中已有许多可靠的设备行规,例如I/O设备、驱动器或阀等设备。EtherCAT同时支援CANopen设备行规及Sercos驱动器行规。从CANopen或Sercos移植到EtherCAT时,在应用观点看到的内容是一様的,也可方便使用者或设备制造商的转换。
# 机能安全
EtherCAT有一个加强的协定版本,称为Safety over EtherCAT,可以在同一个网络上进行机能安全相关的通讯和一般的控制通讯。此安全通讯是以EtherCAT的应用层为基础,不会影响底层的通讯协定。Safety over EtherCAT有通过IEC 61508的认证,符合安全完整性等级(SIL)3的要求。自2005年起已有使用Safety over EtherCAT的产品上市。
# 实现
EtherCAT主站可以用软件,在标准的以太网媒体接入控制器中实现。许多供应商有提供在不同操作系统下的程式码,也有许多开源软件或共享软件。EtherCAT从站需要特殊的EtherCAT从站控制器,才能实现飞速传输(processing on the fly)的技术。EtherCAT从站控制器可以用FPGA来实现,且已有现成的代码,此控制器也可以用ASIC来实现。
# CANopen
CANopen是一种架构在控制局域网络(Controller Area Network, CAN)上的高层通信协协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 CANopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言数据链结层及物理层会用CAN来实作。除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实作 CANopen 的设备子协定。
CANopen由非营利组织CiA(CAN in Automation)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301中。针对个别设备的子协定以 CiA 301 为基础再进行扩充。如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。
# 设备模型
以下是所有 CANopen 设备都要具备的功能: 通讯单元 处理和网络上其他模组通讯所需要的通讯协定。 设备的启动及重置由状态机(state machine)控制。状态机需包括以下的几个状态:Initialization, Pre-operational, Operational 及 Stopped。当接收到网络管理 (NMT) 通讯对象,状态机会转换到对应的状态。 对象字典 (Object Dictionary) 是一个有 16 位元索引 (Index) 的变量阵列。每个变量可以(但非必须)有 8 位元的子索引 (Subindex)。变量可用来调整设备的组态,也可以对应设备量测的资料或设备的输出。 当状态机设定为 operational 之后,设备的应用 (application) 部份就会实现设备预期的机能。此部份可以由对象字典中的变量调整其设定,而资料由通讯层传送或接收。
# 优势概述
1.物理层非常稳定;2. 数据链路层可靠,因为相比其他所有总线,只有CAN可以做到达到汉明间距(Hamming Distanz)为6,能够检测报文里多达5个随机引入的位错误及15位突发性错误。3. 灵活,兼容性高;4. 可互操作性高;5. 价格低 (对于设备生产商来说);6. CAN产品尺寸小,节省空间;7.支持冗余备用
对象字典编辑 CANopen 设备都需要具备对象字典,用来设定设备组态及进行非即时的通讯。对象字典的entry 定义如下: 索引 (Index):对象 16 位元的位址。 对象名称 (Object name):一个代表对象的 symbolic type,可以是阵列、纪录或只是一个变量。 名称 (Name):描述此 entry 的字串。 形态 (Type):变量的资料形态。 属性 (Attribute):提供此 entry 是否可读/可写的资料,有下列四种:可读/写、只读、唯写、只读常数。 必须 (Mandatory)/可选 (Optional)字段定义属于特定设备规范下的设备,是否必须实现某些对象。 在 CANopen 标准中定义了对象字典中的基本资料型态,包括逻辑值、整数及浮点数。也定义了复合对象:如阵列、记录及字串。复合对象用一个 8 位元的数值作为其子索引(subindex)。记录或阵列中子索引 0 的位置记录此数据结构的元素个数,资料型态为 UNSIGNED8。 例如在 CiA301 标准中,设备通讯的参数放在索引范围 0x1000 - 0x1FFF (通讯行规区)。此区域的前几项如下:
索引 | 对象名称 | 名称 | 形态 | 属性 | M/O |
---|
0x1000|VAR|device type|UNSIGNED32|只读|M 0x1001|VAR|error register|UNSIGNED8|只读|M 0x1008|VAR|manufacturer device name|Vis-String|常数|O
若配合适当的工具,可以用编辑电子资料表(electronic data sheet, EDS)档案的方式规划一个设备,并且将变量的数值上传到设备中。EDS 档案的格式通常会是INI档
# 通讯
通讯对象 CANopen 的物理层 CANbus 每次传送的数据量不大,其中包括 11 位元的 ID、远端传输请求(RTR)位元及大小不超过8字节的资料。CANopen 将 CANbus 11 位元的 ID 分为 4 位元的功能码及 7 位元的 CANopen 节点 ID。7 位元的 ID 共有 128 种不同的组合,其中 ID 0 不使用,因此一个 CANopen 网络上最多允许 127 台设备。CANbus 在 CAN 2.0 B 规格中允许 29 位元的 ID,因此若配合 CAN 2.0 B 使用,CANopen 网络上可以超过127 台设备,不过在实际运用中,大多数的 CANopen 网络上设备数量均低于此数值。 CANopen 将 CANbus 的 11 位元 ID 称为通讯对象 ID (COB-ID)。当传输数据发生冲突时,CANbus 的仲裁机制会使 COB-ID 最小的讯息继续传送,不用等待或重传。COB-ID 的前 4 个位元是 CANopen 的功能码,因此数值小的功能码表示对应的功能重要,允许的延迟时间较短。 以下是一个标准的 CANopen 页框:
功能码 | 节点 ID | RTR | 资料长度 | 资料 | 长度 |
---|---|---|---|---|---|
4 位元 | 7 位元 | 1 位元 | 4 位元 | 0-8 字节 |
在 CANopen 标准中,部份 COB-ID 被保留作网络管理及 SDO 通讯用。而在设备初始化后,有些功能码和 COB-ID 会对映到标准的功能,不过后续仍可以规划为其他用途。
通讯模型 CANopen 设备间的通讯可分为以下三种通讯模型。
- 在 master/slave 模型中,一个 CANopen 设备为 master,负责传送或接收其他设备(称为 slave)的数据。NMT 协定就使用了 master/slave 模型。
- 客户机/服务器(client/server)模型定义在 SDO 协定中,SDO client 将对象字典的索引及子索引传送给 SDO server,因此会产生一个或数个需求数据(对象字典中,索引及子索引对应的内容)的 SDO 封包。
- 生产者/消费者(producer/consumer)模型用在 Heartbeat and Node Guarding 协定。由一个生产者送出数据给消息者,同一个生产者的数据可能给一个以上的消息者。又可分为二种: push-model:生产者会自动送出数据给消费者。 pull-model:消费者需送出请求讯息,生产者才会送出数据。
# 协定
NMT 协议NMT(网络管理, Network management)协议会定义(设备内部)状态机的状态变更命令(如启动设备或停止设备)、侦测远端设备 bootup及故障情形。
NMT master 使用的模组控制协定可变更设备的状态。其 COB-ID 为 0,其功能码及节点 ID 均为 0,因此网络上的所有节点均会处理这个信息。在此信息的数据部份会有此信息实际针对节点的ID,此 ID 也可为 0,表示所有节点都要变更为指定的状态。
心跳协议(Heartbeat protocol)是用来监控网络中的节点及确认其正常工作。心跳信息的生产者(一般是 slave 设备)周期性的送出功能码 1110、ID 为本身节点 ID 的讯息,信息的数据部份有一个表示节点状态的位。而心跳信息的消费者负责接收上述数据,若在指定时间(于设备的对象字典中定义)内,消费者均未收到信息,可采取相应动作(例如显示错误或重置该设备)。 其格式为:
COBID + DATA(status of node) CANopen 设备需要在 bootup 时自动从 Initializing 状态切换至 Pre-operational 状态,设备会在切换完成后送出一个心跳信息,这就是心跳协议。 有一种 pull model 的 NMT 协议,称作节点监控(Node guarding)协议,也可以作从机的监控。
- SDO 协议 服务数据对象(SDO)可用来存取远端节点的对象字典,读取或设定其中的数据。提供对象字典的节点称为SDO server,存取对象字典的节点称为SDO client。SDO 通讯一定由SDO client 开始,并提供初始化相关的参数。
在CANopen的术语中,上传是指由 SDO server 中读取数据,而下载是指设定 SDO server 的数据。
由于对象字典中的数据长度可能超过8个字节,无法只用一个CAN数据包传输,SDO也支援长数据包的分割(segmentation)和合并(desegmentation)。这样的对象有二种:SDO下载/上传(SDO download/upload)及SDO区块下载/上传(SDO Block download/upload)。CANopen协议较新版本支援SDO区块传输,可以允许传输大量的数据,且传输的overhead可以较低。
负责处理SDO数据传输的COB ID可在对象字典中设置。在对象字典的索引0x1200至0x127F可设定SDO server的COB ID,最多可设定到127个。而SDO client可以在对象字典的索引0x1280至0x12FF中设定。不过预定义连结(pre-defined connection set)定义在开机后(Pre-operational状态)可用来设定设备组态的SDO。接收用的COB ID为0x600 +节点ID,而传送用的COB为0x580 +节点ID。
- PDO 协定 过程数据对象 (PDO) 协议可用来在许多节点之间交换即时的数据。可透过一个 PDO ,传送最多 8 字节(64位)数据给一设备,或由一设备接收最多 8 字节(64位元)的数据。一个 PDO 可以由对象字典中几个不同索引的数据组成,规划方式则是透过对象字典中对应 PDO mapping 及 PDO 参数的索引。
PDO 分为两种:传送用的 TPDO 及接收用的 RPDO。一个节点的 TPDO 是将数据由此节点传输到其他节点,而 RPDO 则是接收由其他节点传输的数据。一个节点分别有 4 个 TPDO 及 4 个 RPDO 。
PDO 可以用同步或异步的方式传送:同步的 PDO 是由 SYNC 信号触发,而异步的 PDO 是由节点内部的条件或其他外部条件触发。例如若一个节点规划为允许接受其他节点产生的 TPDO 请求,则可以由其他节点送出一个没有数据但有设置 RTR 位元的 TPDO(TPDO 请求),使该节点送出需求的数据。
借由 RPDO 也可以使两种设备同时启动。
CANopen 专有名词
- PDO 过程数据对象 - 对应实际物理量的输入及输出。数据的单位可能是 RPM, V, Hz, mAmp...。
- SDO 服务数据对象 - 一般来说是组态设定的数据,如节点位置、节点ID、通信速度、位移、增益等.
- COB-ID - CAN 对象编号
- CAN ID - CAN Identifier. 是在每个 CAN 数据前面的信息识别码,共 11 位元。
- EDS - 电子数据手册(Electronic data sheet)是 INI 格式或XML格式(从2007年底开始)的文件。
- DCF - 设备配置文件(Device configuration file),是加强版的 EDS,可以设置节点 ID 及通信速度。
# Profinet
PROFINET由PROFIBUS国际组织(PROFIBUS International,PI)推出,是新一代基于工业以太网技术的自动化总线标准。 PROFINET为自动化通信领域提供了一个完整的网络解决方案,囊括了诸如实时以太网、运动控制、分布式自动化、故障安全以及网络安全等当前自动化领域的热点话题,并且,作为跨供应商的技术,可以完全兼容工业以太网和现有的现场总线(如PROFIBUS)技术,保护现有投资。
# 技术
为了达到上述的通讯机能,定义了以下三种的通讯协定等级。 ^[1]^
- TCP/IP是针对PROFINET CBA及工厂调试用,其反应时间约为100ms。
- RT(实时)通讯协定是针对PROFINET CBA及PROFINET IO的应用,其反应时间小于10ms。
- IRT(等时实时)通讯协定是针对驱动系统的PROFINET IO通讯,其反应时间小于1ms。 利用以太网的分析工具可以纪录及显示的PROFINET通讯协定的封包,也有一些软件可以解读PROFINET的资料帧。
# PROFINET元件模型
一个PROFINET CBA系统会包括许多自动化的元件,元件可能是机械的、电子的或是IT的变量,元件可以由标准的编程工具产生。
元件可由XML格式的PROFINET元件描述(PCD)档来说明。规划工具载入这些描述资料,并建立不同元件之间的逻辑关系。此模式相当程度地受到IEC 61499标准的影响。
PROFINET CBA的基本概念是很多时候自动化系统都可以分为几个小的子系统,彼此有清楚的区分。PROFINET元件一般只由少数几个输入信号控制,借由这些元件,用户写的程式启动了元件中的特定机能,将输出信号传递给另一个元件。其中用到的技术是制作商中立的。以元件为基础的通讯只需要进行规划,不需要进行编程。PROFINET CBA的通讯(非实时通讯)适用于总线周期时间在50...100微秒的系统。
# PROFINET及外部设备
PROFINET网络和外部设备的通讯是借由PROFINET IO来实现,PROFINET IO定义和现场连接的外部设备的通讯机能,其基础是级联性的实时概念,PROFINET IO定义控制器(有“主站机能”的设备)和其他设备(有“从站机能”的设备)之间完整的资料交换、参数设定及诊断机能。PROFINET IO是设计用来在以以太网连接的设备提供快速的资料传输,且支援生产者-消费者模型(provider-consumer model)。支援PROFIBUS通讯协定的设备可以无缝的和PROFINET网络连接,不需要IO代理器(IO-Proxy)之类的设备。设备开发者可以利用市面上贩售的以太网控制器来开发PROFINET IO设备。PROFINET IO适用在网络循环时间在数ms的系统。 ^[2]^
PROFINET IO系统包括以下几种设备:
- IO控制器,控制自动化的任务工作。
- IO设备,一般是现场设备,受IO控制器的控制及监控,一个IO设备可能包括数个模组或是子模组。
- IO监控器是一个PC的软件,可以设定参数及诊断个别模组的状态。
PROFINET IO会在IO控制器及IO设备之间建立应用关系(Application Relation,AR),应用关系中会定义有不同的参数传递、周期资料交换及警告处理等特性的通讯关系(Communication Relations,CR)。 一个IO设备的特性会由设备制造商在GSD(General Station Description)档中说明,所使用的语言是GSDML(GSD标记语言),GSD档提供PC监控软件规划PROFINET组态所需要的基本资料。
# PROFINET IO 定址
PROFINET网络中的每个模组都有以下的三个位址:
- MAC位址。
- IP地址。
- 设备名称,是在整个网络组态中对模组定义的逻辑名称。 由于PROFINET使用TCP/IP,会用到MAC位址及IP地址,但若一设备更换为其他设备,其MAC地址会变动,而IP地址是动态定址下的结果,为了让网络上的某一设备有固定的名称,因此会使用设备名称。 为了分配IP地址、子网络遮罩及预设闸道,定义了以下的二种方式:
- DCP(协定)(发现和配置协定)。
- DHCP(动态主机设定协定)。
# PROFINET及实时通讯
在PROFINET IO网络中,程序资料和警告都是实时(real time,RT)传送。PROFINET的实时是依IEEE及IEC的定义,在一个网络周期内允许在有限的时间内处理实时的服务。实时通讯是PROFINET IO资料交换的基础。在处理时,实时资料的优先权比TCP(UDP)/IP资料要高。PROFINET RT是分散式周边实时通讯的基础,也是PROFINET元件模型(PROFINET CBA)的基础。一般资料交换的总线循环时间约在数百微秒以内。
# PROFINET及等时通讯
PROFINET的等时资料交换定义在等时实时(isochronous real time,IRT)机能中。具有IRT机能的PROFINET IO现场设备有整合在现场设备中的switch ports,可以用例如像以太网控制器ERTEC 400/200为基础。一般资料交换的总线循环时间约从数百毫秒至数微秒。等时通讯和实时通讯的差异是前者有高度的确定性,因此总线周期的启始时间可维持到很高的准确度,其抖动至多到1 µs (jitter)。像马达位置控制程序的运动控制应用就会用到等时实时通讯。
# 应用行规
应用行规(profile)是特殊设备或针对特别应用而事先定义的函数及特性组态。PROFINET应用行规由PI(PROFIBUS & PROFINET国际协会)工作小组所订定,由PI发布。应用行规有助于设备的开放性、互操控性及互换性,因此终端使用者可以确定不同设备商提供的类似设备会有标准化的功能及使用方式。使用者的选择促进设备商的竞争,使得产品的机能提升,成本下降。
PROFINET有许多的应用行规,例如针对编码器的应用行规,也有针对运动控制(PROFIdrive)及机能安全(PROFIsafe)的应用行规。甚至针对火车也有专用的应用行规。在2009年德国的汽车制造商提出了PROFIenergy应用行规,主要在管理车辆制造时产生的能源消耗。
# Ethernet/IP
EtherNet/IP是由罗克韦尔自动化公司开发的工业以太网通讯协定,由ODVA(ODVA)管理,可应用在程序控制及其他自动化的应用中,是通用工业协定(CIP)中的一部分。 EtherNet/IP名称中的IP是“Industrial Protocol”(工业协议)的简称,和网际协议没有关系。
# 简介
EtherNet/IP是应用层的协定,将网络上的设备视为许多的“物件”。EtherNet/IP为通用工业协定为基础而架构,可以存取来自ControlNet及DeviceNet网络上的物件。 ^[1]^
EtherNet/IP使用以太网的物理层网络,也架构在TCP/IP的通讯协定上,用微处理器上的软件即可实现,不需特别的ASIC或FPGA。EtherNet/IP可以用在一些可容许偶尔出现少量非决定性的自动化网络。
WARNING
EtherNet/IP很容易误解为Ethernet(以太网)及Internet Protocol(网际协议)的组合。不过EtherNet/IP是一个工业使用的应用层通讯协定,可以使控制系统及其元件之间建立通讯,例如可编程逻辑控制器、I/O模组等,EtherNet/IP中的IP是指工业协定。
EtherNet/IP的应用层协定是以使用在DeviceNet、CompoNet及ControlNet的通用工业协定(CIP)为基础。
EtherNet/IP是一种适合于工业环境和对时间要求比较苛刻的应用的网络。EtherNet/IP使用标准的以太网、TCP/IP技术和一种名叫CIP(Control and Information Protocol)的开放性应用层协议。CIP也是DeviceNet和ControlNet网络的应用层协议。这个开放性的应用层协议使得面向自动化和控制应用的在EtherNet/IP上的工业自动化和控制设备的互操作性和互换性成为现实。
# 历史
EtherNet/IP是在1990年后期由洛克威尔自动化公司开发.是洛克威尔工业以太网络方案的一部分。后来洛克威尔就和EtherNet/IP交给ODVA管理,ODVA管理EtherNet/IP通讯协定,并确认不同厂商开发的EtherNet/IP设备都符合EtherNet/IP通讯协定,确保多供应商的EtherNet/IP网络仍有互操作性。
# 技术细节
EtherNet/IP将以太网的设备以预定义的设备种类加以分类,每种设备有其特别的行为,此外,EtherNet/IP设备可以:
- 用用户数据报协议(UDP)的隐式报文传送基本I/O资料。
- 用传输控制协议(TCP)的显式报文上传或下载参数、设定值、程式或配方。
- 用主站轮询、从站周期性更新或是状态改变(COS)时更新的方式,方便主站监控从站的状态,讯息会用UDP的报文送出。
- 用一对一、一对多或是广播的方式,透过用TCP的报文送出资料。
- EtherNet/IP使用TCP埠编号44818作为显式报文的处理,UDP埠编号2222作为隐式报文的处理。
# 功能
EtherNet/IP同时支持CIP的时分的和非时分的消息传输服务。时分的消息交换基于生产者/消费者模型,在这个模型里一个传送者在网络上发送数据并被网络上的多个设备同时接收到。 EtherNet/IP支持下列功能: 时分消息交换(用于I/O控制);
- 人机界面;
- 设备组态和编程;
- 设备和网络诊断;
- 与嵌入在设备中的SNMP(简单网络设备管理协议)和网页兼容;
- 对以上功能的支持、提供了互操作性和互替换性决定了EtherNet/IP是一种基于以太网的、面向工业自动化的开放性的网络标准。
# CIP
通用工业协议(Common Industrial Protocol,简称CIP)是一种应用在工业自动化的通信协议,由开放DeviceNet厂商协会(简称ODVA)所维护。以前的名称为控制信息协议(Control and Information Protocol,简称也是CIP)。
通用工业协议包括了许多消息及服务,应用范围都和制造自动化有关,包括控制、安全性、同步、运动控制、配置和信息。通信工业协议在EtherNet/IP、DeviceNet、CompoNet及ControlNet等通信协议中都有支持。
开放DeviceNet厂商协会支持许多以通信工业协议为基础的网络技术,包括一些通信工业协议(CIP)的派生协议:如CIP Safety、CIP Motion及CIP Sync。 [1]
# OPC
开放平台通信(Open Platform Communications)简称OPC,旧称“用于过程控制的OLE”,是用于工业自动化的一种通信标准。设备制造商(特别是PLC)如果遵从这一标准,则实时数据可提供给OPC Server,上位机的软件(称为OPC Client)直接访问OPC Server就可以获取到设备数据,从而对不同的设备的差异透明化。
1996年首次发布后,由OPC基金会维护这一标准。[1] 2011年名字从“用于过程控制的OLE”改为“开放平台通信”,[2]以反映OPC已经从过程控制领域推广到智能建筑、离散制造等。OPC也超出了传统的OLE技术,采用了.NET Framework、XML、OPC基金会的二进制编码TCP格式。
# OLE
Object Linking and Embedding,对象连接与嵌入,简称OLE技术。OLE 不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为组件对象模型(COM)。OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格、应用程序等组合在一起。
OLE 是在客户应用程序间传输和共享信息的一组综合标准。允许创建带有指向应用程序的链接的混合文档以使用户修改时不必在应用程序间切换的协议。OLE基于组件对象模型(COM) 并允许开发可在多个应用程序间互操作的可重用即插即用对象。该协议已广泛用于商业上,在商业中电子表格、字处理程序、财务软件包和其他应用程序可以通过客户服务器体系共享和链接单独的信息。
关于 OLE ,业界早就在抱怨它的缓慢和庞大,对市场敏感的 Microsoft 需要对那些 API 函数提出一种新的术语以适应未来的操作系统和Internet技术。有趣的是 Microsoft 已经宣布 OLE 不再代表对象链接与嵌入,而只是一个过去的名词而已。