diff --git a/README.md b/README.md index 44b842f..a8ca5c4 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,35 @@ - **电气性能测试**:工作电压、功耗、接口电气特性 - **环境适应性测试**:温度、湿度等环境条件下的性能变化 +## 系统架构 + +``` +┌─────────────┐ TCP/UDP ┌──────────────┐ RS485/TTL ┌────────────┐ +│ EDC 服务 │ ◄────────────► │ PGLC 联网终端 │ ◄─────────────► │ DG430 工装 │ +│ (数据中心) │ JSON 协议 │ (网络桥接) │ 串口协议 │ (测试硬件) │ +└──────┬──────┘ └──────────────┘ └──────┬─────┘ + │ │ + ▼ ▼ +┌──────────────┐ ┌──────────────┐ +│ MySQL │ │ 车检器 │ +│ (测试数据) │ │ (被测设备) │ +└──────────────┘ └──────────────┘ +``` + +## 协议文档 + +| 文档 | 说明 | +|------|------| +| [DG430串口协议](docs/DG430串口协议.md) | DG430 测试工装 RS485/TTL 串口通信协议 | +| [PGLC网络接口协议](docs/PGLC网络接口协议.md) | 联网终端 UDP/TCP JSON 接口协议 | +| [EDC服务](docs/EDC服务.md) | 边缘数据中心 — 数据库表结构、业务流程 | + ## 技术栈 -(待定) +- **后端服务**: C++ / Go(待定) +- **数据库**: MySQL +- **通信**: TCP/UDP(JSON)、RS485/TTL(二进制协议) +- **硬件**: DG430 地感测试工装 ## 快速开始 diff --git a/docs/DG430串口协议.md b/docs/DG430串口协议.md new file mode 100644 index 0000000..41804ed --- /dev/null +++ b/docs/DG430串口协议.md @@ -0,0 +1,443 @@ +# 测试工装DG430串口协议 + +DG430地感测试工装协议说明 + +(V2.0.1-20260522) + +# 1 硬件介绍 + +   接口: + +IN1和GND:接地感的存在信号; + +IN2和GND:接地感的脉冲信号; + +IN3和COM:接按钮,按下开始测试; + +IN4和COM:接按钮,按下复原位置; + +PU+/PU-/DR+/DR-/MF+/MF-:接电机驱动器; + ++5V/GND/NO/NC:接限位开关,有信号电机停转; + +485A/485B:485信号,USB转485接电脑; + +VCC/GND:电源输入,直流9-36V; + ++5V/GND:5V直流电输出; + +GND/LP:接地感线圈; + +SW3:接激光探头; + +拨码开关(对应地感测试正常不报警): + +    DIP1---OFF,DIP2---OFF:测试132系列地感; + +    DIP1---ON,DIP2---OFF:测试110系列地感; + +数码管显示: + +进入和离开对应地感的触发和释放距离,单位mm; + +# 2 声音提示说明 + +2声-----工作频率和峰峰值不对,可能不在最低频; + +3声-----灵敏度不对,可能不是最低灵敏度; + +4声-----灵敏度提升不对,132的DIP5不在OFF; + +5声-----不是离开脉冲; + +6声-----脉冲继电器无输入; + +# 3 数据显示 + +   安装软件“dg430\_tool”,可显示峰峰值、工作频率、出发距离、释放距离、故障信息、继电器输出等。 + +# 4 通讯方式 + +通信采用一问一答方式。即主机发送一个命令,从机返回应答;主机发送下一条命令,从机当前命令的应答。 + +RS485串口 通信波特率19200bps;8位数据位,1位停止位,无校验位。 + +TTL串口 通信波特率 115200;8位数据位,1位停止位,无校验位。 + +# 5 通讯数据包格式 + +| | 起始字节 | 地址 | 数据长度 | 命令 | 命令数据 | 异或 | 和校验 | +| --- | --- | --- | --- | --- | --- | --- | --- | +| 字段值 | STX | ADDR | LEN | CMD | DATA | XOR | SUM | +| 数据类型 | INT8U | INT8U | INT8U | INT8U | INT8U | INT8U | INT8U | +| 字节数 | 1字节 | 1字节 | 1字节 | 1字节 | LEN-1 | 1字节 | 1字节 | + +STX:  单字节,表示数据包开始信息,用0x7F 表示。 + +ADDR:单字节,表示通信地址。 + +LEN:  单字节,表示数据包的有效数据长度,即命令和命令数据的总和。 + +CMD: 单字节,表示数据包的命令。 + +DATA: 多字节,表示数据包的命令数据,一个数据包中可以没有命令数据。 + +XOR:  异或校验,校验从地址开始,命令数据的最后一个字节结束。 + +SUM: 和校验,校验从地址开始,命令数据的最后一个字节结束。 + +## 5.1 开始测试指令,命令: 0xB0 + +  上位机发送格式: + +| 7Fh | 80h + ADD | 01h | B0h | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +       说明:该指令为上位机发送给DG430。DG430接收到该指令后返回协议并开始测试。 + +测试用例:7F 81 01 B0 30 32  + +设备返回格式: + +| 7Fh | 80h + ADD | 02h | B0h | Flag | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + + 说明:无论是按键开始测试还是发送协议开始测试都会返回该协议; + +Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 02 B0 00 33 33  + +## 5.2 测试复原位置指令,命令: 0xB1 + +  上位机发送格式: + +| 7Fh | 80h + ADD | 01h | B1h | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +说明:该指令为上位机发送给DG430。DG430接收到该指令后返回协议并开始复原位置。 + +测试用例:7F 81 01 B1 31 33  + +返回格式: + +| 7Fh | 80h + ADD | 02h | B1h | Flag | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + + Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 02 B1 00 32 34  + +## 5.3 上报状态指令,命令: 0xB2 + +  设备上报格式: + +| 7Fh | 80h + ADD | 15h | B2h | 状态内容 | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + +状态内容详细说明(20字节): + +| | 设备型号 | 测试模式 | 是否正常完成测试 | 是否有故障 | 继电器输出 | 峰峰值 | 开始工作频率 | 进入工作频率 | 离开工作频率 | 进入高度 | 离开高度 | 进入速度 | 离开速度 | RFU | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 字节数 | 1字节 | 1字节 | 1字节 | 1字节 | 1字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | + + 例:7F 81 18 B2 01 00 00 0F 03 2F 0D EC C9 CC C9 EC C9 18 01 28 01 37 00 30 00 00 00 36 42   + +说明:该协议为每次测量完成后DG430主动上报,上位机无回复 + +设备型号:01-----PD132系列; + +          02-----DLD110系列; + +测试模式:0 为灵敏度测试模式;1为模拟过车测试模式 + +是否正常完成测试:00-----正常; + +01----不正常,可能是复原位置或者继电器存在信号无输出; + +02\----地感死机,有进入高度,到复原位置的距离时地感死机导致继电器还没有断开; + +是否故障: 00-----无故障; + +         BIT0-----为1时表示工作频率不是最低频; + +         BIT1-----为1时表示灵敏度不是最低灵敏度; + +         BIT2-----为1时表示灵敏度提升拨码没有在OFF; + +         BIT3-----为1时表示脉冲输出不是离开脉冲; + +继电器输出:表示存在继电器信号和脉冲继电器信号是否有输出; + +            BIT0-----为1时表示存在继电器信号有输出,接DG430的IN1; + +            BIT1-----为1时表示脉冲继电器信号有输出,接DG430的IN2; + +峰峰值:线圈无车LC震荡的峰峰值,误差±10%,小端模式,低字节在前, + +高字节在后;计算公式(单位V):峰峰值=((X\*3.3)/4095)\*4; + +开始工作频率:刚开始测试时,线圈无车LC震荡的工作频率,无误差,低字节在前,高字节在后;计算公式(单位HZ):工作频率=10\*X; + +进入工作频率:线圈从无车到有车时的工作频率; + +离开工作频率:线圈从无车到有车时的工作频率; + +进入高度:刚进入线圈有车时的高度,单位mm,小端模式; + +离开高度:刚离开线圈无车时的高度,单位mm,小端模式; + +进入速度:单位 分米/每秒,小端模式; + +离开速度:单位 分米/每秒,小端模式; + +RFU:保留字节; + +## 5.4 更改RTC时间和日期,命令: 0xB3 (弃用) + +  上位机发送格式: + +| 7Fh | 80h + ADD | 09h | B3h | 时间(4字节) | 日期(4字节) | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | --- | + + 说明:时间和日期按照RTC寄存器格式发送,发送格式为上位机发给DG430,收到后DG430更改自己的RTC时间,小端模式,低字节在前,高字节在后; + +例:7F 81 09 B3 00 12 14 00 28 67 21 00 53 13(时间:14:12:00,日期:2021-07-28) + +     返回格式: + +| 7Fh | 80h + ADD | 02h | B3h | 01h | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + +  例:7F 81 02 B3 01 31 37 + +## 5.5 电机前进指令,命令: 0xBA + +  上位机发送格式: + +| 7Fh | 80h + ADD | 01h | BAh | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +说明:该指令为上位机发送给DG430。DG430接收到该指令后返回协议并驱动电机前进。 + +测试用例:7F 81 01 BA 3A 3C  + +返回格式: + +| 7Fh | 80h + ADD | 02h | BAh | Flag | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + + Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 02 BA 00 39 3D + +## 5.6 电机后退指令,命令: 0xBB + +  上位机发送格式: + +| 7Fh | 80h + ADD | 01h | BBh | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +说明:该指令为上位机发送给DG430。DG430接收到该指令后返回协议并开始复原位置。 + +测试用例:7F 81 01 BB 3B 3D + +返回格式: + +| 7Fh | 80h + ADD | 02h | BBh | Flag | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + + Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 02 BB 00 38 3E  + +## 5.7 电机停止指令,命令: 0xBC + +  上位机发送格式: + +| 7Fh | 80h + ADD | 01h | BCh | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +说明:该指令为上位机发送给DG430。DG430接收到该指令后返回协议并开始复原位置。 + +测试用例:7F 81 01 BC 3C 3E  + +返回格式: + +| 7Fh | 80h + ADD | 02h | BCh | Flag | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + + Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 02 BC 00 3F 3F  + +## 5.8 获取设备版本号指令,命令:0x4A + +| 7Fh | 80H +ADD | LEN | 4Ah | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +获取控制卡的版本号 + +LEN: 0x01 + +eg: 7F 81 01 4A CA CC + +返回格式:: + +| 7Fh | 80H +ADD | LEN | 4Ah + 00 + 硬件版本号+软件版本 | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +LEN:0x08 + +硬件版本号:3个字节 + +软件版本号:3个字节 + +eg: 7F 81 08 4A 00 03 03 00 03 04 00 C4 E0, 表示硬件版本号3.3.0,固件版本为3.4.0 + +## 5.9 配置设备测试参数,命令: 0x4B + +  上位机发送格式: + +| 7Fh | 80h+ADD | 10h | 4Bh | Addr | DevType | TestMode | ResetDis | MinusDis | SensMin | SensMax | FreMin | FreMax | PeakMin | PeakMax | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 2B | 2B | 2B | 2B | 2B | 2B | 1B | 1B | + +说明:该指令为上位机发送给DG430。DG430接收到该指令后返回协议并更新测试参数。 + +Addr:1Byte, 设备地址、485地址 + +DevType:1Byte, 设备型号 + +TestMode: 1Byte, 测试模式,0 灵敏度测试模式;1 模拟过车模式 + +ResetDis: 复位距离,单位cm + +MinusDis: 皮距,激光到线圈的距离,测算的实际高度要减去这个皮距,单位cm。 + +SensMin,SensMax: 2Byte, 灵敏度最小、最大值 + +FreMin, FreMax: 2Byte, 频率最小、最大值 + +PeakMin, PeakMax: 2Byte, 峰峰值最小、最大值 + +测试用例:7F 81 12 4B 01 01 00 30 0D 00 8B 00 E6 07 76 06 D6 09 B0 0C 1C 80 C8 + +用例说明: + +Addr:0x01, DevType: 0x01, 00: Sensity Test Mode, ResetDis: 48cm,  MinusDis: 13cm,  SensMin:  139, SensMax: 230, Fre\_Min:1910, FreMax: 1750, PeakMin: 2480, PeakMax: 3100。 + +返回格式: + +| 7Fh | 80h + ADD | 02h | 4Bh | Flag | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + + Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 02 4B 00 C8 CE  + +## 5.10 查询设备测试参数,命令: 0x4C + +  上位机发送格式: + +| 7Fh | 80h + ADD | 01h | 4Ch | XOR | SUM | +| --- | --- | --- | --- | --- | --- | +| 1B | 1B | 1B | 1B | 1B | 1B | + +说明:该指令为上位机发送给DG430。DG430接收到该指令后返回协议并开始复原位置。 + +测试用例:7F 81 01 4C CC CE + +返回格式: + +| 7Fh | 80h+ADD | 13h | 4Ch | Flag | Addr | DevType | TestMode | ResetDis | MinusDis | SensMin | SensMax | FreMin | FreMax | PeakMin | PeakMax | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 2B | 2B | 2B | 2B | 2B | 2B | 1B | 1B | + + Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 13 4C 00 01 01 00 30 0D 00 8B 00 E6 07 76 06 D6 09 B0 0C 1C 86 CA + +## 5.11 出厂初始化指令,命令:0x4D + +| 7Fh | 80H +ADD | LEN | 4Dh | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +上位机发送该指令后,DG430进行出厂初始化操作 + +LEN: 0x01 + +eg: 7F 81 01 4D CD CF + +| 7Fh | 80h + ADD | 02h | 4Dh | Flag | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + + Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 02 4D 00 CE D0  + +## 5.12 设备复位指令,命令:0x4E + +| 7Fh | 80H +ADD | LEN | 4Eh | XOR | SUM | +| --- | --- | --- | --- | --- | --- | + +获取控制卡的版本号 + +LEN: 0x01 + +eg: 7F 81 01 4E CA CC + +返回格式: + +| 7Fh | 80h + ADD | 02h | 4Eh | Flag | XOR | SUM | +| --- | --- | --- | --- | --- | --- | --- | + + Flag:是否故障标志 + +00----正常 + +01----故障 + +     测试用例:7F 81 02 4E 00 CD D1  + +# 更新记录 + +| **版本号** | **更新日期** | **状态** | **更新内容** | **更新人** | +| --- | --- | --- | --- | --- | +| V1.0.6 | 2021-07-30 | | 发布测试工装V1的协议。 | 何燕山 | +| V2.0.0 | 2026-05-21 | | 增加配置指令:电机前进、后退、停止指令,获取版本号、读写测试指令 | 王飞强 | +| V2.0.1 | 2026-05-22 | | 增加出厂初始化指令、设备复位指令 | 王飞强 | +| V2.0.2 | 2026-05-25 | | 增加测试模式,增加进入速度和离开速度 | 王飞强 | +| | | | | | \ No newline at end of file diff --git a/docs/EDC服务.md b/docs/EDC服务.md new file mode 100644 index 0000000..a81b9e4 --- /dev/null +++ b/docs/EDC服务.md @@ -0,0 +1,142 @@ +# 测试工装EDC服务 + +# 1 文档说明 + +**EDC** : Edge Data Center 边缘数据中心、主机 + +《自动化工装EDC网络接口协议》: 测试工装EDC服务支持的网络接口协议说明 + +# 2 数据库表结构 + +## 2.1`**dnt_info**` — 联网终端信息表 + +> DNT(Data Network Terminal)是连接子设备的联网终端。 + +| **字段** | **类型** | **约束** | **说明** | +| --- | --- | --- | --- | +| `id` | int | PK, AUTO\_INCREMENT | 主键 | +| `serial` | varchar(45) | UNIQUE | 序列号(唯一) | +| `name` | varchar(45) | | 名称 | +| `ip` | varchar(45) | | IP 地址 | +| `port` | int | | 端口 | +| `mac` | varchar(45) | | MAC 地址 | +| `subnet` | varchar(45) | | 子网掩码 | +| `gateway` | varchar(45) | | 路由地址 | +| `msgport` | int | | 消息端口 | +| `version` | varchar(45) | | 固件版本 | +| `dtype` | varchar(5) | DEFAULT '0' | **设备类型(重要)** | +| `poll_duration` | int | DEFAULT 0 | 轮询间隔 | +| `reset_duration` | int | DEFAULT 0 | 重启间隔 | +| `state` | tinyint | DEFAULT 0 | 在线状态:1 online, 0 offline | +| `last_login` | datetime | | 最后上线 | +| `last_off` | datetime | | 离线时间 | +| | | | | +| | | | | +| | | | | +| `online_total` | int | DEFAULT 0 | 累计在线时长 | + +**dtype 设备类型枚举:** + +| **值** | **说明** | +| --- | --- | +| 1 | 区位 有线 | +| 2 | 超声波车位 有线 | +| 3 | 4G\_1 | +| 4 | 4G\_2 | +| 5 | LoRa 区位主机 | +| 6 | LoRa 区位从机 | +| 7 | LoRa 车位主机 | +| 8 | LoRa 车位从机 | +| 9 | LoRa 广播模式 | +| 10 | LoRa 中继 | +| 11 | 中继模式(485-2) | +| 12 | 4G 上报传感数据(MQTT) | +| 13 | 有线 上报传感数据(MQTT) | +| 14 | 有线 显示发布(MQTT) | +| 20 | DLD950 流量计数 | +| | | +| 30 | 测试工装 | +| | | + +## 2.2 `**tb_loop_test_info**` 车检器测试参数信息表 + +| **字段** | **类型** | **约束** | **说明** | +| --- | --- | --- | --- | +| `id` | int | PK, AUTO\_INCREMENT | 主键 | +| `name` | varchar(45) | | 名称 | +| `dev_model` | varchar(24) | | 设备型号 | +| `model_code` | tinyint | | 型号代号 | +| `hard_ver` | varchar(10) | | 硬件版本 | +| `soft_ver` | varchar(10) | | 固件版本 | +| `relay_exist` | tinyint | | 是否有存在继电器 | +| `relay_pluse` | tinyint | | 是否有脉冲继电器 | +| `sens_min` | int | | 灵敏度最小值 | +| `sens_max` | int | | 灵敏度最大值 | +| `freq_min` | int | | 频率最小值 | +| `freq_max` | int | | 频率最大值 | +| `peak_min` | int | | 峰峰值最小值 | +| `peak_max` | int | | 峰峰值最大值 | +| `create_time` | datetime | | 创建时间 | +| `update_time` | datetime | | 更新时间 | + +## 2.3 `**tb_state_tst**` — 设备测试状态表 + +| **字段** | **类型** | **约束** | **说明** | +| --- | --- | --- | --- | +| `id` | int | PK, AUTO\_INCREMENT | 主键 | +| `dnt_id` | int | FK → dnt\_info.id | 所属 DNT | +| `dpg430_addr` | tinyint | | 测试工装DPG430地址 | +| `pcnum` | varchar(10) | | 批次号: 年月,如202605 | +| `serialnum` | int | | 流水号,当月测试的流水号 | +| `sub_type` | tinyint | | 子设备类型:1 DLD110, | +| `str_type` | varchar(30) | | 设备类型 | +| `iffinish` | varchar(5) | | 是否测试完成 | +| `fault_info` | varchar(100) | | 故障信息 | +| `relay_out` | varchar(24) | | 继电器输出信息 | +| `ppvalue` | float | | 峰峰值 | +| `idle_freq` | float | DEFAULT 0 | 开始工作频率 | +| `enter_freq` | float | DEFAULT 0 | 进入工作频率 | +| `exit_freq` | float | DEFAULT 0 | 离开工作频率 | +| `enter_dist` | int | DEFAULT 0 | 进入高度/距离 | +| `exit_dist` | int | DEFAULT 0 | 离开高度/距离 | +| `enter_speed` | int | DEFAULT 0 | 进入速度 | +| `exit_speed` | int | DEFAULT 0 | 离开速度 | +| `create_time` | datetime | | 记录时间 | + +**外键:** `dnt_id` → `dnt_info.id` + +## 2.4 `**tb_collect_template**` —原始数据采集表模板 + +| **字段** | **类型** | **约束** | **说明** | +| --- | --- | --- | --- | +| `id` | int | PK, AUTO\_INCREMENT | 主键 | +| `dat_type` | tinyint | DEFAULT 0 | 数据类型 : 0 心跳包, 1 流量传感数据,2 探头传感数据,3 其他, 4 同步时间戳,7 RS485数据,8 串口主动上报数据,9 配置返回指令,11 异常事件 | +| `raw_data` | varchar(380) | | 原始数据 | +| `state` | tinyint | DEFAULT 0 | 0 未处理, 1 已经处理 | +| `create_time` | datetime | DEFAULT CURRENT\_TIMESTAMP | 原始数据 | +| `update_time` | datetime | DEFAULT CURRENT\_TIMESTAMP | 原始数据 | + +# 3 流程描述 + +主机UDP服务,监听端口:5500,5505 + +主机TCP服务,监听端口:5550 + +1 设备上电后,设备通过TCP连接上主机后,会发出同步时间请求("TimeStamp"),主机返回时间同步信息,设备收到后,会立刻通过UDP上报 发现设备指令("Count\_Off") 返回数据,以让主机获取设备的详细信息。主机获取到设备的详细信息后,设备的唯一编码是 `Device_id`字段,在 `dnt_info`表格里检查有没有改设备的信息,主要是根据设备的串码、设备唯一编码: `serial`。主机通过UDP获取到的设备的 `Device_id`在 数据库表 `dnt_info`的 `serial`里面,表示已经注册了该设备的信息,只比较该表格相应记录里面的IP、网关信息,如果一致,就只更新 `last_login`上线时间信息;如果不一致,就更新该表格里相应记录im的IP、网关信息,同时更新 `last_login`上线时间信息。如果主机通过UDP获取到的设备的 `Device_id`不在 数据库表 `dnt_info`的 `serial`里面,那么需要根据 该设备唯一编码 和 原始数据采集表模板 创建新的原始数据采集表,表名的格式为 tb\_collect\_\[Device\_id\],例:如果Device\_id 为 A123456,那么该设备的原始数据采集表名为:tb\_collect\_A123456。 + +2 设备主动上报子设备传感数据指令(方法名为 `TSReport`) 和 设备返回的串口透传指令信息(方法名为`SerialNet`) 会存放到该 设备所关联的原始数据采集表里面。主动上报子设备传感数据包对应的 `dat_type`是 8,将传感数据包的 `Sub_Dat`对应的内容插入到 原始数据采集表的 `raw_data`字段里面。设备返回的串口透传指令的数据包对应的 `dat_type`是 9,将该透传数据包的 `SerialDat`对应的内容插入到 原始数据采集表的 `raw_data`字段里面。 + +3 业务解析服务,当原始数据采集表有未处理的记录时(`state`字段的值为0),业务解析服务马上提取该记录进行解析,只解析该记录的 `dat_type`为8时的记录,该原始数据为测试工装的上报数据,具体的解析方法参考《测试工装DG430串口协议》文档有关数据包的格式说明,将解析后的内容插入到表格 `tb_state_tst`。只要业务解析服务 提取过的记录,最后都要将记录状态置位(`state`字段的值置为1)。 + +# 修订说明 + +| 版本 | 修订日期 | 说明 | 修订人 | +| --- | --- | --- | --- | +| | | | | +| V1.0 | 2026-05-27 | 初始版本 | wangfq | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | \ No newline at end of file diff --git a/docs/PGLC网络接口协议.md b/docs/PGLC网络接口协议.md new file mode 100644 index 0000000..b428f00 --- /dev/null +++ b/docs/PGLC网络接口协议.md @@ -0,0 +1,359 @@ +# 自动化工装PGLC网络接口协议 + +# 1 文档说明 + +**PGLC** : Parking Guide Local Center + +# 2 端口说明 + +默认端口如下 + +```plaintext +服务器 设备 +UDP监听端口 5500 监听4900 +UDP信息监听端口5505 + +TCP监听端口 5550 + +``` + +# 3 接口指令详情 + +## 3.1 发现设备 + +用于发现设备,用于主机对当前网络主动发起**广播指令**,设备收到指令后返回相关信息。   主机发送内容 + +```plaintext +{ + "Method": "Count_Off", //广播报数 + + "Params": { + "Ip": "192.168.1.122", //主机、服务中心IP地址 + "Port": 5500, //主机、服务中心端口号 + "Device_code": "ABcd" //设备代码 指明设备类别,设备信息里面还有设备代码 + } +} + +``` + +eg.: `{"Method":"Count_Off","Params":{"Ip":"192.168.1.122","Port":5500,"Device_code":"ABcd"}}` + +终端返回内容 + +```plaintext +{ + "Method": "Count_Off", + "Code": 0, //0 表示正常返回 + "Message": "success", //提示信息 + "Data":{ + "Ip": "192.168.1.188", + "Port": 5500, + "PortMsg": 5505, + "Mac": "", + "SubnetMask": "255.255.255.0", + "DNS": "www.", + "Gateway": "192.168.1.1", + "Server_Ip": "192.168.1.222", //本地主机 + "Iot_Host": "192.168.1.221", //MQTT主机 + "Iot_Port": 1883, + "UserName": "admin", //MQTT用户名 + "Device_id": "1234", + "Device_num": "1234", //只允许字母和数字编码 + "Device_Type": "1", //1 采集端 区位模式;2 采集端 车位模式;3 发布显示端; + //4 采集端、发布端混合 区位模式 ;5 采集端 、发布端混合 车位模式 + "Type_Code": 1, // 设备类型代码 + "Area_amount": 16, + "Dev_amount": 32, + "Dev_mode": 0, //0区位模式, 1 车位模式 + "Version": "0.1.0" + } +} + +``` +--- + +## 3.2 获取通信终端信息 + +主机发送内容 + +```plaintext +{ + "Method": "Device_Info", + "Device": "1234" //hex字符串格式 +} + +``` + +终端返回内容 + +```plaintext +{ + "Method": "Device_Info", + "Code": 0, //0 表示正常返回 + "Message": "success", //提示信息 + "Data":{ + "ip": "192.168.1.188", + "Device_id": "1234" , + "NT_Addr": 0, + "Hw_Ver": "1.01", //硬件版本号 + "Sw_Ver": "1.01" //软件版本号 + } +} + +``` +--- + +## 3.3 配置通信终端的设备信息 + +主机发送包括通信终端的iP地址、网关等信息。 + +```plaintext +{ + "Method": "Device_Net_Set", + + "Params": { + "Device_id": "1234", + "Dev_Ip": "192.168.1.188", //终端新IP地址 + "Gateway_Ip": "192.168.1.1", //网关IP地址 + "Server_Ip": "192.168.1.222", //主机、中心IP地址 + "Dev_Port": 4900 //终端新端口号 + "Gateway_Port": 5500 //主机、服务中心端口号 + "SubnetMask": "255.255.255.0", + "Mac": "", + "DNS": "" + + } + +} + +``` + +终端返回内容 + +```plaintext +{ + "Method": "Device_Net_Set", + "Code": 0, //0 表示正常返回 + "Message": "success", //提示信息 + "Data":{ + "Device_id": "1234" + } +} + +``` +--- + +## 3.4 心跳包 + +终端发送内容 + +```plaintext +{ + "Method": "Heartbeat", + "Params": { + "Device_id": "2345", + "Dev_Time": 1591663980 //设备时间 + } +} + +``` + +主机返回内容 + +```plaintext +{ + "Method": "Heartbeat", + "Code": 0, + "Message": "code不等于0时的出错信息", + "Data": { + "Device_id": "2345", + "SSC_Time": 1591663980 //主机、服务中心时间 + } +} + +``` + +## 3.5 同步时间 + +设备请求内容 + +```plaintext +{ + "Method": "TimeStamp", + "Params": { + "Device_id": "2345", + "TimeZone": "Asia/Shanghai" + } +} + +``` + +主机返回内容: + +```plaintext +{ + "Method": "TimeStamp", + "Code": 0, + "Message": "code不等于0有出错信息", + "Data": { + "Device_id": "2345", + "Time_Counter": 123313213 //unix时间戳,精确到秒 + } +} + +``` +--- + +## 3.6 串口透传指令 + +主机发送 + +```plaintext +{ + "Method": "SerialNet", + "Params": { + "Device_id": "1234", + "Extra_id": 0, + "Bus_Num":0 //总线号,0表示所有,非0表示指定总线上的设备 + "SerialDat": "7F0102" //发送给串口设备的数据 + } +} + +``` + +终端返回 + +```plaintext +{ + "Method": "SerialNet", + "Code": 0, + "Message": "code不等于0时的出错信息", + "Data": { + "Device_id": "1234", + "Extra_id":0, + "SerialDat": "7F303132" //串口返回数据 + } +} + +``` + +## 3.7 网络复位指令 + +```plaintext +{ + "Method": "Dev_Reset", + "Params": { + "Device_id": "1234", + "Extra_id": 0, + "Message":"Null" + } +} + +``` + +eg.: `{"Method":"Dev_Reset","Params":{"Device_id":"1234","Extra_id":0,"Message":"Null"}}` + +终端返回 + +```plaintext +{ + "Method": "Dev_Reset", + "Code": 0, + "Message": "code不等于0时的出错信息", + "Data": { + "Device_id": "1234", + "Extra_id":0, + "Message": "OK" // + } +} + +``` +--- + +## 3.8 联网终端主动上报事件信息 + +终端主动上报内容 + +```plaintext +{ + "Method": "ACS_NT_Event", + "Device_id": "2345", + "Params": { + "Extra_id": 0, //非0表示有扩展设备 + "Sub_Addr": 0, //非0表示有子设备 + "E_Src": 0, //事件来源,0 ,1 NT,2 Extra,3 DPG, 4 Sub dev + "Event_ID": 0, //事件ID + "Event_Type": 0, //事件类型, 0 info, 1 warning,2 异常 + "Level": 0, //事件等级,数字越高,等级越高,或越严重 + "Event_Data": "0101", //事件内容 + "Event_Time": 0 //事件时间戳 + } +} + +``` + +主机返回 + +```plaintext +{ + "Method": "ACS_NT_Event", + "Code": 0, + "Message": "code不等于0时的出错信息", + "Data": { + "Device_id": "2345" + } +} + +``` +--- + +## 3.9 设备通用上报子设备传感数据指令 + +终端主动上报传感数据指令: + +```plaintext +{ + "Method": "TSReport", + "Device_id": "CA12345", + + "Sensor_Dat": { + "Bus_Num": 1, // 节点总线号 + "Sub_Addr": 1, // 子设备如传感器地址 + "Sub_Type": 7, // 6 超声波探头,7 微波雷达,30 测试工装 + "Dat_Format": 1, // 格式, 1 十六进制字符串 + "Sub_Dat": "XXXX" // 十六进制字符串 + } +} + + +``` + +eg: `{"Method":"TSReport","Device_id":"CA12345","Sensor_Dat":{"Bus_Num":1,"Sub_Addr":1,"Sub_Type":7,"Dat_Format":1,"Sub_Dat":"7F8118B20100000F03390D41143D143D1496009A000200030000004AD0"}}` + +主机返回: + +```plaintext +{ + "Method": "TSReport", + "Code": 0, + "Message": "code不等于0时的出错信息", + "Data": { + "Device_id": "2345" + } +} + +``` +--- + +# 修订说明 + +| 版本 | 修订日期 | 说明 | 修订人 | +| --- | --- | --- | --- | +| | | | | +| V1.0 | 2026-05-26 | 初始版本 | wangfq | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | +| | | | | \ No newline at end of file