| 作者 | 主题 |
|---|---|
|
勿在浮沙筑高台 侠客
经验值:686 发帖数:83 精华帖:0 |
楼主
主题:新手陷阱,LAD赋值()跟SCL赋值 := 背景:之前一直以为LAD的()用SCL写就是A:=B;所以在实现功能块的手自动时,我用了()。手动:hmi界面控制功能块;自动:自动化程序控制功能块。 第一感觉:
新手本新,乍一看,合理,自动模式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.大家一般都是怎么实现功能块的手自动控制跟切换的。(就是如何替换功能块的控制流的)? |