Chinese Journal of Ship Research
舰船电站控制系统的双CPU混成式故障检测技术
卢月,李维波*,李巍,李齐,孙万峰 武汉理工大学自动化学院,湖北武汉 430070
引用格式:卢月, 李维波, 李巍, 等.舰船电站控制系统的双CPU 混成式故障检测技术 [J]. 中国舰船研究, 2021, 16(3): 200–207.
LU Y, LI W B, LI W, et al. Dual CPU redundant communication hybrid fault detection technology for shipborne electrical plant control system[J]. Chinese Journal of Ship Research, 2021, 16(3): 200–207.
摘 要:[目的]为了提高舰船电站控制系统的可靠性,需解决双CPU热备冗余的通信故障检测这个关键问题,为此提出一套完善的故障检测机制。[方法]基于传统的双CPU故障检测方法,提出由网络故障检测法和第三方监控心跳法相结合的混成式故障检测机制。基于双CPU冗余系统的设计架构,分析2种故障检测方法的软件原理以及工程实现流程。[结果]实物验证结果表明:混成式故障检测技术克服了传统故障检测方法的对象单一、仅针对CPU故障而忽视其外围通信故障,以及“双主机现象”等缺点,提高了故障检测的速度与精确度,可以保障双CPU冗余系统的平稳、可靠运行。[结论]研究成果可为舰船电站控制系统中双 CPU冗余通信的故障检测方式提供参考。
关键词:舰船电站控制系统;双CPU冗余通信;混成式故障检测
中图分类号: U665.12文献标志码:A DOI:10.19693/j.issn.1673-3185.01898 Dual CPU redundant communication hybrid fault detection technology for shipborne electrical plant control system
School of Automation, Wuhan University of Technology, Wuhan 430070, China
Abstract: [Objectives]In order to improve the reliability of shipborne electrical plant control systems and solve the key problem of fault detection in dual CPU hot backup redundant communication, a comprehensive set of fault detection mechanisms is proposed.[Methods]After analyzing traditional dual CPU fault detection, this study proposes a hybrid fault detection mechanism combining the network fault detection method with 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 actual device inspection, the results show that the proposed dual fault detection technology overcomes the shortcomings of traditional fault detection methods such as focusing on CPU faults but ignoring CPU peripheral communication faults, and susceptibility to the "dual host phenomenon". It also improves the speed and accuracy of fault detection to ensure the stable and reliable operation of the dual CPU redundant system.[Conclusions]The results of this study can provide references for the dual CPU redundant communication fault detection methods of shipborne electrical plant control systems.
Key words: shipborne electrical plant control system;dual CPU redundant communication;hybrid fault detection method
0 引 言
电站是现代舰船的重要组成部分,其可靠性
和稳定性将直接影响舰船电力系统的生命力。双 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 故障检测的速度与精确性,从而提高舰船电站控制系统的可靠性,并更好地适应舰船电站设备多、工况繁杂等情况。
1 双 CPU冗余系统架构设计
双 CPU 冗余通信系统的整体架构如图1所示,由 2 个 CPU 通过互冗余方式组成,每个CPU均通过一路以太网与集控台进行双向通信,完成分/合闸、报警故障等重要指令的上传功能,同时这 2 个 CPU 之间也通过以太网进行信息交互。由于控制器与集控台之间的距离较远,所以控制器(底层)与集控台(顶层)之间也采用以太网进行数据通信。以太网采用光作为介质,抗干扰能力强、传递数据多、传输速度快,可以保证高速数据传输信号的可靠性[7-8]。
图 1 中的2 个 CPU 都经由1路控制器局域网络 (controller area network, 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 可以发出指令,另一个处于备份状态,参与故障检测并随时准备故障切换。
2 双 CPU冗余系统的故障检测原理
为了提高舰船电站控制系统的可靠性,通信系统应具备一定的容错能力。一旦出现故障,通信系统应准确地检测、定位故障并进行实时处理,所以通信系统需要一种稳定、可靠的故障检测方案。为此,本文拟提出混成式故障检测方法,即将网络故障检测和第三方监控心跳集成一体的新型检测方法。
2.1 网络故障检测法
网络故障检测法可以对双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个节点和其间连线的运行状态,因此,各个节点状态的计算公式为
由式(1)~式(4)可知,如果与一个节点相连的所有连线状态λ 均为1,即故障,则可判定该节点故障。根据网络故障检测法的原理,CPU与所有外设通信的过程实际上就是连线状态检测的过程,当通信结束之后,通信线路和各个节点的状态都得以更新,所以该方法兼具全面性和便捷性。
2.2第三方监控心跳法
由于网络故障检测法是系统、全面的检测,所以需占用一定的时间成本,如果检测过于频繁,则将影响系统通信的时效性,因此,该方法适用于系统的定期检查,而不是实时故障检测。CPU作为舰船电站控制系统的重要设备,如果仅依靠网络故障检测法,则可能无法及时检测故障,这对于系统来说是致命的设计缺陷,因此,还需要采用一种专门为CPU进行故障检测的第三方监控心跳法。
传统的心跳检测法采用了单一线路进行故障检测,所以会出现“双主机现象”,而第三方监控心跳法可以解决这一问题。在不改变现有通信系统架构的前提下,仅需引入系统中的第三方设备——与 2 个 CPU均相连的集控台,即可形成双重心跳检测保障机制,如图3所示。
由图3 可知,主/从 CPU 之间仅有1路心跳检测,当主 CPU 向从 CPU发送心跳信号的同时,也会向集控台同步心跳状态,包括心跳信息和更新时间。如果从CPU在规定时间内未收到心跳信
息,则将主动向集控台查询,以确定主CPU 是否故障;如果确定是主CPU故障,则立即切换;如果不是,则标记通信线路故障。由于第三方查询的加入,实现了多点、多重检测,以避免因依靠单一通信线路而误判的CPU故障,从而提高了故障判断的精准度。与传统的心跳检测方法相比,第三方监控心跳法在正常情况下的故障监测时间并未延长,仅在未收到主CPU 心跳信息时,多了一项查询时间;由于该检测周期很短,所以对系统通信的实时性并无影响。
3 双 CPU冗余系统故障检测的工程实现
2种故障检测方法均利用定时器产生中断的方式进行周期性检查,其中网络故障检测法的检测周期大于第三方监控心跳法。当系统上电初始化之后,应先利用网络检测法进行上电检查,以确保系统可以正常运行,然后再进入主循环。
3.1网络故障检测法的工程实现
由网络故障检测法的原理可知,通过分析所有通信线的连线状态λ,即可掌握 CPU和所有外设的工作状态,其故障检测过程分为3类,简述如下:
1) 通信线故障检测。
CPU通过与其相连的总线向外设发送数据,如果在2个周期内收到正确的应答,则将该总线对应的连线状态λ 设为0 ,即表示该通信线正常。如果在2个周期内未收到应答或应答不正确,则将其连线状态λ 设为1,其检测流程如图4所示。
2) CPU故障检测。
CPU依次通过与其相连的总线向外设发送数据,如果在2个周期内均通信失败,即未收到正确的应答,则表明该CPU 故障,应将其对应的节点状态设为1。
3) 外设故障检测。
如果2 个 CPU 都收不到任何与该外设相连
的总线数据,则表明该外设故障,应将其对应的节点状态设为1;如果只是无法通过总线接收数据,则表明该总线故障,应将该总线对应的连线状态λ设为1。
因此,通过综合通信线、CPU 和外设的故障检测结果,即可准确定位故障部件,从而及时切换并部署维修。
3.2第三方监控心跳法的工程实现
相较于传统的心跳检测法,第三方监控心跳法在软件流程上多了主CPU 向第三方发送心跳信息和从CPU向第三方查询心跳信息的过程,其检测过程如图5所示。
上电之后,主CPU在每个周期都会向从CPU
发送特定的数据,即心跳信号;与此同时,主CPU
也会向集控台同步心跳信息,包括发送内容和发送时间。如果从CPU定期接收到正确的数据,则继续保持备机状态;如果从CPU 连续2个心跳周期没有收到数据或收到错误的主CPU 数据,则从CPU将主动查询集控台中的主CPU 心跳同步信息。如果查询到主CPU的同步信息正常,则判定为 2 个 CPU之间的通信线故障;若查询到主CPU最近一次的同步时间大于1个心跳周期,则将主CPU进行复位,同时从CPU 获得控制权,开始承担系统的主CPU任务。对于复位后的主CPU,将
采用网络故障检测法进行评估判断,如果其仍处于故障状态,则立即更换;如果可以正常工作,则处于备机状态。
4工程验证与推广应用
4.1通信装置介绍
本文通信装置所采用的CPU 芯片为 STM32 F417ZGT6,这是一款由 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/次,以避免影响通信的时效性。
4.2 工程验证
为了验证本文冗余系统的可靠性,即能否及
时发现故障并进行处理,本文将人为制造故障并实时监测系统的运行情况。根据系统的设计需求,其故障检测的技术指标如表1所示。
本文搭建了如图9所示的简易测试平台,即2 个 CPU 均通过1 路 CAN与电脑相连,而电脑通过 CANMonitor 软件对CAN通信进行监测。由于本系统的核心是双CPU冗余,所以本文将在系统上电运行一段时间之后,人为对处于正常工作状态的主CPU 进行复位,并根据CAN 通信的监测结果来判断CAN通信是否受到了影响。如果CAN通信未受到影响且持续通信,则表明该系统可以及时切换故障CPU。
图 9 CAN通信系统的实物图和测试结果
Fig. 9 Physical diagram of CAN communication system and its test results
通过修改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中可以看出,混成式故障检测法更为完善,准确性相对较高,且故障响应时间也表现尚可。
5 结 语
针对双CPU冗余系统的故障问题,本文提出了网络故障检测法和第三方监控心跳法相结合的混成式故障检测机制。在没有增加硬件的情况下,第三方监控心跳法实现了双重心跳检测保障,从而避免了“双主机现象”,这对于舰船特殊的环境条件而言很有优势。通过将2种不同特点的故障检测方式相结合,就构成了一个比较完备的故障检测体系,其工程验证结果也表明了该故障体系的精确度与全面性。
参考文献:
[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.
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).
[8] 魏胜杰, 秦克, 谭显春.舰载双冗余以太网系统数据监测技术及实现 [J]. 中国舰船研究, 2010, 5(3): 59–62, 66.
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).
[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.
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).