首页专栏详情
打赏
DTL645-2007通讯规约记录
DTL645-2007通讯规约记录
易百纳技术社区 在学了在学了! 2022-07-21 14:02:50

之前在项目上用到了电力方面的DTL645规约,觉得百度到的讲解比较零散,所以自己梳理了一下,分享放到这里

报文样例(16进制,读取电表地址):68 00 00 00 00 00 00 68 11 04 34 37 33 37 BA 16

6800000000000068110434373337BA16
帧起始符(2bit)地址域(12bit),表示该表通信地址,A0~A5帧起始符(2bit)控制码C(2bit)数据域长度L(2bit)数据域DATA校验码CS(2bit)结束符(2bit)

报文解析

帧起始符 (2bit)

标识一帧信息的开始,其值为68H=01101000B

 

地址域A0~A5 (12bit)

例:67H 45H 23H 01H 00H 00H

A0A1A2A3A4A5
674523010000

地址域由6个字节构成,每字节2位 BCD码,地址长度可达12位十进制数。每块表具有唯一的通信地址,且与物理层信道无关。当使用的地址码长度不足6字节时,高位用“0”补足6 字节。

通信地址999999999999H为广播地址,只针对特殊命令有效,如广播校时、广播冻结等。广播命令不要求从站应答。

地址域支持缩位寻址,即从若干低位起,剩余高位补AAH作为通配符进行读表操作,从站应答帧的地址域返回实际通信地址。

地址域传输时低字节在前,高字节在后。

解析地址为A5 A4 A3 A2 A1 A0,即000001234567

 

控制码C (2bit)

11H

D7D6D5D4D3D2D1D0
00010001
传送方向0:表示是主站发出的命令帧1:表示从站发出的应答帧从站应答标志0:从站正确应答1:从站异常应答后续帧标志0:无后续数据帧1:有后续数据帧功能码00000:保留 01000(8H):广播校时10001(11H):读数据 10010(12H):读后续数据10011(13H):读通信地址 10100(14H):写数据10101(15H):写通信地址 10110(16H):冻结命令10111(17H):修改通信速率 11000(18H):修改密码11001(19H):最大需量清零 11010(1AH):电表清零11011(1BH):事件清零
从站应答正常应答高4位:无后续数据帧 9H,有后续数据帧 BH;异常应答高4位为DH;低4位为功能码广播校时不应答0001(01H):读数据应答 0010(02H):读后续数据应答0011(03H):读通信地址应答 0100(04H):写数据应答0101(05H):写通信地址应答 0110(06H):冻结命令不做应答要求0111(07H):修改通信速率应答 1000(08H):修改密码应答1001(09H):最大需量清零应答1010(0AH):电表清零应答1011(0BH):事件清零应答

 

数据域长度L (2bit)

04H

L为数据域的字节数。读数据时L≤200,写数据时L≤50,L=0表示无数据域。

 

数据域DATA 

34H 37H 33H 37H

数据域包括数据标识、密码、操作者代码、数据、帧序号等,其结构随控制码的功能而改变。传输时发送方按字节进行 +33H 处理,接收方按字节进行 -33H处理。

数据解析为低位在前,高位在后;

34 37 33 37 -> 01 04 00 04 -> 04 00 04 01(最终数据);

 

数据标识 (8bit)

数据标识编码用四个字节区分不同数据项,四字节分别用DI3、DI2、DI1和DI0代表,每字节采用十六进制编码。

数据类型分为七类:电能量、最大需量及发生时间、变量、事件记录、参变量、冻结量、负荷记录。

DI3DI2DI1DI0

数据标识具体定义见DLT645-2007通讯规约说明附录A的A.2数据标识编码表。

数据标识码标识单个数据项或数据项集合。单个数据项可以用附录A.2中对应数据项的标识码唯一地标识。

当请求访问由若干数据项组成的数据集合时,可使用数据块标识码。实际应用以数据标识编码表定义内容为准。

除特殊说明的数据项以ASCII码表示外,其它数据项均采用压缩BCD码表示。

 

数据项与数据块

数据标识DI2、DI1和DI0中任意一字节取值为FFH时(其中DI3不存在FFH的情况),代表该字节定义的所有数据项与其它三字节组成的数据块。

a) 标识码 DI3 DI2 DI1 DI0=00010000H(数据项)

表示当前正向有功总电能。

b)标识码DI3 DI2 DI1 DI0=000100FFH(数据块)

表示正向有功总电能数据块,包含当前、上1结算日~上12结算日正向有功总电能数据。

c)标识码DI3 DI2 DI1 DI0=0001FF00H(数据块)

表示当前正向有功电能数据块,包含总、费率1、费率2....的当前正向有功电能数据。

参考例表:

数据标识数据格式数据长度(字节)单位功能(读/写)数据项名称
DI3DI2DI1DI0
00010000xxxxxx.xx4kWh当前正向有功总电能
01当前正向有功费率1电能
......
08当前正向有功费率8电能
FF当前正向有功电能数据块

标识编码举例如下:

04 00 04 01,表示为通信地址的标识编码

02 01 01 00,标识A相电压

02 01 02 00,标识B相电压

报文实例(读B相电压):

68 18 35 00 10 02 10 68 11 04 33 35 34 35 25 16

 

校验码CS (2bit)

BAH

从第一个帧起始符开始到校验码之前的所有各字节的模256 的和,即各字节二进制算术和,不计超过256 的溢出值。

函数计算crc:

unsigned char crc_645(int data_len,unsigned char *data)
{
    unsigned char crc = 0;
    for(int i = 0;i<data_len;i++){
        crc += data[i]%256;
    }
    
    return crc;
}
 

结束符 (2bit)

标识一帧信息的结束,其值为16H=00010110B

 

报文传输

前导字节

在主站发送帧信息之前,先发送4个字节FEH,以唤醒接收方。

 

传输次序

所有数据项均先传送低位字节,后传送高位字节。数据传输的举例如下:

传输数据12345678

易百纳社区

 

1485
收藏
点赞
打赏
给作者打赏,鼓励他抓紧创作吧~
人在车底,非常的菜。
评论
0个
内容存在敏感词
相关专栏
易百纳技术社区
点击登录
-- 积分
-- EBC
专栏
收益
评论
我要创作
易百纳技术社区
打赏作者
易百纳技术社区
在学了在学了!
您的支持将鼓励我继续创作!
打赏金额:
¥1 易百纳技术社区
¥5 易百纳技术社区
¥10 易百纳技术社区
¥50 易百纳技术社区
¥100 易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区 微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

审核成功

发布时间设置
发布时间:

审核失败

失败原因
备注
Loading...
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区
易百纳技术社区
在专栏模块发布专栏,可获得其他E友的打赏
易百纳技术社区
回答悬赏问答,被题主采纳后即可获得悬赏金
易百纳技术社区
在上传资料时,有价值的资料可设置为付费资源
易百纳技术社区
达到一定金额,收益即可提现~
收益也可用来充值ebc,下载资料、兑换礼品更容易
易百纳技术社区
活动规则
  • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
  • 2.发布的专栏与资料需要与平台的板块有相关性,禁止注水,专栏/资料任务以审核通过的篇数为准
  • 3.任务完成后,现金奖励直接打款到微信账户;EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换
  • 4.每周最后三个任务将会有以下奖品掉落:社区热卖开发板、小米音响、视频年度会员、京东卡、华为手机等等
易百纳技术社区
升级提醒
易百纳技术社区

恭喜您由入门

社区送出礼品一份

请填写您的收件地址,礼品将在3个工作日寄出

易百纳技术社区