基于PLC的智能仪表通信协议解析设计与实现
2020-07-06夏正龙
夏正龙,邓 斌
(江苏师范大学电气工程及自动化学院,江苏 徐州221116)
0 引言
随着科技的发展,工业控制系统大多采用上位机对下位机进行监测与控制。因此,下位机控制器的处理速度以及控制器与设备之间的数据采集、传输速度是整个系统的关键所在[1]。传统煤矿变电所中,综保仪表与可编程逻辑控制器(programmable logic controller,PLC)通过I/O口硬接线方式进行数据传输。此方式在数据采集时,存在采集速度慢、接线复杂以及屏蔽性差等缺点,现在已被国内外多数煤矿所弃用。
目前,变电所中,电力综保仪表设备更加智能化。仪表设备上都配有通信端口。利用这些端口,采用Modbus通信协议与PLC进行通信[2]。本文所设计的系统采用西门子的S7-1500系列PLC作为控制器,通过RS-485总线下Modbus-Rtu通信协议与压风机房中高、低压柜体的智能仪表进行通信,对压风机房中电压、电流、有功功率等数据进行采集;上位机监测采集到的数据,实现对综保开关控制。该系统很大程度上提升了煤矿变电所自动化的程度,提高了传输效率以及传输质量,节约了布线成本。
1 仪表Modbus通信协议简介
1.1 Modbus通信协议
Modbus通信是一种串行的主从通信协议。该协议给出了数据交换的必要内容为数据序列和校验码。在设备互相组成的环网中,每个设备都有唯一的地址,但其中只有一个设备能够建立协议。这个设备为主机,一般为计算机或PLC等设备。其他的设备为从机,只能根据主机发出的查询作出相应的响应动作[3]。主机既可以对单个的从机进行设备通信,也可以利用广播方式和多个从机进行通信。当主机与单个从机进行通信时,主机发出信号寻址某台唯一的终端设备(从机)。然后,来自寻址终端设备的响应信号以相反的方向发送到主机。而采用广播与多个从机进行通信的方式,不需要从机给主机作出回应。
1.2 仪表Modbus-RTU传输模式
Modbus通信主要分为两种串行传输模式[4]。一种为ASCII模式的通信,另一种为RTU模式的通信。本文所设计的系统利用西门子S7-1500系列PLC作为主机,与山东力创科技EX8综保仪表进行通信。由于EX8只能使用Modbus-RTU的通信协议,以下给出了EX8仪表与Modbus-RTU的传输模式相兼容的规则,如表1所示。
表1 EX8仪表Modbus-RTU传输模式规则表
当主机所发送的数据帧到达终端设备后,设备删除数据帧的“信封”(数据头),读取数据。如果没有错误,执行数据请求的任务。然后,将己方生成的数据添加到取得的“信封”中,把数据帧返回给主机。所返回给主机的响应数据中包含从机地址、功能码、返回的字节数、执行命令生成的被请求数据和一个校验码[5]。功能码能实现告知操作者被寻址到的终端设备所执行的功能。EX8综合电力仪表的功能码如表2所示。
表2 EX8综合电力仪表的功能码
2 系统概述
本项目利用西门子S7-1500 PLC作为控制器,对矿井压风机房中的出线、进线柜以及PT柜的综保设备状态和智能仪表的数据进行采集,并在集控室的触摸屏上进行监控显示。其中,为提高所采集数据的质量,PLC与这些仪表设备之间采用RS-485屏蔽双绞线连接。项目中使用的西门子PLC由1511-1 PN型号的CPU以及CM PtP RS-422/RS-485模块所组成。触摸屏使用的是西门子系列的TP1200 Comfort。低压柜中所使用的仪表为山东力创生产的EX8系列仪表。项目设备通信结构如图1所示。
图1 项目设备通信结构图
3 PLC中通信程序编写以及触摸屏设计
3.1 PLC通信程序编写
因此,使用博途(TIA)V15编程软件进行编程。在博途编程软件中,利用通信模块中集成好的Modbus(RTU)功能块与项目中的仪表进行通信。在Modbus(RTU)功能块中包含有Modbus_Comm_Load指令、Modbus_Mast指令以及Modbus_Slave指令。在这里主要使用Modbus_Comm_Load指令与Modbus_Master指令。其中,Modbus_Comm_Load指令通过Modbus RTU协议对用于通信的通信模块进行组态。当在程序中添加Modbus_Comm_Load指令时,系统将自动分配背景数据块。这是博途编程软件所特有的优点。Modbus_Comm_Load的组态更改将保存在CM中,而非CPU中[6]。当恢复电压和插拔时,将使用保存在设备配置中的数据组态CM。这也是博途编程软件中Modbus(RTU)功能块所拥有的特有优点[7]。Modbus_Master指令可通过由Modbus_Comm_Load指令组态的端口作为Modbus主站进行通信。当在程序中添加Modbus_Master指令时,系统同样为其自动分配背景数据块。Modbus_Comm_Load指令的MB_DB参数必须连接到Modbus_Master指令的(静态)MB_DB参数。
PLC在一个扫描周期下,只能有一个通信模块处于激活状态。为了实现系统测量多个综保仪表的数据,编程时采用了一个加计数指令作为一个循环指令,使PLC能够与多个综保仪表轮流进行通信。采用Modbus_Master指令对综保仪表进行通信,且只有当循环数达到这个综保仪表所对应的地址数时,才会对这个仪表进行数据采集。采集所用的时间可以利用一个对加计数的频率脉冲触发指令的大小来决定[8]。
根据PA63综保单元通信协议规约的不同,需要设置一个功能令牌码进行赋值。不同数值对应实现不同功能。在此以M存储区MB122位置变量“PA63-Token”作为功能令牌码[9]。该令牌码对应不同的数值时,将会对应PLC与高压综保单元通信时的实现的遥控、遥调、遥测、遥信等不同功能。将这些不同功能时得到的数据分别存储到相对应的PLC数据DB块中,以便于后续使用及观察。当PLC进行断电重启时,需要执行OB100程序对M存储区的位置进行初始化处理。这是为了防止程序出现混乱[10]。PLC与压风机房变电所智能综保单元进行远方遥测功能解析程序如下所示。
L "PA63-ZHNo"
T "PA63-FSDB".DB_VAR
L B#16#03
T "PA63-FSDB".DB_VAR1
L 6
T "PA63-CRCLen"
CALL "PA63-FSCRC16"
L "PA63-CRCHigh"
T "PA63-FSDB".DB_VAR6
L "PA63-CRCLow"
T "PA63-FSDB".DB_VAR7
L 8
T "PA63-FSLen"
L "PA63-FSLen"
T "PA63-发送长度"
CALL BLKMOV
blk_type:=Variant
SRCBLK :=P#DB4.DBX0.0 BYTE 20
RET_VAL :="Tag_1"
DSTBLK :=P#Q4.0 BYTE 20
CALL "PA63-2-FS"
JU M007
M001: A "PA63-接收完成"
AN "PA63-正在接收"
= "PA63-JSCG"
CALL "PA63-13-CTPT"
L "PA63-ZHNo"
L 1
-I
L 100
*I
SLW 3
LAR1
L %DB3.DBD10
DTR
L 1000.0
/R
OPN “KY-YCYXDB”//打开“KY-YCYX”的数据块
T DBD[ AR1,P#0.0 ]
//A相电压
L %DB3.DBD22
DTR
OPN “KY-YCYXDB”
T DBD[ AR1,P#12.0 ]
//A相电流
3.2 上位机设计
本项目是依托煤矿压风机房改造进行的。触摸屏界面设计时包括了很多方面工作。比如,压风机的启停与数据采集、热交换的启停与数据采集、恒压供水的启停与数据采集以及供电中高压与低压柜仪表数据采集与远程控制分合闸等[11]。触摸屏数据采集界面详细展示了PLC与智能综保仪表进行Modbus通信后,所测量到的各个位置的电压、电流、有功功率等数据;在界面中兼具一些分合闸的按钮,可以就地控制综保设备的分合闸状态。本系统中,矿方要求:对压风机房变电所中智能仪表所测量数据与综保设备负荷开关的状态,在中央集控室中进行监测与控制。也就是说,在中央集控室上位机中进行相应的界面设计,可实现远方四遥的功能。因此,采用基于OPC技术的客户端/服务器(B/S)与浏览器/服务器(C/S)相结合的软件架构模式,将PLC在柜体智能仪表中采集到的数据传输到OPC的客户端中,再利用上位机中可视化工具
INTOUCH软件在OPC服务器进行数据读取,经过计算分析后在相应的界面中进行监测与控制。
4 结论
如今,Modbus协议已成为通用工业标准,被广泛应用在控制器与智能仪表通信。本文利用西门子PLC与智能综保仪表,对煤矿压风机房的低压柜与高压柜进行Modbus串行通信连接,将电流、电压、有功功率与功率因素等电量参数采集到中央集控室的上位机中进行显示,对智能综保负荷开关状态在上位机中进行监测与控制管理等。目前,所述方法已在煤矿压风机房中实施运行,运行效果良好。该方法不仅便于数据的集中管理,也为以后实现煤矿无人值守变电所打下了坚实基础。