利用wincc的结构变量实现画面模板的功能
| 分类: wincc7.3 |
利用wincc的结构变量实现画面模板的功能,达到提高效率,减少重复的工作量。
实例环境:Wincc7.3,Win7x64
1
示例说明
1.1
示例任务
假设某生产现场有
3
台电机,每台电机都有电机名字、速度实际值、速度设定值、启停
状态等参数需要显示在
WinCC
画面中,需达到的效果如图
1-1
所示。
1.2
解决方案
在该任务中,每台电机参数类型都一致,可以使用自定义结构类型来存储电机的参数;
在画面中显示,每个电机的显示仅是数据不同,这可以通过建立画面模板来实现,画面模板
只需建立一次,然后多次调用画面模板并传入不同的电机参数,如图
1-2
所示。画面模板的
建立方式有两种:1.利用前缀变量建立画面窗口;2.利用动态向导建立画面模板。
图
1-2
2
建立结构变量
在
WinCC
项目中,双击“Tag
Management”打开变量管理窗口,如图
2-1
所示。右键
点击“Structure
tags”,选择“New
structure type”建立结构变量,本例命名为
Motor,如
图
2-2
所示。
选中
Motor,在“Structure
type elements”标签页下,添加结构变量的元素及其各元素
数据类型,完成后,如图
2-3
所示。进入“Structure
tags”标签页,添加三个
Data
type 为
Motor
的变量,如图
2-4
所示。至此,完成结构类型的定义和结构变量的添加。
3
使用变量前缀建立画面窗口
该方式是先组态一个画面作为画面模板,令画面中的对象与结构变量的元素相连,在运
行画面中,通过添加画面窗口调用该画面,并将画面窗口的前缀变量设置为结构变量的名称。
3.1
创建画面模板
3.1.1
新建画面
WinCC
Explorer 下右键点击“Grapics
Designer”,选择“New
picture”建立一个
画面模板,并命名为
PictureTemplate.Pdl。
打开画面,进入
Object
Properties 标签页,在
Properties
Object->geometry 中设置画
面模板的长宽,根据实际需求设定
3.1.2
组态
IO
域
在画面中添加一个
IO
域,随即弹出
IO Field
Configuration 对话框。
然后去掉
Tag
的变量前缀,仅保留
EntityName(即结构变量的元素名),再将
该
IO
域用于字符显示,还需要将
Properties->Output/Input->DataFormat
设置为
String,继续组态两个
IO
域,用于显示
SetValue
和
ActualValue
的变量值,操作方法参考上文,
3.2
创建起动画面,调用画面模板
在
WinCC
Explorer 中右键点击
Graphic
Designer 添加一个名为“PictureStart.pdl”的画面,右键点击该画面选择
Define screen
as start screen 使之成为起动画面。
打开
PictureStart.pdl
画面,添加入三个
PictureWindow
对象,并在
Properties->
Picture
Window->Geometry 中设置对象的长和宽,设置为与之前建立的画面模板一致,以保
证画面模板显示完整。
将三个对象的
PictureName
属性均设置为画面模板的名称
PictureTemplate.pdl,这样就
能调用之前画面模板的内容了,如图
3-25。
图
3-25
为了能让
PictureWindow
中显示不同的数据,还需要进行
PictureWindow
对象的
TagPrefix
属性设置。设置
TagPrefix
可以静态的,也可以通过变量或脚本进行动态设置,下面分别介绍。
3.2.1
静态设置
TagPrefix
选中画面中的
PictureWindow
控件,在
Properties->Picture
Window->Miscellaneous 中,
将
TagPrefix
的
Static
值设为
Motor1.或
Motor2.或
Motor3.,如图
3-26
所示。这样,
PictureWindow
三个对象中显示的数据就是来自于三个不同的结构变量。
Unrestricted
14
Copyright
ã
Siemens
AG Copyright year
All rights reserved
图
3-26
3.2.2
通过变量修改
TagPrefix
选中画面中的
PictureWindow
控件,在
Properties->Picture
Window->Miscellaneous 中,
将
TagPrefix
的
Dynamic
关联为
Tag(请自己在变量管理器中定义一个字符串变量用于控制
TagPrefix),Update
change 设为
Upon
change。
然后在
Event->Picture
Window->Property Topics->Miscellaneous->Tag
Prefix 中,右
击闪电图标,将
change
关联为
Direct
Connection,如图
3-28
和图
3-29。这样,就能在
TagPrefix
值变化后,重新加载画面名称,实现画面内容的更新。
3.2.3
通过脚本修改
TagPrefix
使用该方式的话,可以在画面中再添加一个按钮,在该按钮的
click
事件中编
C-Action脚本,可以实现对
TagPrefix
的动态修改,如图
3-30
所示。使用其他类型对象的事件动作脚本主要代码就两句。第一句为设置
TagPrefix
属性值,其中“Picture
Window1”请用您实际的对象名称代替,“Motor1.”为你要设置的变量前缀;第二句的作用为设置画面名称,画面就会重新加载一次,这样画面内容才会刷新。

加载中…