推广 热搜: 电机  PLC  变频器  服务机器人  培训  变送器  危化品安全,爆炸  西门子PLC  触摸屏  阀门 

基于LonWorks技术的动态网络监控实现

   日期:2013-03-23     来源:工控之家网    作者:工控之家    浏览:4    评论:0    
1  引言
      随着网络的迅速发展,越来越多的工业控制系统与网络结合,一些工控组态软件也纷纷推出了对网络的支持。通过网络进行远程数据采集已经成为可能,而且在一些领域已经得到了应用。目前得到运用的远程数据采集方法多采用client/serve结构,必须编写客户端程序和服务器程序,通过tcp套接字传递数据。这固然是一种高效的方法,但却存在如下不足:对网络要求高,一旦网络出现暂时堵塞等小问题,系统就无法正确工作;手工编程难度大,一般只能在局域网内部使用;客户端和服务器端必须安装软件。由于这些不足,使得基于网络的远程数据采集无法迅速推广。本文介绍一种基于browser/server结构的远程数据采集方法。

2  远程数据采集采用的通信技术
      以太网技术从出现到现在的近20年中得到了飞速发展,先后出现了十兆网、百兆网、千兆网,其应用领域也从最初的办公自动化发展到工业控制、楼宇自动化领域。
      以太网使用tcp/ip协议,这是个跨平台的通信协议,它既能用于局域网也能用于广域网,可方便地实现异种机之间的互联。基于以上原因,在楼宇自动化和工业控制等领域,网络集成是人们常常希望将以太网作为主干网,以太网之下用现场总线或485总线等将前端设备连在一起。这样可以使两者优势互补,使网络集成应用更加灵活与方便。
socket支持面向连接和无连接的编程模型,如图1所示。


图1

    
下面对编程模型的各个系统调用结构和有关重要函数调用作一简单介绍。
   以下是有关重要函数调用格式及说明,如图2所示。
    (1) 创建socket—socketcreate()
调用格式为:
socketid= socketcreate(ntype)
说明:返回值socketid是一个整数,即socket号;ntype:类型,指创建socket的应用程序所希望的服务协议类型(tcp或udp)。
    (2) 指定本地地址—bind()
调用格式为:
bind(socketid,localip,localport)
说明:localip,本地socket地址;localport,本地端口。
    (3) socketlisten()调用
调用格式:socketlisten(socketid)
说明:用于面向连接的服务器,表明愿意接受连接。
    (4) 建立连接—socketaccept()
调用格式:
socketaccept(socketid,&dwremoteip)
说明:dwremoteip:指向客户socket地址结构的指针
    (5)发送数据————socketsend()
调用格式:socketsend(socketid,*pby,nlen)
说明:pbyn:指向发送缓冲区的指针,nlen:缓冲区大小
    (6) dsockopen(),dsockclose()
说明:二者直接调用,分别表示打开、关闭socket库。
    (7) socketdestory(socketid)表示释放标识为socketid的socket。
由于采用b/s模式,客户机通过浏览器访问服务器,所以下面仅给出服务器端socket程序的部分重要语句源码:
/ /初始化
if(dsock_open()==false) 
{printf("unable to initialize socket library ");  return 1;} 
[url=file://创/]file://创建socket
socketid = socketcreate(tcp_socket);
if(socketid == invalid_socket)
{printf("socketcreate() error ");
dsockclose();  return 1;}
[url=file://指/]file://指定本地地址
if(socketbind(socketid,0l,port)==false) 
{ printf("socketbind() error ");  
return false}
[url=file://等/]file://等待接受连接
if(socketlisten(socketid)==false) 
{printf("socketlisten() error ");
return false;}
[url=file://与/]file://与请求通信的客户机建立连接
if(socketaccept(socketid, &dwip))
{datacollect();//数据采集略}
                                                                              
3  远程数据采集中现场总线技术的使用
      在当前现场总线产品朝着开放式现场总线技术发展的大趋势下,我们研制了特别适合国防工程、智能建筑、工厂自动化的基于lonworks技术和符合lontalk协议的现场总线测控网络。该网络充分利用了lonworks现有的各种成熟的、先进的技术以及方便的开发手段,因而具有以下突出的特点:具有高速1.25mbps和低速78kbps两种通信速度的网络产品可供选择;支持多种通信介质(双绞线、电力线、无线光纤等);通讯距离长,在78kbps时,在不加中继器的情况下,可达2700m,这是一般通信技术难以达到的性能指标;支持多种网络拓扑结构;lontalk协议封装了osi参考模型的全部七层协议,方便了上层应用开发;neuron神经芯片内部封装了3个cpu,使应用cpu和通信cpu功能相对独立,同时也简化了应用,通信的可靠性更有保障;通信网络在电气上是隔离的,保证通信网络的安全可靠。
      893-lm测控网络的数据采集及控制任务都是由各种功能的智能前端去完成的。为了让这些通用的智能前端在不同的测控系统中去完成要求的任务,就必须对前端进相应的设置,这些下载到前端的内容称为对前端的命令或组态。上位机对前端的操作是通过调用893-lm网络驱动程序提供的api函数来实现的,驱动程序提供了windows/nt用户编程的支持,这些函数被封装在dll库中。安装驱动程序时,dll函数库将自动安装到选定的驱动程序文件夹中。893-lm网卡和前端支持的函数主要有:网卡通信口地址设置函数(lmport)、前端信息读取函数(lmtype)、开关量状态采集函数(lmstate)、模拟量数值采集函数(lmnum)、命令发送函数(lmcmd)、程序id、芯片id读取函数(lmids)、通道模式读取函数(lmmode)。

4  动态网页技术与远程数据采集
      www使用超文本标记语言(html)作为表达信息的手段,www服务器用来存放html语言编写的主页,用户通过www浏览器(internet explore或netscape等)访问www服务器,取回主页,经过浏览器解释后显示出来。这就是www的基本工作方式。
      普通的html语言只支持静态的文字、图片等,也就是说,当你访问一个站点时,所看到的页面是不变的。这大大限制了与用户的交互性,为了弥补这一缺陷,动态网页应运而生,如java、cgi、asp等。动态网页技术一般都是由在服务器端运行的程序来实现的,即通过编程产生不同的html网页并由服务器发送到用户端。动态网页技术目前被广泛应用于处理用户定单、接受数据查询等领域。为了实现使用普通web浏览器进行远程数据采集的目的,我们也必然要用到动态网页技术。
      因为服务器端程序采用c语言编写,所以这些程序就有了硬件访问能力,因而也就使得采用动态网页技术实现远程数据采集成为可能。一个基于client/serve结构的远程数据采集系统如图3所示。用户在客户计算机上通过客户端程序与服务器通信,指挥服务器上的上所连接的lonworks前端采集数据,并将结果发送到客户端。如果改成基于 broswer/server结构的远程数据采集系统,则客户计算机就使用普通web浏览器发出采集指令和查看数据。


      事实上,基于dsock的服务器端程序编写容易。因为它不包含用户界面,所有的数据采集由采集子程序完成,输入命令由服务器自动从客户端得到,而所有的输出由服务器自动发送到用户浏览器,并由浏览器负责解释和显示数据。其执行流程总是简单的读入命令-程序处理-输出数据。(见图4)读入和输出有着既定dsock规则,而处理阶段则无任何限制。dsock基于dod(department of defense)模型,它提供dsock.lib库,该库是一dos tcp/ip库,为需要在dos环境下进行网络应用编程的用户提供网络服务接口。该库为用户创建internet应用提供c语言函数调用,如前所述。dsock在dos环境下的结构如图5所示。

图4


      现场数据通过直接访问硬件或调用驱动程序的方式获得,由于c语言的灵活性可以使采集动作得以高效的执行。服务器根据指定的要求将将采集到的数据组织成http流发送到服务器。http协议是一种高层协议,建立在tcp/ip之上。
      由于http不使用持续连接,使得这种采集方式不适合于连续采集。一次采集请求只能得到一组数据,这大大限制了其应用范围。为了解决这一问题,可以采用客户端牵引的办法。即在网页中插入定时刷新的功能,每隔一段时间就向服务器重新发出采集指令,获得新数据。刷新有两种方法:一是整个网页刷新,二是通过编写脚本(可用vbscript,javascript)程序,实现网页局部内容定时更新。

5  应用实例
      我们所开发的监控平台由1台服务器和四台微机组成以太网,服务器配有四块lonworks网卡,也就是,可最多具有4个lonworks通道,每个通道最多可挂接16个893-lm智能测控前端(见图6)。整个系统为浏览器/服务器(b/s)结构,服务器负责数据采集与储存、页面储存;4台微机作为客户机,主要提供数据显示、监控操作及指令发送界面。


      服务器采用基于dos的386模块,这样也就有dos与windows网络通信的问题。在软件使用上,我们采用专用于dos 的tcp/ip很好的解决了网络通信问题。实际上,在dos环境中我们很好的完成了在windows下更易实现功能(譬如ftp、http、telnet等),并且与windows相比,在完成不太复杂的任务时,具有更好的性价比。下面以tcp通信为例(见图7)说明dsock与winsock的通信。

      服务器和客户机之间通信采用面向来连接的socket编程模式。在服务器上,我们利用borland c3.1编写了服务器通信程序,完成服务器通过网络与客户机之间的数据传送。(通信程序框图见图8)数据采集部分专门由服务器端数据采集程序完成。
      启动与运行过程过程:服务器上电后,自动启动定时采集数据程序,启动http协议服务程序,
   
      进入通信等待状态;客户端通过浏览器与服务器进行连接,进入要求页面后,网页定时刷新(如1s),向服务器申请服务,服务器响应客户请求,接收来自客户端的数据放入缓冲数据区,同时将客户要求的缓冲数据区送往客户端进行数据刷新显示。

6  结论
      利用asp等动态网页技术实现远程监控是可行的,在实际工程中达到了使用通用的web浏览器进行远程数据采集/监控的目的。这种基于broswer/server结构的数据采集/监控的方法具有开发容易、调试简单等优点,适合于在实时性要求不高的场合应用。这种方法也可以很容易的移植到互联网,从而大大扩展远程数据采集、监控的范围。

 
打赏
 
更多>同类环保知识
0相关评论

推荐图文
推荐环保知识
点击排行
网站首页  |  免责声明  |  联系我们  |  关于我们  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅  |  违规举报  |  鲁ICP备12015736号-1
Powered By DESTOON