陈华明,张 刚
1 概述 在计算机工业控制系统中,一般包括智能I/O处理单元、主控单元(主CPU单元)和后台处理系统。主控单元与后台处理系统之间通过10/100Mbps以太网进行连接;主控单元与智能I/O处理单元之间的连接采用现场总线,如Profibus、FF、LonWork、CAN Bus等。 CAN(Controller Area Network)是一种成熟的现场总线,由德国BOSCH公司开发,最初用在汽车内的自动化系统中,由于其性能优异、价格低廉,很快被推广到工业控制现场。其物理层使用双绞线,符合ISO DIS 11898标准,其数据链路层采用了载波侦听及碰撞检测机制(CSMA/CD),同ETHERNET相似,不同的是CAN Bus在此基础上增加了优先级控制,使高优先权的信息可以不受阻碍地立即传送。CAN Bus的最大特点是其可靠性,按ISO DIS 11898标准,双绞线中即使有一条线接地或与电源短路,甚至断线,它都可以正常地传输信息。其最高传输速率为1Mbps,最大传输距离为10km,网络上的节点数量无特定限制。 与主从方式的现场总线不同,CAN Bus是一种对等式(Peer-to-Peer)的现场总线网,采用CAN Bus连接主控单元与I/O单元,可以通过节点ID和ID掩码的选择,方便地实现点对点、点对多点和广播等多种传输方式;可以提高主控单元与I/O单元,I/O单元之间的隔离性,便于实现模块的冗余和不停机拆装;可以实现无集中机柜的分散安装方式,系统控制功能可进一步向下分散。 目前使用的CAN Bus技术规范有两部分,即CAN2.0A和CAN2.0B。CAN Bus的技术特点如下: ① 各个节点具有相同的总线访问权,Peer-to-Peer方式无需主节点; ② 无破坏性的基于优先权的总线仲裁策略; ③ 不需要发送目的地址,借助接收节点滤波实现向多点发送; ④ 数据帧、数据请求帧、出错帧和超载帧等四种帧格式; ⑤ 五种错误检验; ⑥ 配置灵活性; ⑦ 全系统数据相容性; ⑧ 发送期间若丢失仲裁或由于出错而遭破坏的帧可自动重发; ⑨ 暂时错误和永久性故障节点的判别及故障点的自动化脱离; ⑩ 可程序控制的传送速率。 CAN2.0B与CAN2.0A相比的最大区别在于CAN2.0B识别码由11位扩展到了29位,更为灵活方便。 SJA1000是一款常见的CAN2.0B控制器,用于汽车和一般工业环境中的控制器局域网络(CAN)。它是PHILIPS半导体PCA82C200 CAN控制器(BasicCAN)的替代产品。而且,它增加了一种新的工作模式,即PeliCAN,这种模式支持具有很多新特性的CAN 2.0B协议。 其扩展功能主要有:① 可读/写访问的错误计数器。② 可编程的错误报警限制。③ 最近一次错误代码寄存器。④ 对每一个CAN Bus错误的中断。⑤ 具体控制位控制的仲裁丢失中断。⑥ 单次发送(无重发)。⑦ 侦听模式(无应答、无主动的出错标志)。⑧ 支持热插拔(软件实现的位速率检测)。⑨ 验收滤波器扩展(4字节代码、4字节屏蔽)。⑩ 自身信息接收(自接收请求)。 2 总线的应用 要提高基于CAN Bus控制系统的性能,必须注重主控单元与I/O单元、I/O单元之间的通信效率和可靠性,充分合理的利用CAN控制器提供的功能,设计高效而又满足应用的应用层协议。 下面就以SJA1000为例,描述在工业控制系统中CAN Bus的应用设计,包含通信速率、节点定义、帧结构、过滤方式、识别码格式和优先级的定义等内容。 2.1 通信速率 系统预设8种通信速率,根据SJA1000的实际时钟频率,计算出每种通信速率下SJA1000的BTR0 和BTR1寄存器的设置值。系统的通信速率由主控单元确定(根据组态软件的设置来设置SJA1000),I/O单元自动侦听CAN Bus通信速率,并设置自身的SJA1000。 2.2 节点定义 主节点: 主CPU(主控单元)节点,允许单CPU、双CPU、多CPU等配置方式。 从节点: I/O单元节点,允许单I/O、双I/O冗余配置方式,同一CAN Bus上的从节点数目最大为64。 2.3 CAN通信帧结构 所有在CAN Bus上传送的信息都以帧为基本单元,每帧的长度为5~13个字节,具体长度视传送内容确定。CAN通信帧结构见表1。
表1 CAN通信帧结构
Byte0 |
Frame information |
BIT7:1;BIT3-BIT0:0~8;其余位:0 |
Byte1 |
Identifier 1 |
报文标识码的ID.28~ID.21 |
Byte2 |
Identifier 2 |
报文标识码的ID.20~ID.13 |
Byte3 |
Identifier 3 |
报文标识码的ID.12~ID.5 |
Byte4 |
Identifier 4 |
高5位为报文标识码的ID.4~ID.0;其余位:0 |
Byte5 |
Data byte 1 |
数据1 |
Byte6 |
Data byte 2 |
数据2 |
Byte7 |
Data byte 3 |
数据3 |
Byte8 |
Data byte 4 |
数据4 |
Byte9 |
Data byte 5 |
数据5 |
Byte10 |
Data byte 6 |
数据6 |
Byte11 |
Data byte 7 |
数据7 |
Byte12 |
Data byte 8 |
数据8 |
2.4 过滤方式 为提高CAN Bus上通信效率和可靠性,并充分利用CAN Bus的优先级仲裁机制,系统应保证: (1) CAN Bus不同节点所发送的通信帧其识别码一定不同; (2) 对于CAN Bus上的点对点通信帧,保证有且只有目的节点能接收到。 要满足上述2个要求,在设计上应使通信帧的识别码与SJA1000验收滤波器互相配合。 SJA1000 验收滤波器由4 个验收码寄存器ACR0、ACR1、ACR2和ACR3和4个验收屏蔽寄存器AMR0、AMR1、AMR2和AMR3组成。它们在SJA1000的复位模式下可由主控制器设置,从而可对接收信息构成非常灵活的滤波。 在本系统中,CAN节点对通信帧的接收采用单过滤方式。单滤波是指只有1个由4个验收码寄存器和4个验收屏蔽寄存器组成的验收滤波器,总线上的信息只有通过它的验收滤波才予以接收。ACR和AMR是配合在一起工作的,所有AMR 为0 的位,ACR和CAN通信帧识别码的对应位必须相同才能验收通过;所有AMR 为1 的位,ACR 对应位的验收滤波功能则予以屏蔽,CAN 信息帧的相关位与验收结果无关。 节点的验收码和屏蔽码的设置见表2。
表2 CAN节点验收码和屏蔽码设置表
节点类型 |
验收码
ACR0.7- ACR0.5 |
验收码
ACR1 |
屏蔽码
AMR0.7- AMR0.5 |
屏蔽码
AMR1 |
主节点(CPU) |
0 1 0 |
00h |
110 |
0ffh |
从节点(I/O单元) |
0 0 1 |
ACR1 |
101 |
AMR1 |
对于所有类型的节点,验收码ACR0.4-ACR0.0、ACR2和ACR3的所有位均为0,屏蔽码AMR0.4-AMR0.0、AMR2和AMR3的所有位均为1。 I/O单元各节点均分配一个逻辑ID,由此确定CAN通信的物理地址,从节点逻辑ID及验收码ACR1和屏蔽码AMR1的分配规则为: 从节点的验收码ACR1的8位由4个“1”和4个“0”组成; 不同从节点的验收码ACR1均不相同; 从节点逻辑ID越小,对应的验收码ACR1也越小; 从节点的屏蔽码AMR1为其验收码ACR1的反码。 根据上述规则,可分配出70个从节点,选取其中的64个作为系统的从节点。 2.5 CAN通信帧报文标识码(29位)定义
CAN通信帧报文标识码(29位)定义如下:

ID.28~ID.26:信息流向(MDIR),3位。具体含义见表3。
表3 CAN节点信息流向表 
ID.25~ID.21:信息类型(MTP),5位; ID.20~ID.13:从节点号索引(SNI),8位。CPU节点发送时表示目的从节点,从节点向CPU节点发送时表示源从节点,从节点之间通信时表示目的从节点。0ffh表示是广播帧,发送点对点帧时,SNI就是从节点逻辑ID号对应的从节点验收码ACR1。 ID.12~ID.5:信息编移(MOS),8位。对于点对点的CAN通信帧,此信息偏移表示该通信帧内数据的偏移。对于CPU节点发送的广播帧,此信息偏移用来表示发送此广播帧的不同的CPU节点,例如可以是CPU节点所在主控单元的系统网络站号。 ID.4~ID.2:保留,3位。 ID.1~ID.0:源节点内部单元序号(SNMN),2位。非冗余CPU节点发送时,SNMN保留,为0;冗余CPU节点发送时,为0和1分别表示该冗余CPU节点的A机和B机(为2和3保留)。非冗余I/O单元从节点发送时,SNMN保留,为0;冗余I/O单元从节点发送时,为0和1分别表示该冗余I/O单元的A单元和B单元(为2和3保留)。 2.6 CAN通信帧传送优先级 根据所定义的CAN通信帧报文标识码格式,CAN Bus上各通信帧传送优先级首先由MDIR决定。 按照MDIR,CAN通信帧优先级由高到低依次为: ① 主节点(CPU节点)向从节点发送的点对点帧,如主控单元向某一I/O单元发送配置数据。 ② 主节点向所有从节点发送的广播帧,如主节点向所有从节点请求I/O单元工作状态,或主节点向所有从节点请求当前数据。 ③ 主节点向主节点发送的点对点帧。 ④ 主节点向所有主节点发送的广播帧。 ⑤ 从节点之间点对点通信帧。 ⑥ 从节点向主节点发送的广播帧。 上述6类通信帧中,常用到的有①、②和⑥这三种,能满足数据采集与控制的基本应用要求。 在MDIR后,CAN通信帧传送优先级由MTP决定。在MDIR相同的情况下,MTP对优先级的确定起着决定作用,从而保证重要信息类型数据的优先传送。例如SOE(事件顺序记录)信息就可以比普通的巡检数据优先传送。 常见的信息类型有网络同步帧、请求配置、配置数据、SOE数据、巡检数据、状态数据等,在系统设计时可根据其重要程度排定优先级,并确定相应的MTP数值。 在MTP后,CAN通信帧传送优先级由SNI决定。在MDIR和MTP都相同的情况下,CAN通信帧的优先级取决于SNI,逻辑ID越小,其优先级越高。 3 结语 本文以SJA1000为例,通过节点定义、帧结构、过滤方式、识别码定义和优先级定义等方面的应用设计,可以实现工业控制系统中多冗余的主控单元和64个可冗余I/O节点之间的高效可靠的数据通信,实现不同流向的各种类型的通信帧的高效传送。通信帧优先级由MDIR、MTP和SNI依次决定,并保证CAN Bus上不会出现相同的识别码。 |