Files
vd_test_fixture/docs/EDC服务.md

142 lines
7.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 测试工装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 |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |