内联S-Functions的优点
生成的代码的目标通常包括密实度和速度。另一方面,S-functions run-time-loadable扩展模块添加块级功能仿真软件金宝app®。因此,功能界面进行优化配置和使用的灵活性街区和能力在模拟环境中,允许运行时改变块的操作通过参数。这些变化通常以算法的形式选择和数值常量块算法。
虽然切换算法是一个可取的特性在系统的设计阶段,生成代码时,这种类型的灵活性通常是下降的最优计算速度和代码大小。目标语言编译器允许的生成代码紧凑和快速通过选择性地生成只需要一个实例的代码块的参数集。
避免内联
你可能会决定不内联C墨西哥人S-functions有:
很少或根本没有数值参数。
一个算法已经固定在能力。例如,它没有可选模式或替代算法。
金宝app对只有一个数据类型的支持。
一个重要或大型代码大小
mdlOutputs ()
函数。多个实例的功能块模型。
当你遇到这种情况,内联块的努力可能不会提高执行速度,可以提高生成的代码的大小。权衡在身体的代码块的大小为每个实例生成的大小与孩子SimStruct为每个实例创建noninlined s函数生成的代码。
或者,您可以使用一个混合内联方法称为C墨西哥人包装的功能,在块目标文件简单地生成一个调用自定义代码函数s函数本身也称。这种方法可能是最优的解决方案代码生成的一大块现有代码。看到编写包装功能和TLC文件过程和包装功能的一个例子。
内联的过程
代码块改进战略中心确定一块操作的一部分是活跃的和生成的代码中使用哪些部分可以预先确定或排除在外。
在实践中,这意味着TLC代码块目标文件将选择一种算法,算法中包含的一个子集s函数本身,然后有选择地硬编码数值参数在运行时不能改变。这减少了代码在代码中内存大小和结果往往比它更快的s函数对应模式选择时是一个函数处理的重要组成部分。此外,内联S-functions函数调用开销了,代码都是直接在体内生成的代码,除非有一个显式的调用库函数生成的代码。
每一块的算法选择和参数是输出的代码生成过程的初始阶段功能参数设置或注册mdlRTW ()
函数(如果存在),结果在模型的条目.rtw
在代码生成文件的块。写一个文件在目标语言块然后被称为阅读的条目
文件和计算生成的代码块的实例。这个TLC代码块中包含目标文件。模型
.rtw
内联S-functions的一个特殊情况是I / O模块和驱动程序的情况下,如A / D转换器或通信端口。模拟I / O驱动程序通常是编码的功能作为一个纯粹的来源,直通或纯水槽。然而,在生成的代码,一个实际的接口必须使I / O设备,通常通过直接与常见的编码_in ()
,没找到()
函数,内联汇编代码,或一组特定的I / O库调用的设备和目标环境。
定位TLC文件搜索算法
目标语言编译器使用以下搜索以找到TLC文件:
当前文件夹。
指定的位置
% addincludepath
指令。编译器对多个% addincludepath
指令的自底向上。指定的位置
-我
选项。编译器对多个-我
选择从右到左。
为内联函数TLC文件,构建过程支持以下位置:金宝app
文件夹的功能可执行(墨西哥人或MATLAB®)文件的位置。
s函数文件夹的子文件夹
。/ tlc_c
(C或c++语言目标)。当前文件夹启动构建过程时。
请注意
注意:将内联函数TLC文件不支持其他地方,即使位置在TLC包括路径中。金宝app
遇到的第一个目标文件名称所需的实现指定的语言是用于处理功能
文件条目。模型
.rtw
请注意
编译器会不搜索MATLAB路径,不会找到一个可用的文件只在这条道路。编译器只搜索上面描述的位置。
可用性为内联和Noninlining
S-functions可以用MATLAB语言编写,Fortran, C和c++。TLC S-functions可以内联显示这个表。
内联TLC支持s函数类金宝app型
函数类型 | Noninlining支金宝app持 | 内联支持金宝app |
---|---|---|
MATLAB语言 |
没有 |
是的 |
Fortran墨西哥人 |
没有 |
是的 |
C |
是的 |
是的 |
c++ |
是的 |
是的 |