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

已锁定

W.M.J

  • 帖子

    144
  • 精华

    7
  • 被关注

    41

论坛等级:侠圣

注册时间:2016-11-15

黄金 黄金 如何晋级?

发布于 2024-09-25 11:37:55

5楼

展开查看
以下是引用勿在浮沙筑高台在2024-09-24 20:03:54的发言 >0楼

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








IF  THEN  END_IF,你可理解成一个“SET”指令。所以,你的截图中的SCL用LAD表示的话,把你截图的LAD语句红框中的输出线圈改为SET就可以。顺便说一下,你截图LAD就是经常提到的“双线圈”,这个尽量不要这么使用。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11129条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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