兰 星
(延安大学 西安创新学院,延安 710100)
CAN(Controller Area Network)是控制器局域网络的简称,由德国BOSCH公司研发、生产,最终成为国际标准.随着近年来控制器局域网络的广泛应用,CAN已成国际上广泛应用的现场总线.CAN以其高水平的可靠性及准确的检错能力受到重视,在汽车计算机控制系统、电磁辐射较强、环境恶劣及振动较大的工业中广泛使用.
CAN总线的协议分层为物理层、数据链路层.其数据链路层有其独特的特点,数据链路层中的媒介访问子层是CAN协议核心,媒介访问子层的主要功能是,对数据进行拆装和封装、执行帧编码、处理逻辑链路控制子层接收的报文和对逻辑链路控制子层发送认可报文,媒介访问子层中的媒体访问管理功能很好地发挥了其非破坏性的总线仲裁机制.此外,媒介访问子层还拥有检测错误及错误标定两项功能.媒介访问子层被一个称谓故障限定的管理实体时刻监控,这个管理时刻能够识别永久性故障以及具有自检短暂扰动的功能.逻辑链路控制子层具有超载通知、报文滤波以及恢复管理等功能.
CAN总线可靠性是指在数据传输过程中对数据错误的识别力,采用的错误识别方式对系统可靠性有很大影响.CAN总线采用循环冗余校验方法,具体的实现过程如下:循环冗余检验由通信控制器内部的硬件电路协助完成,通信控制器在数据发送过程中,要一边进行发送数据,另外同时对发送数据进行循环冗余处理,等到本帧的数据全部发送结束后,CPU不需要继续向寄存器中发送数据,这是,通信控制器只需要把循环冗余计算的最终结果发送出去即可.在接收数据时,通信控制器对所有的接收数据都要进行循环冗余计算处理,直至帧后定界码.除了循环冗余校验,CAN总线还有几种检验方法,比如应答错误检查、帧检查、位填充检测以及总线检测等等,这些校验方法在很大程度上降低了错误的漏检率.另外CAN总线通信方式也极大地影响着通信系统可靠性,在CAN通信协议中,CAN的通信方式采用应答方式,应答方式通信中,发送数据节点通过数据帧的应答场来接收其他节点应答信息,若其他的节点能正确无误地接收到报文,此时应答场发送一个线性位,即0,若果发送节点没有收到0则认为发送出现错误,此时要重新发送报文.
CAN采用非破坏性总线仲裁技术来保证自身实时性.CAN的网络节点可以分为不等的优先级,以此来满足不同的要求.如果有两个网络节点同时向总线发送信息时,较低地优先级节点要主动放弃发送数据,然而优先级别较高的节点不受影响可继续发送数据,这样可以避免总线冲突,有效地提升了系统的实时响应速度.
CAN系统通常通过硬同步和重同步来完成系统同步.第一种硬同步,系统硬同步之后,位时间通过每个位定时逻辑单元启动,此时由硬同步强迫而一起的硬同步边沿处在重新启动位定时同步段之内.第二种重同步,系统完成重同步之后,Phase-seg1被延长,或者Phase-seg2被素缎,延长或缩短的缓冲段之和符合重同步跳转宽度给定的上限.一般来说,重同步常常在报文位流发送的过程中发生,这样可以有效地补偿个别的CAN控制器振荡器频率变化或者报文位流由一个发送器发送至另一发送器时产生的变化.但是,CAN系统通硬同步和重同步有严格遵守下面的几个规则:(1)每个位时间只许一种同步;(2)先前读总线的数值(即)先前采样点检测的数据要区别于边沿之后出现的总线数值,而边沿要用于同步;(3)在总线空闲时,出现隐性至显性跳变即为完成系统硬同步;(4)在满足上述规则隐性至显性跳变之外的其他跳变沿可以用于重同步.
在通信方面,CAN采用的非破坏性总线仲裁技术可以进行多方式的工作,也就是说,CAN网络在任一时刻.任何一个节点都可以主动向网络上其他的节点发送信息,这种通信方式不分主动,灵活多变.CAN最远的通信距离为10KM/5Kbps,最高通信率约为1Mbps/40m.CAN节点理论数值为2000,但实际上为110.CAN通信介质是常用的廉价双绞线,此外,CAN可以实现点对点、一对多点以及全局广播等多种方式进行传送和接收数据.
CAN总线具有的可靠性高、实时性好、软硬件投资少等特点,成为当前最受欢迎的通信技术之一.
目前,我国嵌入式轻型网关中采用基于CAN总线的通信技术.下面探讨基于CAN总线的嵌入式轻型网关和局域网之间的互联.
采用嵌入式轻型网关最主要的是要考虑如何实现PC机之间的局域网连接通信.一般来说,常有两种通信方式:并行和串行.在实际中常采用RS-232串口通信方式,同时在电路设计时预留出扩展并口.下面对串行通信和并行通信分别进行分析:
串行通信:串行通信具有成本低、使用线路少等优点,因此在远程传输通信中被广泛采用.串行通信通信双方要求使用同一个标准接口,这样可以方便地把不同的设别连接起来通信.RS-232是目前最为常用的串行通信接口之一,不同于其他的通信方式,RS232中所有的信号线电压都是负逻辑关系,逻辑0表示+5v至+15v,逻辑1表示-5v至-15v.这个逻辑标准规定接收器可以识别低+3v信号作为逻辑0,高到-3v信号作为逻辑1.物理接口RS-232常使用型号DB-25的25芯接口连接器,DCE端是插头,DTE端是插座.现在大部分的设备与PC机连接的串行通信RS-232接口不适用对方传送控制信号,所以通常只是用发送数据、接收数据和信号地三条接口线,也就是DB-9的插头座.传输线通常会是用屏蔽双绞线,在RS-232规定的码元畸变小于4%的要求下,传输线应该为50英尺,码元畸变4%是较为保守的估计,一般情况下约99%用户在10%至20%的码元畸变范围内工作,因此一般传输电缆长度会远远超过50英尺.但是现在使用的RS-232接口标准出现时间比较早,难免不能适应现在传输要求,比如接口信号电平值较高、接口电路芯片易损坏、传输速率较低等等这些限制这RS-232串口通信方式.
并行通信:在电路板设计的时候就预留了并行扩展口,这样可以通过并口的使用提高通信速度.以往并行通信的使用多事采取标准的SPP协议,这个协议8位的并行端口是单向端口,也就是说只允许PC机向外部传送数据,却不允许接收外部数据,如果需要接收数据,此时将状态线作为输入数据线来用,并且状态线不满8位要进行数据拼接.并行口SPP协议局限性在一定程度上限制了并行通信在数据采集、控制以及通信方面的应用,为此制定了EPP协议,EPP协议极大地提高了PC机并行口数据传输能力.
与RS-232串口相比,EPP传输速度较快,并极大地简化了电路.比如,CAN节点设计过程中,通过一个PC机到CAN器件SJA1000将CAN总线上信息送至PC机同时在屏幕上正常显示出来.
基于CAN总线的嵌入式轻型网关协议格式具体方案如下:
(1)CAN基本应用模式里面数据帧有8字节数据,在一般的轻型网络中传输的数据帧比较短,8个字节一般能满足需求,同时帧出错概率也极低,所以,在通信协议中常将8个字节作为一帧数据.基本的帧格式为 [源地址][目的地址][数据0]—[数据5].在这个帧格式中,第一个字节代表着发送数据节点地址,第二个字节代表着接收数据节点地址.剩余位则代表发送的节点在子网里面的地址.第一个地址可以用来实现应答通信方式,当接收节点正常收到数据之后,要及时给发送节点发送一个应答帧.第二字节含义与第一字节含义类似.这样一来,在嵌入式轻型网关中,从CAN网接收到帧之后,要通过帧转换之后向无线网络发送相应的数据帧.第三字节至第八字节是命令以及数据字节,他们的具体含义则是根据各个子网定义的.
(2)CAN总线的通信协议格式有4中不同的帧格式,包括远程帧、数据帧、超载帧以及错误帧.现以数据帧格式为例说明,[帧起始][仲裁场][控制场][数据场][循环冗余码校验场][应答场][帧结束].
(3)无线通信的协议格式:无线通信因距离不同有不同的协议格式,现在以近距离的无线通信协议格式为例,[头字节1][头字节2][包类型][头字节3][头字节4][源地址][目的地址][数据0]—[数据5][CRC校验].
(4)485通信协议的具体帧格式如下:[头字节1][头字节2][源地址][目的地址][六字节数据][检验和].头字节1是55H,头字节2是AAH.在485网络节点接收485数据帧之后,要判断前面两个字符,此时若头字节1与头字节2相匹配,就可以将数据放置485的接收缓冲区内,之后判断目的地是否和自己相符,若相符且检验无误,此时要根据源地址发给源节点一个应答帧.最终在根据帧数据字节意义进行相应的操作.
(5)RS-232的通信协议:和PC机之间采用异步通信协议进行通信,1个起始位、8个信息位、1个停止位和1个奇偶校验位,但是因为奇偶校验出错的概率较高,所以要同时运用检验和校验.
当前,数据通信在各行各业中都占据着重要的地位,为此CAN总线的通信技术也显得尤为重要.本文简单地分析了基于CAN总线的通信技术应用技术,以期为日后CAN总线在通信技术中广泛应用提供参考.
〔1〕韩党群.CAN控制器SJA1000及其应用[J].电子技术应用,2006,29(1):66-69.
〔2〕宋一扬,李金平.基于CAN总线技术的通信子系统研究[J].北方交通大学学报,2003,27(6):55-58.
〔3〕邬宽明.CAN总线远离和应用系统设计[M].北京:北京航空航天大学出版社,2004.