-
电站是现代舰船的重要组成部分,其可靠性和稳定性将直接影响舰船电力系统的生命力。双CPU冗余技术作为提高系统可靠性的有效手段之一,已广泛应用于舰船电站的控制系统。在双CPU冗余系统的不同工作模式中,目前应用最为广泛的是相对简单、高效的热备冗余[1-2],其工作方式是2个CPU同时上电运行,并且双方实时进行信息交互。在正常工况下,主CPU承担输出任务,备用CPU仅接收不输出,同时监控主CPU是否正常,以便及时发现故障并迅速切换。由热备冗余的工作原理可知,故障检测是双CPU热备冗余系统可靠性的重要保证,只有及时地检查出故障,才能达到冗余容错的目的。
为此,吕聪等[3]采用了看门狗设计,即主CPU通过串口通信,每隔一个周期向从CPU发送喂狗信号,如果从CPU在一定时间内未收到喂狗信号,则将整个主CPU复位。徐一凤等[4]采用了主/从CPU之间的心跳检测,即周期性互发心跳值,如果主CPU没有收到从CPU的心跳信号,则主CPU仍然正常运行;如果从CPU没有收到主CPU的心跳信号,则将从CPU切换为主CPU。邹见效[5]结合PUSH和PULL心跳检测模式改进了心跳检测算法,即从CPU在一个时间周期内收到主CPU的心跳信号,则进入下一个定时周期;如果没有收到,则立刻对主CPU进行检测,判断其是否失效;如果在下一个周期内仍然没有收到主CPU的响应信息和心跳信息,则可以判定主CPU失效。以上3种方法均基于主CPU故障检测的角度出发,而没有考虑硬件问题。在实际工作中,当2个CPU之间的通信线路出现故障时,有可能被误判为主CPU故障,即在主CPU还正常工作的情况下,从CPU也开始执行任务,从而出现“双主机现象”。
为了避免这种情况,张军永等[6]采用了双冗余心跳检测机制,即2个CPU之间通过2根信号线来检测故障状态,因为2根信号线同时出现故障的概率很低,所以仅有1根信号线出现心跳故障时,即判定为该信号线故障;只有当2根信号线均出现故障时,才判定为CPU故障。虽然该方法在一定程度上避免了“双主机现象”,但其增加了1根信号线,就相当于增加了系统架构的复杂度和维修量,以及投入成本。
综上所述,目前的故障检测方法主要集中于CPU能否通过通信线路正常地发送监控CPU所需要的信息,以及研究如何避免通信线路故障对CPU故障判断的影响。对于双CPU冗余系统来说,2个CPU之间的正常通信并不能代表整个冗余系统的正常工作状态,CPU能否正常地接收、发出指令与CPU本身是否正常一样重要。因此,为了对双CPU冗余系统进行故障检测,本文拟提出一种双CPU冗余通讯架构下的混成式故障检测方法,通过将网络故障检测法和第三方监控心跳法集成一体,形成混成式故障检测机制,以提高CPU故障检测的速度与精确性,从而提高舰船电站控制系统的可靠性,并适应舰船电站设备多、工况繁杂的情况。
-
双CPU冗余通信系统的整体架构如图1所示,由2个CPU通过互冗余方式组成,每个CPU均通过一路以太网与集控台进行双向通信,完成分/合闸指令、报警故障等重要指令的上传功能,同时这2个CPU之间也通过以太网进行信息交互。由于控制器与集控台之间的距离较远,所以控制器(底层)与集控台(顶层)之间也采用以太网进行数据通信。以太网采用光作为介质,抗干扰能力强、传递数据多、传输速度快,可以保证高速数据传输信号的可靠性[7-8]。
图1中的2个CPU都经由1路CAN与底层设备进行双向通信,且这2路CAN都在一条CAN总线上。由于CAN是一种可以有效支持分布式控制或实时控制的串行通信网络,所以在众多子节点的情况下,CAN总线具有很大的优势,它能够完成通信数据的成帧处理、位填充、数据块编码、优先级判别、CRC校验等工作。由于其报文采用短帧结构,所以传输时间短,不易受到环境干扰,具有较高的可靠性。同时,CAN总线采用多主控制,即所有的单元都可以发送消息,根据单元的标识符比较,即可实现优先级高的发送消息,其他设备接收消息,不用区分主/从设备,以便在总线上添加其他CAN单元;在电气负载允许的情况下,可以添加多个CAN单元模块[9-10]。
由于舰船电站控制系统底层控制器的数量众多,需要采集、发送大量的I/O指令信号和状态信号,所以本文将采用基于I2C总线的I/O端口扩展芯片来实现数字量信号集成化。2个CPU分别通过2路普通I/O口模拟的I2C总线信号与I/O扩展芯片相连,再经由扩展芯片与底层设备相连[11]。
在正常情况下,2个CPU都可以接收指令和数据,但只有1个CPU能发出指令,另一个则处于备份状态,其参与故障检测并随时准备故障切换。
-
为了提高舰船电站控制系统的可靠性,通信系统应具备一定的容错能力。一旦出现故障,通信系统应准确地检测、定位故障并进行实时处理,所以通信系统需要一种稳定、可靠的故障检测方案。为此,本文将提出混成式故障检测方法,即将网络故障检测和第三方监控心跳集成一体的新型检测方法。
-
网络故障检测法可以对双CPU热备冗余系统进行定时、全面的检查,以确保整个冗余系统(包括CPU、通信线和外设)都正常运行。所谓网络故障检测法,即将系统中的CPU、外设等均视为节点,将通信总线视为连接各个节点的线,这样就可以将图1中的系统架构抽象化为一个网络,如图2所示,其中:CPU1,CPU2为主节点a,b;外设集控台和底层设备为子节点c,d;λ1a,λ1b分别为集控台与CPU1,CPU2之间的以太网连线;λ2为2个CPU之间的以太网连线;λ3a,λ3b分别为底层设备与CPU1,CPU2之间的CAN连线;λ4a,λ4b分别为底层设备与CPU1,CPU2之间的I2C连线。
设定节点状态为0时表示节点正常,为1时则表示节点故障。连线λ的状态同理,可以根据与其相连的两端节点通信是否正常来判断,例如,CPU1通过以太网向集控台发送信号,如果连续2个周期未收到回复,则a与c之间的连线λ1a状态为1。为便于理解,本文采用a,b,c,d,λ1a,λ1b,λ2,λ3a,λ3b,λ4a,λ4b分别表示4个节点和其间连线的运行状态,因此,各个节点状态的计算公式为
$$ {a = {\lambda _{1a}} \times {\lambda _2} \times {\lambda _{3a}} \times {\lambda _{4a}}} $$ (1) $$ {b = {\lambda _{1b}} \times {\lambda _2} \times {\lambda _{3b}} \times {\lambda _{4b}}} $$ (2) $$ {c = {\lambda _{1a}} \times {\lambda _{1b}}} $$ (3) $$ {d = {\lambda _{3a}} \times {\lambda _{3b}} \times {\lambda _{4a}} \times {\lambda _{4b}}} $$ (4) 由式(1)~式(4)可知,如果与一个节点相连的所有连线状态λ均为1,即故障,则可判定该节点故障。根据网络故障检测法的原理,CPU与所有外设通信的过程实际上就是连线状态检测的过程,当通信结束之后,通信线路和各个节点的状态都得以更新,所以该方法兼具全面性和便捷性。
-
由于网络故障检测法是系统、全面的检测,所以需占用一定的时间成本,如果检测过于频繁,则将影响系统通信的时效性,因此,该方法适用于系统的定期检查,而不是实时故障检测。CPU作为舰船电站控制系统的重要设备,如果仅依靠网络故障检测法,则可能无法及时检测故障,这对于系统来说是致命的设计缺陷,因此,还需要采用一种专门为CPU进行故障检测的第三方监控心跳法。
传统的心跳检测法采用了单一线路进行故障检测,所以会出现“双主机现象”,而第三方监控心跳法可以解决这一问题。在不改变现有通信系统架构的前提下,仅需引入系统中的第三方设备——与2个CPU均相连的集控台,即可形成双重心跳检测保障机制,如图3所示。
由图3可知,主/从CPU之间仅有1路心跳检测,当主CPU向从CPU发送心跳信号的同时,也会向集控台同步心跳状态,包括心跳信息和更新时间。如果从CPU在规定时间内未收到心跳信息,则将主动向集控台查询,以确定主CPU是否故障;如果确定是主CPU故障,则立即切换;如果不是,则标记通信线路故障。由于第三方查询的加入,实现了多点、多重检测,以避免因依靠单一通信线路而误判的CPU故障,从而提高了故障判断的精准度。与传统的心跳检测方法相比,第三方监控心跳法在正常情况下的故障监测时间并未延长,仅在未收到主CPU心跳信息时,多了一项查询时间;由于该检测周期很短,所以对系统通信的实时性并无影响。
-
2种故障检测方法均利用定时器产生中断的方式进行周期性检查,其中网络故障检测法的检测周期大于第三方监控心跳法。当系统上电初始化之后,应先利用网络检测法进行上电检查,以确保系统可以正常运行,然后再进入主循环。
-
由网络故障检测法的原理可知,通过分析所有通信线的连线状态λ,即可掌握CPU和所有外设的工作状态,其故障检测过程分为3类,简述如下:
1)通信线故障检测。
CPU通过与其相连的总线向外设发送数据,如果在2个周期内收到正确的应答,则将该总线对应的连线状态λ设为0,即表示该通信线正常。如果在2个周期内未收到应答或应答不正确,则将其连线状态λ设为1,其检测流程如图4所示。
2)CPU故障检测。
CPU依次通过与其相连的总线向外设发送数据,如果在2个周期内均通信失败,即未收到正确的应答,则表明该CPU故障,应将其对应的节点状态设为1。
3)外设故障检测。
如果2个CPU都收不到任何与该外设相连的总线数据,则表明该外设故障,应将其对应的节点状态设为1;如果只是通过总线收不到数据,则表明该总线故障,应将该总线对应的连线状态λ设为1。
因此,通过综合通信线、CPU和外设的故障检测结果,即可准确定位故障部件,以及时切换并部署维修。
-
相较于传统的心跳检测法,第三方监控心跳法在软件流程上多了主CPU向第三方发送心跳信息和从CPU向第三方查询心跳信息的过程,其检测过程如图5所示。
上电之后,主CPU在每个周期都会向从CPU发送特定的数据,即心跳信号;与此同时,主CPU也会向集控台同步心跳信息,包括发送内容和发送时间。如果从CPU定期接收到正确的数据,则继续保持备机状态;如果从CPU连续2个心跳周期没有收到数据或收到错误的主CPU数据,则从CPU将主动查询集控台中的主CPU心跳同步信息。如果查询到主CPU的同步信息正常,则判定为2个CPU之间的通信线故障;若查询到主CPU最近一次的同步时间大于1个心跳周期,则将主CPU进行复位,同时从CPU获得控制权,开始承担系统的主CPU任务。对于复位后的CPU,将采用网络故障检测法进行评估判断,如果其仍处于故障状态,则立即更换;如果可以正常工作,则处于备机状态。
-
本文通信装置所采用的CPU芯片为STM32F417ZGT6,这是一款由ST公司发行的基于ARM Cortex-M4内核的32位处理器,其最大的优势是配置了硬件FPU单元和DSP指令集,且其主频频率高达168 MHz;该芯片拥有15个通信接口,包括3个SPI,2个CAN以及3个I2C。本通信装置的CAN和以太网均外接了隔离芯片,且以太网采用了4芯接插件。
本通信装置包括5块PCB板,分别为2块独立的CPU主板、1块DI板和2块DO板,其中CPU主板上配置了通信模块、复位模块、电源模块和存储模块,如图6所示。由于2块CPU主板都需要外接相同的DI/DO板,所以采用了便于装拆和维修的双层物理架构,如图7所示。
除了双CPU主板之外,其他3块板卡也采用了上下双层物理结构,且置于主板上方。这5块PCB板均封装于一个金属箱内,如图8所示,该金属箱具有很好的密闭性,可以防止器件在舰船的潮湿环境中失效。
基于硬件电路,应按照现场装置的实际运行要求编写主程序,并依据故障检测软件的设计思路编写故障检测子程序。主程序为基本的装置初始化,DI/DO的开入/开出和对外通信,同时通过设置周期性中断,从而在中断服务函数中完成装置的定时故障检测与判断。本通信装置程序的重要技术参数如下:以太网通信周期为2 ms/次;CAN通信周期为10 ms/次;由于第三方监控心跳检测是通过以太网进行通信,所以其故障检测周期与以太网的通信周期一致;考虑到网络故障检测法需占用一定的通信时间,参考CAN通信周期,将其设置为20 ms/次,以避免影响通信的时效性。
-
为了验证本文冗余系统的可靠性,即能否及时发现故障并进行处理,本文将人为制造故障并实时监测系统的运行情况。根据系统的设计需求,其故障检测的技术指标如表1所示。
表 1 故障检测指标
Table 1. Fault detection judgment index
技术指标 数值 故障响应时间/ms 50 故障检测成功率 0.9 CPU切换时间/ms 100 本文搭建了如图9所示的简易测试平台,即2个CPU均通过1路CAN与电脑相连,而电脑通过CANMonitor软件对CAN通信进行监测。由于本系统的核心是双CPU冗余,所以本文将在系统上电运行一段时间之后,人为对处于正常工作状态的主CPU进行复位,并根据CAN通信的监测结果来判断CAN通信是否受到了影响。如果CAN通信未受到影响且持续通信,则表明该系统可以及时切换CPU故障。
通过修改CAN通信的相关程序,将主CPU的CAN帧ID设为0x06,从CPU设为0x92。上电之后,主CPU发送02 04 08 16 32 64 B1 B6的8位数据,从CPU处于监测状态;如果从CPU接替工作,则发送A5 5A 05 82 00 03 00 01的8位数据。由图9(b)的测试结果可知,在主CPU发送了一段时间的数据之后,从CPU接替了其工作,从而保证了主CPU故障后的CAN通信不中断。
在现有的故障检测方法中,双冗余心跳检测法可以在一定程度上避免“双主机现象”,为了验证本文所提出的混成式故障检测法的优势,将进行故障检测能力对比。在相同的装置中分别下载2套检测程序,且2种故障检测的周期一致。通过模拟不同工况下的故障,对2种检测方法进行多次测试,其对比结果如表2所示。由于双冗余心跳检测法只能检测出CPU之间通信的以太网线故障,所以未计算其平均故障响应时间。从表2中可以看出,混成式故障检测法更为完善,准确性相对较高,且故障响应时间也表现尚可。
表 2 故障检测结果
Table 2. Results of fault detection
检测方法 检测指标 主机
故障从机
故障线路
故障双冗余心跳检测法 平均故障检测成功率 0.92 0.88 0.4 平均故障响应时间/ms 8.2 7.8 − 混成式故障检测法 平均故障检测成功率 1 0.96 0.96 平均故障响应时间/ms 10.3 10.4 44.6 -
针对双CPU冗余系统的故障问题,本文提出了网络故障检测法和第三方监控心跳法相结合的混成式故障检测机制。在没有增加硬件的情况下,第三方监控心跳法实现了双重心跳检测保障,从而避免了“双主机现象”,这对于舰船特殊的环境条件而言很有优势。通过将2种不同特点的故障检测方式相结合,就构成了一个比较完备的故障检测体系,其工程验证结果也表明了该故障体系的精确度与全面性。
Dual CPU redundant communication hybrid fault detection technology for ship borne station control system
-
摘要:
目的 为了提高舰船电站控制系统的可靠性,需解决双CPU热备冗余通信故障检测这个关键问题,为此提出一套完善的故障检测机制。 方法 基于传统的双CPU故障检测方法,提出由网络故障检测法和第三方监控心跳法相结合的混成式故障检测机制。基于双CPU冗余系统的设计架构,分析2种故障检测方法的软件原理以及工程实现流程。 结果 实物验证结果表明:混成式故障检测技术克服了传统故障检测方法的单一、仅针对CPU故障而忽视其外围通信故障,以及“双主机现象”等缺点,提高了故障检测的速度与精确度,可以保障双CPU冗余系统的平稳、可靠运行。 结论 研究成果可为舰船电站控制系统中双CPU冗余通信的故障检测方式提供参考。 Abstract:Objectives In order to improve the reliability of the ship power station control system and solve the key problem of fault detection in the dual CPU hot backup redundant communication, a comprehensive set of fault detection mechanisms is proposed. Methods After analyzing the traditional dual CPU fault detection, this paper proposes a hybrid fault detection mechanism combining the network fault detection method and the third-party monitoring heartbeat method. Based on the designed dual CPU redundant system architecture, the principles and software implementation of the two proposed fault detection methods are analyzed, and the proposed fault detection method is verified on an actual device. Results After the actual device inspection, the results show that the dual fault detection technology proposed in this paper overcomes the shortcomings of traditional fault detection methods, like focusing on CPU faults but ignoring CPU peripheral communication faults, and are prone to the "dual host phenomenon", and improves the speed and accuracy of fault detection to ensure the stable and reliable operation of the dual CPU redundant system. Conclusions The research results can provide a reference for the fault detection method of the dual-CPU redundant communication of the ship power station control system. -
表 1 故障检测指标
Table 1. Fault detection judgment index
技术指标 数值 故障响应时间/ms 50 故障检测成功率 0.9 CPU切换时间/ms 100 表 2 故障检测结果
Table 2. Results of fault detection
检测方法 检测指标 主机
故障从机
故障线路
故障双冗余心跳检测法 平均故障检测成功率 0.92 0.88 0.4 平均故障响应时间/ms 8.2 7.8 − 混成式故障检测法 平均故障检测成功率 1 0.96 0.96 平均故障响应时间/ms 10.3 10.4 44.6 -
[1] DAI W, LI W H, WAN F Y. Dual redundancy design of brushless DC motor for UAV steering gear[C]//Proceedings of 2018 International Conference on Sensing, Diagnostics, Prognostics, and Control (SDPC). Xi'an: IEEE, 2018: 279-283. [2] WANG S F, GUO J X, LI H B, et al. A method of high reliability board recognition applied to dual redundant architecture[C]//Proceedings of 2019 International Conference on Wireless Communication, Network and Multimedia Engineering (WCNME 2019). [S.l.]: Atlantis Press, 2019: 165-167. [3] 吕聪, 李华旺, 常亮. 星务管理中的双CPU冗余通信设计与实现[J]. 电子设计工程, 2017, 25(14): 92–95, 100. LV C, LI H W, CHANG L. The design and implementation of redundancy communication of dual-CPU in house-keeping system[J]. Electronic Design Engineering, 2017, 25(14): 92–95, 100 (in Chinese). [4] 徐一凤, 丰大军, 王皓, 等. 基于麒麟系统的SCADA状态诊断系统的设计与实现[J]. 电子技术应用, 2018, 44(5): 134–136, 143. XU Y F, FENG D J, WANG H, et al. The design and implementation of SCADA state diagnosis system on Kylin system[J]. Application of Electronic Technique, 2018, 44(5): 134–136, 143 (in Chinese). [5] 邹见效. 分布式测控系统容错关键技术研究[D]. 成都: 电子科技大学, 2009. ZOU J X. Research on key technologies of fault-tolerance in distributed measurement and control system[D]. Chengdu: University of Electronic Science and Technology of China, 2009 (in Chinese). [6] 张军永, 刘荣林, 李翼瀚. 一种基于双机热备份的同步监听值守策略设计[J]. 电子技术应用, 2019, 45(12): 106–109, 114. ZHANG J Y, LIU R L, LI Y H. A synchronous and listening guard strategy design based on dual-machine hot standby[J]. Application of Electronic Technique, 2019, 45(12): 106–109, 114 (in Chinese). [7] 张高明, 李维波, 华逸飞, 等. 基于W5200的双冗余以太网通信系统应用研究[J]. 中国舰船研究, 2018, 13(1): 127–132. doi: 10.3969/j.issn.1673-3185.2018.01.019 ZHANG G M, LI W B, HUA Y F, et al. Study of dual redundant Ethernet communication system centered on W5200 IC[J]. Chinese Journal of Ship Research, 2018, 13(1): 127–132 (in Chinese). doi: 10.3969/j.issn.1673-3185.2018.01.019 [8] 魏胜杰, 秦克, 谭显春. 舰载双冗余以太网系统数据监测技术及实现[J]. 中国舰船研究, 2010, 5(3): 59–62, 66. doi: 10.3969/j.issn.1673-3185.2010.03.014 WEI S J, QIN K, TAN X C. Technology and implementation of data monitoring system for shipboard dual redundant Ethernet network[J]. Chinese Journal of Ship Research, 2010, 5(3): 59–62, 66 (in Chinese). doi: 10.3969/j.issn.1673-3185.2010.03.014 [9] TAN L L, YANG L, LI S, et al. Simulation research on redundant mechanism of dual CAN bus[C]//Proceedings of the 2016 4th International Conference on Machinery, Materials and Information Technology Applications. [S.l.]: Atlantis Press, 2017: 401-405. [10] BI X D. Design and implementation of I/O modules based on dual redundant can bus[C]//Proceedings of 2015 International Conference on Mechatronics, Electronic, Industrial and Control Engineering. [S.l.]: Atlantis Press, 2015: 480-484. [11] 许智豪, 李维波, 华逸飞, 等. I2C总线技术在舰船能量管理系统I/O端口扩展中的应用[J]. 中国舰船研究, 2019, 14(1): 144–149. doi: 10.19693/j.issn.1673-3185.01129 XU Z H, LI W B, HUA Y F, et al. Application of I2C bus technology in I/O port expansion of ship energy management system[J]. Chinese Journal of Ship Research, 2019, 14(1): 144–149 (in Chinese). doi: 10.19693/j.issn.1673-3185.01129 -