王浩杰,张嘉琪,王 丽,王钟伟
(天津理工大学环境科学与安全工程学院,天津 300384)
近年来,工矿、化工企业普遍采用环境监测系统对生产过程中的环境数据进行采集并发出警报信息,以便工作人员及时采取防护止损措施。但这些环境监测系统普遍针对某一类特定场景环境设计,应用面窄、适用性差,环境场所变化势必会导致系统硬件资源与被监测环境因子不匹配;再者仅对采集数据进行单一阈值比较得到的警报信息不精确,无法对其作出针对性响应;其次传统有线数据传输方式复杂环境布线困难、不易维护,且线路易被腐蚀破坏,埋下安全隐患[1-2];最后传统监测系统普遍采用本地化数据存储方式,存储分散,未考虑各管理层次信息需求,缺乏数据共享能力,数据价值未能充分发挥出来[2]。针对以上传统设计方案不足,提出一种基于无线传输方式、以MySQL数据库为存储平台、具有可扩展性和分级报警机制的多场景环境信息采集和应用的监测系统。
如图1所示,多场景环境监测系统硬件分为上位机和下位机,上位机硬件使用一般计算机即可[4];下位机硬件设计主要包括气体传感器阵列采集模块,粉尘、烟雾传感器模块,温湿度模块、继电器稳压模块,无线通讯模块等。
图1 硬件系统结构示意图
监测系统传感器选择是硬件设计的关键。根据GBZ2—2002《工业场所有害因素职业接触限值》中粉尘容许浓度值,设计选用颗粒物分辨率在0.3 μm的PMS7003激光式传感器监测空气中PM1.0、PM2.5、PM10等浓度值;针对火灾预警监测,设计选用对粒径在1 μm以下粒子更敏感的蓝光式RESDA烟雾探测器;针对环境温湿度监测的范围和精度,选用HSTL-108WS温湿度变送器;针对系统多场景适用性和扩展性,气体传感器阵列设计选用硫化氢、一氧化碳、氨气、氮氧化物、氰化氢、二氧化硫、甲烷等10种电化学传感器,以满足复杂气体环境中低浓度目标气体监测。
监测系统程控界面主要由监控系统配置界面、环境数据采集界面、历史数据查询界面 3 部分构成,另外为保证系统运行安全,增加了系统登录和权限配置界面,针对不同用户分配不同的权限级别,只有拥有相应权限的用户才能访问相应的功能。监控系统设计结构功能图如图 2所示。
图2 软件系统设计结构功能图
使用环境监测系统时,用户首先需要进行系统登录,在系统登录界面输入密码正确后方可进入。系统会根据当前用户身份的不同,开放与其身份权限相应的菜单栏系统功能。针对初次使用或实际环境场所变更导致采集项需要改变的情况,用户须在场景监测配置界面完成监测项即传感器模拟通道的选择,设置合理阈值、报警级别和描述信息,亦可对系统当前配置进行更改、删除、保存、设置为下次系统启动缺省文件等操作,还可以加载系统以前或者用户先前编译的参数配置文件;环境信息采集界面完成监控系统的主要任务:智能识别通讯串口,采集选通通道传感器数据,并以图形化和表格方式显示,根据警报阈值判定监测项警报状态和级别,并以不同颜色显示在报警窗口,同时系统运行的错误信息会显示在错误窗口;环境历史数据查询界面针对不同权限用户提供了2种查询方式,用户可以根据本地TDMS文件名或远程数据表名查询一项或者多项通道采集数据,还可以设置数据加载量和起始位置,选择数据加载起止时间段,也可以按需进行组合条件查询,并可对历史数据进行保存到表格、打印等操作处理。
为了保证环境监测系统的安全性,避免非授权用户进行操作,为用户增添了系统登录界面,其采用权限分级管理方式设计,用户身份级别有管理员、专家和值班人员3种,当用户为后两者时,一些按钮和菜单栏功能处于锁定禁用状态。3种身份权限的具体区别见表1。
表1 不同身份级别与权限对应表
在完成用户身份权限匹配和登录密码校对工作时,系统读取名为Data的MySQL数据库Infor表中的数据。通过DB Tool Open Connection.VI打开数据源,数据源由connection information指定,链接DSN=MySQL[5]。打开系统数据源后,通过DB Tool Select Data.VI在其table输入端子中表名Infor,查找显示Infor表中数据,由Data输出端子返回查找数据。用户信息数据可由数组索引函数提取指定数据进行当前用户名的密码匹配和身份校验工作。若密码错误,则弹出提示“密码错误,请重新输入”;若用户连续输入3次错误密码时,会提示“错误次数超出限制,请联管理员确认密码!”;若密码正确,程序执行SQL语句“update Infor set Last Login Time=′当前时间′,Counter=′原次数+1′where user=′当前用户′”对登录信息更新,最后通过DB ToolOpen Connection.VI关闭释放Connection,结束数据库操作,完成监测系统的登录。而通过DB Tool Execute Query Data.VI执行SQL语句“update Infor set password=′新密码′,privilege=′新权限′where user=′当前用户′”可对当前用户的密码和权限进行更改。
场景监测配置功能仅对身份权限为管理员或专家的用户开放,其设计主要是针对首次使用系统或依据具体场景需要增加或删除采集项、更改报警阈值、配置警报级别等情况操作使用,完成监测项配置后,用户需对数据表进行管理。场景监测配置界面如图3所示。
图3 场景监测项配置界面及程序框图
用户可在配置界面自主选择22项监测通道,不仅可以在典型场景环境监测配置模板文件基础上进行修改生成配置文件,也可以根据具体环境自定义监测项,其实现过程是:用户点击“监测项Config”表格触发鼠标按下事件结构(Event Structure),调用表格控件“Point to Row Column”方法节得到被点击的单元格,检查被点击单元格是否属于“监测项”列,若属于则设置“通道选择”下拉菜单列表KeyFocus和Visible属性值为true、Position和NmdNumSize值为被点击单元格相应的行列位置和尺寸值,实现下拉列表“嵌入”表格控件,最后用户点选“通道选择”下拉菜单项触发值改变事件,调用表格“Set Cell Value”方法节点完成监测项的设置。警报级别配置也是同理。高高、高、低低、低4种报警阈值大小则需要用户根据相关标准或实际情况自行输入,而阈值的启用或禁止则需要用户通过右击表格控件调出的自定义菜单项进行可用或禁止配置。参数设置完成后,配置文件保存、先前已编译好的参数文件加载功能将通过文件I/O-XML各函数实现。文件名及存储位置、系统启动默认配置文件的设置,则需要用户通过点击“Save”按钮,在弹出的对话框中进行配置。
初次使用系统或监测项变更的用户在完成参数配置以后,还需要创建数据保存表。每个数据保存表可以包含一项或者几项环境数据。系统通过索引数组操作将参数设置表格控件的监控项列找出并赋值给字段名列表框ItemNames属性值,对应LabVIEW数据类型转化成MySQL字段类型,同时将字段名SelMod属性值设为3,即1项或多项模式。用户通过点击“Create”按钮,调用SQL语句“create table表名(id INT UNSIGNED not null AUTO_INCREMENT,date_time datetime not null,′字段名′字段类型,……,primary key(id),index(date_time))”,完成数据表的创建。改变Save Cycles数值调整采集数据写入数据表的间隔时间,Save Enable复选框表示是否使对应表名中监控数据存储到数据库中。
环境信息采集显示主要完成智能识别通讯串口、环境数据采集、监测结果显示,警报判断与分级显示等工作任务。环境信息采集显示界面如图4所示。
环境信息数据采集程序设计的关键在于程控界面与集成采集模块之间的通信,即通过蓝牙、ZigBee模块串口,利用VISA函数编程接口连接底层硬件设备[7]。传统监测系统普遍需要用户手动配置串口资源,本设计在此基础上提出优化程序-智能识别通讯串口。以粉尘传感器为例,其实现过程为:调用VISA查找资源函数搜索上位机所有串口信息,初始化关闭所有串口,然后将设备列表输入For循环,并通过串口配置函数配置串口,建立通讯连接,VISA 写入函数写入粉尘传感器采集指令,并等待传感器返回信息。系统通过 CRC校验返回数据的正确性,当发送与接收 CRC 校验码匹配时,循环停止,当前隧道最终值对应的串口资源名称即为粉尘通讯串口。
图4 环境信息显示界面
通信串口识别完成以后,数据采集循环会根据用户监测项的配置读取对应传感器通道采集值,并以队列方式送入数据记录循环,数据存储模块会依据数据库配置,利用SQL语句Insert into 表名(date_time,字段名,……,)Values (当前时间,采集值,……)将环境数据写入数据库。
采集数据需要与阈值对比,判定警报状态和级别并以不同颜色显示在报警窗口,以待用户确认。其过程首先利用索引数组函数将“监测项Config”控件中每个监控项的4种阈值及其对应的是否可用信息提取出来,然后采集到的数据与4种阈值进行大小比较得到对应的警报状态(Disconnected、LowLow!!!、Low!、HighHigh!!!、High!)和级别(Fatal!!!、Severe!!、Warning!、Error!、Infor),最后通过给警报窗口CellFontColor属性节点赋不同颜色值的方法将信息分级别显示在警报窗口中。Fatal!!!为红色,Severe!!为橙色,Warning!为黄色,Error!为蓝色,Info为正常黑色。若警报处理机制为Manual模式,则“警报处理…”按钮Disable属性参数为0,用户可对鼠标选中的警报项或All警报项进行确认。若确认后报警仍然存在,则以灰色显示;若为Auto模式,则“警报处理…”按钮Disable属性参数为2,窗口中只要存在未被确认的警报,Alarm灯就会不停闪烁。所有的警报信息都会通过SQL语句Insert into Alarm(时间,报警项,值,状态,级别)Values (′当前时间,′项名′,′监控值′,……)写入数据库。
环境监测系统数据查询界面为数据后期管理设计。为解决传统监测系统侧重现场实时监测数据,历史实时数据不保留或保留时间短,存储分散,需要人工定期发送数据等弊端[7],本系统在本地TDMS文件存储的基础上搭建了远程MySQL数据存储平台,环境信息将通过数据记录循环依次写入数据库,从而满足企业各管理层次需求。与之相应,系统针对用户身份级别设计了本地和远程2种方式用于查询历史环境数据,并写入表格、绘制历史曲线图,通过打印按钮实现历史数据报表输出。远程MySQL数据库查询界面如图5所示,为企业管理人员提供了较以往系统更细致全面的功能,提供警报信息查询、日期查询、具体监测项查询、组合查询、样本间隔设置等多种查询方式,便于用户查询管理数据。
图5 云数据查询界面
用户首先选择存储监测数据的MySQL数据库对应的数据源名称和表名,然后点击Items form table按钮,执行“desc′表名′”语句得到数据表字段信息,再经过索引数组,删除数组元素操作得到监控项并将其赋值给Items列表框的ItemNames属性参数,这样用户就可以按住Ctrl或Shift键自主选择想要查看的监控项,通过执行SQL语句“select id,date_time,′项名1′,′项名2′,…… from总表 where date_time>=′开始时间′and date_time<=′结束时间′ and mod(id,样本间隔)=′商数′order by date_time”,得到指定起止时间段和样本间隔的历史数据,最后经过数组操作将数据表以波形图表显示出来。Select * from Alarm where 报警项 like ′项名′;实现某一监控项的历史警报信息的查询。Select * from Alarm where 级别 like ′Fatal!!!′;实现某一警报级别所有报警项信息的查询。组合查询是按警报级别和按日期查询的综合,用户可任意匹配组合查询方式,功能实现是通过select * from Alarm where 级别 like ′*** ′ and 时间 like ′*** ′语句对 Alarm表操作完成。数据打印功能将依托编程-报表生成中各函数实现。
多场景环境监测系统设计完成实际应用之前需要对其进行功能测试,搭建了一个如图6所示的测试平台。开始测试之前先用零空气吹扫气室,然后用真空泵向有机玻璃制成的容积为125 L的正方体密闭箱按比例注入待测气体,待混合均匀后,在上位机对测试环境进行参数配置,开启空气泵将待测气体抽入传感器组气腔中进行监测,并同时由程控界面显示,观察MySQL数据库中各表数据是否更新,依次排查密码修改、权限配置、实时曲线/柱状图、数据查询、报表打印、帮助等各项功能是否正常运行。通过测试,本系统在场景适应性、可靠性及本地TDMS、云MySQL存储查询方面均达到设计要求,具有较强的实际应用价值。
图6 系统功能验证测试平台
文中所述基于LabVIEW的多场景环境信息监测系统具有以下特点:
(1)基于“模块化”思想设计、可扩展性的采集设备配合上位机传感器选通通道自主配置功能,使系统实现环境因子与硬件资源的匹配,能够适用于大多数环境场所;
(2)无线数据传输方式避免了冗繁布线工作带来的安全隐患,组网简便且通信稳定;
(3)权限分级设计避免了非授权用户的非法操作,保证系统运行的安全性;
(4)分级报警机制提供的精确警报信息对管理层提出针对性响应措施有一定指导意义;
(5)远程数据库存储和查询平台实现现场应用与管理执行层应用系统之间的数据共享,更大程度地发挥环境数据价值,提高企业信息化能力。