智能电表协议DLT645新手解惑

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


        我也是接触这个没几天,估计我困惑的别的初学者也困惑吧。

几个协议啥关系

        DLT645-1997和DLT645-2007是两个版本,协议基本规则相同,但是数据标识不相同,也就是不兼容!还有一个什么协议名称的,其实是包含了这两个协议。

协议的基本规则

        起始位、表号、指令、数据标识、数据、校验、结束位,跟一般的请求/应答协议差不多。

数据标识咋那么复杂

        其实也没啥了,反正一个数据标识代表一个或一组数据,相当于“点位”或者“地址”。两个版本的点位是完全不兼容的。

数据咋都是倒过来的

        表号和数据都是先发送低字节,数据容易理解一点,不过表号就比较困惑了,估计以前表号是数字吧。但是数据也都是BCD码啊……直接按照人类的方式不好吗?

        况且数据还有3字节的,说不成。

虚拟机的串口

        用虚拟机和模拟程序通过虚拟串口连接发现串口的奇偶校验无关紧要,甚至——波特率都无关紧要,可能是虚拟机或者虚拟串口的问题吧,真机测试就不行了,必须要一致。

红外读表器是个啥

        就是个红外线转485设备,有了这个就不用接线,比较方便。不过红外读表器的波特率比较低,也不是很稳定。电表红外的波特率一般是固定的,1200或2400,1200的红外读表器似乎读不了2400的表(不过具体也不好说,遇到过有红外输出位置但是其实根本没装红外输出功能的表)。

通用地址(表号)AA

        不知道表号的情况可以用12个A来代替,但是不是每个表都支持,所以还是要支持设置表号的。我这样讲是因为确实有些程序直接使用12个A做表号来采数,结果却遇到了不这个认账的表,不得不改程序。

开源DLT645库(C)

        这个库要根据说明做适当改造,不算很难。


(这里是结束)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值