首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
探讨CAN总线的抗千扰能力
来源:本站整理  作者:佚名  2009-01-15 14:06:36



2.2 帧编码与解码
    关于CAN总线的帧已有大量文献介绍,这里不再赘述。FlexRay总线则复杂得多,其中对用户安排带宽起关键作用的是扩展字节的概念。根据FlexRay总线数据链路层3.2.1.1.3的规定,每一个字节开始处要有一个由“1”和“O”组成的字节开始序列(Byte Start Sequence,BSS),然后才是要传送的8位数据。FlexRay容许的最大时钟变化cClockDeviationMax为1 500×10-6(0.15%),因此收发之间可能差O.3%,每333次就可能差1次采样。如前所述,1位要采样8次,那么不到44位就会差1次采样,因此除了时钟本身的偏移与速率要校正外,FlexRay中也有位同步的机制。
    位同步有2个条件:同步机制已使能;zVotedVal由高到低的跳变。正常传送时,同步机制的使能发生在BSS的zVotedVal为高时。当同步时,将保存zVotedVal的cSamplesPerBit位循环计数器置2;当循环计数器计数为cStrobeOffset(=5)时,将该zVotedVal取作真正送到协议其他部分的位置。考虑到实现位同步必须有BSS这个因素,一个FlexRay信道即使不算其他开销,至多只能传送8Mbps的实际数据;再加上其他的开销,例如发送帧之间的间隔cChannelIdleDelimiter(=11位)等,有效的负载更小。
2.3 回 读
    CAN总线发送节点能够在送出1位时又把它从总线上读回来,其他总线没有这个功能。这个功能提供了无损位仲裁的基础,让优先级高的消息获得在总线上继续传送的权力;同时,增强了发送节点早一点检测出错误的能力,一旦有错就可发送报错帧并停止原来帧的传送,节省了出错后无用部分的继续传送带宽。
2.4 错误约束
    CAN总线对错误的检测主要是编码与解码的过程,例如bit错、填充错、ACK错、CRC错和格式错。对于时间同步,并未将其视为重要问题。例如当重同步误差大于重同步跳跃宽度时,肯定会出现位同步的失败,造成数据传送的错误。这种错误会被误认为是由其他原因引起,而不能及时发现。有时候它也成为Babbling idiot失效的原因。CAN总线对瞬态故障与永久性故障采用分类的约束办法。有错时收发错计数器增加快,正常时收发错计数器减少慢,按收发错计数器的值把节点分为主动报错状态、消极报错状态和离线状态。处于消极报错状态的节点有可能无法正确接收到帧。出错过于频繁时把有永久性故障倾向的节点从总线上切除,虽然被切除的节点失去了通信能力,但其他节点间的通信可能免除了骚扰,这不失为一种有效的故障时性能逐步退化的策略(scalable degra—dation)。
    FlexRay总线的检错包括解码过程中的错以及时间同步过程中的错,例如数据帧接收时是否有格式错、CRC错,符号(symbol)传送时高、低的时间长度是否在范围内。由于是时间触发协议,通过各分散的节点预定发送时间与实际发送时间的差进行修正,建立同步时基,对发送时间的超限要求更严。它对时间同步中产生的问题也采取了一种逐步退化的策略。它有一个协议运行控制的机制(POC),POC有3个状态,为POC:normal active(积极),POC:norreal passive(消极)和POC:haIt(停止)。其中,积极状态下,同步处于容许界限内,不会破坏其他节点的同步;消极状态下,同步已恶化到不能再发送的地步,若再发送就有可能超出它的窗口而与其他节点冲突,但它容许接收,以取得足够的同步重返积极状态。在自检或完好性检查(sanity check)未通过,或POC与其他核心机制发现严重错,或host检查到错误给出命令的情况下,POC会进入停止状态,此时只有重新初始化了。
    从上面的简述可见,在保证所有节点数据的一致性上,二者都是要靠其他措施的,而这些可能的措施(例如组籍算法,membership algorithm)都有待讨论,对错误的约束仅限于逐步退化的策略。
2.5 帧出错率
    总线传送中的出错来源于各种干扰,除了前面分析的信号电平、采样过程、共模电压以外,来自电源的传导干扰也可能使通信控制器工作异常而通信失效,所以不能仅以物理层的一些指标作完整的判断。帧的出错概率对应用有很大影响,它涉及出错以后该怎么办的问题。帧的出错概率与帧长成比例关系,CAN2.0A的最大帧长为133位,FlexRay的最大帧长为2 625位(254字节数据+8字节开销+5个起始/停止位,这里1字节=10位)。假设二者的误码率相同,那么FlexRay的帧出错率PF约为CAN(Pc)的20倍。虽然FlexRay帧可传送的数据多得多,但是一个帧错了,其中的消息便全部不能利用,这种消息捆绑在一起的特性,大大增加了出错的机会。如果将FlexRay像CAN那样传送短帧,那么帧的效率会比CAN还低,存放静态段调度表的硬件部分更大。如果将来由于ECU内处理器更强大,一个节点发送的消息更多,那么这种长帧有用途,但是出错概率的增大仍是缺点。另外,用长帧传短消息涉及消息在帧内的编排方法,这种灵活性必然要求有高级通信层的统一约束,否则会带来修理、供货、管理上的不便与成本的增加。这可能是漫长的路,在统一之前仍然是各汽车厂专用的封闭的高层协议,几乎没有留给外人插足的空间。

3 与FlexRay总线的比较
3.1 单信道应用

    出错自动重发是CAN总线的一大特点。FlexRay协议的网络拓扑结构包括总线方式,但是用2个信道还是1个与性能和成本关系很大。FlexRay的设计是用2个信道同时传送来保证传送的正确性,因为它不像CAN有出错重发的功能。2个通道同时出错的概率比较小,不考虑出错重发时丢帧也不多。如果考虑2个信道同时出错而要求重发,则必须在应用层处理,而在动态时隙中传送请求与重发,不是一件容易的事,也推迟了送达时间。如果FlexRay只用一个信道来完成,出错概率较大,为了简化应用可以采用重复传送的方法(即时间冗余),在2次或多次传送中只要有1次成功便可。但是这样做相当于把FlexRay的带宽降了下来,例如减为1/2或1/3。这并不意味着2个信道时吞吐量仅为10 Mbps或更小,因为可以在其中一个信道安排较多的动态段,用于出错消息的重发请求与重发,即仅传送出错的部分。
3.2 安全攸关应用的额外要求
   
对FlexRay这样的时间触发通信协议,其错误约束机制中已尽量考虑了各种可能的出错情况,防止一个节点的发送超出预定给它的时间窗口。为了提高防错的能力,另外设计了总线监守。总线监守有自己的时钟线路和与节点发送的调度表,它控制该节点的总线驱动器,仅在容许的时间窗口里让总线驱动器工作。这种机制给防止冲突构成了双保险,但是增加了系统的成本,所以把它作为选件。在FlexRay中有2种总线监守:一种是本地总线监守,即与节点靠近的地方,甚至是可以做在同一硅片上的总线监守;另一种是远方的星型耦合器中的集中式总线监守。在总线式应用中有关的是本地总线监守。虽然总线监守要做的事少一些,但是它也要有时间同步的相关机制,以及启动和从休眠中唤醒的算法。为实现这些功能,从总线上接收数据的部分就是必不可少的。由于仅少了发送部分,FlexRay甚至提到过一种可能:将控制芯片设计成可组态的,既可用作通信控制器,又可以用作总线监守。这就说明了总线监守的结构是复杂的、高成本的。有的FlexRay文献中提到,可以将安全攸关的节点与要求稍低的节点连在同一总线上,要求低的节点可以不配总线监守。这种讲法是不正确的,因为根据木桶原理,一段总线上通信的冲突可能性由最有可能引起冲突的节点决定,安全要求低的节点发送超时会引起总线上的冲突,影响安全攸关消息的传送。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:32,542.97000 毫秒