文献标识码: A
DOI:10.16157/j.issn.0258-7998.180540
中文引用格式: 张姗,刘笑凯,王超,等. 基于国产化平台监控软件的设计与实现[J].电子技术应用,2018,44(10):140-143,148.
英文引用格式: Zhang Shan,Liu Xiaokai,Wang Chao,et al. Design and implementation of monitor software applied on native platform[J]. Application of Electronic Technique,2018,44(10):140-143,148.
0 引言
监控软件是工业控制系统的一个重要组成部分,是实现自动化运行管理的关键部件,其可以实现对业务系统中关键信息处理设备的数据流监视记录、工作状态检测、故障定位和参数设置等功能。但目前监控软件大部分是基于国外的基础软硬件(如Intel处理器、Windows操作系统、Oracle数据库等)研制开发的,存在核心技术受制于人的安全隐患[1]。2013年“斯诺登事件”爆发后,核心软硬件的国产化倍受重视[2]。
基于以上背景,本文提出一种基于国产龙芯处理器和国产麒麟操作系统的监控软件,集成了监视业务、数据实时显示、存盘和查询、故障报警以及对关键信息处理设备的配置管理等功能。该监控软件可部署于工业控制系统中,为关键信息处理设备的安全运行提供保障,在提升自主可控水平的同时,更杜绝了因为对国外核心零部件的依赖所导致的信息安全隐患,满足了核心领域高信息安全、高自主可控的服务需求。
1 国产软硬件平台
监控软件的设计立足于国产关键软硬件,利用自主优势,提升工控系统稳定性和可靠性。
1.1 硬件平台国产化
硬件平台采用国产龙芯3AMini-ITX主板,它是一款符合Mini-ITX标准的台式机主板。其搭载具有国产自主知识产权的龙芯3A处理器[3],内存为4 GB×2,硬盘为2 TB,支持先进的计算技术与动态频率变换,及低功耗芯片组与附件,基于Linux内核的桌面方案,可用作小型服务器,满足监控软件性能需求。
1.2 软件平台国产化
操作系统是管理和控制计算机硬件及软件资源的计算机程序,它是运行在机器上最底层的系统软件。操作系统也是普通用户最常使用的计算机接口,同时也提供计算机硬件和其他软件的接口[4]。它最大的功能在于为其他应用软件的运行提供支持,使计算机系统的资源得到最大化利用。正因为操作系统有着这些特点,实现操作系统自主可控的重要性不言而喻。
该国产硬件平台搭建国产银河麒麟Linux操作系统,平台内所含软件全部自主开发,所有应用软件均自主编写,做到完全自主可控。
2 监控软件的设计
2.1 软件组成
监控软件以平台化、层次化、模块化设计为原则,基于国产操作系统,主体采用C++语言开发构建。监控软件总体架构包括以下4个层次:界面层、业务层、协议层、接口层,如图1所示。
界面层提供监控软件对自身运行状态的监控展示界面、对关键信息处理设备的配置管理界面、日志查询界面、命令解析界面、任务执行情况监控界面、系统运行维护的操作界面。
业务层是核心功能层,实现监控软件的主体功能,包括以下几个子功能:命令调度、配置管理、业务管理和查询管理。各功能模块需要使用的底层封装接口由接口层具体封装实现。
协议层实现对协议的解析处理,包括配置协议、管理协议和查询协议。
接口层根据上层业务调用的需要,实现网络通信接口、数据库访问接口和语音接口功能,为上层业务提供统一的调用接口,满足上层业务处理模块与具体实体类型进行接口隔离的设计要求[5]。
2.2 模块设计
(1)用户界面模块
用户界面模块提供用户操作界面,是用户与监控终端的接口界面。
(2)用户命令解析模块
用户命令解析模块是用户界面模块和业务层各模块之间的接口控制模块,解析、执行用户提交的各种命令,如获取基本参数、配置基本参数、获取设备信息、上报设备状态等。
(3)命令调度模块
命令调度模块是对配置命令进行管理调度的模块。
(4)配置管理模块
配置管理模块包括对监控软件的配置和对关键信息处理设备的配置两部分,对参数、策略等配置任务和设备信息进行组织管理。
(5)配置协议模块
配置协议模块封装对关键信息处理设备的各种配置命令。
(6)业务管理模块
业务管理模块管理进出关键信息处理设备的各类业务数据。
(7)管理协议模块
管理协议模块是具体解析各类进出关键信息处理设备的业务数据以及关键信息处理设备上报的状态信息和日志报警信息。
(8)查询管理模块
查询管理模块实现对收到的出入数据、日志信息和报警信息进行查询。
(9)查询协议模块
查询协议模块封装查询信息,将其发送给数据库接口模块处理。
(10)数据库接口模块
数据接口模块对底层的数据库操作进行封装,对上层模块提供数据库访问接口。
(11)网络通信模块
网络通信模块接入通信业务专网,完成与关键信息处理设备之间的网络数据传输功能。
(12)语音模块
语音模块实现对报警信息的语音播报功能。
(13)程序框架模块
程序框架模块提供监控软件的程序框架,组织各个模块功能,实现软件架构的平台化、层次化、模块化开发。
3 监控软件的实现
3.1 跨平台设计的方法
采用QT开发框架,用高性能的C++语言开发,使得系统一次编码,能在所有平台运行,完美地支持Windows各个版本和麒麟Linux操作系统。
3.2 多线程处理程序方法
监控软件的信息来源通常包括业务接收数据、业务发送数据、时统数据、日志上报数据和监控命令。这些信息同时以不同的频率通过组/广播的方式被转发到数据处理中心的主干网上,它们属于不同的组/广播。监控软件从主干网上接收这些信息,通过信息校验及解析,最终需要把所有信息以表格的形式直观的显示出来。监控软件作为关键信息处理设备状态监控的依据,显示的数据必须全面无漏点,因此,对其可靠性和实时性要求较高[6]。
由于信息源发送信息的并行性,设计多线程数据处理模型,提升软件的运行效率[7]。设计每个信号源对应一个多线程数据处理模型,从而保证数据接收、处理和显示的实时性。多线程数据处理模型如图2所示。
多线程数据处理模型包括一个数据接收线程、一个数据解析线程和一个数据存储线程,采用的是生产者与消费者模型。
数据接收线程只做一件事,即将接收到的数据立即放入先入先出队列(FIFO),同时给数据解析线程发送信号,然后继续等待接收数据,接收线程永不阻塞。
数据解析线程接收到数据接收线程发送的信号量后,从FIFO队列中取出一帧数据进行解析,根据不同的协议比对,最后解析成程序可操作的数据,然后将数据更新到显示用的缓存中,并保存到数据库用的缓存中。至此并不直接显示,亦不立即写数据库。数据解析线程亦没有等待时间,继续处理下一帧。
数据存储线程每隔n ms,将显示缓存中的数据更新到界面上;每当数据量到了一个阈值,一次性保存到数据库。
这种批量操作大大提高了整体效率。整个数据的接收、解析、显示和保存都是各自异步工作,没有等待,没有阻塞,从机制上保证了数据的实时处理能力,能有效应对数据量峰值,保证程序稳健地运行。
此外,多线程数据处理模型中多个线程独立工作,线程之间松耦合,带来的程序可维护性极高。并且各个信号源也是独立的线程,互相独立工作,进一步提高了程序稳健性和可维护性[8]。监控软件数据接收线程、数据解析线程和数据存储线程工作示意图如图3所示。
3.3 面向对象数据处理方法
由于数据种类繁多,对接收的数据需要分类存储和显示。为保证实时性,采用数据接收层、处理层和展示层分离的方式,设计数据接收类、数据解析类和数据显示类。
其中数据接收类从组/广播地址中接收数据,保存到先进先出队列,供数据接收线程调用。采用信号量机制自动触发数据解析线程。
数据解析类按照不同的数据帧格式解析数据并存储,供数据解析线程调用。
数据显示类是基于多文档应用程序创建的多个窗口显示类,属于主线程类。由于数据接收类、数据解析类和数据显示类属于不同线程,如此可以充分发挥计算机的并行处理能力,大大提高软件数据处理与显示的效率。
3.4 分数据库存储方法
数据存储采用SQLite数据库。SQLite数据库是轻量级、跨平台的关系数据库,实现了自给自足、无服务、零配置和事务性的SQL数据库引擎。SQLite事物是完全兼容ACID的,允许从多进程或线程安全访问,便于对进出关键信息处理设备数据的存储操作[9]。如何高效使用数据库以及设计数据库结构是软件实现中的一个难点。
由于系统是全天候运行,产生的数据量极大,对于一般的软件系统,会造成数据库臃肿,最后导致查询和写入效率急剧降低,影响系统的正常运行。
针对该问题的解决方案是采用分数据库存储,即数据库按日期存储,数据库名格式为YYYY-MM-DD,这样有效降低了数据库臃肿问题。并且每个数据库中的表是按照组/广播通道保存的,即每个组/广播通道有单独的数据库表,便于快速地写入和查询。
监控数据是典型的时间序列数据,即按时间顺序产生、存储和查询。针对其数据特点,查询检索是以时间区间为条件进行的,查询某个参数在某段时间内的所有数据[10]。
4 监控软件的应用
在实际工业控制系统中搭建应用环境,应用数据配置情况如表1所示。
软件应用结果表明,软件能够正确接收出入信息并显示、存盘,同时对关键信息处理设备进行相应的控制操作,对各种数据窗口和分页面进行切换测试,反应时间均小于1 s。软件运行前后计算机性能比较见表2。在软件运行时CPU占用率最大为15%,内存占用最大为1.16 GB。
图4为实际测试时截取的软件主界面运行效果图,通过表格的方式实时显示出入数据、报警信息和日志信息,通过树状列表的方式显示当前在线的设备。图5为对业务发送数据的查询。通过右键单击设备列表中某固定设备,可以对其进行配置管理。
5 结论
本文通过选取国产龙芯3A处理器和国产麒麟操作系统实现软硬件平台的自主可控,通过设计多线程处理模型、设计数据库模型、利用面向对象编程方法,实现监控软件性能的提升。实验结果表明,采用本文中软硬件平台设计的监控软件安全性高、可靠性强、操作便捷。目前,该监控软件已运行于某工业控制系统中。
参考文献
[1] 刘嘉栋,张涛,昂正全.地面站远程监控系统的设计与实现[J].飞行器测控学报,2010,29(3):25-28.
[2] 马书磊,田洪娟,刘丰.一种基于龙芯平台的安全防护网关设计与实现[J].信息网络安全,2016(9):196-201.
[3] 吴蓬勃.龙芯3A处理器在某军用系统上的应用研究[J].电子技术,2014(2):32,38-42.
[4] 王录恩.多处理器系统监控的研究与设计[D].合肥:中国科学技术大学,2011.
[5] 刘金梅.基于B/S架构的嵌入式Web远程监控系统的研究与实现[D].内蒙古:内蒙古大学,2012.
[6] 刘厚智.基于C/S的气象卫星测控站监控系统的设计与开发[D].广州:华南理工大学,2011.
[7] 童艳,朱丹.测控数据实时监测软件设计方法研究[J].计算机测量与控制,2017,25(1):101-104.
[8] 董房,刘洋,王储.一种卫星遥测在线状态监测及分析系统的设计[J].电子科学技术,2015,2(5):32-36.
[9] 李苒.数据库中间件在航天地面应用系统中的应用研究[D].西安:西安电子科技大学,2010.
[10] 杨悦.基于海量卫星测控数据存储与查询方法[J].科学技术与工程,2013,13(25):72-76.
作者信息:
张 姗,刘笑凯,王 超,郝克林
(华北计算机系统工程研究所,北京100083)