|
TTCANopen应用层协议
设备内部多条指令的发送规则
通常 CAN 通讯协议只规范了多个设备在总线上同时发送指令时的竞争顺序,而对于单个设备内部产生的多条指令的发送顺序却很少涉及。在纯主从模式下,设备内部产生多条指令的可能性并不大,相关问题很难暴露,而当系统发展演绎到全触发方式后情况就不同了,一个设备可能具有多个触发变量,它们可以是周期触发、变化触发和越界触发等等,而总线的发送速率是有限的,且同时还存在其他设备对总线的竞争,因此在同一设备中就有可能积累多条指令等待发送。
通常设备会默认以“先生优势”规则处理这些指 令,即先产生的指令优先发送,这样处理的最大好 处是指令动作先后逻辑规范,这对那些具有先后关联的系列指令尤为重要,但事物总是两方面的,这种“先生优势”规则,会延迟和阻碍后产生的高优先级指令的发送,如:告警指令,尤其是当总线上存在竞争时,情况尤为严重,如: 当设备指令发送端口被一条先生成的低优先级指令占据时,其在总线上的竞争处于劣势,从而使该设备中后产生的告警指令无法参与竞争而被推迟发送,这种延迟有时可能是致命的。 因此我们需要重新规范设备内部多条 指令的发送规则,最粗暴简单的方法就是对这多条指令进行优先级排队,将 ID字小的指令排在前面每当设备产生一条新指令时都要重新进行一次指令排序(注意:这种重新排序应当包括那条已经处在发 送端口的未发指令 ),这样设备便具有了最优的发 送竞争力,但同时可能会破坏前面所说的某些指令 的先后逻辑关联,可能使系统运转出现偏差。
为此 TTCANopen 应用层协议做出如下规范, 当一设备同时具有多条指令等待发送时:
1) 优先级位为 0 的指令优先于优先级位为 1 的指令发送;
2) 优先级位相同的指令按其产生的先后顺序发送。
虽然只有短短的两条规定,但它却完成了其它应用层协议很难规范完成的内容,而这对于 TTCANopen 协议来说却是自然天成的,它的第一条规定确保了低优先级 (1)的指令不能阻碍高优先级 (0)指令的发送,使设备中诸如告警指令得以顺利抢先通过总线发送; 第二条规定保障了具有先后逻辑 关系的系列指令的顺利完成,因为我们一般不会将这些相关指令定义在不同的优先级位上。
TTCANopen应用层协议CAN标识符的分配方法
TTCANopen协议简介
|
|