多枚XBT/XCTD自动投放与测量控制系统的设计
2021-06-24王心鹏门雅彬孔佑迪张东亮
王心鹏,刘 宁,门雅彬,孔佑迪,张东亮
(国家海洋技术中心,天津 300112)
海水温度和电导率是重要的海洋环境要素,测量这两类数据对水下温度、盐度、密度的分布情况以及声波传播速度的研究具有重要意义,可为海洋科学研究提供重要的数据支撑。投弃式温度剖面测量仪(XBT)和投弃式温盐深剖面测量仪(XCTD)是能够测量海水温度剖面和电导率剖面的两种投弃式仪器,是海洋调查领域重要的测量手段[1]。
通常,XBT和XCTD在使用时由专业测量人员使用手持式投放装置进行人工投放,该方式受人为、天气和海况因素影响较大。近年来,随着电子和自动化技术的不断发展,自动投放装置的研制受到了国内外海洋领域的关注,取得了一定的进展。美国的洛克希德·马丁·斯皮坎公司(Lockheed Maritin Sippican,LMS)、日本的鹤见精机公司(TSK)均已研制出相关产品[2]并已安装到测量船上进行使用。在国内,国家海洋技术中心[3-4]、山东省科学院海洋仪器仪表研究所[5]、西安天和防务技术股份有限公司[6]等单位对探头自动投放技术进行了深入研究,设计了不同类型的自动投放装置。但目前这些投放装置的探头一次性装载数量有限,当遇到恶劣海况或进行密集化、网格化的海洋调查时,频繁的探头人工装填为现场操作带来诸多不便。因此,自动投放装置一次性容纳较多数量探头的能力就变得尤为重要。
本文提出的XBT/XCTD自动投放与测量控制系统由投放控制前端、通信控制与数据采集中端、供电单元后端和上位机软件4部分组成,每组投放控制前端具有6个投放单元,前端具有扩展功能,可根据使用需求进行数量增减,通信控制与数据采集中端最多可同时连接8组前端,实现48枚探头的一次性装填和自动投放。系统的中端接收来自控制室上位机的投放指令后,分配给对应编号的前端,探头投放后采集并实时处理测量数据,通过网线回传上位机。供电单元后端位于控制室内,为系统提供所需的直流供电,在保证系统正常运行的同时,其直流供电的特点也保证了甲板操作人员的安全。上位机软件可根据XBT和XCTD测量原理的不同,对两种探头进行自动区分,完成测量数据的实时计算和剖面测量曲线显示。系统能够在测量船停航或走航条件下完成对海水温度和电导率剖面数据的快速获取,在恶劣海况下完成投放测量任务,具有探头装填数量多、自动化程度高、便于操作等特点,对传统人工投放方式起到良好的补充作用。
1 系统总体设计
系统的硬件部分主要由投放控制前端、通信控制与数据采集中端、供电单元后端3部分组成,其硬件组成框图如图1所示。前端的硬件部分包括主控芯片、电源模块、直流电机驱动电路等部分,中端包括探头数据采集模块、GNSS定位模块、通信控制模块、RS232转网络模块、供电和数据采集接口等,供电单元后端主要由开关电源、上电开关、过流保护器等模块组成,为系统提供稳定的直流供电。系统的投放控制前端电路板尺寸小巧,可直接安装在投放架内部,具有节省空间、走线规整等特点。中端最多可同时连接8组前端,通过控制前端相应的直流电机带动每枚探头前部的挡板运动,可实现多枚探头的依次投放与测量数据采集处理。
图1 系统组成框图
2 硬件设计
2.1 主控芯片选型及设计
经对不同型号的单片机参数性能进行对比,项目组选用Silicon Laboratories公司的C8051F020微控制器作为通信控制与数据采集中端的控制芯片,具有64kB可编程FLASH和4 532字节SRAM,是完整的混合信号SoC芯片,70%的指令执行时间为1~2个时钟周期,片上外设充足,具有丰富的IO资源,其性能能够满足设计需求。由于投放控制前端的主控芯片只负责电机动作机构的控制和通信任务,因此选用资源相对简单的C8051F021芯片,以节省研制成本。
2.2 电源管理模块
2.2.1 供电单元后端 由于前端和中端均安装在甲板船舷处,为保证系统工作时设备及人员的安全,使用直流电源为甲板设备供电,该设计方案能够有效地避免甲板操作人员因意外或设备短路导致的触电风险。前端和中端的工作电压为12 V,考虑到长距离供电传输时直流电压在线缆上的损耗,将后端的输出电压设定为24 V。在供电单元后端内,使用两台交流220 V转直流24 V的开关电源,为控制电路和直流电机分别供电。
2.2.2 硬件电路电源模块 投放控制前端、通信控制与数据采集中端使用的电源芯片根据其电路上其他元器件的工作电压范围确定。在设计时,以上两个单元使用相同的电压变换结构:首先将来自供电单元后端的24 V电压通过芯片LM1085IS-12降低至12 V,然后使用LM2575S-5.0芯片将电压降至5 V,再使用LM2937ES-3.3芯片将电压降低至3.3 V,供单片机及其他数字器件使用。对于电机驱动芯片,使用独立的12 V电压为其供电,避免电机启动停止时产生的干扰对其他数字器件的逻辑电平产生影响。
2.3 通信接口模块
通信控制与数据采集中端能够和多组前端进行通信,由于前端和中端均安装在夹板船舷处且间距较近,因此采用RS232全双工通信方式。单片机的UART串口资源有限,为使系统具备同时连接多组前端的能力,需要对串口数量进行扩展。选用EXAR公司的XR16L784串口扩展专用芯片,合理搭建外围电路并编写配置程序,实现多路串口扩展功能[7]。
每片XR16L784芯片可扩展4个UART串口,该设计使系统能同时连接8组前端。在程序配置时使用单片机的EMIF功能[8]使其工作在非复用模式下,其中P5和P6口分别与两片XR16L784芯片的地址总线连接,P7口及读写控制线(WR、RD)与两片芯片的数据线和控制引脚同时连接。由于在同一时刻只有一组前端处于工作状态,因此通过合理配置,该数据总线连接方式不会产生冲突。基于C8051F020单片机丰富的IO资源,设计时没有采用锁存器芯片和单片机端口复用的模式,减少额外元器件的引入以提高系统可靠性。串口扩展电路原理图如图2所示。
图2 通信接口模块原理图
2.4 探头连接与释放机构
投放控制前端的6枚探头安装槽外形尺寸一致,但由于XBT和XCTD测量机理不同,导致两者在长度、重量上有所差异。在实际使用时,两种探头均装入投放筒中进行投放,由于其直径相同但长度不同,在投放前端结构设计时将投放筒尾部连接触点锁紧装置设计为可前后滑动的形式,当两种不同类型的探头筒装入安装槽后其前端由挡板固定,后端通过调整锁紧装置至适当位置进行固定,该设计可保证投放前端对两种不同类型探头的兼容。
每枚探头的投放是由直流电机带动探头前端的挡板运动来实现。选用TI公司的DRV8823[9]作为驱动芯片,其供电电压为12 V,具有SPI通信接口,控制信号为标准TTL电平,芯片内部具有4个H桥驱动电路,最大驱动电流为1.5 A。在每组前端内部使用两片DRV8823芯片,实现对前端6台探头释放电机的控制。
为便于每个投放单元的调试,设计了电机手动控制驱动电路接口,将电机供电接插件连接该接口后可通过手动按键的方式对电机独立控制。使用TI公司的DRV8870芯片作为电机驱动备用芯片,该芯片具有1个H桥驱动电路,通过控制芯片两个输入引脚的电平实现电机的正转和反转。该功能在对投放单元进行现场调试和故障排除时具有重要的实用价值。
2.5 探头投放单元测量数据接口
由于每次投放时只有一个投放单元处于工作状态,为节省系统线路开销,采用总线的形式进行测量数据传输。每组投放控制前端具有总线输入输出接口,当系统接入多组前端时,它们之间采用串连的方式连接,前端的总线输入与通信控制与数据采集中端相连,由中端内部的探头数据采集模块完成对海洋剖面数据的采集和处理。
在设计时,使用继电器实现每个探头投放单元测量点接入总线的功能,当投放单元不工作时,继电器触点处于与总线断开的常闭状态,当需要投放该单元的探头时,通过单片机控制信号实现继电器开关与常开触点的连接,从而使该单元连入测量总线。由于探头测量数据线有两路,因此采用双刀双路继电器,其工作电压为12 V,为保证继电器在工作时能够稳定持续地处于吸合状态,应提供充足的供电电流。使用ULN2803集成芯片[10-11],它由8路NPN型达林顿管组成,可作为单片机输出的TTL电平与需要较高工作电压和电流的继电器之间的接口。该芯片的达林顿管输出为集电极开路,当基极为高电平时,达林顿管导通,继电器工作。设计中选用的12 V继电器的额定功率为400 mW,额定电流约为33 mA,经查阅芯片数据手册可知,在该电流下达林顿管的发射极和集电极间的饱和电压约为0.6 V,继电器可在该条件下处于稳定的吸合状态。继电器内部通过线圈的通断电实现开关功能,通断电的瞬间在达林顿管的集电极输出端会形成较高的反向电动势[12],ULN2803芯片在该输出端内置了二极管,实现了对集电极输出端的保护。该芯片的性能特点能够满足设计需求。测量数据总线接口原理图如图3所示。
图3 测量数据总线接口模块原理图
2.6 探头安装与自检接口
系统在使用前,需要将探头装填至投放单元中,由于投放控制前端安装在船体的侧舷或尾舷处,操作人员在安装完毕后需要及时对探头能否接入系统进行检验,以确保安装成功。因此,在前端上安装4个功能开关并设计相应接口电路,分别实现探头通道切换、直流电机挡板正转、反转和当前通道自检4项功能。开关接口电路设计时,在单片机IO口和开关之间加入光电转换器件实现隔离,对单片机起到保护作用。
2.7 数据存储模块
探头入水后开始水下参数测量并将数据实时传输,在其工作过程中,一旦通信控制与数据采集中端和控制室上位机间出现通讯异常,将会导致测量数据的缺失,影响后续剖面数据处理,对海洋调查研究产生较大影响。针对该问题,在中端设计时使用了RAMTRON公司的FM25V10数据存储芯片,它可以存储128 kB数据,具有标准的SPI接口,工作温度为-40~85 ℃,通过高可靠性的铁电处理技术实现数据存储,存储期限长达10年。探头原始数据经过处理后,每帧数据包含编号、水温、电导率3个参数共6个字节,进行水下1 000 m剖面测量时最多需要7 500帧数据,总数据量为44 kB,小于芯片的存储容量,因此该芯片能够满足设计和使用要求。
当中端内部的探头数据采集模块完成测量数据处理后,通过SPI接口将数据存入存储芯片,然后再将其送入串口转网络的通信模块发送至上位机。基于该项设计,探头测量过程中即使出现因干扰、人为等因素导致的中端与上位机间通讯异常,测量数据也能完整地保存在存储芯片中,待通讯恢复后再从存储芯片中提取相应数据,保证了系统的可靠性。
3 软件设计
系统在软件设计时采用了模块化的编程思想,基于Keil uVision4作为编程开发环境,编程语言使用C语言[13-14],在MCU寄存器初始化及需要高效率运行的代码部分使用汇编语言。
3.1 投放控制前端
前端的单片机程序执行后,首先对UART、时钟、IO等相应寄存器进行初始化,采用中断方式[15-16]的串口通信模式以提高效率。
投放控制前端寄存器初始化完毕后,通过位置传感器确认直流电机是否处于原点位置,若不在则自动完成位置归零。然后系统进行状态判断,若为探头装填或自检状态,则在操作人员完成每枚探头的装填后,通过点击自检按钮,上位机会对该枚探头是否连接成功进行检测。当6枚探头均装填完毕后,程序则进入自动投放模式以等待投放指令。当收到来自通信控制与数据采集中端的控制指令后,前端通过控制每枚探头前方挡板的打开与闭合,以及相应测量点与总线的连接,实现探头的依次投放和测量数据传输。当所有探头均完成投放后,即可装入新探头准备下一轮次投放,程序流程图如图4所示。
图4 投放控制前端软件流程图
3.2 通信控制与数据采集中端
通信控制与数据采集中端用于接收来自上位机的控制指令,并按指令所含内容发送给对应前端,在上位机与多组前端之间起数据分配、处理和转发的作用。中端开机后,接收来自上位机的前端在位检测指令,检测当前连入中端的前端数量。随后判断当前是否为探头装填和自检模式,如果处于该模式则根据前端的接口按键操作依次完成装填探头的自检,并将自检结果报送至上位机。当收到来自上位机的自动投放指令时,中端首先对该指令进行解析,然后按照其内部包含的编号发送至相应前端,实现前端中各个投放单元与上位机的精准对接,其软件设计流程如图5所示。
图5 通信控制与数据采集中端软件流程图
3.3 上位机程序设计
上位机程序主要包含自动投放控制、参数设置、测量数据接收、计算解析和剖面测量数据曲线绘制等功能模块,使用Python语言编程设计。由于XBT和XCTD测量机理不同,对探头类型的区分在中端内部的数据采集单元中完成,上位机通过识别探头类型代码自动完成XBT和XCTD显示界面的切换,该设计可使探头安装时无需针对探头类型和安装次序进行区分,提高了使用时的灵活性。软件主要功能模块如图6所示。
图6 上位机功能模块结构图
3.4 控制数据流设计
投放控制前端、通信控制与数据采集中端与上位机间采用问询、应答的通信方式,问询由上位机发起,中端收到后提取前端编号,通过通信接口模块将指令发送给相应前端,前端收到控制指令后将相应动作的命令标志位赋值,通过在主函数中查询标志位执行对应的电机动作,完成后清除该标志位,并通过中端向上位机回复应答指令。其数据通信格式为:
上位机:$XX,AA,BB*KK
通信控制与数据采集中端:$XX,AA,BB*KK
投放控制前端:$XX,AA,BB,CC*KK
其中,XX表示投放控制前端编号(范围:1~8),AA表示投放单元编号(范围:1~6),BB表示控制字标号,CC表示投放控制前端应答及执行情况,KK表示累加和校验。例如,需要第3组投放控制前端的第5个投放单元进行投放,则上位机发出指令$03,05,01*39 ,中端接收该指令后向第3组前端转发该指令,相应前端通过串口收到该命令后进行命令分类,主函数中检测到该命令对应的标志位后将控制直流电机执行相应动作,完成后则返回$03,05,01,00*39 。
4 系统试验验证及故障分析
系统在海上使用过程中,由于每枚探头的投放均依赖于系统通信链路的稳定性及动作机构执行的可靠性,若某个电机动作异常将直接导致投放失败,因此对系统的功能、性能验证具有重要意义。系统试验分别从供电、自检、投放与数据采集、数据存储、探头类型切换和多组前端接入测试等方面展开,检验系统的功能和可靠性。
4.1 供电单元
由于系统的前端与中端安装在船体侧舷或尾舷处,供电单元后端安装在控制室内,为保证供电线缆顺利走线至甲板单元处,将其长度设定为100 m。供电线缆的电阻为6 Ω/km,前端与中端工作时的峰值电流为2 A,因此供电缆传输直流电的压降为2.4 V。前端与中端正常工作的最小输入电压为12 V,供电单元后端输出的24 V直流电满足使用要求。
4.2 探头自检
向投放控制前端内分别装入XBT和XCTD,分别调节连接触点锁紧装置,保证系统与探头的可靠连接。使用探头通道切换和当前通道自检两个按键,分别对每个通道的探头进行自检。自检结果显示所有通道均连接正常,具备投放条件。
4.3 投放与数据采集
通过上位机软件,选择待投放的通道编号,点击“单枚自动投放”按钮,前端在指令控制下完成挡板的开启,探头顺利落入水中,测量数据实时传输至数据采集中端,经解算后传输至上位机,完成曲线绘制。
4.4 数据存储
为验证数据存储功能,再次投放一枚探头,但在发送“单枚自动投放”命令后,人为将连接上位机与中端的网线断开,待探头测量完毕后重现连接。点击上位机软件界面上的“数据重传”按钮,测量数据能够从中端的数据存储芯片中提取至上位机,满足设计需求。
4.5 探头类型切换
为验证XBT和XCTD的自动切换功能,在前端的各投放单元分别装入两种类型的探头。测试结果发现,当待投放XBT或XCTD两者间发生类型转换时,上位机显示界面无法自动更新。
经分析可知,系统中端每次接收来自上位机的指令后完成相应动作,随后将进入待机状态至下一条命令的到来。上位机通过接收来自中端的查询返回指令更新探头类型状态。在中端程序设计时,UART 采用串口中断的方式发送字符数组。每个待写入的字节存入单片机发送缓冲寄存器SBUF后,程序将返回主函数继续执行下一条指令,当SBUF中的字节最后一个比特位发送完成后,单片机将SCON寄存器的TI位置1,使程序再次进入中断发送程序。当波特率设置为9 600 bps时,发送一个字节所占用的时间为1.145 ms,而单片机执行一次中断发送函数的时间为微秒级,因此当一帧字符还没发送完成时,程序便直接执行主函数中的下一条语句,当该语句为使单片机进入停止模式的语句时,便会导致发送缓存中的数据无法继续送入SBUF,从而导致上位机无法接收完整的查询返回指令。为保证数据帧的完整发送,应在发送子函数的后面加入延时语句,或者将单片机功耗管理模式设定为空闲模式。经程序优化,上位机能够对每枚探头在投放前完成显示界面自动更新。
4.6 多组前端接入测试
在接入单组前端测试通过后,对系统进行同时接入8组前端的处理能力测试。在试验中发现,某些前端存在对上位机的控制指令不响应的情况。经对故障现象分析定位可知,通信控制与数据采集中端的通信接口模块对应程序部分需要调整:由于程序在执行期间不间断的扫描并识别来自上位机控制指令的帧头字节,根据不同的关键字进行识别,当中端串口接收缓存只接收完帧头字节后,程序便进入识别状态,而控制指令中的控制字此时还没有完整传输至串口缓存中,因此程序会因未识别到具体的控制字而不与前端进行通信,导致前端与中端连接异常。将原程序修改为,当串口收到控制指令帧的第一个字节后便开始计时,计时到10 ms后才允许读接收缓存中的内容,这种方式从时间上保证了控制指令接收的完整性。经调整后的系统,能够实现中端同时对8组前端稳定的通信与控制。
通过从上述方面进行试验验证及对异常情况的处理,系统能够实现对多组投放控制前端的可靠控制和测量数据接收处理。在投放装置的海上试验测试中系统工作正常,能够有效完成多枚XBT/XCTD探头的自动连续投放,保证系统正常运行。
5 结 论
本文提出了多枚 XBT/XCTD 自动投放与测量控制系统的设计思想并给出了详细的硬件和软件实现方案,通过对系统各项功能的测试验证了系统硬件设计的可靠性,同时也查找出了控制系统在对上位机的命令进行响应时出现的故障,通过软件层面的机理分析进行了故障定位,对程序完善优化后解决了故障问题。实验室和海上试验的测试结果表明:供电单元后端能够为系统进行稳定的供电输出,通信控制与数据采集中端能够同时连接8组投放控制前端,通过对直流电机和测量数据接入总线的控制实现多枚探头的依次自动投放,上位机软件能够自动识别XBT和XCTD探头类型,完成对海水温度和电导率剖面测量数据的解算和曲线绘制。系统具有投放效率与自动化程度高、工作稳定等特点。
本文提出了多枚XBT/XCTD自动投放与测量控制系统,通过投放控制前端数量可扩展的设计思路,实现了系统具备一次性装载大量探头的能力,弥补了现有设备中装载探头数量不足的缺陷。系统能够兼容XBT和XCTD两种不同类型的探头,投放前对探头类型自动识别,在不同海况条件下实现密集化、网格化的海洋水文自动剖面观测,具有重要的应用价值。