企业简介

作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。

  • 公司类型:其他

联系方式
  • 控制网
  • 地址:北京市海淀区上地十街辉煌国际2号楼1504室
  • 邮编:100085
  • 电话:010-57116291 / 59813326
  • 传真:010-59813329
  • 网址:http://www.kongzhi.net
  • Email:mahongliang@kongzhi.net
  • 联系人:市场部
案例详细
标题CAN总线在工业控制系统中的应用设计
技术领域工业以太网
行业
简介
内容

陈华明,张  刚

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:1BIT3-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上不会出现相同的识别码。