用遗留函数指定或继承样本时间

这个例子说明了如何使用旧代码的工具与规定的采样时间集成传统的C函数,继承和参数。

遗留代码工具,您可以:

  • 提供传统的功能规格,

  • 生成被模拟期间用来调用遗留代码C-MEX S-功能,和

  • 编译并建立模拟生成的S-功能。

提供了旧版功能规格

设置有遗留代码工具的功能采取结构的特定数据结构或数组作为参数。该数据结构是通过调用使用“初始化”作为第一输入的函数legacy_code()初始化。初始化结构之后,你要它的属性分配给对应的遗留代码值集成。有关属性的详细帮助,请致电legacy_code( '帮助')。的传统功能被称为这个例子中的原型是:

FLT gainScalar(在const的FLT,常量FLT增益)

其中FLT是一个typedef浮动。遗留源代码的文件中找到your_types.hgain.hgainScalar.c

def = [];%sldemo_sfun_st_inheritedDEF = legacy_code('初始化');def.SFunctionName ='sldemo_sfun_st_inherited';def.OutputFcnSpec ='单Y1 = gainScalar(单U1,单P1)';def.HeaderFiles = {'gain.h'};def.SourceFiles = {'gainScalar.c'};def.IncPaths = {'sldemo_lct_src'};def.SrcPaths = {'sldemo_lct_src'};def = [def;DEF];%sldemo_sfun_st_fixedDEF = legacy_code('初始化');def.SFunctionName ='sldemo_sfun_st_fixed';def.OutputFcnSpec ='单Y1 = gainScalar(单U1,单P1)';def.HeaderFiles = {'gain.h'};def.SourceFiles = {'gainScalar.c'};def.IncPaths = {'sldemo_lct_src'};def.SrcPaths = {'sldemo_lct_src'};def.SampleTime = [2 1];def = [def;DEF];%sldemo_sfun_st_parameterizedDEF = legacy_code('初始化');def.SFunctionName ='sldemo_sfun_st_parameterized';def.OutputFcnSpec ='单Y1 = gainScalar(单U1,单P1)';def.HeaderFiles = {'gain.h'};def.SourceFiles = {'gainScalar.c'};def.IncPaths = {'sldemo_lct_src'};def.SrcPaths = {'sldemo_lct_src'};def.SampleTime =“参数”;def = [def;DEF];

生成和编译的S-功能用于模拟在

功能legacy_code()被再次与第一输入设置为“generate_for_sim”按顺序自动调用来生成,并根据由输入参数“DEFS”提供的描述编译C-MEX S函数。该S-功能用于调用传统功能仿真。用于S-函数的源代码的文件中发现sldemo_sfun_st_inherited.csldemo_sfun_st_fixed.csldemo_sfun_st_parameterized.c

legacy_code('generate_for_sim',DEFS);
###开始编译sldemo_sfun_st_inherited MEX( ' -  I / MathWorks公司/ devel的/蝙蝠/ Bdoc20a /编译/ MATLAB /工具箱/ SIMULI万博1manbetxNK / simdemos / simfeatures / sldemo_lct_src', '-I / tmp目录/ Bdoc20a_1326390_11008 / tpcf175186', '-c','-outdir', '/tmp/Bdoc20a_1326390_11008/tpae3d7757_2d6d_4cd0_926e_515bd594cd93', '/mathworks/devel/bat/Bdoc20a/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src/gainScalar.c') Building with 'gcc'. MEX completed successfully. mex('sldemo_sfun_st_inherited.c', '-I/mathworks/devel/bat/Bdoc20a/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src', '-I/tmp/Bdoc20a_1326390_11008/tpcf175186', '/tmp/Bdoc20a_1326390_11008/tpae3d7757_2d6d_4cd0_926e_515bd594cd93/gainScalar.o') Building with 'gcc'. MEX completed successfully. ### Finish Compiling sldemo_sfun_st_inherited ### Exit ### Start Compiling sldemo_sfun_st_fixed mex('-I/mathworks/devel/bat/Bdoc20a/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src', '-I/tmp/Bdoc20a_1326390_11008/tpcf175186', '-c', '-outdir', '/tmp/Bdoc20a_1326390_11008/tpa90a3497_e202_4c3d_a0d0_fdc61cb79c62', '/mathworks/devel/bat/Bdoc20a/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src/gainScalar.c') Building with 'gcc'. MEX completed successfully. mex('sldemo_sfun_st_fixed.c', '-I/mathworks/devel/bat/Bdoc20a/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src', '-I/tmp/Bdoc20a_1326390_11008/tpcf175186', '/tmp/Bdoc20a_1326390_11008/tpa90a3497_e202_4c3d_a0d0_fdc61cb79c62/gainScalar.o') Building with 'gcc'. MEX completed successfully. ### Finish Compiling sldemo_sfun_st_fixed ### Exit ### Start Compiling sldemo_sfun_st_parameterized mex('-I/mathworks/devel/bat/Bdoc20a/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src', '-I/tmp/Bdoc20a_1326390_11008/tpcf175186', '-c', '-outdir', '/tmp/Bdoc20a_1326390_11008/tpa8258446_afb6_435c_a605_3b0cbe604ba7', '/mathworks/devel/bat/Bdoc20a/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src/gainScalar.c') Building with 'gcc'. MEX completed successfully. mex('sldemo_sfun_st_parameterized.c', '-I/mathworks/devel/bat/Bdoc20a/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src', '-I/tmp/Bdoc20a_1326390_11008/tpcf175186', '/tmp/Bdoc20a_1326390_11008/tpa8258446_afb6_435c_a605_3b0cbe604ba7/gainScalar.o') Building with 'gcc'. MEX completed successfully. ### Finish Compiling sldemo_sfun_st_parameterized ### Exit

生成的代码生成的rtwmakecfg.m文件

在创建TLC块文件之后,功能legacy_code()可以再次与第一输入设置为“rtwmakecfg_generate”,以便产生通过编码器的Simulink一个rtwmakecfg.m文件来支持代码生成™调用。万博1manbetx万博1manbetx生成rtwmakecfg.m文件是否为S-功能所需的源文件和头文件不在同一目录中S-功能,并且要在代码生成过程中产生的Makefile中添加这些依赖关系。

注:完成只有当你要模拟加速模式模型这一步。

legacy_code('rtwmakecfg_generate',DEF);

为调用生成的S函数生成蒙面S-功能块

的C-MEX S函数源被编译后,函数legacy_code()可以再次与第一输入设置为“slblock_generate”,以便生成被配置为调用这些S-功能掩蔽S-功能块调用。的块放置于一个新的模型和可以被复制到一个现有的模型。

%legacy_code( 'slblock_generate',DEFS);

Demoing与遗留代码生成的集成

该模型sldemo_lct_sampletime显示了与遗留代码整合。该子系统sample_time用作用于呼叫到遗留C函数的线束,与服务于存储先前输出值单元的延迟。

open_system('sldemo_lct_sampletime')open_system('sldemo_lct_sampletime / sample_time')SIM('sldemo_lct_sampletime');