142 lines
7.2 KiB
Markdown
142 lines
7.2 KiB
Markdown
# 测试工装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 |
|
||
| | | | |
|
||
| | | | |
|
||
| | | | |
|
||
| | | | |
|
||
| | | | |
|
||
| | | | | |