西门子200smart与DL/T645-2007协议通讯(自由口通讯)

2021-11-09 14:57:59 浏览数 (1)

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万多字)

0 人点赞