以发动机转速信息的传输过程为例,介绍CAN总线上的数据传输过程。从发动机转速信号获取、接收、传输,直到在发动机转速表上显示出来,从这一完整的数据传输过程中,可以清楚地看出数据传输的时间顺序以及CAN构件与控制单元之间的配合关系。
1.信息格式的转换
首先是发动机控制单元的传感器接收到发动机转速信息(转速值)。该值以固定的周期(循环往复地)到达微控制器的输入存储器内。
由于瞬时转速值不仅用于发动机运转控制、变速器换档控制,还用于其他控制单元(如组合仪表),故该值通过CAN总线来传输,以实现信息共享。于是转速值就被复制到发动机控制单元的发送存储器内。该信息从发送存储器进入CAN构件的发送邮箱内。
如果发送邮箱内有一个发动机转速实时值,那么该值会由发送特征位显示出来。将发送任务委托给CAN构件,发动机控制单元就完成数据传输任务。
如图2-17所示,发动机转速值按协议被转换成标准的CAN信息格式。
在本例中,状态区(标识符)=发动机_1,数据区(信息内容)=发动机转速值(即发动机转速为×××r/min)。当然,CAN总线上传输的数据也可以是其他信息(如节气门开度、冷却液温度、发动机转矩等),具体内容取决于系统软件的设定。
图2-17 发动机转速值按协议被转换成标准的CAN信息格式
2.请求发送信息——总线状态查询
如果发送邮箱内有一个发动机转速实时值,那么该值会由发送特征位显示出来——请求发送信息,相当于学生举手向老师示意,申请发言。
只有总线处于空闲状态时,控制单元才能向总线发送信息。如图2-18所示,CAN构件通过RX线来检查总线是否有源(是否正在交换其他信息),必要时会等待,直至总线空闲下来为止。
如果在某一时间段内,总线电平一直为1(总线一直处于无源状态),则说明总线处于空闲状态。
图2-18 总线状态查询
3.发送信息
如图2-19所示,如果总线空闲下来,发动机信息就会被发送出去。
4.接收过程
如图2-20所示,连接在CAN总线上的所有控制单元都接收发动机控制单元发送的信息,该信息通过RX线到达CAN构件各自的接收区。
接收过程分两步,首先检查信息是否正确(在监控层),然后检查信息是否可用(在接收层)。
(1)检查信息是否正确(在监控层) 接收器接收发动机的所有信息,并且在相应的监控层检查这些信息是否正确。这样就可以识别出在某种情况下某一控制单元上出现的局部故障。按照CAN总线的信息广播原理,连接在CAN总线上的所有控制单元都接收发动机控制单元发送的信息。数据传输是否正确,可以通过监控层内的CRC校验和数来进行校验。CRC校验即为循环冗余码校验(Cycling Redundancy Check,CRC)。
图2-19 信息发送过程
图2-20 信息接收过程
在发送每个信息时,所有数据位会产生并传递一个16位的校验和数,接收器按同样的规则从所有已经接收到的数据位中计算出校验和数,随后系统将接收到的校验和数与计算出的实际校验和数进行比较。如果两个校验和数相等,确认无数据传输错误,那么连接在CAN总线上的所有控制单元都会给发射器一个确认回答(亦称应答,见图2-21),这个回答就是所谓的“信息收到符号”(acknowledge,Ack),它位于校验和数之后。(www.daowen.com)
图2-21 确认信息已经接收
如图2-22所示,经监控层监控、确认无误后,已接收到的正确信息会到达相关CAN构件的接收区。
(2)检查信息是否可用(在接收层) CAN构件的接收层判断该信息是否可用。如果该信息对本控制单元来说是有用的,则举起接收旗,予以放行(图2-23),该信息就会进入相应的接收邮箱;如果该信息对本控制单元来说是无用的,则可以拒绝接收。
图2-22 监控层对信息进行监控
图2-23 接收层判断信息是否可用
在图2-20中,连接在CAN总线上的组合仪表根据升起的“接收旗”就会知道,现在有一个信息(发动机转速)在排队等待处理。组合仪表调出该信息并将相应的值复制到它的输入存储器内。通过CAN总线进行的数据传输(发送和接收信息)过程至此结束。
在组合仪表内部,发动机转速信息经微控制器处理后到达执行元件并最后到达发动机转速表,显示出发动机转速的具体数值。
上述数据传输过程按设定好的循环时间(如10ms)在CAN总线上周而复始地重复进行。
5.冲突仲裁
如果多个控制单元同时发送信息,那么数据总线上就必然会发生数据冲突。为了避免发生这种情况,CAN总线具有冲突仲裁机制。按照信息的重要程度分配优先权,紧急的信息(如事关汽车被动安全、汽车稳定性控制的信息)优先权高,不是特别紧急的信息(如车窗玻璃升降、车门锁止等)优先权低,确保优先权高的信息能够优先发送。
1)每个控制单元在发送信息时通过发送标识符来标识信息类别,信息优先权包含在标识符中。
2)所有控制单元都通过各自的RX线来跟踪总线上的一举一动并获知总线状态。
3)每个控制单元的发射器都将TX线和RX线的状态一位一位地进行比较(它们可以不一致)。
4)数据传输总线的调整规则:用标识符中位于前部的“0”的个数代表信息的重要程度,“0”的位数越多越优先,从而保证按重要程度的顺序来发送信息。越早出现“1”的控制单元,越早退出发送状态而转为接收状态。基于安全考虑,涉及安全系统的数据优先发送。
例如,由ABS/EDL电控单元提供的数据比自动变速器控制单元提供的数据(驾驶舒适)更重要,因此具有优先权。数据列的状态域是由11位组成的编码,其数据的组合形式决定了数据的优先权,如图2-24所示。3个控制单元同时发送数据列,此时,在CAN-BUS数据传输线上进行一位一位的比较,如果1个控制单元发送了1个低电位而检测到1个高电位,那么该控制单元就停止发送数据列而转为接收器。
图2-24 优先权判定举例
表2-8是3组不同数据列的优先权。例如,如图2-25所示,在数据列的状态域位1,ABS/EDL控制单元发送了1个高电位,发动机控制单元也发送了1个高电位,自动变速器控制单元发送了1个低电位而检测到1个高电位,那么自动变速器控制单元将失去优先权而转为接收器。在数据列的状态域位2,ABS/EDL控制单元发送了1个高电位,发动机控制单元发送了1个低电位并检测到1个高电位,那么,发动机控制单元也失去优先权而转为接收器。在数据列的状态域位3,ABS/EDL控制单元拥有最高优先权并接收分配的数据,该优先权保证其持续发送数据直至发送终了,ABS/EDL控制单元结束发送数据后,其他控制单元再发送各自的数据。
表2-8 3组不同数据列的优先权
图2-25 数据列优先权的判定
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。