如何选择合适的can总线波特率
1、由于在串行总线系统中所有的节点共用总线介质,因此分布式系统的控制通常会因为信息的传输而导致额外的延迟时间。对于带有确定性总线访问的通信系统,有效的延迟时间是由最大令牌环延迟(令牌传递系统)或周期时间(主-从系统)决定的。尽管CAN总线是基于分散的、随机的总线访问方式(因为CAN总线的无损仲裁以及多主的特性),但是它可以保证与确定性总线访问的系统具有同等的实时性。限制高优先级报文连续访问总线的一个简单方法是在一个适当的指定时间间隔(“最小禁止时间”)之后,只允许继续传输同一个报文。在这段时间间隔内可以传输低优先级的报文。


2、在实际应用中,限制了保证最小反应时间的报文数量。CAN系统中所有报文的数量可以分成高优先级报文和低优先级报文数。对于高优先级报文,使用额外的机制确保它们只能在指定的“禁止时间间隔”之后重新占用总线。这样虽然不会影响高优先级报文的最大延迟时间,但是会降低高优先级报文的传输速率。

3、假设一组16个高优先级报文,每个报文包含2个数据字节,则由图3-2可知:每个报文的帧长度为:64+8*2=80位。当通讯波特率为1Mbit/s时,传输一个bit用时1 us,则每个报文的传输时间为80us。传输所有16个高优先级报文需要80us *16=1.28ms。

4、只有在高优先级报文的总线平均负载非常高的系统中,才需要考虑增加低优先级报文传输的额外窗口时间。1.5ms的禁止时间比较合适。在该假设的例子中,系统确保所有16个高优先级报文的延迟时间小于1.5ms,并保留一个额外的窗口时间用于传输低优先级报文。实际上,只有在所有高优先级报文同时进行传输时,高优先级报文组中最低优先级的报文才会产生此最大延迟时间。

1、由于一个报文的最大可能延迟时间是由比其优先级高的所有报文的整个传输时间决定的,因此系统所需要的通信速率通常由所需要的延迟时间来决定。虽然CAN协议允许的最大数据传输速率为1Mbit/s,但明智的做法是根据延迟时间的要求来确定所需的数据速率。因为高的数据速率对节点有更高要求,并且会导致数据传输容易受到电磁干扰的影响。另外,还必须根据最大的网络范围来限制可用的数据传输速率。这是因为:如果网络所要求的通讯距离越长,网络中所能够采用的通讯速率就越低。

2、对于网络中的数据传输速率的选择是由系统所要求的实时性决定的。下面的例子说明了如何根据系统的实时性选择通讯速率。在示例中为一个具有32个节点的分布式控制系统,网络的最大长度为60m。该系统中每个节点具有以下的功能,如表3-1所示:


3、假设系统要求所有的数字量输入的最大延迟时间应小于5ms。因此最坏的情况下,意味着所有的数字量输入必须在5ms内传输。对于一个包括2个字节的数字量输入报文,最坏情况下需要80个位时间。如果32个I/O节点同时发送各自的数字量输入状态,那么总共需要传输80*32=2560个位时间。为了保证在5ms内完成传送,每个位时间tbit必须满足:


4、如果选用500kbps的通讯速率,位时间为2us,所以系统的传输速率不满足要求,需要选择更高的通讯波特率,例如800kbps,其传输一位时间是1.25 us。

5、对于网络数据传输速率的选择,还必须考虑整个网络范围。例如上例中该网络的最大长度为60m,则系统的通讯速率为800kbps,完全符合网络的长度要求。但是如果网络的最大通讯距离为160m,则必须重新规划网络。例如保证800kbps的通讯速率,通过增加CAN中继器的手段来保证网络最大传输距离,但此时中继器的延时对于系统的实时性又不可避免的有所影响。

6、对于该系统网络上总线负载的估计,假设示例中的CAN系统每个节点100ms发送一次:
数字量输入报文传送占用时间:32×(64+8×2)位×1.25us = 3.2ms
数字量输出报文传送占用时间:32×(64+8×2)位×1.25us = 3.2ms
模拟量输入报文传送占用时间:32×(64+8×8)位×1.25us = 5.12ms
那么在最坏情况下总线大约被占用3.2 ms +3.2 ms +5.12 ms =11.52ms。对应的平均总线负载为:
11.52ms /100ms=11.52%
在构建CAN总线网络时,应该将系统的总线负载控制在合理的范围内,在一般应用中,建议CAN网络的平均负载不能够大于60%。
