微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 分布式嵌入系统中的交互一致性

分布式嵌入系统中的交互一致性

时间:03-14 来源:互联网 点击:

的帧的个数就可以:N=1+(n-1)+(n-1)2+…。总的通信轮数为m+1。

④ 每个从节点保存一个供选择的集choice,初始化时为空:choice{Φ}。choice的更新可在m+1轮通信结束之后进行。更新时先检验签名的有效性,只有全为有效的才可把该帧的d添加到choice中,如果choice中已有,就不重复添加。点对点通信按参考文献[3]的做法,出现主节点错时choice会有多个元素,总线通信时主节点的签名计算只有一次,按本文做法(见下文)choice只会有一个元素(真值或空)。

⑤ 参考文献[3]证明了在下列假设得到保证的条件下所有无故障从节点会得到相同的choice:

A1发送的消息总能正确送达;

A2每个节点知道谁在发送;

A3消息的缺失可以检测出来;

A4签名不能被作伪,作伪时可检测出来;

任何从节点能检测出签名是否有错。

SM算法的有效性与此有关,通信时发生错帧漏检的情况相当于发生一次错,要在容错的次数设计上加以考虑。

参考文献[3]建议了一个签名的方法例子,即用密钥ki对数据d求出签名a: a=(ki·d)mod p,其中p是2的幂,ki是小于p的一个奇数,接收节点用另一个密钥ki-1验证:d=(ki-1·a)mod p。ki和ki-1有如下关系:(ki·ki-1)mod p=1。这样,有错节点能作伪的概率为1/p。这种方案作伪者要不知道加密的办法才行。参考文献[3]认为要求更严的场合要采用密码学的方法。

从工业应用来看,有错节点的作伪的可能性来源乃是电磁干扰,对人为的黑客攻击应另外采用对抗措施,所以可以采用较为简单常用的CRC校验和作为签名。注意,这个CRC校验和是应用数据的校验和,不要混同于通信帧的校验和。在冗余系统里关心的是应用数据的一致性,而应用数据在MCU与通信控制器的传递过程中可能出错,通信帧的CRC校验不能覆盖这一错。例如,应用通过FlexRay的二个通道传送同一数据时,由于写入输出缓冲器的过程是分时的,如果其中一次受到干扰,应用数据与应用CRC(签名)不再匹配,那么接收方将能发现应用数据的传送错而加以丢弃。

在总线广播通信中,由于各节点受干扰请况的不同,它们可能接收到不同的帧,一旦又发生了错帧漏检,那么就会发生一个节点给其他节点送不同值的情况,这与点到点通信的情况一样,是一种拜占庭错。同时,转发过程又涉及MCU与通信控制器的传递过程,其中也会发生错,所以转发过程也用数据加签名的方式。例如节点p在第3轮收到帧(((d:a0):aj):ai)时,检验ai的签名是否正确,如果错,那么在节点j到i的转发通信中有错。如无错,继续对((d:a0):aj)作aj签名的检验,如果错,那么在节点0到j的转发通信中有错。如无错,再对(d:a0)作a0签名的检验,如果错,那么在节点0的MCU与节点0的通信控制器通信中发生了错,或者它在计算签名时发生了错。

未通过签名检验的数据将不提交到choice,如果主节点无错,从节点有m+1个,那么在第一轮中至少有一个从节点正确收到,在以后各轮中其他有错节点的转发将不会影响这个节点的choice。现在可以发现SM算法的一个有趣的特性:如果某些从节点只是发生了瞬时故障,由于无错节点的转发,它仍然有机会得到相同的choice。

由于采用总线广播,主节点可以收到被转发的自己的帧,因此可以进行自检。若全部转发结束后自检不通过,就可以采取进一步的措施,例如本节点重算签名并写通信控制器,或者立即进入故障-静默模式。

SM算法假设帧的丢失可以检测出来,这要靠另加的超时报警单元。一旦时间窗口关闭,各节点就根据已收到的各帧进行choice的更新工作。

一次SM算法结束后就可认为将开始新的一次SM算法,也就可以初始化choice。如果将每一个节点开始发本节点数据的次序固定下来,并将以前节点开始发转发的时刻来预置本地定时器,那么在预定的时间窗口内上一节点因故障而未转发的错误可以被发现。上一节点转发结束的信号或时限到可用来触发本节点开始转发。

2 互为冗余

经过执行SM算法,所有无错节点和有瞬时故障的节点都可得到其他节点发送的一致的输入值。有错节点发出的输入值被所有节点(包括有错节点本身)识别,不被用来进一步作计算,此时有错节点进入故障-静默模式,其余正确节点直接开始重新分配刹车力矩的算法。输入值交换无错时每一个节点用相近的控制算法计算每个轮子的控制输出(刹车力矩)。然后再用SM算法交换各自计算结果,每个节点将有一致的各节点的输出值。

在每个节点计算时,会因干扰(如EMI或热冲击等)而出现错误输出值。或因其他附加条件(例如刹车力矩传感器的失效,MCU自检错)等因素,人为使该节点计算得的输出值为非正常值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top