基于LabVIEW和RS-485总线的恶臭气体检测系统*
2017-11-03刘伟玲冉多钢杨彩双丰柱坤
刘伟玲,康 磊,冉多钢,杨彩双,赵 哲,丰柱坤,王 召
(河北工业大学机械工程学院,天津 300130)
基于LabVIEW和RS-485总线的恶臭气体检测系统*
刘伟玲*,康 磊,冉多钢,杨彩双,赵 哲,丰柱坤,王 召
(河北工业大学机械工程学院,天津 300130)
恶臭污染作为空气污染的一种给人们生活带来了巨大的影响。所以,研制一套能够准确反映环境污染情况的恶臭污染检测设备具有重要的现实意义。本文设计套以多传感器阵列为基础,可实现对宽浓度范围恶臭气体进行检测的电子鼻设备。该设备可根据不同地区污染气体种类的不同而选择相应的气体传感器,实现对不同成分、不同浓度的恶臭气体的检测,具有良好的适应性。该设备已经能够正常工作,并具有精度高、稳定性好的特点。尤其是可自由组合式传感器阵列的系统设计框架,为系统根据实际环境需要而进行调整提供了极大的灵活性,具有一定的参考价值和应用前景。
电子鼻;RS-485;总线通讯;恶臭检测
空气是人类赖以生存的因素之一,空气污染的危害性也成为最近的热点之一,随着国家对环境保护力度的加大,空气环境监测任务也越发重要[1-2]。电子鼻在恶臭检测中的优势逐渐显现,它成为了近年来恶臭检测领域研究的热门方向[3]。虽然现阶段国内一些公司企业设计了气体检测仪器,但检测气体成分单一,不能满足大范围的空气实时监测任务。RS485总线通信方式使用1对双绞线实现多点双向通信,具有硬件设计简单、成本低廉等优点,同时RS485只定义了用于平衡多点传输线的驱动器和接收器的电特性,用户可以根据自身要求建立高层通信协议,因而被广泛用于工业控制系统[4]。
本设计研发一种基于RS-485总线的、多传感器模块的恶臭气体实时在线检测系统,各个传感器信号通过RS-485总线汇总,可实时检测多种恶臭气体浓度。
1 系统总体设计
本系统采用“上位机-中位机-下位机”三级组合的系统架构。上位机作为系统的运算处理单元,负责系统控制、人机交互以及数据存储和运算工作,采用工控机。下位机为系统的智能采集单元,需要完成数据采集与增益调整的功能。中位机为系统数据传输单元。其中,上位机通过UART接口接收数据[5],它与中位机的通信是点对点的模式[6-7],而中位机与下位机之间为多机通信,采用一主多从的工作方式[8-9]。系统总体设计方案如图1所示。中位机有两个通讯模块,通讯模块一用于与上位机通信,可用RS232通信或RS485通信实现;通讯模块二用于与多个下位机通信,可用RS485或CAN通讯实现。
图1 系统组成示意图
图2 下位机程序功能流程图
2 软件设计
系统需要两级通讯连接:一级是中位机与下位机的通信,另一级是中位机与上位机的通信。中位机与下位机的通信,采用一主多从式的工作方式和星型拓扑的结构,属于多机通信;而中位机与上位机为点对点的通信模式。
2.1 中位机与下位机的通信
2.1.1 下位机软件
下位机作为系统的智能采集单元,需要完成数据采集和增益调整的功能,并且与中位机进行通信,下位机程序可分为模数转换、增益调整、数字滤波、数据通信4个模块。下位机程序流程图如图2所示,下位机软件代码分布于定时器中断、串口中断、主程序3部分。其代码优先级由高到低依次为:串口中断、定时器中断、程序主循环。3个部分的程序是3个独立进程,由各进程之间相互配合完成下位机的工作,三者之间通过全局变量通信。
图2(a)为下位机定时器中断函数的代码处理流程。定时器设置为2 ms自动重装工作。每次触发中断都检测ADC转换完成标志位(AIE寄存器的bit5),如果转换完成,则读取AD值至全局变量G_Current_Ad(long型),并置位AD更新标志位G_AD_update(char型),此时ADC自动开始下一次转换。完成AD读取后还需处理串口倒计时的工作。串口倒计时变量G_Rs_dly_ms(char型全局变量)由串口中断赋值,每次触发定时器中断都会对该变量检测,当变量为0时打开串口接收器,否则变量减1。通过设置该变量值,便可以2 ms为单位控制串口接收功能的关闭时间。
图2(c)为主程序执行流程图。初始化函数完成整个下位机工作状态及所用到的变量的初始化设置;主循环完成的主要任务为:温度采集、读取AD、增益调整、数字滤波、调试命令处理。AD读取模块通过检测标志位信号G_AD_update来判断是否有新数据产生。若有,则执行增益调整函数并进行数字滤波,最后清除标志位信号。增益调整代码封装为Gain函数,形参引入系统当前增益值current_gain(char型变量),设置完新的增益之后程序返回新增益值赋给current_gain。出于保护ADC的原因,当增益调整函数不正常时将PGA设置为0(增益=1)。数字滤波代码封装为IIR_filter函数,输入为G_Current_Ad,输出为经过IIR滤波并且对AD与PGA进行整合了的31 bit长度的AD数据,存入G_IIR_Ad(long型全局变量)。温度读取函数功能简单,只需按照18B20规定的协议通信即可。
图2(b)为串口中断函数处理流程,其主要为通信功能的代码,完成通信串口开关的时序,以符合已制定的通信协议。当串口接收到地址时首先给G_Rs_dly_ms赋值4(设置关闭串口接收时间为8 ms),并关闭串口接收器。如果接收的地址码正确,则将G_IIR_Ad、G_current_temp变量及对应的地址按照协议规定的格式组成数据帧发送出去。
2.1.2 中位机软件部分
中位机是整个系统的数据传输单元,为三级架构两级通信的中枢,负责将下位机采集到的数据组合后传送给上位机,同时还负责接收上位机发送的命令来控制气路。该程序在结构上分为总线检测、数据汇总、数据上传以及命令解析与执行4个功能模块。
总线检测功能模块实现对系统中所使用下位机地址的获取。数据汇总功能模块根据总线检测获得的下位机地址列表向下位机总线发送地址,然后采集数据,并完成汇总。命令解析与执行模块完成对上位机命令的解析和处理,具体包括对气路控制和获取传感器数量命令的执行。对于上传数据命令,则由数据上传功能模块执行。中位机软件流程图如图3所示。
图3 中位机软件流程简图
数据汇总过程中中位机需要完成下位机地址发送、接收下位机数据并校验、数据组合存储3个工作。中位机以10 ms的间隔向下位机逐个发送“传感器地址数组”(Add数组)中存储的Ch_num个下位机地址,来完成下位机地址发送。然后中位机在接收下位机上传的数据时,每收到一个字节触发串口中断一次,中断服务函数将该数据存入数组索引指向的BUSBUF中的元素,并将索引加1,当缓冲区索引=7时表明一个数据帧接收完毕。在数据组合存储方面,中位机设置一个发送缓冲区SENDBUF用以存储准备向上位机发送的数据。并且在BUSBUF与SENDBUF之间增加一一个数据过渡的缓冲区DATABUF,以避免程序在向上位机发送数据时SENDBUF内容被修改。当BUSBUF收到数据帧时则会执行和校验,对于和校验正确的数据则存入DATABUF中与地址对应的位置,在完成了数据由BUSBUF向DATABUF的拷贝后,判断所有地址是否发送完,若发送完,则证明DATABUF数据是已经全部更新,然后通过对SENDBUF更新标志与数据上传状态的判断来实现延时更新SENDBUF的功能。
2.2 中位机与上位机的通信
2.2.1 上位机软件部分
上位机程序分为接口程序和数据处理程序两部分,其中与中位机进行直接交互的是接口程序。中位机把采样数据帧和应答帧传送给接口程序,接口程序进行和校验后再传给数据处理程序;数据处理程序把气路的操作命令传给接口程序,接口程序生成命令帧再传送到中位机。接口程序设置了一个用于接收数据处理程序发送的气路控制命令的输入接口和可用于读取采集数据的数据输出接口。接口程序主功能流程如图4所示。
图4 接口程序工作流程
接口程序以固定的频率向中位机发送数据采集命令帧,来控制中位机以固定频率发送数据。这个固定频率由设定的定时标志来实现,由于上位机与中位机之间为半双工通信,所以定时时长需大于接收数据的时长,且接口程序在等待接收数据时禁止发送其他命令帧。
为了保证准确接收数据,接口程序会对接收数据的长度和时长进行判断。若在规定时间内字节数没收齐则认为接收超时(中位机错误),若接收字节数超过采样数据帧长度,则认为通信线缆受到干扰。这样大大提高了总线的抗干扰能力,有效识别通信过程中因受到干扰而造成的通信数据错误。
2.2.2 中位机软件部分
在中位机软件设计中,与上位机的通信相关的有命令解析与执行模块和数据上传模块等。上位机发送的命令帧由串口1中断服务函数进行接收和有效性校验。命令解析与执行模块完成对有效命令码的解析,并且执行回复应答帧的命令(气路控制、传感器数量)。对于上传采集数据的命令则通过返回值形式交由数据上传模块执行。数据上传模块根据气路控制程序返回值判断是否发送“待发送数据缓冲区”的内容,从而实现回复CH_ DATA(采集数据帧)的功能,数据上传函数流程图如图5所示。
程序通过变量send_lenth记录需要发送数据的剩余长度,send_lenth默认为0。当检测到命令解析函数Comand_response返回1(收到上传数据命令)时,send_lenth被赋值为Data_Lenth(见式(1))。然后。当以send_lenth为索引发送SENDBUF数组中的一个字节后,send_lenth长度减1。
主循环中每次都会执行数据上传函数,每次执行数据上传函数只发送一个字节,这样SENDBUF中数据会分布在多次程序主循环中发送出去。在后续的程序主循环中需要检查前次程序主循环的字节发送状态,分别判断是否发送完了上一个字节(查询TI是否为1)和是否还有剩余未发送字节(send_lenth不为0),如果两个条件均成立,则发送数据;当判别上一字节未发送完(TI=0)时,直接返回(此轮循环不发送数据,send_lenth不变);当判别send_lenth=0时,表明一帧数据已经发送完。此时,在等待最后一个字节发送完毕后,表示响应完了上位机的发送数据命令,因此需要打开串口接收器,以接收下一个命令帧。
图5 数据上传函数处理流程
3 通信协议
通信协议分为数据汇总协议和系统控制协议。数据汇总协议指中位机与下位机通信所使用的协议。系统中的下位机通过总线接收和发送数据,每个下位机在总线中都有长度为1个字节的唯一地址,地址是十六进制的数字,范围1~31。中位机以10 ms的间隔逐个发送挂载在总线上的下位机地址,发送完毕后即进入数据接收状态;下位机默认监听总线数据,当监听到自己的地址后,将所采集的数据以数据帧的形式在8 ms内发送至总线,如监听地址不对,则不响应[10-11]。下位机发出的数据帧由7个字节组成,如表1所示。前4个字节为经过初步处理的long型传感器数据AD_DAT,为ADC采样数据(24 bit)与PGA增益(7 bit)的组合。数据帧第5字节存储温度值,数据为char型变量。第6字节为通道号,即传感器地址。第7字节为数据校验和。
表1 下位机数据帧格式
系统控制协议指中位机与上位机进行交互的协议。上位机与中位机之间以数据帧的形式进行数据通信。上位机发出的数据帧为命令帧。长度两个字节,第1个字节为十六进制的操作命令码,第2个字节为十六进制校验和。中位机回复的数据帧有两种:第1种为命令应答帧,由两个字节数据组成,结构与上位机的命令帧相同;第2种为采集数据帧CH_DATA,其长度由系统使用的传感器数量而定,可由式(1)获得。
Data_Lenth=Ch_Lenth×Ch_Num+1
(1)
式中:Data_Lenth为一帧数据长度,Ch_Lenth为单个通道(单个下位机)数据长度,Ch_Num为系统实际使用的传感器数量。CH_DATA由所有通道的数据按顺序排列而成,最后一位为前面所有通道数据的校验和。CH_DATA中单个通道的数据由6个字节组成,其结构与表1所示结构的前6个字节相同。上位机除了控制中位机传输采集的传感器信息外,还需通过中位机实现控制气路、获取传感器数量等操作。
4 测试
测试界面是一个用于测试系统的人机交互界面[12],按功能可划分为4部分。图6中左侧框体显示出5条传感器输出信号的反应曲线(纵轴反应传感器信号的AD值,横轴为时间)。目前系统仅设置了5个传感器,所以只显示了曲线。下侧包含了系统运行时间、通信错误计数以及系统错误状态信息等,为调试中稳定性评估以及快速定位问题提供了参考。
图6 系统测试程序界面
5 结论
本文针对多传感器可自由组合的数据采集系统进行研究与探索,完成了可实现31个传感器自由组合的恶臭检测系统平台的搭建工作。并据此与数据采集流程相结合,确定了上位机-中位机-下位机的三级系统架构。从软件方面介绍了本电子鼻系统,系统通过两条RS-485总线完成了数据由下位机到中位机再到上位机的三级传输。
通过测试程序对系统的验证,现阶段样机已经能够正常工作。大量实验结果表明,该设备精度高、重复性好、数据稳定可靠。采集的数据可用于下一步的数据融合。
[1] 陈海秋. 转型期中国城市环境治理模式研究[D]. 南京.南京农业大学,2011.
[2] 王冰,贺璇. 中国城市大气污染治理概伦[J]. 城市问题,2014(12):1-8.
[3] 赵鹏,刘杰民,舒木水,等. 异味污染评价与治理研究进展[J]. 环境化学,2011,30(1):310-325.
[4] 赵小兵,周雪峰. 煤矿安全监控系统中RS485总线的抗干扰设计[J]. 工矿自动化,2013,39(2):83-86.
[5] 杨凤健,刘军,霍旭阳,等. 基于MLX90620的多点动态温度监测系统设计[J]. 仪表技术与传感器,2015(12):76-78.
[6] 谢希仁. 计算机网络[M]. 第5版. 北京:电子工业出版社,2008:17-23.
[7] 王先培. 测控总线与仪器通信技术[M]. 第2 版. 北京:机械工业出版社,2009.
[8] 王晓丽. 基于RS485现场总线的乳化液浓度在线检测[J]. 煤矿机械,2011,32(11):218-220.
[9] 徐会杰. 数据采集系统中串行通信协议的设计与实现[J]. 河南科技大学学报(自然科学版),2008,29(5):30-32.
[10] 周鹏,李艳艳. 提高RS485总线主从通信效率的软件设计[J]. 单片机与嵌入系统应用,2008(8):70-73.
[11] 冯子陵,俞建新. RS485总线通信协议的设计与实现[J]. 计算机工程,2012,38(20):215-217.
[12] Jia Yuchen,Ju Zhhang. Research on Apple Odor Collection and Identification[J]. Sensors and Transducers,2016,200(5):29-36.
MalodorousGasDetectionSystemBasedonLabVIEWandRS-485*
LIUWeiling*,KANGLei,RANDuogang,YANGCaishuang,ZHAOZhe,FENGZhukun,WANGZhao
(College of Mechanical Engineering,Hebei University of Technology,Tianjin 300130,China)
Odor pollution,one of the air pollution,has brought great impact on people’s lives. So,it has impotant practical siginificance to develop a set of ordor detection equipment that can accurately reflect air pollution. We developed an electronic nose device which is based on a multi-sensor array and can realize the detection of a wide concentration range of malodorous gas. A design of independent assortmnet sensor array is given,which can choose the corresponding sensor for malodorous gas with different types and concentrations in different regions. The system has high adaptability,high precision and good stability. In particular,the system design framework of independent assortment sensor array provides great flexibility for the system to adjust itself according to the difference of the actual environment,which has a certain reference value and application prospects
electronic nose;RS-485;bus communication;odor detection
10.3969/j.issn.1005-9490.2017.05.036
项目来源:国家重大科学仪器设备开发专项项目(2012YQ060165)
2016-07-14修改日期2016-11-09
TP216
A
1005-9490(2017)05-1238-06
刘伟玲(1973.9-),女,副教授,河北工业大学机械工程学院。主要研究方向为环保监测仪器。