Fox-Edge的DLT645的通用解码器,它只需要配置配置DLT645的模板文件,就可以进行DLT645报文协议的数据解析
DLT645的协议框架模块,电力系统的各家设备厂商,会基于DLT645的协议框架,各自实现各自的DLT645协议。
这些设备厂商遵守DLT645的同样协议框架,但又各自实现了自己独有的特性,或者对DLT645协议框架进行了各自的调整
所以,这边将公共的DLT645协议框架特性抽取出来,作为DLT645设备族的公共模块,来解决各家设备通用但又差异化的场景
<dependencies>
<!-- fox-tech协议解码器的core包-->
<dependency>
<groupId>cn.fox-tech</groupId>
<artifactId>fox-edge-server-protocol-core</artifactId>
<version>1.0.0</version>
</dependency>
<!-- dlt645解码器的core包-->
<dependency>
<groupId>cn.fox-tech</groupId>
<artifactId>fox-edge-server-protocol-dlt645-core</artifactId>
<version>1.0.0</version>
</dependency>
<!-- dlt645解码器-->
<dependency>
<groupId>cn.fox-tech</groupId>
<artifactId>fox-edge-server-protocol-dlt645-1997</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
可以参考下列文件的格式,自己配置配置一个模板文件,那么可以让解码器装载这些模板文件,就可以自动解析数据
fox-edge
├─template
│ ├─dlt645
│ │ └─1.0.0
│ │ └─DLT645-1997.csv
│ │ └─DLT645-2007.csv
| di1h | di1l | di0h | di0l | format | length | unit | read | write | name |
|---|---|---|---|---|---|---|---|---|---|
| di1高位 | di1低位 | di0高位 | di0低位 | 数据格式 | 长度 | 单位 | 是否可读 | 是否可写 | 对象名称 |
说明:DLT645解码器会根据这张表,对设备进行读取数据后,进行解析成方便用户理解的数据对象
1、di1h/di1l/di0h/di0l
DLT645协议中,将一个个对象用固定的数字ID标识,在报文中进行传输,可以参考DLT645协议的文档
2、format/length/unit/read/write
DLT645协议中,将一个个对象在传输的时候,会根据DI指明该数据对象的解析格式,单位是什么,是否可读可写,可以参考DLT645协议的文档
3、name
DI值只是方便对象在报文传输,对象具体含有还是要给它取个对象名,方便解析之后,被后面的业务应用进行使用
说明:
具体内容,可以参考DLT645-1997.csv和DLT645-2007.csv文件内容
然后,开发者修改模板文件的内容,就能适配各个厂家的DLT645设备了
[
{
"param": {
"tableName": "DLT645-v1997/1.0.0/DLT645-1997.csv",
"objectName": "日期及周次",
"deviceAddress": "351253111111"
},
"timeout": 2000,
"operateMode": "exchange",
"operateName": "读数据"
},
{
"param": {
"tableName": "DLT645-v1997/1.0.0/DLT645-1997.csv",
"objectName": "时间",
"deviceAddress": "351253111111"
},
"timeout": 2000,
"operateMode": "exchange",
"operateName": "读数据"
},
{
"param": {
"tableName": "DLT645-v1997/1.0.0/DLT645-1997.csv",
"objectName": "电表运行状态字",
"deviceAddress": "351253111111"
},
"timeout": 2000,
"operateMode": "exchange",
"operateName": "读数据"
},
{
"param": {
"tableName": "DLT645-v1997/1.0.0/DLT645-1997.csv",
"objectName": "电网状态字",
"deviceAddress": "351253111111"
},
"timeout": 2000,
"operateMode": "exchange",
"operateName": "读数据"
},
{
"param": {
"tableName": "DLT645-v1997/1.0.0/DLT645-1997.csv",
"objectName": "周休日状态字",
"deviceAddress": "351253111111"
},
"timeout": 2000,
"operateMode": "exchange",
"operateName": "读数据"
},
{
"param": {
"tableName": "DLT645-v1997/1.0.0/DLT645-1997.csv",
"objectName": "表号",
"deviceAddress": "351253111111"
},
"timeout": 2000,
"operateMode": "exchange",
"operateName": "读数据"
},
{
"param": {
"tableName": "DLT645-v1997/1.0.0/DLT645-1997.csv",
"objectName": "用户号",
"deviceAddress": "351253111111"
},
"timeout": 2000,
"operateMode": "exchange",
"operateName": "读数据"
},
{
"param": {
"tableName": "DLT645-v1997/1.0.0/DLT645-1997.csv",
"objectName": "自动抄表日期",
"deviceAddress": "351253111111"
},
"timeout": 2000,
"operateMode": "exchange",
"operateName": "读数据"
}
]
1、虚拟串口
virtualserialportdriver8.rar
2、串口监听工具
CEIWEI_CommMonitor_v12.0.1.exe
3、DLT645模拟器软件下载
DLT645%20simulator 20v2.7.1.rar
上述软件,可以去百度下载后安装到本地












