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

已锁定

yanxiao

版主

  • 帖子

    12206
  • 精华

    47
  • 被关注

    189

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2022-12-09 09:05:18

6楼

展开查看
以下是引用Zane在2022-12-08 23:48:54的发言 >1楼

方法1:最简单,没有中断问题,没有立即输出问题。

方法2:可以提供一个与IO点无关中间状态,没有中断问题,没有立即输出问题。

方法3:有中断问题,有立即输出问题,Q点改了,程序还要改两个地方,程序指令还多。


知道了1和2,为啥要用3呢?

1、程序要先说明功能,才能判断是否存在问题。直接讨论程序是否存在问题,没有意义。

编程者使用立即输出,他必须有明确的目的。

而且,立即输出实际上取消了输出缓存机制,这种情况下,没有双线圈问题,所有的输出直接反应在外界电路中。

比如:

网络1

LD     Always_On:SM0.0

MOVD   AC0, AC0

粗看没有产生任何有用的结果。但是,如果加上注释(功能说明),情况就不一样了:

LD     Always_On:SM0.0

MOVD   AC0, AC0                    // NOP指令,短延时


2、关于中断引发的问题。

主帖中已经有提到,如果中断和主程序间存在变量共享,始终存在相互配合的问题,不限于Q点,存在于任何的共享变量中。如果不予重视,随时随地会埋下地雷。

也通过一个例子来说明问题:

程序实现如下逻辑式:

Q0.0=(M0.0 and I0.0) or (!M0.0 and I0.1),其中的“!”是“逻辑非”的意思。

这是一个二选一的数据选择逻辑:

当M0.0=0时,Q0.0=I0.1

当M0.0=1时,Q0.0=I0.0

程序如下:

网络1

LD     M0.0                        // 读取

A      I0.0                        // 实现 M0.0 and I0.0

LDN    M0.0                        // 二次读取

A      I0.1                        // 实现 !M0.0 and I0.1

OLD                                // 完成 or

=      Q0.0                        // 输出

有人认为这个写法有问题吗,需要禁止这样写吗?

如果,M0.0与中断存在共享,也就是说,M0.0的值由中断程序给定,那么,上述写法就埋下了一个地雷。

网络1

LD     M0.0                        // 读取

A      I0.0                        // 实现 M0.0 and I0.0

// 发生中断,中断改变了M0.0的值

LDN    M0.0                        // 二次读取

A      I0.1                        // 实现 !M0.0 and I0.1

OLD                                // 完成 or

=      Q0.0                        // 输出

程序爆雷时,Q=0或Q=I0.0 or I0.1

改变一下写法,如下:

网络1

LD     M0.0                        // 一次性读取

LPS                                // 入栈

A      I0.0                        // 实现 M0.0 and I0.0

LDS    1                           // 出栈

NOT                                // 逻辑非

A      I0.1                        // 实现 !M0.0 and I0.1

OLD                                // 完成 or

=      Q0.0                        // 输出

这一段,无法转成对应的LAD。入栈、出栈可以用中间变量M0.0实现。

上述写法,与中断互动,不会有埋地雷了。

但是,显然不能因为中断的需要,类似“双线圈”的问题,创设一个位变“双读取”、多读取问题。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9142条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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