0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

西门子博途:SCL编程调用函数/调用函数块介绍

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-06-20 09:41 次阅读

调用函数的语法

以下语法用于调用函数:

<函数名称> (参数列表); //标准调用

<操作数>:=<函数名称> (参数列表); //在表达式中调用

函数值

在 SCL 中,提供返回值的函数可在任何表达式中代替操作数。因此,返回值也称为 SCL 中的“函数值”。

函数的调用选项取决于函数是否将函数值返回到调用块。

在 RET_VAL 参数中定义函数值。如果 RET_VAL 参数为 VOID 数据类型,则函数不会向调用块返回值。如果 RET_VAL 参数为另一种数据类型,则函数会返回该数据类型的函数值。

在 SCL 中,RET_VAL 参数可以使用除 ANY、ARRAY、STRUCT 和 VARIANT,以及 TIMER 和 COUNTER 参数类型之外的所有数据类型。

调用选项

SCL 中的调用函数有两种可能:

函数(有和没有函数值)的标准调用

使用标准调用,可以将函数的结果作为输出参数或输入输出参数。

在有函数值的函数中调用表达式

返回函数值的函数可以在任何表达式中代替操作数,例如,在赋值表达式中。

函数计算函数值(与函数同名),并将其返回到调用块。这里,该值可替换此函数调用。

调用后,函数的结果将作为函数值或作为 output 和 in-out 参数提供。

递归块调用

用户可采用递归方式进行块调用。即,块可以自我调用。请注意,此类调用的深度限值为 24 级,且不支持多重背景。

参数列表

如果要从 SCL 块调用另一个代码块,则需要为被调用块的形参提供实参。

可以通过赋值指令指定这些参数。该赋值指令可以为被调用块中定义的参数进行赋值(实参)。

调用后将在括号内直接列出被调用代码代的形参。输入参数和输入输出参数的赋值标识符为“:=”,输出参数的赋值标识符为“=>”。参数后面的灰色占位符表示所需的数据类型和参数类型。

参数的指定规则

下列规则适用于为函数指定参数:

必须提供该函数的所有参数。

赋值的顺序不重要。

常数、变量和表达式可作为实参。

形参和实参的数据类型需匹配。也选择某些特定实参,其数据类型可隐式转换为形参的数据类型。

各赋值操作通过逗号进行分隔。

如果被调用的块中只有一个参数,那么在括号中指定的就是实参。无需再指定形参。

在 SCL 中调用函数时,无法通过 EN 使用释放机制。可以使用 IF 声明代替有条件调用函数。

调用函数快的语法 下列语法用于以单个背景或多重背景方式调用函数块:

单个背景:

如果函数块来自项目: (参数列表)

如果函数块来自“指令”(Instructions) 任务卡: .<指令名称> (参数列表) 或 <指令名称> (参数列表)

多重背景 <#背景名称> (参数列表)

以单个背景或多重背景的方式调用

可以单个背景或多重背景方式调用函数块。

以单个背景方式进行调用

调用的函数块将其数据存储在自身的数据块中。

以多重背景方式进行调用

调用的函数块将其数据存储在调用函数块的背景数据块中。

关于调用类型的更多信息,请参见“另请参见”。

递归块调用

用户可采用递归方式进行块调用。即,块可以自我调用。请注意,此类调用的深度限值为 24 级,且不支持多重背景。

参数列表

如果要从 SCL 块调用另一个代码块,可以为被调用块的形参提供实参。

可以通过赋值指令指定这些参数。该赋值指令可以为被调用块中定义的参数进行赋值(实参)。

调用后将在括号内直接列出被调用代码代的形参。输入参数和输入输出参数的赋值标识符为“:=”,输出参数的赋值标识符为“=>”。参数后面的占位符表示所需的数据类型和参数类型。

参数的指定规则

下列规则适用于指定参数:

常数、变量和表达式可作为实参。

赋值的顺序不重要。

形参和实参的数据类型需匹配。也选择某些特定实参,其数据类型可隐式转换为形参的数据类型。

各赋值操作通过逗号进行分隔。

如果被调用的块中只有一个参数,那么在括号中指定的就是实参。无需再指定形参。

SCL 中调用函数的示例

标准调用

以下为标准函数调用 FB 的示例:

SCL
// 标准函数调用
"MyFC" (MyInput := 10, MyInOut := "Tag1");

结果

执行 "MyFC" 块之后,输入/输出参数 "MyInOut" 中确定的值可用于调用块的 "Tag1" 中,而且需要在此做进一步处理。

以赋值方式调用

以下为以赋值方式调用函数的示例:

SCL
(*在赋值表达式中调用,为 "MyFC" 定义了函数值*)
#MyOperand := "MyFC" (MyInput1 := 3, MyInput2 := 2, MyInput3 := 8.9, MyInOut := "Tag1");

结果

"MyFC" 的函数值将传输到 "#MyOperand" 中。

以算术表达式方式进行调用

以下为以算术表达式的方式调用函数的示例:

SCL
(*在数学表达式中调用,为 "MyFC" 定义了函数值*)
#MyOperand := "Tag2" + "MyFC" (MyInput1 := 3, MyInput2 := 2, MyInput3 := 8.9);

结果

"MyFC" 的函数值将加到 "Tag2" 上,并将结果传送到 "MyOperand"。

在 SCL 中调用函数块的示例

以单个背景方式进行调用 以下为以单个背景方式调用 FB 的示例:

SCL
// 以单个背景方式调用 "MyDB" (MyInput:=10, MyInout:= "Tag1");

结果

执行调用之后,输入/输出参数 "MyInout" 中确定的值可用于 "MyDB" 数据块的 "Tag1" 中。

以多重背景方式进行调用

以下为以多重背景方式调用 FB 的示例:

SCL
// 以多重背景方式进行调用
#MyFB (MyInput:= 10, MyInout:= "Tag1");

结果

执行 "#MyFB" 块之后,in/out 参数 "MyInout" 中确定的值可用于调用代码块中该数据块内的 "Tag1"。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 西门子
    +关注

    关注

    93

    文章

    3007

    浏览量

    115611
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    17033

原文标题:西门子博途:SCL编程调用函数/调用函数块

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何查看及更改函数/函数调用环境

    是循环执行,当一个功能被多个外部函数/函数调用时,我们应如何查看某一次调用时的内部变量呢?这
    的头像 发表于 11-17 09:08 881次阅读
    如何查看及更改<b class='flag-5'>函数</b>/<b class='flag-5'>函数</b><b class='flag-5'>块</b>的<b class='flag-5'>调用</b>环境

    SIMATIC S7-1500 PLC S7-SCL SCL详解

    函数函数西门子的大中型PLC编程中,应用十分广泛,前介绍
    的头像 发表于 12-06 09:17 916次阅读
    SIMATIC S7-1500 PLC S7-<b class='flag-5'>SCL</b> <b class='flag-5'>SCL</b><b class='flag-5'>块</b>详解

    浅谈西门子PLC的“SCL语言”编程

    介绍西门子PLC的“SCL语言”编程,相关编程代码
    发表于 01-22 17:25 0次下载

    高效的C编程函数调用

    14.9 函数调用 函数设计的基本原则是使其函数体尽量的小。这样编译器可以对函数做更多的优化。 14.9.1 减少
    发表于 10-17 16:49 6次下载
    高效的C<b class='flag-5'>编程</b>之<b class='flag-5'>函数</b><b class='flag-5'>调用</b>

    西门子SCL编程:滚动数据记录

    责任编辑:xj 原文标题:SCL编程实例:滚动数据记录 文章出处:【微信公众号:PLC技术圈】欢迎添加关注!文章转载请注明出处。  
    的头像 发表于 12-28 09:16 4073次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b><b class='flag-5'>SCL</b><b class='flag-5'>编程</b>:滚动数据记录

    西门子PLC中使用SCL语言编程的技巧

    西门子PLC中使用SCL语言编程的技巧说明。
    发表于 04-22 11:15 65次下载

    浅谈西门子PLC的SCL语言编程

    西门子PLC的SCL语言编程说明。
    发表于 04-22 14:39 47次下载

    浅谈西门子SCL编程

    浅谈西门子SCL编程资料免费下载。
    发表于 04-23 10:44 27次下载

    西门子PLC编程软件下载

    西门子PLC编程软件TIA V13 SP1 SIMATIC_WinCC_Runtime_Professional_SP1_for_V13---江西工控论坛有下载密码www.jx-g
    发表于 03-01 11:04 60次下载

    SCL调用函数的示例

    在此,可插入函数 (FC) 调用函数 (FB) 调用函数
    的头像 发表于 06-06 10:18 2080次阅读

    的多重背景调用

    函数 (FB) 调用另一个函数时,可其实例数据存储在调用
    的头像 发表于 06-08 15:50 3705次阅读
    <b class='flag-5'>博</b><b class='flag-5'>途</b>的多重背景<b class='flag-5'>调用</b>

    调用SCL函数-事例

    在以下部分中,将在组织“Main” 中调用 SCL 函数SCL_Best_before_
    的头像 发表于 08-10 09:51 825次阅读
    <b class='flag-5'>调用</b><b class='flag-5'>SCL</b><b class='flag-5'>函数</b><b class='flag-5'>块</b>-事例

    西门子: SCL函数调用方法

    SCL 函数在内部读取 CPU 的系统时间,并根据当前日期和输入的保质期限(年数)计算“保质期”的年份。 ② 计算出的保质期年份为一个整数值在输出参数中输出。 将计算出的值存储在变量
    发表于 10-16 15:55 3309次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>: <b class='flag-5'>SCL</b><b class='flag-5'>函数</b><b class='flag-5'>块</b>的<b class='flag-5'>调用</b>方法

    SIMATIC S7-1500 PLC S7-SCL SCL及应用

    函数函数西门子的大中型PLC编程中,应用十分广泛,前介绍
    的头像 发表于 12-15 16:18 951次阅读
    SIMATIC S7-1500 PLC S7-<b class='flag-5'>SCL</b> <b class='flag-5'>SCL</b><b class='flag-5'>块</b>及应用

    西门子:手动更新调用

    选择不一致的调用,然后在上下文菜单(鼠标右键)中选择函数“Update”。 然后会出现一个窗口,其中显示旧的(不正确的)和新的调用(带有已删除的“ActiveNotAck”参数)。
    的头像 发表于 12-25 11:12 2882次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>:手动更新<b class='flag-5'>块</b><b class='flag-5'>调用</b>