一种基于移动网络多功能航标采集系统远程更新的实现

2021-05-06 01:08张义欣吴昊黄加顺天津海事局
珠江水运 2021年7期
关键词:航标数据包代码

◎ 张义欣 吴昊 黄加顺 天津海事局

李栋 天津天元海科技开发有限公司

1.引言

港域环境监测系统是一个建于港口,用于监测港域海洋环境素(如水温、潮流、流向、水位、风力、风向等),并为船舶进出港、离靠泊提供安全保障的监测服务网络。其核心是及时将海洋环境要素观测值予以传输和显示。系统的使用更好地辅助海事管理人员进行通航环境的监测、日常船舶通行的管理以及水上交通安全事故的应急处置工作,进一步提升天津海事局船舶交通管理能力,并进一步促进提升天津海事局其海事业务信息化水平。

多功能航标作为观测设备载体,航标数据采集系统更是多功能航标的核心。其通信手段可以采用移动网络(移动、电信、联通三大运营商)、北斗卫星导航系统(短报文功能)、海事卫星、甚高频VHF(Very high frequency)等。本文介绍一种基于移动网络通信的多功能航标采集系统远程更新的实现。

图1 STM32 flash分配布局图

近年来随着移动网络的大力建设,扩大了近海移动网络覆盖区域,也为多功能航标的大规模布放提供了通信支撑,加速推进了多功能航标的发展。移动网络作为多功能航标数据交换的媒介已广泛使用。依托移动网络对多功能航标采集系统功能更新升级也成为一种手段,使用无线方式升级可以节省大量的人力、物力和财力。

由于移动网络信号作用距离有限,并且受天气、风向等环境因素影响严重,大多数海上多功能航标信号不够稳定,通信丢包情况严重,所以需要借助应用内编程、分包传输与中断续传等方式保证多功能航标采集系统远程更新的可靠性和成功率。

2.关键技术

2.1 应用内编程(IAP)

应用内编程(IAP In Application Programming)即应用内编程,是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常在实现IAP功能时,即用户程序在运行过程中进行自身程序的更新操作,需要在设计程序时编写两个部分的代码,第一个部分的程序不执行正常的功能操作,只是通过某种通信管道(如USB、USART)接收程序或数据,用来执行对第二部分代码的更新操作,第二个部分的代码才是真正的功能代码。这两部分代码都同时烧录在User Flash中,当芯片上电后,第一部分代码开始运行,检查是否需要对第二部分代码进行更新,如果需要更新就直接运行第二部分代码,如果需要更新,先执行更新操作,等更新完成后执行第二部分代码。

图2 更新流程图

本文的IAP功能的实现,使用基于Arm Coretex-M3架构的STM32F10x系列芯片。STM32复位后,从0x08000004地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到IAP的main函数。在执行完IAP以后跳转至新写入程序的复位向量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程序,随后跳转至新程序的main函数。

2.2 分包传输与中断续传

尽管在陆地上移动网络覆盖范围很广,但在近海很多区域移动网络信号强度有限,尤其是部分区域信号非常弱并且不稳定,网络连接时断时续,这对远程更新的实现提出了不小的挑战。本文提出分包传输和记录中断续传的方式,用来提高传输的稳定性和可靠性。

表1 数据帧格式

表2 请求更新的消息结构

表3 更新时的消息结构

表4 消息头格式

3.实现方式

3.1 更新流程

整个数据传输过程为应答-响应模式,启动更新升级模式后,根据本地保存的已更新的数据包,请求远程服务器未更新的数据包,然后进行校验,如果校验成功就保存数据包,直到所有数据包更新完毕。其中,每次应答都需要有超时控制,流程见下图。

3.2 数据帧格式定义

所有传输的有效数据均是数据帧中的载荷数据,数据帧包括数据长度、CRC16校验码、payload数据和帧分隔符四部分,具体内容和所占字节见表1。

请求更新的消息结构和更新时的数据消息结构两类不同的数据类型根据消息类型来区分。见表2 和表3。

更新的数据包采用CRC64校验,保证数据的可靠性。请求更新的消息结构和更新时的数据消息结构的消息头格式见表4。

4.结语

本文的提出的一种基于移动网络多功能航标采集系统远程更新的实现方案,在实际使用中的一次更新成功率很高,还未出现过多次更新不成功的情况。但有一种情形需考虑,因更新时,每成功接收一包数据,更新一次flash中的数据,这个过程必须持续结束才可以。如果网络信号长时间不稳定,就会导致正常业务功能长时间无法工作。为解决此问题,可以考虑将flash中的用户数据区域分为两部分,一部分为更新下载的数据区域,另一部分为原来的用户数据在区域,只有在全部下载完毕后,才跳转到更新后的区域,保证如果网络长时间不稳定,可以切换回原先的业务流程,择机再继续更新,这样不会长时间中断正常的业务功能。虽然实际使用中还未遇见过此类极端的情况,但可以作为今后优化完善的方向。

猜你喜欢
航标数据包代码
航标工
SmartSniff
创世代码
创世代码
创世代码
创世代码
虚拟航标的作用与应用前景
视觉注意的数据包优先级排序策略研究
移动IPV6在改进数据包发送路径模型下性能分析