工控网首页
>

应用设计

>

InTouch组态软件的组合查询模块设计

InTouch组态软件的组合查询模块设计

2016/1/18 9:17:28

摘要:本文介绍了一种基于INTOUCH组态软件组合查询模块的设计。描述了其程序的设计过程并附上相应的操作界面。

关键词:INTOUCH组态软件;组合查询;SQL函数;ActiveX控件

一、前言

  INTOUCH是由美国WonderWare公司开发的组态软件,它具有非常强大的监控功能。比如,数据采集和数据管理功能、动态数据交换功能、在线和历史趋势图、报警和事件自动记录功能、各种安全措施、实时SQL/ODBC与各数据库接口等等。用它来设计工业监控系统时,组态简单,可选的组件和图形丰富,可以设计出各种功能完善且很优美的操作界面。正因为如此,目前它已广泛应用于多种工程领域,INTOUCH组态软件本身也正在迅速发展壮大。其大部分功能可由各种函数和软件包来实现,设计得只需进行简单的调用即可。比如,它有多种画笔用来绘制变量的历史趋势曲线、有专门控件自动记录并显示实时或历史报警等。在某市邮电局电源、空调及环境监控系统的设计工作中,我们采用了INTOUCH组态软件设计监控界面。在工作的过程中,除充分体会到其优点外,也发现,至少目前而言,它在某些方面还有不够完善的地方,比如在用它来设计查询工作站时,就发现它还缺少功能比较完善的控件来实现数据库的查询。虽然它提供了不少SQL函数及某些控件可以实现对数据库访问的各种功能,但由于采用这些函数及SQL语句来书写查询表达式时比较复杂,弄不好常常出错,尤其是在查询条件很多的情况下更是如此。因此,专用查询模块的存在显得非常重要。现利用编程语言(C语言)、SQL函数些控件,开发一类较为实用的查询模块。

二、查询模块设计

  事例:设想用户要查询某某局某操作者在一段时间内进行的操作。假定在数据库中有一操作记录表(OperateTable)如表1所示。

表1

ID

Station

Operator

Content

Time

1

一厂

Admistrator

启动一号油机

1999/1/10

2

二厂

Jack

打开一号空调

1999/3/9

表中列名含义如下:ID—序号;Station—局站名(操作针对某局设备进行);Operator—操作者;Content—操作内容;Time—操作时间。

设计分三部进行,各查询条件的输入,多条件组合表达式的形成、查询表达式及查询结果显示。

1、各查询条件的输入

考虑到系统今后扩展的需要,以及用户操作的方便性,对查询条件的输入采用“鼠标自动选择”与“键盘直接输入”相结合的方式。

在数据库中先制定了一个局名列表(Station                     Table),形式如表2所示,此表记录了所有的局站,用于“鼠标自动选择”功能。

表2

ID

Station

1

一厂

2

二厂

3

三厂

设计的条件输入操纵块如图1所示。

1101.gif (3121 bytes)

图1

图中空白框既可以显示,也可以用于输入。

用户既可以用鼠标点“选择局名”键,而后点“上一项”点“下一项”键实现自动选择,也可以直接在框中输入要选择的局名。选择或输入的结果赋给串标记Quest1.操作者、起始时间和截止时间由于不确定性因素很大,故采用“键盘直接输入”方式。其结果分别赋给串标记Quest2、Quest3、Quest4。如果用户对某一项没有要求,则置相应框为空白。

采用这种“鼠标自动选择”的方式,不太熟悉的用户可以很方便的查到局站名。而当工程发生变化,要修改或增加监控的单位时,只需将新的单位名输入“局站名列表”即可。这种编程的思想在工程扩容时,显得非常有用。

2、多条件组合表达式的形成

在依次判断各种查询条件是否存在的基础上,附上“>”,“<”“=”,“and”,“or”等逻辑符号,形成多条件组合表达式,步骤如下:

(1)令QuestExpr=“”(置查询表达式为空串)。

(2)判Quest1为空值否?若不为空,则QuestExpr赋值为Station=Quest1;若为空,QuestExpr不变(不作处理,以下类同)。

(3)判QuestExpr为空值否?若为空,判Quest2,若Quest2不为空值,则QuestExpr赋值为Operator=Quest2;若不为空,判Quest2,若Quest2不为空值,则QuestExpr赋值为Station=Quest1            and Operator=Quest2.

(4),(5),此两步类似于(3)步。            现附上第(2)、(3)步的程序,            If Quest1<>“”then QuestExpr=“Station=`”+Quest1+“'”;             Endif;            If QuestExpr==“”then             If Quest2<>“”the QuestExpr=QuesExpr+“and”+“Opertator=`”+Quest2+“'”;            Endif;           Endif;

3、查询表达式及查询结果显示

本设计采用名为#CrystalReport的ActiveX控件显示查询结果,执行函数为#CrystalReport.sol=“select*from            Operate Table where”+QuextExpr;最后对于本事例可形成类似如下的查询表达式:             Select * from OperateTable Where“Station=`一厂'and            Operator=`Administrator'               and Time>`1998/01/01'and Time<`1999/01/01'”;将此函数置于“显示操作记录”的按键下,执行按键动作即能显示查询结果。本查询模块的操作界面如图2所示。

1102.gif (4420 bytes)

图2

三、结语

  在程序的设计过程中,有些细节问题应引起注意。比如,在INTOUCH中各串代码的长度不得超过131个字符,为了使查询表达式的长度不超过此限制,程序中必须作相应处理,比如,缩短时间表达式等。另外还必须保留用户完全自主输入查询表达式的权利,从而实现要求更全面或更独特的查询,本模块即具有此功能。本查询模块具有查询方式多样、可扩充性强、功能完备而又操作简便等特点。

         

审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机