WinCC实现多个相同控制按钮共用一个弹窗
1. 引言
当有很多重复的部件时,我们还需要使用弹窗,但是弹窗显示的内容是一致的,只不过需要根据按钮的不同进行信息更新。如果这个时候还一个个弹窗的建立就很浪费事件,我们通过使用一个窗口来显示多个重复部件的内容。
2. 实现步骤
step1:画面所示有三个风机和三个电机,分别为1、2、3号风机和1、2、3号电机,然后拖入两个画面窗口一个显示风机的信息一个显示电机的信息。
step2:设置项目需要的内部变量:
BT1表示电机弹窗的标题变量
BT1表示风扇弹窗的标题变量
DJX,DJY表示电机弹窗的坐标位置变量
FSX,FSY表示电机弹窗的坐标位置变量
PICTURE表示切换图片的变量(这个是实现画面切换才需要用的)
TEMP1,TEMP2表示电机和风扇弹窗是否弹出变量
TEMPQJ1,TEMPQJ2表示电机和风扇的变量前缀的变量;
NR1,NR2表示弹窗中内容(小标题)的变量
step3:设置项目需要的外部变量:
2#_1_DJ_END表示2号仓库1号电机停止
2#_2_FS_SATRT表示2号仓库2号风扇开启
以此类推
step4:电机和风扇显示的信息如下,文件名分别是电机启停.pdl和风扇启停.pdl。
step3:设置1号电机按钮
SetTagBit("TEMP1",0);//关闭上一个的电机弹窗,TEMP1时电机的弹窗内部变量,bit要去变量管理中设置好
SetTagChar("TEMPQJ1","2#_1_DJ_");//TEMPQJ1是电机的变量前缀的变量,2#_1_DJ_是变量前缀
SetTagChar("NR1","1号电机");//NR1是1号电机弹窗内容中的标题变量,1号电机是要显示的内容
SetTagChar("BT1","1号电机");//BT1是1号电机弹窗的标题变量,1号电机是要显示的内容
SetTagDouble("DJX",30);//DJX是电机弹窗的x位置
SetTagDouble("DJY",140);//DJY是电机弹窗的y位置
SetTagBit("TEMP1",1);//打开该电机弹窗
同理设置2号,3号电机的按钮
%2号风扇
SetTagBit("TEMP1",0);
SetTagChar("TEMPQJ1","2#_2_DJ_");
SetTagChar("NR1","2号电机");
SetTagChar("BT1","2号电机");
SetTagDouble("DJX",304);
SetTagDouble("DJY",270);
SetTagBit("TEMP1",1);
%3号风扇
SetTagBit("TEMP1",0);
SetTagChar("TEMPQJ1","2#_3_DJ_");
SetTagChar("NR1","3号电机");
SetTagChar("BT1","3号电机");
SetTagDouble("DJX",634);
SetTagDouble("DJY",84);
SetTagBit("TEMP1",1);
设置1,2,3号风扇的按钮
%%1号
SetTagBit("TEMP2",0);
SetTagDouble("FJX", 180);
SetTagDouble("FJY", 140);
SetTagChar("TEMPQJ2", "2#_1_FS_");
SetTagChar("BT2", "1号风扇");
SetTagChar("NR","1号风扇");
SetTagBit("TEMP2",1);
%%2号
SetTagBit("TEMP2",0);
SetTagDouble("FJX", 454);
SetTagDouble("FJY", 270);
SetTagChar("TEMPQJ2", "2#_2_FS_");
SetTagChar("BT2", "2号风扇");
SetTagChar("NR","2号风扇");
SetTagBit("TEMP2",1);
%%3号
SetTagBit("TEMP2",0);
SetTagDouble("FJX", 784);
SetTagDouble("FJY", 84);
SetTagChar("TEMPQJ2", "2#_3_FS_");
SetTagChar("BT2", "3号风扇");
SetTagChar("NR","3号风扇");
SetTagBit("TEMP2",1);
step4:设置弹窗的属性
设置几何目的是为了让弹窗随按钮的点击更换位置;
设置其它,显示需要动态显示,然后动态对话框——变量——TEMP1——布尔——是否
让其窗口显示标题
连接到我们要显示内容的画面
变量前缀的目的是我们要显示的内容有很多前边不一样后面一样的变量,如果不用变量前缀的话就需要建立很多按钮一个连接,比较麻烦。使用变量前缀的话就可以只建立一个部件就可显示多种内容。
然后设置标题要显示的内容。
然后设置弹窗要显示内容的变量前缀连接的是哪个画面。
同理设置风扇的弹窗
step4:设置弹窗内容的属性
因为是在内容里显示,因此都需要用变量前缀
@NOTP::NR1
这里是直接输入的,因为我们的变量只用变化前缀,后面不更改,所以我们在此界面使用的都是后面的变量比如2#_1_DJ_END,我们在前面只设置了2#1_DJ,而END是所有变量共有的,而我们并没有设置END的变量所以要直接输入,然后忽略就好了,系统会自动把他们合并到一起,这样我们就完成了一个部件显示多种内容。
其余的设置都是相同的,这里显示的是START,输入END就是end操作。