quote:以下是引用Naga_Orochi在2006-04-13 10:16:27的发言:
问题简单看来需要在WinCC处理变量获取上、下沿信号。
应该需要借助一些静态存储的纪录区来编程,那么可以先定义一个过程记录变量STag(Bool类型,内部变量)。
一个笨办法:
//在WinCC运行开始先触发一个初始化动作函数,再进行触发信号的获取
BOOL IniTag()
BOOL bRet;
bRet=GetTagBit(YourTag);
SetTagBit(STag,bRet);
}
//上沿:(动作应用:根据需要设置触发周期,可以得到脉冲)
BOOL EnableArchive()
{
BOOL bRet;
BOOL cRet;
bRet=GetTagBit(YourTag);
cRet=GetTagBit(STag);
if (bRet<>cRet)&&(bRet=TRUE)
{
return TRUE;
SetTagBit(STag,bRet);
}
else
{
return FALSE;
}
}
//下沿:(动作应用:根据需要设置触发周期,可以得到脉冲)
BOOL DisableArchive()
{
BOOL bRet;
BOOL cRet;
bRet=GetTagBit(YourTag);
cRet=GetTagBit(STag);
if (bRet<>cRet)&&(bRet=FASLE)
{
return TRUE;
SetTagBit(STag,bRet);
}
else
{
return FALSE;
}
}
诸如BRET=TRUE,BRET<>CRET我觉得值得商榷.如果是BOOL型,判断BOOL的严格的语法可能if(bret)和if(!bret)更合适
<>用同或或者异或判别更合适.
至于这段程序能否实现仅上升沿归档,可能需要测试才有结论