您好,欢迎访问泰安宏盛自动化科技有限公司!
20年专注工控自动化研发制造 系统设计\制作\安装一条龙服务
全国咨询热线:18605386049
当前位置: 首页 > 技术资料 > 程序案例

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

作者:小编 时间:2024-03-26 09:05:04 点击:

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

1. 新建画面

2. 建立变量

3. 连接变量

1. 新建画面

使用同一个画面窗口利用按钮切换不同变量前缀的内容画面,并实现不同系统之间的切换。

首先新建两个子画面(电机,风机)内容包括一个小标题,两个按钮,两个状态显示。

然后建立一个弹窗画面用来切换子画面包括两个切换按钮,两个画面窗口,实现电机和风机的切换。

undefined

建立一个主画面用来调用弹窗画面,实现系统的切换。

undefined

2. 建立变量

undefined

image.png

3. 连接变量

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

undefined

连接启动按钮(停止按钮也这样设置,但是连接stop变量),这样是按下置1,再按一下复0。

undefined

同理修改风机的变量连接。

转到切换画面修改电机按钮属性

undefined

#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号电机"); 
}

修改电机画面窗口的属性

undefined

修改电机窗口的变量前缀

undefined

同理修改风机按钮和风机窗口

undefined


#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号风机"); 
}

undefined

在这里插入图片描述
在这里插入图片描述
回到主界面设置弹窗的属性
在这里插入图片描述
在这里插入图片描述
设置主画面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);
}

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


QQ在线咨询
联系电话
17658151177
售后服务
17658151177