11. WINCC不同变量结构使用同一窗口实现画面切换

WINCC不同变量结构使用同一窗口实现画面切换

1. 新建画面

使用同一个画面窗口利用按钮切换不同变量前缀的内容画面,并实现不同系统之间的切换。
首先新建两个子画面(电机,风机)内容包括一个小标题,两个按钮,两个状态显示。
在这里插入图片描述
在这里插入图片描述
然后建立一个弹窗画面用来切换子画面包括两个切换按钮,两个画面窗口,实现电机和风机的切换。
在这里插入图片描述
建立一个主画面用来调用弹窗画面,实现系统的切换。
在这里插入图片描述

2. 建立变量

在这里插入图片描述

名称注释数据类型长度连接分组
1_Motor_start1#电机启动二进制变量1内部变量弹窗
1_Motor_stop1#电机停止二进制变量1内部变量弹窗
1_ventilator_start1#风机启动二进制变量1内部变量弹窗
1_ventilator_stop1#风机停止二进制变量1内部变量弹窗
2_Motor_start2#电机启动二进制变量1内部变量弹窗
2_Motor_stop2#电机停止二进制变量1内部变量弹窗
2_ventilator_start2#风机启动二进制变量1内部变量弹窗
2_ventilator_stop2#风机停止二进制变量1内部变量弹窗
BT_motor电机标题文本变量 8 位字符集255内部变量弹窗
BT_ventilator风机标题文本变量 8 位字符集255内部变量弹窗
BT_弹窗弹窗标题文本变量 8 位字符集255内部变量弹窗
Picture画面切换文本变量 16 位字符集255内部变量弹窗
Prefix_motor电机变量前缀文本变量 16 位字符集255内部变量弹窗
Prefix_ventilator风机变量前缀文本变量 16 位字符集255内部变量弹窗
temp前缀选择无符号的 16 位值2内部变量弹窗
Temp_motor电机显示二进制变量1内部变量弹窗
Temp_ventilator风机显示二进制变量1内部变量弹窗
Temp_弹窗弹窗弹出二进制变量1内部变量弹窗
X_弹窗弹窗坐标无符号的 16 位值2内部变量弹窗
XBT_motor电机小标题文本变量 8 位字符集255内部变量弹窗
XBT_ventilator风机小标题文本变量 8 位字符集255内部变量弹窗
Y_弹窗弹窗坐标无符号的 16 位值2内部变量弹窗

3. 连接变量

首先打开电机子画面连接变量,连接小标题(@NPTP:XBT_motor),因为小标题没有变量前缀所以要这这样写。屏蔽掉前缀。

在这里插入图片描述
连接启动按钮(停止按钮也这样设置,但是连接stop变量),这样是按下置1,再按一下复0。
在这里插入图片描述
同理修改风机的变量连接。

转到切换画面修改电机按钮属性
在这里插入图片描述

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int n;
SetTagBit("Temp_motor",1);	   //打开电机画面 
SetTagBit("Temp_ventilator",0); //关闭风机画面 
n = GetTagWord("temp");	//获取主画面系统编号的赋值
if (n==0)                    //根据1号系统编号分配变量前缀
{
SetTagChar("Prefix_motor","1_Motor_");//Prefix_motor是电机的变量前缀的中间变量,1_Motor_是变量前缀
SetTagChar("XBT_motor","1号电机");//XBT_motor是电机画面的标题变量,1号电机是要显示的内容
}
if (n==1)  //根据2号系统编号分配变量前缀
{
SetTagChar("Prefix_motor","2_Motor_"); 
SetTagChar("XBT_motor","2号电机"); 
}

修改电机画面窗口的属性
在这里插入图片描述
修改电机窗口的变量前缀
在这里插入图片描述
同理修改风机按钮和风机窗口
在这里插入图片描述

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int n;
SetTagBit("Temp_ventilator",1); 
SetTagBit("Temp_motor",0);	 
n = GetTagWord("temp"); 
if (n==0)
{
SetTagChar("Prefix_ventilator","1_ventilator_"); 
SetTagChar("XBT_ventilator","1号风机"); 
}
if (n==1)
{
SetTagChar("Prefix_ventilator","2_ventilator_"); 
SetTagChar("XBT_ventilator","2号风机"); 
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
回到主界面设置弹窗的属性
在这里插入图片描述
在这里插入图片描述
设置主画面1号系统按钮的事件
在这里插入图片描述

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
SetTagWord("X_弹窗",180);//弹窗画面窗口的位置
SetTagWord("Y_弹窗",180);//弹窗画面窗口的位置
SetTagBit("Temp_弹窗",0);//关闭上一个弹窗画面窗口
SetTagChar("BT_弹窗","1号系统");//BT_motor是1号弹窗画面窗口的标题变量
SetTagBit("Temp_弹窗",1);//打开弹窗弹窗画面窗口
SetTagWord("temp",0);//识别系统编号赋值便于给弹窗画面的变量前缀
SetTagBit("Temp_motor",1);	//默认打开电机 
SetTagBit("Temp_ventilator",0);	//默认关闭风机
SetTagChar("Prefix_motor","1_Motor_"); //给当前1号系统的电机分配前缀
SetTagChar("XBT_motor","1号电机");//给弹窗画面中的标题分配内容
}

同理修改2号系统按钮
在这里插入图片描述

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
SetTagWord("X_弹窗",180);//弹窗画面窗口的位置
SetTagWord("Y_弹窗",240);//弹窗画面窗口的位置
SetTagBit("Temp_弹窗",0);//关闭上一个弹窗画面窗口
SetTagChar("BT_弹窗","2号系统");//BT_motor是1号弹窗画面窗口的标题变量
SetTagBit("Temp_弹窗",1);//打开弹窗弹窗画面窗口
SetTagWord("temp",1);//识别系统编号赋值便于给弹窗画面的变量前缀
SetTagBit("Temp_motor",1);	//默认打开电机 
SetTagBit("Temp_ventilator",0);	//默认关闭风机
SetTagChar("Prefix_motor","2_Motor_"); //给当前1号系统的电机分配前缀
SetTagChar("XBT_motor","2号电机");//给弹窗画面中的标题分配内容
}

此时在切换画面的时候弹窗画面会自动显示出来,因此需要在画面切换按钮设置关闭全部的弹窗

#include "apdefap.h"
void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
SetTagBit("Temp_弹窗",0);
SetTagBit("Temp_motor",0);
SetTagBit("Temp_ventilator",0);
}

在这里插入图片描述
演示一下:
在这里插入图片描述
在这里插入图片描述

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值