主要内容

C函数

集成和调用外部C / c++代码从一个仿真软件模型金宝app

自从R2020a

  • C功能块

库:
金宝app模型/用户定义函数

描述

C函数块集成和调用外部C / c++代码从一个仿真软件金宝app®模型。使用这个代码块定义外部和定制代码的集成通过预处理或后处理数据。此外,您可以指定自定义代码模拟和C代码生成。您可以有条件地调用函数中定义您的代码,你也可以在一块调用多个函数。使用这一块,您可以初始化持久数据并将其传递给一个外部函数。

C函数阻止支持初始金宝app化持久数据和调用外部函数块对话框。持久数据可以包括一个c++类的对象中定义您的自定义代码。看到接口使用C与c++类功能块。块仅支持初始化和终止金宝app持久数据。不支持更新数据块在模拟。金宝app模型与连续动态系统,使用一个功能块。了解更多关于S-functions,明白了功能是什么?

定义的源代码和支持文件调用金宝appC函数块的模拟目标面板模型的配置参数对话框。看到模型配置参数:仿真目标

请注意

C99标准版本的C语言支持自定义C代码集成到模型。金宝app金宝app

调用C库函数

你可以叫这些C直接从数学库函数C函数块。

腹肌 这些“可信赖医疗组织” 印度历的7月 : 量化 装天花板
因为 cosh 经验值 晶圆厂 地板上 在你
实验室 ldexp 日志 log10 战俘
sinh √6 棕褐色 双曲正切

当您调用这些函数,应用双精度,除非所有输入参数显式单精度。当发生类型不匹配时,预期的输入参数的类型替换原来的参数。例如,如果您调用函数与一个整数参数,一个输入参数的类型的浮点数替换原来的论点。

调用其他C库函数,创建和调用外部调用C库函数的包装器函数。

调用腹肌,晶圆厂,实验室功能

的解释腹肌,晶圆厂,实验室函数C函数块超出了标准C版本包括整数和浮点参数:

  • 如果x是一个整数,标准的C函数腹肌适用于x,或abs (x)

  • 如果x是一个双,标准的C函数实验室适用于x,或实验室(x)

  • 如果x是一个标准的C函数晶圆厂适用于x,或晶圆厂(x)

基于类型的代码替换库(CRL)

调用函数应该调用正确的CRL基于数据传递到函数的类型。如果没有指定CRL,调用函数应该调用特定类型库。C99的CRL生成一个特定类型的功能。例如:

通过的类型 代码生成调用
sin (doubleIn) sin (doubleIn)
sin (floatIn) sinf (floatIn)

限制

这些特性的仿真软件不兼容金宝appC函数块。

  • 金宝app仿真软件覆盖™

    只有执行覆盖测量。

  • 金宝app仿真软件代码检查员™

  • 金宝app仿真软件设计校验™

这些限制适用于你指定的C代码C函数块。

  • 局部静态变量使用静态不支持关键字。金宝app缓存值在时间步,定义一个符号持续的符号块表对话框。

  • 你不能# include在代码文件。文件包含外部函数必须被指定模拟目标面板配置参数窗口的。

  • 的地址常数不支持的象征。金宝app

  • 直接调用C库函数除了上面列出的C数学库函数调用C库函数不支持。金宝app调用其他C库函数,创建和调用一个调用C库函数的包装器函数。

港口

输入

全部展开

输入端口的数量是由符号的数量输入输入输出中定义的范围符号表的块参数对话框。每个输入端口标签的名称是一样的输入输入输出除非你改变它通过编辑象征标签字段符号块表对话框。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|枚举|公共汽车|定点

输出

全部展开

输出端口的数量是由符号的数量输出输入输出中定义的范围符号表的块参数对话框。每个输出端口标签的名称相同输出输入输出除非你改变它通过编辑象征标签字段符号块表对话框。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|枚举|公共汽车|定点

参数

全部展开

输出代码块执行在每个时间步在仿真中,指定为一个特征向量或字符串标量。例如,您可以调用一个函数从外部C代码,修改结果,并将结果传递给其他模块执行操作。

编程使用

块参数:OutputCode
类型:特征向量或字符串标量
值:”“|C代码
默认值:”“

初始化代码块执行一次的模拟,指定为一个特征向量或字符串标量。例如,您可以初始化持续的符号。

编程使用

块参数:StartCode
类型:特征向量或字符串标量
值:”“|C代码
默认值:”“

仅执行代码块当启用的子系统或模型块,指定为一个特征向量或字符串标量。代码执行一次的模拟,如果块内包含一个子系统或模型启用块的州时启用参数设置为重置每次,代码也执行子系统或模型从残疾人切换到启用。看到使用启用子系统。您可以使用此代码,例如,设置一个初始输出值或重置一个持久的变量的值。

编程使用

块参数:InitializeConditionsCode
类型:特征向量或字符串标量
值:”“|C代码
默认值:”“

终止的代码块执行最后一次模拟,指定为一个特征向量或字符串标量。例如,使用这段代码在持久释放内存缓存符号指定为空指针。

编程使用

块参数:TerminateCode
类型:特征向量或字符串标量
值:”“|C代码
默认值:”“

符号和符号C代码中使用的属性,指定为一个表。你必须输入以下表中的每个符号的属性:

  • 的名字——符号名的代码。

    如果符号代表一个c++类对象,的名字场作为调用类的构造函数:

    对象名(Argument1,Argument2,……)

  • 范围——符号的范围。这些可用的范围:

    • 输入——块的输入。

    • 输出——输出。

    • 输入输出——输入和输出。

      使用输入输出空间映射的输入通过一个指针在您的C代码。端口创建使用一个输入输出范围为输入和输出端口有相同的名称。输入输出使缓冲重用输入和输出端口范围。缓冲重用可能优化内存使用和改进代码模拟和代码生成效率,根据信号的大小和块布局。限制包括:

      • 一个输入输出不能用于象征开始代码,初始化条件代码,或终止代码

      • 输入输出符号不支持金宝appvoid *数据类型。

      • 输入输出符号不支持金宝app尺寸()表达式。

    • 参数——块参数出现在块参数的面具。定义的参数名称标签的象征。

    • 持续的持久数据块,保留其价值在一个时间步到下一个模拟。

      您可以定义一个空指针使用持续的范围。一个空指针是一个指针,可以存储任何类型的数据创建或分配。

      您可以实例化一个对象的c++类中定义您的自定义代码通过定义一个符号持续的范围和使用类:类名称随着类型的象征。看到接口使用C与c++类功能块

    • 常数——常数值,使用值大小或数值表达式定义的。

  • 标签-标签的象征。的一个象征输入,输入输出,或输出范围,标签上的端口名称显示为块。的一个象征参数范围、标签出现在块参数的面具。如果范围是常数,这个标签是常数表达式。你不能定义一个标签持续的作用域符号。

  • 类型数据类型的象征。从下拉列表中选择一个数据类型或指定一个自定义的数据类型。

    c++类支持类型中定义您的自定义代码,也一样金宝app金宝appSimulink.Bus,金宝app仿真软件枚举,金宝appSimulink.AliasType类型。进入类型这个表所示。

    自定义类型 规范类型
    c++类 类:c++类名
    金宝appSimulink.Bus 总线:BusTypeName
    金宝appSimulink.Enum 枚举:EnumTypeName
    金宝appSimulink.AliasType AliasTypeName

  • 大小——符号数据的大小。您可以使用大小表达式来定义输出或使用的大小1继承的大小。

  • 港口港口指数的符号。对于一个输入,输入输出,或输出的象征,港口指定端口索引块的端口或端口对应的象征。对于一个参数的象征,港口指定的顺序标志出现在块参数面具。

编程使用

块参数:SymbolSpec
类型:SymbolSpec对象
值:SymbolSpec对象
默认值:空数组的象征对象

样品时间,以秒为单位指定。看到类型的样品时间指定样品时间。如果块定义了持续的符号,你就不能指定一个连续采样时间。

编程使用

块参数:SampleTime
类型:字符串标量或特征向量
默认的:“1”

块特征

数据类型

布尔一个|公共汽车一个|一个|枚举一个|不动点一个|整数一个|一个

直接引线

没有

多维信号

是的

适应信号

没有

讨论二阶导数过零检测

没有

一个实际数据类型或能力取决于块实现的支持。金宝app

扩展功能

版本历史

介绍了R2020a