通过使用遗留代码工具来调用现有的,外部函数或从生成的代码。
学习如何:
评估C功能作为Simulink®模型仿真的一部分。金宝app
从您从模型生成的代码中调用C函数。
有关示例模型的信息,请参阅从嵌入式系统的控制算法生成C代码。
打开示例模型,RTWDEMO_PCG_EVAL_P4
。
对于许多基于模型的设计应用,除了Simulink®模型之外,设计还包括一组已测试和验证的现有C功能。金宝app您可以将这些功能集成到Simulink®模型中并生成使用该功能的代码。金宝app
在此示例中,您可以创建一个调用现有C函数的自定义Simulink®块。金宝app然后,您将块包含在模型中,并通过Simulink®中的模型仿真测试整个系统。金宝app
在示例模型中,您可以使用对现有C功能的呼叫替换PI控制器中的查找块(Lookup Tables)。该函数在文件中定义简单的
和简单
。
要指定对现有C函数的调用,请使用S函数块。您可以使用遗留代码工具自动创建S函数块。在该工具中,您首先为您的现有C函数指定一个接口。然后,该工具使用该接口来创建S函数块。
使用遗留代码工具为现有C函数创建S函数块简单的
。
def = letacacy_code('初始化')
您可以使用该结构def
要将功能界面定义到现有C代码。
2。填充结构的字段。
3.创建S函数。
lefacy_code('sfcn_cmex_generate',def)
4.编译S函数。
lefacy_code('编译',def)
5。创建S函数块。
lefacy_code('slblock_generate',def)
生成的S函数块调用C函数简单的
。您现在可以在模型中使用此S函数块。
6。创建TLC文件。
lefacy_code('sfcn_tlc_generate',def)
此命令创建一个tlc文件,它是s函数的组件,它指定如何为块生成代码。
在Simulink®模型中集成现有C代码时,验证生成的S函数块。金宝app
要验证查找块的替换,请比较查找块产生的模拟结果,其中包含新的S函数块产生的结果。
1。打开验证模型。
正弦波块从[-2:2]产生输出值。
查找表的输入范围来自[-1:1]。
查找表输出输入的绝对值。
查找表遍历输入限制的输出。
2。运行验证模型。
该图显示了验证结果。现有的C代码和Simulink®表块会产生相同的输出值。金宝app
在将现有的C函数代码验证为独立组件后,验证模型中的S函数。要完成验证,请使用测试线束模型。
1。打开测试线束。
2。运行测试线束。
仿真结果匹配金色值。
代码生成器使用TLC文件处理像任何其他块的S函数块。代码生成器可以实现表达折叠使用S函数块,将多个计算组合成单个输出计算的操作。
1。构建完整模型。
2。检查生成的代码pi_control_reusable.c.
。
生成的代码现在调用简单
C函数。
这些数字显示C代码集成之前和之后生成的代码。在集成之前,代码调用生成的查找例程。集成后,生成的代码调用C函数简单
。