海洋电子应用系统中的AIS数据模拟方法与流程

文档序号:18403490发布日期:2019-08-10 00:08阅读:273来源:国知局
海洋电子应用系统中的AIS数据模拟方法与流程

本发明是一款数据模拟软件,特别是涉及一种海洋电子应用系统中的AIS数据模拟方法。



背景技术:

AIS(船舶自动识别系统)由岸基设施以及船舶移动设备构成,集成了计算机网络技术、通信技术以及电子信息显示等技术,在航行协同、船只避碰、航道安全等方面得到了广泛应用。海洋电子应用系统是一种融合了多种不同功能子系统的综合管理平台,通过收集不同子系统的数据,进行统一管理、查询、分析,最终为用户或相关部门提供信息服务或决策支撑。AIS现已在国际上有国际电信联盟的ITU-R M.1371-3建议书作为技术指导,并已被广泛的集成到了各个海洋电子应用系统中,作为一种数字助航的有效手段。

目前,在测试海洋电子应用系统时,其所需的AIS数据是由船只的移动设备发送数据,经岸基基站接收之后通过串口输入到系统中,测试过程需要依赖基站、移动设备、船舶,串口等硬件设施,硬件维护及使用成本高,测试过程不方便,效率低下。



技术实现要素:

本发明的目的是为海洋电子应用系统测试提供模拟数据,系统可以通过该数据实现对应用功能测试。本发明可以模拟多个船只运动时产生的AIS报文,同时模拟出基站设备并可以接收这些报文,然后将这些报文发往虚拟串口中,再交由海洋电子应用系统测试使用。本发明产生的数据与真实设备产生的数据相似,好处是海洋电子应用系统在测试时,不用借助于实际物理设备,通过该软件即可收集到丰富且与实际相符的数据,从而在测试的过程中有效的降低测试成本,提升测试效率。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种海洋电子应用系统中的AIS数据模拟方法,其特征在于包括如下步骤:

1.生成船舶模拟对象,根据AIS协议中的静态报文定义,对船舶对象中填入船舶名、MMSI编号、货物类型、呼号、目的地等关于船舶信息的参数,并指定船舶模拟对象的类型为A类船只还是B类船只;

2.为步骤1的船舶模拟对象建立船舶轨迹模型,船舶轨迹描述了船舶的运动路线,轨迹上的经纬度数据会编码到AIS动态报文中,并重复该步骤对每一个船舶对象计算一条轨迹路线,并用起点经纬度值初始化船舶对象的初始位置值;

3.为每一个船舶对象设定单独的定时器,定时器之间相互独立计时,并行的处理每一个船舶对象,处理过程相同且独立;

4.步骤3中每一个船舶的处理过程,每2秒可得到一条编码后的船舶动态数据,每6分钟后可以得到一条编码后的船舶参数信息;每当得到一条数据就存入待发送队列的队尾,由于步骤3是并行的处理,因此谁先产生数据谁就先存入待发送队列;

5.与步骤4存入待发送队列过程并行,从待发送队列队头取出一条数据,判断字符串长度,若长度小于等于60个字节不进行分包,若大于60个字节按60个字节为单位进行分包,对每一分包根据NMEA0183协议,为其附加上报文头和报文尾,并将得到的完整的AIS报文存入到发送队列的队尾中;

6.与步骤5并行,产生基站对象,设置基站的经纬度、最高电压、最低电压和当前运行电压,并为基站对象设定定时器,根据NMEA0183协议,每2秒钟产生RMC报文,RMC报文中的经纬度为设定的基站经纬度,时间为当前系统的UTC时间;每1分钟产生ALR报文,报文中包含基站设备的最高电压、最低电压和当前运行电压;将产生的RMC和ALR报文存入发送队列的队尾中

7.与步骤5并行,建立发送器,以独占的方式打开虚拟串口,设定串口号、波特率、数据位、停止位、校验位,并循环的从发送队列的队头中取出报文,发送到虚拟串口中,海洋电子应用系统从另一关联的虚拟串口中读取数据,输入进系统中并完成测试。

进一步的,所述轨迹模型的建模过程如下:

1)指定起点经纬度和终点经纬度,以起点和终点连线为直径,以起点和终点连线的中点为圆心,得到一个圆域方程(其中起点经纬度为(x1,y1),终点经纬度为(x2,y2)):

2)随机在圆域中选取N个点,其中N为贝塞尔函数的阶数n-1:

N=n-1

在默认情况下采用n=4阶贝塞尔函数作为轨迹函数,在圆域中选取N=3个随机点。

3)将起点和终点连同N个随机点进行编号,其中起点为P0,终点为Pn,其他点为P1,P2...,PN,构造通用n阶贝塞尔函数:

4)指定轨迹的点数m,得到每个点之间的步长:

结合n阶贝塞尔函数计算船舶轨迹上的每一个点的经纬度:

将计算得到的m个经纬度值保存。

进一步的,在一个船舶对象中,详细的处理过程为:定时器每2秒按顺序的从船舶对象的轨迹路线里取出一个轨迹点,根据如下公式计算该点与上一点之间的距离:

其中上一点的经度为σ1,纬度为当前点的经度为σ2,纬度为由移动距离Δ和移动时间2秒计算船舶的移动速度:

Vspeed--1800Δ(km/h)

由上一点的经纬度和当前点的经纬度根据如下公式计算航向:

由航向Dcourse和移动时间2秒计算船舶的转向率:

将得到的Vspeed,Dcourse,ROTais以及当前点的经纬度作为船舶的动态数据,并判断当前该船舶的类型是A类还是B类,根据ITU-R M.1371-3建议书中AIS数据报文规范,若该船舶为A类则将动态数据编码为1号报文;若为B类将则动态数据编码为18号报文;定时器每6分钟取出船舶的参数信息,判断该船舶类型是A类还是B类,若为A类将参数信息编码为5号报文,若为B类将参数信息编码为24号报文。

进一步的,每一条AIS报文的生成,具体步骤包括:

1)从待发送队列的队头取一条数据,判断字符串长度,按每60个字节进行分包,得到一组分包,每一组中拥有1个(未满60个字节)或多个(超过60个字节)分包;

2)产生一个公用的电文标志号,该号在0到9之间循环,每一组分包使用同一个电文标志号;

3)在一组分包中,循环的取出每一个分包,根据NMEA0183协议,在分包前面按顺序附加上报文类型标识符(AIS采用暗码,因此标识符为“!”)、VDO会话号、总包数、当前包的索引号、频道、电文标志号,各个数据以“,”分隔;在分包后面附加上比特填充位,也以“,”分隔;在比特填充位后附加上结束符“*”;

4)依次取出从“!”到“*”之间不包括“!”和“*”的字符,做按位异或,将得到的结果转化为两字符表示的16进制数,并将其附加到“*”之后,作为校验数据;

5)在校验数据后附加上<CR><LF>字符,从而得到一条完整的AIS报文。

区别于现有技术的情况,本发明的有益效果是:

1、数据具有多样性和独特性。本发明可以模拟多个船舶对象运行时产生的数据,包含了AIS协议中的主要类型报文,同时基站对象还能发送其他协议,数据种类丰富;通过指定贝塞尔函数的阶数,实现了船舶对象按曲线轨迹产生数据,并且轨迹生成的过程中使用了随机的中间点,从而保证了各个船舶对象具备独特的轨迹路径;

2、与实际环境产生的数据相似。本发明产生的数据与实际AIS基站所接收到数据十分相似,格式相同,海洋电子应用系统在测试时所用到的AIS数据可以用本发明代替,且不会对系统测试造成影响;

3、测试成本降低,测试效率提高。若系统测试时采用传统的方法,则要安装岸基基站,并在多艘船舶上安装移动设备,船舶在海上航行的过程中逐步收集到数据并传输给应用系统,该过程需要对大量的硬件设备进行维护和调度,一次测试所花费的时间、人力、资金等都很可观,重复测试更是十分困难。本发明则通过软件方式产生数据,不再需要借助于实际的物理设备,在满足软件运行的平台上,本发明持续的运行,并将数据传输给应用系统,应用系统则可以随时进行测试,且可以不断的重复进行,显著的降低测试成本,提升了测试效率。

附图说明

图1是本发明实施例海洋电子应用系统中的AIS数据模拟方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1所一种海洋电子应用系统中的AIS数据模拟方法,其特征在于包括如下步骤:

1)生成船舶模拟对象,根据AIS协议中的静态报文定义,对船舶对象中填入船舶名、MMSI编号、货物类型、呼号、目的地等关于船舶信息的参数,并指定船舶模拟对象的类型为A类船只还是B类船只;

2)为步骤1的船舶模拟对象建立船舶轨迹模型,船舶轨迹描述了船舶的运动路线,轨迹上的经纬度数据会编码到AIS动态报文中,并重复该步骤对每一个船舶对象计算一条轨迹路线,并用起点经纬度值初始化船舶对象的初始位置值;

3)为每一个船舶对象设定单独的定时器,定时器之间相互独立计时,并行的处理每一个船舶对象,处理过程相同且独立;

4)步骤3中每一个船舶的处理过程,每2秒可得到一条编码后的船舶动态数据,每6分钟后可以得到一条编码后的船舶参数信息;每当得到一条数据就存入待发送队列的队尾,由于步骤3是并行的处理,因此谁先产生数据谁就先存入待发送队列;

5)与步骤4存入待发送队列过程并行,从待发送队列队头取出一条数据,判断字符串长度,若长度小于等于60个字节不进行分包,若大于60个字节按60个字节为单位进行分包,对每一分包根据NMEA0183协议,为其附加上报文头和报文尾,并将得到的完整的AIS报文存入到发送队列的队尾中;

6)与步骤5并行,产生基站对象,设置基站的经纬度、最高电压、最低电压和当前运行电压,并为基站对象设定定时器,根据NMEA0183协议,每2秒钟产生RMC报文,RMC报文中的经纬度为设定的基站经纬度,时间为当前系统的UTC时间;每1分钟产生ALR报文,报文中包含基站设备的最高电压、最低电压和当前运行电压;将产生的RMC和ALR报文存入发送队列的队尾中

7)与步骤5并行,建立发送器,以独占的方式打开虚拟串口,设定串口号、波特率、数据位、停止位、校验位,并循环的从发送队列的队头中取出报文,发送到虚拟串口中,海洋电子应用系统从另一关联的虚拟串口中读取数据,输入进系统中并完成测试

在具体的实施过程中,所述轨迹模型的建模过程如下:

1)指定起点经纬度和终点经纬度,以起点和终点连线为直径,以起点和终点连线的中点为圆心,得到一个圆域方程(其中起点经纬度为(x1,y1),终点经纬度为(x2,y2)):

2)随机在圆域中选取N个点,其中N为贝塞尔函数的阶数n-1:

N=n-1

在默认情况下采用n=4阶贝塞尔函数作为轨迹函数,在圆域中选取N=3个随机点。

3)将起点和终点连同N个随机点进行编号,其中起点为P0,终点为Pn,其他点为P1,P2...,PN,构造通用n阶贝塞尔函数:

4)指定轨迹的点数m,得到每个点之间的步长:

结合n阶贝塞尔函数计算船舶轨迹上的每一个点的经纬度:

将计算得到的m个经纬度值保存。

在一个船舶对象中,详细的处理过程为:定时器每2秒按顺序的从船舶对象的轨迹路线里取出一个轨迹点,根据如下公式计算该点与上一点之间的距离:

其中上一点的经度为σ1,纬度为当前点的经度为σ2,纬度为由移动距离Δ和移动时间2秒计算船舶的移动速度:

Vspeed=1800Δ(km/h)

由上一点的经纬度和当前点的经纬度根据如下公式计算航向:

由航向Dcourse和移动时间2秒计算船舶的转向率:

将得到的Vspeed,Dcourse,ROTsis以及当前点的经纬度作为船舶的动态数据,并判断当前该船舶的类型是A类还是B类,根据ITU-R M.1371-3建议书中AIS数据报文规范,若该船舶为A类则将动态数据编码为1号报文;若为B类将则动态数据编码为18号报文;定时器每6分钟取出船舶的参数信息,判断该船舶类型是A类还是B类,若为A类将参数信息编码为5号报文,若为B类将参数信息编码为24号报文。

每一条报文的生成需要经历如下步骤:

1)从待发送队列的队头取一条数据,判断字符串长度,按每60个字节进行分包,得到一组分包,每一组中拥有1个(未满60个字节)或多个(超过60个字节)分包;

2)产生一个公用的电文标志号,该号在0到9之间循环,每一组分包使用同一个电文标志号;

3)在一组分包中,循环的取出每一个分包,根据NMEA0183协议,在分包前面按顺序附加上报文类型标识符(AIS采用暗码,因此标识符为“!”)、VDO会话号、总包数、当前包的索引号、频道、电文标志号,各个数据以“,”分隔;在分包后面附加上比特填充位,也以“,”分隔;在比特填充位后附加上结束符“*”;

4)依次取出从“!”到“*”之间不包括“!”和“*”的字符,做按位异或,将得到的结果转化为两字符表示的16进制数,并将其附加到“*”之后,作为校验数据;

5)在校验数据后附加上<CR><LF>字符,从而得到一条完整的AIS报文。

通过上述方式,本发明本发明可以模拟多个船只运动时产生的AIS报文,同时模拟出基站设备并可以接收这些报文,然后将这些报文发往虚拟串口中,再交由海洋电子应用系统测试使用。本发明产生的数据与真实设备产生的数据相似,好处是海洋电子应用系统在测试时,不用借助于实际物理设备,通过该软件即可收集到丰富且与实际相符的数据,从而在测试的过程中有效的降低测试成本,提升测试效率。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1