回复:一本正经“消灭”双线圈问题

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23138
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2022-12-11 18:55:20

25楼

展开查看
以下是引用yanxiao在2022-12-10 12:40:37的发言 >19楼

临时变量的使用,我的原则是“短线使用”,保持这些临时变量在视线范围内。

当处理Q0.0时,Q0.0的视线最短,是焦点中心,使用Q0.0本身作临时中间变量是安全的。

当然,前提条件是,此时Q0.0没有与外界联系(非立即输出),是自由的,最终正确的值,会替代临时变量值。


至于中断问题,这是特别要考虑的事项。

如果经特别考虑还出问题,只能归为没有考虑周全,或缺乏正确的方法。

以下是引用yming在2022-12-09 19:45:21的发言 >13楼:确实,很早200的时候...

引用13楼详细内容:

确实,很早200的时候,写程序前,预估M、V存储区紧张时,也会这样用Q做临时变量的。

不会大手大脚的随意用M、V。

若打印逻辑程序段太长,要分行时,也会用其中值充当临时中间变量。两次使用。(只为了好看。)

正如版主所说,这种看似双线圈,其实,只是当作临时变量、中间变量使用而已。是有把握不出错的“双线圈”。(其实,不写注释,也能看明白。如同累加似的。)

关于中断改写。我怎么记得:200 在一个程序段(网络)中,是不会被中断的。要执行完该行指令之后,再被中断。我记错了?


以下是引用yanxiao在2022-12-09 17:52:24的发言 >11楼:回楼上:双线圈写法...

引用11楼详细内容:

回楼上:

双线圈写法,仅是一个简单且抽象的例子,仅具有说明问题的意义。


如何用STL写程序,可以在一个网络中写下整个20K以上的程序。

但如果你用LAD写,一个网络能装入的程序量非常有限,当需要分两个以上网络完成一个逻辑功能时,需要传递一些前一个网络的中间结果,你可能会启用中间变量作中介。

例子中的双线圈写法,Q0.0自身承担中间变量,但不影响最终的逻辑结果。

这是一种“环保”的写法。


关于你提到的,某些中间Q值没办法真正输出,被 后面覆盖的问题。

我一开始就声明,评判一个程序前,先说明程序要实现的功能。

没有功能说明,评判程序如何如何,是没有意义的。

如果你的程序要求中间结果也能输出到 外界,请用立即输出指令。

非常同意!“视野范围内!

对于新手来说,“双线圈”的问题,一定要搞清楚。这样才能从“必然王国”走向“自由王国”。

这种“线圈”(或布尔逻辑赋值语句)与其紧密相关联的,还有重要的一条:赋值语句被(GOTO)跳过的问题。(当被跳过、未执行时,其值将为之前的赋值。而非此逻辑程序段赋值。)也就是Z版常说的全扫描问题。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8936条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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