CAN总线和iCAN协议的介绍
在进行系统信息传输网络的设计时,根据本系统的特性和实际的应用性从现有的几种较为普遍的车用总线中选择了CAN总线作为通信网络。
作为车用总线系统中覆盖范围最广的总线,CAN总线的主要特点是:
1.总线为多主站总线,通信灵活;
2.采用独特的非破坏性总线仲裁技术,从而避免了总线冲突,满足了实时性要求;
3.支持多主工作方式,支持点对点,一点对多点的全局广播方式接受/发送数据方式;
4.采用短帧结构传输,每帧有效字节数最多为8个,数据传输时间短,并有CRC及其他校验措施,数据出错率极低;
5.具有自动关闭严重错误节点的功能,抗干扰能力强,可靠性高;
6.系统走线少,扩充容易,改型灵活;
7.最大传输速率可达1MB/S,直接通信距离最远可达l0KM;
8.总线上的节点数量主要取决于总线驱动电路,标准帧(11位报文标识符)可达110个,而扩展帧(29位报文标识符)个数几乎不受限制[i]。
系统要求车身信息及时显示,各检测模块与主屏显示模块间的信息传输速率范围在10KB/S~125KB/S间;显示模块与检测模块之间能实现点对点,一点对多点、全局广播的数据通信模式;当总线上的一个模块出现问题时不影响到其他模块的通信。基于以上的设计要求本系统选择了B类CAN总线作为通信网络。
由于CAN总线协议只规定了物理层和数据链路层,没有对应用层进行规定,导致整体功能并不完整[ii]。因此在基于CAN总线技术的分布式控制系统中,有些功能必须要通过一个更高层的协议来实现,从而实现在CAN网络中通讯模式、网络管理功能执行、以及设备功能描述方式的统一[iii]。
目前占领主要国际市场的两个应用层协议为:CANOpen 协议和DeviceNet 协议。CANopen协议适用于产品内部的嵌入式网络通信应用,DeviceNet协议是用于工业自动化控制,两种协议规范的复杂度较高,理解开发的难度较大[iv]。这两种协议本车载信息系统设计中均不太适用,因此选用了一种简单可靠的CAN 总线应用层标准协议——iCAN协议。
iCAN 协议全称为“Industry CAN-bus ApplicatI/On Protocol”,即工业CAN 总线应用层协议,该协议为现场设备和管理设备之间的连接提供了一种成本低廉,结构简单的通信方案,详细的定义了传输的CAN 报文中各ID 以及数据的分配和应用,定义了各设备的I/O资源和访问规则,建立起了统一的设备模型[v]。
iCAN网络的使用符合CAN标准规定的拓扑结构。网络上最多支持64个主从节点的连接,节点和总线网络线缆之间的连接使用分支方式。表2-1为网络中通讯速率与通信距离的关系。
iCAN网络采用命令/响应的主从通讯方式来保证数据报文传输的确定性,主控设备(主站)为通信的发起方,受控设备(从站)为通信的响应方。主控设备发送命令帧,当受控设备接收到命令帧后,向主控设备发送响应帧,从而实现数据交换[vi]。这种对服务进行确认的数据传输方式可靠性好。然而,这种命令/响应的通信方式只能由主控设备发起,总线的利用率较低[vii]。因此iCAN协议规范中还定义了事件触发传送的传输方式,弥补了命令/响应模式状态的这一缺点。
如图2-2所示,每一个节点在iCAN网络中拥有唯一的标识值MACID,不同节点之间的通信是基于对相应节点的寻址实现的。iCAN协议保留了特定的地址对一组节点或所有节点进行寻址、帧传输的方式。源节点和目的节点之间的通讯并不是随机进行。进行通信时,首先必须建立通讯连接。只有当连接建立好后,源节点才能够与目的节点进行通讯。这样使对任何拥有MACID设备的通讯进行监控成为可能[viii]。
图2-2 iCAN报文传输
在iCAN协议规范中,iCAN设备的结构由通信端口、资源节点和应用端口三部分组成[ix]。
通信端口:通信端口的作用是实现与CAN总线网络的数据交换,接收网络中发送的CAN报文并按照一定的规则将收到的报文进行处理,端口还进行CAN 报文的发送。
资源节点:资源节点决定了设备的通信行为,应用端口的属性,还定义了与通信和应用相关联的一系列数据表格。
应用端口:定义各个设备在实际应用中所起的功能,并且描述了应用和处理
这些数据或信息的相应过程[x]。
iCAN协议规范只使用了扩展帧格式的CAN报文(CAN2.0B协议版本),并对报文的29 位标识符和报文数据部分的使用作了详细的定义。
iCAN报文标识符的分配如表2-2所示。标识符指定了数据通讯中的源节点地址SrcMACID 和目标节点地址DestMACID,并指示了报文的功能和要访问的资源节点地址SourceID。
按照标识符的排列和功能的划分,整体报文主要被分为7个部分,其中SrcMACID (源节点地址)、DestMACID(目标节点地址)、ACK 位、FuncID(功能码)和Source ID(资源节点地址)5个部分起主要作用。在每次的通讯过程中,通讯双方都必须检查SrcMACID 和DestMACID的值与已知的两端点是否相同,确保通信的正确性。响应标志位ACK分配1位,ACK为0时用于命令帧,需要应答,对于广播帧,ACK标识符无意义;ACK为1时用于响应帧,不需要应答,或者是不需要应答的广播帧;Func功能码分配4位,用于指示iCAN报文需要实现的功能,接收报文的节点根据报文中的功能码进行相应的处理;SourceID资源节点地址占用8位,接收报文的节点根据资源节点地址内部对应的资源进行操作
[1]李正军.现场总线及其应用技术[M].北京:机械工业出版社,2005,1.
[2]CAN in automotion. The CAN physical layer. .
[3]Natale.D. Scheduling the CAN bus with earliest deadline technique[J]. The 21st IEEE,2008,
11:27-30.
[4]Holger Zeltwanger.现场总线CANopen设计与应用[M].北京:北京航空航天大学出版社,
2011,7.
[5]张华,吴欣,藤欣欣.基于iCAN-bus的汽车驾驶状态测量节点的设计[J].测控技术与仪
器仪表,2008,5:69-71.
[6]广州致远电子有限公司.现场总线/CAN协议规范V1.0,2003:17-24.
[7]王楠.基于CAN总线数据传输模块设计[D].内蒙古:内蒙古大学硕士学位论文,2005.
[8]徐涛.基于现场总线iCAN协议综合测试系统的设计与实现[D].成都:西华大学硕士
学位论文,2009,5.
[9]金长健.基于CAN总线的汽车车身网络设计[D].成都:电子科技大学硕士学位论文,