发表于:2014/8/22 15:57:25
#0楼
概述
编写程序时,我们经常将相似的模块组织成函数,以避免重复编码,这样维护起来也方便。同样在工程组态时,也存在相似的功能,相似的表现形式,如果组织合理,同样可以让我们事半功倍。下面以紫金桥软件为例,来说明如何减少重复工作。
紫金桥软件提供了间接变量,变量转向、图形模板、图形样板等多种手段来避免画面组态的重复工作,下面就对这些手段予以详细说明。
间接变量的使用
间接变量是一种特殊形式的中间变量,是能够被动态指向其他变量的变量,或称为指针变量,它类似于C语言中的指针。间接变量在初始状态并不指向任何变量,它需要通过特殊的赋值语句来定向。其形式如下:
INDIRVAR = &TAGETBAR
其中INDIRVAR:代表间接变量;TAGETBAR表示目标变量,目标变量一般为数据库变量。
经过这种变量重定向后,变量INDIRVAR和TAGETBAR的数值将保持一致。改变INDIRVAR的数值就等于改变TAGETBAR的值,反之亦然。二者绑定到一起,这种绑定将一直保持,直到INDIRVAR 变量被重定向为其它变量。利用间接变量可以避免画面上的大量重复的工作,举例如下:
例如,如上所示为灯光控制画面,图中红色的为照明灯。鼠标单击照明灯将出现照明设置对话框。
图中有9盏灯,每盏灯的设置框都类似,只是关联的变量不同。如果做将设置对话框画面画好后,复制几份,将变量分别替换为对应的照明灯的变量,倒也不费事。但是困难的是什么时候认为第一幅画面已经定型,决定复制为第二幅。因为一旦幅之后,如果想对画面进行调整,势必两幅画面都要修改。
对于这种情况,在画面中可以使用间接变量。在单击照明灯时,将间接变量重定向指向实际变量。例如在照明灯的鼠标动作中填写如下脚本:
第一盏灯:
INDIRVAR = &LAMP1.PV;
DISPLAY(“站台照明设置”);
第二盏灯:
INDIRVAR = &LAMP2.PV;
DISPLAY(“站台照明设置”);
其他类似。
而在站台照明设置窗口中,只使用间接变量INDIRVAR,这样你只需要做一幅画面就可以了,减少了画面编辑和维护工作量。
变量转向功能
间接变量只能重定向到画面中已经存在的变量,这就无法让间接变量指向数据库动态加入新点。变量转向功能正是为此目的而产生的。
变量转向是通过VarRedir函数实现的,该函数格式如下:
VarRedir(Tag, NewTag)
该函数有两个含义:
1)如果Tag为数据库变量,则对其进行重定向,即改变变量的数据库参数项,使其指向其他位号。
2)如果Tag为间接变量,则改变间接变量的指向。
参数
Tag:字符串,数据库变量或间接变量,必须是变量本身,不能为变量名称字符串。
NewTag:字符串,新位号名或变量名。数据库位号要包括参数。
在上面例子中可以将INDIRVAR = &LAMP1.PV替换为VarRedir(INDIRVAR, "LAMP1.PV")。
通过间接变量,VarRedir都可以将变量转向到数据库变量、中间变量、窗口变量,那么是不是变量重定向函数可以完全代替间接变量呢?
不是的。
? 间接变量在组态时就对变量进行编译、检查,所以使用间接变量更安全些,同样使用VarRedir更灵活,更适合于有规律的、重复度较高的替换。
? 间接变量在组态时就对变量进行编译、检查,所以其替换是静态的,速度比较快。
图形模板
当多幅画面图像相同,仅仅是每幅画面显示的点不同时,可以使用图形模板。
注意这里说的是点不同,而不是变量不同。一个点可以有很多参数,每个”点.参数”对应一个变量。可以认为点是变量的集合。
下面,我们通过一个简单的例子来说明图形模板对象的使用方法。此例子是使用一幅简单的画面来显示点的NAME、DESC、EU、PV、EULO、EUHI六个基本参数。
下面是点FI1001的基本参数画面:
点FI1002,FI1003等都有与点FI1001类似的基本参数画面。如果简单的复制,我们可以生成其他点的基本参数画面,但是画面需要调整时就很费事了。
使用间接变量可以避免画面复制的问题,对于上面的画面我们至少要定义6个间接变量。变量转向动作也要象下面 这样写很多行。
INDIR_NAME = &FI1001.NAME;
INDIR_DESC = &FI1001.DESC;
INDIR_EU = &FI1001.EU;
INDIR_PV = &FI1001.PV;
INDIR_EULO = &FI1001.EULO;
INDIR_EUHI = &FI1001.EUHI;
是不是看起来很麻烦!
使用图形模板就可以减少替换语句,只是替换点名即可。方法如下:
在窗口中画出如下图素,并将其与图形模板对象打成单元。
图中”TP”为图形模板对象,运行时不可见。
在文本输出动作中,分别输入变量T.NAME、T.DESC、T.EU,在数值输出动画中分别输入T.PV、T.EULO、T.EUHI等。这些变量都定义为模板变量。
变量转向动作只要象下面一行即可。
#TMPL.ChangeTag("T1", "FI1001");
TMPL为图形模板对象名称。
图形样板
以上讲述的都是对变量或点的替换,而样板是对图形的替换。
在实际绘图中我们经常遇到这样情况,要求画面中相同的元素使用相同的颜色或字体,而在项目实施前一段时间内很难确定下来,即便确定下来在项目实施中难免有些改变。若是没有确定好规则,就无法着手工作,如果已经绘制了大量的画面,修改起来是非常繁琐的事。尤其是对于单元中的图元改动更为复杂(需要拆开单元,改后再合成单元)。
样板就是为了解决上述问题而诞生的。样板用于规定线的颜色、宽度、线性、填充色、填充样式、字体、字号以及图形的形状。利用样板可以方便修改具有相同、相似属性的图元。
例如规定燃油管线使用样板A(绿色),蒸汽管线使用样板B(白色),如果要将所有的燃油管线改为黄色,只需要重新定义样板A的颜色属性为黄色即可,样板负责对所有画面中的燃油管线颜色进行替换。
结论
紫金桥软件提供了很多独特的方法来减少组态工程师的工作,利用这些方法,可以大大减少重复性劳动,并使得工程易于维护,提高了工作效率。
编写程序时,我们经常将相似的模块组织成函数,以避免重复编码,这样维护起来也方便。同样在工程组态时,也存在相似的功能,相似的表现形式,如果组织合理,同样可以让我们事半功倍。下面以紫金桥软件为例,来说明如何减少重复工作。
紫金桥软件提供了间接变量,变量转向、图形模板、图形样板等多种手段来避免画面组态的重复工作,下面就对这些手段予以详细说明。
间接变量的使用
间接变量是一种特殊形式的中间变量,是能够被动态指向其他变量的变量,或称为指针变量,它类似于C语言中的指针。间接变量在初始状态并不指向任何变量,它需要通过特殊的赋值语句来定向。其形式如下:
INDIRVAR = &TAGETBAR
其中INDIRVAR:代表间接变量;TAGETBAR表示目标变量,目标变量一般为数据库变量。
经过这种变量重定向后,变量INDIRVAR和TAGETBAR的数值将保持一致。改变INDIRVAR的数值就等于改变TAGETBAR的值,反之亦然。二者绑定到一起,这种绑定将一直保持,直到INDIRVAR 变量被重定向为其它变量。利用间接变量可以避免画面上的大量重复的工作,举例如下:
例如,如上所示为灯光控制画面,图中红色的为照明灯。鼠标单击照明灯将出现照明设置对话框。
图中有9盏灯,每盏灯的设置框都类似,只是关联的变量不同。如果做将设置对话框画面画好后,复制几份,将变量分别替换为对应的照明灯的变量,倒也不费事。但是困难的是什么时候认为第一幅画面已经定型,决定复制为第二幅。因为一旦幅之后,如果想对画面进行调整,势必两幅画面都要修改。
对于这种情况,在画面中可以使用间接变量。在单击照明灯时,将间接变量重定向指向实际变量。例如在照明灯的鼠标动作中填写如下脚本:
第一盏灯:
INDIRVAR = &LAMP1.PV;
DISPLAY(“站台照明设置”);
第二盏灯:
INDIRVAR = &LAMP2.PV;
DISPLAY(“站台照明设置”);
其他类似。
而在站台照明设置窗口中,只使用间接变量INDIRVAR,这样你只需要做一幅画面就可以了,减少了画面编辑和维护工作量。
变量转向功能
间接变量只能重定向到画面中已经存在的变量,这就无法让间接变量指向数据库动态加入新点。变量转向功能正是为此目的而产生的。
变量转向是通过VarRedir函数实现的,该函数格式如下:
VarRedir(Tag, NewTag)
该函数有两个含义:
1)如果Tag为数据库变量,则对其进行重定向,即改变变量的数据库参数项,使其指向其他位号。
2)如果Tag为间接变量,则改变间接变量的指向。
参数
Tag:字符串,数据库变量或间接变量,必须是变量本身,不能为变量名称字符串。
NewTag:字符串,新位号名或变量名。数据库位号要包括参数。
在上面例子中可以将INDIRVAR = &LAMP1.PV替换为VarRedir(INDIRVAR, "LAMP1.PV")。
通过间接变量,VarRedir都可以将变量转向到数据库变量、中间变量、窗口变量,那么是不是变量重定向函数可以完全代替间接变量呢?
不是的。
? 间接变量在组态时就对变量进行编译、检查,所以使用间接变量更安全些,同样使用VarRedir更灵活,更适合于有规律的、重复度较高的替换。
? 间接变量在组态时就对变量进行编译、检查,所以其替换是静态的,速度比较快。
图形模板
当多幅画面图像相同,仅仅是每幅画面显示的点不同时,可以使用图形模板。
注意这里说的是点不同,而不是变量不同。一个点可以有很多参数,每个”点.参数”对应一个变量。可以认为点是变量的集合。
下面,我们通过一个简单的例子来说明图形模板对象的使用方法。此例子是使用一幅简单的画面来显示点的NAME、DESC、EU、PV、EULO、EUHI六个基本参数。
下面是点FI1001的基本参数画面:
点FI1002,FI1003等都有与点FI1001类似的基本参数画面。如果简单的复制,我们可以生成其他点的基本参数画面,但是画面需要调整时就很费事了。
使用间接变量可以避免画面复制的问题,对于上面的画面我们至少要定义6个间接变量。变量转向动作也要象下面 这样写很多行。
INDIR_NAME = &FI1001.NAME;
INDIR_DESC = &FI1001.DESC;
INDIR_EU = &FI1001.EU;
INDIR_PV = &FI1001.PV;
INDIR_EULO = &FI1001.EULO;
INDIR_EUHI = &FI1001.EUHI;
是不是看起来很麻烦!
使用图形模板就可以减少替换语句,只是替换点名即可。方法如下:
在窗口中画出如下图素,并将其与图形模板对象打成单元。
图中”TP”为图形模板对象,运行时不可见。
在文本输出动作中,分别输入变量T.NAME、T.DESC、T.EU,在数值输出动画中分别输入T.PV、T.EULO、T.EUHI等。这些变量都定义为模板变量。
变量转向动作只要象下面一行即可。
#TMPL.ChangeTag("T1", "FI1001");
TMPL为图形模板对象名称。
图形样板
以上讲述的都是对变量或点的替换,而样板是对图形的替换。
在实际绘图中我们经常遇到这样情况,要求画面中相同的元素使用相同的颜色或字体,而在项目实施前一段时间内很难确定下来,即便确定下来在项目实施中难免有些改变。若是没有确定好规则,就无法着手工作,如果已经绘制了大量的画面,修改起来是非常繁琐的事。尤其是对于单元中的图元改动更为复杂(需要拆开单元,改后再合成单元)。
样板就是为了解决上述问题而诞生的。样板用于规定线的颜色、宽度、线性、填充色、填充样式、字体、字号以及图形的形状。利用样板可以方便修改具有相同、相似属性的图元。
例如规定燃油管线使用样板A(绿色),蒸汽管线使用样板B(白色),如果要将所有的燃油管线改为黄色,只需要重新定义样板A的颜色属性为黄色即可,样板负责对所有画面中的燃油管线颜色进行替换。
结论
紫金桥软件提供了很多独特的方法来减少组态工程师的工作,利用这些方法,可以大大减少重复性劳动,并使得工程易于维护,提高了工作效率。
打造民族品牌 铸就工控业绩