张 燕 任德均 廖湖锋
基于多线程的空压站远程监控系统软件设计
张 燕 任德均 廖湖锋
(四川大学制造科学与工程学院 成都610065)
基于多线程的空压站远程监控系统通过TCP通信与以STM32F103ZET6为MCU的微控制器进行数据交互,实时采集空压站内各设备运行状态、功率、压力等数据,利用多线程技术对数据进行处理、显示和保存,实现对空压站的实时在线监控。软件以C#作为编程语言,运行稳定、可靠,提高了空压站运行效率。
多线程 实时监控 TCP通信 SQL Server数据库 C#
空压机是将原动的机械能转换成气体压力能的装置,是现代工业化的基础产品,在各种行业中它担负着为所有气动元件、各种气动阀门提供气源的职责,空压站一般由空气压缩机、储气罐、空气处理净化设备、冷干机组成。目前,对空压站的监控还在采用人工抄表的方式,这样的监控方式浪费了大量人力,同时导致数据量少不连续、后期处理繁琐、数据查询周期不能确保等问题。日常对空压站的维修和保养也不全面,往往是空压站出现报警时才对其进行维修和保养。空压站远程在线监控系统实时采集多个空压站各点运行状态、功率、压力等信号;能够对空压站运行过程中出现的异常给予及时报警和提示;能够控制空压站的启停;能够通过制定空压站维修保养计划和维修保养记录来保障对空压站的定期维修保养,从而延长空压站各设备使用寿命。本文给出了一种基于多线程的空压站远程在线监控系统的软件设计。
空压站监控系统主要包括以下功能部分:数据采集、设备管理、用户管理、数据管理、电力管理、系统管理。
(1)数据采集,数据采集是空压站监控系统的核心部分,是设备管理和数据管理部分的依据。
(2)设备管理,设备管理包括空压站维修保养管理、空压站管理。空压站维修保养管理是详细记录空压站设备从安装到现在的维护、保养、维修等信息,便于后期设备的维护和快速维修,同时适时提醒用户对易损耗部件的及时更换,保证设备随时处于良好的运行状态。空压站管理是设置空压站报警设置以及远程控制空压站设备的启停和卸载。
(3)用户管理,为了系统软件的操作安全,系统设置了三级的操作员管理模式:系统管理员、普通管理员、操作员。每一级设定不同的密码进行保护,每一级的用户都具有不同的操作权限。
(4)数据管理,数据管理包括数据查询、图表分析以及报表打印功能。
(5)电力管理,电力管理功能是通过记录空压站设备的用电情况,实时监控和保存空压站内空压机、冷干机、电机等的运行状态下的工作电压、电流及瞬时功率。
(6)系统管理,系统管理包括系统操作日志、系统错误日志以及系统数据库自动备份功能。
整个系统由微控制器模块、上位机软件模块、数据库模块三个模块组成。系统框图如图1所示。
图1 系统框图
系统采用集散式监控系统,若干台微控制器终端分散到不同地点采集空压站运行数据,通过串口通信将监控数据上传给微控制器中控,微控制器中控通过TCP通讯将数据传给上位机软件,上位机软件具有集中控制管理功能,利用多线程技术对数据进行处理后实时显示并存储至数据库。
由于采集的数据种类繁多,包括空压站运行状态、系统管网压力、环境温度、空压机运行状态、空压机运行方式、空滤运行状态、油滤运行状态、油分运行状态、风机运行状态、变频器电压、变频器电流、空压机排气压力、主电机电流、压缩机头温度、冷干机运行状态、压缩机电流、输出空气露点值、输入水压、输出水压以及控制指令和上位机与微控制器内部交互指令,故通过自定义数据格式来承载所采集的数据信息和控制命令。数据帧格式如图2所示。
图2 数据帧
命令帧格式如图3所示。
图3 命令帧
用空压站地址来表示数据的来源和命令的去向,数据帧中若空压机的数量大于9则用大写字母A代表10,B代表11依次类推;设备运行状态用“0”代表停止,“1”代表运行,“2”代表故障;空压机运行方式用“1”代表变频运行,“2”代表工频运行;数字量如温度、压力、电流等使用16进制,其中温度高位代表其正负。数据帧和命令帧均采用两位和校验来验证数据的正确性。
由于使用Windows API编程非常繁琐且不易调试,本软件采用C#作为编程语言在Visual Studio 2010下编程。NET平台集成了大量的库类,使得程序员可以快速的编写各种基于Windows的应用程序。由于空压站总体参数较多,因此软件主界面由空压站主要参数监控界面、微控制器的通信状态、功能菜单栏及状态栏组成。软件主界面如图4所示。
图4 软件主界面
SQLServer数据库中建立了多张表,包括空压站信息表、空压机信息表、空压机耗能记录表、空压站参数记录表、空压机参数记录表、操作记录表、统计数据表及用户信息表。其中主要的空压站信息表包括空压站地址、名称、空压机数量、备注等字段;空压机信息表包括空压机名称、所属空压站、备注等字段;空压机耗能表包括空压机地址、名称、保存时间、空压机运行状态、空压机已运行时间、运行方式、该运行方式用电量、总用电量等字段;空压站参数记录表包括空压站名称、保存时间、运行状态、管网压力、温度等字段;空压机参数记录表包括空压机名称、保存时间、运行状态、排气压力、输入水压、输出水压等字段。利用微软提供的OLEDB应用程序接口来读写、查询数据库,实现对原始数据的读写、修改、查询以及输出功能;利用外键来保证数据的一致性和完整性;通过触发器来计算各类模拟量的统计值,如数据的最大值、最小值、平均值等,并将其存入统计数据表中,实现初略的数据统计功能。
数据处理流程如图5所示。软件启动后从数据库中的空压站信息表和空压机信息表中读取信息,初始化空压站类的对象实例。接着创建TCPListener对象,开启监听,当接收到微控制器连接请求时接受其请求并创建一个通信线程以接收数据。
图5 数据处理流程
本系统利用多线程技术,实例化了多个Thread类对象,分别为数据接收线程、数据处理线程以及数据保存线程。数据接收线程读取网络数据流的数据,并将其添加到数据接收队列中;数据处理线程将数据接收队列中的数据提取出来,数据通过完整性校验以及和校验后调用空压站处理函数,实现对数据的显示;数据保存线程负责将数据存入数据库。使用多线程技术将数据的接收、处理、保存分开,实现了数据的流水线操作。在有效利用处理器的多线程技术的同时,极大的提高了数据的处理能力和程序运行速度。
本文介绍了空压站远程在线监控系统的功能,并在此基础上详细介绍了系统结构设计及软件设计。系统投入现场使用以来,运行安全可靠、故障率低,有效提高了空压站工作效率和自动化程度。
[1] 西尔伯沙茨,科思,苏达尚等.数据库系统概念[M].北京:机械工业出版社,2003.
[2] 罗宾逊,内格尔.C#高级编程[J].第3版.北京:清华大学出版社,2005.
[3] Blakeley J A,Rao V,Kunen I, et al. NET database programmability and extensibility in microsoft SQL server[C]//Proceedings of the 2008 ACM SIGMOD international conference on Management of data. ACM, 2008:1087-1098.
[4] Nielsen P,Parui U. Microsoft SQL server 2008 bible[M].John Wiley & Sons,2011.
[5] Steve H A, John L B. VEHICULAR AIR COMPRESSION SYSTEM: U.S. Patent 3,688,859[P]. 1972-9-5.
[6] 许毅,冯山.使用C#语言进行多线程程序设计[J].计算机工程,2003,29(5):1-2,173.
[7] Robert Vieria著.马熠,孙皓译.杨大川审校.SQL Server 2008编程入门经典[M](第3版).北京:清华大学出版社,2010.
[8] 王靖,杨秀芹.空压机节能状况分析[J].煤矿机械,2002,(12):43-44.