1 置位指令/复位指令和RS/SR触发器的关系
SIEMENS PLC 的位逻辑指令主要有三种:
a.赋值指令“=”(RL0为1,等号后面的操作对象状态为1;RL0为0,等号后面的操作对象状态为0,变化是瞬时的);
b.置位指令“S”(RL0为1,“S”后面的操作对象状态为1;RL0为0,“S”后面的操作对象状态不变,除非程序对该操作对象执行复位指令);
c.复位指令“R”(RL0为1,“R”后面的操作对象状态为0;RL0为0,“R”后面的操作对象状态不变,除非程序对该操作对象执行置位指令)。
置位指令“S”和复位指令“R”可以和赋值指令“=”一样单独使用于程序的任何位置,同一个操作对象的置位和复位指令可以出现在程序的不同位置,也可以先后出现在程序的同一位置。置位指令“S”和复位指令“R”的配合可以称之为“离散”型RS触发器,例如:
AM1.0
=I0.0//赋值
AM1.1
SQ0.1//置位
AM1.2
RM0.2//复位
其中后面4行就是SR触发器的语句表达式。
在一个PLC用户程序中,如果需要一个操作对象的不同状态在逻辑运算中起不同作用,就应该包括对该操作对象的置位和复位。
集中型RS触发器也是一种位逻辑指令,集中型RS/SR触发器有它的梯形图形式。集中型RS/SR触发器的缺条件和全条件形式的语句表达式如表1(可以转换为梯形图方式)。其实对一个操作对象的两种缺条件形式RS/SR触发器(一个只对之置位,一个只对之复位),就是复位指令或置位指令(从语句表达式显而易见)
表1语句表达式
指令 典型程序 缺条件形式 全条件形式 RSFF A M 1.0 R M 0.0 NOP 0 NOP 0 只定义复位 A I 1.6 R M 0.0 A I 1.7 S M 0.0 NOP 0 SRFF A M 1.2 S M 0.1 NOP 0 NOP 0 只定义置位 A I 1.6 S M 0.1 A I 1.7 R M 0.1 NOP 0
2置位指令“S”和复位指令“R”在用户程序中的使用
置位指令“S”和复位指令“R”(“离散”型RS触发器)对同一个操作对象的操作可以有明显的先后次序。由于PLC程序为循环运行方式,先出现的指令定义操作对象的一种状态,在后出现的相反指令定义该操作对象为另一种状态之前,程序处理中作为逻辑条件;后出现的指令定义操作对象的一种状态,在程序循环到先出现相反指令定义该操作对象为另一种状态之前,程序处理中作为逻辑条件(参考图1)。
图1 逻辑条件程序处理流程图
笔者使用类似程序成功设计了立体仓库连续取存程序。因为取和存的动作不同但必定是交替进行,取存操作的开始都需要读取目标位置的层、列、左/右货架数据,然后执行。
取操作:读目标层列、左/右货架数据-堆垛机层列定位-叉子进入左/右货架-稍微上升(货箱抬起)-退出左/右货架;
存操作:读目标层列、左/右货架数据-堆垛机层列定位-叉子进入左/右货架-稍微下降(货箱落实)-退出左/右货架;
程序执行过程的流程如图2。程序中取操作的完成作为F0.2的置位条件, 存操作的完成作为F0.2的复位条件。根据F0.2的状态交替执行取/存操作程序。
图2 取/存操作程序流程图
3 RS/SR触发器在用户程序中的使用
3.1需要交替执行的两段程序的设计
比如需要一个由电动机驱动往复前进/后退的控制对象,PLC的输入I0.0接启动按钮(接NO),I0.1接停止按钮(接NO),I0.2接前进到位限位开关(接NO),I0.3接后退到位(接NO)限位开关,使用以下程序(见图3):
图3 梯形图
这样不但可以实现往复运动,还能保证在任何位置按下停止按钮后,若再次启动,即使控制对象停在中间位置,也能继续按停止前的方向移动。
3.2置位优先和复位优先的程序设计
由于PLC程序的(组织模块OB1的)执行是循环扫描方式,PLC用户程序中的RS/SR触发器与物理RS/SR触发器有不同之处:物理(硬件)RS/SR触发器不允许R端和S端同时为“1”,否则执行结果不确定;而PLC用户程序中的(软件)RS/SR触发器R端和S端的逻辑结果允许同时为“1”, 执行结果可以确定,只不过由于处理时有先后秩序(参考表1),对同一个操作对象,RS触发器置位优先(如果R端和S端的逻辑结果同时为“1”,由S端的逻辑结果决定),SR触发器复位优先(如果R端和S端的逻辑结果同时为“1”,由R端的逻辑结果决定)。
以下PLC用户程序模块FC72是对德国HELLER公司FST62216型精密镗床追加的PLC程序:该机控制系统为SIEMENS 840D,用于镗铰加工发动机机体与主轴(曲轴)孔平行的孔系。左动力头设计有Z1轴,控制镗杆进给,右动力头设计有Z2轴,控制铰刀进给。正常状态下程序执行过程顺序是:装有工件的传送机构从原位置抬起,移动到加工位置,下降到下端位置,工件夹紧,检查正常,工件放松,上升到中间位置,镗杆进入,下降到下端位置,工件夹紧,Z1轴和Z2轴控制左右动力头同时进给加工,加工结束传送机构按相反顺序返回到原位置。机床使用中,曾出现工件未到下端位置并夹紧工件,左右动力头就开始进给,报废产品并损坏刀具。FC72定义的M2.5在程序中作为Z1/Z2轴的进给允许条件,保证工件在中间位置,镗杆可以进入,工件在下端位置并夹紧,镗杆和铰刀可以进给。为不妨碍其它方式操作,程序设计成以下形式:
NETWORK1:程序执行过程,传送机构从原位置抬起,移动到加工位置,下降到下端位置,工件夹紧,检查夹紧正常,工件放松,上升到中间位置,镗杆进入,下降到下端位置,计数器C12的计数输出MW34=2;
NETWORK2:计数输出MW34=2若只选择右动力头不选择左动力头(DB59.DBX175.1=1,DB59.DBX175.3=0)逻辑定义标志M2.4;
NETWORK4:M2.4与上工件已经夹紧(I65.2),工件在中间位置(镗杆可以进入),非自动方式(M5.0,使M2.5的使用不妨碍其它运行方式)定义标志M2.5;操作者在试用后又提出,每次开机需要执行一次空运行(不装工件执行一次自动程序)。追加程序前,选择空运行启动后,即可以选择自动方式,操作者离开机床作准备工作,空运行结束就可以开始启动自动程序运行;追加程序后,选择空运行并启动后,如果不选择自动方式,启动的空运行结束后,会周而复始地执行空运行,如果选择自动方式,程序会中断于镗杆进入程序段。这是由于M2.5起作用,分析说明程序检查“工件”未夹紧而中断。根据需要,该追加的程序还需要在执行空运行过程时一直旁路工件夹紧条件(不需要检查工件夹紧,无工件也不可能“夹紧”),而且需要在启动空运行后,若选择自动方式,空运行结束就可以开始启动自动程序运行。
设计NETWORK3:RS触发器M2.6,用于旁路工件夹紧条件,其R端接传送机构在原位置标志I72.6,S<, /SPAN>端接面板选择空运行标志M181.4。正常情况启动前,传送机构在原位置,标志I72.6的状态为1,面板选择空运行,标志M181.4的状态为1,但由于置位优先,M2.6的状态为1,旁路工件夹紧条件并保持,空运行启动后再选择自动方式,M181.4的状态变为0,传送机构已经离开原位置,标志I72.6的状态变为0,M2.6的状态保持不变。空运行可以正常执行到传送机构回原位置,标志I72.6的状态再变为1,M2.6的状态变为0,这时自动方式运行也准备好,程序的追加既防范了故障发生,也提高了生产效率。
FUNCTION FC 72:VOID
TITLE =
VERSION:0.1
BEGIN
NETWORK1
TITLE =
AI72.4; //传送机构在下端位置
CUC12;
BLD101;
NOP0;
NOP0;
A I 72.0; //传送机构在上端位置
R C12;
L C 12;
T MW 34;
NOP 0;
NOP 0;
NETWORK2
TITLE=
//DB59.DBX175.3-选择左头接通 DB59.DBX175.1-选择右头接通
0(;
L MW34; //MW34>=2
L 2 ;
>=I ;
) ;
O ;
A DB59.DBX 175.1; //选择右动力头
AN DB59.DBX 175.3; //选择左动力头
= M 2.4;
NETWORK3
TITLE =
//空运行控制
A I 72.6; //传送机构在原位置
R M 2.6;
A M 181.4; //选择空运行(无工件执行自动程序)
S M 2.6;
NOP 0;
NETWORK4
TITLE =
A M 2.4;
A( ;
O I 65.2; //工件夹紧
O M 2.6;
) ;
O I 72.1; //传送机构在中间位置
ON M 5.0;
= M 2.5;
END_FUNCTION