Profibus和CAN现场总线的帧转换
(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的帧传输的长度。
评论