PLC STL中的逻辑块调用指令CALL

时间:2023-03-06作者:佚名

块调用指令( CALL)用来调用功能块(FB)、功能(FC)、系统功能块(SFB)或系统功能( SFC),或调用西门子预先编好的其他标准块。

在CALL指令中,FC、SFC、FB和SFB是作为地址输入的,逻辑块的地址可以是绝对地址或符号地址。CALL指令与RLO和其他任何条件无关。在调用FB和SFB时,应提供与它们配套的背景数据块(Instance DB)。而调用FC和SFC时,则不需要背景数据块。处理完被调用的块后,调用它的程序继续其逻辑处理。在调用SFB和SFC后,寄存器的内容被。恢复。

使用CALL指令时,应将实参(Actual Parameter)赋给被调用的功能块中的形参(Formal Parameter),并保证实参与形参的数据类型一致。

使用语句表编程时,CALL指令中被调用的块应是已经存在的块,其符号名也应该是已经定义过的。

在调用块时可以通过变量表交换参数,用编程软件编写语句表程序时,如果被调用的逻辑块的变量声明表中有IN、OUT和IN_OUT类型的变量,则输入CALL指令后编程软件会自动地打开变量表,只需对各形参填写对应的实参即可。

在调用FC和SFC时,必须为所有的形参指定实参。调用FB和SFB时,只需指定上次调用后必须改变的实参。由于FB被处理后,实参储存在背景数据块中。如果实参是数据块中的地址,必须指定完整的绝对地址,如DB1. DBW2。

逻辑块的IN(输入)参数可以指定为常数、绝对地址或符号地址。OUT(输出)和IN_OUT(输入_输出)参数必须指定为绝对地址或符号地址。

CALL指令保存被停止执行的块的编号和返回地址及当时打开的数据块的编号。此外,CALL指令关闭MCR区,生成被调用的块的局域数据区。

①CALL块调用指令:CALL<逻辑块标识符>。使用该指令,可以调用功能(FC)或功能块( SFB)、系统功能(SFC)或系统功能块(SFB),或调用由西门子公司提供的标准预编程块。使用CALL块指令,可以调用作为地址输入的FC和SFC或FB和SFB,与RLO或其他条件无关。如果使用该指令调用一个FB或SFB,必须提供具有相关背景数据块的程序块。在被调用块处理完后,调用块程序继续逻辑处理。逻辑块的地址可以绝对指定,也可相对指定。在SFB、SFC调用后,保存寄存器的内容。

调用块可通过一个变量表与被调用块交换参数。

如果调用一个功能块(FB)、系统功能块(SFB)、功能(FC)或系统功能(SFC),并且被调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到调用块中。如果调用的是一个功能(FC)和系统功能(SFC),则必须在调用逻辑块中为声明的形式参数赋予实际参数。

如果调用的是功能块( FB)和系统功能块(SFB),只需定义与以前调用相比必须进行修改的实际参数。在处理完功能块后,实际参数保存在背景数据块中。如果实际参数是一个数据块,则必须指定完整的绝对地址,如DB1、KBW2。

IN参数可作为常数、绝对地址或符号地址定义。OUT和IN_OUT参数必须作为绝对地址或符号地址定义。必须保证所有地址和常数与要传送的数据类型相符。

调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。此外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。

编程示例1:为FC6调用赋值参数

CALL FC6

形式参数 实际参数

NO OF TOOL :=MW100

TIMEOUT :=MW110

FOUND :=Q0.1

ERROR :=Q100.0

编程示例2:无参数调用一个系统功能( SFC)

CALL SFC43 说明:调用SFC43,重新触发看门狗定时器(无参数)

编程示例3:使用背景数据块DB1调用FB99

CALL FB99.DB1

形式参数 实际参数

MAX_RPM :=#RPM1_MAX

MIN_RPM :=#RPM1

MAX_ POWER :=#POWER1

MAX_TEMP :=#TEMP1

每一次功能块(FB)或系统功能块(SFB)调用都必须有一个背景数据块。在上述举例中,数据块DB1必须在调用之前已存在。

②调用功能块指令:CALL FB nl、DB nl。使用该指令,可调用用户定义的功能块(FB)。调用指令能够调用作为地址输入的功能块,与RLO或其他条件无关。如果使用调用指令调用一个功能块,必须为它提供一个背景数据块。在处理完被调用块后,调用块程序继续处理。逻辑块的地址可以是绝对地址,也可以是符号地址。

调用块可通过一个变量表与被调用的块交换参数。

如果调用一个功能,并且调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到用于调用块的程序中。

由于在功能块处理完之后,实际参数保存在背景数据块中,当调用功能块时,只需定义与以前调用相比必须修改的实际参数。如果实际参数是一个数据块,则必须指定完整的绝对地址,如DB1、DBW2。

IN参数可作为常数、绝对地址或符号地址定义。OUT和IN_OUT参数必须作为绝对地址或符号地址定义。必须保证所有地址和常数与要传送的数据类型相符。

调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。此外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。

编程示例:使用背景数据块DB1调用FB99

CALL FB99,DB1

形式参数 实际参数

MAX_RPM :=#RPM1_MAX

MIN_RPM :=#RPM1

MAX_POWER :=#POWER1

MAX_TEMP :=#TEMP1

每一次功能块( FB)调用都必须有一个背景数据块。在上述举例中,数据块DB1必须在调用之前已存在。

③调用功能指令:CALL FCn。如果使用的是语句表编辑器(STL Editor),则n必须指向现有有效块。在使用之前,还必须定义符号名。

使用该指令,可调用功能( FC)。调用指令能够调用作为地址输入的功能(FC),与RLO或其他条件无关。在处理完被调用块后,调用块程序继续处理。逻辑块的地址可以绝对指定,也可相对指定。

调用块可通过一个变量表与被调用的块交换参数。

如果调用一个功能,并且调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到用于调用块的程序中。

在调用功能时,必须在调用逻辑块中为声明的形式参数赋予实际参数。

IN参数可作为常数、绝对地址或符号地址定义。OUT和IN_OUT参数必须作为绝对地址或符号地址定义。必须保证所有地址和常数与要传送的数据类型相符。

调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。除此之外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。

编程示例:为FC6调用赋值参数

CALL FC6

形式参数 实际参数

NO OF TOOL :=MW100

TIMEOUT :=MW110

FOUND :=Q0.1

FRROR :=Q100.0

④调用多背景块指令:CALL#变量名。通过使用一个功能块的数据类型声明一个静态变量,可以生成一个多背景块。在程序元素目录中只包含已声明的多背景块。

⑤条件调用指令:CC<逻辑块标识符>。使用该指令,可以在RLO =1时调用一个逻辑块。该指令用于无参数调用FC或FB类型的逻辑块。除了不能使用调用程序传送参数之外,CC指令与CALL指令的用法相同。该指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中,去激活MCR相关性,生成被调用块的本地数据范围,并开始执行调用的程序代码。

逻辑块的地址可以绝对指定,也可相对指定。

编程示例1:

A I 2.0 说明:检查输入I2.0的信号状态

CC FC6 如果I2.0为“1”,调用功能FC6

A M 3.0 如果I2.0=1,从调用功能返回处执行;如果I2.0=0,直接在A I2.0语句后执行

如果CALL指令调用的是一个功能块(FB)或一个系统功能块(SFB),必须在语句中指定一个背景数据块(数据块号)。对于使用CC指令的调用,不能将一个数据块分配给语句中的地址。

根据所使用的程序段,程序编辑器( Program Editor)可以在从梯形逻辑编程语言转换为语句表编程语言过程中,生成UC指令或CC指令。

编程示例2(功能块FB1的背景数据块是DB1,“:=”前面是用符号地址表示的形参,“:=”后面是实参):

CALL FB1,DB1

Switch_On :=I20.0 说明:将实参I20.0赋给形参Switch_On

Switch_Off :=I20.1

Failure :=I20.2

ActuaLSpeed :=MW2

Engine_On :=Q5.0

Preset_Speed_Reached:=Q5.1

CALL SFC43 调用SFC43,重新触发监控定时器(无参数)

每一个FB和SFB都必须有一个背景数据块,上例中在调用FB1之前,FB1和背景数据块DB1必须是已经存在的。

⑥无条件调用指令UC( Unconditional Block Call)和条件调用指令CC( Conditional Block Call)。用于调用没有参数的FC和SFC。其使用方法与CALL指令相同,只是在调用时不能传递参数。CC指令在逻辑运算结果RLO =1时才调用块。用CC指令和UC指令调用块时,不能使用背景数据块。下面是使用CC指令和UC指令的例子。

A I0.1 说明:刷新RLO

CC FC6 如果RLO=1,调用没有参数的功能FC6

L IW4 从FC6返回后执行,或在I0.1=0时不调用FC6,直接执行本指令

UC FC2 无条件调用没有参数的功能FC2

在CALL指令中,FC、FB、SFC和SFB是作为地址输入的,其地址可以是绝对地址,或者是符号地址。在调用FB和SFB时,必须提供与之相对应的背景数据块;而调用FC和SFC时,不需调用背景数据块。

在调用时,应将实参赋予被调用功能中的形参,并确保实参和形参数据类型相同,并且在FC和SFC的调用中,必须为所有形参指定实参,而调用FB和SFB,则只需指定上次调用后必须改变的实参。

FB功能块的具体调用(指令表程序)如下。

CALL FB1,DB1 说明:调用FB1,其背景数据块为DB1

MAX :=MW10 MAX为FB1定义的参数,将MW10的值赋予MAX

MIN :=MW20 将MW20的值赋予FB1参数MIN

POWER_ON :=I 0.0 将I0.0赋予FB1参数POWER_ON

POWER_OFF:=I 0.1 将I0.1赋予FB1参数POWER_OFF

程序中调用了背景数据块DB1,并将实参(“;=”之后的变量)赋予形参(“;”之前的变量)。

相关阅读

断路器五个保护:失灵、充电、死区、自动重合闸、三相不一致保护解析——工厂变配电室运维

很多常年接触高压柜的运维人员,只熟悉过流保护、速断保护,对失灵、充电、死区、自动重合闸、三相不一致这五个保护可能都不清楚,当然其实我也是,后面还专门去学习了两天。目前就...
2026-06-17

电动车充电器电路图合集

TL3842和LM393充电器电路图 SG3524组成的充电器电路图 LM358和光耦照成的充电器电路图 TL494、场效应管照成的充电器 TL494、LM358、CD4046充电器电路图...
2023-04-03
电动车充电器电路图合集

手机到底能不能边充电边玩?真的影响电池寿命吗?答案你很难想到

据2017年中国游戏产业报告统计,手机网游受欢迎程度,已经逐渐赶超电脑网游,吃鸡、王者荣耀、消消乐、棋牌游戏…许多人都说:“手机在手 我能宅在家里一整天”但,手机在玩游...
2023-06-11
手机到底能不能边充电边玩?真的影响电池寿命吗?答案你很难想到

选择灯具时应考虑哪几个方面?灯具选择应注意的事项

灯饰是家具的眼睛。在现代家庭装饰中,灯具的作用已经不仅仅局限于照明,更多的时候它起到的是装饰作用。因此灯具的选择就要更加复杂得多,它不仅涉及到安全省电,而且会涉及...
2023-05-21
选择灯具时应考虑哪几个方面?灯具选择应注意的事项

水电改造这些坑你经历过吗?装修小白需要避开这两种坑钱猫腻!

对于装修小白而言,无良的装修商家都可以动手脚于无形,而你却丝毫察觉不到,防不胜防。 比如报价,把水泥沙子的钱分到几个房间,每个房间都多加一点儿,多出几百块钱你也不一...
2023-06-11
水电改造这些坑你经历过吗?装修小白需要避开这两种坑钱猫腻!

热销商品

广东珠江电线电缆阻燃国标定制BYJBV BVR YJV YJY RVV RVS RV KVV

广东珠江电线电缆,专注于阻燃国标定制,产品涵盖BYJBVBVRYJVYJYRVVRVSRVKVV等多种规格。我们采用先进生产技术,严格遵循国家标准,确保产品质量可靠、性能稳定。产品适...
¥ 1

可换头防静电塑胶镊子ESD-7A/242/249/259防划伤夹IC硅晶片陶瓷头

ESD-7A/242/249/259是一款专为半导体行业设计的防静电塑胶镊子,有效防止静电对敏感电子元件的损害。其独特之处在于可更换的镊子头,包括专为夹持IC硅晶片和陶瓷元件...
¥ 2

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

L型套筒扳手铣口烟斗双头弯头7字穿孔机修六角汽修轮胎工具6-19mm

L型套筒扳手是一款常用于工业领域的多功能工具,具备双头设计,可高效完成铣口、烟斗等多种工件孔位加工,适用六角汽修、轮胎等场景。其套筒尺寸为6-19mm,精准适配各类...
¥ 3.5

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店,作为西门子品牌的专卖店,提供了一系列高品质、设计新颖的家居电气产品。这里销售的开关插座采用无框...
¥ 8.77

网站栏目