首页 上一页 1 2 下一页 尾页

用实例讲解编程构思与技巧编程 点击:1849 | 回复:27



wyb2866255---王者之师

    
  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-09-10 17:19:36
楼主

              用实例讲解编程构思与技巧编程

         

    对于PLC编程的初学者首先要结合实例深入理解与熟练掌握程序指令的内含与用法,还要多做编程练习,才能不断的提高编程水平与能力。网上好多求助帖都有探讨价值,初学者可把它视为一个编程命题去编程与探讨。编程时要多方位思考,多思路编程,对比分析,从中找出最佳方案。本文先列举3例都是回答网上的求助帖而编写的程序,程序较短,并对程序构思、编程技巧作以说明,望对初学者学习能有所帮助。

    例一求助帖:运行台数作为启动信号

现有5台普通制冷机定为M1M2M3M4M52台高级制冷机定为L1L2,当普通制冷机工作台数小于等于3台时只启动一台高级制冷机,当普通制冷机工作台数大于3台时启动两台高级制冷机。(需要用300200编程要梯形图)(自己编的时候存在一定问题,使用计数器和整数加1都不是很好用)求大神们帮忙。谢谢。

编程说明:本命题用二种思路编程,

第一种思路就是利用数学的数字组合来考虑:53的组合有10种,52的组合也有10种,51的组合有5种,即普通制冷机工作台数小于等于3台共有25种组合,而54的组合有4种,55的组合只有1种,故选用判断普通制冷机工作台数大于或等于4台共有5种组合。显然用判断普通制冷机工作台数小于等于3台编写的程序太长,而判断普通制冷机工作台数大于或等于4台的编写程序可使程序大大缩短。

编程的构思是这样:高级制冷机始终有一台处于工作(即Q0.6=1),如5台普通制冷机只有3台或3台以下处于工作,第二台高级制冷机停机,只有4台或4台以上工作时,第二台高级制冷机(即Q0.7=1)立即投入工作,详见梯形图

第二种思路:

5台普通制冷机输出口设置为Q0.0~Q0.42台高级制冷机输出口设为Q0.6Q0.7

编程思路:将QB0送入MB0,再将MB0进行左移:每移一位MB0,就检查一次MB0的第6位,即M0.5的状态,如M0.5=1,将MB11,共左移5次,此时MB1的数值即为普通制冷机工作的台数。再用MB13进行比较,如MB3 > 3,使Q0.7=1,否则 Q0.7=0,而Q0.6始终为1,从而确保当普通制冷机有3台以上处于运行时2台高级制冷机皆工作,当普通制冷机只有3台或3台以下处于运行时1台高级制冷机工作的控制目的。详见下梯形图:

    二种方案比较,显然第一种编程简短精练,除了用PLC内部的SM0.0一个点外,只用了Q0.0~Q0.4、及Q0.6Q0.7七个输出点,相比之下,第二种编程,动用了M4.0MB0MB1MB3三个字节存储器,而且程序也长一点。但第二种的编程思路还是具有技巧性,仍不失好的编程。特别在命题加深难度时,第二种编程思维就会显示出它的优越性,请见下一命题:

例二、求助帖:编程目的:7个开关量变成3个输出量。

 

7个开关量任意相加组合,任意组合后有1个开关量闭合时,继电器Q0.5输出。任意组合后有2个开关量闭合后,继电器Q0.4输出任意组合后有3个开关量闭合后,继电器Q0.5 Q0.4同时输出。任意组合后有4个开关量闭合后,继电器Q0.3输出。任意组合后有5个开关量闭合后,继电器Q0.3 Q0.5同时输出。任意组合后有6个开关量闭合后,继电器Q0.3 Q0.4同时输出。任意组合后有7个开关量闭合后,Q0.3 Q0.4 Q0.5同时输出。

这个命题如采用第一种思路编程,其程序将编写的十分麻烦而且颁出的程序是非常长的,但用第二种编程思路编程,就可以编出简短的程序,请见下梯形图:

例三、程序内容是这样的:
 
.I0.0为自复位按钮输入变量,按一下I0.0,q0.0输出为1,再按一下I0.0q0.0输出0
 
.I0.1为自复位按钮输入变量,按一下I0.1,q0.1输出为1,再按一下I0.1q0.1输出0
 3
.当双击(1S以内连续按两下按钮算双击)I0.0I0.1任何一个按钮时,Q0.0Q0.1都为0,当再次单击I0.0或者I0.1时,Q0.0或者Q0.1仍会延续的逻辑。

解析:这个命题看似简单,编程时会发现还是有点难度,对“按一下I0.0,q0.0输出为1,再按一下I0.0q0.0输出0”及“按一下I0.1,q0.1输出为1,再按一下I0.1q0.1输出0”这个控制要求并不难,用二个SR触发器即可组成此控制程序。难在:当双击(1S以内连续按两下按钮算双击)I0.0I0.1任何一个按钮时,Q0.0Q0.1都为0的程序控制。具体讲解如下:

本命题也采用二种不同思路编写二个程序,下面分别解析这二个程序构思与编程技巧。

一、第一种程序的编程构思与程序处理

   (一)、编程构思:开机初始化:使MB1=0  MB2=0  MB3=2,其MB1MB2分别为按钮I0.0I0.11计数器,MB3I0.0I0.1的减1计数器,

1、按下I0.0,其前沿将M0.0=1M0.0接延时1秒的通电延时定时器T101,延时1

秒,T101吸合。使M0.0=0。在M0.0=1的时间里,每按一下I0.0,使MB11,同时使使MB31MB1最大计数值=22以上不再加计数。

    M0.0=1的时间里,如只按一下按钮I0.0,其MB1=1(即M1.0=1  M1.1=0)而MB3=1,此状态将使Q0.0=1。按钮抬起时,MB1保持=1,而MB3恢复=2。如再按一下I0.0,会使MB1=2(即M1.0=0  M1.1=1)而MB3=1,此状态将使Q0.0=0,且使MB1=0

2同样按下I0.1,其前沿将M0.0=1M0.0接延时1秒的通电延时定时器T101,延时1秒,T101吸合,使M0.0=0。在M0.0=1的时间里,每按一下I0.1,使MB21,使MB31MB2最大计数值=22以上不再加计数。

二)、程序处理:由(一)构思中知,M0.0=1的间隔=1秒,是按钮第一次按下按钮为始点延时的1秒。开机初始化:MB1=0MB2=0MB3=2。以I0.0为例:在M0.0=1的时间内,如I0.0只按一下,MB101=1MB3由减1=1。当按钮抬起时(M0.0的后沿),会使Q0.0=1,因MB30,故不会使Q0.0Q0.1同时复位,最后再将MB3=2。在此状态下,如再按一下I0.0MB111=2,而MB321=1,此时只会使Q0.0=0,同样不会使Q0.1复位(Q0.1保持原状态)。如不是按一下,而是连按二下I0.0,使MB322 =0,此时不管Q0.0Q0.1的状态如何,因MB3=0将强迫使Q0.0Q0.1=0,从而实现了当双击(1S以内连续按两下按钮算双击)I0.0I0.1任何一个按钮时,Q0.0Q0.1都为0的程序控制作用,

 详见下程序:

 

      该程序经上机运行,动作正确符合题目要求。

 

二、第二种程序的编程构思与程序处理

    (一)、编程构思:

本程序是用SR触发器指令来实现命题的控制要求的,用SR触发器指令会很容易编出“按一下I0.0,q0.0输出为1,再按一下I0.0q0.0输出0的(见网络5或网络6),难在“当双击(1S以内连续按两下按钮算双击)I0.0I0.1任何一个按钮时,Q0.0Q0.1都为0的控制编程。本程序对此是采用这样的编程思路:

见网络4及网络7~9:网络4中的MB1是加1计数器,它的计数脉冲是I0.0I0.1的后沿,即每按一下按钮I0.0I0.1,当按钮抬起瞬间,会使MB11,由于比较指令“MB1<=1”的限制,使MB1的值只能有3个:012,即实现MB1值由01计数只确保连续按钮2下以内有效,超过2MB1不计数,始终保持MB1=2

网络9M0.7=1的后沿使MB10,其作用确保每次按钮MB1都是由0开始计数的,故确保在1秒内如只按1次按钮,MB1始终=1,不可能=2,即M1.11。只有在在1秒内连续按2次按钮,MB1=2,即M1.1=1。而M1.1=1将使2SR触发器复位,即同时使M0.1M0.30

M0.1即为输出Q0.0M0.3即为输出Q0.1,本程序为什么在网络5、网络6中的M0.1M0.3不直接用Q0.0Q0.1代替?网络7与网络8的作用本是将M0.1输送给Q0.0,将M0.3输送给Q0.1。为什么编程不用LD M0.1  = Q0.0却要这样编写输出?这2个问题暂不解释,留给大家分析,过几天再做解释。请见梯形图:

 

 




求学者_2322

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 37回
  • 年度积分:0
  • 历史总积分:286
  • 注册:2011年3月14日
发表于:2012-12-25 13:34:58
21楼
怎么把梯形图贴出来啊

yhw45

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 30回
  • 年度积分:0
  • 历史总积分:287
  • 注册:2012年8月06日
发表于:2012-12-25 14:40:45
22楼
回复内容:
对:wyb2866255---王者之师关于 7楼:你分析的很对,就是为了避免Q0.0或Q0.1先置1再复位的现象出现。欢迎你再看看“请大家一起分析这个程序的编程构思及动作原理”与“请大家一起分析这个程序的编程构思及动作原理之二”这二个帖子,这2个帖子的程序编写都有一定的技巧性,程序未加注解,让大家解读程序,你可以参与解析程序 内容的回复:

您好 上次看来您钢化炉的帖子,有些疑问想向您请教下。能否短消息发QQ号码给我呢。谢谢

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-12-25 15:24:33
23楼
21楼:可用截图将程序一段一段截下来,再将截图粘贴在图画中保存,这保存的图就可贴上来。

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-12-25 15:27:42
24楼
22楼:我没有QQ号,你说的钢化炉的帖子是哪一篇,最好把网址告诉我,可以通过邮箱传递。

robotxc

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 191回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2015年9月09日
发表于:2015-09-24 00:04:24
25楼

好文章,谢谢分享。。。

老鹰2016

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 64回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2015年9月17日
发表于:2015-09-24 05:20:25
26楼

学习一下,多谢楼主。

XGDL69

  • 精华:0帖
  • 求助:3帖
  • 帖子:4帖 | 974回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2009年3月04日
发表于:2015-09-29 10:01:26
27楼

学习了!我还没有这样做过呢!   

   



热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页