docs: 加入三份协议文档 + 更新README架构图

This commit is contained in:
wangfq
2026-05-27 10:13:41 +08:00
parent 9820f3cfc1
commit 3d7af31f11
4 changed files with 971 additions and 1 deletions

142
docs/EDC服务.md Normal file
View File

@@ -0,0 +1,142 @@
# 测试工装EDC服务
# 1 文档说明
**EDC** : Edge Data Center 边缘数据中心、主机
《自动化工装EDC网络接口协议》 测试工装EDC服务支持的网络接口协议说明
# 2 数据库表结构
## 2.1`**dnt_info**` — 联网终端信息表
> DNTData 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服务监听端口55005505
主机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 |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |