S7-200PLC在变电站用交流配电盘上的应用
应用S7-200PLC升级过后的变电站站用配电盘(智能配电屏),改变了以前电能数据采集麻烦、运行方式单一、必须现场手动操作等问题,现在除了保留必须的手动操作方式外,根据运行方式PLC能控制ATS开关任意切换在电源I或II上运行,当运行电源进线失压时,另一电源进线能可靠自投或恢复,同时可进行远程操作,解决了目前ATS产品控制投切不准确,操作方式单一和远程控制的问题。改造以前的配电盘上有着各种电能仪表,现在只需一块多功能仪表就能完成电压、电流、频率、有功功率、无功功率等各种电能参数的监测、采集和数据分析,还有谐波分析、模拟量和报警输出等功能。站用配电屏还能监控每一馈电回路的电流和工作状态,整个配电盘的任何一个动作、操作和故障报警都及时显示并储存在TP270上,通过MODBUS总线可以把这些数据传到附近的控制中心,也可以通过以太网将数据传到数公里之外的调度中心,以便于进行更好的运行维护和管理。
在设计过程中 大的问题就是如何将智能仪表的数据通过S7-200PLC读到TP270上。本系统中的智能仪表用的是MODBUS_RUT协议,只能做从站使用,也就是说S7-200PLC必须做主站去读取仪表的数据,在现行的资料中只有S7--200PLC做MODBUS从站的资料,要S7-200PLC做主站就只有自己编写用自由口做MODBUS主站的程序,由于仪表提供的数据较多且数据地址分散,再加上要求每秒刷新一次,还要做数据的CRC校验,编写这样的通讯程序是有一定难度的,如果逐一地址的编写程序,那么程序就会过长,会影响总循环时间,不但做不到1秒钟刷新一次,可能还会引起端口发送、接收冲突和CRC校验出错,经过反复的研究实验, 后在程序中采用了用计数器来轮询地址的方法,从而减少了程序量和总循环时间。部分程序如下:(OB1主要功能为初始化端口为自由口,初始化发送和接收的数据格式,设定轮询时间,轮询和中断连接;SBR5和SBR6做发送和接收数据的CRC校验,CRC检验主要通过字节异或循环,移位循环和公式异或做发送数据的CRC校验;中断1为接收数据;中断2对接收CRC校验结果验证)
OB1
LD SM0.1 初始化端口
MOVB 16#09, SMB30
MOVB 16#9C, SMB87
MOVW +150, SMW92
MOVW +0, SMW90
MOVB 50, SMB94
LD SM0.1 初始化发送数据
MOVB 16#08, VB2100
MOVB 16#05, VB2101
MOVB 16#03, VB2102
MOVB 16#03, VB2103
MOVB 16#0, VB2104
MOVB 16#0, VB2105
MOVB 16#02, VB2106
LD SM0.1 初始化接收数据
MOVB 16#09, VB1200
MOVB 16#05, VB1201
MOVB 16#03, VB1202
MOVB 16#04, VB1203
LD SM0.0 设定轮询时间
AN T96
TON T32, +150
LD SM0.0
A T32
TON T96, +150
LD T32
EU
LD C1
CTU C1, 16#10
LD SM0.0
AW= 16#0, C1
EU
MOVW 16#0300, VW2103 发送轮询数据
CALL CRC:SBR5
XMT VB2100, 0
LD SM0.0
AW= 16#1, C1
EU
MOVW 16#0302, VW2103
CALL CRC:SBR5
XMT VB2100, 0
LD SM0.0
AW= 16#02, C1
EU
MOVW 16#0304, VW2103
CALL CRC:SBR5
XMT VB2100, 0
…… ……
LD SM0.7 中断连接
ATCH INT_0:INT0, 9
ATCH INT_1:INT1, 23
ENI
SRB6(SBR5同SBR6)
LD Always_On:SM0.0 读出数据长度 ,初始化CRC字
MOVB VB1200, VB1301
MOVW VW1300, VW1302
-I 16#02, VW1302
MOVW 16#FFFF, VW1306
MOVD &VB1200, VD1400
FOR VW1304, 16#1, VW1302
LD Always_On:SM0.0 字节异或循环
+D 16#1, VD1400
MOVB *VD1400, VB1410
XORB VB1410, VB1307
FOR VW1310, 16#1, 16#08
LD Always_On:SM0.0 移位循环
MOVW VW1306, VW1420
SRW VW1306, 1
LD SM1.1 公式异或
XORW 16#A001, VW1306
NEXT
NEXT
LD Always_On:SM0.0 CRC16字传递
MOVB VB1307, VB1100
MOVB VB1306, VB1101
INT1
LD Always_On:SM0.0
RCV VB2200, 0
INT2
LD SM86.7
O SM86.6
O SM86.0
CRETI
LD Always_On:SM0.0
MOVD VD2204, VD1204
LD Always_On:SM0.0
CALL CRC16:SBR6
LDW《》 VW1100, VW2208
CRETI
LDW= 16#0, C1
MOVD VD2204, VD2500
LDW= 16#1, C1
MOVD VD2204, VD2504
…… ……
经过改造的设备自2005年7月运行以来,系统稳定、功能强大、操作简单,赢得了用户的一致好评,为变电站的无人值守和变电站的安全运行提供了有利保障。