1 引言
工业控制中,工业过程监控系统一般采用client/server(c/s,浏览器/服务器)结构。c/s结构并不意味着控制作用被上移到网络上,实时的控制仍然由现场控制的单元来完成。而网络更为关注的是现场信息的监视与管理,所谓的远程控制,也只是在客户端对一些控制参数的调整,和紧急事故的处理。
随着internet/intranet技术和应用的发展,www服务成为核心服务,用户可通过浏览器browser统一的界面上,完成网络上各种服务和应用功能。这种在20世纪90年代中期发展的,基于浏览器、web服务器和应用服务器的计算结构称为browser/server(b/s,浏览器/服务器)计算模式,b/s模式继承传统的c/s模式中的网络软、硬件平台和应用,但克服了c/s模式的上述缺陷。
我们以双容水箱水位控制系统为实验对象,构建了基于b/s(浏览器/服务器)结构的远程控制系统。
2 browser/server结构

browser/server结构的工业信息监控系统框图如图1所示。
工业信息监控系统采用b/s模式,客户端直接通过浏览器与服务器端进行动态交互,而c/s模式采用的是事件驱动方式。各子站得到现场控制单元的实时信息,并将其写入数据库服务器保存,web服务器将数据库服务器的实时数据动态发布到网上,客户端便能通过浏览器方便的得到这些实时信息;另一方面,客户端的控制信息也可以通过web服务器写入各子站,再由子站将数据写入现场设备,实现远程控制。b/s模式下浏览器代替专门的客户端软件,用户通过浏览器获得自己权限内的企业内部数据信息,同时做出决策。按照tcp/ip通信协议和www规范,通过嵌在web页面activex控件对数据端口的访问,实现现场数据的远程采集,同时根据采集的信息发出相应的指令对现场设备进行控制。因此,系统的开放性得到很大提高,开发与维护更加方便。
3 系统总体结构
本系统是1个水位实时检测和控制系统,我们采用一般化的监控系统分层结构,整个系统分成三级:现场控制级(PLC)、上位机监控级(服务器)、远程控制级(客户)。
系统框图如图2所示。

整个水位网络控制系统的工艺流程的设计如下:通过plc控制程序对水位进行pid控制和模糊控制,把运算的结果输出到变频器,来控制交流马达的转速,从而水位稳定在设定值,此外通过plc与组态王的通信,以及远程客户机与上位机的通信,实现在远程客户端对给定值,高限、低限的设置,以及控制方式的选择,控制参数的调整,并通过报警图,趋势图对水位进行监控。
由于硬件系统及现场控制级的软件设计都比较简单,这里不多作介绍,下面主要介绍基于网络的远程监控软件设计。
4 基于网络的远程监控软件设计
我们所说的远程控制包括两方面的内容,其一是,通过web浏览器,信息层上的用户可以在任何时候,任何地方监控现场数据和设备,其二是,工程技术人员可以在远方对现场设备进行诊断,以及对控制软件进行维护与更新。
为实现以上功能,采用将internet中的web技术应用于工业信息监控系统中,构建基于b/s结构的开放性工业信息监控系统。
4.1 主要技术难点
本文研究的主要内容,即本文的主要技术难点是:
(1) 异构系统数据交换
由于工业系统的复杂性,构造一个完整的b/s结构的工业信息监控系统需要涉及多种数据交换技术,这也是大型监控系统的难点之一,为满足统一显示的要求,许多数据采集子站之间存在数据交换的问题,服务器与子站以及服务器与客户之间也存在数据交换。本文采用dde技术和odbc技术实现。
(2) 动态数据发布
对于一个b/s结构的工业信息监控系统而言,能提供动态的web页面,在intranet上进行数据实时显示是最基本的要求。本文采用asp/ado技术实现。
(3) 远程控制
在intranet上一般采用的是监督控制方式,简单来说就是远程通过intranet对工业现场的运行参数进行设定,并能对某些设备进行操作。本文采用winsock技术实现。
4.2 异构系统数据交换
(1) 利用dde实现组态王与vb之间的动态数据交换
动态数据交换(dde)技术在控制网路与信息网络集成中得到了实际应用。其原因,一是这种方法实时性较好,二是作为连接控制网络与信息网络的通信处理机比较容易实现。dde协议使用共享内存在应用程序之间传输数据,完成应用程序之间的数据交换。
以本实验室水位控制系统为例,实现vb应用程序与组态王的动态数据交换,远程客户再与vb通信,从而实现远程控制,在这里需要交换的数据主要是一些需要在远程客户端进行修改的参数,数据流向如图3所示。

(2) 利用odbc实现组态王与access数据库的连接
为了便于数据的统一管理,监控组态软件采集到的现场数据都要送到数据库中保存,绝大多数工控软件都提供odbc数据库编程接口。
4.3 odbc与access数据库的连接方法
本系统采用的工控软件为组态王,它通过odbc与access数据库的连接方法如下:
(1) 组态王提供sql访问管理器,包括表格模板和记录体两部分,首先创建表格模板,添加列项名称,在这里我们添加的列项为:水位实时值、水位设定值、比例系数、积分时间、微分时间、采样周期、手动开关、日期、时间,然后创建记录体,即将模板中的数据项与数据词典中的变量建立关联。
(2) 在access中建立数据库db1,并创建表格,在表中定义与组态王表格模板对应的字段名称,并定义为相应的数据类型。
(3) 启动控制面板中的odbc管理器,定义系统数据源sw1,该数据源与刚刚创建的数据库db1关联。
(4) 在组态王中与数据库db1建立连接,并向里面写入数据,通过应用程序命令语言编程来实现这些功能。
启动时:sqlconnect(connetioNId, "dsn=sw1;uid=;pwd=");
运行时:sqlinsert(connetionid, "表1", "temp1");
停止时:sqldisconnect(connectionid);
运行时将实时数据写入数据库db1,这里我们定义sqlinsert语句执行的间隔为10000ms,也就是每隔10s,组态王向db1数据库中写入一条实时数据。
4.4 动态数据发布
基于web的数据库技术发展很快,在传统的html页面中,访问数据库一般是通过公用网关接口(cgi)来实现,这种方式不仅开发困难,而且在出现大量并发请求时会显著地降低服务器的运行效率,而采用asp(active server pages)技术实现数据库访问就能较好地解决这个问题。
用asp进行监控画面的动态显示,必须实现对监控系统数据库的访问,这里我们采用asp的服务器数据库存取组件ado与监控系统的数据库连接,然后根据用户要求,由asp生成最新的html数据页面传递给客户端,实现过程如图4所示。

4.5 远程控制
远程控制实现框图如图5所示。
控制服务程序:负责与客户应用程序远程通信,并将客户信息传递给工控组态软件,或直接传递给现场设备。
客户应用程序:负责与控制服务程序远程通信,并发送控制信息。

前面,我们通过dde方式实现了组态王与vb应用程序的动态数据交换,但这种交换仅限于同一主机的不同应用程序之间,为了与远程客户机交换数据,必须采用基于tcp/ip协议的远程通信技术,这里我们利用winsock技术,实现网络中两台主机的远程通信,前面的vb程序增加winsock功能作为通信服务器端,客户端也采用vb开发。
vb6.0提供winsock控件,用于支持网络中2台以上主机间进行通信,winsock控件提供了多样化的属性和方法来实现网络通信。通过设置 winsock控件的属性和调用控件方法就能够实现tcp或udp方式的网络通信,因此利用这个控件,我们轻松的编写了基于tcp协议的客户/服务器程序。
为了保证数据的可靠传输,我们采用tcp通信方式,因此程序中winsock控件的protocal属性设置为scktcpprotocal。
(1) 服务器端侦听程序
服务器端必须添加2个winsock控件,一个控件用于侦听,命名为tlisten;另一个用于建立连接,命名为tserver。服务器必须先侦听网络,等待客户端的连接请求,才有可能建立网络连接。服务器侦听网络代码如下:
tlisten.localport=4477
tlisten.listen
(2) 客户端连接程序
客户端添加一个winsock控件,用于与服务器建立连接,命名为tclient,发出连接请求前必须设置远程主机ip以及端口号。程序代码如下:
tclient.remotehost="192.168.0.1"
tclient.remoteport=4477
tclient.connect
(3) 服务器应答连接程序
客户端发出连接请求后,将触发服务器端tlisten的connetionrequest事件。
private sub tlisten_connectionrequest(byval requestid as long)
tserver.accept (requestid)
end sub
(4) 接收/发送数据
连接建立以后,客户和服务器都能调用senddata方法发送数据,当一方发送数据后,将激活对方的dataarriva事件。
服务器端:tserver.senddata (text1.text)
客户端:private sub tclient_dataarrival(byval bytestotal as long)
dim strdata as string
tclient.getdata strdata
text1.text = strdata
end sub
(5) 关闭连接
将一方程序退出时应该关闭连接,释放系统资源,可以通过winsock的close方法和事件来完成这一工作。
这样,通过vb的winsock控件实现了网络上两台主机之间的双向数据交换,从而达到了远程控制的目的。
5 结束语
控制技术、通信技术和网络技术的发展是日新月异的,本文对远程控制涉及到的某些技术只做了简单的介绍,笔者认为在实时性和安全性方面还有待于深入系统的研究。




