实验简介
感测技术和计算机技术应用结合的发展趋势是嵌入式和远程应用,这种嵌入式应用由过去的51系列单片机逐渐发展成被ARM等嵌入式系统所取代,远程应用有C/S和B/S两种模式,由于ARM嵌入式系统性能优异,具有完备的功能,能运行Linux等开源可裁剪的实时操作系统,方便架构web应用。因此传统的检测系统应用技术必将面临挑战,检测系统软件的网络应用,过去人们之所以主要使用C/S模式,是因为B/S模式网页信息传送冗余度大,使实时性很差,而AJAX技术很好的弥补了B/S模式这个缺点,因此过去的C/S模式的主体地位必将被B/S模式所取代。
把检测系统中的嵌入式小型计算机作为一台接入网络中的计算机,它既是一个检测仪表设备,又是一个WEB服务器,因此可以通过浏览器远程操作该仪表,从而实现B/S模式的检测系统。
1 系统的结构与组成
1.1 检测系统原理
图1中液位变送器输出2-20mA电流接入DDC远程模块7017,7017数字化后通过485总线接入嵌入式系统ARM7,完成数据采集、数据处理。与远程用户通过浏览器基于HTTP协议进行交互。。
图1:检测系统结构框图
1.2 应用软件设计
采用B/S模式开发的应用程序的关键问题是如何提高检测的实时性,常规的web应用是采用网页刷新机制,强制用户进入提交/等待/重新显示,用户的动作总是与服务器的“思考时间”同步,客户端每次刷新数据都要求服务器端传送整页数据,而一页数据中只有极少数据是需要更新的实时数据,因此网络传送大量冗余信息,严重影响实时性。AJAX(异步JavaScript + XML)技术,是一种新的WEB开发理念,它集JavaScript、CSS、DOM、XMLHttpRequest技术于一体,将浏览器端的JavaScript、DHTML与服务器异步通信有机融合。提供与服务器异步通信的能力,使用户从请求/响应的循环中解脱出来。使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行所需要的更新。当请求返回时,使用JavaScript和CSS来相应地更新UI,网络只需要传送极少的已经更新了的数据,而不是刷新整个页面。大大减少了传输的数据量,提高了检测的实时性。在设计过程中,WEB如何实时的取得检测数据成为成功关键,在此,利用Linux特有的文件类型FIFO(命名管道)来和WEB应用程序通信,FIFO一端写入数据,另一端就读出数据,通信方便。检测模块把实时数据按一定的方式写入管道,另一端WEB服务程序(用C写的CGI程序)读出数据后发送给AJAX客户端脚本和Flash图表,AJAX就操作DOM实现无刷新的动态更新WEB页面数据,Flash得到数据后解析出绘制图表的坐标值,然后绘制出动态曲线图。这就实现了在WEB里显示实时数据和动态曲线图。
系统应用软件由嵌入式计算机中的测量控制模块、WEB服务模块和客户端脚本程序共同构成,如图2所示为系统软件结构图。
图2:软件结构框图
1.3.1 测量模块
测量控制模块是基于linux系统C语言实现数据采集、标度变换.系统初始化后从串口读取当前液位值进行标度变换,判断有无WEB数据请求,若有则把请求的数据写入FIFO送给WEB服务模块,下一步,系统进入定时等待(400毫秒),定时到则立即进入下一次数据采集、运算。
这一过程就实现了液位高度的采集、变换、实时传送数据给WEB服务模块。
测量控制模块软件流程如图3所示。
图3:测量模块软件流程图 |
1.3.2 WEB服务模块
WEB服务模块是基于Linux + boa架构的嵌入式Web Server,用C编写的CGI程序。它接受并处理AJAX发来的请求并通过FIFO管道与检测模块交换数据,实现实时数据获取、控制参数修改。一方面从FIFO管道中读取来自测量控制模块的实时数据,再送给客户端AJAX脚本和Flash进行实时数据的显示和动态图表的绘制;另一方面接受从客户端提交的控制参数然后返回给测量控制模块进行相应控制。这一过程就完成了用WEB浏览器进行测量控制的任务,从而实现了B/S模式的检测系统。如图4所示为WEB服务模块软件流程图。
图4:WEB服务模块软件流程图 |
1.3.3 A JAX + CGI动态显示测量数据
AJAX (JavaScript、XML、DHTML)可以定时向服务器发送XML请求(异步XML请求)同时在不刷新页面的情况下利用DOM技术动态的更新页面数据。在此,WEB客户端用Ajax脚本定时请求WEB服务模块的CGI程序,CGI程序处理请求并返回数据,当AJAX获得数据后,就操作DOM更新页面显示实时测量数据。由于可变数据量非常小,网络只需传输WEB页面需要更新的少量数据,这就提高了传输速度,从而实现了实时数据的显示。WEB客户端则使用通用的浏览器,当用户修改参数、给定值或显示实时数据时,只需要打开标准WEB浏览器就完成了系统的操作和显示,这就实现了B/S模式的测量。
AJAX脚本工作流程图如图5所示:
图5:AJAX脚本和Flash工作流程图 |
1.3.4 Flash + CGI绘制实时曲线
Flash能定时自动请求并读取数据文件这一特性使它与XML结合能动态更新内部数据,XML(The Extensible Markup Language)。这样只要通过WEB服务程序(CGI)更新了XML文件的数据,Flash的内部数据就能得到更新。
在此CGI把测量控制模块采集的数据(如液位值)以预先规定的XML文件格式动态生成XML送给Flash。Flash读取了这个XML文件后就解析文件,从标记<pv></pv>有解析出当前液位,从标记<sv></sv>中解析出设定液位。有了这两个值,Flash用脚本操作Flash元件间断的在预定的坐标上打点,就样就绘制出动态曲线图。
本次测试中的XML文件格式为:
<?xml version="1.0" encoding="UTF-8" ?>
<data>
<pv>41</pv> <!—--当前水位值---->
<sv>38</sv> <!—--设定水位值---->
</data>
图7:WEB调试结果 |
3 总结
上面几种技术的结合,实现了在B/S模式的工业检测、远程监视。基于CGI + AJAX + Flash的工业检测系统优于传统C/S模式的工业检测系统,主要表现在简单易用和易跨平台的操作上,由于不用再编写复杂的客户端软件,所以同时也降低了开发成本和开发周期。随着技术的完善,网络的改善,速度的提高,远程检测系统必将大力发展。
4 附参考程序
实验设备:
1 水箱
2 液位传感器、变送器
3 DDC AI模块:7016
4 ARM7嵌入式计算机
5 PC计算机