我用了一个按钮,按钮是On_Off_2(图库里面的:\全局库\Operation\Toggle Buttons\)
我想要达到的功能是,点击按钮,位变量取反一次,同时切换画面。
在按钮原有的脚本基础上做了修改,如下
{
BOOL value;
LINKINFO plink;
PDLRTGetPropEx(0,lpszPictureName,lpszObjectName,"Toggle",VT_BOOL,&value,NULL,NULL,0,NULL,NULL);
if(value) OpenPicture("MAN.PDL"),value =FALSE ; //Return-Type: void
else OpenPicture("AUTO.PDL"),value = TRUE ;
PDLRTGetLink(0,lpszPictureName,lpszObjectName,"Toggle",&plink,NULL,NULL,NULL); //Rueckgabe-Typ :BOOL
if (plink.LinkType >2) return;
else SetTagBit (plink.szLinkName,(short int) value);}
其中改动部分添加了OpenPicture("MAN.PDL"), 和OpenPicture("AUTO.PDL"),
运行时的问题,点击按钮,位变量取反,再点击一次,切换画面,如此反复。我两个画面放的按钮是同样的,是经过复制的。如果人为的通过其他按钮将位变量先取反,则直接切换画面。
如果在语句中将两个切换的画面互换位置,则除点击按钮的第一次可能会先将位变量取反外变为1外,后面点击按钮都只做画面切换,位变量始终为1。
请各位看一下是什么原因,谢谢!
最佳答案
你这个太复杂了,我看不懂耶,不如自己做个简单的c脚本
在你的man.pdl画面上切换按钮的鼠标动作c脚本:
SetTagBit("NewTag",!GetTagBit("NewTag"));
OpenPicture("AUTO.PDL");
在你的auto.pdl画面上切换按钮的鼠标动作c脚本:
SetTagBit("NewTag",!GetTagBit("NewTag"));
OpenPicture("MAN.PDL");
NewTag就是你需要1-0变化的标签。
提问者对于答案的评价:
谢谢这位朋友,你的脚本可以在普通的按钮上使用,我使用的库里的按钮还是不行。打电话到西门子的热线,西门子热线的工程师告诉我要把打开画面的脚本放到后面,然后我做好了。谢谢西门子技术热线的工程师
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc278868.html