西门子6ES340-1CH02-0AE0
一、现场总线技术的兴起和市场动力
七十年代,微处理器技术的进步以及“集中管理、分散控制”的风险控制策略促成了基于微处理器芯片的集散控制系统开始进入市场,也将用于控制器之间和控制器与上位机之间的数据通讯的计算机通讯网络技术引入了工业自动化领域。但此时由于各自动化厂商的控制系统自成一体,网络通讯只是其系统的内部功能之一,无需与外界进行数据交换。八十年代以后,随着微处理器芯片应用的不断渗透,“智能化”的传感器、开关、执行机构等工业现场控制器件不断涌现,但各厂商根据所生产的元器件的特点而开发的数据通讯协议也是五花八门、种类繁多,单个的元器件似乎充满了“智能”,但与控制系统集成时仍然只能沿用传统的电缆接线一对一接入I/O接口板,并不能真正体现其“智能化”的优点。要将这些众多不同厂商的“智能化”现场控制元器件集成为一个完全数字化的集散控制系统,公共开放的网络通讯协议标准就显得非常必要。在这一市场动力的推动下,各控制系统(包括PLC和DCS)的生产厂商基于其原先内部专用的网络通讯技术纷纷提出了各种各样开放程度不同的现场总线通讯协议标准,并随着技术的进步不断补充和完善。
二、现场总线技术标准化的现状
从上世纪八十年代开始,美国仪表协会(ISA)和国际电工委员会(IEC)即已设立专门的机构来研究和提出现场总线技术标准。由于种种原因,经过长达十多年的努力,终于在2000年颁布的IEC61158却是一份让所有自动化领域相关人员感到困惑和尴尬的标准,因为它包含八种互不兼容的总线协议。随着IT技术不断向工业领域渗透,以太网(Ethernet)作为新的现场总线技术让很多人充满了期望,但2003年第三版的lEC61158标准的颁布,在新版本中增加了三种基于以太网技术的新协议,将总线协议的标准增加到十一种,还有更多的基于以太网技术的新协议正积极努力加入到标准的协议集内。
三、现场总线技术标准化进程的分析思考
分析用户的需求,我们大致可以将用户对现场总线的技术要求和期望分为以下三个层次:
1) 智能元器件与控制器(站)之间的互连互通,主要目的是替代传统的I/O电缆。其要求是能传送传统的I/O数据,并附加传送一些智能元件特有的告警和故障诊断信息。
2) 在传送以上实时监控数据的基础,用户的要求是希望通过网络来进行集中的工程设计组态、程序动态修改下载以及元器件的远程诊断和校准等。
3) 在互连互通的基础上,用户希望能够在各种情况下“重构”系统,如在元器件损坏更换、系统改扩建以及系统升级或部分升级等情况下,要求能够无障碍地接入第三方的元件或新技术条件下的升级产品。
从以上用户的需求上可以看出,用户是希望通过现场总线技术,利用网络数据通讯的手段实现各种智能元器件与控制器(站)之间的“互连”、“互通”、“互换”,但并没有要求说所有这些功的必须在一个“单一”的统一网络来实现。正如在Internet网络上用户希望实现电子邮件、文件下载、网络浏览、网上游戏等服务,但这并没有要求Internet网络必须是一个“单一”的“同构”网络。
从通讯协议的构筑模型上看,目前几乎所有的通讯协议一般来说都是参照OSI的七层模型,但绝大多数协议都是从物理层开始“自底向上”自成一体地构筑一个“垂直一体化”的协议栈,使得八种标准协议之间在任何层次上都很难“互连”、“互通”,更谈不上“互换”功能。事实上制定OSI分层模型的目的是让涵盖不同技术元素不同发展变化速度的通讯实体分为相互独立的层次,以使各层次既能够相互结合成为一个端对端完整的协议栈,又能够相互独立发展而不互相制约。比如在我们熟悉的Internet网络协议簇中,因特网之能够如此成功,就是以TCP/IP协议栈为核心,对上可以服务众多不同的应用层协议(WWW、FTP、电子邮件等),向下则可在众多不同的局域网(Ethernet、FDDI等)、广域网(拨号网络、X.25等)平台上实现。
从某种意义上来说,现场总线技术的标准化进程出现目前困境的原因很大程度上可能是当初一开始就将“单一的垂直一体化的同构网络”这一过于“理想”的期望设定为技术标准的目标,结果不但不能达到目的,反而适得其反,出现了“群雄纷争,互不兼容”的局面。
四、CIP协议架构的启发
CIP协议规范是叠加在ControlNet、DeviceNet和EtherNet这三种完全不同的网络技术平台之上的“与网络硬件技术无关”的公共的“网络传输层、应用层、用户层”协议规范,也就是说它可以实现“异构网络”下的系统的“互连”、“互通”,直至“互换”功能。按照OSI七层通讯模型,CIP协议架构下的协议栈结构如下图所示。
由以上示意图可以看到,与其它现场总线技术通讯协议一个很大的不同就是有一个具有“网络传输层”功能的“CIP Messaging”协议规范。其中核心的部分就是将应用对象之间通讯关系抽象为“连接(Connection)”,并与之相应制定了应用对象的逻辑地址规范,从而使CIP协议可以不依赖于某一具体的网络硬件技术,而是用逻辑对象地址来定义“连接(Connection)”关系。
并将某一种具体的网络技术平台抽象为与网络接口相关的“物理链路对象(bbbb bbbbbb)”,这样使得CIP协议在不同的网络技术平台上具体实现时唯一需要的接口就是与该网络平台相对应的“物理链路对象(bbbb bbbbbb)”,如“DeviceNet bbbb bbbbbb”、“ControlNet bbbb bbbbbb”和“Ethernet bbbb bbbbbb”等等,而其上层的协议都可不受影响并保持一致,这也就为在跨平台的“异构网络”条件下实现系统的“互连”、“互通”,直至“互换”功能奠定了基础。
更与其它众多“自底向上”构筑“垂直一体化”通讯协议的现场总线技术不同,它不是根据物理层和数据链路层所能提供的通讯服务原语来定义“连接(Connection)”关系,而是“自顶向上”,根据来自“用户层和应用层”的用户和具体应用领域的实际数据通讯需求, 将“连接(Connection)”关系又细分定义为以下三种类型:
I/O Connection:主要是针对传送用于监视、控制等有一定的实时性要求的数据时的通讯关系,其中绝大部分应该是传送传统上用于实时监控的I/O数据,故以此命名。这种“连接(Connection)”关系的特点是必须预先通过配置工具逐一对与该“连接(Connection)”相关联的应用对象及整个数据链路上的各个节点进行配置和分配固定的资源后才能建立起来,其优势就是一旦建立起这一“连接(Connection)”,则所有加入这一通讯关系的应用对象之间已经对数据内容达成共识,所有传送数据均为“元数据”,无需对数据类型或数据本身作任何标识说明或功能描述,传输效率高,整个数据链路已预分配资源,传输可靠性也高,可以满足“实时”控制数据的传送要求。
Explicit Message Connection:主要是针对传送用于工程设计组态、集中管理维护、故障诊断调试等过程中所需传送的非实时信息。它通常是通过点对点的报文传送在两个应用对象之间以相互交互的方式传送,由于报文中的数据内容会随着双方的状态变化和交互过程而变化,报文本身必须携带对传送数据的类型标识和功能描述,将其命名为“显式报文连接(Explicit Message Connection)。这种“连接(Connection)”关系的特点是通讯双方的任何一方应用对象均可应自身的信息传送需求动态发起和建立这种“连接(Connection)”关系,是“点对点”的“双工”通讯模式,非常便于应用对象之间的“交互式对话”。通讯过程结束后即拆除“连接(Connection)”并回收资源,这一模式对“阵发式”信息类数据传送是非常合适的。
Bridged Connection:由于在任何一个较大规模的系统中都不可能或不会将所有的控制元器件集中在一个物理网段中,即一般都可能配置成多个网段互连,可能是“同构网段”,也可能是“异构网段”。而当若有数据需从某一个网段传送到另一网段时,不论是I/O数据还是Explicit Message,则其所要经过的跨网段的中间节点(Bridge)必须承担路由所需的“连接(Connection)”关系,实际上即是该节点必须在其内部分别创建与每个网段“bbbb bbbbbb”相应的“背靠背”的“连接(Connection)”对象。
纵观整个CIP协议规范,其中具特色的是其“Connection”这一抽象对象,以及非常符合“控制和信息”传送需求的“Connection”分类模型:“I/O Connection”、“Explicit Message Connection”、“Bridged Connection”。这使得CIP协议真正成为一个“与网络硬件无关的具有路由功能的跨网络的网络通讯协议”,也使得它成为在“异构网络”环境下实现系统的“互连”、“互通”,直至“互换”功能的核心技术规范。
1 概述
现场总线是一种用于智能化现场设备和自动化系统的开放式、数字化、双向串行、多节点的通信总线。
在实际的生产建设中,我们将会经常遇到将不同现场总线的设备集成在一起或者在某一现场总线中利用其他现场总线协议的设备的问题。这就涉及到了不同的现场总线协议的协议转化。数据键路层的帧转换是这些协议转化中的一个很关键的问题。
在这里,我们以Profibus-DP和CAN这两种当今使用广泛的现场总线来研究现场总线的协议帧转化。
2 CAN现场总线的传输层协议简介
传输层是CAN协议的核心。它把接收到的报文提供给对象层,以及接收来自对象层的报文。传输层负责位定时及同步、报文分帧、仲裁、应答、错误检测和标定、故障界定。
报文路由:报文的内容由识别符命名。识别符不指出报文的目的地,但解释数据的含义。网络上所有的节点可以通过报文滤波确定是否应对该数据做出反应。
报文传输由以下4个不同的帧类型所表示和控制:
·数据帧:数据帧携带数据从发送器至接收器。
·远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。
·错误帧:任何单元检测到一总线错误就发出错误帧。
·过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
数据帧(或远程帧)通过帧间空间与前述的各帧分开。
在这里我们以数据帧为例来分析CAN的帧结构。
2.1 数据帧
数据帧由7个不同的位场组成,如图1所示:
(1)帧起始
它标志数据帧和远程帧的起始,由一个单独的“显性”位组成。
(2)仲裁域
仲裁域包括识别符(ID)和远程发送请求位(RTR)。
识别符(ID):识别符的长度为11位。这些位的发送顺序是从ID-10到ID-0。低位是ID-0。高的7位(ID-10到ID-4)必须不能全是“隐性”。
RTR位:该位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”
(3)控制域
控制域由6个位组成,包括数据长度代码和两个将来作为扩展用的保留位。所发送的保留位必须为“显性”。数据长度代码指示了数据域中字节数量,长度为4个位。
(4)CRC域
CRC域包括CRC序列,其后是CRC界定符,它包含一个单独的“隐性”位。
(5)应答域
应答域长度为2位,包含应答间隙和应答界定符。在应答域里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙期间发送ACK信号,向发送器发送一“显性”的位以示应答。
(6)帧结尾
每一个数据帧和远程帧均由一标志序列界定。这个标志序列由7个“隐性”位组成。
2.2 传输控制
(1)帧间空隙
对于不是“错误被动”的站,或者此站已作为前一报文的接收器,其帧间空隙如图4所示:
对于已作为前——报文发送器的“错误被动”的站,其帧间空间如图5所示:
其中,intermission是强制性的3个隐性位。
(2)位流编码
帧的部分,诸如帧起始、仲裁域、控制域、数据域以及CRC序列,均通过位填充的方法编码。无论何时,发送器只要检测到位流里有5个连续识别值的位,便自动在位流里插入——补码位。
数据帧或远程帧(CRC界定符、应答域和帧末尾)的剩余位域形式相同,不填充。错误帧和过载帧的形式也相同,但并不通过位填充的方法进行编码。其报文里的位流根据“不返回到零”之方法来编码。这就是说,在整个位时间里,位电平要么为“显性”,要么为“隐性”。
CAN协议范围只规定了“显性”和“隐性”两种逻辑值,而没有明确规定表示这些逻辑电平的物理状态。根据逻辑关系,我们可以设“显性”逻辑值为逻辑“0”,“隐性”逻辑值为逻辑1。
3 Profibus数据链路层帧格式及相关的地址规定
(1)帧字符(UART字符)
帧由帧字符组成
每个帧字符由11个位组成:1个开始位(ST);8个信息位;1个奇偶校验位(P);1个停止位。
(2)帧格式举例
Profibus的帧有4种
1)无数据字段的固定长度的帧
2)有数据字段的固定长度的帧
3)有可变数据字段长度的帧
4)令牌帧
其中:
SYN同步时间,所有的主动帧前都必须有。
SD1开始定界符,值l0H
SD2开始定界符,值68H
SD1开始定界符,值A2H
SD1开始定界符,值DCH LE信息字节长度。该长度包括DA, SA,FC和DATA_UNIT。
LEr重复信息字节长度。 DA目的地址
SA源地址 FC帧控制 DATA UNIT数据字段。在固定长度的帧中为8个字符,在可变数据字段长度的帧中由LE决定,大246个字符。
FCS帧检查顺序 ED结束定界符,值16H。 SC短应答帧的单一字符,值E5H。
(3)地址
在帧首部的地址字符结构是这样的:
地址位组的低7位为其所指示的站地址。这样在不扩展的情况下就有127个站地址(0~126)可以提供给主站和从站(其中127是作为全局地址来用的)。
EXT位用来指示在DATA UNIT中有无地址扩展。为了效率的缘故,Profibus-DP的数据交换功能禁止了地址扩展。
(4)服务存取点SAP
ProfibuS-DP协议使用FDL的服务存取点SAP作为基本功能代码。这个SAP有点类似于我们熟悉的TCP/IP协议中的端口:
在Profibus-DP协议中通常使用的帧格式如下,其中地址栏的高位是1
4 帧的内容的转化
一般说来,Profibus现场总线是主从结构的,Master和Slave之间是通过轮询来通讯的。CAN也有主从结构的,但它的通讯方式是优先级逐位仲裁的竞争式通讯(CSMA/MBA)。
如果把这两种现场总线连在一起的话,大多数情况下应该是把CAN段作为Profibus的Slave。
CAN的帧比较短,每个帧都有严格的差错控制,在每个CAN的帧中,数据域长是8个字节;而Profibus常用的有可变数据字段的单帧数据容量可达246字节,但它的每个字节(UART字符)都有比较好的差错控制。在这种转化中我们需要集中考虑地址转化和帧的拆分问题。
4.1 地址转化
如前所述,Profibus-DP的站地址(DA/SA)在帧中用1个字节的低7位来表示;CAN协议的帧中却没有明显的地址位,它是利用仲裁域中的11位(CAN2. OA)或29位(CAN2.OB)表示符ID来表示帧的有关接收信息,让接受节点自己来确定是否接收。这样,实际上的地址信息就应当包含在ID中了。CAN协议没有规定信息标识符(ID)的分配,可以根据不同的应用使用不同的方法。确定标识符的分配非常重要,是高层协议、应用层协议的一个主要研究项目。
在本文中,为简单起见,我们只采用CAN2. OA格式的帧。我们来研究其标识符的分配方法。世界上已经有很多现场总线的高层协议是基于CAN协议的,如CANopen, Modbus,DeviceNET等。出于研究方便,现在我们就采用“HiLon协议B”,协议。
下面对“HiLon协议B”作简单介绍。
HiLon协议B是一个通用协议。该协议基于对称型多主网络结构,支持广播和点对点传送命令数据。命令数据包可长达256字节。
协议以CAN2. OA帧结构为基础。下图是帧报文格式,一个CAN2. OA标准帧由11位ID、1位RTR、4位DLC、数据区(多8个字节)组成。
PRI:保留位(可作优先级位)。通常,保留位设置为1。保留位亦可作为优先级位,这时1为低优先级0为高优先级而剩余的优先级由源地址决定,低地址优先级高。该保留功能可有效支持紧急信息传送,如报警等。
source address:源地址,表示发送数据的节点地址,范围只能设定为0~125。
TYPE:帧类型。见下表中的帧类型说明。
DLC:每帧字节数(1~8)
destination address:目标地址,表示接收数据的节点地址,范围只能设定为0~125。
index:索引字节。对于单帧数据,该字节表示传输数据的个字节;对于多帧数据,此字节表示索引字节,即此帧数据在数据包中的位置。
data:数据。
Profibus有127个站地址,地址范围是0~126,127是全局地址。
两者的差距并不大。因为只是研究用,我们不妨把HilonB协议稍许修改,地址范围扩充到0~126,这样做,对整个CAN帧的长度和结构并无任何影响。
于是,我们就可以对所有的Profibus设备和CAN设备统一编址。整个系统里的站地址是唯一的,在帧转化时我们只要把相应位的地址信息直接拷贝进去就是了。
4.2 帧的拆分和合并
要把profibus的长帧装到CAN的短帧里去,就只能把Profibus的帧里的数据拆分成适合CAN的帧传输的长度。
CAN帧里的数据域的长度大只有8个字节。在我们给定的高层协议HiLon B中,又在数据域里拿了两个字节作为目的地址和帧索引了,这样就只剩下6个字节给我们传输数据。在长的Profibus数据帧中,有246个数据字节。那么容纳这个长帧的数据就需要246/6=41个CAN帧。刚才我们在CAN的帧里采用一个字节作为帧的索引字节。
我们在进行帧转化时,把Profibus的帧拆分成每部分6字节后,加上目的地址和帧索引,就可以成为CAN帧中的内容了。目的节点收齐这些帧之后再把它们连接还原,就得到了要传送给它的信息。
反向传输时,我们所要做的只是顺序完全的事情。
4.3 帧的控制信息的转换
Profibus数据帧中的其他控制信息还有 SD2 (68H),LE(数据长度),FC(帧控制八位组),FCS(帧检查序列),ED(16H),这些信息都是根据帧本身的数据计算出来的,用于接收方对数据的识别。在协议转换器正确的接收了帧之后,这些信息也就不需要了。的工作就是把收到的信息编人CAN的帧,加上CAN的控制信息,计算出CRC序列,和在一起组成CAN的帧发到CAN节点上去;反过来,当协议转换器要把CAN的帧转换成Profibus的帧时,也是在正确地接收CAN的帧之后,只提取其数据内容,按照Profibus的协议生成一幅Profibus帧。
5 差错控制
每种现场总线通讯协议帧都有它自己的错误检测方式。我们在协议转换的两侧,要按照它们各自的方法去检测错误。我们的协议转换器如果检测到一个错误,应当拦截这个错误。
5.1 Profibus的错误检测及控制
如前所述,Profibus帧中用的是UART字符。第10位是奇偶校验位。检测到任何一个字符的奇偶校验出错,我们就知道该字符有错误了。
Profibus的数据帧中有一个FCS位,是通过计算DA,SA,FC 和DATA UNIT的算术和获得的一个检验八位组。这个八位组可供 我们在接收到一个帧时来检验数据的正确性。
还有些能明显被发现的错误:如超时运行、有缺陷的开始定界符和结束定界符、无效的帧长度、相应次数等。协议转化器在Profibus总线一侧,就是作为一个Profibus的节点在运行。当它不正确地接收到一个主动帧时,将不处理、应答或回答。在此时隙 时间期满后,发起方将再重试此请求。仅在接收到一个有效回答或重试(多次)不成功后,发起方才算完成了此请求。同理,如果协议转换器发送主动帧后没有正确的收到一个应答帧,那么它也会不停的重试,直到一定次数,才会把对方标记为不运行。
5.2 CAN的错误检测及控制
5.2.1 错误类型
CAN协议列出了以下5种不同的错误类型。协议转换器必须捕捉并处理这些错误。
(1)位错误
站单元在发送位的也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误(BIT ERROR)。
(2)填充错误
如果在使用位填充法进行编码的信息中,出现了第6个连续相同的位电平时,将检测到一个填充错误。
(3)CRC错误
CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误(CRC ERROR)。
(4)形式错误
当一个固定形式的位域含有1个或多个非法位,则检测到一个“形式错误”(bbbb ERROR)。
(5)应答错误
只要在ACK间隙(ACK SLOT)期间所监视的位不为“显性”,则发送器会检测到一个“应答错误”(ACKNOWLEDGMENT ERROR)。
5.2.2 故障界定状态
CAN定义了一个故障界定状态机制。一个节点可能处于下列三种错误状态中。
(1)错误主动当一个错误主动结点检测到上述某个错误时,它将发送一个错误主动帧,该帧由6个连续的显性位组成。这已发送覆盖其他任何发送的帧,并导致其他节点都检测到一个填充错误,并依次放弃当前帧。
(2)错误被动当一个错误被动节点检测到上述的某一个错误时,它将发出一个错误被动帧。该帧由6个连续的隐性位组成。这个帧会被出现的其他发送所覆盖,如果其他站点没有检测到这一错误,不会丢弃当前帧。
(3)离线
5.2.3 错误处理过程
为进行故障界定,我们的协议转换器也应当设两种计数器:发送错误计数器和接受错误计数器。我们就可以把它作为一个普通的CAN接点参与到CAN网络的运行,故障的处理方法也是一样的。
(1)初始化错误计,数器的值等于0,节点开始错误主动状态,此时假设检测到的所有错误都不是由该节点引起的。
(2)根据检测到的错误类型使相应的计数器的值累加,有效的发送或接收又使这些计数器递减,直至0。
(3)当这些计数器中的任何一个超出CAN定义的阈值时,该节点进人错误被动状态。该节点被认为是导致错误的原因。
(4)当错误被动节点的发送及接收错误计数器值都减小到CAN定义的阈值以下时,节点重新进人错误主动状态。
(5)当发送错误计数值超过CAN定义的另一个阈值时,该节点进人离线状态。从离线状态再进人错误主动状态就需要人的干预了。
以上所述,是我们研究的现场总线协议转换器在两边各自的现场总线范围内的错误控制和处理方法。一定要先解决各自的错误,才能再进行帧的转换。
从Pfofibus的帧转换到CAN的帧时,就是在通过校验确认帧的内容无误后,才进行地址和内容的转换,还要计算出该帧的CRC序列,供CAN段通讯用。反过来也是一样。
6 结语
本文分析了Profibus和CAN的帧的特点,构思了在这两种总线之间实现帧转换的方法。但单纯的帧转换没有意义,帧转换只是现场总线的协议转换中的一环。要实现几种现场总线的协作,还有其他很多工作要做。
国际电工委员会IEC在1984年就开始筹备制定单一现场总线。由于行业与地域发展等历史原因,加上各公司和企业集团受自身利益的驱使,围绕着现场总线技术的标准进行了一场大战,后经过多方妥协,于1999年年底通过了包含FF,Profibus等八种总线在内的IEC61158,没有实现制定单一标准的目标。这个结局表明,在今后相当长一段时间内多种现场,总线将并存,控制网络的系统集成与信息集成会面临困难的复杂局面。无论是终用户还是制造商,普遍都在关注现场总线技术的发展新动向,都在寻求高性能低成本的解决方案。