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

已锁定

Zane

西门子1847工业学习平台

  • 帖子

    21202
  • 精华

    403
  • 被关注

    1496

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2022-12-12 11:25:19

37楼

展开查看
以下是引用yanxiao在2022-12-11 23:47:49的发言 >30楼

我再做一下Z版的这个例子.

先定义信号:

MS:手动启动指令,状态型值

AS:自动启动指令,状态型值

NMA:当前输入(新的)手自动指令,状态值,0=M,1=A

PMA:前一次扫描留下的手自动指令,状态值,0=M,1=A

FAULT:故障状态,0=正常,1=故障

RUN:运行状态,0=停止,1=运行

网络1

LD     RUN                         // 电机运行中

A      PMA                         // 取前一扫描留下的值

LDN    RUN                         // 电机未运行

A      NMA                         // 取当前输入的新值

OLD                                // 合并

=      PMA                         // 作为本次扫描使用的值

网络2

LD     MS                          // 手动命令

AN     PMA                         // 在手动模式下有效

LD     AS                          // 自动命令

A      PMA                         // 在自动模式下有效

OLD                                // 合并

AN     FAULT                       // 非故障状态

=      RUN                         // 电机运行

习惯LAD的网友,在STL视图下COPY进去,再转成LAD视图即可。

只是在LAD下,看不到注释了。


这段程序,隔几个扫描周期调用(扫描)一次,并不会出现问题。

以下是引用Zane在2022-12-11 22:58:41的发言 >28楼:我强调一下吧,我讲...

引用28楼详细内容:

我强调一下吧,我讲的逻辑运算全扫描,逻辑变量只赋值一次,指的是通常二进制逻辑运算涉及的逻辑变量(也就是布尔变量)。


我从来没有公开讲过,数值处理运算的数值变量也要全扫描并且只赋值一次。


举个例子大家去试试吧


电机启停控制,有手动指令M_Cmd(1=启动),有自动指令A_Cmd(1=启动),手自动切换指令M_A(0=M,1=A),有故障信号FAULT,有运行反馈信号RUN,要求电机在运行中手自动切换指令无效。


以下是引用Zane在2022-12-09 21:47:24的发言 >15楼:所以,我的做法就是...

引用15楼详细内容:

所以,我的做法就是逻辑变量只赋值一次。


没有双线圈,多线圈的概念, 就是赋值变量的次数。

这个程序先不论逻辑正确与否,从形式上看完全符合全扫描,逻辑变量只赋值一次的规范呀

Zane 注册自动化系统工程师 Always save before download
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9116条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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