本文所介绍的工艺系统见下图所示。工艺上要求, 日用油箱中燃料油要保持一定的温度和一定的液位高度值。操作时要显示日用油箱燃料油的液位、温度、燃油流量、燃料油累积流量及锅炉蒸汽管道出口蒸汽压力、流量、蒸汽流量的累积量。
按以上所述, 本系统属于一般的工控系统, 硬件上可以采用多种方案来实现。为减少投资, 本系统现采用国产P C系列的数据采集卡。软件上采用LabVIEW软件平台。整个系统开发力求开发周期短, 投资费用低。
本设计中用LabVIEW实现工业组态软件的功能, 操作界面完全模拟工艺实际流程。操作功能上和各类D C S完全相当 (图1所示即为采用LabVIEW开发的界面图) 。下面将对实现各种主要操作功能加以介绍。
内存管理:
要提高LabVIEW程序的执行效率, 应该首先了解LabVIEW的内存管理, LabVIEW在程序启动时, 就先为应用程序分配了内存空间, 并将应用程序的组件全部载入该内存空间中。当程序运行时, 所用到的内存都从该内存空间中进行分配。当系统内存不足时, 操作系统会动态地为用户重新分配内存。这一过程对用户是完全透明的。当物理内存实际上并不十分庞大时, L a b V I E W会从硬盘上分配一块虚拟内存给应用程序。但是从虚拟内存中读取值的速度要比从物理内存中读取要慢很多。使用虚拟内存有助于大型应用程序的执行, 但对于要求精确定时的程序还是不推荐采用虚拟内存。V I (虚拟仪表—此缩写是在L a b V I E W软件中用作表示程序的符号) 的数据在内存中有四种主要有部分 (见表1) 。
其中程序代码是用户无法看到的, 当一个V I启动时, 如不要求显示流程图 (B l o c k Diagram) 时, 前面板 (Front Panel) ;代码 (Code) 和数据空间 (Data Space) 将被全部装入内存。对于子程序, L a b V I E W只需要将要用的组件动态载入内存就可以了, 一般在不要求显示流程图和前面板时, LabVIEW只将代码 (Code) 和数据空间 (Data Space) 载入内存。可见LabVIEW中主程序和子程序的调入内存的组件是不同的。具体情况如表格2及表格所示。
由表中可见, 子程序只有代码和数据调入内存, 而主程序却要将前面板也调入内存。为此, 子程序调入内存的组件较主程序少。所以将主程序改写成若干个子程序模块, 可以缩小主程序被调入内存的组件大小。将主程序分为若干子程序虽然使得编程较为烦琐, 但是LabVIEW能高效地执行小的程序。更多的层次和清晰的模块化结构也有助于应用程序的维护。只要能采用一定的编程技巧, 程序的执行速度会明显地提高。
在LabVIEW软件中还提供了内存监测工具, 来帮助用户了解程序的执行情况。按以下方法操作, 即可实现监视内存的功能。选择菜单》Help》About LabVIEW…, 用户可看到LabVIEW应用程序从系统获得的内存尺寸;选择菜单Windows》Show VI I n f o…可以获知某个V I所分配的内存以及各项组件占用内存的情况, 选择P r o j e c t》Show Profile Window, 可以看到有关应用程序的全部内存使用情况。通过以上操作, 使用者不难编制出效率高的程序。
定制控件:
本系统所要制作的主流程图界面完全模拟工业操作现场的布局, 要求制作的画面精美。虽然LabVIEW软件中不具类似的备图形库, 可是LabVIEW具有外部图形导入功能和控件编辑器, 使实现以上功能十分方便。比如, 本设计中要求动态显示一座日用油箱的燃油液位。在LabVIEW中并不具备合适的油箱图片, 而且即使具有单独的油箱图片也不能动态显示液位的变化。采用控件编辑器模块可以完成此项任务, 具体实现可按以下步骤进行 (见图2) 。
(1) 我们将要用该控件来表示液位的变化。可以从Control Palette中选取一个滑标 (slider) 控件, 然后用Positioning tool选中此控件, 再选择菜单Edit》Edit Control…, 进入控件编辑窗口 (只有仅选中了一个控件, 才能进入控件编辑器) 。
(2) 点击菜单Edit》Import picture f r o m…, 选择“粘贴”载入已制作好的一幅油箱画面。在工具条中点击c u s t o m i z e mode按钮, 进入customize mode状态。
(3) 在customize mode下, 单击鼠标右键, 选择copy to clipboard, 在控件上, 用鼠标右键菜单中选择Import picture, 即可将油箱图片贴到slider控件上。
(4) 在customize mode下, 用Positioning tool对控件进行分解, 变形。可将油箱画面制作成理想的图形。
(5) 完成编辑后, 点击菜单条中的E d i t m o d e按钮, 回到编辑器窗口, 观察结果。如果不满意, 再次进入customize mode, 进行修改。
(6) 编辑结束, 存盘退出。
多线程:
LabVIEW中的数据传送有别于传统编程语言, 传统编程语言是顺序执行结构, 语句之间关联很大。LabVIEW采用了数据流的概念, 只要数据连线的输入输出关系正确, 数据即从control流向indicator, 将数据进行传递。LabVIEW还可以进行多任务多线程任务。LabVIEW支持的多线程为协作式而非抢占式。通过设置多线程, 可以将程序中不经常执行的子函数和不需要精确定时的部分程序和对时间要求严格的程序区分开来, 由此来提高程序执行的速度。在本系统的主程序流程图中, 将数据显示的部分作为一个线程, 数据存盘和打印子程序每小时执行一次, 由于不经常执行, 将它们作为另一个线程。至于趋势图, 包含了流量累积的计算, 需要一直精确定时的执行, 单独列为一个流程。不同的线程均为WHILE循环结构组成。循环的条件始终为TRUE, 在这里, 用Application Control》Stop函数来控制整个应用程序的执行 (见图3) 。
数据采集接口:
由于LabVIEW具有调用外部函数代码和动态链接库 (DLL, Dynamic Linking L i b r a r y) 的功能。在本系统中数据通过采集卡采集到的信号进入计算机还需要利用DLL函数的调用, 然后才能和LabVIEW建立通信联系。此功能比一般工业测控系统获得数据或发送控制命令需要对输入输出端口进行操作, 具有较大的优越性。
在LabVIEW VI的流程图环境中, 选择函数库Advance》Call Library Function, 将需调用的接口函数放入流程图, 双击鼠标左键, 即可进行D L L调用设置, 用Browse…选择Library Name or Path, 在Function Name中输入调用的函数, Function Prototype栏中会出现相应的函数格式, Calling Conventions栏选择stdcall (WINAPI, Parameter选return type, Type选numeric, Data type选signed 32-bit i n t e g e r, 点击O K, 即完成设置。完成设置后, 在LabVIEW的流程图中就可以对外部数据卡直接进行连线了见 (图4) 。
程序流程图显示了信号采集、信号处理的全部程序。其中采样信号范围:0~10V;温度计量程:0~100℃。
本系统采用了LabVIEW软件, 结合低成本的国产数据采集卡, 设计了一种小型实用计算机监控系统。本系统可以对油耗、蒸汽量和压力进行实时在线监控, 并可稳定控制燃油预热温度和供给量。由于本系统采用国产接口卡, 相对于同类进口产品, 成本低廉。软件方面采用LabVIEW, 系统功能完善, 并可在P C机上运行, 使整个系统投资较少。系统软件安装方便, 维护简单。工业上类似的锅炉系统, 均可以配用本文介绍的计算机监控系统。
摘要:本文介绍的系统是以图形编程语言为基础的LabVIEW软件为开发平台和国产多功能数据采集接口卡组成工业实时计算机控制系统。文中对如何在LabVIEW开发平台上实现内存管理、动态界面调用、DLL建立、信号处理等技术问题进行介绍。文中介绍的系统具有开发周期短, 开发成本低的特点。为低成本的工业计算机控制监控系统的实现提供了一种方法。
关键词:计算机监控系统,LabVIEW软件,内存管理,动态调用,多线程
参考文献
[1] LabVIEWTM User Manual for Windows.National Instruments Corp, 1998.
[2] LabVIEWTM G Programming Refer-ence Manual for Windows.National In-struments Corp, 1998.
[3] LabVIEWTM AdvancedⅠCourse Manual.National Instruments Corp, 1998.
[4] 杨红, 李斌.在LabVIEW上构造复杂多任务应用程序[J].测控技术, 2000 (1) .
[5] 张林, 丁健, 宋寅, 李秀娟.基于虚拟仪器技术的温度测控系统设计[J].工业控制计算机, 2007 (3) .
相关文章:
实时市场02-15
实时监控采集系统02-15
煤矿井下人员安全管理02-15
煤矿人员的安全管理承诺书02-15
一种实时监控系统的设计与实现02-15
三电源供电系统02-15
生产实时监控02-15
在线实时监控系统02-15
医院感染实时监控系统02-15