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个或多个非法位,则检测到一个“形式错误”(FORM 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,没有实现制定单一标准的目标。这个结局表明,在今后相当长一段时间内多种现场,总线将并存,控制网络的系统集成与信息集成会面临困难的复杂局面。无论是最终用户还是制造商,普遍都在关注现场总线技术的发展新动向,都在寻求高性能低成本的解决方案。
评论