农机购置补贴北斗定位终端数据传输协议.pdf
农机购置补贴“三合一”系统说明文件 附件 5 农机购置补贴“三合一”系统 农机北斗定位终端数据传输协议 【版本 V2.0.0】 技术支持:金色大田科技有限公司 咨询电话:18519101222 第 1 页 共 11 页 农机购置补贴“三合一”系统说明文件 目 录 一、 前言 ........................................................................................................... 3 二、 名词解释 .................................................................................................... 4 三、 通信规约 .................................................................................................... 4 四、 通信逻辑 .................................................................................................... 4 五、 通信数据包格式定义 .................................................................................. 5 5.1 通信数据基本格式定义 ............................................................................................ 5 5.2 数据域内容格式定义................................................................................................. 7 5.2.1 注册报文 .............................................................................................................. 7 5.2.2 获取通信服务器 IP 地址和端口号报文 .......................................................... 8 5.2.3 实时数据上报报文 ............................................................................................. 8 5.2.4 心跳报文 ............................................................................................................ 10 5.2.5 拆除报警报文 .................................................................................................... 10 第 2 页 共 11 页 农机购置补贴“三合一”系统说明文件 一、前言 北斗农机定位终端是专门为农机定位跟踪研发的高性能机载终端,利用卫星 定位技术和无线通信技术实现农机远程定位。 北斗(BDS/GPS)农机定位终端,根据接收到的北斗(BDS/GPS)卫星信号计 算出定位坐标,通过通讯网络发送定位信息、状态信息至远程数据接收服务器。 服务器端依据接收的数据计算出农机运行的轨迹、里程和相应的运行面积。 本协议 “北斗(BDS/GPS)农机定位终端数据传输协议”主要用于定位终端 与服务器之间的通讯对接工作(数据传输)。 协议的主要使用对象为嵌入式研发工程师和服务器端软件研发工程师。 网络拓扑图如下: 第 3 页 共 11 页 农机购置补贴“三合一”系统说明文件 二、名词解释 1.Token:终端与通信服务器、分发服务器建立通讯的令牌; 2.认证服务器:用于终端获取 Token 的服务器; 3.分发服务器:用于终端获取通信服务器 IP 地址和端口号的服务器; 4.通信服务器:用于接收定位和状态等信息的服务器。 三、通信规约 1.认证和分发服务器采用“域名+端口号”的方式进行访问。 认证服务器:token.dtwl360.cn:27501 分发服务器:allot.dtwl360.com:29001 2.通信服务器采用“IP 地址+端口号”的方式进行访问。 3.终端与服务器之间采用 TCP 协议通信。 4.协议采用网络字节序(Big Endian)传输数据。 四、通信逻辑 1.终端认证 终端上电后连接并发送“注册报文”到认证服务器,认证服务 器返回 token 信息。(终端掉线或连接失败时需重新获取 token)。 2.获取通讯地址 终端连接并发送“IP 地址请求报文”到分发服务器,获 得通信服务器的 IP 地址和端口号。 3.上报数据 终端实时采集定位及相关信息,按照数据通讯协议(必须包含 token),发送至通信服务器。终端掉线或连接失败时需重新请求分发服务器获 取新的通信服务器 IP 地址和端口号。 备注:终端与通信服务器在 60S 的时间内未发生数据交互,需发送心跳报文。 第 4 页 共 11 页 农机购置补贴“三合一”系统说明文件 通信逻辑图如下: 五、通信数据包格式定义 5.1 通信数据基本格式定义 1.通信包采用如下图所示的结构: 序号 1 2 3 4 5 6 7 8 9 10 11 内容 协 议 头 包 序 号 农机 厂家 终端 类型 终端 ID 数据包 类型 Token 数据域 长度 数据域 内容 CRC16 校验位 协议 尾 字节 数 2 4 2 1 15 1 32 2 N 2 4 2.详细描述如下表: 序号 内容 字节数 1 协议头 2 2 包序号 4 备注 固定格式:0XAA 0X55 报文的序列号,上电发送的第一条报文的包序号为 1,后 续发送报文的包序号递增 1,每天零点清零包序号。 用于唯一标识厂家的代号。 3 农机厂家 2 0X0000:值为系统保留。 如:0X0001:大田 第 5 页 共 11 页 农机购置补贴“三合一”系统说明文件 用于区分终端的类别。 4 终端类型 1 0X00:值为系统保留; 0X01:定位终端; 占用 15 个字节,采用终端 15 位 IMEI 号作为终端 ID,例: IMEI 号为 352736081552294,传输内容为 0X33 0X35 0X32 0X37 0X33 0X36 0X30 0X38 0X31 0X35 0X35 0X32 0X32 0X39 5 终端 ID 15 0X34;服务器端按照 ASCII 码解析。 注:如未使用 imei 号作为终端编号,需向平台管理方报 备,并获取相应的区别码(终端编号要求企业内不重复)。 未使用 imei 号作为终端编号,并且未报备的终端,平台 方不接收其上报的数据。 数据包的类别: 上行(终端→认证服务器): 0X01:注册报文。 上行(终端→“分发服务器”): 0X23:获取通信服务器 IP 地址和端口 上行(终端→通信服务器): 6 数据包类型 1 0X02:实时数据上报报文; 0X04:心跳报文; 0X05:拆除报警报文; 下行(认证、通信服务器→终端): 0X09:回复报文。 下行(“分发服务器”→ 终端) 0X24:回复通信服务器 IP 地址和端口。 终端注册成功后,“认证服务器”发送给终端的字符串。 7 Token 32 上报报文中必须添加 Token 才能被“通信服务器”识别。 注:“注册报文”没有该字段,字节数为 0。 8 数据域长度 2 9 数据域内容 N 10 CRC16 校验位 2 11 协议尾 4 用于标识数据域内容有多少个字节。采用 2 字节的 16 进 制数字表示,值可以为 0。 字节个数由“数据域长度”决定,存储实际数据值。 采用标准 CRC16(Modbus)校验算法,计算范围:从协议头起 到数据域内容区域止(包含协议头和数据域内容)。 固定格式:0X40 0X40 0X24 0X24 第 6 页 共 11 页 农机购置补贴“三合一”系统说明文件 5.2 数据域内容格式定义 5.2.1 注册报文 企业通过开发者平台进行定位终端添加。添加后定位终端发送注册报文,获 取 Token 值。 当数据包类型为 0X01 时,完整报文数据格式如下(无数据域内容): 序号 内容 字节数 1 协议 头 2 2 包序 号 4 3 农机 厂家 2 4 终端 类型 1 5 终端 ID 15 6 数据包类型 0X01 1 7 数据域 长度 2 8 CRC16 校验位 2 9 协议尾 4 终端注册示例: AA 55 00 00 00 01 00 01 01 33 35 32 37 33 36 30 38 31 35 35 32 32 39 34 协议头 包序号 农机 厂家 终端 类型 00 00 B1 4C 40 40 24 24 数据域 长度 CRC16 校验 协议尾 终端 ID(352736081552294) 01 数据包 类型 (注册包) 认证服务器收到注册报文后,向终端返回回复报文。报文格式如下: 序号 内容 字节数 1 2 协 包 议 序 头 号 2 4 3 4 农机 终端 厂家 类型 2 1 5 6 终 数据包 端 类型 ID 0X09 15 1 7 8 9 10 数据域 数据域 CRC16 长度 内容 校验位 2 1+N 2 协议尾 4 备注:“包序号”到“终端 ID”区域与上行报文对应区域的值相同。(包含“包 序号”和“终端 ID”区域)。 数据域内容: 序号 区域 字节数(个) 1 回复码 1 2 回复内容 内容 说明 0X01 注册成功 0X81 注册失败 ①注册成功:返回 Token 值,N=32 N ②注册失败:返回空,N=0 注册成功示例: AA 55 00 00 00 01 00 01 01 33 35 32 37 33 36 30 38 31 35 35 32 32 39 34 协议头 包序号 农机 厂家 终端 类型 终端 ID(352736081552294) 09 00 21 数据包 类型 (回复包) 数据域 长度 01 B4 9E 37 43 8F A9 29 2D 03 82 E3 CC AD CC 28 0E E3 5E A4 D3 0C 98 D4 A3 数据域(回复码+Token) B9 71 9A 34 B6 61 57 9E CB F7 40 40 24 24 CRC16 校验 协议尾 第 7 页 共 11 页 农机购置补贴“三合一”系统说明文件 5.2.2 获取通信服务器 IP 地址和端口号报文 终端连接到分发服务器获取通信服务器 IP 地址和端口号,获取成功后连接 通信服务器并进行通信。数据包类型为 0X23,完整报文的数据格式如下: 序号 1 2 内容 协 议 头 包 序 号 字节数 2 4 3 4 农 机 厂 家 2 终 端 类 型 1 5 6 7 8 9 10 11 终端 ID 数据包 类型 0X23 Token 数据域 长度 数据域 内容 CRC16 校验位 协议 尾 15 1 32 2 0 2 4 分发服务器收到报文后,向终端返回回复报文。报文格式如下: 序号 1 2 内容 协 议 头 包 序 号 字节数 2 4 3 农 机 厂 家 2 4 5 6 7 8 9 10 终端 类型 终端 ID 数据包 类型 0X24 数据域 长度 数据域 内容 CRC16 校验位 协议尾 1 15 1 2 N 2 4 备注:“包序号”到“终端 ID”区域与上行报文对应区域的值相同。(包含“包 序号”和“终端 ID”区域)。 数据域内容: 序 号 字节数 区域 内容 (个) 说明 按照 ascii 码处理,例如:数据域内 1 容为 222.128.122.89:1002,则传输内 数据域 N 内容 通信服务器 ip 地址:端口号 容为 0X32 0X32 0X32 0X2E 0X31 0X32 0X38 0X2E 0X31 0X32 0X32 0X2E 0X38 0X39 0X3A 0X31 0X30 0X30 0X32 5.2.3 实时数据上报报文 数据包类型为 0X02,完整报文数据格式如下: 序号 内容 字节 数 1 2 协 包 议 序 头 号 2 4 3 4 5 机 终端 终端 厂 类型 ID 1 15 农 家 2 6 7 数据包 类型 Token 0X02 1 32 第 8 页 共 11 页 8 9 10 11 数据域 数据域 CRC16 协议 长度 内容 校验位 尾 2 43 2 4 农机购置补贴“三合一”系统说明文件 数据域内容详细描述如下表: 序号 区域 字节数 说明 (个) 终端通过定位模块采集经度信息。如果没有定位成功,无 1 经度 8 法采集经度信息,则数据为 0。数据以度为单位,按照 double 类型对数据进行处理和上传(double 占用 8 个字 节)。 2 东西经标识 1 东经:0X45 西经:0X57 未定位成功:0X00 终端通过定位模块采集纬度信息。如果没有定位成功,无 3 纬度 8 法采集纬度信息,则数据为 0。数据以度为单位,按照 double 类型对数据进行处理和上传(double 占用 8 个字 节)。 4 南北纬标识 1 北纬:0X4E 南纬:0X53 未定位成功:0X00 终端通过定位模块采集速度信息。如果没有定位成功,无 5 速度 4 法采集速度信息,则数据为 0。数据以公里/小时为单位, 保留两位小数。按照 float 类型对数据进行处理和上传 (float 占用 4 个字节)。 终端通过定位模块采集方向信息。如果没有定位成功,无 6 方向 4 法采集方向信息,则数据为 0。数据以度为单位,保留两 位小数。按照 float 类型对数据进行处理和上传(float 占用 4 个字节,以正北为参考基准)。 终端通过定位模块采集海拔信息。如果没有定位成功,无 7 海拔 4 法采集海拔信息,则数据为 0。数据以米为单位,保留两 位小数。按照 float 类型对数据进行处理和上传(float 占用 4 个字节)。 8 9 可用卫星数量 定位状态 1 1 终端通过定位模块采集可用卫星数量信息。如果没有定位 成功,无法采集终端可用卫星数量信息,则数据为 0X00。 终端通过定位模块采集定位状态信息。取值范围如下: 0:未定位 1:单点定位 2:差分定位 4:固定解 5:浮点解 终端通过定位模块采集 UTC 时间信息。如果读取不到定位 10 采集时间 6 时间,则数据为 0X000000000000。字节依次为:年(1B), 月(1B),日(1B),时(1B),分(1B),秒(1B) 11 机器状态 1 12 外部电压 4 终端的状态信息。具体定义如下: 0:打火静止 1:打火工作 2:熄火静止 3:熄火移动 终端的外部电压值,数据以 V 为单位,按照 float 类型对 数据进行处理和上传(float 占用 4 个字节)。 第 9 页 共 11 页 农机购置补贴“三合一”系统说明文件 注:在农机打火工作状态下,终端间隔 5s 采集数据并上传。 5.2.4 心跳报文 数据包类型为 0X04,完整报文的数据格式如下(无数据域内容): 序号 1 2 内容 协 议 头 包 序 号 字节数 2 4 3 农 机 厂 家 2 4 终 端 类 型 1 5 6 7 8 9 10 11 终端 ID 数据包 类型 0X04 Token 数据域 长度 数据域 内容 CRC16 校验位 协议 尾 15 1 32 2 0 2 4 通信服务器收到心跳报文后,向终端返回回复报文。报文格式如下: 序号 内容 字节数 1 协 议 头 2 2 包 序 号 4 3 4 5 农机 厂家 终端 类型 终端 ID 2 1 15 6 数据包 类型 0X09 1 7 8 9 10 数据域 长度 数据域 内容 CRC16 校验位 协议尾 2 1 2 4 备注:“包序号”到“终端 ID”区域与上行报文对应区域的值相同。(包含“包序号”和 “终端 ID”区域)。 数据域内容: 序号 区域 字节数(个) 内容 说明 1 回复码 1 0X01 成功。 5.2.5 拆除报警报文 数据包类型为 0X05,完整报文数据格式如下: 序号 内容 字节 数 1 2 协 包 议 序 头 号 2 4 3 4 5 机 终端 终端 厂 类型 ID 1 15 农 家 2 6 7 数据包 类型 Token 8 9 10 11 数据域 数据域 CRC16 协议 长度 内容 校验位 尾 2 43 2 4 0X05 1 32 数据域内容详细描述如下表: 序号 区域 字节数 说明 (个) 终端通过定位模块采集经度信息。如果没有定位成功,无 1 经度 8 法采集经度信息,则数据为 0。数据以度为单位,按照 double 类型对数据进行处理和上传(double 占用 8 个字 节)。 第 10 页 共 11 页 农机购置补贴“三合一”系统说明文件 2 东西经标识 1 东经:0X45 西经:0X57 未定位成功:0X00 终端通过定位模块采集纬度信息。如果没有定位成功,无 3 纬度 8 法采集纬度信息,则数据为 0。数据以度为单位,按照 double 类型对数据进行处理和上传(double 占用 8 个字 节) 4 南北纬标识 1 北纬:0X4E 南纬:0X53 未定位成功:0X00 终端通过定位模块采集速度信息。如果没有定位成功,无 5 速度 4 法采集速度信息,则数据为 0。数据以公里/小时为单位, 保留两位小数。按照 float 类型对数据进行处理和上传 (float 占用 4 个字节)。 终端通过定位模块采集方向信息。如果没有定位成功,无 6 方向 4 法采集方向信息,则数据为 0。数据以度为单位,保留两 位小数。按照 float 类型对数据进行处理和上传(float 占用 4 个字节,以正北为参考基准)。 终端通过定位模块采集海拔信息。如果没有定位成功,无 7 海拔 4 法采集海拔信息,则数据为 0。数据以米为单位,保留两 位小数。按照 float 类型对数据进行处理和上传(float 占用 4 个字节)。 8 9 可用卫星数量 定位状态 1 1 终端通过定位模块采集可用卫星数量信息。如果没有定位 成功,无法采集终端可用卫星数量信息,则数据为 0X00。 终端通过定位模块采集定位状态信息。取值范围如下: 0:未定位 1:单点定位 2:差分定位 4:固定解 5:浮点解 终端通过定位模块采集 UTC 时间信息。如果读取不到定位 10 采集时间 6 时间,则数据为 0X000000000000。字节依次为:年(1B), 月(1B),日(1B),时(1B),分(1B),秒(1B) 11 机器状态 1 12 外部电压 4 终端的状态信息。具体定义如下: 0:打火静止 1:打火工作 2:熄火静止 3:熄火移动 终端的外部电压值,数据以 V 为单位,按照 float 类型对 数据进行处理和上传(float 占用 4 个字节)。 第 11 页 共 11 页