文件

启动并终止遗留功能中的操作

此示例显示了如何使用遗留代码工具集成已启动和终止操作的传统C函数。

传统代码工具允许您:

  • 提供遗留功能规范,

  • 生成在仿真期间使用的C-MEX S函数,以调用遗留代码,以及

  • 编译并构建生成的S函数进行仿真。

提供遗留功能规范

具有遗留代码工具提供的函数将特定的数据结构或结构数组作为参数。通过使用“初始化”第一个输入调用函数legacy_code()来初始化数据结构。初始化结构后,必须将其属性分配给与已集成的遗留代码对应的值。有关属性的详细帮助,请致电Legacy_code('help')。在此示例中调用遗留功能的原型是:

  • void initfaultcounter(无符号int *计数器)

  • 作废openLogFile(作废**fid)

  • void IncandlogfaultCounter(void * fid,unsigned int *计数器,双倍时间)

  • 作废关闭日志文件(作废**fid)

在文件中找到了遗留源代码你的类型故障FAULT.C.

%sldemo_sfun_fault.def=遗留_代码(“初始化”);def.sfunctionname =.'sldemo_sfun_fault';def.initializeconditionsfcnspec =.'initFaultCounter(UINT32 Work2 [1])';def.startfcnspec =.'OpenLogfile(Void ** Work1)';def.OutputFcnSpec='incAndLogFaultCounter(无效*work1,uint32 work2[1],双u1)';def.TerminateFcnSpec='Closelogfile(Void ** Work1)';def.headerfiles = {'fafter.h'};def.sourcefiles = {“错,c”}; def.incpath={'sldemo_lct_src'};def.SrcPaths={'sldemo_lct_src'};def.Options.useTlcWithAccel=false;

生成和编译S函数以在模拟过程中使用

使用第一个输入设置为“generate_for_sim”来调用函数legacy_code(),以便根据输入参数“def”提供的描述自动生成和编译C-MEX S函数。此S函数用于调用仿真中的遗留功能。在文件中找到了S函数的源代码sldemo\u sfun\u故障.c

lefacy_code('generate_for_sim',def);
###开始编译sldemo_sfun_fault mex(' -  i / mathworks / devel / bat / bdoc19b / build / matlab / tool金宝appbox / simutink / simdemos / simfeatures / sldemo_lct_src','-i / tmp / bdoc19b_1305395_49494 / tpb929f43e','-c'那'-outdir', '/tmp/Bdoc19b_1305395_49494/tp9a8ef62d_5fe9_42f5_b683_3b41616bbb5e', '/mathworks/devel/bat/Bdoc19b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src/fault.c') Building with 'gcc'. MEX completed successfully. mex('sldemo_sfun_fault.c', '-I/mathworks/devel/bat/Bdoc19b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src', '-I/tmp/Bdoc19b_1305395_49494/tpb929f43e', '/tmp/Bdoc19b_1305395_49494/tp9a8ef62d_5fe9_42f5_b683_3b41616bbb5e/fault.o') Building with 'gcc'. MEX completed successfully. ### Finish Compiling sldemo_sfun_fault ### Exit

生成RTWMAKECFG.M文件以进行代码生成

在创建TLC块文件之后,可以将第一个输入设置为“RTWMakecfg_generate”的函数legacy_code()再次调用,以便生成RTWMakecfg.m文件以通过Simulink®Coder™支持代码生成。金宝app金宝app生成RTWMakecfg.m文件,如果S函数的所需源和标头文件不在同一目录中,则要在代码生成期间生成的Makefile中添加这些依赖项。

注意:仅当您将在加速模式下模拟模型时才完成此步骤。

lefacy_code('rtwmakecfg_generate',def);

生成屏蔽的S函数块,用于调用生成的S函数

编译C-MEX S函数源代码后,可以再次调用函数legacy_code(),将第一个输入设置为“slblock_generate”,以生成一个屏蔽的S函数块,该S函数块配置为调用该S函数。该块放置在新模型中,并可以复制到现有模型中。

%遗留_代码('slblock_generate',def);

演示生成的与遗留代码的集成

该模型sldemo_lct_start_term.显示与旧代码的集成。子系统TestFixpt用作调用旧C函数的工具,作用域将函数的输出与内置Simulink®产品块的输出进行比较;结果应相同。金宝app

开放式系统(“sldemo\u lct\u开始\u期限”)Open_System('sldemo_lct_start_term / testfault')sim(“sldemo\u lct\u开始\u期限”);