打印

CAN协议设备内部多条指令的发送规则

[复制链接]
938|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dxfshsh|  楼主 | 2019-3-7 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

       CAN协议设备内部多条指令的发送规则



      通常CAN通讯协议只规范了多个设备在总线上同时发送指令时的竞争顺序,而对于单个设备内部产生的多条指令的发送顺序却很少涉及。

      在纯主从模式下,设备内部产生多条指令的可能性并不大,相关问题很难暴露,而当系统发展演绎到全触发方式后情况就不同了,一个设备可能具有多个触发变量,它们可以是周期触发、变化触发、越界触发等等,而总线的发送速率是有限的,且同时还存在其他设备对总线的竞争,因此在同一设备中就有可能积累多条指令等待发送。

     通常设备会默认以“先生优势”规则处理这些指令,即先产生的指令优先发送,这样处理的最大好处是指令动作先后逻辑规范,这对那些具有先后关联的系列指令尤为重要,但事物总是两方面的,这种“先生优势”规则,会延迟和阻碍后产生的高优先级指令的发送,如:告警指令,尤其是当总线上存在竞争时,情况尤为严重,如:当设备指令发送端口被一条先生成的低优先级指令占据时,其在总线上的竞争处于劣势,从而使该设备中后产生的告警指令无法参与竞争而被推迟发送,这种延迟有时可能是致命的。因此我们需要重新规范设备内部多条指令的发送规则,最粗暴简单的方法就是对这多条指令进行优先级排队,将ID字小的指令排在前面,每当设备产生一条新指令时都要重新进行一次指令排序(注意:这种重新排序应当包括那条已经处在发送端口的未发指令),这样设备便具有了最优的发送竞争力,但同时可能会破坏前面所说的某些指令的先后逻辑关联,可能使系统运转出现偏差。


     为此TTCANopen应用层协议做出如下规范,当一设备同时具有多条指令等待发送时:


    1)优先级位为0的指令优先于优先级位为1的指令发送;

    2)优先级位相同的指令按其产生的先后顺序发送。


   虽然只有短短的两条规定,但它却完成了其它应用层协议很难规范完成的内容,而这对于TTCANopen协议来说却是自然天成的,它的第一条规定确保了低优先级(1)的指令不能阻碍高优先级(0)指令的发送,使设备中诸如告警指令得以顺利抢先通过总线发送;第二条规定保障了具有先后逻辑关系的系列指令的顺利完成,因为我们一般不会将这些相关指令定义在不同的优先级位上。


   注:请参考《TTCNAopen应用层协议CAN标识符的分配方法》




相关帖子

沙发
二九结狐六体| | 2019-3-7 13:38 | 只看该作者
不错的啊! 哈哈哈,

使用特权

评论回复
板凳
赖赖赖小姐| | 2019-3-8 11:29 | 只看该作者
谢谢分享,继续关注

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

154

帖子

0

粉丝