Wincc人机交互中,工艺画面上有时会有同类设备要做同样的状态显示,比如阀门正在动作背景颜色绿色闪烁,开到位不闪烁显示蓝色,关到位不闪烁显示红色,同时还要显示阀门开度。这类需求下,我们可以把同类设备做成一个面板(faceplate),在需要的地方创建一个面板的实例,以加快项目开发的速度。本文还是以阀门为例描述。
1. 打开Wincc项目管理器,点击菜单“文件”-“新建面板类型”(ctrl+t),或者在工具栏上点击新建面板类型按钮
尺寸设定为宽210,高230
在面板上放置两个圆圈,名字分别为val_display1和val_display2,放置一个多边形,名字为val_display3,放置两个静态文本,名字分别为title和M。放置一个输入输出域,名字为Val_position_val。放置完成后如图:
2. 点击菜单“编辑”-“组态面板类型”,在弹出的对话框中Properpies下新建11个属性,名且重新命名(为便于理解).
3. 在上面的对话框,把实际对象属性逐个用鼠标拖拽到说选属性类别下,如图所示。
在面板的输入输出域-事件-属性主题-输出输入-输出值-更改,添加以下VBS脚本
Sub OutputValue_OnPropertyChanged(ByVal Item, ByVal value)
If value<5 Then '阀门开度低于5%不闪烁,红色
SmartTags("Properties\Val_FlashColor")=False
SmartTags("Properties\Val_DisplayBackColor").value= vbRed
Elseif value>=5 And value<=95 Then '阀门开度大于5%低于95% 闪烁,绿色
SmartTags("Properties\Val_FlashColor")=True
SmartTags("Properties\Val_Flashon")=vbGreen
Else '阀门开度等于高于95%不闪烁,蓝色
SmartTags("Properties\Val_FlashColor")=False
SmartTags("Properties\Val_DisplayBackColor")=vbBLUE
End If
End Sub
其中SmartTags针对面板属性进行读取和设置,每一类属性设置数值之后,其下的属性也跟着得到数值。比如田间满足时,Properties\Val_FlashColor(也就是控制是否闪烁)为“假”,那么其下三个子属性val_display1.flashbackcolor、val_display2.flashbackcolor、val_display3.flashbackcolor全部为假,这样可以减少编程工作量。要注意SmartTags语句中“Properties”单词的大小写,我在Wincc V7.3中实验,这个单词大小写如果不严格和上面一致,程序是没有效果的。 面板编辑完成后保存退出。
4. 由于只是演示,所以在内部变量新建三个32位浮点数变量Val1_Position,Val2_Position,Val3_Position。
5. 在wincc页面上可以添加面板实例,从“标准”-“智能对象”-“面板实例”中选取刚才制作的面板类型,放置在页面上合适的位置。其属性-其他-缩放模式可以选择“比例”、“1:1”、“不成比例”,此处选择“1:1”。在属性-用户自定义2-titletext中,可以修改这个阀门的名字。属性Position_Outputvalue中关联变量Val1_Position。同样的方法再放置阀门2和阀门3.
6.保存运行,阀门1输入开度3,阀门2输入开度30,阀门3输入开度98%,可以看到阀门1不闪烁,红色;阀门2闪烁,绿色;阀门3不闪烁,蓝色。