混合驱动水下滑翔器主从互转式应急控制技术研究
2020-06-06曹园山
王 健,曹园山,陈 伟
(中国船舶科学研究中心 水动力学国家重点实验室,江苏 无锡 214082)
0 引言
随着海洋监测手段和技术的不断发展,水下滑翔器作为一种低功耗,长续航的新型水下无人潜航器逐渐成为海洋监测领域的利器[1]。目前世界最高水平续航时间长达4个月,续航里程远达7千公里,潜深可至海底8千米[2]。水下滑翔器主要包括控制系统、动力系统、通讯系统、测量系统等,作为整个潜航器的大脑,水下滑翔器中央控制系统在复杂的海洋环境中保持正常运转的能力直接关系到整个潜航器的安全性。面对复杂的控制逻辑,目前只能通过长期的半实物仿真测试来发现设计中的问题,再根据问题实现软件和硬件的优化工作,通过上述方式的循环迭代来保证滑翔器控制系统的可靠性[3]。然而水下滑翔器的航行控制系统长期运行在冷热交变的环境下,不可避免会出现控制系统CPU宕机或损坏等情况。虽然可以通过建立看门狗电路的方式进行控制系统宕机处置,但是这种机械的复位系统的方式不仅无法解决CPU损坏问题,而且其重新复位存储区的粗暴方式并不适宜应用在实时控制的无人设备上。
本文提出一种基于分布式系统主从互转式双冗余控制装置及方法,利用主从互换式CPU,以可剥夺主控制权作为设计方法来预防单个中央控制器出现故障的情况,防止滑翔器失控;通过建立公共存储区,解决了切换时的数据丢失问题,避免了算法上因为数据丢失而产生的逻辑错误。
1 混合驱动水下滑翔器控制系统特点分析
图1 水下滑翔器航行控制器控制结构图
传统的水下滑翔器是通过自身浮力变化产生的动力进行水下运动的,其结构简单,运动部件少,控制系统的组成和结构相对单一,仅仅只能在水下作锯齿形的运动。相比于传统的水下滑翔器,混合驱动水下滑翔器增加了尾推进器以及尾舵。这种改变使其同时具备了水下滑翔器大范围滑翔探测与AUV精细搜索的双重作业功能,但是控制系统复杂性大大增加。混合驱动水下滑翔器航行控制系统需控制的设备有:剩余浮力系统、姿态调节系统、航姿系统、无线/卫星通信系统、推进系统、垂直/水平舵系统,同时需要搭载多种任务传感器如深度计、温盐深传感器、叶绿素传感器、测高声呐等,在保证滑翔器正常运转的前提下,需要对任务传感器进行数据采集、分析、存储[4-5]。混合驱动水下滑翔器又具备多种作业模式:连续滑翔作业模式、定深直航作业模式、路径搜索作业模式、滑翔直航混合型作业模式等。不同的作业模式对应不同的控制逻辑,滑翔器的中央控制器需要预存储一系列的控制方案并根据上位机的指令即时更换控制模式。如果采用单一CPU进行集中式控制,一方面硬件系统设计的复杂性急剧提升,设计时需综合考虑整个系统硬件系统的兼容性,抗干扰性等,否则会因为某一系统引入的干扰导致整个CPU的崩溃;另一方面运行程序功能性臃肿,设计程序时既需要根据不同的作业模式进行逻辑运算,又需要依据逻辑运算的指令进行底层控制,增加了CPU的负担,降低整个系统的可靠性。[6-7]
2 水下滑翔器主从互转式控制系统架构设计
水下滑翔器的作业特点就是低功耗、长航程,因此水下的滑翔器在作业过程中难免会遇到冷热交变、波浪晃荡、外界干扰等环境因素的影响,滑翔器控制系统极易出现可靠性的问题。通常软件上会出现程序跑飞死机的状况,硬件上会出现CPU过热或者硬件损坏的情况。出现硬件损坏滑翔器几乎无法通过任何的措施恢复,而出现程序跑飞死机时,虽然可通过软件看门狗进行监测后进行软件重启,但是重启软件导致的数据丢失和程控逻辑失序现象却对自主运行的滑翔器来说有着极大的控制风险。
为了进一步减小控制器故障给滑翔器带来的运行风险,采用主从分布式设计的方式进行系统设计,分别对水下滑翔器控制系统中的控制结构、控制方法上进行了针对性的优化设计。
控制结构上,将原单一CPU的航行控制器功能一分为二,分为逻辑运算控制器和底层驱动控制器。在正常情况下,两个控制器并行运行,互有分工。逻辑运算控制器主要进行信息接收、处理与运算——经由通讯系统传输的控制命令首先到达逻辑运算控制器,通过命令解析获取当前任务的作业模式、运动参数和约定通讯节点;控制器根据任务传感器、航姿系统发送的滑翔器当前状态信息以及不同的作业模式和运动参数调用滑翔器多种作业模式的程序信息,生成相关的执行命令传输给底层驱动控制器。底层驱动控制器主要是进行动作部件的操控——一旦接收逻辑运算控制器传输过来的指令控制,底层驱动控制器就会利用内置的外设驱动指令对滑翔器的舵角、推进器转速、剩余浮力以及姿态调节进行相应的控制。
控制方法上采用主从式CPU、互控电源、建立公共存储区等方式来规避单CPU模式下可能出现的CPU宕机或者损坏的现象。其结构如图2所示。
图2 水下滑翔器主从互转式控制系统架构图
主从式CPU也即航行控制器中的逻辑运算控制器和底层驱动控制器在正常情况下是互有分工的,但是当一个控制器出现故障时其中一个正常控制器可以直接接管另外一个控制器的所有功能。设计中,对关乎潜航器航行安全的基础运动系统(浮力系统、通信系统、姿态系统)做到双CPU同时可控,以降低单CPU所带来的控制风险。依据各个系统的控制特点通信系统、姿态系统利用CAN总线与主从CPU相连;剩余浮力系统通过电源IO控制实现。为了达到双CPU控制的目的以满足主控CPU互换的要求,设计了门双信号决策电路,任意一路信号有效则生成高电平触发信号控制电源开关继电器,从而保证任一CPU都能控制剩余浮力装置的动作。
为了使得主从式CPU能够互相监控对方CPU的运行状态,采用为“心跳”信号互监控方式。也即在每个CPU上分别设置专用的PWM脉冲输出脚和PWM脉冲读取管脚,通过实时监控脉冲输出情况来实时监测CPU的运转情况,当CPU出现死机或者硬件损坏时,相应管脚的PWM脉冲必然停止输出,以此来监测CPU的状态。一旦一个CPU出现异常,另一个CPU随即进行部分功能的接管。
图3 控制系统电路图
为保证应急控制中的电量供应要求,设计了互控电源电路。互控电源也即逻辑电路中的受控独立电源。为保证双CPU的受控独立控制,使用双CPU互控电源装置来对双CPU进行供电,系统电路图如图3所示。该电源装置输入为主供电电源,输出为两个独立控制的互转CPU供电电源。供电电源采用互锁的控制结构,即主从CPU的供电链路是由对方进行单独控制。实际使用当中,利用对方CPU产生的控制信号通过三极管9013在基极进行下拉进行信号自锁,只有当收到信号时才会动作一次,即使发生信号中断等情况也不影响装置的供电状态。这种互锁的结构既能够保证主CPU根据控制指令进行断电重启,重新恢复控制能力,又不会够影响从CPU的正常工作,从而确保控制器逻辑的顺利实施。
考虑到独立存储区在CPU宕机时的信息更新脱档以及断电重启的复位情况,使用E2PROM-AT24C04建立了双CPU可以同时访问的公共存储区。该存储区能够被主从CPU访问与写入,具备掉电保持功能,其中存储了滑翔器滑翔所必备的关键程序和参数如:通讯指令解析程序、多作业模式控制程序、滑翔周期、滑翔深度、滑翔时间等,同时替代了主CPU部分堆栈功能,暂存主CPU运行阶段的关键参数如:滑翔运动阶段,当前时刻等。在主CPU死机后,从CPU能够从中获取死机前的关键参数使得滑翔器控制器逻辑运算不断档,同时在宕机的主CPU复位后能够获得最新的滑翔器关键参数,使得滑翔器的控制器恢复初始的冗余功能。
3 水下滑翔器应急软件设计
水下滑翔器的软件系统中采用的是UCOS操作系统进行编程。UCOS是一个可移植、可固话、可剪裁的、占先式多任务实时系统。在进行软件编程时,每个控制任务都可以在系统中设置独立任务,每个独立的任务都能够并行运行,保证整个控制系统的实时性。在进行水下滑翔器应急软件设计时分为逻辑运算控制器软件以及底层驱动控制器软件。其中逻辑运算控制器软件承担了主要的运算工作,需要进行滑翔器上压力、CTD、叶绿素等各个传感器报文的读取和解析,通过压力传感器测量的深度数据对当前是否需要进行浮力装置的出油或者进油,或者航向的情况判断舵机的打舵角度;而底层驱动控制器则是接收到逻辑运算控制器的指令对底层的电机、舵机进行驱动控制。软件运行步骤逻辑分别如图4和图5所示。软件主要的作业流程为:
1)主控系统进行相关寄存器以及控制引脚的初始化。初始化完成后从外置公共存储器内读取相关状态参数包括:当前作业任务类型,当前作业阶段,当前滑翔状态,滑翔周期数、滑翔深度、滑翔时间等。
2)读入相关参数后,程序进行自动切换,切换到滑翔器程序运行点,继续进行滑翔器滑翔运动。
3)主控CPU在程序运行后会每个500 ms发送一次脉冲电平,该电平被发送到底层辅控CPU,用于判断主控CPU是否死机。
4)底层辅控CPU开始进行相关功能初始化,然后进行相关控制权的判断。辅控CPU有两种运行模式一种是主控制权获得模式,当获得主控制权后会接管主控CPU的任务,对滑翔器进行运动控制。另一种是主控制权未获得模式,在未获得模式下控制器只执行底层的命令执行任务。
5)底层辅控CPU在获得控制权后,会接管滑翔器控制滑翔器进行相关的潜浮任务作业,同时会对主控CPU脉冲口进行监控,当连续收到主控CPU发来的脉冲后,表示主控CPU已重启完成,CPU释放相关控制权。
6)底层辅控CPU如未获得控制权,每50 ms会进行底层任务的扫描,同时会实时监控收到的脉冲电平信号,如发现未收到脉冲信号则获得控制权,读取外置存储器的参数,重启主控CPU。
图4 逻辑运算控制器控制流程
图5 底层驱动控制器控制流程
在正常情况下,逻辑运算控制器执行了滑翔器控制器中大部分的运算任务,滑翔器的主要的任务计算都是由逻辑运算控制器进行,而底层驱动控制器作为从控制器主要进行控制逻辑的底层分配和逻辑运算控制器的监控作用。出现紧急情况后,从控制器监控到主控制器的PWM输出引脚没有输出PWM信号,软件立即控制从控制器进行主控制器的控制权剥夺,并通过断电和重新上电的方式同步进行主控制器的重启动作。在主控制器的重启过程中,从控制器会根据公共存储区的算法进行滑翔等工况的运算和逻辑判断工作,等待主控制器重启完成,从控制器立即释放主控制权,继而整个系统回归正常工作状态。这种主从的功能分配方式尽可能保证了每个控制器的软件功能相对单一,正常工作时每个控制器的运算负荷也较小,保证了滑翔器控制系统的运行安全。
4 实验验证
为了进一步验证主从互转技术的实用性,以中船重工第七〇二研究所研发的USE-Ⅲ型混合驱动水下滑翔器为控制对象,将主从互转式应急控制技术应用于该型水下滑翔器的控制系统中,于中国南海海域进行了海上测试。
本次海试的试验区域海水的平均深度约1 000 m,且不处于主要的海上航道和捕鱼区域,水面和水下的障碍物比较少,非常适合进行水下滑翔器大深度的滑翔试验。
本次海试的部分工况包含连续滑翔的过程,项目组根据任务要求对滑翔器进行了连续工作能力的测试,利用滑翔器上搭载的剩余浮力驱动装置进行了反复多次的下潜上浮作业,滑翔器上搭载的深度传感器数据图6所示。经过连续3天72小时共计103次的下潜测试,水下滑翔器的各项功能运行正常,控制系统中保存的时间、温盐深等数据连续,未出现任何由于CPU宕机而产生的数据丢失、滑翔器失控等问题。
图6 滑翔深度数据
5 结束语
传统的水下滑翔器因其低功耗、长续航以及低噪音的特点,是海洋调查作业的有力工具,然而这种优势导致的功能单一问题也成了限制其发展的一个短板。为了进一步扩展水下滑翔器的应用范围和应用功能,使其能够应对更多的水下环境以及水下作业任务,混合驱动型水下滑翔器应运而生。随着使用功能和范围的增加,水下滑翔器丢失的案例屡见不鲜,其海上运行的安全性成为了该学科一个永恒的话题,水下滑翔器的应急控制技术也成为水下滑翔器应用关键技术之一。在普遍使用应急抛载的现状下,实时解决因控制器问题导致的滑翔器失控具有非常重大的现实意义。根据水下滑翔器长期运行中普遍存在的CPU宕机现象,利用逻辑电路方面的优化,使用双CPU主从互转代替单CPU的冗余方式,进一步增加了滑翔器中控制核心安全稳定运行的时间,减少了单一CPU由于宕机造成的滑翔器失控风险。虽然主从互转的控制方法在海试中的成功应用是水下滑翔器应急控制方面的一次成功尝试,然而对于这类潜航器的控制器来说,使用单片机为核心的控制器还需要进一步进行长期的测试才能发现其中存在的时序或者逻辑问题。