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

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23145
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2022-12-12 17:22:45

45楼

展开查看
以下是引用yanxiao在2022-12-12 13:43:19的发言 >42楼

我举一个例子,大家看看什么情况下会变得不可靠?

经典的两按钮、一输出的启、保、停。

初始化部分略去。

I0.0:启动按钮,1=按下

I0.1:停止按钮,1=按下

Q0.0:输出,1=启动运行


1、通常的写法

LD     I0.0                        // 启动

EU                                 // 脉冲型

O      Q0.0                        // 自保

AN     I0.1                        // 停止,状态型,停优先

=      Q0.0                        // 输出


2、R/S写法

网络1

LD     I0.0                        // 启动

EU                                 // 脉冲型

S      Q0.0, 1                     // 启动电机

网络2:

LDN    I0.0                        // 停止

R      Q0.0, 1                     // 停电机


3、“双线圈”写法

网络1

LD     I0.0                        // 启动

EU                                 // 脉冲型

O      Q0.0                        // 自保

=      Q0.0                        // 输出(实际是临时存贮)

网络2

LDN    I0.0                        // 停止

A      Q0.0                        // 清自保

=      Q0.0                        // 输出(最终值)


4、R/S+非全扫描写法

网络1

LD     I0.0                        // 启动

EU                                 // 脉冲型 

NOT                                // 未发生

JMP    1                           // 跳转

网络2

LD     Always_On

S      Q0.0, 1                     // 只有在启动按钮按下时,被扫一次

网络3

LBL    1                           // 第1个跳转点

网络4

LDN    I0.1                        // 停止没有按下

JMP    2                           // 跳转

网络5

LD     Always_On

R      Q0.0, 1                     // 只有停止按钮按下时,才扫描

网络6

LBL    2                           // 第二个跳转点


5、“双线圈”+非全扫描写法

网络1

LD     I0.0                        // 启动

EU                                 // 脉冲型 

NOT                                // 未发生

JMP    1                           // 跳转

网络2

LD     Always_On

=      Q0.0                     // 置1

网络3

LBL    1                           // 第1个跳转点

网络4

LDN    I0.1                        // 停止没有按下

JMP    2                           // 跳转

网络5

LDN     Always_On

=      Q0.0                     // 清0

网络6

LBL    2                           // 第二个跳转点


请评论可靠性问题。

编码和执行效率,不是本例子的目的。

1、表面看,都能正确执行,没啥问题。但后面的跳转,若是跳很远,这个程序就很难看明白了。因为,这种习惯会变成,I0.0 跳转1;I0.1跳转2。。。这种编程风格。

2、一个公司,五个程序员,五种写法的话;一套程序交给客户的话,非晕菜了。我也能理解为啥一个公司要统一编程规则了。


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

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8941条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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