JZGKCHINA
工控技术分享平台
尊重原创 勿抄袭
勿私放其他平台
01
项目介绍
最近项目调试,碰见的电表通讯协议为DL/T645-2007的,打工人当时的感觉是懵逼的,内心是拒绝的,然而,终究没能敌过老板那脸谄媚而诡异笑容,没办法,搞工控的人,很单纯......
伟人说过:搞工控的人是一群高尚的人,一群纯粹的人,一群有道德的人,一群脱离了低级趣味的人,一群有益于人民的人。
02
硬件展示
2.1 一家人最要紧的是整整齐齐
USB-485的转换器 电源 电表 200smart
2.2 设置
2.2.1 表 怎么设置
电表需要设置成645协议,(在此说明一箱,在公司做实验用的表具有645或485两种协议,但是客户家的电报只具有645协议)
- 站地址为12位 此处设置为1号站,别问为什么?问就是默认!
- 波特率 :2400 数据位 :8 偶校验 1个停止位 别问为什么?问就是默认!
协议:DL/T645-2007
地址低6位
地址高6位
2.2.2 接线
这个就不多说了,各位观众老爷们,都会的
03
协议介绍
3.1 645协议简介
3.2 报文解析
本次以C相电压为例,别问为什么?问就是我随便接的。
[请求帧]
68 01 00 00 00 00 00 68 11 04 33 36 34 35 B8 16
- 68 起始帧
- 01 00 00 00 00 00 为站地址 1 发送时是倒着发送的
- 再来一个68
- 11 控制码
- 04 数据长度
- 33 36 34 35 数据域
- B8 校验码
- 16 结束符
04
软件测通
用串口调试助手:端口波特率 校验 停止 数据等参数设置一致
发送 [请求帧]68 01 00 00 00 00 00 68 11 04 33 36 34 35 B8 16
收到回应帧:68 01 00 00 00 00 00 68 91 06 33 36 34 35 B4 54 42 16
其中:B4 54 为接收到的数据 要减去33H
即为 81H 21H 然后,再交换字节 2181
再乘上倍率 即为 218.1V,有图为证
05
编写程序
此时用软件测通,改用PLC编写程序
5.1 西门子协议简介
自由口通信也称无协议通信,需要根据对方设备的通信数据格式编写一个临时协议,不仅需要编程人员学会如何编写程序,还需要了解对方的通信数据格式,所以对编程人员要求较高,随着标准协议(modbus,USS等)普及,自由口应用越来越少,但是对于一下小的设备如扫码枪等,并没有集成标准通信协议,所以只能选用自由口通信,Moubus和USS其实是自由口的一个特例。
主程序 1秒采集一次,发送之前要讲SMB87改成2#10100禁用接收
不要问为什么?问就是半双工,不能边发边收,只能发完收,收完发
需要发送的报文:68 01 00 00 00 00 00 68 11 04 33 36 34 35 B8 16
VB200是报文字节数 此处为16个,不信你数数!
SMB30设置成16#51 是设置波特率2400 ,8数据位 1个停止位 偶校验
其他的参数设置不说了,再说就是在各位观众老爷面前班门弄斧了,
不懂得小伙伴可以直接按F1查看西门子说明
发完产生接收的中断
读出数据后需要减去33H交换高低字节 乘上倍率 再转成浮点数啥的,
一通操作,做好电压显示出来了。
218.1V 老板又笑了!
收到的报文
06
后记心得
本人 Old Dream 老孟,工控届的一名小学生,不值一提
此次也算是学习,错误之处还望众观众老爷们,多多指教
值此2021年新年伊始之际,感谢剑指工控的朋友们,工控路上有你们的陪伴,在此祝大家,新的一年里,健健康康快快乐乐….(此处省略8万多字)