本帖最后由 xsfh365 于 2014-12-6 20:51 编辑
在CAN系统中,系统的实时性影响的因素主要有两种:一是网络的延时;二是总线的通讯速率。因此,在构建网络时必须对于两个参数进行确定。当总线的通讯速率较快时,报文传输的时间相对较短。但是,较高的通讯速率会导致传输距离缩短。因此这两个参数的确定必须考虑整个网络的范围。
1、网络延时
由于在串行总线系统中所有的节点共用总线介质,因此分布式系统的控制通常会因为信息的传输而导致额外的延迟时间。对于带有确定性总线访问的通信系统,有效的延迟时间是由最大令牌环延迟(令牌传递系统)或周期时间(主-从系统)决定的。尽管CAN总线是基于分散的、随机的总线访问方式(因为CAN总线的无损仲裁以及多主的特性),但是它可以保证与确定性总线访问的系统具有同等的实时性。限制高优先级报文连续访问总线的一个简单方法是在一个适当的指定时间间隔(“最小禁止时间”)之后,只允许继续传输同一个报文。在这段时间间隔内可以传输低优先级的报文。
在实际应用中,限制了保证最小反应时间的报文数量。CAN系统中所有报文的数量可以分成高优先级报文和低优先级报文数。对于高优先级报文,使用额外的机制确保它们只能在指定的“禁止时间间隔”之后重新占用总线。这样虽然不会影响高优先级报文的最大延迟时间,但是会降低高优先级报文的传输速率。
下面举例说明对CAN系统的最大可能响应时间的估计,该时间是在最坏情况下一个报文的最大可能延迟时间。最坏的情况是所有高优先级报文都打算同时进行传输数据。
假设一组16个高优先级报文,每个报文包含2个数据字节,则由图3-2可知:每个报文的帧长度为:64+8*2=80位。
图 3-2 扩展数据帧示意图
当通讯波特率为1Mbit/s时,传输一个bit用时1 us,则每个报文的传输时间为80us。传输所有16个高优先级报文需要80us *16=1.28ms。
只有在高优先级报文的总线平均负载非常高的系统中,才需要考虑增加低优先级报文传输的额外窗口时间。1.5ms的禁止时间比较合适。在该假设的例子中,系统确保所有16个高优先级报文的延迟时间小于1.5ms,并保留一个额外的窗口时间用于传输低优先级报文。实际上,只有在所有高优先级报文同时进行传输时,高优先级报文组中最低优先级的报文才会产生此最大延迟时间。
图 3-3 对CAN报文最大延迟时间的估计
注意:在讨论不同总线概念的实时性时,应当注意到CAN协议中特别短的错误恢复时间,在以上的讨论中并没有考虑传输中可能存在的错误帧。
2、CAN网络通讯速率选择
由于一个报文的最大可能延迟时间是由比其优先级高的所有报文的整个传输时间决定的,因此系统所需要的通信速率通常由所需要的延迟时间来决定。虽然CAN协议允许的最大数据传输速率为1Mbit/s,但明智的做法是根据延迟时间的要求来确定所需的数据速率。因为高的数据速率对节点有更高要求,并且会导致数据传输容易受到电磁干扰的影响。另外,还必须根据最大的网络范围来限制可用的数据传输速率。这是因为:如果网络所要求的通讯距离越长,网络中所能够采用的通讯速率就越低。
对于网络中的数据传输速率的选择是由系统所要求的实时性决定的。下面的例子说明了如何根据系统的实时性选择通讯速率。在示例中为一个具有32个节点的分布式控制系统,网络的最大长度为60m。该系统中每个节点具有以下的功能,如表3-1所示:
表3-1 节点功能描述
IO类型 数据长度(byte)
数字量输入 2
数字量输出 2
模拟量输入 8
假设系统要求所有的数字量输入的最大延迟时间应小于5ms。因此最坏的情况下,意味着所有的数字量输入必须在5ms内传输。对于一个包括2个字节的数字量输入报文,最坏情况下需要80个位时间。如果32个I/O节点同时发送各自的数字量输入状态,那么总共需要传输80*32=2560个位时间。为了保证在5ms内完成传送,每个位时间tbit必须满足:
如果选用500kbps的通讯速率,位时间为2us,所以系统的传输速率不满足要求,需要选择更高的通讯波特率,例如800kbps,其传输一位时间是1.25 us。
对于网络数据传输速率的选择,还必须考虑整个网络范围。例如上例中该网络的最大长度为60m,则系统的通讯速率为800kbps,完全符合网络的长度要求。
但是如果网络的最大通讯距离为160m,则必须重新规划网络。例如保证800kbps的通讯速率,通过增加CAN中继器的手段来保证网络最大传输距离,但此时中继器的延时对于系统的实时性又不可避免的有所影响。
对于该系统网络上总线负载的估计,假设示例中的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%。
推荐CAN总线学习书籍及学习板:
1、《CAN总线嵌入式开发——从入门到实战》, 牛跃听 周立功等编著,
北京航空航天大学出版社,2012-1-1,ISBN9787512406919
该书的当当网网址:
//product.dangdang.com/22609565.html?_ddclickunion=P-233673|ad_type=0|sys_id=1#dd_refer=http%3A%2F%2Fwww.youlu.net%2F2896170
2、《CAN总线应用层协议实例解析》, 牛跃听 周立功等编著,北京航空航天大学出版社,2014,ISBN9787512415652
该书的当当网网址:
//product.dangdang.com/23563337.html#ddclick?act=click&pos=23563337_13_1_p&cat=01.54.07.04.00.00&key=&qinfo=&pinfo=675_1_60&minfo=&ninfo=&custid=&permid=20140510171701383317392368902546248&ref=&rcount=&type=&t=1414220864000
3、书中学习板淘宝网网址:
//shop35312684.taobao.com/shop/view_shop.htm?tracelog=twddp
|