关于一个WinCC脚本扫描问题

在一个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

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

相关推荐