如果你有嵌入式编码器®从建模软件,您可以生成函数源代码组件中使用一个外部代码库。生成的代码不包括支持调度代码(例如,一个阶跃函数)。金宝app控制逻辑之外的仿真软件金宝app®环境调用生成的函数代码。
您可以为这些建模生成函数代码出口组件:
导出功能模型(模型包含的功能模块,由专门的函数调用子系统,函数调用模型块,或其他导出功能模型中描述导出功能模型概述)
导出功能子系统(虚拟子系统包含函数调用子系统)
出口这些建模组件的代码生成器生成的代码,必须满足特定的建模组件需求(嵌入式编码)。
模型设计的更早的版本中,代码生成器可以导出功能从触发子系统。导出功能子系统的要求也适用于出口从触发子系统功能,以下异常:
您打算出口函数封装触发子系统在顶级虚拟子系统。
触发子系统没有满足需求和限制确定虚拟子系统包含函数调用子系统。
导出函数,使用绝对或运行时间(嵌入式编码)不适用于导出功能从触发子系统。
模型解算器必须是固定步离散解算器。
您必须配置每个根级尺寸块,触发函数调用子系统输出函数调用触发。这些尺寸块不能连接到一个异步任务规范。
模型或子系统,在根级别必须只包含以下模块:
函数调用块(S-Functions,如函数调用子系统、模型函数和函数调用模型块在根级别如果解决模型配置参数金宝app任务和样品时间选项>定期取样时间约束被设置为确保样品时间独立
)
尺寸和外港块(港口)
固定块(包括块决心常数,如添加)
正的块样品时间
合并和数据存储内存块
虚拟连接块(如,函数调用分裂,Mux,多路分配器,总线的创造者,总线选择器,信号规范,和虚拟子系统包含这些块)
Signal-viewer块,如范围块(仅导出功能子系统)
当一个常数块出现在模型的顶层或子系统,必须设置模型配置参数优化>默认参数的行为的模型或模型内联
。
块内部模型或子系统必须支持代码生成。金宝app
块使用绝对或运行时间必须在一个周期函数调用子系统与离散样本时间上指定相应的函数调用根级尺寸块。看到导出函数,使用绝对或运行时间(嵌入式编码)。
数据导出系统的跨边界的信号不能被一个虚拟总线和不能被实现为一个Goto-From连接。数据信号穿过出口边界必须标量,mux或nonvirtual总线。
此外,对于导出功能模型,不能生成代码率模型,包括模型导出功能的多个实例。例如,您不能生成代码测试工具为调度可重用模型,使用导出功能模型在模拟。
导出功能子系统,以下额外的需求申请:
一个触发信号,跨越边界的导出功能子系统必须标量。不作为的输入和输出数据信号触发不必标量。
当一个常数信号驱动器的输出端口导出功能子系统、信号必须指定一个存储类。
如果你想导出功能建模组件代码块使用绝对或运行时间,那些块必须在函数调用子系统:
您配置定期执行
您配置root尺寸块离散采样时间
配置一个周期执行的函数调用子系统:
在函数调用子系统,右键单击触发块,选择块的参数从上下文菜单中。
设置参数样品时间类型来周期
。
集样品时间相同的粒度(直接或通过继承)指定的函数调用启动程序。
点击好吧或应用。
有关更多信息,请参见绝对和运行时间计算。
子系统块参数不控制包含生成的代码文件的名称。文件名开头的名字出口子系统。
子系统块参数不控制顶层函数生成的代码的名字。每个函数的名字反映了信号,触发函数的名称或(一位不愿透露姓名的信号)反映了信号产生的块。
您可以导出c++类代码的函数调用系统接口包装将只有当它的功能规范默认的步骤方法。看到交互式配置c++接口(嵌入式编码)。导出的函数是兼容单线程执行。为了避免潜在的数据竞争条件共享信号,调用类的所有成员相同的执行线程。
代码生成器支持银或公益诉讼在加速器模式金宝app只有在函数调用引发剂在加速器noninlined模式。noninlined启动器的例子包括Stateflow®图表。
2级功能启动程序块,如Stateflow图表或内置的函数调用生成器,必须推动硅块。
您可以导出一个异步函数调用系统(采样时间),但是该软件不支持异步系统的硅或公益诉讼的块。金宝app
薄层色谱的使用功能LibIsFirstInit
已经删除了导出功能子系统。
为一个导出函数生成代码,遍历表中列出的任务。
任务 | 行动 | 更多的信息 |
---|---|---|
1 | 回顾你的评估外部代码特点和集成需求。 | 选择一个外部代码集成工作流(嵌入式编码) |
2 | 确认你导出的模型或子系统,满足出口需求函数。 | 需求(嵌入式编码) |
3 | 地址数据接口需求通过修改模型或子系统。 | 外部C / c++代码之间交换数据和仿真软件模型生成的代码金宝app(嵌入式编码) |
4 | 如果有必要,配置函数原型。 | 为仿真软件配置入口点函数接口函数和函数调用者金宝app(嵌入式编码)固定步率模型,配置C代码生成模型入口点函数(嵌入式编码)或交互式配置c++接口(嵌入式编码) |
5 | 如果有必要,更新模型将外部生成特定于应用程序的代码在系统功能。 | 把外部C / c++代码生成的代码(嵌入式编码) |
6 | 验证功能的行为和执行如预期在模拟创建和使用一个测试模型。日程安排的测试模型在仿真执行的函数。 | 配置模型,生成代码,模拟(嵌入式编码)如果你有金宝app仿真软件测试™软件,测试编写(金宝app仿真软件测试) |
7 | 为代码生成配置模型或子系统。 | 生成代码使用嵌入式编码器®(嵌入式编码),生成代码相匹配的外部代码(嵌入式编码),模型配置(嵌入式编码) |
8 | 生成代码和代码生成报告。 | 代码生成(嵌入式编码) |
9 | 检查生成的代码接口和静态代码度量。 | 分析生成的代码接口(嵌入式编码)和静态代码度量(嵌入式编码) |
10 | 构建一个可执行程序,包括导出的函数代码。 | 构建集成的代码在仿真软件环境金宝app(嵌入式编码) |
11 | 确认可执行程序的行为,按预期执行。 |
多种方法可用于生成函数导出到一个外部代码开发环境。下表比较的方法。选择对齐的方法最好的集成需求。如何创建导出功能模型的更多信息,参见导出功能模型概述。更多信息在生成代码的函数调用子系统,明白了生成组件的源代码导出到外部代码库(嵌入式编码)。
条件或要求 | 使用 | 更多的信息 |
---|---|---|
|
函数调用子系统 |
|
|
金宝app仿真软件功能块 | |
代码响应一个初始化事件 | 初始化功能块 |
|
响应一个重置事件代码 | 重置功能块 |
|
代码包括入口点函数超出代码生成器生成默认情况下( , , ) |
功能 | S-Functions和代码生成 |
单模执行框架作为测试工具和出口部分的模型生成的代码 | 导出功能子系统 |
|
这个例子展示了如何为个人生成函数代码仿真软件的功能模块和函数调用子系统模型中没有生成调度代码。金宝app
为导出生成函数代码:
创建一个模型,其中包含导出的功能。
创建一个测试工具在仿真模型,计划的执行功能。
模拟模型,该模型包含了函数通过使用测试工具模型。
生成的代码模型包含的功能。
创建模型,其中包含函数用于出口
出口模型函数必须满足建筑模型根级别的约束。在根水平,有效块:
轮廓尺寸
外港
函数调用子系统
金宝app仿真软件的功能
转到
从
合并
代码生成器生成函数代码函数调用子系统、模型函数,初始化功能,重置功能块。金宝app函数调用子系统块,块的输入端口连接到根尺寸块断言函数调用信号。子系统是基于所接收到的信号函数调用执行。仿真金宝app软件功能块执行针对相应的执行函数调用块或Stateflow图表。一个初始化函数块上执行模型初始化事件和重置功能块执行一个用户定义的重置事件。
出口函数模型rtwdemo_functions
包含两个函数调用子系统(f1_alg
和f2_alg
)和一个仿真软件金宝app功能块(f3
)出口函数。模型还包含一个初始化函数块(初始化函数
)和复位功能块(重置功能
)。计算初始条件块与国家其他地区的模型中,国家作家块内使用初始化功能和重置功能块。
open_system (“rtwdemo_functions”)
创建模型,其中包含函数调用者
使用一个函数调用者块调用仿真软件功能块。金宝app函数调用程序块可以在相同的模型或在一个不同的模型仿真软件功能块。金宝app
可以调用多个函数调用块仿真软件功能块。金宝app您可以将函数调用块在一个函数调用子系统。在代码生成,代码生成器出口一个函数的函数调用子系统。
该模型rtwdemo_caller
出口一个函数调用子系统,其中包含一个函数调用者。
open_system (“rtwdemo_caller”)
创建测试利用模型模拟
当您导出功能,生成的代码不包括调度器。创建一个测试工具处理期间调度仿真模型。不使用测试工具模型生成代码部署。
模型rtwdemo_export_functions
是一个测试工具。模型:
时间表的仿真软件功能块中的函金宝app数调用块rtwdemo_caller
。
提供其他函数调用信号模型在这个例子中调度模型的内容,包括模型的初始化和重置事件。
open_system (“rtwdemo_export_functions”)
模拟测试模型
验证该模型包含的功能你想出口执行您期望通过模拟测试模型。例如,模拟rtwdemo_export_functions
。
sim卡(“rtwdemo_export_functions”)
生成函数代码
打开嵌入式编码器应用程序,然后生成代码的功能你想出口。例如,生成的代码rtwdemo_functions
。
slbuild (“rtwdemo_functions”)
# # #开始构建过程:rtwdemo_functions # # #成功完成代码生成:rtwdemo_functions模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = rtwdemo_functions代码生成的代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米16.638秒
检查生成的代码
检查生成的代码。
ert_main.c
是一个主程序(执行框架)模型。这个代码显示了如何调用导出的函数。还展示了如何初始化的代码和执行生成的代码。
rtwdemo_functions.c
调用初始化函数,包括初始化函数
和导出函数模型组件f1_alg
,f2_alg
,f3
。
rtwdemo_functions.h
声明模型数据结构和一个公共接口导出的入口点函数和数据结构。
f3.h
是一个共享文件,声明动态仿真模块的调用接口函数金宝appf3
。
rtwtypes.h
定义数据类型、结构和宏生成的代码需要。
编写接口代码
打开和检查接口的代码报告。编写接口代码执行框架,使用报告中的信息。
通过添加指令包括生成的头文件# include rtwdemo_functions.h
,# include f3.h
,# include rtwtypes.h
。
写输入数据生成的代码模型尺寸块。
调用生成的入口点函数。
读取数据模型生成代码的输出港。
输入端口:
rtU.U1
类型的real_T
维1
rtU.U2
类型的real_T
维1
入口点函数:
初始化入口点函数,空白rtwdemo_functions_initialize(空白)
。在启动时,调用这个函数一次。
重置入口点函数,空白rtwdemo_functions_reset(空白)
。在需要的时候调用这个函数。
导出的函数,无效的f1(空白)
。在需要的时候调用这个函数。
导出的函数,空白f2(空白)
。在需要的时候调用这个函数。
金宝app仿真软件的功能,空白f3 (real_T rtu_u real_T
*
rty_y)
。在需要的时候调用这个函数。
输出端口:
rtY.Accumulator1
类型的int8_T
与维度[2]
rtY.Accumulator2
类型的int8_T
与维度[2]
rtY.TicToc10
类型的int8_T
维1
更多关于
生成组件的源代码导出到外部代码库(嵌入式编码)
生成独立的可执行程序部署到目标硬件(嵌入式编码)
定制代码组织和格式(嵌入式编码)
配置C代码生成模型入口点函数(嵌入式编码)
接近示例模型
bdclose (“rtwdemo_export_functions”)bdclose (“rtwdemo_functions”)bdclose (“rtwdemo_caller”)
这个例子展示了如何为一个导出功能模型,生成函数代码包含一个函数调用子系统。代码生成器生成函数和类的代码不包括调度代码。
为导出生成函数代码:
创建一个模型,其中包含导出的功能。
创建一个测试工具在仿真模型,计划的执行功能。
模拟模型,该模型包含了函数通过使用测试工具模型。
生成的代码模型包含的功能。
创建模型,其中包含函数和c++类接口用于出口
模型与一个c++函数导出模型类接口必须满足建筑模型根级别的约束。c++类生成,街区,是有效的在根级别:
轮廓尺寸
外港
函数调用子系统
转到
从
合并
注意:导出函数调用子系统与c++类接口不支持仿真软件的功能模块。金宝app金宝app
代码生成器生成函数调用子系统功能代码块。函数调用子系统块,块的输入端口连接到根尺寸块断言函数调用信号。子系统是基于所接收到的信号函数调用执行。
模型rtwdemo_cppclass_functions
包含函数调用子系统f1
,f2
,f3
导出功能。
open_system (“rtwdemo_cppclass_functions”)
创建测试利用模型模拟
当您导出功能,生成的代码不包括调度器。创建一个测试工具处理期间调度仿真模型。不使用测试工具模型生成代码部署。
模型rtwdemo_cppclass_export_functions
是一个测试工具。模型提供了函数调用信号到其他模型在这个例子中调度模型的内容。
open_system (“rtwdemo_cppclass_export_functions”)
模拟测试模型
验证该模型包含的功能你想出口执行您期望通过模拟测试模型。例如,模拟rtwdemo_cppclass_export_functions
。
sim卡(“rtwdemo_cppclass_export_functions”)
和报告生成功能代码
生成的代码和代码生成报告的功能你想出口。例如,生成的代码rtwdemo_cppclass_functions
。
slbuild (“rtwdemo_cppclass_functions”)
# # #开始构建过程:rtwdemo_cppclass_functions # # #成功完成构建过程:rtwdemo_cppclass_functions模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = rtwdemo_cppclass_functions代码生成和编译代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米25.769秒
检查生成的代码
从代码生成报告,检查生成的代码。
ert_main.cpp
是一个主程序(执行框架)模型。这个代码显示了如何调用导出的函数。还展示了如何初始化的代码和执行生成的代码。
rtwdemo_cppclass_functions.cpp
调用初始化函数,包括初始化函数
和导出函数模型子系统组件f1
,f2
,f3
。
rtwdemo_cppclass_functions.h
声明模型数据结构和一个公共接口导出的入口点函数和数据结构。
rtwtypes.h
定义数据类型、结构和宏生成的代码需要。
编写接口代码
打开和检查接口的代码报告。编写接口代码执行框架,使用报告中的信息。
通过添加指令包括生成的头文件# include rtwdemo_cppclass_functions.h
和# include rtwtypes.h
。
写输入数据生成的代码模型尺寸块。
调用生成的入口点函数。
读取数据模型生成代码的输出港。
输入端口:
rtU.U1
类型的real_T
维1
rtU.U2
类型的real_T
维1
rtU.U3
类型的real_T
维1
入口点函数:
初始化入口点函数,无效的初始化(空白)
。在启动时,调用这个函数一次。
导出的函数,空白t_1tic_A(空白)
。在需要的时候调用这个函数。
导出的函数,空白t_1tic_B(空白)
。在需要的时候调用这个函数。
导出的函数,空白t_1tic_C(空白)
。在需要的时候调用这个函数。
输出端口:
rtY.TicToc1
类型的int8_T
与维度[2]
rtY.TicToc2
类型的int8_T
与维度[2]
rtY.TicToc10
类型的int8_T
维1
更多关于
生成组件的源代码导出到外部代码库(嵌入式编码)
生成独立的可执行程序部署到目标硬件(嵌入式编码)
定制代码组织和格式(嵌入式编码)
接近示例模型
bdclose (“rtwdemo_cppclass_export_functions”)bdclose (“rtwdemo_cppclass_functions”)
为一个导出功能子系统生成代码:
确认你的子系统生成代码满足出口需求(嵌入式编码)。
在配置参数对话框中:
设置参数系统目标文件ERT-based系统目标文件,如ert.tlc
。
如果你想要一个硅块生成的代码,用于验证目的,集模型配置参数创建块来银
。
点击好吧或应用。
右键单击并选择子系统的块C / c++代码>导出功能从上下文菜单中。
操作创建和构建一个新的模型,
包含的内容,并创建一个原始子系统子系统
.slxScratchModel
包含一个块模型。这段引用新创建的
模型。子系统
.slx
代码生成器生成的代码和在工作目录的地方。
如果你设置创建块来银
在步骤2 b,仿真软件打金宝app开一个新窗口,其中包含一个功能块生成的代码。这个街区有相同的大小,形状,和连接器与原始子系统。
现在代码生成和可选块创建完成。您可以测试并使用生成的代码和可选块为你ERT代码和功能块。可选的工作流任务,看到指定一个自定义的初始化函数名和指定一个自定义的描述。
您可以指定一个自定义的名称初始化函数的导出函数作为参数slbuild
命令。命令以以下形式:
blockHandle= slbuild ('子系统”、“模式”、“ExportFunctionCalls”, . .“ExportFunctionInitializeFunctionName”、“fcnname”)
指定了函数名。例如,如果您指定的名字fcnname
“myinitfcn”
,构建过程发出代码类似:
/ *模型初始化函数* /空白myinitfcn (void) {…}
您可以输入自定义描述一个导出函数通过使用块尺寸块的属性对话框。
右键单击尺寸块驱动子系统的控制端口的出口代码。
选择属性。
在一般选项卡,描述字段中,输入您的描述性文本。
在函数导出,您输入的文本是排放到生成的代码的头尺寸块。例如,如果您打开示例程序rtwdemo_exporting_functions
并输入一个描述块属性对话框的端口t_1tic_A
,代码生成器生成的代码类似:
/ * *输出和更新功能:导出t_1tic_A * *我的自定义导出函数的描述* /空白t_1tic_A (void) {…}
优化代码生成一个导出功能子系统,指定一个单独的存储类为每个输入信号和输出信号,跨越边界的子系统。
你出口的每个函数调用子系统:
右键单击该子系统。
从上下文菜单中,选择块参数(子系统)。
选择代码生成选项卡。
集函数包装来汽车
。
点击好吧或应用。