资源描述
在互联网上对LONWORKS网络的控制
王忠民 蒋平 王月娟
(同济大学电气工程系 上海 200092)
[摘要] LOWORKS现场总线是应用广泛的新一代现场总线系统,具有网络协议开放,组网方式灵活,开发方便的特点。利用DELPHI编程中的WebBroker技术可以较为方便地创建多应用的以HTML为基础的Web应用程序,以此实现通过网页浏览器访问、在INTERNET上实现对以Lonmanage DDE或LNS DDE为接口的LONWORKS网络监控。
[关键词] LONWORKS技术,DDE服务器,ISAPI编程 ,WebBroker技术
1. LONWORKS与INTERNET的联接
开放的分布式网络控制系统与INTERNET相联是网络控制系统发展的趋势。INTERNET 的飞速发展为人与人之间的信息交流提供了方便快捷的方式。而在控制系统领域,随着微电子技术的的发展,设备的智能化水平不断提高,对人与设备之间的信息交流和设备与设备之间的信息交流也提出了越来越高的需求。通过INTERNET可以将地域分布的控制网络连接在一起,也可将不同的控制网络互连,组成一个统一的网络结构。局部的控制网络(INFRANET)连接到INTERNET与INFRANET上,可以实现信息的自由流动。建立在INTERNET之上的分布式控制网络不仅将象INTERNET自身一样带给人们不同的生活方式,同时将赋予每个局部控制设备一个无地域性的新特性,并且所有现存的LAN或WAN的信息传输基础设施可直接用于控制系统的建立。
将控制设备或节点连接上网的一种方式是在设备的嵌入式操作系统内内置WEB服务器,但对于通常以低价、紧凑为特点的嵌入式系统而言,它又略显庞大,此外服务于大容量信息传送的IP协议并不适合于以实时、频繁、短数据为特点的控制网络,此外这种方式并没有提供无缝的网络通信,因为这种方式通常局限在某个特定的控制网络协议内,信息在传递过程中将受到协议转换的限制,而无缝连接要求分布式开放的对等信息交流。ECHELON公司的LNS(Lonworks Network Servers)是一个强大的网络操作系统,它提供了开发工具与设备的互操作性,可在任何计算机平台上工作,在网络传输层提供了LonTalk与TCP/IP协议,意味着可将控制网络建立在 INTERNET之上。ECHELON公司今年推出的IP网路由器i.LON 1000 INTERNET SERVER ,利用CISCO网络技术,可以实现 数据网与控制网的无缝连接。IP网被看成是LONWORK网的自然扩展,在原网上的所有特征,如对等通信、网络管理、设备诊断、访问控制等在IP网上都可以实现,同时它包含一个可编程的包聚合特性,保证IP网络不会因为控制包发送引起性能下降。但对于早期的LONWORK用户,特别是只有Lonmanager DDE的用户,在不增加投资的情况下,如何实现通过Internet对Lonworks 网络的监控?本文介绍了一种基于Lonmanager DDE利用WEBBROKER技术,实现简单、经济的上网方案,并给出了它的实现方法与一个实例,可通过Web浏览器在INTERNET网上实现对LONWORK网络的访问与控制。
2:ISAPI编程与DELPHI中的WEBBROKER技术对网络编程的支持
开发一个网络服务程序可以选择多种编程接口。当前比较流行的网络编程接口有CGI(Common Gateway Interface)、IDC(Internet Datebase Connector)和ISAPI(Internet Server Application Program Interface)等。如果要开发复杂一些的网络服务程序,CGI的执行效率太低,而IDC缺乏灵活性,此时ISAPI是较好的选择。
ISAPI的优越性表现在:ISAPI程序的执行效率高,这主要是由于ISAPI程序是通过DLL实现的。DLL的特殊行为决定了ISAPI程序一般只是被服务器在客户的首次请求时装入,此后便一直驻留在内存中,当后继请求来到时,服务器直接从内存中调用以响应请求,程序访问数据的速度也大为提高。另外,作为服务器的扩展,ISAPI程序与服务器的紧密结合可以实现许多其他方式不能实现的功能。
DELPHI是INPRISE公司(原Borland公司)推出的可视化编程环境,为我们提供了一种方便、快捷的windows应用程序开发工具。DELPHI 5.0所提供的WebBroker 技术允许用户创建ISAPI/NSAPI、CGI或WinCGI Web服务器应用程序,而不需要担心过多低级的细节。WebBroker可以看成是整个Web Module的一部分,Web Module向导和组件提供了设计期间的支持。利用DELPHI封装的TwebModule类,就可以较轻松地编写出实用的ISAPI程序,并集中精力去解决信息处理问题。DELPHI还提供了几个ISAPI 编程的辅助类,包括TpageProducer、TqueryTableproducer等,使编程工作更为方便。
下面对编程所用到的编程技术与元件做一简要介绍:
1. TWebModule类
当创建网络服务程序(Web Server Application)时,会自动生成WebBroker。WebBroker可根据服务器传过来的请求特性,自动调用合适的DLL函数去响应请求,并在DLL函数处理完毕后,把回送的网页通过服务器传送给用户机。
WebBroker的最重要属性如下:
l Actions属性 :
该属性为TWebBroker类的,是一个TWebActionItem的集合。TWebActionItem是处理各种请求的DLL函数,统一放在Actions属性中供服务器调用。
2. TWebActionItem类
TWebActionItem类允许网络服务程序响应HTTP请求。
l MethodType属性:指定了HTTP请求方式的类型。
l PathInfo属性:
用于指明与响应方法匹配的URL路径。当WebActionItem的MethodType,PathInfo均与应用请求的相应项匹配,则该WebActionItem的OnAction事件被触发以响应请求。
l OnAction事件:
该事件的触发条件已在前面介绍,它的事件声明代码如下:
procedure(Sender:Tobject;Request:TwebRequest;Response: TwebResponse; var Handled : Boolean )of object;
服务程序在Request参数中得到客户请求的内容。Response参数中包含程序处理完毕后返回给用户的页面。
3. TPageProduder类
Pageproducer可以实现动态网页传送,内含了用户需要的信息。
l HTMLDoc与HTMLFile属性:都可用来为Pageproducer指定HTML模板,但只允许用其中的一个指定。HTMLDoc为TStrings类,可直接在属性中编辑自己的HTML模板。HTMLFile的类型是String,用于指定写有HTML模板的文件名。
l Content方法:
该方法的声明代码如下
function Content:string;
Content方法根据由HTMLDoc或HTMLFile属性定义的HTML模板,以及下面要介绍的OnHTMLTag事件,返回标准的HTML文档。
l OnHTMLTag事件
该事件的声明代码如下:
procedure (Sender :Tobject ; Tag : TTtag ; const TagString: string ; TagParams : Tstrings ; var ReplaceText : string )of object ;
OnHTMLTag事件当Content方法翻译HTML模板HTML标记时被触发,以完成特定的翻译动作。可以通过TagString,TagParams参数获得HTML标记的信息,然后对ReplaceText参数赋值,Content函数便会自动用ReplaceText去代替原来的HTML模板中的HTML标记。HTML标记是DELPHI为翻译HTML模板而设计的。
3:制做实例
说明:客户端的主要工作是建立动态的HTML网页,用户可以在网页上通过点击来决定每一个指示灯的开或关,而这些指示灯都是由LONWORKS节点的输出决定的。ISAPI程序的任务就是将用户的指令从网上传送到LONWORKS节点中。除此之外,用户还可以查看现场温度与指示灯的状态。
受控的LONWORKS网络共有3个节点,一个节点用于输入现场温度,一个节点用于控制指示灯的开关,另一个节点用于输入指示灯的状态(开或关)。各节点属于一个域中,它们与上位机的通讯是通过网络变量来实现的。LONWORKS的Lonmanager DDE服务器是LONWORKS开发系统的组成部分,它可以在Windows应用程序与LON网络之间交换网络变量、消息等数据,LON网与应用程序之间的数据交流通过DDE服务器实现。
Internet
客户端
web 服务器
lonmanageDDE
PCLTA网卡
节点1:a 节点2 :dout 节点3:din
温度 指示灯 状态监测
在节点程序中,反映各个物理量的网络变量是如下定义的:
节点1 a : (写出节点名)
network output polled unsigned long nvo_Ain[0]
/*温度测量值*/
节点2 dout:
network input unsigned int niByteOut[3]
/*数组变量的每一位决定一个指示灯的状态,共24个指示灯,‘1’为开,‘0’为关*/
节点3 din :
network output unsigned int noByteIn[3]
/*数组变量分量的每一位反映对应指示灯的状态*/
客户端的编程为了实现动态图象,并确定用户指令,使用JAVASCRIPT语言编写函数,通过调用搜集用户信息。用户的指令是用表单形式发送的,发送表单的HTTP方法为mtPOST类型。采集用户指令与处理的过程示意如下:
将标记替换后的HTML网页返回给用户。
通过DDE服务器控制现场状态。
根据交换数据的结果,通过ONHTMLTAG事件以实际数据代替HTML模板中的标记。
服务程序分析用户指令并与DDE服务器交换数据
得到用户指令并发送给ISAPI服务程序
其中用到的几处数据处理方法如下:
1. 与LONMANAGER DDE (SERVER) 的通信:LONMANAGER DDE的应用程序名为LMSRVR1,主题名在这里是NETVAR,项目名就是带有节点名的网络变量名,如var1。这些都是在加入到WebModuel的控件DdeClientConv中设定的。
DDESERVER:LMSRVR1
DDETOPIC :NETVAR
在程序中 通过调用DdeClientConv的POKEDATA方法可以向DDE服务器发数据,以改变网络变量值实现对Lonworks网络设备的控制。如:
tp:='dout.niByteOut[0]';
strpcopy(p1,inttostr(state[0]));
ddeClientConv1.PokeData(tp,p1);
而在读取Lonworks设备中的测量值时,(DDE数据时,)我们先通过DDE把数据读到数据文件中,服务器扩展程序再从数据文件中读数据。可以在TDDEClientItem元件的ONCHANGE事件中进行测量值读取的工作。
2。读取用户指令:当用户的HTTP请求以mtPOST方式传送时,我们可以从TWebRequest类的ContentFields属性中读到用户请求,HTTP请求的内容经分析后,被放在ContentField的每个域中,在域中以“参数名=参数值”的形式以字符串表示。ContentField是TStrings的对象,因此用户可以以指定参数名的方式取得用户指令。
在ISAPI程序中有如下语句:
FOR I:= 1 TO 24 DO
……
IF(Request.ContentField.Values[‘T1’][I]:=’1’)
/*判断某一位是否为‘1’,即指示灯是否应亮*/
…...
在网页中对应的HTML语句是:
……
<P><Input Type=”text” Name=”T1” Size=”24”>
/*Form.T1.Value的值经调用JavaScript小程序得到*/
……
2. 如何将处理后的结果返回给用户:
在WebActionItem的OnAction事件中有如下代码
……..
Response.Content:=PageProducer1.Content;
……..
当程序执行这里时,便调用PageProducer1的OnTag事件,对PageProducer1中预定义的HTML模板进行替换,例如在处理现场状态返回的OnTag事件中的代码是
……..
IF Tag =tgimage Then
……..
Replacetext:=’<img src=”http://…/light1.gif”>’
……..
欲实际实验以上例子,可访问中的Web实验室。
4:结论
以上是对LONWORKS网络在INTERNET上进行控制的一个简单尝试。应该说明的是利用DELPHI的WebBroker技术可以创建出复杂的、由数据库驱动的而以HTML为基础的Web应用程序。因此在网上基于这种方式的ISAPI程序可以实现对复杂LON网的监控。这为LON网Lonmanager DDE 用户进行远程控制提供了一种方便且成本低廉的方法,无须任何附加硬件。
[参考文献]
1. 刘毅. 《DELPHI40 入门与提高》清华大学出版社,1999年
2. Echelon 公司. Neuron C Programmer’s Guide 1995
3. Echelon 公司. LonManageer DDE Server User’s Guide 1993
4. 杨育红 .《 Lon网络控制技术及应用 》西安电子科技大学出版社 1999年
展开阅读全文