找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
这个可以用 全局脚本来实现,打开全局脚本编辑器,然后新建“全局动作”
然后写入下面代码
int a;
a=GetTagWord("a");
switch(a)
{
case 1 : {SetTagBit("b",1);
SetTagBit("c",0);
SetTagBit("d",0);
};
break;
case 2 : {SetTagBit("c",1);
SetTagBit("b",0);
SetTagBit("d",0);
};
break;
case 3 : {SetTagBit("d",1);
SetTagBit("b",0);
SetTagBit("c",0);
};
break;
}
或者用if else 也可以
int a;
a=GetTagWord("a");
if(a==1)
{
SetTagBit("b",1);
SetTagBit("c",0);
SetTagBit("d",0);
}
if(a==2)
{
SetTagBit("c",1);
SetTagBit("b",0);
SetTagBit("d",0);
}
if(a==3)
{
SetTagBit("d",1);
SetTagBit("c",0);
SetTagBit("b",0);
}
完成代码后编译,保存,然后选择触发器,建议选择变量"a” 作为触发器,这样当a发生变化时,执行全局动作,减少系统负载。当然你选择循环触发C全局动作也是可以的,就是浪费了系统的资源。
最后,不要忘了,设置全局脚本,在WINCC 激活时,自动启动,WINCC 服务器的属性里设置
当然,楼上的方法很好,直接在PLC 里面做吗,也很简单
L a
L 1
==I
S B
R C
R D
TAK
L 2
==I
S C
R B
R D
TAK
L 3
==I
S D
R B
R C
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城
比如
W=DB1.DBD0
A=DB1.DBX0.0
B=DB1.DBX0.1
C=DB1.DBX0.2
然后通过SetTagDWord("W",0x1000);
就是把A=DB1.DBX0.0置1了,
SetTagDWord("W",0x2000);
就是把B=DB1.DBX0.0置1了,
SetTagDWord("W",0xF000);
就是把 DB1.DBX0.0-DB1.DBX0.7 全部置1.