一种串行通信的安全系统和安全的串行通信方法
技术领域
本发明涉及安全领域,特别涉及列车运行控制系统的安全控制领域。
背景技术
列车超速防护系统ATP(Automatic Train Protection)是高速铁路、地铁、城市轨道交通运行控制系统的组成部分之一,其主要用来提供速度限制信息以保持列车间的安全间隔,使列车在符合限制速度的标准下运行。列车超速防护车载设备是列车超速防护系统中的一个重要组成部分,是依据从列车超速防护地面设备接收到的列车运行控制命令,对列车进行实时速度监督的一种安全保障设备。
目前,一套完整的列车超速防护设备比较复杂,一般由多块板卡组成,比如主机板卡、通信板卡、输出板卡、输入板卡等。基于可靠性及复杂度的考虑,大部分板卡与板卡的通信都采用串行通信。目前,在2oo2(2out of 2的简称,即2取2)、3oo3(即3取3)等安全控制系统中,串行通信多采用一对一方式。在板卡内部,信号的接收和发送没有实现真正的N to N(即N取N),一般只是由一个CPU进行集中处理,其他CPU基本无法对串行信号进行仲裁、监测。当一个CPU出现故障导致数据输出异常时,从数据上很难定位异常的CPU,导致很难判断异常原因,给系统的查错带来很大的困难;同时由于缺少其他CPU的监测,在极端情况下会给系统带来安全隐患。目前亟需一种能够实现安全通信且能及时定位异常出现位置的串行通信方法,以提高列车运行的安全性。
发明内容
本发明提供了一种安全的串行通信方法及串行通信的安全系统,可以提高系统运行的安全性,并在发生异常时及时找到异常发生的部位及原因。
一种串行通信的安全系统,包括第一处理单元、第二处理单元、串行总线、安全处理单元:所述串行总线将外部设备与所述第一处理单元、第二处理单元分别连接;所述第一处理单元、第二处理单元互相连接并分别与安全处理单元连接;
所述第一处理单元包括第一比较模块;所述第二处理单元包括第二比较模块;
第一外部设备通过串行总线将输入数据同时发送给第一处理单元和第二处理单元;
第二处理单元向第一处理单元发送所述输入数据,第一比较模块将第一处理单元的所 述输入数据与第二处理单元发送的输入数据进行比较;如果数据比较后一致,则由第一处理单元对所述输入数据进行处理成为第一预输出数据;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理,
第一处理单元向第二处理单元发送所述输入数据,第二比较模块将第二处理单元的所述输入数据与第一处理单元发送的输入数据进行比较;如果数据比较后一致,则由第二处理单元对所述输入数据进行处理成为第二预输出数据;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;
第二处理单元向第一处理单元发送所述第二预输出数据,第一比较模块将所述第一预输出数据与第二处理单元发送的所述第二预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据,
第一处理单元向第二处理单元发送所述第一预输出数据,第二比较模块将所述第二预输出数据与第一处理单元发送的所述第一预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据;
第一处理单元向第二处理单元和第二外部设备发送所述输出数据,第二比较模块将第二处理单元的所述待比较数据与第一处理单元发送的所述输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理。
上述串行通信的安全系统在数据的不同阶段将两个CPU中的数据进行比较,通过不同方式的比较,确保了数据的安全性和同时性,避免了数据错误,保障了本安全系统自身的安全性;如果出现了报警,本发明的安全系统可以缩小故障排查范围,减小排查难度,提高了检修效率。
一种串行通信的安全系统,包括第一处理单元、第二处理单元、串行总线、安全处理单元,所述串行总线是半双工串行总线:所述串行总线将外部设备与所述第一处理单元、第二处理单元分别连接;所述第一处理单元、第二处理单元互相连接并分别与安全处理单元连接;
所述第一处理单元包括第一比较模块;所述第二处理单元包括第二比较模块;
第三外部设备通过串行总线将输入数据同时发送给第一处理单元和第二处理单元;
第二处理单元向第一处理单元发送所述输入数据,第一比较模块将第一处理单元的所述输入数据与第二处理单元发送的输入数据进行比较;如果数据比较后一致,则由第一处 理单元对所述输入数据进行处理成为第一预输出数据;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理,
第一处理单元向第二处理单元发送所述输入数据,第二比较模块将第二处理单元的所述输入数据与第一处理单元发送的输入数据进行比较;如果数据比较后一致,则由第二处理单元对所述输入数据进行处理成为第二预输出数据;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;
第二处理单元向第一处理单元发送所述第二预输出数据,第一比较模块将所述第一预输出数据与第二处理单元发送的所述第二预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据,
第一处理单元向第二处理单元发送所述第一预输出数据,第二比较模块将所述第二预输出数据与第一处理单元发送的所述第一预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据;
在所述半双工串行总线改变方向的时间段,第一处理单元向第二处理单元和第三外部设备发送所述输出数据,第二比较模块将第二处理单元的所述待比较数据与第一处理单元发送的所述输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理。
上述的串行通信的安全系统借用了半双工串行总线的特点,对一个外设的数据进行安全处理,保障本安全系统自身的安全性,如果出现了报警,可以减小排查难度,提高了检修效率。
一种串行通信的安全系统,包括第一处理单元、第二处理单元、串行总线、安全处理单元:所述串行总线将外部设备与所述第一处理单元、第二处理单元分别连接;所述第一处理单元、第二处理单元互相连接并分别与安全处理单元连接;
所述第一处理单元包括第一比较模块;所述第二处理单元包括第二比较模块;
第一外部设备通过串行总线将输入数据同时发送给第一处理单元和第二处理单元;所述第一处理单元和所述第二处理单元同时接收输入数据并分别进行处理,分别得到第一预输出数据和第二预输出数据;
第二处理单元向第一处理单元发送所述第二预输出数据,第一比较模块将所述第一预输出数据与第二处理单元发送的所述第二预输出数据进行比较;如果数据比较后不一致, 则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据,
第一处理单元向第二处理单元发送所述第一预输出数据,第二比较模块将所述第二预输出数据与第一处理单元发送的所述第一预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据;
第一处理单元向第二处理单元和第二外部设备发送所述输出数据,第二比较模块将第二处理单元的所述待比较数据与第一处理单元发送的所述输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理。
优选的,在上述的串行通信的安全系统中,在外部设备与各处理单元之间均设置用于转换电平的节点。
一种安全的串行通信方法,包括以下步骤:
S10:第一外部设备通过串行总线将输入数据同时发送给第一处理单元和第二处理单元;
S20:第二处理单元向第一处理单元发送所述输入数据;第一处理单元将接收到的第一外部设备的输入数据与接收到的第二处理单元的输入数据进行比较;如果数据比较后一致,则由第一处理单元将输入数据进行处理成为第一预输出数据;如果数据比较后不一致,则进入异常状态进行异常处理;
同时,第一处理单元向第二处理单元发送所述输入数据;第二处理单元将接收到的第一外部设备的输入数据与接收到的第一处理单元的输入数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则由第二处理单元将输入数据进行处理成为第二预输出数据;
如果第一外部设备与第二处理单元的输入数据在第一处理单元中进行比较后数据一致,且第一外部设备与第一处理单元的输入数据在第二处理单元中进行比较后数据也一致,则进入下一步骤;
S30:第二处理单元向第一处理单元发送所述第二预输出数据,第一处理单元将所述第一预输出数据与接收到的所述第二处理单元的第二预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据;
同时,第一处理单元向第二处理单元发送所述第一预输出数据,第二处理单元将所述 第二预输出数据与接收到的所述第一处理单元的第一预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据,
如果所述第一预输出数据与所述第二预输出数据分别在两个处理单元进行比较后数据都一致,则进入下一步骤;
S40:第一处理单元向第二处理单元和第二外部设备发送所述输出数据,第二处理单元的所述待比较数据与从第一处理单元接收到的所述输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;否则进行正常数据传输。
一种安全的串行通信方法,包括以下步骤:
S10:在半双工串行总线沿方向A传输数据的时间段,第三外部设备通过串行总线将输入数据同时发送给第一处理单元和第二处理单元;
S20:第二处理单元向第一处理单元发送所述输入数据;第一处理单元将接收到的第三外部设备的输入数据与接收到的第二处理单元的输入数据进行比较;如果数据比较后一致,则由第一处理单元将输入数据进行处理成为第一预输出数据;如果数据比较后不一致,则进入异常状态进行异常处理;
同时,第一处理单元向第二处理单元发送所述输入数据;第二处理单元将接收到的第三外部设备的输入数据与接收到的第一处理单元的输入数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则由第二处理单元将输入数据进行处理成为第二预输出数据;
如果第一外部设备与第二处理单元的输入数据在第一处理单元中进行比较后数据一致,且第一外部设备与第一处理单元的输入数据在第二处理单元中进行比较后数据也一致,则进入下一步骤;
S30:第二处理单元向第一处理单元发送所述第二预输出数据,第一处理单元将所述第一预输出数据与接收到的所述第二处理单元的第二预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据;
同时,第一处理单元向第二处理单元发送所述第一预输出数据,第二处理单元将所述第二预输出数据与接收到的所述第一处理单元的第一预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据;
如果所述第一预输出数据与所述第二预输出数据分别在两个处理单元进行比较后数据都一致,则进入下一步骤;
S40:在所述半双工串行总线沿方向A的反方向传输数据的时间段,第一处理单元向第二处理单元和第三外部设备发送所述输出数据,第二处理单元的所述待比较数据与从第一处理单元接收到的所述输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;否则进行正常数据传输。
7、一种安全的串行通信方法,包括以下步骤:
S10:第一外部设备通过串行总线将输入数据同时发送给第一处理单元和第二处理单元;所述第一处理单元和所述第二处理单元同时接收输入数据并分别进行处理,分别得到第一预输出数据和第二预输出数据;
S20:第二处理单元向第一处理单元发送所述第二预输出数据,第一处理单元将所述第一预输出数据与接收到的所述第二处理单元的第二预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据;
同时,第一处理单元向第二处理单元发送所述第一预输出数据,第二处理单元将所述第二预输出数据与接收到的所述第一处理单元的第一预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据;
如果所述第一预输出数据与所述第二预输出数据分别在两个处理单元进行比较后数据都一致,则进入下一步骤;
S30:第一处理单元向第二处理单元和第二外部设备发送所述输出数据,第二处理单元的所述待比较数据与从第一处理单元接收到的所述输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;否则进行正常数据传输。
附图说明
下面结合附图及实施方式对本发明作进一步详细的说明:
图1a是本发明一种串行通信的安全系统的具体实施例的示意图。
图1b是本发明一种串行通信的安全系统的具体实施例的示意图。
图2a是本发明一种串行通信的安全系统的具体实施例的示意图。
图2b是本发明一种串行通信的安全系统的具体实施例的示意图。
图3a是本发明一种安全的串行通信方法的流程示意图。
图3b是本发明一种安全的串行通信方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明确,下面结合实施例以及附图对本发明实施例中的技术方案做进一步详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。在此,本发明的示意性实施方式及其说明主要用于解释本发明,但并不作为对本发明的限定。
实施例1:
本实施例的串行通信的安全系统与第一外部设备(在本发明中也称为外设1)、第二外部设备(在本发明中也称为外设2)之间的连接关系和数据传输关系如图1a、图1b所示。
一种串行通信的安全系统,包括第一处理单元(在本发明中也称为CPU1,下同)、第二处理单元(在本发明中也称为CPU2,下同)、串行总线、安全处理单元。所述串行总线将外部设备与所述第一处理单元、第二处理单元分别连接;所述第一处理单元、第二处理单元互相连接并分别与安全处理单元连接。此处外部设备是对与本发明的安全系统连接的外设的统称,不局限于某一个或某几个外设。
所述第一处理单元包括第一比较模块;所述第二处理单元包括第二比较模块。
第一外部设备(在本发明中也称为外设1)通过串行总线将输入数据同时发送给第一处理单元和第二处理单元。
CPU1与CPU2进行数据交互比较。所述的“数据交互比较”是指CPU1和CPU2互相向另一CPU发送数据,分别且同时在CPU1和CPU2中将自己的数据与另一CPU传输来的数据进行比较,分别判断各自CPU中的数据是否一致,根据比较结果确定后面的操作。“数据交互比较”具体是指:第二处理单元向第一处理单元发送所述输入数据,第一比较模块将第一处理单元的所述输入数据与第二处理单元发送的输入数据进行比较;如果数据比较后一致,则由第一处理单元对所述输入数据进行处理成为第一预输出数据;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理。本发明所述的异常处理可以是在板卡上或设备上通过灯光报警,也可以是配合灯光的蜂鸣报警或单独的蜂鸣报警,还可以是同时通过串行总线向外部相关设备或组件输出异常信息和/或输出相应命令,当然也可以是现有技术中其它形式的报警和异常处理方式。本发明对于异常处理的方法不作限定。在上述CPU2向CPU1发送输入数据进行比较的同时,在CPU2中进行类似的 比较:第一处理单元向第二处理单元发送所述输入数据,第二比较模块将第二处理单元的所述输入数据与第一处理单元发送的输入数据进行比较;如果数据比较后一致,则由第二处理单元对所述输入数据进行处理成为第二预输出数据;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理,从而完成“数据处理前的数据交互比较”。“数据处理前的数据交互比较”的目的是,在CPU1和CPU2处理数据之前,先验证两个CPU收到的数据的准确性和同步性,避免负负得正的错误发生,即两个CPU处理后的数据都是错误的、但两个错误结果却一样的情况发生。
若CPU1内的比较结果不一致而CPU2的比较结果一致,则有可能是CPU1内的两个数据内容不同,而内容不同的原因是由于CPU2发送过来的数据在传输过程中出错(例如通信数据错误、CPU1程序问题导致数据被修改破坏等),此时CPU1将报错、报警并停止工作;而CPU2在后续过程中由于未在规定时间内接收到CPU1的数据也会由于通信超时停止工作并报错、报警。通过对记录的报错信息、报警信息以及发出的相应命令的人工或自动分析,可以很快知道错误发生的位置和原因。若CPU2内的比较结果不一致而CPU1的比较结果一致,也是类似的原因和类似的处理方式为,此处不再赘述。若若CPU1内的比较结果不一致,同时CPU2的比较结果也不一致,则两个CPU将分别报错、报警并停止工作。
经过“数据处理前的数据交互比较”之后,没有发生上述异常的CPU1中的数据经过CPU1的处理成为CPU1的第一预输出数据,同时没有发生上述异常的CPU2的数据经过CPU2的处理成为CPU2的第二预输出数据,此时这两股预输出数据再进行如图1b的“数据输出前的数据交互比较”:第二处理单元向第一处理单元发送所述第二预输出数据,第一比较模块将所述第一预输出数据与第二处理单元发送的所述第二预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第一预输出数据称为“第一处理单元的输出数据”。在上述CPU2向CPU1发送第二预输出数据与CPU1中的第一预输出数据进行比较的同时,在CPU2中进行类似的比较:第一处理单元向第二处理单元发送所述第一预输出数据,第二比较模块将所述第二预输出数据与第一处理单元发送的所述第一预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第二预输出数据称为“第二处理单元的待比较数据”,从而完成“数据输出前的数据交互比较”。此处的“数据输出前的数据交互比较”的目的是,对处理后的数据在其输出之前作校验,确定处理后数据的准确性和同步性。若CPU1内的比较结果不一致而CPU2 的比较结果一致,其目的、原因、处理方式与上面所述相同,此处不再赘述。
然后,若CPU1“数据输出前的数据交互比较”无异常,则所述输出数据再进行如图1b的“数据输出后的数据交互比较”:第一处理单元向第二处理单元和第二外部设备(在本发明中也称为外设2)发送所述输出数据,第二比较模块将第二处理单元的所述待比较数据与第一处理单元发送的所述输出数据进行比较,判断这两个数据是否一致。如果数据比较后一致,则不干涉输出的数据,数据正常传输到外设2;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理,并通知外设2异常发生原因,外设2进行相应异常处理,从而完成“数据输出后的数据交互比较”。此次的“数据输出后的数据交互比较”的目的是,在异常出现时,缩小错误分析和排查的范围(此时异常原因一般是由于与外设2的通信出现干扰,或CPU1相关数据输出硬件出现故障,而不是由于CPU1、CPU2输出数据源不同导致的问题)。
优选的,在图1a中,外设1通过串行总线将输入数据通过节点1分别经过节点2和节点3分别传输给CPU1和CPU2。节点1、2、3用于电平转换。在数据进入节点1、2、3之前是物理协议,电平范围为1.5~3.5V;节点1、2、3将数据的电平转换为0~3.3V,使其适用于DSP数字信号处理电路的要求。
优选的,在图1b中,CPU1通过串行总线经过节点4、6将输出数据发送给外设2、经过节点4和节点5将输出数据发送给CPU2,其中节点4、5、6的作用是电平转换。数据在DSP数字信号处理电路里的时候,数据的电平为0~3.3V,而由CPU1输出到外设2之后适用于物理协议,因此经过节点4、5、6时电平范围转换为1.5~3.5V。
上述外设1是只发送数据的设备或模块,比如机车信号;上述外设2是只能接收数据的设备或模块,比如车载显示设备,用于显示机车运行情况。
实施例2:
在串行总线是半双工串行总线的情况下,由于半双工串行总线具有数据传输的方向随时间改变,且在任意时刻均保持数据的单向传输的特性(即在时间段t0至t1,半双工串行总线沿方向A传输数据,而下一时间段t1至t2,半双工串行总线沿方向A的反方向传输数据;数据在半双工串行总线上的传输随着时间变化交替改变方向,而每一时刻半双工串行总线的数据传输仅沿一个方向而非双向传输),使本发明的技术方案利用这种特性可以进一步扩展。本实施例的串行通信的安全系统与外设3之间的连接关系和数据传输关系如图2a和图2b所示。
一种串行通信的安全系统,包括第一处理单元(CPU1)、第二处理单元(CPU2)、串 行总线、安全处理单元,所述串行总线是半双工串行总线(比如CAN总线或RS485总线);所述串行总线将外部设备与所述第一处理单元、第二处理单元分别连接;所述第一处理单元、第二处理单元互相连接并分别与安全处理单元连接。所述第一处理单元包括第一比较模块;所述第二处理单元包括第二比较模块。
在半双工串行总线沿方向A传输数据的时间段,如图2a所示,第三外部设备(在本发明中也称为外设3)通过串行总线将输入数据同时发送给第一处理单元和第二处理单元。
CPU1与CPU2进行数据交互比较(与实施例1类似)。所述的数据交互比较具体是指:第二处理单元向第一处理单元发送所述输入数据,第一比较模块将第一处理单元的所述输入数据与第二处理单元发送的输入数据进行比较;如果数据比较后一致,则由第一处理单元对所述输入数据进行处理成为第一预输出数据;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理。在上述CPU2向CPU1发送输入数据进行比较的同时,在CPU2中进行类似的比较:第一处理单元向第二处理单元发送所述输入数据,第二比较模块将第二处理单元的所述输入数据与第一处理单元发送的输入数据进行比较;如果数据比较后一致,则由第二处理单元对所述输入数据进行处理成为第二预输出数据;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理,从而完成“数据处理前的数据交互比较”。“数据处理前的数据交互比较”的目的、原因、处理方式等均与实施例1的相同,此处不再赘述。
数据处理前的数据交互比较无异常的数据独立的经过CPU1和CPU2的处理,分别成为CPU1的第一预输出数据和CPU2的第二预输出数据,再进行“数据输出前的数据交互比较”:第二处理单元向第一处理单元发送所述第二预输出数据,第一比较模块将所述第一预输出数据与第二处理单元发送的所述第二预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据。与此同时,第一处理单元向第二处理单元发送所述第一预输出数据(若数据处理前的数据交互比较中在CPU1的比较结果不一致,则不会产生第一预输出数据,也就导致CPU2收不到CPU1的数据,从而通信超时报错,自动停止下述步骤),第二比较模块将所述第二预输出数据与第一处理单元发送的所述第一预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据,从而完成“数据输出前的数据交互比较”。此处的“数据输出前的数据交互比较”的目的、原因、处理方法与实施例1中的相同,此处不再赘述。
若CPU1“数据输出前的数据交互比较”无异常,假设上述外设3通过半双工串行总线向CPU1和CPU2发送数据的时间段为时间段1(沿方向A),则在所述半双工串行总线改变方向(沿方向A的反方向)的时间段,即数据从CPU1、CPU2向外设3发送数据的时间段(称为时间段2),如图2b所示,所述输出数据再进行“数据输出后的数据交互比较”:第一处理单元向第二处理单元和第三外部设备发送所述输出数据,第二比较模块将第二处理单元的所述待比较数据与第一处理单元发送的所述输出数据进行比较,判断两个数据是否一致;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理,并通知外设3异常发生原因,外设3进行相应异常处理,从而完成“数据输出后的数据交互比较”。此次“数据输出后的数据交互比较”的目的是,在异常出现时,缩小错误分析和排查的范围(此时异常原因一般是由于与外设3的通信出现干扰或第一处理单元相关数据输出硬件出现故障,而不是由于CPU1、CPU2输出数据源不同的问题)。所述外设3是既能发送数据也能接收数据的设备或模块,比如人机接口设备DMI、列车超速防护系统ATP主机等。
优选的,在图2a和图2b中,外设3通过串行总线将输入数据通过节点9分别经过节点7和节点8分别传输给CPU1和CPU2。节点7、8、9用于电平转换。在数据进入节点7、8、9之前是物理协议,电平范围为1.5~3.5V;节点7、8、9将数据的电平转换为0~3.3V,使其适用于DSP数字信号处理电路的要求。
实施例3
本发明上述实施例1和实施例2均采用了三次数据交互比较,即“数据处理前的数据交互比较”、“数据输出前的数据交互比较”、“数据输出后的数据交互比较”,以达到最安全的实施效果。但在一些低要求应用中,比如数据已经输入到CPU1和CPU2的情况下,还可以仅通过两次数据交互比较,即“数据输出前的数据交互比较”和“数据输出后的数据交互比较”,实施本发明,达到具体工况下所需的安全性要求。本实施例即为通过2次比较进行实施本发明的一个例子。
一种串行通信的安全系统,包括第一处理单元(CPU1)、第二处理单元(CPU2)、串行总线、安全处理单元:所述串行总线将外部设备与所述第一处理单元、第二处理单元分别连接;所述第一处理单元、第二处理单元互相连接并分别与安全处理单元连接;所述第一处理单元包括第一比较模块;所述第二处理单元包括第二比较模块。
第一外部设备通过串行总线将输入数据同时发送给第一处理单元和第二处理单元;所述第一处理单元和所述第二处理单元同时接收输入数据并分别进行处理,分别得到第一预 输出数据和第二预输出数据。
此时进行“数据输出前的数据交互比较”,如图1b所示:第二处理单元向第一处理单元发送所述第二预输出数据,第一比较模块将所述第一预输出数据与第二处理单元发送的所述第二预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据;与此同时,第一处理单元向第二处理单元发送所述第一预输出数据,第二比较模块将所述第二预输出数据与第一处理单元发送的所述第一预输出数据进行比较;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据,从而完成“数据输出前的数据交互比较”。此处的“数据输出前的数据交互比较”的目的、原因及处理方法同实施例1,此处不再赘述。
然后,若两个CPU数据输出前的数据交互比较无异常,则所述输出数据再进行如图1b的“数据输出后的数据交互”比较:第一处理单元向第二处理单元和第二外部设备(即外设2)发送所述输出数据,第二比较模块将第二处理单元的所述待比较数据与第一处理单元发送的所述输出数据进行比较,判断两个数据是否一致;如果数据比较后不一致,则向安全处理单元发送信息,由安全处理单元进行异常处理,并通知外设2异常发生原因,外设2进行相应异常处理,从而完成“数据输出后的数据交互比较”。此次的“数据输出后的数据交互比较”的目的是,在异常出现时,缩小错误分析和排查的范围(此时异常原因一般是由于与外设2的通信出现干扰或第一处理单元相关数据输出硬件出现故障,不是由于CPU1、CPU2输出数据源不同的问题)。
图1b中在外部设备与各处理单元之间设置的节点4、5、6用于转换电平,其作用和具体应用与上述实施例中相同,此处不再赘述。
实施例4
一种安全的串行通信方法,包括以下步骤:
S10:第一外部设备(外设1)通过串行总线将输入数据同时发送给第一处理单元CPU1和第二处理单元CPU2;
S20:CPU1与CPU2进行“数据处理前的数据交互比较”。数据交互比较的意义和具体操作同上述实施例。如图3a所示,所述的“数据处理前的数据交互比较”具体是指:第二处理单元向第一处理单元发送所述输入数据;第一处理单元将接收到的第一外部设备的输入数据与接收到的第二处理单元的输入数据进行比较。在CPU1中的数据比较的具体方式 是:在CPU1中选取CPU1本地数据队列和CPU2的数据队列中数据量较小的队列为基准进行比较,即截取数据队列长度较短的数据作为基准数据长度,将相同基准长度的CPU1中的数据队列和CPU2中的数据队列进行比较。较长的数据队列截取后剩余的队列数据可以留待下次比较。类似的,在CPU2中的数据比较的具体方式是:在CPU2中选取CPU2本地数据队列和CPU1的数据队列中数据量较小的队列为基准进行比较,即截取数据队列长度较短的数据作为基准数据长度,将相同基准长度的CPU1中的数据队列和CPU2中的数据队列进行比较。本发明其它实施例中的数据比较同样也均可采用此处介绍的具体的数据比较方式,当然也可以采用其它方式的数据比较。本发明对数据比较方式不作限定。如果数据比较后一致,则由第一处理单元将输入数据进行处理成为第一预输出数据;如果数据比较后不一致,则进入异常状态进行异常处理(异常处理与上述实施例相同,此处不赘述。)同时,第一处理单元向第二处理单元发送所述输入数据;第二处理单元将接收到的第一外部设备的输入数据与接收到的第一处理单元的输入数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理(包括输出异常信息。关于异常处理的内容与本发明其它实施例相同,此处不再赘述);如果数据比较后一致,则由第二处理单元将输入数据进行处理成为第二预输出数据。如果第一外部设备与第二处理单元的输入数据在第一处理单元中进行比较后数据一致,且第一外部设备与第一处理单元的输入数据在第二处理单元中进行比较后数据也一致,则进入下一步骤;至此完成“数据处理前的数据交互比较”。“数据处理前的数据交互比较”的目的、原因、处理方法与上述实施例相同,此处不再赘述。
S30:“数据处理前的数据交互比较”无异常的数据独立的经过CPU1和CPU2的处理,分别成为CPU1的第一预输出数据和CPU2的第二预输出数据,再进行“数据输出前的数据交互比较”(如图3b所示):第二处理单元向第一处理单元发送所述第二预输出数据,第一处理单元将所述第一预输出数据与接收到的所述第二处理单元的第二预输出数据进行比较(比较方法同上,不赘述);如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据;同时,第一处理单元向第二处理单元发送所述第一预输出数据,第二处理单元将所述第二预输出数据与接收到的所述第一处理单元的第一预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据。如果所述第一预输出数据与所述第二预输出数据分别在两个处理单元进行比较后数据都一致,则进入下一步骤,至此完成“数据输出前的数据交互比较”,其目的、原因、处理方法与其它实施例相同,此处不再赘述。
S40:若CPU1、CPU2“数据输出前的数据交互比较”均无异常,则所述输出数据再进行“数据输出后的数据交互比较”(若CPU1或CPU2之一数据比较异常,则另一CPU由于接收不到数据异常的CPU的数据,发生通信超时从而停止工作并报错、报警)(如图3b所示):第一处理单元向第二处理单元和第二外部设备发送所述输出数据,第二处理单元的所述待比较数据与从第一处理单元接收到的所述输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理(包括输出异常信息,此处的异常处理与其它实施例相同,不赘述);否则进行正常数据传输,即数据正常传输到外设上,由外设进行设定的功能和处理。
实施例5
对应于实施例2的串行通信的安全系统,即串行总线是半双工串行总线的情况,本实施例提供一种安全的串行通信方法,包括以下步骤:
S10:在半双工串行总线沿方向A传输数据的时间段,第三外部设备(即外设3)通过串行总线将输入数据同时发送给第一处理单元CPU1和第二处理单元CPU2;
S20:CPU1与CPU2进行“数据处理前的数据交互比较”,如图3a所示,所述的“数据处理前的数据交互比较”是指:第二处理单元向第一处理单元发送所述输入数据;第一处理单元将接收到的第三外部设备的输入数据与接收到的第二处理单元的输入数据进行比较(数据比较的具体方法与其它实施例相同,不赘述);如果数据比较后一致,则由第一处理单元将输入数据进行处理成为第一预输出数据;如果数据比较后不一致,则进入异常状态进行异常处理(异常处理方法与其它实施例相同,不赘述,下同);同时,第一处理单元向第二处理单元发送所述输入数据;第二处理单元将接收到的第三外部设备的输入数据与接收到的第一处理单元的输入数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则由第二处理单元将输入数据进行处理成为第二预输出数据。如果第一外部设备与第二处理单元的输入数据在第一处理单元中进行比较后数据一致,且第一外部设备与第一处理单元的输入数据在第二处理单元中进行比较后数据也一致,则进入下一步骤;至此完成“数据输出前的数据交互比较”,其目的、原因、处理方法如上所述,此处不再赘述。
S30:“数据处理前的数据交互比较”无异常的数据独立的经过CPU1和CPU2的处理,分别成为CPU1的第一预输出数据和CPU2的第二预输出数据,再进行“数据输出前的数据交互比较”(如图3b所示):第二处理单元向第一处理单元发送所述第二预输出数据,第一处理单元将所述第一预输出数据与接收到的所述第二处理单元的第二预输出数据进行比 较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据;同时,第一处理单元向第二处理单元发送所述第一预输出数据,第二处理单元将所述第二预输出数据与接收到的所述第一处理单元的第一预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据。如果所述第一预输出数据与所述第二预输出数据分别在两个处理单元进行比较后数据都一致,则进入下一步骤,至此完成“数据输出前的数据交互比较”,其目的、原因、处理方法如上所述,此处不再赘述。
S40:在所述半双工串行总线沿方向A的反方向传输数据的时间段(与实施例2类似),第一处理单元向第二处理单元和第三外部设备发送所述输出数据,第二处理单元的所述待比较数据与从第一处理单元接收到的所述输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;否则进行正常数据传输(与其它实施例的正常数据传输相同,此处不赘述)。
实施例6
对应于实施例3的串行通信的安全系统,即仅通过两次数据交互比较(“数据输出前的数据交互比较”和“数据输出后的数据交互比较”)实施本发明的情况,本实施例提供了通过2次比较的一种安全的串行通信方法。
一种安全的串行通信方法,包括以下步骤:
S10:第一外部设备(即外设1)通过串行总线将输入数据同时发送给第一处理单元CPU1和第二处理单元CPU2;所述第一处理单元和所述第二处理单元同时接收输入数据并分别进行处理,分别得到第一预输出数据和第二预输出数据;
S20:此时进行“数据输出前的数据交互比较”(如图1b所示):第二处理单元向第一处理单元发送所述第二预输出数据,第一处理单元将所述第一预输出数据与接收到的所述第二处理单元的第二预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第一预输出数据称为第一处理单元的输出数据。同时,第一处理单元向第二处理单元发送所述第一预输出数据,第二处理单元将所述第二预输出数据与接收到的所述第一处理单元的第一预输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;如果数据比较后一致,则所述第二预输出数据称为第二处理单元的待比较数据。如果所述第一预输出数据与所述第二预输出数据分别在两个处理单元进行比较后数据都一致,则进入下一步骤,至此完成“数据输出前的数据交互比 较”,其目的、原因、处理方法如上所述,此处不再赘述。
S30:第一处理单元向第二处理单元和第二外部设备发送所述输出数据,第二处理单元的所述待比较数据与从第一处理单元接收到的所述输出数据进行比较;如果数据比较后不一致,则进入异常状态进行异常处理;否则进行正常数据传输。
当然,本发明并不仅限于上述具体实施方式。所有本领域技术人员能够想到的能实现上述的功能效果的具体实施方式均在本发明的保护范围之内。