关键词:组态软件、运行时组态、在线组态、IO设备。
摘要:本文对运行时组态的概念、优点、实现方法、发展趋势做了阐述。
一.前言
运行时组态是组态软件新近提出的新的概念。运行时组态是在运行环境下对已有工程进行修改,添加新的功能。它不同于在线组态,在线组态是在工程运行的同时,进入组态环境,在组态环境中对工程进行修改。而运行时组态是在运行环境中直接修改工程。运行时组态改变了已往必须进入复杂的组态环境修改工程应用的历史,给组态软件带来了新的活力,并预示着组态软件新的发展方向。
为了说明什么是运行时组态让我们先打个比方。我们可以将工程组态比作是建造房屋。房屋在建造前先设计好图纸,然后按照图纸进行施工,工程验收后房屋的大小、结构就固定下来了。交付住户使用后,住户自己是不能轻易改变房屋的结构(除非他本人就是建筑师且有合法手续),更不能扩展房屋的大小。如果对房屋进行改造,必须请建筑师设计,由建筑工人来施工。
传统的组态与之类似,工程组态好并交付用户使用后,工程中包括的功能就固定不变了。如果要扩充、修改工程的功能,就必须请熟悉该工程的组态工程师进入组态环境进行修改。
如果房屋建好后,用户能够根据自己的需要方便的改变房间的内部结构,或者扩大房屋的空间,那将是多么惬意的事。假如建造师将房间的墙壁做成可移动、可拉伸的,并且预留了制作墙壁、门窗等构造房屋所需的机器,你就自己就可以将平房变成楼房,将楼房加高。当然建筑师很难为你制作出这样的设备,但是组态软件却可以做到这些。
组态工程师可以在构建工程后,有预见的设计出该工程的扩展工具。扩展工具用来生成扩展工程时所需的画面、画面中的构件、连接的硬件设备、新的测点等。扩展工具完全是跟该工程或该应用领域相关,工具一般只包含针对该应用的有限的几种部件,但是却能够满足该工程以后扩展。因为让技术人员(非组态工程师)掌握这些工具比掌握包罗万象的开发环境要容易得多,因此用户自己稍加指导就很容易完成工程的后期维护工作了。另外由于扩展工具只提供有限的功能,让用户犯错误的机会也就小多了。
二.运行时组态的优点
缩短工期。对于一具体工程项目,如果能将项目中用到的模式归纳出来,做成模板(该模板可以通过前面提到的扩展工具运行时生成),那么我们无须等到整个工程做完就可以将其投入运行了。即只要工程中需要的制作工具完成后,你就可以让最终用户在运行时自己增加功能了。让用户在运行环境中修改和完善,直至整个工程完成。该工作模式充分发挥了组态工程师和技术工人自身的优势,快速完成工程项目。因为组态工程师对组态软件熟悉,而技术工人对其应用熟悉,让他们分工做自己熟悉的事情,项目进度当然就快了。
解决了设备、画面不确定问题。有些工程本来就存在这样的需求。如在煤矿安全监测中,作业现场具有流动性,其监测的设备是经常变化的。这就要求组态软件中的测点和监视画面根据情况不断调整。我们不可能用常规的办法将各种情况事先穷举出来,也不可能每次改变都要求现场的技术人员进入复杂的开发环境进行修改。而现场应用模式比较稳定,这样我们就易于建造其运行时扩展工具。运行时组态对此是非常适用的。
动态生成、精简画面。已往动态场景的实现需要在组态环境中必须一一罗列,然后在画面元素中加入隐藏、显现动画,制作维护非常繁琐。在运行时这些元素不管用到与否都要为其分配空间,造成一定浪费。动态生成技术可以在需要时创建,不但使画面简化,同时也减小了系统开销。
精简组态环境。动态生成点、画面所使用的构件都是与当前应用相关的,无关的构件不会出现在运行时的“组态”环境中。运行时的“组态”是为具体应用量身制作的。相对于开发环境中的组态要单一得多,工厂的技术人员也很容易掌握。这即保证了最终应用程序的可扩展性,又保证了运行“组态”的简单性、方便性。
维护方便。传统意义的组态是在工程组态完成后,应用程序的功能已经固化好了。如果需要修改或增加新功能,还必须进入开发环境重新配置。这一般需要精通开发环境,并且熟悉该工程的工程师来完成。如果工程不是本单位完成的,还要涉及到升级改造,甚至另立项目的费用。动态生成可以保证系统有一定程度的扩展性,并且可以由工厂的一般技术人员来完成。
利于组态软件向行业化发展。行业工程师可以针对自己的行业需求,配置运行时所需构件,让普通技术人员使用,这就形成了三级应用模式。软件工程师集中精力开发灵活的手段,行业工程师致力于行业构件的构建,最终技术人员实现自己的应用逻辑。三级应用模式将大大加速组态软件行业化进程。
三.安全性问题。
如果在运行时可以随便增加、修改、删除工程中的画面、画面中的元素、数据库中的点。这岂不是很危险吗?是的,确实很危险。如果没有保护措施,运行时生成就会带来很多的麻烦。我们可以通过以下两项安全措施来保护运行时的工程。
1.系统保护措施:
只有具有特定权限的用户才能进行运行时组态。
只有画面的创建者可以修改画面元素,其他用户无权修改。
特权用户可以在工程完善后,禁止运行组态功能。
2.设计时保护
由于运行时的工具是由组态工程师生成的,因此运行时组态的自由度完全由组态工程师掌握。这就要求组态工程师对运行时提供的手段要加以限制,不要提供过多的、不必要的灵活性,同时对修改对象提供必要的保护措施。例如提供了运行时组态点的工具,就有必要对已有的点进行保护,同时对用户添加的点的数量要进行限制。同样对于画面修改也是如此,不需要运行时修改的画面就不要设置“运行时编辑”权限。
总之,组态人员既要给用户提供扩展功能的手段,又要对其加以足够的限制,以保证系统安全运行。
四.运行时组态的实现
目前,无论是国内还是国外组态软件对运行时组态支持都很少,尤其是运行时添加设备、添加变量等各家组态软件基本没有提供任何支持。对于支持VBA脚本的组态软件,虽然可通过编写程序实现画面的动态生成,但是这毕竟是非可视化的手段。紫金桥监控组态软件在这方面做了初步尝试。下面以紫金桥监控组态软件为例说明运行时组态的实现方法。
运行时组态包括运行时数据库组态和运行时图形组态两部分,下面分别说明:
1.数据库组态
运行时数据库组态包括:对下列内容动态增加、删除和修改:
I/O设备。
数据库点。
I/O连接项,网络连接。
历史保存项。
界面中脚本支持以上操作,并且修改完上述内容后数据库不需要重新启动,马上就能生效,并且不会影响已有数据库点的正常运行。
一般的应用中只会涉及到有限的几种设备类型和几种点类型。对于每种设备或点类型我们要在画面中建立相应的窗口,该窗口用于对I/O设备或点进行维护。下面是一简单的点定义窗口:
运行时点组态画面示例
2.画面组态
运行时加入图形对象包括脚本创建对象和运行中手工填加图形对象两种方式,下面分别介绍。
2.1脚本动态生成图形的步骤
定义图形对象样板。
通过下列脚本替换已有对象、增加新对象、替换对象中引用的变量。常用的脚本函数如下:
调用RepObj函数替换对象。
调用AddObj函数增加新对象。
调用RepVar函数替换变量。
调用DelObj函数删除对象。
在窗口外部可以通过调用RepVarWin对选定对象进行变量替换。
将修改完的画面保存到主服务器,其他客户端的画面将自动更新,这一步不是必须的,如果不需要保存到服务器,可以忽略此步。
运行时切换到“编辑”模式,这时可以手动加入、修改、删除调整样板对象。并可以对图元对象中引用的变量进行替换。
2.2运行时手工添加图形对象
在运行时手工添加图形对象相对更为灵活,其操作基本步骤如下:
在窗口参数中选中“允许运行编辑”复选框。若启动了安全管理,那么还要指定具有“运行时编辑画面”权限帐户,只有该账户能够进行动态生成对象。
制作工具画面。在该画面中添加运行时需要的工具,每个工具要打成子图、单元或图形模板,并将其置于拖拽框对象之下。
通过导航树中的“画面”选项卡中的“操作面板”添加工具画面。也可以没有该步骤。
在运行时,通过拖拽工具画面中的对象,增加图形对象。
保存修改,将修改内容传送到服务器端(此步骤不是必须的)。
运行时手工添加的图形对象,在组态时要预先绘制好,并加入到工具画面中。运行时通过拖拽方式将其绘制到相应的画面,然后修改其关联变量等操作,最后保存到服务器,实现动态添加图形对象的操作。
运行时生成画面示例
五.发展方向
组态软件行一般称为通用组态软件。“通用”一词表示它可以适合各种应用领域。不同的应用领域虽然存在许多共性的东西,但是行业的差异是客观存在的。差异表现在画面的组织形式,组成部件,构建逻辑。如果让组态软件能够包罗万象来适应各行各业,那么呈现给用户的软件将过于复杂,最终会使得组态软件本身的友好性太差,失去其存在的意义。如前所述,运行时动态生成的元素是在组态环境下生成的。行业工程师可以在组态环境下构建其应用领域所需模件,然后让专业技术人员运用自己熟知的构件在运行时搭建自己的应用。这样就使组态软件形成三级应用模式:软件工程师-行业工程师-专业技术人员。软件工程师注重的是给行业工程师提供灵活的手段,行业工程师构件行业模件,专业技术人员构件最终的应用。这才会使组态软件深入到行业,这也正式组态软件未来发展之道。