主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

C Caller

Simulink 中集成 C 代码

  • C Caller block

库:
Simulink / User-Defined Functions

描述

C Caller 模块将您的外部 C 代码集成到 Simulink® 中。该模块导入并列出外部 C 代码中的函数,并使您能够选择已解析的 C 函数来集成到您的 Simulink 模型中。C Caller 模块独立支持代码生成。对于更复杂的模型,代码生成取决于您的 Simulink 模型的功能。

要使用 C Caller 模块,请使用配置参数下的仿真目标定义您的源代码和任何支持文件。然后,使用库浏览器 > Simulink > 用户定义函数C Caller 模块带到 Simulink 画布。要更改定义的源代码文件及其依赖项,请通过点击模块对话框中的 Configure custom code settings button. 转到配置参数中的仿真目标选项卡。更改源代码或其任何依赖项后,通过点击模块对话框上的 Refresh custom code button. 来刷新函数列表。要浏览源代码中的函数定义,请使用 Go to function button. 图标访问源文件。

您可以使用 addGlobalArg 函数将自定义代码中的全局变量作为全局参量添加到模块中,或者使用 deleteGlobalArg 函数从模块中删除全局参量。 (自 R2024b 起)

示例

端口

输入

全部展开

输入端口的数量及其名称是通过外部 C 代码中选择的函数推断出来的。要向 C Caller 模块提供数据,请将输入信号连接到输入端口。

输入标签的名称与输入端口的名称相同,除非通过编辑模块对话框端口规范下的标签列进行更改。如果将标签重命名为输入端口,则 C Caller 模块会更改端口的名称。

对于输入变量,您可以使用范围列将输入范围更改为参数或常量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | string

输出

全部展开

输出端口的数量及其名称是通过外部 C 代码中选择的函数推断出来的。要从您的 C Caller 模块发送数据,请将一个模块连接到您的 C Caller 模块的输出端口。

输出端口标签与您的输出端口具有相同的名称,除非您通过编辑模块对话框端口规范下的标签列来更改它。如果将标签重命名为输入端口,则 C Caller 模块会更改端口的名称。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | enumerated | bus | string

参数

全部展开

C Caller 模块解析的函数名称,指定为字符向量或字符串标量。有关可用函数的列表,请参阅 可用函数

可调: Yes

编程用法

模块参数FunctionName
类型:字符向量或字符串标量

myFunctionName = get_param(gcb,"FunctionName")
myFunctionName =

    'mean_filter'

端口属性,以表的形式指定。该表指示了模块的每个输入和输出元素的属性。如果范围是输入,则可以将此变量修改为参数常量。这些属性包括

名称 - 演示从源代码推断出的变量名称。

粗体参量名称表示该端口或参数是全局参量。

范围 - 指示源代码中变量的作用。如果变量是 C Caller 模块源代码中的输入参量,则可以将范围类型更改为常量或参数。如果变量是源代码中的输出参量,则不能更改范围类型。

标签 - 标记 Simulink 模型的输入或输出变量。您可以使用此表更改标签。如果范围是一个参数,请在此字段中输入参数名称。如果范围是常数,请输入常值。

类型 - 表示来自端口的数据类型。

Size - 表示输入和输出数据的大小。

名称、范围、类型和大小都是从源代码推断出来的。

编程用法

模块参数FunctionPortSpecification
类型:FunctionPortSpecification 对象

可映射到 C Caller 模块的所有可用函数的列表,指定为元胞数组。

模型中的 C Caller 模块导入外部源代码中的所有函数,并在模块对话框中显示 函数名称 旁边的函数名称。要选择并使用模块中的函数,请确认该函数名称出现在可用函数表中。如果您缺少其中一个函数,请点击模块对话框中的 Refresh custom code button. 重新加载源代码。要更改函数名称,请修改源代码并点击刷新按钮重新加载。

编程用法

模块参数AvailableFunctions
类型:元胞数组

allAvailableFunctions = get_param(gcb, "AvailableFunctions")
allAvailableFunctions =

  1×1 cell array

    {'add'}

采样周期,以秒为单位。请参阅采样时间的类型指定采样时间

编程用法

模块参数SampleTime
类型:字符串标量或字符向量
默认值"-1"

模块特性

数据类型

Booleana | busa | doublea | enumerateda | fixed pointa | integera | singlea

直接馈通

多维信号

a

可变大小信号

过零检测

a 实际支持的数据类型或功能取决于模块实施。

详细信息

全部展开

扩展功能

全部展开

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

版本历史记录

在 R2018b 中推出

全部展开