基于TwinCAT 的PLC水源地远程监控系统开发设计
2009-05-05
作者:陈志军1, 徐东进2, 程志江1
摘 要: 介绍了TwinCAT自动化软件,利用它将上位PC机转换成具有多PLC系统、编程环境和操作站的一个实时控制器,通过RS485总线将BC8100 PLC与上位PC机相连,并对数据内存区进行统一设置分配,编程实现了水源地远程监控系统的设计开发。
关键词: 倍福PLC; TwinCAT; 内存地址; 内存配置; 远程监控
水源地监控系统是乌鲁木齐河自动化项目的一个子项目,甘河子水源地将地下水按需给乌鲁木齐市的主要的水源乌拉泊水库补水,并提供沿线农田灌溉用水。该水源地有一个分控中心,周围20平方公里范围内分布了10口水源井,分布在四个泵房和分控中心泵房。各泵房到分控中心的距离200m至2000m不等,地域分布较为分散。为了更好地做到节能降耗以及对人力资源的合理利用,并加强乌鲁木齐水管处的统筹管理,应用PLC技术、计算机控制技术及现场总线技术,设计实现了以分控中心为上位远程控制中心(含本地泵房PLC控制)的监控系统,并分别监控远程每个泵房的PLC工作,每个泵房均由一套BC8100 PLC系统组成,由于5套PLC系统控制功能相同,仅是在各个泵房的PLC中与上位机的通信地址有所不同。以下均以一个PLC及其软件设置为例进行描述[1]。
1 Beckhoff TwinCAT 软件
Beckhoff TwinCAT 软件系统将任何兼容的PC机转换成具有多PLC系统、NC轴控制、编程环境和操作站的一个实时控制器。TwinCAT取代了传统的PLC和NC控制器以及操作设备,并具备开放式的、兼容的PC机硬件,在Windows NT/2000/XP、嵌入式NT/XP、CE中,内嵌了IEC 61131-3 软 PLC 和软NC;编程和实时运行系统可选择为在一台 PC机上或分开;可连接所有的公共现场总线和用于I/O信号的PC机接口卡;带用户接口的数据通讯和使用微软开放式标准程序(OPC、OCX、DLL等)。TwinCAT BC编程可以使用5种不同的编程语言(IL,FBD,LD,SFC,ST),本设计中用了功能块图FBD(Function Block Diagram)和梯形图LD(Ladder Diagram)两种编程语言。所有的功能块FB(Function Block)都具有统一的外观感受,因为它们都带有标准的接口。也可根据系统中实现自动化的具体任务,通过各种参数定制功能块。
近几年,倍福用于远程控制的新型PLC软件库(符合IEC 60870标准)进一步完善了用于PLC和运动控制应用的TwinCAT自动化软件。IEC 60870标准描述的是一种普遍适用的开放式通讯标准,它适用于远程控制和网络控制技术。现在,TwinCAT已可支持串行通讯用户标准(IEC 60870-5-101)、电能累计量传输标准(-102)、保护设备的传输标准(-103)以及TCP/IP通讯标准(-104)。
TwinCAT PLC软件库可实现串行接口,由此可以发送或接收各个应用层服务数据单元ASDU(Application-layer Service Data Units)。可以使用 PC机、嵌入式PC机或Beckhoff I/O端子模块KL6xxx(串行总线端子模块)或EL6xxx(串行EtherCAT 端子模块)的串行接口[2]。在协议结构内部,接口位于连接层的上一层,并已集成所需的程序和传输报文格式。
2 PLC的设置
2.1 PLC的模块配置选择
水源地的控制既有水泵的逻辑控制,也有流量的模拟量控制。针对水源地供水过程和对控制系统的功能要求,选用德国倍福电气有限公司生产的PLC完成实时数据采集与控制。其配套的模块选用了KL1408 DI(Digital Input,数字量输入)模块,KL2408 DO(Digital Output,数字量输出)模块,KL3458 AI(Analog Input,模拟量输入)模块和KL4438 AO(Analog Output, 模拟量输出)模块。KL3458是用于检测井下液位的高低和水流量,KL4438用来调节电磁阀控制水流量。借助RS485接口,采用MODBUS通信协议将采集的数据和信息发送到上位机,现场控制系统的组成框图如图1所示。
根据水源地控制系统的要求,对现场I/O点数统计后,确定选配2个KL1408(共16路DI模块),2个KL2408(共16路DO模块),1个KL3458(8路AI模块),1个KL4438(8路AO模块)。KL9010总线结束端子用来保证总线耦合器和总线端子之间的数据交换,每套PLC系统必须在末端使用KL9010为结束端子块,以保证PLC系统的正常工作,并起到故障复位的作用[3]。
2.2 I/O映像寄存器区的生成规则及设置
PLC在编程前,首先要针对PLC配置情况在TwinCAT中确定其I/O点的绝对地址,以此作为I/O的映像寄存器的存取内容。PLC中内存的I/O的映像寄存器与实际输入量、输出量连接点一一对应,以确保PLC输出量的正确执行及输入量的正确读入,如表1所示[4]。
在BC8100系列PLC中,I/O绝对地址采用的是自动分配方式,通过KS2000软件自动检测到PLC所安装的实际模块,并能够连续分配出对应模块的地址。PLC系统默认的地址首先是模拟输入量地址,其次是模拟输出量地址,最后是开关量的地址。模拟量的地址从%IW0开始,KL3454模块的A/D分辨率是12位,KL4438模块的D/A分辨率也是12位,每个模拟量占用2B的内存单元,但由于在BC8100系列PLC中,1个模拟量地址分配的是4个内存单元,其中模拟量地址的前2B被占用,不可以再作其他用途。因此在配置时需将AI的起始地址设置为%IW2;当涉及开关量时,同一组编号的输入量与输出量占用同一地址时,实际是以高低字节区分,而不会产生冲突。在本系统中,共用到了8个AI,8个AO,16个DI,16个DO。根据表1中的地址分配规则,对本系统中I/O地址的具体分配如以下程序所示,下面选取出典型程序中的I/O地址设置。
(************* AI物理地址对照表*************)
AI1 AT %IW0: INT; (*AI模块第1通道*)
AI2 AT %IW4: INT; (*AI模块第2通道*)
AI8 AT %IW28:INT; (*AI模块第8通道*)
(*************AO物理地址对照表*************)
AO1 AT%QW32:INT; (*AO模块第1通道*)
AO2 AT%QW36:INT; (*AO模块第2通道*)
AO8 AT%QW62:INT; (*AO模块第8通道*)
(*************DI物理地址对照表*************)
DI1 AT%IX64.0:BOOL; (*DI模块第1通道*)
DI2 AT%IX64.1:BOOL; (*DI模块第2通道*)
DI16 AT%IX65.7:BOOL; (*DI模块第16通道*)
(************* DO物理地址对照表*************)
DO1 AT%QX64.0:BOOL; (*DO模块第1通道*)
DO2 AT%QX64.1:BOOL; (*DO模块第2通道*)
DO16 AT%QX65.7:BOOL; (*DO模块第16通道*)
2.3 上位映像存储区设置
为了实现PLC中的输入量、输出量及中间量与上位机通讯时的一一对应,需要在TwinCAT中Globdl-variables环境下构建一个专为上位机可存取的PLC专用内存空间,以确保上位机准确可靠地控制监控PLC的I/O点或中间量,称其为PLC的内存上位映像存储区,每个数据的上位映像存储区都是由一个数组构成。系统的内存空间提供了32KB/64KB供用户根据实际需要来设置使用。考虑到本系统以后的可扩展性,本系统中PLC的数据空间设置了500B容量的上位映像存储区,设置的上位映像存储区定义如下:
VAR_GLOBAL
(*定义3个数据的内存存储区用于同上位机通讯*)
Inputs AT %MW0: ARRAY[0..127] OF REAL;
outputs AT %MW128: ARRAY[0..127] OF REAL;
memory AT %MW256: ARRAY[0..127] OF REAL;
END_VAR
其中,Inputs数据组存放的是由PLC上传给上位机的输入数据,包括模拟输入量和开关输入量数据,它在PLC内存中的上位映像存储区起始地址偏移量为0,容量设定为128B;Outputs数据组存放的是由上位下传给PLC的输出数据,包括模拟输出量和数字输出量数据,它在PLC内存中的上位映像存储区起始地址被设置为128,其容量设定为128B;中间量的上位映像存储区起始地址偏移量为256,其容量设定也为128B,中间量包括中间继电器的状态、定时器/计数器的数值及移位寄存器的数值等内容。
前面只是在PLC的内存区定义了相应的上位映像存储区,其内容是在PLC的开发应用程序中通过构建FB和赋值指令等可执行程序在PLC执行后才能将对应的输入变量、输出变量及中间变量实时地一一对应到相应内存的上位映像存储区里。
2.4 RTU存储区
Modbus RTU TwinCAT PLC 软件库提供了Modbus 终端设备的串行通讯功能块。通过调用该软件库中的功能模块可以实现BC8100与上位机之间的通讯功能。在此,将该存储区称为RTU存储区,由于其在内存区的定义灵活,没有位置的限制,本系统中将模拟量的RTU存储区地址排在开关量地址的前面,与I/O地址设置统一起来。以下选取了典型的RTU存储区的定义:
(*本地上传的参数*)
P1101 AT %MW0 :REAL;
P1402 AT %MW28 :REAL;
DI_1 AT%MX32.0 :BOOL
DI_16 AT%MX33.7 :BOOL;
(*上位下传的参数*)
T1101 AT %MW128 :REAL;
T1402 AT %MW156 :REAL;
DO_1 AT%MX160.0 :BOOL;
DO_16 AT%MX161.7 :BOOL;
其中,P1101是由PLC上传给上位机的AI数据,DI_1是由PLC上传给上位机的DI数据;T1101是由上位机下传给PLC的AO数据;DO_1是由上位机下传给PLC的DO数据。
同时需要在TwinCAT中的Global_Variables_Modbus环境下定义数据内存地址在传送的Modbus报文中的编址方式,以确保所有的通讯数据能够与上位机相关参数一一对应。
VAR_GLOBAL CONSTANT
(* maximum length of modbus telegrams *)
MAX_TELEGRAM_IDX: INT:=255;
(* COM-Port FIFO Maxindex *)
COM_BUFFER_MAXIDX: INT:=63;
MODBUSRTU_OUTPUTACCESS_OFFSET:WORD:=16#0800;
MODBUSRTU_MEMORYACCESS_OFFSET:WORD:=16#4000;
END_VAR
其中,系统默认Inputs输入数据组在传送的报文中的地址从0开始进行偏移, Outputs输出数据组在传送的报文中的地址从0800H(16#0800)开始进行偏移,memory内存数据组在传送的报文中的地址从4000H(16#4000)开始进行编址。
最后还要在TwinCAT中Variable_Configuration的环境下定义总线终端控制器的仿真地址:
VAR_CONFIG
(*定义程序中modbus块和上位机通讯时使用的串口地址,BC8100使用的串口是固定500,*)
MAIN.MODRTU1.com.Port.IO.out AT %QB500 : Modbus-
KL6outData5B;
MAIN.MODRTU1.com.Port.IO.in AT %IB500 : Modbus-
KL6inData5B;
END_VAR
当程序编写完成并成功下载到PLC中后,需将PLC的开关地址设置为“99”,以实现上位机的远程监控。
如图2所示,首先在TwinCAT中根据倍福BC8000 PLC I/O分布规律设定相应编号的I/O映像寄存器单元,然后定义上位映像存储区的空间位置,并在应用程序(如梯形图)定义实现各物理量的对应单元,最后确定对应的RTU存储区。
3 PLC的程序设计
本设计中采用LD(L梯形图)作为MAIN POU的编程语言,FBD作为构建功能块的编程语言。典型的LD图如图3所示。
在LD图中,第一梯层是深水泵的启动控制程序,当上位机下达深水泵的启动命令后,DO_1为TURE,则DO1为TURE,即水泵开始启动。由于现场深水泵从启动切换为运行状态的时间不足2s,所以保证DO1的TURE状态为2s已足够。当M10为TURE时,启动过程结束。为满足水泵不能频繁启动的要求,当深水泵结束运行后,必须要过2min延时后才能重新启动,以保证深水泵不会因为短时间的连续启动造成损坏。第二梯层的功能块实现模拟量检测与转换功能,在通过程序算术运算后,将现场采集到的模拟信号转换为现场参数的实际值,由于现场采集到的液位和流量都是线性变化的,又知道其上、下限对应的量程,可以公用这一个模块,在调用时只需将Value_max输入值修改为流量,或液位实际的最大值,图中的Value_max只供参考。第三梯层的功能块实现对电磁阀的调节控制水流量,将上位机给定的数值通过运算后输出对应的控制电流。其中第二、三梯层中的功能块并不是TwinCAT PLC软件提供的标准库函数,而是需要在另一个POU中,通过FBD调用一些基本函数(功能块)构建的,如图4所示。
第四、五梯层的功能块为MODBUS RTU TwinCAT PLC 软件库提供了MODBUS 终端设备的串行通讯功能块,通过调用功能模块实现了BC8100 PLC与上位机之间的通讯功能。功能块 MODBUSRtuSlave_KL6x5B 通过串行总线端子KL6001完成MODBUS 从站通讯[5]。
PLC数据存储区的统一设置,灵活、合理地规划出各部分的内存空间,是软件设计的基础和保证,也是整个PLC系统实现控制的关键所在。同时使编程修改调试都很方便,大大缩短了调试时间,提高了系统的自动化程度,降低了硬件的复杂程度。通过 Beckhoff 基于PC机的控制技术,可以借助软件实现水源地远程监控功能。通过这种方式,可以提供最大限度的灵活性,显著降低工程成本。综合、全面的 TwinCAT控制功能库涵盖了所有主要的工业现场控制功能。实践证明,该系统运行平稳,故障率低,基本不需维修,降低了维修费用和电耗,取得了较好的经济效益。
参考文献
[1] 陈志军,南新元,程志江.基于MODBUS的干河子水源地远程监控系统的设计与实现[J]. 电气自动化,2008
(2):44-46.
[2] 华中平.TwinCAT在电梯式立体车库中的应用[J].工业控制计算机,2006(5):6-8.
[3] 德国倍福电气有限公司.用于中等规模控制工程的模块化工业PC[J].机械制造, 2002(13): 30-32.
[4] 德国倍福电气有限公司.PC-based的开放式控制技术[J].新自动化, 2005(4): 48-49.
[5] 德国倍福电器有限公司.TwinCAT PLC编程手册2.7版[M].北京:德国倍福电器有限公司北京代表处,2005.