DLT645 通讯协议JAVA解码器

DLT645 通讯协议解码器

文档:灵狐技术 文档

官网:灵狐技术

下载:Fox-Edge 边缘计算 安装包

DLT645 通讯协议解码器

介绍

Fox-Edge的DLT645的通用解码器,它只需要配置配置DLT645的模板文件,就可以进行DLT645报文协议的数据解析

DLT645的协议框架模块,电力系统的各家设备厂商,会基于DLT645的协议框架,各自实现各自的DLT645协议。
这些设备厂商遵守DLT645的同样协议框架,但又各自实现了自己独有的特性,或者对DLT645协议框架进行了各自的调整
所以,这边将公共的DLT645协议框架特性抽取出来,作为DLT645设备族的公共模块,来解决各家设备通用但又差异化的场景

资料

DLT645-1997协议

DLT645-2007协议

工具

DLT645电表模拟器

源码

  • fox-edge-server-protocol-dlt645-core

源码

  • fox-edge-server-protocol-dlt645-1997

源码

Maven

    
    <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

格式说明

  • DLT645-2007.csv
di1hdi1ldi0hdi0lformatlengthunitreadwritename
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设备了

报文配置

  1. 读取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": "读数据"
      }
    ]

DLT645电表接入演示

软件下载

    1、虚拟串口

    virtualserialportdriver8.rar

    2、串口监听工具

    CEIWEI_CommMonitor_v12.0.1.exe

    3、DLT645模拟器软件下载

    DLT645%20simulator 20v2.7.1.rar


    上述软件,可以去百度下载后安装到本地

串口配置

  • 1、新增COM1和COM2两个虚拟串口,这两个串口默认是环回的,也就是给COM1发数据,COM2能收到数据

  • 2、打开串口精灵,开始监听COM1和COM2

  • 3、打开DLT645模拟器,打开COM2,让它在COM2接收智能网关待会请求报文

  • 4、打开VMWARE,打开COM1,并映射陈串口2,智能网关从这个串口发送数据

智能网关和DLT645电表的通信测试

  • 1、登录智能网关后,切换到通道页面,建立一个串口通道。注意在智能网关中,串口2的名称未ttyS1

  • 2、切换到设备页面,建立一个DLT645设备,并指明使用刚才建立的串口通道

  • 3、建立一个通道操作任务,向电表发送一个报文看看,此时可以看到电表的返回数据,说明可以跟电表通信正常

  • 4、建立一个设备操作任务,向电表发送一个请求,看看解码器对报文的数据解码,可以看到数据被解析出来了

  • 5、建立一个监控任务,让智能网关不断收集DLT645电表的数据

  • 6、进入设备数值页面,可以看到智能网关不断的向DLT645电表获取数据

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值