基于CAN总线的自主水下航行器分布式控制系统设计
2021-01-07董权威王奥博岳才谦王亭亭
董权威,王奥博,岳才谦,王亭亭
(中国航天空气动力技术研究院,北京 100074)
0 引言
海洋作为资源丰富的能量储备空间,有着十分重要的意义,同时伴随着人类认识海洋、开发海洋和保护海洋的进程不断发展,拓展海洋权益已日益成为各国争先发展的重要目标。作为海洋开发的重要平台,自主水下航行器(AUV,autonomous underwater vehicle)可以在无人控制的状态下全天候、多航时地自主完成水下任务,成为在民用领域和军用领域中重要的海洋开发和安全保障的工具,并且获得广泛应用[1]。民用领域,如海图绘制、地形勘察和海底设备维护等;军用领域,如海上预警、海底对抗、水下情报搜索、水下目标搜索与打击和战区探测等[2-4]。
作为AUV的关键技术,控制系统设计的好坏决定了AUV系统运行的可靠性与稳定性等性能是否满足设计要求。传统的AUV控制系统多采用集中式,即AUV的航行控制、任务管理与分配等均通过一台主控计算机实现,当主控计算机遇到故障而无法正常工作时,则AUV整个控制系统则面临瘫痪的问题,因此难以保证系统运行的可靠性。此外还存在计算量大的问题,难以同时完成水下复杂的航行任务,如导航解算、运动控制、航路规划、图像数据采集与处理等。而分布式CAN总线串行通信网络通信距离远、通信速率高、连接节点多、通信实时性强等特点,其可靠性与高性能已得到广泛认同,在工业自动化、船舶工程与工业设备等领域具有广泛的应用[5-6]。
由于CAN总线可同时搭载多个节点,理论上没有限制,受总线上实际电气负载与时延的限制,随着CAN总线上连接的节点增加,通信速度降低,连接的节点减少,则通信速度提高[7-8]。因此,对AUV的控制系统的功能进行划分,并将其拆分成由多个控制节点组成的分布式控制系统,各控制节点通过CAN总线网络进行数据通信。当AUV在水下运行时,若某一个控制节点发生故障,通过分布式控制系统内的安全保障单元或应急处理单元接手并控制,可大大提升AUV控制系统的可靠性,进一步保证AUV水下航行安全。此外,各控制节点通过CAN总线直接进行信息交互与数据传输,无需通过主控计算机,提高了系统整体的通信效率[9]。同时,采用CAN总线分布式控制系统便于后续扩展与升级,当需要增加新的控制节点或设备时,无需修改硬件,只需将其接入总线即可实现通信[10]。
根据AUV控制系统的设计要求,本文提出了基于CAN总线的AUV分布式控制系统,包括地面监控站、任务控制节点、导航控制节点、运动控制节点、执行节点、安保节点。其中,地面监控站是AUV平台的地面指挥控制端,其余节点置于航行器内部。通过对AUV的分布式控制系统的结构、硬件架构、硬件电路与软件程序进行设计,系统开发工作完成后,进行了多次水下试验,最终验证了该设计方案的稳定性与可靠性。
1 控制系统设计要求
研发的该AUV平台,尾部装一个轴向推进器为航行器提供航行动力,AUV后段和后段各装有垂直推进器和侧向推进器,通过不同推进器间的配合,实现航行器的3维运动控制。AUV的导航传感器主要包括:惯导系统、超短基线、多普勒速度仪、GPS、深度计与高度计等。
对AUV控制系统的设计要求:1)对平台内部所有传感器数据信息实时采集;2)试验平台具有较高精度的自主导航能力与运动控制性能;3)能够记录所有的航行参数、导航控制参数与总线控制信息;4)具备故障诊断与紧急处理能力,保障试验平台安全[11]。
2 硬件系统设计
2.1 分布式控制系统结构设计
根据上述设计要求,AUV控制系统采用分层式结构,主要包含任务层、控制层与执行层,各层由相应控制节点构成。其中,任务层负责完成与地面设备的信息交互、任务模式设定与传感器信息存储等;控制层负责完成航行器的导航、运动控制等;执行层负责完成对各推进器、抛载机构的控制。当AUV在航行过程中,任务层与控制层的任务分别由任务控制节点、导航与运动控制节点完成,执行层则由推进器和抛载共同完成。同时,在平台的分布式控制系统中还包括数据记录节点与故障诊断与应急节点,分别用来记录试验平台的航行参数与各传感器信息,并根据各传感器信息判断AUV航行是否正常,并作出对应的应急处理措施。在实现时,由上层将任务分发给下层,下层在执行前需等待上层控制指令,上层在下发新的控制指令前需确认下层任务是否完成。各个指令的发送与完成都需要上层与下层的“握手”确认。这种分层式体系结构使得系统功能层次清晰,系统间通信可靠。试验平台的分布式控制系统结构如图1所示。
图1 AUV分布式控制系统结构框图
其中,地面监控站主要由控制单元与显示单元组成,用以进行指令传输、远程控制与AUV状态监控等。任务控制单元主要搭载任务载荷进行水底搜探与水中识别等工作,如侧扫声呐与避障声呐等,并负责完成AUV在水下航行过程中的任务分配、任务管理与控制等。同时搭载数传电台与水声通信装置实现水面与水下通信。在水面,利用数传电台与地面监控站监理通信,并接收上层地面监控端的任务指令,完成对AUV预设的航行任务,反馈AUV自身状态。在水下,通过水声通信设备搭建水下通信链路,完成水下与水面端的数据交互。
控制层为导航与运动控制单元,分为导航控制系统与运动控制系统,导航控制系统主要负责AUV在水下航行过程中的导航任务,记录航行器水下的航行状态,并实时采集AUV在航行过程中产生的导航信息,并进行解算,最后通过CAN总线发送至运动控制系统。运动控制系统主要接收来自导航控制系统采集的AUV在航行过程中产生的航行状态信息,如姿态、速度、位置、高度和深度等信息,并进行解算,计算推力,然后将计算结果转换成推进器的转速控制信号,并将转换结果发送给执行层,驱动各执行机构完成相应的动作,进而实现AUV的航向控制、定深航行、定高控制与航迹跟踪等。
2.2 分布式控制系统硬件架构设计
AUV控制系统复杂度的增加,会使得系统内部连线与接口更加复杂,同时会带来设计成本高、装配难度大、数据信息量大与可靠性差等问题。此时,若系统采用现场总线的方式,则可有效解决该问题,并能实现多点对多点的通信。而CAN总线作为一种有效支持分布式控制和实时控制的串行现场总线,可工作在多主模式。在系统通讯网络中,各节点都可根据总线访问优先权,在数据传输方面具有显著的优势,其协议的充分性与完整性,使得由它构建的通信系统具有较好的稳定性与可靠性,也使CAN总线在AUV通讯系统应用领域更加广泛。
本文提出的AUV分布式控制系统采用基于CAN总线的总线式网络结构,由任务控制系统、导航控制系统、运动控制系统及安保系统4个控制节点构成。其中,任务控制控制搭载超短基线、数传电台、侧扫声呐与避障声呐,导航控制系统搭载惯导、多普勒速度仪、高度计、深度计与GPS模块,运动控制系统主要搭载各类推进器,安保系统则主要保障AUV水下航行安全,集成了电源管理单元、应急频闪灯与抛载机构等,以实现AUV内部各节点、设备及相关组件的供电,并对供电进行分配和管理,当AUV出现电量不足或检测到某个设备工作异常等情况,则进行节能模式或设备断电等操作。
图2 基于CAN总线的分布式控制系统架构
通过采用分布式CAN总线通信网络,对AUV内硬件系统的功能进行划分与设计,根据实际需求,可将其划分为多各控制节点,以便能更好地对AUV的控制系统进行任务管理与规划,提升AUV控制系统工作效率的同时,可大大提高AUV在水下航行的生存能力。在划分的各控制节点内,根据所搭载设备的接口要求进行设计,以实现节点与设备的通信。同时,各控制节点间采用CAN总线进行通信。对该系统而言,CAN总线共搭载4个控制节点,控制节点间为CAN总线通信,节点内与设备间通信采用串口、网口等方式。即在整个分布式控制系统中,采用CAN总线通信方式为主,其他通信方式为辅,极大节省了各控制节点的接口资源,提高AUV内搭载的各类传感器的处理效率。
AUV内搭载各种传感器,任一传感器在使用过程中通信链路出现故障都可能会连锁反应,导致其他传感器无法正常使用或影响控制系统正常运行。通过设计的该分布式控制系统,可有效保障AUV内控制节点与设备、控制节点间通信链路的实时性与可靠性,基于CAN总线的分布式控制系统硬件架构如图2所示。
2.3 硬件电路设计
AUV的控制系统对于硬件的要求较高,在满足高可靠与高性能的基础上,应具备比较稳定可靠的通信链路,并能便于扩展,当根据任务需求,需要增加或减少控制节点时,可在不改变硬件条件的基础上,对控制节点进行增减,并且不会对其他控制节点造成影响。基于此,对各控制节点的主控单元及通信接口等进行设计。
任务层内控制节点的主控器基于PC104结构,采用主控电路与通讯扩展的方式进行相关设计,具有多路串口、网口与CAN总线接口,可实现任务层中多路任务传感器的数据采集及与其他控制节点间的CAN通信。其中主控电路板采用SCM9602,内部采用Intel的超低功耗E3800型嵌入式CPU,主频包括单核1.46 G到1.91 G,板载内存4 GB,具有6路串口,2路网口。通信扩展板采用M-CSD,该板具有4个光电隔离异步串口及两路CAN总线接口,可扩展任务控制节点的接口能力。
此外,其它控制节点采基于ARM的STM32F407ZGT6芯片作为MCU,该芯片的资源丰富,集成FPU和DSP指令,具有192 KB SRAM,1024 KB FLASH,内部集成了6路串口与2路CAN口,可满足各节点设备接口的使用要求。MCU内部增强型bx-CAN控制器支持标准的CAN2.0A和CAN2.0B协议及远距离传输。正常通信时,总线传输速率可高达1 Mbps,CAN通信接口模块设计是保持正常通信、数据可靠收发的关键。在此选用高集成度和高可靠性的CAN隔离收发器TJA1050模块,该模块通用性较强,支持任何一种CAN通信协议控制器,外围接口电路较为简单,在电路设计时,可直接将其引脚与MCU对应的引脚连接即可,不需增加其他调理电路, 同时在CANH与CANL之间接入一个120 Ω终端电阻,主要用于进行阻抗匹配,CAN总线接口电路如图3所示。
图3 CAN总线接口电路
3 控制系统软件设计
AUV的控制结构主要包括任务层、控制层与执行层。内部划分有4个控制微机,分别为任务控制系统、导航控制系统、运动控制系统与安保系统,任务控制系统负责AUV的任务规划与管理,用于完成水下避碰、避障与航点规划。导航控制系统负责完成导航信息获取、处理与解算。运动控制系统负责AUV的运动控制,进行转速控制与推力控制,为执行层。安保系统负责AUV的水下航行安全,在航行过程中,若接收到来自其它控制节点的紧急抛载指令,如系统超时、超深、设备故障等,则触发应急抛载。
为保证AUV内部分布式通信系统的可靠性与准确性,对CAN总线通信协议进行设计,一个CAN节点可控制多路设备,且只需要一个中断号,在简化硬件设计与电气接线的同时,可进一步简化软件设计。AUV的CAN总线通信网络采用CAN2.0B标准帧数据格式,总线上搭载的各分系统节点收发的数据为扩展帧和数据帧,并根据各对各节点设置相应的ID号。同时为保证数据传输的快速性,CAN总线只发送控制指令帧、查询帧与AUV的状态反馈帧,各系统节点通过CAN总线实现指令的收发与状态反馈。通信子程序主要由引脚配置、CAN总线初始化、指令收发与执行等部分组成。各节点在进行指令接收前,根据设定的CAN通信协议进行数据校验,校验通过后则触发中断并接收,数据接收后通过指令报文判断数据指令类型,并执行软件设计的任务流程。
此外,CAN总线具有错误检测、错误通知与错误恢复的功能。系统运行时,检测到错误节点后,会通知其他节点,若正在发生信息的节点检测出错误后会进行强制结束,并不断反复重新发送直至成功。在错误处理过程中,CAN总线会判断相应的标志位,对于一般节点,可对CAN控制器进行重新初始化来恢复通信,CAN总线的软件控制流程如图4所示。
图4 CAN总线软件控制流程图
4 实验结果与分析
对AUV的CAN总线通信网络设计完成后,进行硬件系统搭建及软件程序设计,并进行调试、测试与系统集成,最终对AUV进行了湖态试验与验证。本次试验主要的任务是验证该分布式控制系统运行的稳定性与可靠性。试验流程如下:首先利用地面监控站对AUV进行状态检测,若监测到反馈的AUV各项数据信息正常,则具备水下航行条件。在水面,通过地面站对AUV进行任务装订,AUV接收指令并执行,此时AUV的水下航行任务为航点跟踪模式。首先AUV由起点航行至下潜点,AUV下潜后,根据设定的任务流程,依次按照航点1、航点2、航点3、航点4依次进行定深寻点。在航行过程中,AUV通过前段和后段两个垂直推进器差动进行深度调节,通过前后两个侧向推进器差动进行航行调节,以此保证AUV在深度和航向上航行的稳定性。
图5 AUV航行轨迹
对AUV在水下的航行数据进行保存,并根据航行数据绘制AUV在水下的航行轨迹,如图5所示。由图5可知,AUV按照预定航线依次到达航路点1至航路点4,到达最后一个航路点后上浮,出水后由地面监控站接管,并通过数传电台监测AUV反馈的状态信息。可以看出,AUV准确、完整的完成了预设的水下航行任务,在整个水下航行过程中各控制节点运行稳定,控制节点间CAN总线通信可靠,具有广阔的工程应用价值。
5 结束语
本文提出一种基于CAN总线的分布式控制系统设计方案,并将其集成并应用到实体AUV平台,通过岸上联调测试,验证该设计方案的可行性与实用性,并通过一系列的湖试与海试,该设计方案最终得到有效验证。试验结果表明,设计的分布式控制系统运行性能良好,各分控制节点间通信稳定,在保证AUV正常工作的情况下,亦满足实时性、可靠性与可扩展性的要求,具有较大的工程应用价值。为进一步满足CAN总线通信的高可靠性,在后续工作中,需要对CAN总线的冗余性与总线切换问题做相关研究,保证CAN总线出现问题后,通过软硬件的冗余,进行自动切换,从而进一步提升分布式控制系统中各控制节点通信的可靠性。