朱晓骏,董黎刚
(浙江工商大学信息与电子工程学院,浙江杭州310018)
随着社会的发展,许多公司的产品都会远销到全国乃至全球各地。对于传统的串口设备而言要远距离进行实时监测显得非常麻烦。一般对于这个问题都是派遣工程师直接去现场进行监测,或者是安装特定的客户端软件来对串口设备进行实时监测。但是这两种方法都有一定的弊端,都不同程度的受到地域和工作环境的限制。为了解决这个问题,人们很快提出了基于B/S模式的解决方法。其实B/S模式在监测方面的应用已经不少,比如在流变仪,湿度计的监测方面已经有了相关的研究[1、2]。本文主要介绍将其用于串口设备的实时监测中。该系统能够将串口设备所采集的数据实时反应在浏览器端的动态图上。可以做到随时随地只要能上网就可以监测到你想监测的串口。
本系统主要有两个大的模块构成,如图1所示,一个是面向串口端的数据采集模块,另一个就是面向用户端的数据显示模块。两个模块并不直接通讯他们的数据交换通过对同一个数据库的操作来实现。这样一来有两个好处,一是数据都被保存了下来,保证了在今后做整体数据分析的时候有完整的数据源。二是在今后扩展控制模块的时候所有命令也是作为数据放入数据库的,以便于日后的调试以及现场的再恢复。
图1 系统功能结构图
数据采集模块会在串口有数据的后会立即将串口的数据读取下来,然后实时地存贮到数据库里面去。而在数据显示模块会以一定的周期去访问后台的数据库读取模块,从而得到最新的数据库信息,然后将它以图的方式显示在浏览器上面。
整个系统硬件上的构建主要核心部分是由两个服务器和一个数据库构成,如图2所示,面向下位机的服务器主要完成接收串口数据并写入数据库的功能,而上位机服务器主要实现的功能是访问数据库并根据要求查询并返回所需的内容。
图2 系统各部分关系图
2.1.1 串口接入网络的实现
串口设备作为一种典型的传统设备,要将其接入网络是势在必行的。本方案初步拟定采用HLKWIFI-RS232M01[3]设备将串口转换成无线网口然后接入网络,如图3所示,串口采用硬件RTS/CTS[4]流控。
图3 HLK-WIFI-RS232M01模块
2.1.2 串口端服务器的实现
(1)服务器连接数据库
串口端服务器采用C语言来实现,通过标准的ODBC访问数据库,数据库采用SQL Server。
将访问数据库的操作封装成函数提供给其他函数调用,在此函数中实现数据库的链接以及向数据库中插入数据。
(2)服务器链接串口设备
如上所述,串口设备已经通过HLK-WIFI-RS232M01转换为标准的网口,所以这里对串口的操作即对网口的操作。本方案采用标准的TCP协议[5、6]来实现,通过标准的socket[7]套接字与串口的链接。在服务器创建一个主循环用于listen()[7]新的链接。一旦发现有新的串口设备链接到服务器。便为其创建一个新的进程,在这个进程中将调用上述封装好的链接数据库的函数。从而实现将串口数据存入数据库的目的。
2.2.1 web 端后台的实现
web端选用JSP作为后台,在JSP后台中实现对数据库的链接以及数据的查询。后台每当被访问一次便会主动的访问数据库一次,并且通过辨别时间戳来读取数据库的最新的数据返回给客户端。由于考虑到后台程序会被频繁的访问,所以采用ajax[8、9]技术实现数据的传输。这样只需要局部的刷新数据而不用刷新整个页面。并且考虑到ajax用纯JS来实现的话比较繁琐,本方案采用的是JQuery[10]封装好的ajax。
2.2.2 web 端前台的实现
web端的前台实现的主要的功能便是返回一张能实时反应当前串口状态的图。这张图以时间为横轴,串口的状态数据为纵轴,能够实现数据的动态更新。
在本方案中,采用免费的第三方控件flot[11]来实现图形的绘制,采用setTimeout()函数来定时的访问后台程序这样以来就可以实时的得到数据库中最新的串口的信息。在flot中是将整个图形的以点集的方式保存在一个数组中。后台返回的数据会被转换成点的形式,然后将原来点集中的第一个点抛弃,并将所有的点前移一位,最后将最新获得的那个点插入到点集的最后,这样便有了一个新的点集。然后通过flot内部方法flot.setData()来实现图形的更新。这样一来每当setTimeout()被触发的时候就会访问一次数据库并带回一个最新的数据,然后实时动态的显示在图形了。这样就实现了图形的动态走动,从而达到实时监测的目的
通过测试来说明本方案的效果,浏览器的截图上面的数据实时地反应了串口写入数据库的数据的内容,如图4所示。
图4 web浏览器效果图
本文提出的在B/S模式下对串口的实时监测,可以让对串口的监测不在受到时间和地域的限制,只要能上网就可以随时随地进行。这样一来对于传统串口设备的监测可以更加的灵活。而且因为本文提出的串口数据是由数据库保存的,这样一来,今后不仅可以看串口数据的实时图,在此基础上还可以根据数据库保存的数据制作出长时间范围内的串口数据的走势图,以及进行更进一步的数据挖掘,从而更好的实现对串口数据的监测。本方案中的所有接口均使用的标准接口,可以很容易的将文中所涉及的服务器构建在任何平台上,以及可以将2个服务器以及数据库分别构建在不同的机子上,这样一来可以也可以方便管理和维护。最后本文提出的根据网络来对传统设备进行监控也将是今后发展的一个趋势。
[1] 基于B/S模式的湿度计在线监控系统设计.博硕教育[EB/OL].http://www.boshuo.net/2011/0328/155716.html,2011-03-28.
[2] 姜云霞.转矩流变仪远程监测系统的设计与研究[J].计算机测量与控制,2010,18(3):515-558.
[3] 海凌科有限公司.HLK-WIFI-M03说明手册[R].香港:海凌科有限公司,2010.
[4] 清水绿竹.RTS和 CTS流控介绍[EB/OL].http://hi.baidu.com/%C7%E5%CB%AE%C2%CC%D6%F1/blog/item/5c399d3aa109a93396ddd8cf.html,2010 -11 -09.
[5] 特南鲍姆.潘爱民 译.计算机网络[M].北京:清华大学出版社,2004:454-470.
[6] 樊月华.web技术应用基础[M].北京:清华大学出版社,2009:4-15.
[7] 范文庆,周彬彬,安靖.Windows API开发详解——函数、接口、编程实例[M].北京:人民邮电出版社,2011:497-509.
[8] 潘国荣.基于Ajax技术的JSP页面中模糊查询的设计与实现[J].电脑知识与技术,2011,7(12):2 837-2 838.
[9] 百度公司.百度百科[EB/OL].http://baike.baidu.com/view/1641.htm,2011 -07 -16.
[10] 李刚.疯狂 Ajax讲义——Prototype/jQuery+DWR+Spring+Hibernate整合开发.[M].北京:电子工业出版社,2009:385-386.
[11] IOLA 公司.flot[EB/OL].http://code.google.com/p/flot/,2011 -07 -16.