如何用PLC和支持DL/T645-1997协议的电能表通讯2007协议自由口通

技术文章    |      2024

本文档由艺捷自动化编写,艺捷自动化旗下产品有艺捷自动化网和易为二维码小程序(微信)
本文讲述如何利用西门子200 SMART PLC与电度表通讯。这里的通讯是DL/T645-1997协议的通讯。这个是有点跨行业的技术,适合工控自动化领域中级水平的编程人员,能熟练的使用200 SMART编程,但对自由口通讯编程不太熟悉的。大家知道吗,在电能表的通讯方面,电力系统是有着自己的通讯协议的,常见的是DL/T645-1997协议和DL/T645-2007协议。1997协议是较老的通讯协议,2007协议是1997协议的升级版,只是功能扩充了,没什么本质的区别,掌握了1997协议再过渡到2007协议是很容易的。现在有些电度表也是支持自动化方面常用的Modbus RTU协议的,就不用搞这个DL/T协议的通讯。我遇到的情况是一个较老的电度表只支持DL/T645-1997协议,所以只能被迫写了它的通讯程序。后面呢就是以这个电能表为实例来讲解。现在呢把我的经验和程序发布出来,供大家借鉴。
西门子的200 SMART PLC CPU上的串口支持PPI协议和自由端口。PPI协议一般用来编程和连接触摸屏。自由接口模式允许程序控制S7‑200 SMART CPU的通信端口。其中库指令中用来做Modbus RTU主站的MBS_CTRL和MBUS_MSG指令,以及做从站的MBUS_INIT和MBUS_SLAVE指令就是用的自由端口模式,只不过是官方已经给封装好了通讯细节,大家直接用就可以了。但是其它通讯协议官方就没有库指令了,只能自己编写通讯程序。
如何使用自由口通讯编程,软件的帮助里是有的,重点看,发送和接收(RS485/RS232 为自由端口),这部分内容,你可以不时的查看一下。光有编程帮助那点东西是不够的,还需要以下资料:《DL/T 645-1997多功能电能表通信规约》,《多功能电能表通信协议DL-T645-2007》,《DS-TSY72系列电子式三相预付费电能表使用说明书》。这些资料我都会一块打包提供给您。
先讲一下接线吧,让大家有个清晰的起点。先上图,再讲解。

article_7_1

这就是那个电能表,大家看最右边的红线和蓝线就是通讯线。红线接电表的可选485 A(24)端子,另一端是接PLC的串口3针脚。蓝线接电表的可选485 B(25)端子,另一端是接PLC的串口8针脚。PLC这边的串口接线相信有一定基础的电气工程师是比较熟悉的。这种接线还是用的RS485通讯,常用的技术,也没什么要絮叨的,就不详细说了。有个重要的地方,你看到电能表上条形码那个地方下面的数字了吗,284170028810这12位数字就是这个电能表的通讯地址,这串数字其实是16进制的,每两个数字组成一个字节,没错这就是DL/T645-1997协议规定的地址,就是这么的长,记下它来后面的程序中要用到。
下面我想结合具体的程序,来讲解如何通讯的,这样直接讲实例,大家不枯燥,好理解,很快就能在我的程序的基础上加以改造做成你自己的程序。我的程序只是一个简单的示例,你理解了,自己加一些通讯的点,再加点轮询之类的控制程序,就可以了。编程这种东西还是重在理解吧,光照搬程序也是不行的。当然呢,再看下面的程序之前,你还是要把上面三个资料熟读,不然还是要反过头来再读那些资料。
首先呢,要讲一个重要的框架性的东西,新手不要试图用在PLC的串口上,即带Modbus RTU通讯,又带DL/T645-1997协议通讯。就是说不要想着这个时间段接通Modbus RTU通讯,另一个时间段接通DL/T645-1997通讯。因为这样做是要重新设置自由口的通讯参数的,理论上是有可能实现,但是我是没有成功,高手可能能做出出来。但我们是个一般电气工程师,干嘛要搞得那么高深,那多累呀。要做这个通讯在这个串口上只做一个DL/T645-1997协议通讯,别搞些杂糅的。如果CPU的串口已经被占用了,就加一个SB扩展板的串口,注意用SB扩展板的串口,SM特殊存储器的地址是不一样的,如果也被占用了,加不了,就再加一个PLC呗。咱们做自动化的不要怕设备多花钱,通讯搞不出来,耗费的人工费也比设备钱贵。
电度表通讯P0子程序第1段:

article_7_2

这个程序段进行自由口参数设定。设置自由口通信特殊寄存器。这个断开轮询M20.0,是我原先在一个串口上即做Modbus RTU通讯,又做这个电能表的通讯设计的一个开关,你忽略它把它接通就行了。这个手动接通电度表M20.1,你就在程序监视的时候修改为接通,就会通讯一次,再断开再接通又通讯一次。根据1997通讯协议电气接口,必须设置为偶校验,初始速率1200bps。设置SMB30为16#55的意思是,偶校验,每个字节8位,波特率1200,自由口通信模式。设置SMB87为2#10010100的意思是,启用接收消息功能,忽略SMB88,忽略SMB89,使用SMB90的值检测消息的起始,定时器为字符间定时器,如果超出SMW92中的时间段则终止接收,忽略断开条件。设置SMW90为5的意思是,以5ms为空闲线时间。设置SMW92为100的意思是,100ms为定时器超时值,这个超时时间看看电表的波特率是多少,算算通讯大约需要多长时间,再根据情况设定一个值。100ms,在1200bps下大约最多能传输10个字节。设置SMB94为99的意思是,接收的最大字符99,程序就只给留了99个字符的缓冲区。将事件9端口0发送完成,连接到发送完成中断处理程序。中断启用。

获取详细资料请点击获取详细资料链接。
获取详细资料