对网友求助问题的几个回帖展示之三十五
本文2例都是在网上回答网友的求助帖,其内容为关于PLC编程的,现整理汇编展示给大家,供大家参考。
一、求助帖:在书上看的的一个程序,I1.0-I1.3的初始状态是1100,I0.0接通后QW0用 16进制分别是0.3.30.300.3000.0..........对不?
回复:你说的“I1.0-I1.3的初始状态是1100,I0.0接通后QW0用 16进制分别是0.3.30.300.3000.0..........对不?”,我认为不对,如按你的程序运行,其结果为:
1、由于网络1使用SM0.0指令,就决定了QB1的低4位值恒=IB1的低4位值,如运行中IB1的低4位值改变,则QB1的低4位值立即随之改变。
2、网络2使用的QW1而不是QW0,QW1,的低字节为QB2,高字节为QB1。如
I1.0~I1.3 输入为:1_1_0_0,即QB1=0000_0011=16#3,而此时的QW1=0000_0011_0000_0000=16#300,如将QW1左移4位,其QW1=0011_0011_0000_0000=16#3300,而不是16#3000,而此时的QW0=16#33。其原因就是:只要IB1低4位的值=‘3‘不变,使QB1的低4位值总=“3”。
QW1的左移4位的结果,使其QB1的低4位数“3”移到高4位,而低4值由于IB1的低4位值=“3”未变而使其保持“3”不变。这样QB1=16#33,不管QW1左移4位几次(即多次执行网络2),QW1的值不变,即恒=0011_0011_0000_0000=16#3300,而QW0恒=16#33。
要想实现“I1.0-I1.3的初始状态是1100,I0.0接通后QW0用 16进制分别是3.30.300.3000.0..........”这样结果,程序可以这样改:
程序解析:
1、开机的第一个扫描周期使QW0清0,且使M0.0=0.。此时QW0=0。或按复位按钮I0.1,也使QW0清0,且使M0.0=0.。见网络1。此时QW0=0.
2、第一次按一下按钮,其前沿先使QW0左移4位,其QW0仍=0,接着因M0.0=0,其常闭触点闭合,故执行IB1与16#0F与指令,如此时IB0=16#3,相与结果送入QB1,再使M0.0=1。此时QW0=16#3。
3、第二次按一下按钮,其前沿先使QW0左移4位,其QW0=16#30。由于此时M0.0=1,其常闭触点断开,不执行IB1与16#0F的与指令,故此时QW0仍=16#30。
4、第三次按一下按钮,其前沿先使QW0左移4位,其QW0=16#300。由于此时M0.0=1,其常闭触点断开,不执行IB1与16#0F的与指令,故此时QW0仍=16#300。
5、第四次按一下按钮,其前沿先使QW0左移4位,其QW0=16#3000。由于此时M0.0=1,其常闭触点断开,不执行IB1与16#0F的与指令,故此时QW0仍=16#3000。
6、第五次按一下按钮,其前沿先使QW0左移4位,其QW0=16#0。由于此时M0.0=1,其常闭触点断开,不执行与指令,故此时QW0仍=16#0。
7、以后再按下按钮,其前沿先使QW0左移4位,由于此时QW0 =0,故左移结果,其QW0仍=0。
如果将你的程序这样改动一下,除了初始状态QW0不=0而=16#3外,如依次按几次 I0.0按钮,QW0的值将为:16#30、16#300、16#3000、0、0、0……见梯形图:
改动说明:
1、网络1将SM0.0改为SM0.1语句,将Q1.0~Q1.3的输出线圈指令改为置位指令,这样程序在开机的第一个扫描周期将I1.0~I1.3值置入Q1.0~Q1.3里。即开机后QW0立即=16#3,而不是0。
2、网络2将左移指令的参数QW1改为QW0,当依次按几下I0.0按钮,其QW0的值将由原=16#3,第一次左移结果其值=16#30、第二次左移结果其值=16#300、1第三次左移结果其值=6#3000、第四次左移结果其值=0、第五次左移结果其值=0、第六次左移结果其值=0……
二、求助帖:跪求完整详细的程序梯形图
回复:按你的要求,用S7-200编写了如下程序,供你参考:
程序说明:
1、将程序中的L1、L2、L3按钮该为液面控制开关,液面控制开关得特点是:当液面高于对应开关的触头位置时,该开关由断开变闭合,当液面低于对应开关触头位置时,该开关由闭合变断开。这样处理,使系统的循环工作变为自动控制,而不需人工按钮干预。
2、L3 液面开关的控制处理:当液面高于L3位置时。其开关处于闭合,即使I0.3=1。I0.3=1对Q0.3(释放液体开关或阀门)不起控制作用。只有当液面由高变低于L3液面时,开关断开,其I0.3由1↓0,其下降沿触发断电延时定时器T102,使T102由0↑1,由于前沿为单周期信号,故延时2秒后,T102由1↓0,T102=1的后沿,触发Q0.3与Q0.0:使Q0.3=0,即关掉释放液体开关Y3,使Y1=1,即启动电磁阀Y1。这样使用断电延时定时器,是本程序编程技巧之处。见网络6与网络1。
3、程序运行控制:按一下启动按钮,其I0.0=1的前沿触发,使Q0.3=0(即关闭释放液体的阀门)、使Q0.0=1,即启动电磁阀Y1,开始注入液体A,使液面逐渐上升,当液体升到L2 高度,I0.2液位开关闭合,I0.2=1的前沿触发,使Q0.0=0,即电磁阀Y1停止,注入液体A停,同时使Q0.1=1,即电磁阀Y2启动,开始注入液体B。见网络2
当页面上升到L1处时,I0.1液位开关闭合,I0.1=1的前沿触发,使Q0.1=0,即电磁阀Y2(Q0.1)停止,注入液体B停,同时,使Q0.4=1,即搅拌机M(Q0.4) 启动。开始搅拌。见网络3。
Q0.4=1使通电延时定时器T101 得电且开始延时,延时4秒,T101由0变1,T101=1的前沿触发,使Q0.4=0,即使搅拌机M(Q0.4) 停止运行,同时使Q0.3=1,即使释放液体阀门Y3 开,开始放出液体。见网络4~5。
液面开始下降,当液面下降低于L3位置时,使液位开关I0.3由闭合变断开(即I0.1由1↓0),其下降沿触发断电延时定时器T102,使T102=1,由于下降沿为单周期出现的脉冲,故延时2秒,T102 由1↓0,T102的下跳沿触发Q0.3与Q0.0:使Q0.3=0,即关掉释放液体开关Y3,使Y1=1,即启动电磁阀Y1,开始第二次循环启动运行。见网络8与网络1。
本文到此结束,如有不妥之处,请给于指正,谢谢!