您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400系列PLC程序控制指令
来源:艾特贸易2018-01-24
简介程序控制指令实现函数、函数块的调用以及通过主控传递方式 (Master Co ntrol Relay)实现程序段使能的控制,程序控制指令如表2-34所示。 表 2-34 程序控制指令 1.LAD程序控制指令 (1)主控传
程序控制指令实现函数、函数块的调用以及通过主控传递方式(Master Control Relay)实现程序段使能的控制,程序控制指令如表2-34所示。
表2-34 程序控制指令
1.LAD程序控制指令
(1)主控传递指令
主控传递可以将程序段分区、嵌套控制。在控制启动指令-(MCRA)和控制停止指令-(MCRD)间,通过主控传递接通指令-(MCR<)和主控传递断开指令-(MCR>),可以最多将一段程序分成8个区,只有打开第一个区,才能打开第二个区,依此类推,每打开一个区,才能执行本区的程序。-(MCRA)、-(MCRD)及-(MCR>)指令前不能加入触发条件,-(MCR<)指令前必须加入触发条件。主控传递指令使用的示例程序如图2-17所示。
图2-17主控分程传递指令
在示例程序中,如果M1.1为1,打开MCR程序分区1,分区1中的程序可以运行,例如11.2为1,将置位Q2.1;如果M1.2为1,打开MCR程序分区2,分区2中的程序可以运行,例如I1.1为1,触发Q2.0输出;如果M1.1为0,分区1关闭,即使I1.1为1也不能触发Q2.0输出,程序分区相互嵌套。
(2)程序调用指令
集成于STEP 7函数库“Libraries”或用户编写的函数及函数块(FB Blocks、FC Blocks目录)必须在主程序中才能运行,使用指令CALL_FB、CALL_FC、CALL_SFB、CALL_SFC可以对不同函数、函数块进行调用,指令的使用如图2-18所示。程序段1中调用无形参必须赋值,否则报错,如果已经编写FC1,在“FC Blocks”库中可以找到,可以将FC1直接拖放到程序段中。程序段2为系统函数的调用,必须对形参赋值,否则报错,在“System FunctionBlocks”系统函数库中,将需要调用的函数直接拖放到程序段中。程序段3、4为函块和系统函数块的调用。它们的共同特点是都需要拖放到程序段中,在函数块的上方写入未使用的数据块作为背景数据块,点击“确认“自动生成,每次调用函数块或系统函数块时,必须分配不同的数据块号。
图2-18程序块调用指令
使用-(CALL)指令只能调用函数FC和系统函数SFC,并且函数不能带有形参,否则不能赋实参,指令的使用如图2-19所示。
图2-19 -(CALL)指令
在图2-19的程序中,如果M1.1为1,调用函数FC1,FC1必须用手动输入。注意:如果没有预先创建函数或函数块,调用函数FC1,FC1必须用手动输入。
(3) -(RET)返回指令
如果在主程序中执行返回指令,程序扫描重新开始;如果在子程序中执行返回指令,程序扫描返回子程序调用处,以上两点共同的特点是返回指令后面的程序不执行。返回指令的使用如图2-19所示。
在图2-20所示的示例程序中,如果M1.2为1,执行返回指令,CPU不扫描程序段3的程序。
图2-20 -(RET)返回指令
2.STL控制指令
(1)主控传递指令
STL主控传递指令与LAD编程语言中使用主控传递指令的方法相同,使用STL编程的实例程序介绍如下:
MCRA
A I10.0 //启动MCR分区
MCR( //10.0为1,激活MCR分区1,Il0.0为0,关闭MCR分区1
A I10.2
MCR( //110.2为1,激活MCR分区2,I10.2为0,关闭MCR分区2
A I40.0
= Q 80.O //如果MCR分区2关闭,Q80.0被复位0,与I40.0的值无关
LMW 20
TQW 100 //如果MCR分区2关闭,O将传送到QW100中
)MCR//MCR分区2结束
A I10.4
= Q80.2 //如果MCR分区1关闭,Q80.2被复位0,与U10.4的值
无关
)MCR //MCR分区1结束
MCRD //MCR分区结束
A I10.1 //下面的指令与MCR分区无关
= 0 80.1
(2)程序调用指令
STL编程语言中包括“CALL”、“CC”和“UC”指令,用于程序的调用。CC(有条件调用)与UC(无条件调用)指令只能调用无形参的函数、函数块,与LAD中(CALL)指令的使用相同。“CALL”指令相当于LAD编程语言中的CALL_FB、CALL_FC、CALL_SFB、CALL_SFC指令,“CALL”指令的使用参考示例程序如下。
①函数的调用。函数调用的固定格式为CALL FCX,X为函数块。
例如函数FC6的调用,FC6带有形参,符号“:”左边为形参,右边为赋的实参,如果形参不赋值,程序调用报错。
CALL FC6
形参 实参
NO OF TOOL: =MW100
TIME OUT :=S5T#12 S
FOUND :=Q 0.1
ERROR :=Q 100.0
②系统函数的调用。系统函数调用的固定格式为CALL SFCX,X为系统函数号。
例如系统函数SFC43的调用,不带有形参。
CALL SFC43 //SFC43实现重新触发看门狗定时器功能
系统函数如果带有形参,与函数的调用相同,必须赋值,否则程序调用报错。
③函数块的调用。函数块调用的固定格式为CALL FBX,DB Y,X为函数号,Y为背景数据块号,函数块与背景数据块使用符号“,”隔离。
例如函数块FB99的调用,背景数据块为DB1,带有形参,符号“:”左边为形参,右边为赋的实参,由于调用函数块带有背景数据块,形参可以直接赋值,也可以稍后对背景数据块中的变量赋值。多次调用函数块时,必须分配不同的数据块作为背景数据块。
CALL FB99, DB1
形参 实参
MAX_RPM: =#RPM1_MAX
MIN_RPM: =MW2
MAX_POWER: =MW4
MAX_TEMP: =#TEMP1
如果函数块A作为函数块B的形参,在函数块B调用函数块A时,不分配背景数据块,例如函数块FB_A的调用:
CALL #FB_A
IN_1 :=
IN_2 :=
OUT_1 :=
OUT_2 :=
调用函数块B时,分配的背景数据块中包括所有函数A和B的背景参数,如果在函数块B中插入多个函数块作为形参,程序调用是只使用一个数据块作为背景数据块,节省数据块的资源(不能节省CPU的存储区),这样函数块具有多重背景数据块的能力,在函数块创建时可以选择。
④系统函数块的调用
系统函数块调用的固定格式为CALL SFBX,DB Y,X为函数块号,Y为背景数据块号,系统函数块与背景数据块使用符号“,”隔离。
例如函数块SFB4的调用,背景数据块为DB4,带有形参,符号“:”左边为形参,右边为赋的实参,由于调用系统函数块带有背景数据块,形参可以直接赋值,也可以稍后对背景数据块中的变量赋值。多次调用系统函数块时,必须分配不同的数据块作为背景数据块。
CALL SF4, DB4
形参 实参
IN :-I0.1
PT :=T#20s
Q :=M0.0
ET :=MW10
(3)程序结束指令
BE(程序结束)与BEU(程序无条件结束)指令使用方法相同。如果程序执行上述指令,CPU终止当前程序块的扫描,跳回程序块调用处继续扫描其他程序;如果程序结束指令被跳转指令跳过,程序扫描不结束,从跳转的目标点继续扫描。指令的使用示例程序如下:
A I1.0
JC NEXT //如果I1.0为1,程序跳转到NEXT
LIW 4 //如果没有跳转,程序从这里连续扫描
TIW 10
A I6.0
A I6.1
S M12.0
BE //程序结束
NEXT: NOP 0 //跳转执行,程序从这里连续扫描
BEC为有条件程序结束,在BEC指令前,必须加入条件触发,示例程序如下:
A M 1.1
BEC
= M1.2
如果M1.1为1,程序结束;如果M1.1为0,程序继续运行。与BE、BEU指令不同,BEC指令触发条件没有满足,置RLO位为1,所以Ml.l为0时,M1.2为1。
(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:)
点击排行
