电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 梯形图实例 >> 正文

西门子plc 简短精炼的3例编程展示及编程思路与技巧解析 梯形图实例 灯的控制

作者:佚名    文章来源:本站原创    点击数:    更新时间:2022-11-24

         简短精炼的3例编程展示及编程思路与技巧解析      

   对于同一个命题编程,不同人编出不同的程序,有的编出的程序简短精炼,一目了然,有的编出的程序很长很乱,不易读懂。之所以这样就是由于编程者的编程思路不同,对PLC的编程指令的理解掌握不一样所致。要想编出好的简短精炼的程序,编程者不仅要在指令上狠下功夫,做到不仅要深入理解各种指令的内涵,更要学会灵活巧妙的运用它。而且要扩大知识面,使你思路开阔,利于编程。

    下面例举3个编程实例,供大家分析参考:

   一、请教:PLC输入点任意一点变化均触发一次,用什么指令比较精简

如:当输入点部分有信号时,是否能做到依次输出且依次关闭已动作了的。假设输入点IB0~IB1任意一点先变化,则先变化的对应输出点QB0~QB1动作。如:I0.0—>ON接着I1.3->ON,再接着I0.4->ON......依次输出Q0.0=1,Q1.3=1(Q0.0=0),Q0.4=1(Q0.0=0,Q1.3=0)……

    解答:按题意要求,用S7-200编写二段程序供参考:

   1、不保持输入信号状态(即输入为不自锁的按钮,即按下后就抬起)的编程:

 

     编程解析:本程序只用一个网络语句编程即可实现。编程共用3个指令,这3个指令缺一不可:

1、用比较指令(IW0<>0),由于输入侧的16个开关皆为不自锁按钮开关,未按钮时其对应的16个输入点输入状态皆=0,即IW0=0。只有有按钮按下时,其IW0<>0。

2、前沿指令(P)的使用,也是不可缺少的,它执行将IW0传递给QW0,确保无输入时其输出状态不变:只有输入转态变化瞬间,其前沿将IW0的输入状态传送给输出口QW0,以确保当该输入点复位时仍能保持原输出状态不变(即按钮抬起的后沿不起传递作用)。

3、用传递指令MOVW的使用:它可将输入点I0.0~I1.7的状态传送给输出口Q0.0~Q1.7,可将输入口按下点的信息传递给输出口的对应输出点。

     如:I0.0=1,对应输出Q0.0=1,I0.0复位(I0.0=0)仍保持Q0.0=1。如I0.7=1,对应输出Q0.7=1、Q0.0=0.,I0.7复位(I0.7=0)仍保持Q0.7=1,再输入I1.1=1,对应Q1.1=1,而Q0.7=0。。。。

    但这种编程,对输入口的输入状态有要求:按钮前IW0=0,故只适应不自锁按钮(按完后触点断开)。

   2、自锁与不自锁的按钮都可用的编程:

这种情况对编程带来难度,如按一般思路编程,编出的程序一定较长,但用异或指令编程就会使编出的程序简短精练,见下图:

自锁与不自锁的按钮都可用的编程 

编程思路:选用一字存储器MW10,使其保存未按钮前的IW0的输入状态,即未按钮时其MW10=IW0。当输入侧有按钮按下时,必然使IW0<>MW10,且IW0 > MW10,此时除按钮位=1,其MW10与之对应位=0外,IW0与MW10其它各个对应位的状态都是一样的(或=0或=1),如能从此状态中将按下按钮位检出,且使其对应输出位=1,就可实现本题目的控制要求。S7-200有字异或指令,该指令的功能是可将参与异或运算的二个字变量,将其状态相同的对应位变量运算结果=0,而状态不同的对应位变量运算结果=1,这正好符合本题目的控制要求,故选用字异或指令编程。

动作原理:当开机时,由于未按按钮,其IW0=0,MW10=0,当按下某一按钮,其IW0将不等于MW10且大于MW10,使I W0与MW10进行异或运算,运算结果送入QW0(此时QW0的输出只有刚刚按下的位信号=1,其它位都等于0)。随后再将IW0送入MW10,以保存IW0的现有状态,以备下次按键与IW0比较,即MW10为按钮按下时的输入状态。如此时将按钮抬起,其IW0不等于MW10,但IW0小于MW10,故不执行异或指令,即QW0仍保持原输出状态。而IW0状态仍传递给MW10。 如此时按下另一按钮,其IW0不等于MW10,而IW0大于MW10,故执行异或指令,运算结果送入QW0(此时QW0的输出只有刚刚按下的位信号=1,其它位都等于0)。随后IW0状态又传递给MW10。例如:

原IW0状态=0000_0000_0110_0011,现按下一按钮(使I0.3=1),此时IW0=0000_0000_0110_1011,MW10仍=0000_0000_0110_0011,由于IW0≠MW10且IW0>MW10,故IW0与MW10进行异或运算,由于此时IW0与MW10只有第3位的内容不等(I0.3=0,M10.3=1),其他各个对应位相同,故异或的结果使QW0=8,即 Q0.3=1。随后将现在的IW0=0000_0000_0110_1011的值 送入给MW10。

如该按钮又抬起,使IW0=0000_0000_0110_0011,此时IW0与MW10的值又不相等(I0.3=0、MW10.3=1),但IW0<MW10,故Q0.3仍=1,QW0输出不变。但IW0值送入MW10(0000_0000_0110_0011)。

如此时将I0.0的按钮抬起(I0.0=0),IW0=0000_0000_0110_0010,此时IW0≠MW10,且IW0<MW10,故QW0输出不变。但IW0值送入MW10(0000_0000_0110_0010)。

当输入按钮有几个以处于按下(即接通状态),时,如要抬起任一按下的按钮,其输出都不会发生变化,如现输入状态为:IW0=0000_0000_0110_1011, MW10= 0000_0000_0110_1011。如抬起I1.5,使IW0=0000_0000_010 0_1011,此时IW0 < MW10,故不会进行异或运算,即输出保持不变,只是IW0 送入 MW10,使MW10=0000_0000_010 0_1011。

可见,巧妙地运用异或指令和比较指令,不仅简化编程,而且对输入口状态无条件限制,使之可适用与各类按钮。

二、请编出这样的一段程序:一个按钮控制4个灯泡,要求每按一次按钮,其4个灯泡总是只有一个灯亮,其它3个不亮。其哪个灯亮是随机的,无规律的。如何编程?

     按此命题编写如下程序:

 

     编程思路与技巧解析:该程序只用2个网络语句就可实现本命题的控制要求,其编程思路是:开机先将MB1置16#11,即0001_0001,如对MB1进行多次循环左移,其低4位总是只有一位=1,其它3位皆=0。2、按下按钮,使I0.0=1,由于是手按按钮,其每次按下的时间间隔很难保持一样,而按下时间又>>PLC循环扫描周期,即在按钮按下时间里,MB1将循环左移多次,由于按钮按下时间是随意的,使MB1循环左移的次数也是多变的,故使当按钮抬起时,其MB1的低4位的=1位时随机的不可确定的。用它传递给QB0,使QB0的低4位只有一位输出=1,其它3位=0,而且=1的位是不确定的,即Q0.0~Q0.3都有=1的可能,其几率是相等的。

    编程技巧:本程序编程技巧见网络2:用I0.0=1使MB1进行循环左移,由于I0.0=1的时间不确定,使MB1循环左移的次数为不确定数,即MB1的低4位=1的位是可变的,不确定的。当按钮抬起时,其后沿将MB1的低4位传递给QB0达到控制目的。

三、有5个按钮和5个信号灯,编号1#~5#,每次只按下一个按钮,按的次序是随意的且没有时间限制,每按下一个按钮输出就亮一个对应的信号灯,持续10秒后自动熄灭,但是同一时刻只允许亮一个灯,即前灯不灭后灯不亮,并且亮灯的次序严格按照按钮按下的次序,例如按钮是2#——1#——5#——3#——4#,则亮灯也按照2#——1#——5#——3#——4#,不能乱。

本命题如用一般指令编程是有一定难度的,而且编出的程序很长又不易读懂,如用填表指令与FIFO指令配合编程就会使程序简短而精炼,见下梯形图:

 

 

 

 

 

 

     程序解析:网络1为填表指令设置:即VW100为表地址,容许填表数据数=10,即容许最多填写10组数据,即容许间隔小于10秒连续按不同按钮10下,使之对应用的灯泡按按钮的顺序依次各亮10秒,这样就有重复使用同一个灯泡的可能。如连续按按钮:1、3、2、4、2、3,则输出为Q0.0、Q0.2、Q0.1、Q0.3、Q0.1、Q0.2各灯泡依次个亮10秒。

    网络2~网络6分别为按钮1~按钮5按下时的编程,这5路编程是一样的,以网络1为例:当按下按钮1,使I0.0=1,如此时M0.0=0(5路输出皆=0),其前沿将其输出Q0.0置1(灯亮),如此时M0.0=1说明5路中有一路输出=1,其前沿将其输出Q0.0的地址(1)填入表内。以备当输出=1的灯由亮10秒后熄灭时,通过FIFO指令将其弹出,使弹出的地址灯泡点亮。如果连续按N个按钮,其间距<10秒,则第一个按下的灯亮外,剩下的N-1个灯的输出地址依次填入表中,当第1个灯由亮变灭时,由于表的实存数据数≠0,则FIFO指令将最先填入的输出地址弹出,通过异或运算使第2个按下按钮对应的输出灯亮(见网络10~11)。

网络7~网络8:5路输出皆为0时,M0.0=0,只要有一路输出由0↑1,其前沿都会将M0.0=1,而M0.0=1使T101得电延时,延时时间为10秒。

网络10~网络11:当T101延时时间到,T101由0变1,使M0.0=0、使Q0.0~Q0.4皆=0,再判断VW102(表实际存数据数):如VW102≠0,说明表内仍存有数据,执行FIFO指令,将表内最前数据弹出,送入MW1(实际为MB2),再通过异或运算送到输出口使对应输出灯亮。如VW102=0,说明表内已无数据,不执行FIFO指令。

网络9:是将M0.1=1时执行将M0.1传递给M0.2,此条指令看似有点多余,但实际上是必要的,这条指令的使用也是本程序编程技巧之一,它解决争态问题:

如不用它直接用M0.1去代替网络11的M0.2,其程序将不能正常运行,即T101延时时间到不会使M0.0断开,即T101仍处于得电延时状态,这样就不会执行FIFO指令,使程序总处于一个灯泡长亮的状态不变。

再有这条指令与安放位置有关,必须将它放在使M0.1由0↑1的指令前面才好用(即放在网络10的前面),其原因:当程序使M0.1=1时,M0.2仍=0,故不执行异或运算,即不会使输出由亮灯的可能,故下一个扫描周期不会使M0.0置1,使T101断电。而此时扫描到网络9,由于M0.1=1,M0.2才由0变1,执行异或运算,使输出有一路亮。此处理就是确保M0.0=1的宽度=10秒,不会衡=1。

    通过以上3个编程的解析,可以看出,深入理解各个指令的内涵,广开思路,就会使编程指令使用的更加灵活合理,会使你编出的程序简短精练。就写到这里,谢谢大家!

Tags:西门子plc,梯形图实例,编程  
责任编辑:admin
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 相关文章列表
    西门子PLC编程语言_西门子PLC指令表功能汇总
    利用S7-200 PLC定时中断功能编制一个程序举例 ATCH和DTCH
    西门子S7-200 SMART PLC功能指令学习及实例分析 SHL_B和SHR_B移位
    西门子S7-200 SMART PLC功能指令学习及实例分析 循环指令FOR和NE
    西门子S7-200 SMART PLC功能指令学习及实例分析 加计数器CTU、减
    西门子S7-200 SMART PLC功能指令学习及实例分析 定时器指令TON T
    西门子plc 中断指令及案例梯形图实例ATCH DTCH和CLR_EVNT
    西门子plc产品数量检测控制程序的例子  CTU和TON指令
    西门子S7-200 Smart系列PLC处理64位浮点数方法 SUB_I和SHL_W和SH
    西门子plc s7-200加法指令说明 ADD_I 和ADD_R和ADD_DR
    西门子plc模拟量输入编程实例公式(模拟量编程实例详解)STEP7添
    西门子plc程序中 S_ITR / S_RTR / S_RTI各指令是什么意思
    西门子PLC 编程实例S7-200 Smart PLC 电机正反转梯形图接线图
    西门子plc电机正反转控制电路图梯形图程序实例
    西门子plc S7-200smart 与台达变频器通讯Modbus梯形图编程实例
    Modbus Poll和Modbus Slave使用方法
    西门子plc指令实现循环灯程序的例子 S7-200跑马灯梯形图实例
    西门子S7-200 plc控制泵往复循环运行的梯形图程序  SR触发器和TO
    西门子plc移位寄存器指令 梯形图程序编程
    西门子plc S7-200SMART通过MODBUS通信控制变频器启停如何看电流频
    西门子S7-200 Plc之比较指令入门教程 西门子plc梯形图程序编程
    西门子S7-200系列PLC实例:时钟指令入门用法 梯形图编程实例
    西门子PLC模拟实现自动售卖机案例,售货机梯形图实例
    深度剖析西门子PLC的开放式TCP通信梯形图 TCP通讯
    理解西门子PLC间接寻址和指针梯形图实例,S7-200SMART
    西门子S7-200通讯控制台达变频器,实例讲解Modbus RTU通讯
    modbus协议详解_西门子S7-200与变频器MODBUS通讯实例详解
    西门子plc梯形图编程实例 西门子200smart与电流表Modbus RTU通讯
    使用西门子plc的Modbus通讯 串口调试助手与S7-200SMART PLC从站通
    西门子plc梯形图实例S7-200Smart与ABB ACS550变频器通讯Modbus通
    请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
    推荐文章
    最新推荐
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询