微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 远程环境在线监测系统的设计与应用

远程环境在线监测系统的设计与应用

时间:02-12 来源:3721RD 点击:

s 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数据中

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top