主要内容

利用AIS信号进行船舶跟踪

本示例向您展示如何使用MATLAB®和Communications Toolbox™处理自动识别系统(AIS)信号来跟踪船舶。您可以使用捕获的信号,也可以使用RTL-SDR Radio实时接收信号。如果您有Mapping Toolbox™,这个例子可以在地图上显示被跟踪的船只。

所需硬件和软件

要使用捕获的信号运行此示例,您需要Communications Toolbox™。

要实时接收信号,还需要RTL-SDR无线电和相应的RTL-SDR无线电支持包Add-On的通信工具箱支持包。金宝app

的“通信工具箱”支持的SDR平台的完整列表,请参阅“受支持的硬件”部分金宝app软件定义无线电(SDR)发现页面

背景

在海上运输中,船舶交通服务使用AIS作为整个海上交通监控系统的组成部分。AIS的主要功能如下:

  • 传送船只标识,位置,航线和航速。

  • 接收和处理指定的询问电话。

  • 在航行中或抛锚时连续作业。

AIS系统规格:

  • 发射频率范围:156.025 MHz-162.025 MHz

  • 调制方案:高斯频移键控

  • 比特率:9600比特/秒

  • 发射带宽时间积:0.4

  • 接收带宽时间乘积:0.5

  • 调制指数:0.5

AIS传输报文中包含以下字段:

  • 训练序列:交替0和1的24位序列(0101…)。

  • 开始标志:8位序列,01111110。

  • Data:缺省传输报文中的数据部分为168位。

  • 帧校验序列(FCS):使用循环冗余校验(CRC) 16位多项式来计算校验和。

  • 结束标志:与开始标志相同。

  • 缓冲区:缓冲区通常是24位长,以考虑比特填充(最大4位),距离延迟(14位)和同步抖动(6位)。

图为AIS报文格式

运行示例

控件可以打开示例打开脚本按钮。默认配置的持续时间为10秒,使用捕获数据文件中的信号数据,并输出到文本文件。要从命令行提供输入值,必须进行更改cmdlineInput设置为1,则运行示例时将提示输入以下信息:

  1. 接收持续时间(秒),

  2. 信号源(捕获数据文件或RTL-SDR无线电),

  3. 可选输出方法(映射、文本文件或两者都有)。

该示例以表格形式显示了检测到的船舶信息,如下图所示。

如果你有Mapping Toolbox的授权,你也可以在地图上观察AIS跟踪船只。

接收机结构

下面的方框图总结了接收方代码结构。信号处理主要包括信号源、物理层和数据查看器三个部分。

信号源

指定信号源为“File”或“RTL-SDR”。

  1. File:使用comm.BasebandFileReader读取包含先前通过空中捕获的信号的文件。

  2. RTL-SDR:使用RTL-SDR无线电接收实时信号。

该代码使用9600 Hz的信号符号速率和每个符号24个样本。

如果指定“RTL-SDR”作为信号源,示例将在计算机中搜索无线电地址为“0”的RTL-SDR无线电,并将其用作信号源。

物理层

物理层(PHY)处理从信号源接收的基带样本,以产生包含船舶位置信息和原始消息字节的数据包。该图显示PHY处理组件。

  • 包搜索:将接收信号分成多个窗口,搜索接收信号中最强的突发。

  • 直流偏置消除:移除检测信号的直流偏移量。

  • 频率补偿:估计并补偿载波频偏。

  • 匹配滤波:使用AIS规范生成的高斯脉冲进行滤波。

  • 同步与解调:通过将接收到的信号与已知的前导相关联,进行定时同步,并解调产生比特。

  • AIS比特解析器:检测开始标志和结束标志,然后进行CRC检测。如果CRC成功,则对船舶信息进行解码。

AIS系统中有64种特定的消息类型。船舶位置信息包含在11种消息类型中。这个示例解码了包含位置信息的所有11种消息类型。

如前面的图所示,这个示例显示了船号、纬度、经度、日期和时间。消息包含可按[描述]解码的附加信息。1]。

数据查看器

数据查看器在图形用户界面(GUI)上显示接收到的消息。当数据被捕获时,应用程序以表格形式列出从这些消息解码的信息。

示例代码

下面描述了示例步骤。要查看详细的操作,请查看示例调用的helper函数中运行的代码。若要更改默认设置,请设置cmdlineInput为1。

cmdlineInput = 0;如果cmdlineInput从命令行请求用户输入应用程序参数userInput = helperAISUserInput;其他的负载(“defaultInputs.mat”);结束%根据用户输入计算AIS参数[aisParam,sigSrc] = helperAISConfig(userInput);创建数据查看器对象并根据用户输入进行配置查看器= helperAISViewer(“LogFileName”, userInput。LogFilename,“SignalSourceType”, userInput.SignalSourceType);%根据用户输入启动地图如果userInput。LaunchMap startMapUpdate(观众);结束%根据用户输入的日志数据如果userInput。LogData startDataLog(观众);结束启动查看器并初始化无线电时间start(viewer) radioTime = 0;捕获和解码AIS样本的主回路radioTime < userInput。持续时间如果aisParam.isSourceRadio%用于RTL-SDR[rcv,~,lost,~] = sigSrc();lostFlag =逻辑(丢失);其他的%用于基带文件rcv = sigSrc();lostFlag = uint32(0);结束通过解码AIS样本恢复信息[info, pkt] = helperAISRxPhy(rcv,aisParam);在查看器上查看已解码的信息update(viewer, info, pkt, lostFlag);%更新无线电时间radioTime = radioTime + aisParam.FrameDuration;结束停止查看器,释放信号源。%停止(观众)发布(sigSrc)

进一步的探索

你也可以打字AISExampleApp在MATLAB命令窗口或点击链接使用AISExampleApp用户界面探索AIS信号。应用程序界面允许您选择信号源和更改持续时间。

您可以探索以下功能和系统对象的物理层实现的详细信息:

选定的参考书目

  1. ITU-R M.1371-5, VHF海上移动频段使用时分多址的自动识别系统的技术特性。