在一个WinCC脚本中,有下面一段代码:
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
DWORD AAA;
SetTagDWord("line",550);
AAA=GetTagDWord("line");
if(AAA<700)
{
AAA+=10;
}
SetTagDWord("line",AAA);
return AAA;
}
它是一条线的代码,功能是使那条线移动。脚本放在线的属性——几何——位置X处(选择了C动作)其中"line"是WinCC的一个内部变量(有符号32位),运行的结果是第一次扫描后AAA的值是560,第二次AAA的值是570,但我认为第二次扫描的结果仍然应该是AAA的值为560,因为第二次扫描又要经过SetTagDWord("line",550);和AAA=GetTagDWord("line");这两句。第二次扫描经过SetTagDWord("line",550);和AAA=GetTagDWord("line");这两句时难道不是把AAA的值又赋为550了吗?
专家建议
您好,只要将代码中的 GetTagDWord 改为 GetTagDWordWait 即可。原因是使用 GetTagDWordWait 所获得的值更加准确。关于 GetTag* 和 GetTag*Wait 的区别,请参考以下链接:
http://support.automation.siemens.com/CN/view/zh/2952161
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc310921.html