我是靠谱客的博主 热情酒窝,最近开发中收集的这篇文章主要介绍c代码生成matlab模块,从模型和生成的代码调用外部 C 代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

替换过程

对于许多基于模型的设计应用,除了 Simulink® 模型之外,设计还包括一组经过测试和验证的现有 C 函数。您可以将这些函数集成到一个 Simulink® 模型中,并生成使用这些函数的代码。

在本示例中,您将创建一个调用现有 C 函数的自定义 Simulink® 模块。然后,将该模块包含在一个模型中,并通过在 Simulink® 中进行模型仿真来测试整个系统。

在示例模型中,您可以将 PI 控制器中的 Lookup 模块(查找表)替换为对一个现有 C 函数的调用。该函数在文件 SimpleTable.c 和 SimpleTable.h 中定义。

0fd6b87c59759e8c950d14f86c5e9481.png

创建调用 C 函数的模块

要指定对现有 C 函数的调用,请使用 S-Function 模块。您可以使用代码继承工具自动创建 S-Function 模块。在该工具中,您将首先为现有 C 函数指定接口。然后,工具使用该接口创建一个 S-Function 模块。

使用代码继承工具为 SimpleTable.c 中的现有 C 函数创建一个 S-Function 模块。

def = legacy_code('initialize')

您可以使用结构体 def 定义现有 C 代码的函数接口。

eb19721a55e51fba10748ff3e66f0058.png

legacy_code('sfcn_cmex_generate',def)

legacy_code('compile',def)

legacy_code('slblock_generate',def)

生成的 S-Function 模块调用 SimpleTable.c 中的 C 函数。您现在可以在模型中使用此 S-Function 模块。

legacy_code('sfcn_tlc_generate',def)

此命令创建一个 TLC 文件,该文件是 S-Function 的一个组件,指定如何为模块生成代码。

通过仿真验证外部代码

在 Simulink® 模型中集成现有 C 代码时,将验证生成的 S-Function 模块。

要验证 Lookup 模块的替换,请将 Lookup 模块产生的仿真结果与新 S-Function 模块产生的结果进行比较。

Sine Wave 模块从 [-2 :2] 产生输出值。

查找表的输入范围来自 [-1 :1]。

查找表输出输入的绝对值。

查找表根据输入范围对输出进行裁剪。

下图显示验证结果。现有 C 代码和 Simulink® 表模块产生相同的输出值。

60a360567f808a10f163ca012d79df94.png

将 C 代码作为 Simulink® 模型的一部分进行验证

将现有 C 函数代码作为独立组件进行验证后,在模型中验证 S-Function。要完成验证,请使用测试框架模型。

仿真结果与黄金值匹配。

7637a36e468dbfefcee875a0aee584b4.png

从生成的代码调用 C 函数

代码生成器使用 TLC 文件处理 S-Function 模块,就像处理任何其他模块一样。代码生成器可以使用 S-Function 模块实现表达式折叠,这是一种将多个计算合并到一个输出计算中的操作。

生成的代码现在调用 SimpleTable C 函数。

下面的图显示生成的代码在 C 代码集成之前和之后的情况。在集成之前,代码调用生成的查找例程。在集成之后,生成的代码调用 C 函数 SimpleTable。

fc7074a9afdeb10af527cc523de58b56.png

3b53a52486661e19edc5f979d86c785f.png

最后

以上就是热情酒窝为你收集整理的c代码生成matlab模块,从模型和生成的代码调用外部 C 代码的全部内容,希望文章能够帮你解决c代码生成matlab模块,从模型和生成的代码调用外部 C 代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部