VBA编程对机舱监测报警系统的改善
赵 隽 女 研究生 上海交通大学[200030]
战兴 副教授/硕导 上海交通大学[200030]
张炎华 教 授/博导 上海交通大学[200030]
摘 要 本文把VBA编程应用在RSView32开发的机舱监测报警系统中,结果表明VBA编程大大地提高了监控系统功能。
关键词 计算机应用 组态软件 VBA 结构化 分布式数据管理
中图分类号 U664.82
1 机舱监测报警系统开发过程中遇到的问题
本课题研究的机舱监测报警系统是由国家经贸委牵头进行的大型高附加值液货船自动化项目中的一个重要组成部分。该系统主要面向中小型沿海和内河船舶。其主要作用是对轮机设备的主要运行参数进行采集、处理运算并进行显示、报警和记录,对机器的运行状态进行监视,代替了轮机员的部分繁重工作。vba数据库编程
该系统采用标准化、模块化的分布式结构、以太网技术和RS2485总线技术。具有安全防范、中英文切换、机舱图形监控、声光报警、历史曲线、报警打印、DEADMAN、轮机呼叫、值班员系统等功能。
系统样机由四个单元模块组成:由PLC组成的监测信号采集系统;由工控机和打印机组成的图形显示监控站;延伸报警单元;多通道信号发生器。PLC采集机舱内主机及辅机设备的各项参数,一路传送至监控站,另一路经信息处理后判断其是否处于安全限内,否则将报警信息显示在本地操作面板上并发出声光报警。
图形监控站是该系统的重要组成部分,它是采用美国Rockwell公司的组态软件RSView32开发的。RSView32是以MFC、COM技术为基础的MM I(人机接口)软件包。它向下可以通过Wintel2 ligent L IN K,OPC,OFS等与数据采集硬件通信,向上通过TCP/IP,Ethernet与高层管理网互联。
用RSView32组态软件开发图形监控站,系统稳定、界面美观、开发周期短,但同时也暴露出组态软件自身功能的局限性,这种局限性是目前市场上的组态软件所共有的:
(1)大多数组态软件的开发环境和运行环境是分开加密的,对于已开发好的项目,为保证系统的安全和节约成本,PC机上只有运行环境。每一次可预计的或定期改动都需要重新安装开发环境,并要有熟悉该组态软件的工程师来修改,这给用户带来了不必要的麻烦。
(2)对于用组态软件开发的项目,几乎上位机画面上显示所有信息都是通过组态软件自身的数据库与下位机数据采集设备联系的。然而,大多数的组态软件对数据库的容量和数据点的属性有严格限制。对于已开发好的系统,数据库中有一个数据点需要改动则上位机上所有相关连接都需要改动,对于大型系统,这种工作费时又费力。
(3)用组态软件自身的功能,在不增加数据库大小和系统容量的情况下,很难实现系统显示的在线中英文切换,这达不到一些用户的要求。
(4)组态软件自身提供的功能毕竟有限,结构化的功能模块虽然调用方便,但有时也无法满足一些特殊用户的要求。
2 VBA编程对机舱监测报警系统的改善
使用VBA辅助组态软件编程可以方便地解决上述组态软件局限性问题。VBA(Visual Basic for Application)是一种面向对象的程序开发工具,它的独特之处在于它由应用程序控制,反过来它又可以增强该应用程序的功能。VBA是基于VB开发出来的,它们有相似的语言结构。但是VBA与VB不同,使用VBA开发的程序保存在Office2000文档内,无法脱离Office2000应用程序的环境而独立运行。另一方面,VBA弥补了VB的不足,它支持对象模型(COM)和自身的COM外接程序体系结构。使用其它工具的开发者,如VC和组态软件,可以创建与VBA兼容的软件。
2.1 VBA增强了机舱监测报警系统数据库功能
由于此机舱监测报警系统样机要求普遍适应于中小型船舶。如果用传统的组态软件编程方式,每次机舱监测报警系统在不同的船舶上使用时都需要重新安装开发环境,然后按照要求逐个数据点修改组态软件的数据库。
使用VBA辅助编程就可以避免这个麻烦,本系统借助于用VBA开发的数据点修改子程序,开放给用户一个友好的界面如图1所示。用户只需要按照中文指示把所要修改的信息填入图1,该数据点修改子程序就会把所填的信息存入指定文件,并按照修改后的信息自动生成PLC接线表。同时,在组态软件内嵌的VBA中我们又编写了一个数据调入子程序,该子程序的功能是把指定文件中的指定信息写入组态软件的数据库。当机舱监测报警系统运行初始化时,限制其按照图2所示的流程初始化。有权限的用户只要按照画面指示选择修改数据库按钮,新的信息就会准确写入数据库。同时现场工作人员可以按照新生成的PLC接线表连接传感器信号。这样当这套机舱监测报警系统在不同的船上使用时,不需要熟悉组态软件的编程人员亲自操作,也节省了现场工作人员的时间。
图1
开放给用户的数据库修改界面图2 报警监控系统初始化流程图
2.2 VBA帮助机舱监测报警系统实现中英文切换
船舶操纵不同于组态软件的其它应用领域,它的环境决定它必须能够实现在线中英文切换。如果用组态软件自身的功能完成此任务,必须把数据库的容量扩大一倍。这不仅浪费系统资源,而且要增加开发成本。
使用组态软件内嵌的VBA编程可以避免这一问题。把中文系统和英文系统的相关信息分别存入指定文件的不同位置,当处于运行状态的系统突然要改变显示语言时,只要发出命令,VBA编写的中英文切换子程序接到命令后会使上位机暂时退出运行状态,这个过程不超过一秒,待该子程序完成对数据库中信息的中英文切换后,系统马上恢复运行。由于系统采用双机冗余,并且所有的报警功能都在PLC中实现,上位机的这一秒钟切换时间不会给系统可靠性带来影响。系统完成中英文切换的流程图如图3所示。
2.3 VBA可以保护PLC中设置的静态参数
由于PLC指令简单,可靠性比作为上位机的PC机高,本系统在设计时,就把报警任务交给了PLC。这样做虽然提高了系统的可靠性,但是也给系统带来了一些问题。系统的开放性也要求操作人员可以在
线修改报警限和报警延时限,这些报警限和报警延时限在上位机中只能以静态变量形式存储,而组态软件在系统运行初使化时都会按照数据库中的设定给静态变量一个初始值。这就要求系统在退出运行时把这些静态变量的值存储在一个文件中,而在重新进入运行环境时再把文件中的数据送回数据库,以保证报警限和报警延时限的修改信息不会丢失。这个把静态变量的值存储在文件中的功能也可以用VBA编写的参数保存子程序来完成。系统对这个子程序的调入流程如图4所示。
图4
系统退出运行时流程图
图3 中英文切换流程图
3 结 论
从VBA 编程对机舱监测报警系统的改进可以
看出,VBA 提供的用户自编程能力,可以弥补组态软件功能结构化给用户带来的不便,建立更复杂灵活的应用,为工程人员提供了前所未有的灵活性,可以有效地迅速地建立起系统应用的扩展。灵活使用VBA 编程可以完善用组态软件开发的系统,使其最大程度上满足客户的要求。
然而,VBA 是一种宏编程,它运行时对所开发系统的速度会有一定影响。但是VBA 程序是用来满足用户的一些特殊要求,只是在用户需要时才被调用,几分钟就会被关闭,它对整个系统的运行不会有很大影响。
4 参考文献
1 战兴,赵隽,张炎华,徐廷良.机舱监测报警系统研制.船舶工
程,2001(3):42~472 万波,王新鹏,张明.工控组态软件CIMPL ICITY 及应用.电力自动化设备,2002,22(8):19~213 张玉艳,李冬华,李玉杰.RSView32组态软件及其应用.沈阳电力高等专科学校学报,2002,4(4):43~464 张明光.RSView32工控组态软件功能分析和应用举例.自动化仪表,2002,23(6):53~555 张秋余,杨智.实时监控组态软件的开发.甘肃工业大学学报,
1997,23(3):63~676 吕涌,皇甫正贤.组件化结构的组态软件的研究与开发.电器传动自动化,2000,22(5):39~427 陈未如,王纲,臧春华,王丽.工业过程控制系统组态软件开发及其应用.小型微型计算机系统,1994,15(1):58~64
Improvement of Engine Room Monitoring and Alarming System with VBA
Zhao Jun ,Zhan Xingqun and Zhang Yanhua
Abstract :In the paper ,VBA is applied in the engine room monitoring and alarming system developed by use of RSView 32.The results in operation show that VBA improves the system ’s function significantly. K ey w ords :Computer application Configuration software VBA Structurization Distributed data pro 2cessing
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论