Simulink Function

Simulink功能块提供了一个文本接口,用于定义函数调用。接口与函数调用方匹配,如Function Caller或Stateflow图表。Simulink Function块与Function-Call子系统相比,前者简化了信号路由,后者提供更好的信号可追溯性。通过改变函数可见性,可以从局部(scoped)到全局,影响代码生成和函数的调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

Simulink功能块是一个子系统块,预配置为用Simulink®块图形定义功能的起点。该块为函数调用方提供了一个文本接口。您可以从函数调用程序块、MATLAB函数块或Stateflow®图表调用Simulink函数块。

功能接口

功能界面出现在Simulink功能块的表面上。编辑块文本可从函数定义中添加和删除Argument Inport块和Argument Outport块。编辑还会在Simulink功能块内的触发器块中设置功能名称参数。
例如,在Simulink函数块的表面输入y=myfunction(u),会在子系统中添加一个参数输入块(u)和一个参数输出块(y)。
当使用函数调用程序块调用函数时,函数调用程序中的参数function prototype必须与您在Simulink函数块上指定的函数接口完全匹配。此匹配包括函数的名称以及输入和输出参数的名称。例如,Simulink Function块和Function Caller块都使用参数名称u和y。(如果使用不同的名称,例如把u改成a,编译会报错)
在这里插入图片描述

从Stateflow转换或状态标签调用函数时,可以使用不同的参数名称。例如,Simulink Function块使用x和y参数,而Stateflow转换使用x2和y2参数来调用函数。

在这里插入图片描述

Function-Call 子系统 VS Simulink Function块

通常,函数调用子系统块通过直接信号连接提供比Simulink函数块更好的信号可追溯性。而Simulink功能块消除了在模型层次中的路由输入和输出信号线。

属性Function-CallSimulink Function
执行/调用函数的方法使用信号线触发使用函数名调用
形式输入参数(参数输入块)和输出参数(参数输出块)noyes
local inputs和outputsyesyes

下面我新建一个simulink function模块,名字为abc
在这里插入图片描述
u增益20输出y,函数可见性设为scoped,即局部的。
在这里插入图片描述
然后通过新建一个function caller模块调用abc,最后生成代码。可以看到abc函数被成功调用了
在这里插入图片描述在这里插入图片描述
这是一个直接的函数调用。

现在我把函数的可见性修改为gobal,然后生成代码看下效果

在这里插入图片描述
如下图所示,可以看到abc作为一个单独的文件生成出来了,形参也变成传地址的形式了。这个地址在函数内部是有全局作用域的。
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值