每个节点的内部程序决定了何时需要通过总线发送数据,消息有固定的格式。如图2所示,CAN消息由起始位SOF、ID域、control域等字段组成。其中的ID域代表了消息的优先级,在有总线竞争的时候,根据按位仲裁原理,ID小的优先级高,消息被优先发送。图3是仲裁的一个例子,假设在某一时刻,三个节点同时往外发消息,每个节点发送的消息ID(二进制格式)分别为:ID1=11001101010,ID2=11001011011,ID3=11001011001。每个节点都以发送SOF位开始,然后逐位发送ID域。不发送消息的节点,监听到SOF位后自动转为接收节点。发送节点之间的仲裁发生在ID发送的过程,发送过程中发送节点同时在监听总线上的信号,只要发送信号与监听到的信号一致,发送过程将继续,否则停止。如图所示,节点1在第6位上发送的是隐性信号,但是总线上的信号是显性信号。节点1停止发送,转为接收节点。在第10位的时候,节点2发送隐性信号,但是总线是显性信号,所以节点2又停止发送,转为接收节点。至此仲裁结束,节点3仲裁胜利,继续发送消息余下的数据位。
从这个过程可以看出,由于消息ID3优先级高,所以优先发送。ID1和ID2均需要等待下次仲裁决定是否发送。也就是说每次仲裁的结果是有的消息的发送要被延迟。
另外,CAN协议规定,消息没有发送完毕不会释放总线。因此有低优先级的消息在发送的时候,高优先级的消息也会被延迟。
延迟也是影响CAN通信性能的主要问题,如果消息延迟时间过长,将影响接收节点的功能,严重的还可能造成事故。因此CAN协议设计的重要内容之一是控制消息的延迟时间在合理水平。
而消息优先级和周期是设计中影响延迟的主要因素,合理分配ID和确定消息的周期可以对延迟进行有效控制,因此CAN协议设计的一个主要内容就是如何合理分配消息ID和确定消息的周期。创建消息也是重要的内容之一,但是对延迟的影响相对较小。
CAN协议的系统工程设计方法通过对通信中的时间进行量化,依据量化结果分析功能之间的交互关系,从而进一步创建消息、分配消息ID和确定其周期。
CAN协议系统工程设计方法
系统工程设计方法与试错法的本质区别是采用了量化的体系获取通信过程中的时间要求。图4显示的是通信的时间要求。TP是事件发生到数据准备好发送给驱动程序之间的时间间隔,TB是数据被组建成消息并准备发送到总线上之间的时间间隔,TT是实际的传输时间,TA是消息接收完毕到数据能被应用程序使用之间的时间间隔,TS是数据可以使用到实际使用之间的时间间隔。整个通信过程必须要在规定时间内完成,而这个时间就是maximum age.这个时间标志了数据发送的实时性,只要数据在这个时间范围内送到接收节点,接收节点的功能将得到实时的执行。