技术论坛

 新手陷阱,LAD赋值()跟SCL赋值 :=

返回主题列表
作者 主题
勿在浮沙筑高台
侠客

经验值:686
发帖数:83
精华帖:0
楼主    2024-09-24 20:03:54
主题:新手陷阱,LAD赋值()跟SCL赋值 :=

背景:之前一直以为LAD的()用SCL写就是A:=B;所以在实现功能块的手自动时,我用了()。手动:hmi界面控制功能块;自动:自动化程序控制功能块。

第一感觉

  1. 增加一个功能块的bool输入引脚【自动模式】,true:自动,false:手动

  2. 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.大家一般都是怎么实现功能块的手自动控制跟切换的。(就是如何替换功能块的控制流的)?








您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。