搬家第45天-Citect2018元数据使用3:与精灵的结合

前面学习了元数据的简单使用,元数据还可以与精灵结合使用。比如一个工艺画面有很多仪表数据显示,用户希望正常情况下仪表数据背景蓝色,字体白色,高限报警时,背景黄色,字体还是白色,高高限报警时背景红色,字体白色。数字后面紧跟工程单位;鼠标放在上面显示这个数值的位号、测点名称;鼠标单击数值时,弹出的面板显示趋势,面板上同时显示这个仪表检测的工艺名称、量程范围、面板上的趋势范围自动调整为工程量纲,自动显示游标,趋势跨度一个小时。

按照常规办法一个一个仪表标签去做,效率很低还容易出错。使用精灵和元数据,形成模板,就会快的很多。

1. 首先确保仪表标签格式统一,比如下面的格式:

位号_HMI   表示仪表数值显示

位号_H      表示仪表数值超高限

位号_HH   表示仪表数值超高高限

按照这个思路建立一批变量

2. 新建一个页面!Trend,用于弹出式面板显示趋势,放置文字空间、数字控件和过程分析其控件

?L_Limit?是字符串类型,表示量程下限,?H_Limit?是字符串类型,表示量程上限,?DW?是字符串类型,表示工程单位,?H?表示高县报警数值,?HH?表示高高限报警数值。

在这里过程分析其的编号是AN8,这个页面的“当页面显示时”事件写下面的2个函数

ProcessAnalystSetPen(0,?TREND?,"AN8",0,0)

函数ProcessAnalystSetPen((iPen, sTag [, sObjName [, iPane [, iPenType]]]) )

函数用于设置过程分析器的趋势笔,有5个参数。

第一个参数iPen,表示笔的编号,这里数值为0,表示当前的笔

第二个参数sTag,表示给趋势笔配置的标签位号。

第三个参数sObjectNmae为可选参数,表示过程分析器编号,这里是AN8

第四个参数是iPane为可选参数,表示趋势板编号,一个板上可以有好几个趋势,相当于是一个组。这里是0,表示是第一个板。

第五个参数iPenType为可选参数,表示趋势类型,这里数值为0,表示模拟量趋势。如果为1,表示数字量趋势,2表示报警趋势。

 

3. 新建一个精灵AI_HMI,属于精灵组AI,先画一个小的矩形,用于背景颜色设置。填充颜色。

数值正常,背景为蓝色,高限报警来了显示黄色背景,高高限报警来了,显示红色。

在这个精灵上放置一个数字控件,调整好字体和大小。设置显示格式如下。

这个数字选项卡的访问设置提示信息

数字控件的元数据选项卡设置元数据

DW表示工程单位。H表示高限报警值,H_Limit表示两成上限,HH表示高高限报警值,L_Limit表示量程下限,Trend表示要在弹出趋势面板上显示的标签。这几个元数据的数值都引用了精灵中变量写法,单引号引用精灵变量,结合前面制作的弹出式面板就好理解命名方法了。

数字控件的输入选项卡在鼠标单机事件写入两个函数

AssMetadataPopUp("!TREND");
      WinTitle("%TISHI%")

SetPASpan(%L_Limit%,%H_Limit%)

第一个函数AssMetadataPopUp(sPage [,nAN])表示弹出元数据传递窗口,有两个参数。

      第一个参数sPage表示页面名称,这里是弹出式页面!Trend

      第二个参数可选,表示控件的AN编号,这里没有定义。

      第二个函数表示窗口标题,这里使用了精灵变量,就是在数字控件的访问选项卡那里有一个提示选项,当时绑定了一个精灵变量。运行后鼠标放到数字控件上面会显示%TISHI%定义的字符串,单机鼠标弹出窗口的标题会显示这个提示的内容。

 

     第三个函数设置弹出面板上过程分析器控件趋势笔的数值轴上下限,对应于量程上下限。

第三个函数详细内容如下

FUNCTION SetPASpan(REAL LLimit,REAL HLimit)
OBJECT objPA
OBJECT hPanes
OBJECT hPane
OBJECT hPens
OBJECT hPen
OBJECT hCommands
OBJECT hCommand
objPA=ObjectByName("AN8")
hPanes=_OBJECTGetproperty(objPA,"panes")//得到面板集
hPane=_OBJECTCallMethod(hPanes,"get_item",1)//得到面板1
hPens=_OBJECTgetproperty(hPane,"pens")//得到面板1下面的所有趋势笔
hPen=_OBJECTCallMethod(hPens,"get_item",1)//得到板1下面的趋势笔1
_ObjectCallMethod(hPen, "SetDefaultSpan", 0, 0, 1, 0, 0, 0)//设置缺省时间跨度
_ObjectCallMethod(hPen, "ResetToDefaultSpan");//应用缺省时间跨度
//显示/隐藏游标
hCommands=_OBJECTGetproperty(objPA,"CommandSystem")
_ObjectCallMethod(hCommands,"Execute","Citect_Command_ToggleCursorVisibility")
//设定数值轴上下限
_ObjectCallMethod(hPen, "PutVerticalAxisSpan", LLimit, HLimit)
END

新增一个文本控件,前景做成白色,和数字控件一样,用来显示这个仪表检测数值的单位,也是使用精灵变量。

到了这里,这个仪表显示数值的精灵就做好了。
 
       工艺画面上插入一个刚才建立的精灵
可以定义这个精灵显示的时哪一个变量标签,它的提示是什么,范围是什么,高限是什么,高高限是什么,单位是什么。设置完成后保存编译运行,这个精灵显示了数值,把鼠标放到这个精灵上会显示提示这个变量什么意思,单击鼠标会弹出面板显示趋势,同时显示这个变量相关信息。趋势面板上的过程分析器自动加载游标,跨度1小时。
 
 

 这一次练习,对元数据的应用加深了印象,还需要多多学习了解。

posted @ 2021-03-14 14:04  来自金沙江的小鱼  阅读(590)  评论(0编辑  收藏  举报