主要内容

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

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

遗留代码工具允许您:

  • 提供遗留功能规范,

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

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

提供遗留功能规范

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

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

  • void OpenLogfile(void ** fid)

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

  • void closelogfile(空白** fid)

要打开模型和文件,请单击开放式。在文件中找到了遗留源代码your_types.h.故障, 和FAULT.C.

%sldemo_sfun_fault.def = letacacy_code('初始化');def.sfunctionname =.'sldemo_sfun_fault';def.initializeconditionsfcnspec =.'initFaultCounter(UINT32 Work2 [1])';def.startfcnspec ='OpenLogfile(Void ** Work1)';def.outputfcnspec =.'IncandlogfaultCounter(Void * Work1,UINT32 Work2 [1],Double U1)';def.termatefcnspec ='Closelogfile(Void ** Work1)';def.headerfiles = {'fafter.h'};def.sourcefiles = {'fafter.c'};def.incpaths = {'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_sfun_fault.c.

lefacy_code('generate_for_sim',def);
###开始编译SLDEMO_SFUN_FAULT MEX(' -  I / TMP / BDOC21A_1606923_222911 / TP7750AC1E / EX33158503 / SLDEMO_LCT_SRC','-I / TMP / BDOC21A_1606923_222911 / TP7750AC1E / EX33158503','-C','-OUTDIR','/ TMP /bdoc21a_1606923_222911 / tp5e2bc537_9739_4973_b1d8_612d5c7a7d8f','/tmp/bdoc21a_1606923_222911/tp77503/sldemo_lct_src/fault.c')与'gcc'建立。MEX成功完成。MEX( 'sldemo_sfun_fault.c', '-I / TMP / Bdoc21a_1606923_222911 / tp7750ac1e / ex33158503 / sldemo_lct_src', '-I / TMP / Bdoc21a_1606923_222911 / tp7750ac1e / ex33158503', '/tmp/Bdoc21a_1606923_222911/tp5e2bc537_9739_4973_b1d8_612d5c7a7d8f/fault.o')建筑物用'gcc'。MEX成功完成。###完成编译sldemo_sfun_fault ###退出

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

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

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

lefacy_code('rtwmakecfg_generate',def);

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

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

%Legacy_code('slblock_generate',def);

整合遗留代码

模型SLDEMO_LCT_START_TERM显示与遗留代码的集成。子系统TestFixpt用作呼叫传统C功能的线束,并且该范围将功能与内置Simulink®产品块的输出进行比较;万博1manbetx结果应该是相同的。

Open_System('sldemo_lct_start_term')Open_System('sldemo_lct_start_term / testfault')sim('sldemo_lct_start_term');

也可以看看