电柜上有一2位旋钮,用于某阀门开启/关闭,另外上位机WINCC中也要在界面里增加个类似旋钮实现控制该阀门.
用库里的Toggle的on_off3,C脚本....
我目的:如果在上位机里使能该旋钮,先提示"确定要开启某阀门吗",如果点击"确定"钮,则往下执行,如果点击"否"钮则程序返回...,但是如果点击确定后电柜面板旋钮处于开启位置(I2.0),则提示提示"电柜面板旋钮已处于开启位置"则程序返回,但是我第一个提示正确,第2个提示不成功
以下是Toggle的on_off3属性C脚本,哪里不合适?
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
BOOL value;
LINKINFO plink;
//if (!C_ask()) return;
int itemp1;
int itemp2;
CHAR *MSG1="是否确认要手动改变设备的运行状态?";
CHAR *MSG2="电柜面板上对应开关已开启!";
itemp1=MessageBox(NULL,MSG1,"提示",
MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
if (itemp1==IDNO) return;
//有问题部分........
if("倒料站除尘面板开启钮"==TRUE)
{itemp2=MessageBox(NULL,MSG2,"提示",
MB_OK|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) ;
return;}
else
//有问题部分........
//以下是Toggle,默认程序,不用管它
PDLRTGetPropEx(0,lpszPictureName,lpszObjectName,"Toggle",VT_BOOL,&value,NULL,NULL,0,NULL,NULL);
if(value) value =FALSE;
else 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);
}
最佳答案
应该这样:
if(GetTagBit("倒料站除尘面板开启钮")==1)
{itemp2=MessageBox(NULL,MSG2,"提示",
MB_OK|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) ;
return;}
else
前提是“倒料站除尘面板开启钮”是2进制变量。
提问者对于答案的评价:
OK
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc266815.html