3. AIS数据采集硬件与接口配置
要把AIS数据真正采集到分析平台,第一步不是写解析代码,而是把“船端设备—物理接口—通信参数—网络转发—采集主机”这条链路打通。船载AIS设备对外输出的通常是符合IEC 61162(NMEA 0183)规范的语句流,常见报文如!AIVDM(他船信息)、!AIVDO(本船信息),以ASCII文本、逗号分隔、以\r\n结尾。理解这一点,后面的接口与参数配置就有了统一参照。
一、船载AIS设备的常见接口形态
船载AIS(Class A或Class B)通常提供三类对外接口:一是RS-422/RS-485差分串口,用于连接引航员接口盒(Pilot Plug)或VDR,抗干扰强、传输距离远;二是RS-232串口,多见于早期设备或调试口,电平为±3~±15V,传输距离一般不超过15米;三是以太网口,新型AIS或AIS网关通过RJ45输出TCP/UDP数据流,便于多客户端共享。此外还有USB转串口、光耦隔离板等中间形态。
实际接线时要注意:AIS的RS-422输出为差分对(A/B或TX+/TX-),不能直接接到RS-232的RX/TX引脚上,必须经RS-422转RS-232/RS-485转换器或RS-422转USB隔离模块。差分线建议使用屏蔽双绞线,屏蔽层单端接地,避免与雷达、VHF发射机电源线并行布线。
二、串口通信参数配置
AIS串口最典型的参数是波特率38400、8位数据位、无校验、1位停止位(8N1),这是IEC 61162-1对高速AIS输出的规定。部分设备的本船低速口为4800bps。配置时最容易出错的是波特率不匹配——表现为收到乱码或完全无数据。可用以下命令在Linux采集主机上验证:
# 查看串口设备
ls -l /dev/ttyUSB0
# 设置参数:38400, 8N1, 无流控
stty -F /dev/ttyUSB0 38400 cs8 -cstopb -parenb -crtscts
# 直接观察原始语句流
cat /dev/ttyUSB0 | head -n 20
若输出形如!AIVDM,1,1,,A,13aG?P0P00PD;88MD5MTDww@2D0l,0*5C,说明链路正常;若为乱码,优先检查波特率与电平;若无任何输出,检查A/B线是否接反、设备是否使能了该端口输出。
三、网络转发配置
当采集端与AIS距离较远或多系统共享时,常用串口服务器(如MOXA NPort、USR-N510)把串口数据转为TCP Server或UDP广播。典型配置:串口侧38400/8N1,网络侧设为TCP Server模式、监听端口如4001,采集主机作为TCP Client连接。若采用UDP广播,则同一网段内多个分析节点可同时接收,但需注意丢包与乱序,应用层要按语句完整性重组。
下面这张图展示了从船载AIS到采集主机的完整信号链与关键参数落点:
四、常见硬件选型
选型要围绕“距离、隔离、并发、供电”四个维度。短距离单机采集,可用USB转RS-422/485隔离转换器(如带ADM2582隔离芯片的模块),成本低、即插即用;船上多系统共享或需要远程回传,选工业级串口服务器,支持-40~75℃、双电源冗余、TCP/UDP双模式;若AIS本身带网口,则直接用交换机接入,省去转换环节。需要提醒的是,船舶环境电磁干扰强,优先选带光电隔离和TVS浪涌保护的产品,避免雷击或电源波动损坏AIS端口。
五、连接实战与验证
假设现场为一台Class A AIS,通过Pilot Plug的RS-422输出,采集主机为工控机。操作顺序:先断电接线,AIS的TX+接转换器RX+、TX-接RX-,共地;上电后用stty设好38400/8N1;再cat /dev/ttyUSB0观察语句。若语句完整但校验和偶发错误,检查线缆屏蔽与接地;若长时间无!AIVDO,确认本船AIS是否使能了该输出口。网络模式下,用nc 192.168.1.50 4001测试连通性,再在采集程序中做语句分帧与校验和验证,确认无误后即可进入解析与入库环节。
!AIVDM)重组成功率,三项均正常再接入生产流程。