Skip to content

DL/T 645 插件

DL/T 645 插件实现了 DL/T 645 电力行业标准协议,用于与电能表进行通信,支持数据抄读和控制。

  • DL/T 645-2007:支持 DL/T 645-2007 协议标准
  • 串口通信:支持 RS485 串口通信
  • 自动采集:定时采集电能表数据
  • 批量读取:按采集周期分组批量读取
  • 协议日志:支持协议解析日志输出
  • 自动重连:通信异常时自动重连
  • 电表地址识别:支持多位电表地址

连接配置位于 config.jsonconnections 字段下:

{
"plugin": "dlt645",
"connections": {
"meter-port-1": {
"address": "/dev/ttyUSB0",
"baudRate": 2400,
"dataBits": 8,
"stopBits": 1,
"parity": "E",
"minInterval": 100,
"timeout": 1000,
"retry": 3,
"autoReconnect": true,
"protocolLogEnabled": false
}
}
}
参数类型默认值说明
addressstring-串口设备路径(如 /dev/ttyUSB0
baudRateuint2400波特率(常见值:1200、2400、4800、9600)
dataBitsuint8数据位(通常为 8)
stopBitsuint1停止位(通常为 1)
paritystringE校验位(N=无、E=偶、O=奇)
minIntervaluint16100最小读取间隔(毫秒)
timeoutuint161000请求超时时间(毫秒)
retryint3重试次数
autoReconnectboolfalse是否自动重连
protocolLogEnabledboolfalse是否启用协议解析日志

点位配置基于通用点位定义,并添加 DL/T 645 协议扩展参数。

点位的基础参数请参考设备配置指南

在通用点位基础上,DL/T 645 插件支持以下扩展参数:

{
"name": "total_energy",
"description": "总有功电能",
"valueType": "float",
"readWrite": "R",
"dataMaker": "00000000",
"quantity": 4,
"duration": "5s"
}
参数类型必填说明
dataMakerstringDL/T 645 标准中的数据标识(如 00000000 表示正向有功总电能)
quantityuint16数据长度(字节数)
durationstring采集周期,默认 1s

DL/T 645 设备需要在 properties 中配置电表地址:

属性类型必填说明
slaveIdstring电表地址(支持 1-12 位十进制地址)

DL/T 645 协议使用数据标识来指定要读取的数据项。常见数据标识:

数据标识说明数据类型
00000000正向有功总电能数值
00000100正向有功费率 1 电能数值
00000200正向有功费率 2 电能数值
00000300正向有功费率 3 电能数值
00000400正向有功费率 4 电能数值
00010000反向有功总电能数值
00020000正向无功总电能数值
00030000反向无功总电能数值
01000000A 相电压数值
01010000B 相电压数值
01020000C 相电压数值
02000000A 相电流数值
02010000B 相电流数值
02020000C 相电流数值
02800000总有功功率数值
03800000总无功功率数值

插件自动将相同采集周期的点位合并为采集组:

  • 相同 duration 的点位分为一组
  • 按电表地址分组管理
  • 减少串口通信次数,提高采集效率
  1. 定时触发采集任务(默认每秒检查)
  2. 遍历所有采集组,检查是否到达采集时间
  3. 发送 DL/T 645 读命令到指定电表
  4. 解析响应数据并转换为物模型点位值
  5. 触发数据导出

DL/T 645 协议支持 1-12 位十进制电表地址:

  • 1 位地址:0-9
  • 多位地址:000000000001-999999999999
  • 广播地址:000000000000

以下参数未配置时使用默认值:

  • minInterval:100 毫秒
  • retry:3 次
  • timeout:1000 毫秒
  • baudRate:2400
  • dataBits:8
  • stopBits:1
  • parity:E(偶校验)
  • duration1s
  • 确保串口设备权限正确(通常需要 chmod 666 /dev/ttyUSB0
  • 波特率必须与电能表配置一致
  • 电表地址必须与实际电表地址匹配
  • 建议使用屏蔽电缆减少干扰
  • 插件入口:plugins/dlt645/plugin.go
  • 核心实现:plugins/dlt645/internal/plugin.go
  • 连接器:plugins/dlt645/internal/connector.go
  • 数据模型:plugins/dlt645/internal/model.go