新手求助:这2条程序中有何不对

NET 1
LD     SM0.0
AW<>   VW338, 1
A      I0.2
EU
MOVW   1, VW336

NET 2
LD     SM0.0
AW<>   VW336, 1
A      I0.2
ED
MOVW   1, VW338
程序中我想使VW336和VW338不同时为1
但这样写出来为什么可以同时为1
求各位前辈指教

最佳答案

NET 1
LD     SM0.0
AW<>   VW338, 1
A      I0.2
EU
MOVW   1, VW336
在I0.2为1且VW338由其它值到1跳变时执行或
VW338不为1且I0.2由0到1跳时执行
NET 2
LD     SM0.0
AW<>   VW336, 1
A      I0.2
ED
MOVW   1, VW338
在I0.2为1且VW336由1到其它值跳变时执行或
VW336不为1且I0.2由1到0跳变时执行
程序存在逻辑错误,两个同时为1是正常的

NET 1
LD     SM0.0
AW<>   VW338, 1
ED //由非1数值到1跳变时
A      I0.2  
MOVW   0, VW336 //把这个变成不是1


NET 2
LD     SM0.0
AW<>   VW333, 1
ED //由非1数值到1跳变时
A      I0.2  
MOVW   0, VW338 //把这个变成不是1


NET 3
LD     SM0.1
AW==   VW338, 1
AW==  VW336,1
a      I0.2  
MOVW   0, VW336 //初始时两个同为1,改其中一个

以上把I0.2当允许标志用,以下当检测位用,跳变时检测
NET 1
LD     SM0.0
A      I0.2 
EU
AW<>   VW338, 1
MOVW   1, VW336 

NET 2
LD     SM0.0
A      I0.2 
ED
AW<>   VW336, 1
MOVW   1, VW338 

NET 3
LD     SM0.1
AW==   VW338, 1
AW==  VW336,1
MOVW   0, VW336
到这里还存在为1的可能,就是通过其它程序或人为把它改成1

提问者对于答案的评价:
多谢!的确是您所指出的错误。

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

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

相关推荐