环保数据监测系统是环境保护中的重要环节,传统的环境监测是人工采集数据,监管效果差。针对这一问题设计了一种无线远程环境在线监测系统,下位机采用西门子S7-200 PLC(可编程控制器)采集、存储现场数据,通过GPRS(通用分组无线服务)DTU(数据传输单元)主动向数据中心发送采集到的实时数据,并能够在指定的时间段内接收上位机指令,进行历史数据查询;上位机利用VB 6.0的Winsock控件接收多台数据采集终端的数据,并进行分析处理。该系统已经在佛山市南海区运行,有效地提高了环境监管的效率。
传统的环境监测,大多是环保局工作人员到污染源现场采集数据,手工记录工厂的污染治理情况。由于要监测的厂家众多,且厂家地理位置分散,工厂偷排现象十分普遍,即使花费了大量的人力和物力也无法完整地采集到污染源的相关数据。可见,传统的人工环境监测手段已无法满足环境监测的需要,针对这些问题,设计一个远程环境在线监测系统,系统要求:①实时监测生产设备和治污设备的运行状态;②能够存储一周内的数据,进行历史数据的查询和补足;③以动画形式实时显示设备状态,以曲线形式进行对比分析,为污染源监管提供客观科学依据,提高环保执法现代化水平。
现场数据的采集、远程传送、上位机可靠接收数据是一个成功的远程监控系统的关键所在。本系统采用西门子PLC(programmable logic controllerr,可编程控制器)采集生产设备和治污设备的开关量信息;使用工业级GPRS(general packet radio service,通用分组无线服务)DTU(data terminal unit,数据传输单元)传送数据;利用2个基于TCP/IP(transmission control protocol/internet protocol,传输控制协议/网际协议)协议的应用程序之间相互通信的套接字(Socket)技术接收数据。数据中心服务器将接收到的数据存储到数据库中,并以动画、曲线等形式显示。
1 系统架构
系统的总体结构如图1所示。系统主要由3部分组成:西门子S7—200CPU 224XP CN采集实时数据部分、GPRS DTU数据传输部分、环保局数据中心部分。
图1系统总体结构
1.1 PLC实时数据采集
PLC实时读取输入寄存器IW0的值,将时钟信息和设备状态信息数据打包后,通过串行口RS 485每隔30S将数据发送到GPRS DTU通信模块,然后再传送到中心服务器,供实时的动画和曲线等显示使用,PLC每隔5 min存储一条记录到历史数据表中,历史数据表可在指定的时间段内接受数据中心服务器发送来的数据杏询/数据补足等命令,完成相应的历史数据查询功能和某天的数据补足功能。
1.2 GPRS无线数据传输
GPRS是在现有GSM(global system for mobilecommunication,泛欧式数位行动电话系统)网络的基础上叠加了一个新的网络形成的逻辑实体而发展出来的新的分组数据承载业务。GPRS的理论带宽可达171.2 kbit.S-1,实际使用带宽大约在10~70kbit.S-1,底层支持TCP/IP协议,使得GPRS能够与Internet实现无缝连接,GPRS无线网络具有接入速度快、永远在线、覆盖面广、运营成本低廉、组网灵活、系统扩容方便等特点。
GPRS DTU是GPRS网络的数据终端,GPRSDTU提供了RS232/RS485接口,可以跟PLC等串口设备连接起来进行数据交互,在GPRS DTU模块上配置了串口设备的波特率、数据位、校验位、数据中心的IP地址、端口等信息后,就可以透明地将PLC发往串口的数据通过GPRS网络传送到Internet网络,然后再通过局域网将数据传送到数据中心服务器。
1.3数据中心服务器
数据中心服务器接收并保存数据到SQL(structured query language,结构化查询语言)数据库中,然后对数据进行相应的操作,最终将数据以动画、曲线等形式显示,为科学执法提供数据支持,数据的接收采用VB 6.0的Winsock控件来实现,是本系统的关键之一。在数据传输过程中,要求数据中心服务器的IP地址与GPRS DTU中的IP地址一致。系统运行时,启动Socket监听,与远程数据采集终端建立通信连接之后,就可以进行正常的数据接收。
2 PLC的程序设计
2.1 PLC通信方式
选择合适的通信方式,是实现高效数据传输的关键。西门子S7—200系列CPU224XP_CN的通信方式有4种。
2.1.1点对点(point to point interface,PPI)方式
用于和西门子编程软件或西门子的人机接口产品通信,是一种主从应答式通信模式。这种通信方式需要专用的PPI电缆。
2.1.2多点接口协议(multipoint interface,MPI)方式
用于在西门子的产品之间建立小型的通信网络,允许多主通信和主从式通信。
2.1.3 DP(decentralized periphery,分散外设)方式
用于实现与分布式I/O(远程I/O)的高速通讯。可以使用不同厂家的PROFIBUS(process field bus,过程现场总线)设备,但是需要专门的接口卡。
2.1.4 自由端口通信方式
这种通信方式允许用户根据自己的实际情况定义通信协议,在多种智能设备之间进行通信。
PLC通过串口将数据上传至GPRS DTU,再由GPRS DTU通过无线网络将数据发送到数据中心服务器。自由端口通信协议可以通过程序灵活控制PLC串口的通信方式,通过程序控制,在大部分时间内使PLC作为主机,主动上传实时数据,在指定的时间段内又可使PLC为从机,接受上位机的查询命令,进行历史数据的查询,这样可以最大限度地降低系统数据流量,降低运营成本。
2.2 PLC程序
PLC程序的流程如图2所示,采用模块化编程。主要程序为串口初始化子程序,实时数据发送子程序,历史数据存储子程序,历史数据查询中断程序。
2.2.1 串口初始化子程序
S7-200系列CPU224XP_CN提供了2个标准的RS485端口Port0和Port1,选用Port0进行自由端口通信。串口初始化主要是设置一些标志寄存器的值,让其按照指定的方式通信,比如,通过改变特殊标志位寄存器SMB30的值,就可以改变通信的波特率、奇偶校验位、停止位等信息。这些设定必须与GPRS DTU的相关参数值相一致。串口初始化子程序只在每次PLC重启时运行一次。
图2 PLC程序流程图
2.2.2实时数据发送子程序
S7-200系列PLC有专用的发送指令XMT,其格式为XMT_TABLE_PORT。接收指令为RCV,其格式为RCV_TABLE_PORT,其中PORT为通信端口,本系统设为端口0,TABLE为发送(接收)数据的数据缓冲区,其第1个字节为发送字符的个数,最大为255字节。
在本系统中,监测的设备都是比较大型的设备,不会频繁启停,也就是说监控对象的状态不会频繁地发生变化,每隔30 s发送一次实时数据到数据中心,已经可以满足系统的实时性要求。
2.2.3历史数据存储子程序
系统将采集到的生产设备和治污设备的开关量信息(2字节),隔5 min存储一次到历史数据表中。考虑到要进行历史数据补足查询,每8 h(192字节)数据作为一个数据存储单元,再加上数据头和数据尾等信息,一个数据区200个字节。历史数据保存7 d需要4 200字节,在PLC内存中就可以存储最近7 d内的历史数据。PLC程序使用时钟信息确定每个数据具体的存储位置。
2.2.4历史数据查询子程序
PLC利用时钟信号控制自由端口通信,让PLC在每天指定的时间段内,允许数据中心服务器对下位机进行历史数据查询。当进行数据补足时,就将缺失数据所在的数据区的数据(200字节)全部发送到数据中心服务器,确保数据库历史数据的完整。
查询结束后,自动返回到PLC主动发送实时数据模式。
3 上位机程序设计
3.1 Winsock控件原理
对数据进行可靠的接收是整个系统的关键。Socket流式套接字是一种针对TCP的面向连接的套接字。直接采用Socket技术来实现数据中心服务器和远程数据终端通信比较复杂。因此,采用集成了Socket技术的Winsock控件。
Winsock控件是微软Windows提供的网络编程接口,提供了基于TCP/IP协议的接口实现方法。它把与网络通信相关的Windows Sockets API(application programming interface,应用程序接口)函数封装成为一个整体。将网络编程要用的函数作为控件的属性和方法。通过对控件相关属性的设置和方法的调用就可以实现稳定的网络通信功能。该控件为用户提供了访问TCP和UDP(user datagramprotocol,用户数据包协议)网络的极其方便的途径,并且适用于Microsoft Access,Visual Basic,VisualC++和Visual FoxPro等多种可视化编程环境。
本系统有多台数据终端,要为每台数据终端建立一个线程,负责实时高效的接收和发送数据。Visual Basic 6.0的Winsock控件数组可以很方便地实现这一功能,因此采用Visual Basic 6.0开发上位机程序。
图3表示单台数据终端与服务器数据中心进行数据交互的过程。当有多台数据终端时,数据终端与服务器建立连接进行数据交互的过程相同,只需要增加新的Winsock控件实例,这里使用控件数组。具体方法是:在窗体中加入Winsock控件,命名为Listener,将它的Index属性设置为0。作为Winsock控件数组的第一个元素。然后在窗体的Load事件中声明一个模块级的变量Count,把Count设置为0,数组中的第一个控件的Local port属性设置为1011 (与GPRS DTU一致),接着调用控件的Listen方法。然后在连接请求时,代码将检测Index是否为0,如果为0,监听控件将增加Count的值,并使用该号码来创建新的控件实例,然后使用新的控件实例接受新的连接请求。这样就可以完成多台终端与服务器数据中心通信程序的设计。
图3单台数据终端与服务器通信工作流程
3.2数据中心服务器接收数据
数据中心服务器接收PLC实时数据的界面如图4所示。可以看出,接收的实时数据有12个字节,以16进制显示。在实时数据框中,00 04表示机器码,09 12 02 09 33 02 00 04,表示09年12月02日09点33分02秒,00系统保留位,04表示星期三,8D CF表示设备的开关信息。在历史数据框中,可以看到每隔30 s接收到的PLC的实时数据,1表示设备开,0表示设备关。在下位机补足数据框中,是数据中心服务器检测到数据库中某个时间段的数据有缺失时,进行数据补足查询,得到的一段历史数据。
图4上位机接收的数据画面
图5实时状态图
服务器将收到的数据存储到SQL数据库中,然后在服务器的人机界面中,将数据以动画、曲线等形式显示出来,生动地展示污染源生产设备和治污设施的开关情况,为科学监管厂家的治污情况提供了数据支持。
4 结语
本文利用S7—200 PLC自由端口通信、GPRSDTU透明的数据传输、VB6.0的Winsock控件,成功实现了远程环境在线监测系统的设计。
本系统已经成功地在佛山市南海区环保局运行。数据采集终端可以在环境恶劣的厂区稳定可靠运行;数据中心平台可以以动画的形式实时观测到厂区生产设备和治理设备的运行状态。图5显示了某家工厂的设备运行情况,指示灯为绿色表示设备在运行状态,否则为红色。此外,还能将生产设备和治理设备的历史运行情况以曲线形式进行对比,分析治理设备是否和生产设备同步运行。
本远程环境监测系统具有永远在线,能够在恶劣的工业环境中可靠运行、界面友好等特点。不仅可以应用在环境监测方面,在其他需要进行远程监测的领域也有一定的参考借鉴价值。