编程技巧展示之三:使用逻辑运算指令简化程序的尝试 点击:739 | 回复:1



wyb2866255---王者之师

    
  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2013-03-12 17:43:02
楼主

编程技巧展示之三:使用逻辑运算指令简化程序的尝试 

有这样一个编程命题:用一个按钮可随意控制N个(N=10)灯泡,使其亮或灭,应如何编程。

我在“编程技巧展示之二S7-200编写一段程序及程序解析”一文,S7-200对此命题作了编程与解析,其梯形图如下:

   

 

这个梯形图的编程思路与技巧解析,在“编程技巧展示之二”一文已有详细介绍,本文不再讲解,本文要讲述的就是能否对这个程序再进一步进行简化,使编出的程序更加简短精炼,使之适用于不同数量的输出灯泡的控制,都不需改动程序呢?这个问题是我贴出“编程技巧展示之二”之后一直在琢磨着,经过反复思考,终于想出一种方案,使整个程序由原15个网络编程缩减为只用5个网络编程,即比原程序的长度减少三分之二,而且在控制的灯泡数为16之内的任意数时,该程序都适用而不需改动,先将此程序展示出来,供大家分析讨论:1、解析此程序的编程构思;2、看有无再精炼简短的编程思路。其目的就是共同来开阔我们的编程思维及提高我们的编程技巧。请见梯形图:

     改编后的梯形图:

本程序的技巧:

1、 巧妙利用二个断电延时定时器解决按钮抖动干扰,确保准确定位及判断时刻选择的

问题。

    2、循环左移指令的使用及左移字存储器的置数考量。

3、合理的使用“与”“或”“反相”等逻辑指令和比较指令,用一个网络编程解决了原程序需用N10)个网络的编程功能。

即:本程序的网络4的功能可代替原程序的网络5~网络1410个网络的输出功能:即实现同用T102的后沿(即用一个按钮实现随意控制N个(原程序N=10)灯泡,使其亮或灭的。

本程序的优点是:当被控灯泡数量改变时,只要灯泡总数在16个以内,程序都适用,不需任何改动,而原程序不行,只适用10个之内灯的控制。比如要控制12个灯泡时,本程序不需改动就可使用,而原程序必须在其网络14后再增添2个双稳态电路去分别控制灯11与灯12后,才可用12个灯泡的控制。

本程序延伸:如果灯泡个数超过16个以上时,该程序应如何改动?

    综上各个问题,现暂不作详细解读,下周我会对本程序的编程思路及技巧作以解答,先请大家分析讨论,目的就是使之成为学习讨论如何编好程序的平台,望大家能给与支持与合作。谢谢!




江湖混混-余 辉

  • [版主]
  • 精华:53帖
  • 求助:44帖
  • 帖子:3351帖 | 28451回
  • 年度积分:603
  • 历史总积分:131640
  • 注册:2006年4月25日
发表于:2013-03-12 17:47:42
1楼
经验之谈 值得学习  感谢楼主的精彩奉献  楼主辛苦了

热门招聘
相关主题

官方公众号

智造工程师