石油与天然气化工  2010, Vol. 39 Issue (4): 360-364
井场H2S气体动态监测系统中的多路数据采集
顾亚雄 , 许方华 , 钟成千     
西南石油大学电子信息工程学院
摘要:介绍了一种基于LabVIEW软件平台的井场H2S气体动态监测系统中多路数据采集部分的设计原理及过程。数据采集部分摒弃了NI公司的采集板卡而采用MSP430F149单片机系统, 降低了系统的开发成本。利用LabVIEW开发环境设计上位机的监测界面, 上位机通过串行口与MSP430F149单片机通信, 从而实现对多路数据的采集与监测。本设计系统增设有报警功能, 报警门限可通过上位机监测界面进行设置。运用LabVIEW进行系统开发具有很强的灵活性, 能较容易地实现系统的各项功能, 并使系统具有很强扩展性。
关键词多路数据采集    动态监测    LabV IEW    H2S气体    
Design and Study of Wellsite H2S Dynamic Monitoring System
Gu Yaxiong , Xu Fanghua , Zhong Chengqian     
College of Electronic Information Engineering, Southwest Petroleum University, Chengdu 610500, Sichuan China
Abstract: To meet the safety production requirements for petroleum and natural gas well sites, the design scheme of H2S monitoring system and its software and hardware design process are presented in this paper. The system using mature technology and virtual instrument technique, with mixed signal processor control devices, MSP430F149 as scene by peripheral signal circuit, flash data storage, RS485 and corresponding interface chip H2S probe, and will monitor the data transmission machine processing. Multi-chan-nel H2S concentration monitoring and alarming function are realized under the well site environment, which has practical significance to improve oil and gas production on-site safety guarantee quality.
Key words: well site security    H2S    dynamic monito-ring    virtual instrument    

在高含硫油气井生产过程中, H2S气体的准确监测具有重要的意义。开发井场H2S气体动态监测系统是消减H2S气体的危害及保证安全生产的可靠措施之一。其中, 多路数据采集的优化设计是提高监测系统工作可靠性的重要环节。

LabVIEW是由美国国家仪器公司(National Instruments Co.)推出的一种基于图形开发、调试和运行的集成化环境[1]。利用LabVIEW设计多路数据采集系统时, 可配备NI公司的数据采集板卡模拟采集多路信号[2]。但考虑到其价格昂贵, 本设计选用MSP430单片机组成的系统作为前端数据采集系统进行多路数据采集, 然后通过RS -232串口通讯将数据传输至上位机, 在LabVIEW开发平台下, 对各路数据进行处理、标定和实时显示, 从而实现一种在LabVIEW环境下的单片机多路数据采集系统。

1 单片机系统设计
1.1 系统总体原理框图

本设计采用MSP430系列单片机MSP430F149与上位机组成多路数据采集与处理系统, 系统原理框图如图 1所示。

图 1     系统原理框图

多路模拟电压信号A/D转换后传输至单片机进行数据处理。ADC12为MSP430系列单片机的12位精度的A/D转换模块, 支持单通道单次、单通道多次、多通道单次、多通道多次转换等四种转换模式。用户可以通过ADC12CTL1寄存器的CONSEQx位来进行选择[3]。E2PROM用于存储系统各路数据的报警门限等数据, 可通过下位机的键盘电路进行设置, 也可以通过上位机软件系统进行设置。单片机与上位机采用基本三线制的RS -232串行口进行通信[4, 5]

1.2 单片机系统软件设计

下位机程序采用C语言编写, 其主要完成定时数据采集及数据发送工作。下位机程序主要包含以下几个部分:A/D转换模块; 主处理模块(含数据处理与发送); 按键输入模块和系统报警模块。

本系统采用的是多通道多次转换, 对ADC中的各个通道进行多次采样, 这样做可以实现在较短的时间内进行多次采样取平均值。多通道多数据采集的模拟参考电压可采用片外输入的参考电压, 也可采用片内的参考电压[6]。数据采集的时间间隔通过定时器A来完成, 在每次定时器A中断到来时读取A/D采集得到的数据, 在读数据之前先停止A/ D转换, 在读取数据完毕后又启A/D转换, 如果得到数据, 则设置一个标志位通知主程序, 告诉主程序已经得到新的数据。整个模块采用的是中断服务程序的结构完成。

系统的键盘设置采用中断方式。当有键按下时进入中断服务程序, 获得输入的数据。这里采用定时器B来检查是否有按键按下。

串口通信采用中断机制。发送数据和接收数据都采用中断方式, 当接收到有数据时, 设置一个标志来通知主程序有数据到来, 当主程序有数据要发送的时候, 设置一个中断标志进入中断发送数据。对于发送中断, 程序处于等待状态, 如果检测到有发送的标志, 则从缓冲区里取出数据发送; 对于接收中断, 等待数据的到来, 如果有数据到则设置标志通知主程序。

主程序主要是将各个模块进行协调处理和实现数据交互。主程序首先完成初始化工作, 初始化后进入循环处理, 在循环过程中主处理获得采集模块的多路数据数据, 并将数据进行处理, 根据处理后的结果来进行判断是否进行报警, 同时将多路数据发送到上位机。整个程序是基于中断服务结构, 为了实现中断程序与主程序之间的数据交互, 需要通过设置一些全局变量和全局的缓冲区来实现。

单片机系统的程序框图如图 2所示。

图 2     单片机系统程序框图

2 上位机LabVIEW程序设计
2.1 LabV IEW程序前面板设计

设计前面板主要将各模块集成, 便于调用。系统运行主界面(前面板)如图 3所示。主界面包括通信串口参数配置、报警限设置、实时数据显示及实时曲线显示部分。

图 3     系统运行主界面

串口配置用于上位机与下位机通信参数的设置, 为了调试方便而放在了主界面中。为了便于说明, 本设计系统设为四路数据采集系统, 若要扩展输入通道数量, 可以在此基础上类推。

报警限设置用于设置各路数据报警的门限值。当监测到的数值超过设定的报警门限值时, 启动单片机系统报警。每路均设有报警指示灯, 当系统处于报警状态时, 指示灯闪烁同时发出报警声, 用来提醒系统管理者注意。

数据显示用于显示各路数据实时数值, 实时曲线用于显示各路数据的实时曲线。

2.2 LabVIEW串行通信功能模块

LabVIEW的函数库中提供了串口通讯函数, 可用来设计单片机与PC机的串口通讯。

在LabVIEW功能面板的Instrument I/O >serial目录下, 包含串行通信所需的集成模块。利用这些模块, 可以非常方便地设计出基于串行通信的测控系统。需要注意的是, 在使用这些模块之前, 需安装光盘上的VISA驱动程序; 也可从NI公司的网站免费下载最新VISA驱动程序。下面介绍一下本系统要用到的串行通信模块[7, 8]

(1) VISA onfig U re Serial Port。用于初始化所选择的串行口。其中VISA resource name用于选择所用到的串行口, PC机中常用到的串口号分别用COM1和COM2表示。Flow contro l用于设置握手方式, buffer size用于设置缓冲区的大小。Baud rate, data bits, stop bits, parity分别用于设置串行通信的波特率, 数据位长度, 停止位长度, 校验方式。

(2) VISA Write。用于将write buffer中的字符写到VISA resource name指定的串行接口中。

(3) VISA Read。从VISA reso uree name指定的串行接口中读取规定字节数的数据, 并将这些数据传递给read buffer。Byte count用于设置要读取的字节数。

(4) VISA Close。用于关闭VISA resource name指定的串行口, 让出串行口的使用权。

LabVIEW串行通信功能模块程序如图 4所示。

图 4     LabVIEW串行通信程序

2.3 实时数据处理与显示

数据处理模块主要是将从下位机读取来的数据进行处理, 以便于实现实时显示、报警及预警等功能。数据处理模块包含数据格式转换、数据分离及数据的标度变换。

从VISA reso urce name指定的串行接口中读取出来的数据, 是一系列的字符串数据。若在此处加一字符串显示器可以看到的是一组字符数据。因此必须将其进行格式转换。由于所传输的是多路数据, 需要将其分离开来。本系统采用了公式节点来进行标度变换。

实时数据显示部分包含数值显示及曲线显示两部分。程序如图 5所示。

图 5     多路数据处理与显示

这里引入了实时曲线显示的子vi, 图 6为具体的实时曲线显示程序框图。该程序实现的原理是:在While循环开始前, 将当前时间转化为自零点开始的秒数作为实时曲线的起点; 设置X轴的最小值为0, 最大值为60, 即显示60秒内的数据; 输入空数组到趋势图的History属性将趋势图清空, 并通过XScale.Format属性设置X轴显示格式为相对时间, 并分别输入到相应的实时曲线的属性中。在While循环中通过XScale.Multiplier属性设置X轴间隔时间[9]

图 6     实时数据曲线显示子程序

2.4 报警参数设置程序

系统报警参数设置部分主要运用了条件结构, 当用户设置好参数后按发送键。由于系统的使能运行与参数设定有着类似性, 也放入此处一并说明。

由于输入到VISA Write模块中的数据为字符串数据, 因而必须进行格式转换[10]。这里运用数值至十进制数字符串转换模块。同时该部分另运用了条件结构来判断是否有数据输入, 当有数据输入时, 则将输入的数据格式转换后输入到VISA Write模块; 当用户没有输入任何数据时, 则使用默认参数设置。

运行使能是使监测系统具有开启与关闭的功能。同时运用运行与停止两指示灯加以区分。

报警参数设置模块的程序如图 7所示。

图 7     参数设置模块程序

3 结语

使用LabVIEW进行多路数据采集系统的设计与使用Visual C++、VB等开发软件相比, LabVIEW软件显得更加方便、更易设计出美观的监控界面, 并缩短系统的开发周期。

本文设计的多路数据采集系统, 经实际验证, 单片机与上位机的通信正常, 能实现对多路数据的采集与实时监测。可通过单片机系统的按键及上位机软件系统来设置报警门限。在实际开发中, LabVIEW具有很强的灵活性, LabVIEW环境下的单片机多路数据采集系统具有很强的工程实用性, 可广泛应用于各种实际的测试控制领域。

参考文献
[1]
陈锡辉, 张银鸿. LabVIEW 8.20程序设计从入门到精通[M]. 北京: 清华大学出版社, 2007.
[2]
史颖刚, 刘利, 李元宗. 基于虚拟仪器的测试和数据采集系统[J]. 科技情报开发与经济, 2006(6): 211-212. DOI:10.3969/j.issn.1005-6033.2006.06.120
[3]
谢兴红, 林凡强, 吴雄英. MS P430单片机基础与实践[M]. 北京: 北京航空航天大学出版社, 2008.
[4]
夏建芳, 赵世富. 虚拟仪器与单片机串口通信的实现[J]. 机械工程与自动化, 2006(2): 136-137. DOI:10.3969/j.issn.1672-6413.2006.02.050
[5]
梁中华, 王子威, 祁春清, 等. PC机与单片机串行通信的研究[J]. 沈阳工业大学学报, 2005(3): 302-307. DOI:10.3969/j.issn.1000-1646.2005.03.017
[6]
秦龙. MSP430单片机应用系统开发典型实例[M]. 北京: 中国电力出版社, 2005.
[7]
肖金壮, 张伟, 王洪瑞, 等. 基于Lab VIEW的单片机温度测控系统设计[J]. 单片机开发与应用, 2007, 23(10-2): 71-73.
[8]
江建军, 刘继光. LabVIEW程序设计教程[M]. 北京: 电子工业出版社, 2008.
[9]
2005-2006 National In struments C orporation.LabVIEW TM Help [Z].371361B-01, August 2006
[10]
楚现知, 吴吉祥, 李锦忠. 基于LabVIEW的监控界面设计与单片机的串行通信[J]. 工业控制计算机, 2005, 18(7): 69-70. DOI:10.3969/j.issn.1001-182X.2005.07.035