# NMEA2000
FDI_NMEA2000_接口用户使用手册
# 1. 简介
NMEA 2000是一种用于船舶和航海设备之间的数据通信的标准化接口协议。它通过串行通信传输船舶相关信息,如位置、速度和状态等。NMEA 2000广泛应用于船舶领域,实现了各种设备的互联和数据共享。我司的产品强调兼容国际NMEA 2000协议,确保与全球范围内的NMEA 2000设备和系统的互操作性。这意味着我们的产品可以轻松集成到各种船舶和海洋应用中,为用户提供可靠、高效的数据通信解决方案。
# 2. 知识储备
# (1) 什么是NMEA2000?
NMEA 2000(National Marine Electronics Association 2000)是一种用于船舶和航海设备之间的数据通信标准化接口协议。它定义了一套规范,使不同制造商的船舶电子设备能够通过一个共享的网络进行通信和信息交换。NMEA 2000协议采用了控制器-设备(Master-Device)的架构,通过CAN(Controller Area Network)总线进行数据传输。这种协议支持全双工通信,可以在同一总线上连接多达250个设备,包括GPS、雷达、声纳、自动驾驶系统等。
# (2) 什么是PGN ? PGN与CANID的关系是什么?
简单来说,PGN是NMEA2000的数据ID,也可以理解为CAN通信中头帧的部分数据,注意在使用CAN总线接收NMEA2000协议数据包时使用的CAN总线的头帧拓展帧模式,即CAN的头帧具有29bit。除去PGN所包含的信息,此时的CAN头帧还包括了设备源地址,目标地址以及优先级。
# (3) NMEA2000与CAN通信的关系。
简单来说,NMEA2000是CAN的一种高层软件协议,是基于CAN通信的电气以及硬件基础的一种软件层的数据编码格式。可以理解为一种基于CAN通信头帧以及数据帧的通信协议。
# (4) 什么是多帧快速包发送方式?
简单来说,多帧快速包发送方式是为了解决数据包总长度大于8字节数据,在CAN总线可以安全且连续快速发送数据定义的格式。具体格式如下:
基于NMEA2000的多帧快速 包协议格式 | |||||||||
序号 | Byte[0] | Byte[1] | Byte[2] | Byte[3] | Byte[4] | Byte[5] | Byte[6] | Byte[7] | Byte[8] |
Packet_1 | 0 | 28 | Data[1] | Data[2] | Data[3] | Data[4] | Data[5] | Data[6] | Data[7] |
Packet_2 | 1 | Data[8] -> Data[15] | |||||||
Packet_3 | 2 | Data[16]-> Data[24] | |||||||
Packet_4 | 3 | Data[25] | Data[26] | Data[27] | Data[28] | 0xFF | 0xFF | 0xFF | 0xFF |
① 多帧快速包的首帧包的Byte[1]为实际数据包有效数据字节长度。
② 从Packet_1的Byte[0]向Packet_2中Byte[0]的数据依次从0开始增加作为数据包序号判定。
③ 其余数据为实际有效载荷,空余字节填充0xFF.
# 3. 使用方法
# (0) 地面站配置
① 由于我司产品的CAN总线上允许挂载多种基于CAN硬件的通信协议,所有如果需要使用特定的NMEA2000协议通过CAN总线输出,则需要通过上位机配置,保存重启后对应COM口功能生效。
# (1) MCU单片机CAN总线接收
①用户可以通过我司提供的通信协议,以获得对应数据包的CANID,以及数据包具体内容进行总线数据获取和解码。注意此处CANID在总线上的发布方式为拓展帧模式。
# (2) NMEA2000设备直连
① 用户可以通过使用市面上常见NMEA2000分析接入我们的惯导模块,便可以在分析仪器上获取常用的导航信息。
# 4. 测试效果
(1) 通过CAN分析仪抓取CAN总线上数据可见模块正按照协议的标准向总线上发布关于NMEA2000的协议数据。
# 5. 通信协议
# (1) 目前支持NMEA2000特定数据包
协议内容请参阅FDI_NMEA2000 协议。
支持NMEA2000特定数据包 | |||||||
序号 | PGN | CAN_ID | 描述 | 频率(Hz) | 数据长度(bit) | 波特率 | 数据包类型 |
1 | 126992 | 0x01F010FF | UTC时间 | 1 | 8 | 250K | 单帧 |
2 | 127250 | 0x01F112FF | 艏向 | 1 | 8 | 250K | 单帧 |
3 | 127251 | 0x01F113FF | 转向速率 | 10 | 8 | 250K | 单帧 |
4 | 127257 | 0x01F119FF | 姿态角 | 1 | 8 | 250K | 单帧 |
5 | 127258 | 0x01F11AFF | 磁偏角 | 1 | 5 | 250K | 单帧 |
6 | 129025 | 0x01F801FF | 位置,快速更新 | 10 | 8 | 250K | 单帧 |
7 | 129026 | 0x01F802FF | COG&SOG,快速更新 | 4 | 8 | 250K | 多帧 |
8 | 129029 | 0x01F805FF | GNSS位置数据 | 1 | 51 | 250K | 多帧 |
9 | 129044 | 0x01F814FF | 基准 | 1 | 20 | 250K | 单帧 |
10 | 129539 | 0x01FA03FF | GNSS DOPs | 1 | 8 | 250K | 多帧 |
11 | 129540 | 0x01FA04FF | GNSS 信息 | 1 | 15 | 250K | 多帧 |
12 | 129545 | 0x01FA09FF | GNSS RAIM输出 | 2 | 15 | 250K | 多帧 |
13 | 129547 | 0x01FA0BFF | GNSS 伪距误差统计 | 2 | 15 | 250K | 单帧 |
# (2) 数据包协议
① 用户可以通过NMEA2000国际标准协议手册,以及提供的PGN相应编号查询与此对应的PGN数据包具体数据定义,以获得正确的解析。【网址】