在wincc的c脚本动作里读取wincc定义的外部变量值并传送给内部变量,通讯正常,外部变量对应plc地址DB3.DW41.0,内部变量对应输入输出域,显示的数值却是0,此时外部变量值为1,程序如下
#include "apdefap.h"
int gscAction( void )
{
#pragma option(mbcs)
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
DWORD state14=0;
GetTagBitState("VAR_68",&state14);
//state14=GetTagBit("VAR_68");
if( !state14==0){
int value14=0;
value14=GetTagDWord("jiantou14");
value14+=1;
if( value14>1){value14=0;}
SetTagDWord("jiantou14",value14);
}
return 0;
}
用SetTagBitWait;SetTagBitState都试过,就是读不出来
问题补充:
VAR_17时外部变量,jiantou14是内部变量,功能是想外部变量为1时,内部变量值循环+1,用来控制状态显示,好做成轮子的动态效果。
最佳答案
参考链接:
《如何WINCC,通过c脚本读取存档变量》
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=40018&cid=1032
《西门子上位机WINCC怎样与外部变量进行连接》
http://maxcola.blog.163.com/blog/static/197164083201212552536859/
《为什么在WINCC C脚本内定义的变量,不与WINCC变量链接,内部变量就不动作》
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=81138&cid=1027
提问者对于答案的评价:
问题我自己解决掉了,加wait函数也不太好用,后来改成读位好一些,感觉还是软件存在一定问题,谢谢啦
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc247154.html