请教:gettagbitstate函数的使用

使用WinCC和S7-Plcsim建立模拟。
在PLC中写入如下代码
A  M0.1
=  q1
在WinCC处写入全局动作
DWORD  state;
GetTagBitState("q1",&state);
if ( state == 0)
SetTagBit("ts1",1);
if(state == 1)
SetTagBit("ts1",0);
其中q1为外部变量(M0.0),ts1为内部变量。
我通过S7-Plcsim修改M0.1的数值,q1数值能够联动,但是内部变量ts1没有任何变化,本以为需要建立state内部变量,但貌似与是否存在state内部变量无关系,请高人指点一下,为什么使用了Gettagbitstate函数后,state数值没有跟随变量q1的变化进行联动呢?

最佳答案

GetTagBitState("q1",&state);
if (state == 0) //通讯ok
if (state == 1) //通讯不ok

也就是说,只要通讯正常,ts1 就是 1,通讯不正常,ts1 才是 0。
在 PLCSIM 里面将 CPU 拨至 STOP 模拟通讯断开,ts1 值变为 0。

更多变量状态的信息,在 WinCC Global Script 帮助中搜索 Tag statuses。
参考资料:http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_ID=25798&CID=1032

提问者对于答案的评价:
非常感谢两位的解答!将CPU设为STOP模式,出现预期效果,谢谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc266276.html

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

相关推荐