摘 要:讨论了一种采用虚拟仪器思想构建的液化气管网监控系 统的设计和实现。重点介绍了监控系统的数据采集和数据通信。实际应用证明这种基于虚拟 仪器技术的管道液化气监控系统具有很强的灵活性和可扩展性。
关键词:虚拟仪器;监控系统;数据采集;数据通信;管道液化气
1 引言 随着城市液化气供气系统的迅速普及,传统的人工管理方法已经不能适应时代的进步和 发展。因此发展管道液化气监控系统成为液化气供气企业的重要任务之一。监控系统主要实 现的功能有:对供气站重要工艺参数(压力、温度、液位等)及关键设备(气化炉、热水炉、 空气压缩机)启停状态进行连续监测;对供气管网的关键点的供气压力进行遥测遥传;在中 央监控室集中显示监测参数、图表,实现操作管理;对出现的异常情况进行自动报警和适当 的控制。本文通过引入虚拟仪器的概念,使所设计的监控系统结构清晰、概念简单明了,系 统的软、硬件具有更好的开放性、兼容性和统一性。
2 监控系统的结构设计 2.1 虚拟仪器的分层结构 虚拟仪器系统概念是对传统仪器概念的重大突破,它使自动测试系统结构从传统的机架 层迭式结构发展成为模块式结构。一套完整的虚拟仪器系统一般分为四层:(1)测试管理 层。用户使用虚拟仪器生产商开发的应用程序,组成自己的一套测试仪器。(2)应用程序 开发层。(3)仪器驱动层。(4)I/O总线驱动层。它将不同类型的实际仪器通过相同标准的 总线连接起来,形成一套完整的测控系统,仪器模块可以包括VXI仪器、GPIB仪器、串行仪 器以及PXI仪器。图1描述了虚拟仪器的系统结构分层框图。 ![t14-1.gif (3859 bytes)]()
图1 虚拟仪器的系统结构分层框图 2.2 基于虚拟仪器思想的监控系统结构 根据虚拟仪器的系统结构框图我们可以将管道液化气监控系统进行如下的抽象: ①仪器模块:此层是直接面向监控系统对象的,是监控系统的基础,它直接完成数据采 集、调节控制等功能。在我们的系统中主要是串行仪器,保括PLC和遥测电台,其过程输入 信息是面向传感器的信号,如变送器(压力、流量、液位等)、开关量等信号。 ②仪器硬件接口:我们用RS232接口来实现软硬件的数据通讯。 ③I/O接口软件:由于硬件接口采用了RS232接口,所以I/O接口部分必须采用针对RS232 接口的API函数集,如果在Windows下进行开发就使用Windows API中的相关函数。 ④仪器驱动程序:这一级负责驱动硬件仪器模块,它通过I/O接口实现和硬件的通讯, 驱动硬件执行数据采集和控制设备等任务。对于不同的仪器要编制不同的仪器驱动程序,并且要提供源代码和测试程序。 |
![t15-1.gif (3537 bytes)]()
图2 基于虚拟仪器思想的监控系统结构框图 |
⑤监控系统软件:通过仪器驱动程序、I/O接口软件实现对硬件的操作,进行数据采集 ;同时完成其它的功能:诸如数据处理、数据存储、报表打印、趋势曲线、报警、记录查询 ……。系统软件部分直接面对操作人员,要求有良好的人机界面、操作方便等特点。图2给 出了监控系统结构框图。 通过引入虚拟仪器的概念我们可以看到,整个系统被分为五个层次:仪器模块、硬件接 口、I/O接口、仪器驱动程序和监控系统软件。系统的结构明了,每一层的功能明确。层与 层之间的通讯是通过事先规定好的协议来实现的。对于开发者来说,这种透明性和层次之间 的独立性是很重要的。它使得我们在不改变对外接口的前提下,可以随意的修改各层的内部 结构。 3 监控系统硬件的设计 根据前面的论述,按照虚拟仪器系统的分层结构概念,并结合管道液化气供气系统的特 点,我们设计了城市管道液化气供气工程计算机监控系统。图3描述了系统的硬件构成。 ![t15-2.gif (5546 bytes)]()
图3 管道液化气硬件示意图 我们将重点讨论数据采集部分的硬件。根据前面的讨论,数据采集的任务主要是通过PL C和遥测台来完成的。按照通讯信道,供气站内的数据采集和设备监控部分是以PLC为核心的 ,它和上位机采用有线的串行通信;管网内的数据采集则是以数据采集仪和遥测台通讯控制 器为核心,这部分与上位机通过无线调频数传电台进行通信。下面我们分别对两种数据采集 方式进行讨论。 3.1 站内数据采集系统 ① 模拟量的数据采集 模拟量的数据采集是通过站内一次仪表(如DDZⅢ型变送器,热电阻等) 将各测点的物理 量,如液化气贮罐的压力、液位、空气压缩机的压力、气化炉的温度等,变送成4~20mA的 电流信号,经安全栅隔离后转化为1~5V的模拟电压信号再送入PLC进行A/D转换。 模拟量的A/D转换主要是通过12位的A/D单元FX-4AD来进行。该模块提供了A/D转换通道 ,但被采样的物理量有十几路,不能同时进行A/D转换,显然必须要解决输入的“瓶颈”。 我们采用的方法是,首先,将较次要的物理量分为大致相同数目的两组,将信号依次连接到 对应的输出触点,每一组共用一个公共端(COM),将两个公共端作为FX-4AD的两路输入,在 PLC运行时,对这些物理量的A/D转换可以通过切换输出触点来完成;而对于比较重要的两路 物理量,总出口压力和空压机出压,则可以直接接AD单元的另两路输入。这样,仅利用一只 4通道的A/D单元就达到了多路采样的目的。 另外一个需要考虑的问题是采样的时间间隔的选择,考虑到气化流程中各物理量都属于 缓变量(安全操作规程规定,人工巡视一次站内状态时间间隔一般要30分钟),根据技术要求 和实际经验,对比较重要的物理量-液化气的出站压力和空压机出压8~12秒钟采样一次, 而对其它的较次要的物理量则每隔约2~3分钟采样一次。图4给出了采集模拟量的PLC接线示意图: ②开关量的数据采集 在我们的监控系统中,开关量被用来表征站内设备的运行启停状态。其中包括气化设备 (如气化炉,热水炉等)阀门的开闭状态,气体压缩设备(如空压机,气压机等)和消防设备( 如消防泵)的工作状态,开关量直接从PLC主单元的输入接口送入。 ![t15-3.gif (4093 bytes)]()
图4 PLC模拟量采集示意图 |
需要注意的一点就是,在设备离PLC较远时,应选用较粗的连接电缆线,以确保PLC能正 常动作的关断。因为,为了防止输入触点的抖动,PLC对每路输入信号都进行了光电隔离和 延时滤波(10ms),所以在输入发生跳变时,PLC有约10ms的响应滞后。另外,考虑到PLC的输 入灵敏度,为确保PLC输入动作,输入电流必须在4.5mA以上;关断电流在1.5mA以下(DC24 V)。图5给出了开关量的采集示意图。 ![t15-4.gif (2186 bytes)]()
图5 PLC开关量采集示意图 3.2 遥测数据采集系统 为了实现对整个供气系统运行状态的全面把握,我们需要对管网内一些重要的节点的物 理参数进行连续实时监测。常用的管网遥测参数包括管道压力、流量、温度、阀门开度等, 遥测系统的任务就是对这些参数进行监测,并将所采集到的数据传输到上位计算机进行二次 处理。为了充分的利用资源,我们的遥测系统采用时分制脉冲编码调制(PCM)技术,利用一 条信道传送不同的遥测信息,遥测装置采用1-N的主从分布式体系,即在控制中心设置一个 中心站(遥测主台),在各遥测点设置N(0≤N<128)个远距离终端站(遥测从台),信道为树形 半 双工无线设备,遥测形式为巡回或定点选择的方式。我们选用的是全双工或半双工的UHF/VH F调频数传电台,主台和从台的发送和接收频率刚好相反,电台通过RS232接口和计算机进行通 讯。遥测子系统的硬件结构框图如图6所示。 ![t16-1.gif (3676 bytes)]()
图6 管网遥测子系统硬件结构 4 监控系统软件的设计 监控软件在整个管道液化气监控系统中起着枢纽的作用,它要完成的主要任务有:系统 组态、测量参量的集中显示、数据存储、数据管理、统计分析、报警、报表打印…… 。软 件的功能划分可以用图7来表示,在这里我们主要介绍相对复杂的实时监测模块和通信模块。 ![t16-2.gif (4221 bytes)]()
图7 监控软件功能划分框图 |
4.1 实时监测模块 在实时监测模块的设计中我们借鉴了集散型监控系统的“集中显示操作”思想,我们将 管道液化气供气系统的当前运行状况通过图形和数字的方式集中的显示在计算机屏幕上。为 了便于区分,对于监测的各种物理量,我们分别采用不同的图形方式来表示。同时为了满足 不同的需求我们还提供了两种监测模式-棒图监测模式和模拟屏监测模式供用户选择。界面 起到了显示数据的作用,而后台运行的数据采集才是核心的部分。默认情况下,数据采集由 软件自动完成,当然,也可以随时切换到手工采集数据。每次采集都有时间限制,即在给定 的时间里必须要完成一次采集操作,无论是成功还是失败。这样的目的是为了不让系统资源 被一个操作独占。上位机发出采集命令以后不是循环等待串口的数据,而是通过定时查询来 取得数据。同时我们运用了Windows的消息处理机制来进行数据的采集,这样可以提高系统 的工作效率。监控软件界面的刷新也是由消息驱动的,这些功能都直接嵌入到构件中去了, 构件根据物理量的参数大小来更新显示。 4.2 通信模块 监控软件的通信功能实际上是由仪器驱动程序和I/O接口软件共同实现的。由于I/O接口 软件是由Windows API函数来充当,那么实际需要解决的问题就集中在仪器驱动程序的开发 上来了。在具体实现过程中,我们采用了由VC编制动态链接库(仪器驱动程序),Delphi调 用动态链接库进行通信的方法。动态链接库的编制请参考相应文献,这里我们以仪器驱动程序中的通用函数Comm_Open为例来说明Delphi对仪器驱动程序的调用:
hPlc: THandle; //定义用于存放LoadLibrary返回句柄的变量 … Comm_Open: function(CommportID : integer;var InstrID : integer) : integer; stdcall; //说明Comm_Open函数 … @Comm_Open := NIl; //对Comm_Open的地址进行初始化 hPlc := LoadLibrary(′plc232.dll′); //将LoadLibrary返回句柄存入hPlc ifhPlc > HINSTANCE_ERROR then //判断返回值 try //进入异常处理块 if hPlc > HINSTANCE_ERROR then //成功调用DLL @Comm_Open := GetProcAddress(hPlc,′Comm_Open′); //由于Comm_Open变量不是指针,故加上@字符来说明从GetProcAddress返回的地址将成 为Comm_Open的地址。 except FreeLibrary (hPlc);//释放DLL 为了验证仪器驱动程序的功能我们还开发了一个仪器测试程序,同时该测试程序也可以 作为单独的仪器来使用,根据需要可以很容易的改作其他的PLC或串行通信仪器的操作面板 。图8是其软面板外观。 ![t16-3.gif (5901 bytes)]()
图8 仪器驱动程序测试程序外观 5 结束语 由于系统采用了虚拟仪器技术的思想,系统的结构是普遍适用的;再加上系统设计时采 用了模块化、组态思想。这些都使得系统可以根据不同的需求,很方便的配置成用户所要求 的模式,同时对系统的扩展可以方便的通过软硬件接口来实现。因此系统具有优良的可维护 性、开放性和可扩展性。自1997年在浙江省诸暨市等多个地区投入运行以来,其稳定优良的 性能在实际应用中得到了用户的广泛好评。■ 作者简介:王凌峰(1975-),男,浙江海盐县人,硕士研究生,目前 主要从事工业自动化测控系统和虚拟仪器技术的研究。 作者单位:王凌峰(浙江大学 仪器科学与工程学系,浙江 杭州 310027) 陈灏(浙江大学 仪器科学与工程学系,浙江 杭州 310027) 参考文献: [1]Maxwell J L. CP monitoring programming can save time ,money[J], Pi peline and Gas Journal, 1997,(1). [2]浙江大学检测技术与智能仪器研究所.虚拟仪器软件结构与接口技术[M].国 家“九五”科技攻关项目专题(97-772-01-06)技术文本,1998.4 |