王丹
(西安航空职业技术学院 陕西 西安 710089)
随着车辆电子设备性能的不断更新和进步,汽车中的控制系统数量也在增加,而连接这些电子设备的导线也越来越多。这些粗大线束给汽车的空间造成了影响。为了减轻汽车重量,提高汽车的通讯控制系统,及时解决这些问题非常重要[1-2]。目前,多数汽车都有网络装置系统,但是因为电气种类比较多,关于网络速度的需求也是不同的,所以目前市场中的网络协议比较多。本文主要分析BOSCH公司开发的CAN网络协议,对汽车控制系统的网络输送率进行分析。
传统的接线方法一般是在ECU上直接进行点对点的连接,但是处于不同的数据频繁交换环境下,这种接线方式不仅会增加车内空间,同时也会因为线束过多,增加成本,影响其他线路信号。CAN可以实现对串行的多控制器进行分布式、实时的局域网络总线控制,具有很高的速率以及可靠性,对于车辆计算系统、电磁辐射等恶劣的环境下比较适合使用。主要特点表现:网络的节点达到110个,通信的速率距离是5 kbps/10 km~1Mbps/40m,每个节点都可以实现自动传输,一般是通过同轴电缆、双绞线、光纤等介质进行通信。还有其具有总线非破坏性竞争裁决功能,可以避免两个节点一同进行信息发送,系统会将优先级别比较低节点数据传输停止,实现优先级高的数据传输;CAN使用的是短帧结构,其结构受到的干扰性比较低,传输时间很短,具有很强的网络抗干扰功能[3-4]。如果节点出现错误,这时系统会自动切断与总线的联系,从而减少给系统的影响。数据传输的方式有一点对多点、点对点、多主方式、多点全局广播方式等,同时具有很高的CRC校验功能,可以在很大程度上减少数据的错误率,提高通信的稳定性。
CAN的数据帧是实现CAN总线上的数据链路层和物理层数据交换的数据结构,是属于技术规范内的帧定义结构,但是对接受和发送信息没有定义功能,这些需要用户按照系统规则进行数据以及数据接口的设定,及时赋予数据不同的帧位。用户可以直接通过通信软件,连接数据接口与CAN总线的通信协议,从而实现数据的传输。
CAN协议标准的数据帧格式是CAN2.0A,其扩展版是CAN2.0B;这两种模式的数据帧有7个组成部分。其中扩展版ID是29位,有5.12×108个不同的信息,标准的ID码有11位,存在2048个不同识别信息。
携带数据的数据帧是从发送器传输给接收器的帧,关于CAN总线标准格式的数据帧如表1所示。
关于数据帧的结构包括:
表1 CAN总线标准版格式数据帧
1)仲裁段:是由远程、11位标识符发送求程序(RTR)构成,而RTR的显位是数据帧,隐位是远程帧。标识符则是从高到低进行发送,其中总线访问和传送保温具有优先权,数据值小的优先权比较高,而ID0~ID4是不完全的隐性位;
2)数据段:构成部分是被发送数据,控制数目是0~8个字节,在第一个最高位字节是优先发送的;
3)起始位:具有同步作用,在总线空闲时发送,由1位显性位组成;
4)证实段:是由应答界定符、间隙应答符构成,总共有2位;
5)CRC段:是有学IE15位CRC(冗余循环码校验)、1个隐位界定符构成,对帧进行校验;
6)结束段:有隐性位7位构成,在这个期间没有位填充。
CAN总线协议在汽车控制系统中使用比较广泛,它是具有很大使用价值的控制局域网络总线。
关于汽车控制系统中的最小系统节点原理框架图如图1所示。
图1 最小系统节点原理框架图
该节点系统上核心部分是SJA1000控制器和80C196KC微控制器。其中,82C250是作为CAN总线上的收发器,它的作用就是将物理总线和CAN器件进行连接。SJA1000一般是在工业和汽车环境中作为高集成的局域网(CAN)独立控制器,它可以实现高性能的网络通信的各种需求,从而实现数据链路系统和物理系统的功能[5-6]。
CAN总线协议是存在优先节点占用总线的功能,这样是为了避免过多的节点占线影响重要数据的传输,CAN控制器是通过识别大小标识码来判断总线情况,它也是一种非破坏性的协议仲裁总线。在具有不同格式且标识码相同的总线上,信息的传送具有标准格式帧优于扩展格式帧的规则。
根据CAN总线相关协议,在网络数据传输时,需要网络通过标识码来制定信息的优先级[7-8]。见表2中使用扩展方式的CAN总线协议下汽车控制系统的ID帧定义。假如某个节点上的CPU想要给另外一个节点或是多个节点发送信息,需要将这些标识码和待发信息给CAN总控制器发送过去,CAN总线控制器负责整理和发送信息。这时某个节点会获得CAN总线控制器给予的总线控制权,而网络其他节点就会收到该节点发送的信息,同时完成检验信息的功能,并建立收到的信息和节点之间的关系,再进行处理。
DA是CAN总线的接收数据包的地址。PF属于数据类的代码,而PS则是扩展型的数据类或是目标地址,如果PS的目标是DA地址(DA=255广播时的信息),这时PS则是数据类的扩展码。SA是CAN总线发送数据包的地址。CAN的数据包使用ID28-26作为优先级,其值越小表示有越高的优先级。在ID帧中的DA、PS、PF取值是选择 CAN数据包中的DA、PF、PS值。
关于数据接受步骤如下:
1)子程序进入查询状态;
2)判断是否有故障,如果没有直接进行下一步,如果有返回到开始部分;
3)没有故障需要通过SJA1000读取CPU中的数据;
4)之后从接受数据中找出时标序号、PGN、源地址;
5)然后判断这些信息是该节点需要反应的指令吗?如果不是,将不正常相应的信息发送到开始程序,如果是,就将信息发送出去;
6)之后根据信息完成各种相应命令,结束。
在该接受流程中,PGN是PS和PF的组合,它是根据不同的物理意义将信息按照不同的规则转为代码,作为CAN数据包类型、意义的指定。
关于汽车控制系统中的CAN通信流程如下:
1)初始化SJA1000:将验收码、发送错误、设置控制、输出、发送错误、接收屏蔽、总线定时等寄存器都进入到工作的状态;
2)发送命令:给目标节点地址发送相应的命令;
3)发送广播的数据:从制定的地址处得到相应数量的广播数据并发送;
4)发送数据:分析CAN总线是否处于给目标节点地址发送数据要求,比如:工作状态、时间、工作信息等;
5)接收命令:提取命令码,之后分析并完成执行操作,比如:查询、系统自检等;
6)接收数据:通过CAN读取接收的数据,长度控制在0~8,之后将这些数据保存在单片机缓冲位置,之后再释放接收数据的缓冲区。
表2 车辆控制系统的ID帧定义
7)复位节点:将节点复位,并设置寄存器。
本文将该系统在实车和台架上进行了实验,证明了这个系统具有很大的可靠性及正确性。本文主要是对CAN的帧格式、结构特点、数据交换的运作原理进行分析,同时分析了汽车控制系统中小系统节点的构建以及电原理,还有CAN通信协议的具体实现流程,经过验证,该设计系统具有很强的实用性。