wincc按钮画面调用参数连接

问题:
1、wincc主画面多设备调用同一按钮画面,按钮画面中有启动和停止按钮。
通过C语言设置变量:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#define PW_FP    "Top"
#define FP              "1FM"
#define TagPrefix   "DJ01"

if (y>512)
SetTop(lpszPictureName,PW_FP,y-10);
else
SetTop(lpszPictureName,PW_FP,y-10);

SetTagPrefix(lpszPictureName,PW_FP,TagPrefix);
SetPictureName(lpszPictureName,PW_FP,FP);

if (x<640)
SetLeft(lpszPictureName,PW_FP,x-20);               
else
SetLeft(lpszPictureName,PW_FP,x-300);                  
SetPropChar(lpszPictureName,PW_FP,"CaptionText",GetPropChar(lpszPictureName,lpszObjectName,"ObjectName"));  
SetVisible(lpszPictureName,PW_FP,1);

SetText(FP,"StaticTopic",TagPrefix);
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
和画面中按钮直接连接变量:_OpenValve1开阀;_CloseValve1关阀
即实现通过变量DJ1__OpenValve1开阀和DJ1_CloseValve1关阀,
好像没有问题?!
2、现在的问题是:现在想采用被调用的画面中如果只通过设置一个按钮置位和复位来控制开阀和关阀,按钮画面中按钮如何用C语言实现变量连接:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
BOOL Z;
 Z=GetTagBit("TAG");
 if(Z==0) SetTagBit("TAG",1); 
else 
SetTagBit("TAG",0); 
中TAG如何设置?需要添加那些语句函数?

请专家或高手指导。

问题补充:
关于问题2中,被调用按钮有3个,
第1组调用对应变量:m1_start_stop;m2_start_stop;m3_start_stop
第2组调用对应变量:m4_start_stop;m5_start_stop;m6_start_stop
第3组调用对应变量:m7_start_stop;m8_start_stop;m9_start_stop
如何实现变量传送?

谢谢!

最佳答案

这个,有两种方法可以实现。
1、建立项目函数,并在项目函数里面建立全局变量,实现变量参数的传递。这个比较麻烦,不再详述。
2、这个方法是通过建立一个内部8位文本型变量Tag1,用来传递变量参数,这个比较容易实现。具体步骤如下:
a、在打开需要调用的画面的按钮里面加上以下脚本:SetTagChar("Tag1","Start_Stop"); Start_Stop是变量名称,即为控制阀门开启和关闭的BOOL变量名称。现在变量Tag1的内容是“Start_Stop”;
2、在公共画面中建立一个按钮,写上如下脚本:
char *st;
int a;
st=GetTagChar("Tag1");
a=GetTagBit(st); 
a=!a;
SetTagWord(st,a);
该脚本即可实现变量“Start_Stop”的翻转。

注意:再点击烦阀门弹出控制画面之前,务必按照步骤1将该阀门的实际变量写到Tag1中去。此外,需要注意的是,此画面不再需要变量前缀。

补充说明:如果变量不多的的话,完全可以参考上述方法,建立三个内部字符型变量,然后将你需要操作的三个变量名称写进这三个内部变量里面就可以了!

提问者对于答案的评价:
谢谢!
不是我要的答案。
你回答的是,单次调用画面。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc213650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月18日
下一篇 2017年11月18日

相关推荐

  • wincc的删除

    wincc我装了两次,一次在系统盘,另一次在d盘,每次RT时无法运行,现两盘中都有winccprojects,wincc软件已删除、上述文件夹无法删除,都提示之程序在执行。请问各位…

    SIMATIC WinCC 2019年6月11日
  • 历史数据记录存储地址选择

    我现在用的TP900触摸屏,历史数据记录里面保存路径有两种选择,1是SD卡,2是USB,我想在触摸屏外部做一个选择框,0选择不记录,1用SD卡记录,2选择USB,往有大神做过的说一…

    SIMATIC WinCC 2021年7月5日
  • Set contral = HMIRuntime.Screens("").ScreenItems("控件3")

    Set contral = HMIRuntime.Screens("").ScreenItems("控件3")…

    SIMATIC WinCC 2019年6月11日
  • WINCC报表中的数据如何导入到EXCELL?

    我在WINCC中有一报表,如何将报表中的数据导入到EXCELL中?? 最佳答案 通常情况下,数据进Excel是需要脚本的,大家常用的是vbs脚本。先搞清楚报表中的数据来自哪里,可能…

    SIMATIC WinCC 2021年7月5日
  • wincc做开关量报警的时候。有的我用ON出发报警 有的我用OFF触发报警

    wincc做开关量报警的时候。有的我用ON出发报警 有的我用OFF触发报警 最佳答案 报警属性条选择在下沿触发报警即可,每条报警均可单独设。默认是On触发。 提问者对于答…

    SIMATIC WinCC 2018年12月7日
  • WINCCWebUX支持广域网吗

    局域网内用电脑和手机都能浏览,可是切换到广域网就连不上了,是不是本身不支持广域网? 最佳答案 1、转帖:可以。以下两个方法任选一个:、   &nbsp…

    SIMATIC WinCC 2021年7月5日
  • WINCC7.4的VB脚本问题

    见图,这个VB脚本大概什么意思,做什么控制 图片说明:    最佳答案 此回答已完善 大意:这是一个画中画,显示仓库物件位置信息的画面。主画面A有一个画面窗口w…

    2021年7月5日
  • 报警消息的确认

    我在wincc7.3上组态了wincc alarmcontrol,并添加了报警记录。让电脑与PLC连接后,对报警记录地址进行强制,wincc alarmcont…

    2017年6月1日
  • 用户归档的授权

    我的WINCC在运行了几个小时后,就弹出来一个对话框,要授权,后来查明是要“用户归档授权”。请问这个授权是要花钱买吗?是A9WARC0602 ,说我没安装 最佳答案 Wi…

    SIMATIC WinCC 2019年6月11日
  • 上次已经提问过了,老问题

    我还是不知道在WIN2003 SP2下怎么装WINCC6.2,提示KB929046,要在WIN2003光盘里打补丁吗,有没有说的清楚点的啊,一夜头白了,实在不行装WIN2…

    SIMATIC WinCC 2019年6月11日