背景:之前一直以为LAD的()用SCL写就是A:=B;所以在实现功能块的手自动时,我用了()。手动:hmi界面控制功能块;自动:自动化程序控制功能块。
第一感觉:
增加一个功能块的bool输入引脚【自动模式】,true:自动,false:手动
LAD里 |自动模式/|----|HMI界面控制|---(功能块其他功能的控制引脚)。 如下图LAD部分
新手本新,乍一看,合理,自动模式false,功能块控制开关的值随HMI控制开关的值变化,满足hmi控制需求
到这里我是还没发现错误的。。。
但是当我开始思考自动模式true的场景时。。。我去,这个逻辑下,功能块控制开关的值直接写死false。。。
仔细一想,()虽然名为【赋值】但跟 := 的【赋值】还是不一样的。
如下图LAD部分替换为SCL的话,其实是:
if false = 自动模式 and HMI控制开关 then
功能块控制开关 := true;
else
功能块控制开关 := false;
end_if;
跟我设想里的逻辑:
if false = 自动模式 then
功能块控制开关 := HMI控制开关;
end_if;
不能说不一样,只能说天差地别
赶紧mark一下,防止以后又习惯性将两个等价。。。盲猜有不少道友犯过同样的错
顺便也请教下
1.下图SCL的逻辑,用LAD要怎么实现?
2.大家一般都是怎么实现功能块的手自动控制跟切换的。(就是如何替换功能块的控制流的)?