韩静
摘 要:“CAN总线技术”是高职院校汽车类专业的一门核心课程,涉及汽車、电子、通信等综合知识。经调研,目前市面上的汽车“CAN总线技术”教材存在原理深奥、难懂、难教、难学的问题。为此,文章对“CAN总线技术”原理进行深入研究,对其重难点进行剖析,并提出教材改进建议,以使读者轻松掌握其原理和故障诊断技巧,提高教材的使用效果。
关键词:CAN总线;原理分析;故障诊断;教材改进
“CAN总线技术”(CAN,Controller Area Network,控制器局域网络)是高职院校汽车智能技术、汽车电子技术、汽车检测与维修技术等专业的核心课程,该课程涉及了汽车构造、电子信息、通信原理等综合知识。经过调研,目前汽车“CAN总线技术”教材在其原理分析时大量采用了电子、通信领域中的专业术语,从而导致汽车专业师生感觉“CAN总线技术”原理难懂、难教、难学,甚至望而却步。基于现实,对“CAN总线技术”原理进行了深入研究,对其中的重难点进行详细分析,并提出教材改进建议,以便提高教材的使用效果。
1 “CAN总线技术”原理重难点分析
1.1 CAN总线的网络结构和数据传输流程
CAN总线的网络结构如图1所示,一般将实现特定功能的模块作为CAN总线的一个节点,节点1向节点n传输数据的流程如下。
节点1的微控制器1对传感器1进行数据采集,然后将传感器1对应的数字信号附加一个数据ID号(类似于包裹单号)发送给CAN控制器1,CAN控制器1对数据进行打包,然后将数据包发送给CAN收发器1,CAN收发器1再将数字信号转换为对应的CAN总线电压信号;当节点n从CAN总线上接收到电压信号后,首先由CAN收发器n将总线电压信号转换为对应的数字信号,然后将其数字信号发送给CAN控制器n,CAN控制器n首先对其收到的数据进行验收滤波,判断收到的信号是否是自身节点需要的数据,若是,则接受此数据并对其进行解包,为节点n的微控制器n提供有效数据(节点1的传感器信号),微控制器n可根据节点1的传感器信号控制执行器n动作;否则,节点n放弃此次收到的CAN数据。
很明显地,上述流程与生活中的寄信、收信流程相似,因此,教材中可以给出“类比法”的提示,以便读者快速理解其原理。
1.2 CAN总线的仲裁机制分析
如果CAN总线上的多个节点同时向总线上发送数据时,多个数据就会在总线上出现“撞车”的现象,这就像生活中很多人在一起讨论问题,如果几个人同时讲话,就会乱套,此时需要进行仲裁,决定哪个人先讲,哪个人后讲。CAN总线的仲裁是基于数据优先级的竞争机制,从以下两个方面进行说明[1]。
(1)CAN总线的多个节点同时向总线上发送数据时,总线上的结果是多个数据的“逻辑与”值。例如,节点A向总线上发送数字信号0,而节点B向总线上发送数字信号1,则总线上的结果是0和1的“逻辑与”值0。可见,同时向总线上发送0和1时,0被显示出来,称为“显性位”,而1被隐蔽掉,称为“隐性位”;另外,也说明0的优先级比1的优先级高,正因如此,CAN总线利用“数据ID”来标识数据的优先级:数据ID号越小,数据的优先级越高;反之,数据的优先级越低。
(2)CAN收发器具有“边说边听”功能,即节点向CAN总线上发送数据时,同时也能监听到总线上的数据。
CAN总线采用的就是“边说边听”的非破坏性仲裁机制:每个节点在发送数据时,首先发送数据ID号,在发送数据ID号的过程中,逐位“边说边听”,当节点向总线上发送的数据和从总线上监听到的数据一致时,节点可以继续向总线发送数据,否则,节点停止向总线发送数据,而自动转变为“听众”。例如某个节点向总线上发送的是数字信号1,而从总线上监听到的是数字信号0,说明总线上有其他节点在发送更高优先级的数据,该节点即停止发送;待高优先级的数据发送完成后,低优先级的数据自动重发。
现以图2所示的汽车动力CAN总线上3个电控单元节点同时向CAN总线上发送数据为例,进一步说明CAN总线的仲裁机制,3个节点首先向总线发送各自的数据ID号,以便进行优先级竞争。
开始时刻,3个节点同时向总线发送数字信号0,总线上是这3个数字信号0的“逻辑与”值0,因此,3个节点向总线上说的话和从总线上听到的话一致,它们都可以继续向总线发送数据。
下一时刻,ABS、发动机两个节点都向总线发送数字信号0,而自动变速箱节点向总线发送数字信号1,此时总线上是这3个数字信号的“逻辑与”值0,因此,ABS、发动机两个节点向总线上说的话和从总线上听到的话一致,它们都可以继续向总线发送数据,而自动变速箱节点向总线上说的话和从总线上听到的话不一致,即停止向总线发送数据,转为听众。
下一时刻,ABS节点向总线发送数字信号0,而发动机节点向总线发送数字信号1,此时总线上是这两个数字信号的“逻辑与”值0,因此,ABS节点向总线上说的话和从总线上听到的话一致,可以继续向总线发送数据,而发动机节点向总线上说的话和从总线上听到的话不一致,即停止向总线发送数据,转为听众。
下一时刻,ABS节点向总线发送数字信号1,此时,由于ABS节点独占总线而使总线上的信号也是1,因此,ABS节点向总线上说的话和从总线上听到的话一致,可以继续向总线发送数据。
至此,3个节点通过数据ID号进行优先级竞争的结果是ABS节点首先获得总线使用权,将其数据发送至CAN总线;待ABS节点将其数据发送完毕后,系统会自动使发动机节点、自动变速箱节点继续通过数据ID号进行优先级竞争总线的使用权而发送数据。可见,在CAN总线仲裁过程中,不会出现不同优先级数据之间的相互破坏,这就是所谓的“非破坏性仲裁”[2]。
1.3 CAN总线的验收滤波原理
每个节点的CAN控制器中都有两个寄存器:验收代码寄存器和验收屏蔽寄存器。当某节点的验收屏蔽寄存器设置为“有关”时,则该节点只能接受数据ID号与自身验收代码寄存器内容完全相同的数据;当某节点的验收屏蔽寄存器设置为“无关”时,则该节点“来者不拒”,可接受数据ID号为任意值的数据,这就是所谓的CAN验收滤波原理。借助验收滤波功能,可以灵活实现CAN总线的“点对点”“一点对多点(广播)”的数据通信方式。例如,汽车驾驶员侧的中央玻璃升降开关,可以分别控制4个车门的玻璃升降电机,属于“点对点”通信方式;而中控门锁开关,可以同时控制4个车门的闭锁器,属于“一点对多点(广播)”通信方式。
1.4 CAN总线中H和L的本质含义及应用
在汽车CAN总线故障检修中,常借助示波器检测CAN波形进行CAN线路故障诊断,但实践证明,对汽车维修工而言,很难区分波形中的CAN-H和CAN-L。究其原因,现在的汽车CAN总线教材基本都是提示读者牢牢记住CAN总线的正常电压值,以此为参考去判断CAN线路故障,但现实情况是很多维修工不容易记住CAN总线的电压值,这就增加了他们对CAN总线的故障诊断难度。
为了解决上述问题,在此建议教材中给出CAN-H和CAN-L中“H”和“L”的本质含义。“H”和“L”代表的不是“高”和“低”的电压值,而代表的是CAN波形在空闲状态基础上跳动的方向,“H”代表“向上”跳动,“L”代表“向下”跳动。例如,在图3所示的CAN波形中,上面的波形是在空闲状态基础上向上跳动,因此为CAN-H的波形;而下面的波形是在空闲状态基础上向下跳动,因此为CAN-L的波形[3-4]。
2 结语
本文针对汽车“CAN总线技术”原理深奥、难懂、难教、难学的问题,对“CAN总线技术”原理中的重难点进行了剖析。建议汽车“CAN总线技术”教材灵活利用“类比法”“拟人法”等通俗易懂的方式描述“CAN总线技术”原理,以降低其教学难度和学习难度,提高教材的使用效果。
[参考文献]
[1]王宜怀.嵌入式技术基础与实践[M].北京:清华大学出版社,2017.
[2]饶运涛.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2007.
[3]龙超.汽车CAN总线技术及其检测维修探讨[J].中国设备工程,2018(19):129-130.
[4]韦志魁,韩小伟.汽车总线技术分析[J].内燃机与配件,2018(9):89-90.