1. 简单介绍
在上一篇里,花了很大一个篇幅介绍了DL645协议,如果不搞这一行的估计也不会太在意这个协议,DL645是一个特别庞大的协议,庞大到不是一两个月能够看的很懂的,所以在这次项目里,我其实并不打算过分的去解读DL645协议。一是因为个人能力有限,没有办法在这个平台上完全实现这个功能,其二时间有限,要搞得东西太多了,其三这次项目主要我想尝试下蓝牙串口通信。所以在这次,我只选择了几个数据标识来做解析,解析的方法也很简单,采用了一些固定帧格式直接回复的形式。
文章标题是简单传统的智能电表,简单就是说没有完全实现DL645协议只是简单分析了645几个数据标识而已,第2个传统的就是指这一篇主要按照先尝试用串口来和电表通讯报文,因为传统的电表就是采用485来通讯的。在实现了传统的串口通信后,后期我在把代码看看怎么移植到蓝牙串口的DEMO上去。
2. DL645帧格式判断
在上一篇里讲解了645国网规约,现在这一篇来解析下简单国网645协议的电表搭建,我采用的是官网提供的串口interrupt程序,采用的是串口中断方式,在接收中断里依次判断了
(1)首字节为0x68
(2)判断第2个0x68
(3)判断控制字(根据不同的控制字进行不同的曹组)
(4)获取长度
(5)通过数据标识(ID3 ID2 ID1 ID0)确定读取那个数据项
(6)判断CRC校验是否正确(累加和校验)
(7)判断尾字节是否为0x16
在发送里
3.传统仪表与上位机通信结果(值稍微有点问题,待解决)
4.蓝牙抄读规划
传统串口方式做完之后,就是准备上蓝牙了,蓝牙程序比较庞大,还要花时间看看怎么加进去。时间比较匆忙,工作也比较忙,所以不可能完全实现DL645协议,协议就好几百页,没办法,现在本项目主要就准备做几个电力仪表比较常用的抄读项,电表地址、标号、电压、波特率、温度、软件版本号等等。两个蓝牙开发板分别作为一个抄读中端(专门对电表进行抄读),另一个作为简单的电表,通过抄读中断抄读蓝牙电表上面的简单数据,数据格式依据DL645协议。