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

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

3天内不再提示

函数的参数

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-04-27 15:26 次阅读

调用函数(FC)

通过说明函数名(FC, SFC标识符)和参数表来调用函数。能够用绝对或符号形式指定标识返回值的函数名称:

FC31 (X1:=5, Q1:=Checksum) ; // 绝对形式

DISTANCE (X1:=5, Q1=:Checksum) ; // 符号形式

调用之后,函数的结果可用作为返回值或作为输出和输入/输出参数(实际参数)。

da8e37c4-e4cb-11ed-ab56-dac502259ad0.png

对比功能块,函数提供一个结果当作返回值。基于这个原因,函数能够被子当作地址来对待(VOID类型的函数除外)。

函数计算与函数有同样名称的返回值,且将其返回给调用它的块。在那里,值代替函数调用。

例如,在下面的赋值中,DISTANCE函数被调用,且结果赋值给LENGTH变量。

LENGTH:= DISTANCE (X1:=-3, Y1:=2);

返回值能够用在下面的函数或功能块元素:

  • 在一个赋值语句中,

  • 在一个逻辑、算术或比较表达式

  • 作为更进一步的功能块或函数调用的参数。

函数的参数

对比功能块,函数没有任何他们保存参数值的内存。在函数激活时,本地数据只中临时地贮存。由于这个原因,当调用函数时,所有在函数声明部分定义的形式输入、输入/输出和输出参数必须赋予实际参数。

例子(Example)

带为输入、输出和输入/输出参数赋值的调用如下:

FC32 (E_Param1:=5,D_Param1:=LENGTH,

A_Param1:=Checksum)

函数调用举例:

函数被调用(Function to be Called)

计算在使用笛卡尔坐标系统的同一平面中两点(X1,Y1)和(X2,Y2)之间距离的函数DISTANCE可以是下面的形式(此例假设符号DISTANCE在符号表中为FC37已经声明)。

FUNCTION DISTANCE: REAL // 符号
VAR_INPUT
X1 : REAL;
X2 : REAL;
Y1 : REAL;
Y2 : REAL;
END_VAR
VAR_OUTPUT
Q2 : REAL;
END_VAR
BEGIN
开始
DISTANCE := SQRT( (X2-X1)**2 + (Y2-Y1)**2 );
Q2 := X1+X2+Y1+Y2;
END_FUNCTION

调用块(Calling Block)

下例显示更多函数值的使用的可选择的形式:

FUNCTION_BLOCK CALL
VAR
LENGTH : REAL ;
CHECKSUM : REAL ;
RADIUS : REAL;
Y : REAL;
END_VAR
BEGIN
. . .

// 在赋值语句中调用:
LENGTH := DISTANCE (X1:=3, Y1:=2, X2:=8.9, Y2:= 7.4, Q2:=CHECKSUM) ;
// 在算术或逻辑表达式中调用,如:
Y := RADIUS + DISTANCE (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4, Q2:=Checksum)
// 用来为进一步的被调用的块提供参数
FB32.DB32 (DIST:= DISTANCE (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4), Q2:=Checksum)
. . .
END_FUNCTION_BLOCK

审核编辑 :李倩


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

    关注

    11

    文章

    1773

    浏览量

    32075
  • 函数
    +关注

    关注

    3

    文章

    4303

    浏览量

    62411

原文标题:函数的参数

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

收藏 人收藏

    评论

    相关推荐

    ARM基础下:函数参数类型知识

    把局部变量从char或者short类型转换成int类型,可以改善性能并减小代码尺寸,其实,这种转换函数类型参数也有同样的效果,看下面的例子,将2个16位的值相加,其他第2个数先减半,然后返回一个16
    发表于 08-27 13:44

    指针怎么作为函数参数

    函数。我试图用指针作为函数参数,但好像我做错了什么。这里是我的代码的一部分:C文件:UIT88ReByTeDATA;UIT8 8MPU9250ALE请求(空){I2CdMaseRead字节
    发表于 09-16 11:09

    怎么将函数参数传递给内联ASM

    这是怎么做到的?常规的asm指令编译文件,但我从来没有实现对函数外部声明的函数参数或变量的访问。我已经研究了一段时间,但我不是很清楚。什么是正确的合成函数?当做
    发表于 09-29 09:22

    函数参数传递总是出错怎么办

    函数参数传递总是出错,怎么办啊??可能会是什么原因?
    发表于 07-19 08:00

    es6语法中函数参数

    es6语法中函数参数 本文在我们的《 实用ES6》 一书中有介绍 。 深入了解ES6中引入的新语言功能。ES6引入了Arrow函数,作为编写JavaScript函数的新语法。 它们为开
    发表于 09-16 08:17

    通讯组件的函数参数有哪些?它是怎么使用的?

    什么是通讯组件?数据类型有哪些?通讯组件的函数参数有哪些?通讯组件是怎么使用的?
    发表于 09-18 07:14

    汇编的子程序函数参数和返回值怎么判断?

    怎么知道一个子程序有没有函数参数,有几个函数参数函数参数的数据类型是什么
    发表于 10-19 07:21

    指针作为函数参数

    指针作为函数参数 大多数C程序员开始使用指针时是用它们实现函数参数,所谓可变参数。为了理解可变参数
    发表于 07-29 11:49 2694次阅读

    利用函数参数和返回值提高嵌入式软件质量

    利用函数参数和返回值提高嵌入式软件质量  引 言   提高软件代码的质量是每一个软件设计者都必须考虑的问题,这涉及软件的有效性和经济价值。基于嵌
    发表于 11-07 09:48 759次阅读
    利用<b class='flag-5'>函数</b><b class='flag-5'>参数</b>和返回值提高嵌入式软件质量

    VB SendMessage 函数参数

    Windows是一个消息驱动式系统,SendMessage是应用程序和应用程序之间进行消息传递的主要手段之一,这里我搜集整理了SendMessage函数的详细参数介绍,以备自用。 声明: DECLARE INTEGER SendMe
    发表于 04-20 10:43 0次下载

    函数参数传递的原理

    参数传递,是在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程,方法有按值传递
    的头像 发表于 03-02 11:41 7300次阅读
    <b class='flag-5'>函数</b><b class='flag-5'>参数</b>传递的原理

    单片机的本质函数参数传递详细资料说明

    本文档的主要内容详细介绍的是单片机的本质函数参数传递详细资料说明。
    发表于 07-16 17:39 1次下载
    单片机的本质<b class='flag-5'>函数</b><b class='flag-5'>参数</b>传递详细资料说明

    C语言函数参数关于传值和传指针有什么区别?

    C语言函数参数的传值和传指针有什么区别?
    的头像 发表于 02-26 16:35 2181次阅读

    C语言函数参数介绍

    C语言数组元素作函数实参 数组元素可以用作函数实参,不能用作形参。 C语言在用数组元素作函数实参时,把实参的值传给形参,是“值传递”方式。 数据传递的方向是从实参传到形参,单向传递。 C语言数组名作
    的头像 发表于 03-10 14:30 2301次阅读

    函数参数的分类有哪些

    一、函数参数的分类 函数参数分为两类:形参 及 实参 形参:形参是在创建过程中声明的参数,如果不给形参传入特定的实参,形参就没有实际的意义
    的头像 发表于 11-14 11:13 2530次阅读