张庆国
(昆明船舶设备研究试验中心,云南 昆明650051)
水下航行体/平台的中近程通信多为水声、光电或电磁等方式[1-2],但超远程通信常依赖卫星定位导航系统,如我国自主研发的北斗系统。北斗卫星导航系统在水下航行体/平台和多种水下武器装备上应用极为广泛,发挥重要作用,产生显著的经济和社会效应[3]。在实际海上使用过程中,如航行体在浮起点规定时间内未能通过北斗卫星导航系统进行有效定位和通信,则可能会造成航行体在海上丢失或损伤,也无法对其后续工作流程进行远程操控。因此,在某型水下航行体中,内部北斗工作状态直接影响其性能指标的实现,甚至成为该水下航行体主要功能及战技指标是否实现的关键点。
航行体在水下航行时,用来卫星导航通信的天线将被海水淹没,无线信号被屏蔽。因此,通常只在航行体浮出水面或利用水面浮标等方式短时间内完成信息传递[4-5]。即使北斗天线采用折叠或伸缩结构,在一定程度上可解决天线产生的航行阻力与无线通信效果之间的矛盾问题,但天线在水面伸出高度依然较低,距离水面较近。可见,水下航行体利用北斗卫星进行通信定位时,天线基本处于水面附近,天线随着水面浪涌摆动姿态很难准确控制[6]。同时,航行体北斗接收信号还受水面反射杂波等众多不利因素干扰[7]。另外,常规水下航行体内部空间、功耗均有一定限制,特别是航行体内部采用电池供电方案时,需着重考虑水下航行体的航程、航速等总体要求,使得内部电子系统应为小尺寸、低功耗,不能影响总体性能指标的实现。
北斗一代通过卫星无线电测定方式来确定用户位置,需要用户进行定位申请,通过地面站的计算获得定位信息。北斗二代采用卫星无线电测定和卫星无线电导航相结合的集成体制完成用户导航定位,属于被动定位范畴。北斗三代相对于一代和二代而言,属于全球组网,具备更高的精度和可靠性。近年来,国内外在北斗状态实时监控方面发展较为迅速,可对当前卫星数量、位置精度强弱度(Position Dilution Of Precision,PDOP)等数值进行实时监视,较好解决了北斗接收端实时状态故障问题,大大提高了北斗系统应用可靠性。但某型水下航行体属于首型,基于北斗卫星系统的水下航行体批量交装产品,基于北斗一代设计。受当时技术条件,以及当前交装现状等具体条件限制,之前基于北斗的定位通信设计存在一定的不足,导致某型水下航行体存在偶发性北斗故障情况发生。考虑某型水下航行体生产交付及实际使用情况,不更改航行体内部组部件,在北斗内部新增实时监控系统成为当前最佳解决方案。
综上所述,某型水下航行体的内部北斗工作状态对其安全性和可靠性影响极大,甚至对其功能和性能造成较大影响。因此,有必要在某型航行体内对北斗工作状态进行实时监测,并在适当情况下进行介入性操控,以提高该水下航行体的实航可靠性和安全性。
北斗卫星导航系统是我国自主研发的,可以覆盖我国及周边部分地区的全天候卫星导航系统。其基本定位原理是根据全球卫星导航系统(Global Navigation Satellite System,GNSS)接收机接收到同步卫星发送信息之后,进行时间对标。然后解算卫星伪距并利用空间几何距离交会,实现对接收机的定位[8]。以典型一代系统为例,主要由导航卫星、中心控制、标校和北斗用户终端几个部分组成,具备定位、授时和短报文卫星通信功能[9]。基本工作原理如图1所示。
图1 北斗卫星导航系统基本工作原理示意图
如图1所示,“北斗一代”的导航卫星由位于赤道上空的两颗地球静止卫星(东经80°和140°)、一颗在轨备份卫星(东经110.5°)组成,它们的轨道高度约为20 000 km[10]。“北斗一号”的覆盖范围是北纬5°—55°、东经70°—140°之间的区域,最宽处在北纬35°左右。“北斗一代”导航系统的定位精度约为水平精度100 m(1σ),设立标校站之后为20 m(类似差分状态)。工作频率分别为1 610 MHz~1 626.5 MHz(L频段,上行链路)和2 483.5 MHz~2 500 MHz(S频段,下行链路)。其基本工作过程是,北斗用户终端通过北斗导航卫星向地面中心控制提出定位申请或通信申请,中心控制接收到服务申请后进行相应的处理,并将处理结果通过北斗导航卫星发送给北斗用户终端,从而实现相应的通信、定位功能。关于北斗通信方面,不同等级终端用户拥有不同的频率和通信带宽,通常可实现每分钟120字的通讯功能。为了更好理解该监控方法和实施环境,给出某型水下航行体内部北斗结构基本框图,详见图2所示。
图2 某型水下航行体内部北斗接收部分结构框图
如图2所示,北斗状态监控程序对应接口较多,按照功能可分为供电和通信两种。供电接口主要为水下航行体提供稳压直流供电电源,通信接口主要为控制器局域网络(Controller Area Network,CAN)、串行通信接口(如RS-232、RS485等)等[11-12]。其中自检接口及状态监控接口为本文方法中预留的查询及调试接口,如试后读取内部记录信息等。由于某航行体属于早期定型且批量交装产品,通常情况下其组成结构不能及时进行大幅更改。同时,考虑该型水下航行体的后续生产使用及维护保养等相关方面,采用在航行体北斗组件现有内部空间内增加实时监控部分(航行体内组部件组成及结构均不发生变化),对实航使用过程中发现的偶发性北斗故障问题进行解决。因此,需要本文涉及的北斗状态实时监控系统具备小尺寸和低功耗功能,以满足不更改航行体组部件结构,在北斗组件内部安装及供电等需求。结合某型水下航行体北斗组件内部空间,这里设计新增北斗状态监控电路集成安装在北斗组件盒内部,航行体接口及组成结构不发送变化。北斗组件内部新增部分安装结构如图3所示。
如图3所示,某型水下航行体北斗组件为独立的金属屏蔽盒结构,新增北斗状态实时监控系统电路集成安装在上述金属屏蔽盒内,具体尺寸为95 mm×63 mm×6.5 mm。图3中的北斗状态实时监控电路板利用原有4个安装孔进行固定安装,内部A区域和B区域最大高度实际只有13 mm和7 mm,否则无法顺利安装在现有北斗金属屏蔽盒内。如采用常规隔离电源模块和继电器方式构建,其整个新增电路高度高达20 mm及以上,无法满足上述尺寸安装要求。因此,该硬件设计采用电源隔离芯片加负载开关的方式,控制整个新增电路高度为6.5 mm,以满足实际安装尺寸要求。另外,某型水下航行体为电池供电方式,预留的供电余量有限,新增电路必须尽可能地满足低功耗,降低对水下航行体电池消耗。新增北斗状态实时监控电路部分摒弃常规大规模处理器外加通信接口芯片的结构方式,采用微控制处理器(Micro Controller Unit,MCU)加软件模拟外设接口方式,将该新增控制电路功耗控制在20 mW以内(实测19.2 mW),满足航行体北斗组件供电预留余量1%(50 mW)的具体要求。
图3 航行体北斗内部新增状态监控部分安装结构图
硬件设计中,某型水下航行体北斗状态监控软件运行平台为可国产替代的某型号嵌入式处理器,该处理器除了具备常规小尺寸、低功耗等特点外,内部集成多种常规通信接口。
某型水下航行体北斗状态监控方法与程序主要功能是,独立对航行体内部北斗状态进行实时连续监测,并依据相关判断准则进行数据解算和预测,当判断北斗工作状态出现异常情况时,临时性介入操控。如单独对总线上的北斗进行重置复位、指令初始化,以及单次通信或定位申请控制等操作。
为了进一步简化硬件结构尺寸和功耗,在程序设计中除了常规进行选择性休眠外,采用软件方式进行部分通信监视接口的模拟实现。由于受尺寸和功耗等条件限制,该监控程序的硬件平台只有一个RS-232硬件串口,为了更可靠对北斗状态进行实时监控,还需多个RS-232串口对其他部分状态接口进行并行监测。因此,在软件设计中采用软件模拟通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)方法实现常规通信功能[13-14],即利用常规处理器的输入与输出接口(Input/Output,I/O)构建一个软件模拟的UART串口(如RS-232协议通信口)。该方法可在节省硬件资源和处理器带宽的前提下,几乎完全模拟硬件UART的功能。
该程序主要负责对某型水下航行体北斗状态数据的实时解算,并对自身硬件平台工作参数的实时监测,综合上述测量信息进行北斗状态的综合评价,当满足判断条件时,对北斗处理器进行干预处理。软件主要接口见图4所示。
图4 程控框架结构图
如图4所示,虚线框内为监控软件对应部分。对应监控功能,该软件主要接口有三部分:(1)内部工作状态测量接口,如内部工作电压、电流、通信状态,以及内部记录存储等;(2)航行体总线接口,如CAN、供电等;(3)北斗处理器接口,如CAN、RS-232,以及及时操控等。软件主要处理步骤如下。
(1)监控软件初始化。含嵌入式处理器内部串口、软件UART、AD采样、外部中断等。
(2)对北斗卡信息进行实时解算与存储。按照约定加密算法进行解算当前北斗卡信息进行解算,并存储后计算获得相应北斗处理器控制信息包。
(3)规定动作执行。如硬件负载开关默认打开,发送北斗处理器初始化指令信息等。
(4)实时监控总线及接口信息,进行实时解算和判断。根据总线信息对当前点位的北斗卫星状态进行预先解算,并对北斗处理器的原始输出接口进行定时监测。
(5)对北斗处理器进行实时介入性操控。如北斗处理器长时(如10 s以上)输出信息不正常,则对北斗处理器进行操控。
(6)试后查询及调试等功能。如试后可按约定加密指令,实现单独调试或内部Flash记录信息读取等。
基本程序流程如图5所示,t和T分别为与北斗工作先关的时间参数,通常以秒为单位。其中Flash(Flash EEPROM Memory,Flash)检查及标记,是为了通过校验的方式,确保每次工作前明确获得用于内部信息记录的Flash状态,防止偶发性Flash内部个别“坏点”造成记录数据错误或失效[15]。记录信息1主要是当前时间,北斗工作电压、电流,以及卫星定位经纬度、波束等信息。记录信息2主要是当前时间,北斗处理器瞬间工作电流、当前接收点卫星波束,以及介入性操控次数等信息。
图5 程控软件流程图
硬件UART通过连接处理并行对北斗处理器的串口发送及接收端进行监测和控制,软件UART连线并联在北斗处理器的串口发送端上进行当前并行串口数据监测,避免并行发送数据造成数据紊乱,导致故障报错。软件模拟UART主要是为了降低硬件复杂度,同时降低整体功耗,利用通用I/O口模拟串口对航行体北斗串口进行监测。
软件UART设计需要在硬件占用和速度/效率之间权衡,使用较多硬件的设计可能消耗较小的处理器带宽并允许较高的位速率。常规设计中多采用定时器方式,如可将16位硬件定时器分为8位用于UART发送,8位用于UART接收。虽然定时器带有自动重载功能,可减少软件开销并降低或消除中断延迟问题,但软件控制需考虑随机的中断延迟带来的累加问题。结合硬件平台实际情况进行综合考虑,采用内部可编程计数器阵列(Programmable Counter Array,PCA)来实现软件UART。PCA包含一个专用的16位计数器/定时器和5个16位的捕捉/比较模块。每个模块都可以被设置为,在PCA计数器与相对应的比较模块的内容一致时触发中断。由于PCA计数器不会停止运行,比较模块可在每个位时间点进行更新,以精确产生下一个位时间。另外,PCA还提供一个在起始位检测中很有用的捕捉功能,便于多中断的程序设计与实现。因此,采用PCA方式进行软件UART模拟,可以避免多次中断延迟累加的问题,且便于嵌入式程序实现。软件UART设计主要流程如图6所示。
如图6所示,UART的接收和发送均采用中断方式,需要注意的是接收中断对时间要求较高,即对时间延迟比较敏感。因此,需软件UART的接收中断需要较高优先级。
图6 软件UART通信流程图
当软件UART被初始化时PCA模块被配置为下降沿捕捉方式,如果在接收引脚检测到下降沿,则会产生一个中断。由于模块工作在捕捉方式,PCA计数器的内容被装入到相应寄存器。此时,该值与中断响应延迟无关。通过强制PCA模块产生中断来启动一次发送,如在发送引脚设置为低电平以产生起始条件。此时读取PCA计数器的值,并将该值加上一个位时间后装入到模块捕捉寄存器。经过9次移位后,数据字节与停止位被发送。最后,发送结束标志被置位,发送忙标志被清除,发送状态变量被复位。
由于某型航行体内电磁环境较为复杂,内部北斗状态异常与航行体总体电磁环境密切相关。而对整个北斗组件重新设计,牵扯到航行体组部件级更改,手续复杂且时间效率较低,不能满足某型水下航行体实际使用需求。因此,在更改最小范围框架下,新增实时监控系统部分称为了最佳解决方案。但必须重视电磁环境干扰设计,因此需对新增监控电路进行相应环境测试。
该环境测试主要依据国家标准《系统与软件工程系统与软件质量要求和评价(SQuaRE)第51部分:就绪可用软件产品(RUSP)的质量要求和测试细则》(GB/T25000.51—2016),对软件功能性和可靠性程度进行第三方测试,测试通过后。利用标准测试设备对运行该监控软件的系统进行试验测试,具体为环境和电磁兼容性测试。
环境试验测试主要依据国内某型号水下航行体的专用环境试验要求,进行综合环境试验测试。供电采用标准稳压电源,接口均为通用标准通信接口,并模拟北斗工作状态数据,定时发送至本监控系统。测试项目及结果见表1所示。
表1 环境试验测试结果
电磁兼容性测试主要依据《GJB151B—2013军用设备和分系统电磁发射和敏感度要求与测量》相关要求[16],对该系统核心部分(含硬件及软件)检测了CE101、CE102和CS101、RS103测试项目,主要对其电磁兼容性进行试验测试,主要测试结果见表2所示。
表2 电磁兼容性测试结果
新增北斗状态实时监控系统主要是为解决某型水下航行体在实航过程中,偶发性的北斗故障问题。为测试新增北斗状态实时监控电路是否能实时进行航行体内部北斗状态监测,并在规定时间内完成相应控制等功能,采用逐级测试方式进行功能验证。(1)单板测试。利用外设标准串口(如计算机串口)模拟北斗组件通信接口,利用标准外设串口连接新增监控系统电路,人为控制外设串口长时停发北斗信息,或发送错误北斗信息方式,观察新增监控系统电路是否识别并对负载开关进行控制,同时按时序通过串口进行北斗组件的初始化等相关信息重置;(2)联合测试。将新增监控系统电路接入航行体北斗组件,人为关闭或打开航行体北斗天线屏蔽罩的方式模拟航行体北斗状态故障情况,观察新增监控系统电路监控动作是否满足设计要求;(3)实航测试。搭载某型水下航行体,在国内某深水湖进行实航测试,利用以往多发故障水域进行北斗状态实航测试。试后读取监控系统内部数据进行控制过程是否有效判别。具体试验测试结果见表3所示。
如表3所示,其中单板和联合两种方式测试均为人工模拟故障情况,观察监控系统电路是否进行了准确的识别与控制,通过多次模拟测试,证明该新增实时监控系统能够在北斗组件通信断开或北斗解算数据错误时进行重新复位及初始设置等操控,在规定时间内(2 min)完成重新置位及解算,防止航行体北斗组件故障状态无法自行重置导致长时无法定位通信现象发生。由于某型水下航行体实航北斗故障属于偶发性现象,很难固定复现,本次实航5次过程中,只有1次真正复现,通过试后读取新增北斗状态实时监控系统内部记录数据,证明在实航过程中,航行体北斗组件存在长时数据解算错误导致通信异常情况发生,而监控电路准确识别,并在规定时间内完成北斗组件重置操作,与实航中观察某浮起点位通信时间长达10 min,12 min后通信及定位正常现象一致。
表3 功能试验测试表
某型水下航行体受早期技术条件限制,基于北斗一代的卫星定位及通信部分设计存在一定不足,并未设计有相应的北斗状态实时监控部分,导致实航中偶发北斗故障问题。基于某型水下航行体交装现状,在不更改某型水下航行体组部件结构基础上,提出一种在航行体北斗组件内增加实时监控系统的方式,在规定时间内进行相应操控,以满足当前该水下航行体实航使用需求。
该北斗状态监控方法在航行体内部空间、功耗等受限条件下,摒弃常规的隔离电源和继电器等大尺寸元件构建方案,采用微型芯片加负载开关等方法实现硬件接口隔离,以满足实际的安装、功耗,以及电磁兼容性等要求。在程序设计中,提出一种基于软件模拟UART方式对通信总线数据进行并行监测,并利用多个UART进行串口并行数据流监控方法,避免并行串口监测过程两个发送端同时发送数据出现故障问题。充分考虑航行体内部电磁环境实际情况,结合硬件平台进行环境试验和电磁兼容性试验,试验结果表明该方法及程序设计满足实际使用要求。可满足航行体内部结构及电子环境等要求,在航行体内部复杂工况下实现内部北斗状态的实时监测与及时操控等功能。另外,在国内某深水湖完成该型水下航行体的实航验证。
该方法与程序结合北斗处理器输出数据进行实时处理解算,根据当前点位的北斗卫星状态进行分析判断,从而在航行体北斗工作异常时,进行相应操控,进一步提高某型水下航行体北斗工作可靠性,从而提高实航安全性,具有较高的工程实用价值。