为带Simulink®和eventFlow®设计的空燃比控制系统生成代码。万博1manbetx
图1,2和3示出了SLDEMO_FUELSYS模型的相关部分,闭环系统包含植物和控制器。该工厂在设计周期早期验证控制器。在此示例中,您为相关的控制器子系统“fuel_rate_control”生成代码。图1显示了顶级仿真模型。
使用命令RTWDEMO_FUELSYS
打开模型sldemo_fuelsys
。然后,编译模型以查看信号数据类型。
RTWDEMO_FUELSYS SLDEMO_FUELSYS([],[],[],'编译');sldemo_fuelsys([],[],[],'学期');
图1:工厂和控制器的顶级模型
空燃比控制系统由Simulink®和StateFlow®组成。万博1manbetx控制系统是您生成代码的模型的一部分。
Open_System('sldemo_fuelsys / fuel_rate_control');
图2:空燃比控制器子系统
Control Logic是extenfflow®图表,指定不同的操作模式。
Open_System('sldemo_fuelsys / fuel_rate_control / control_logic');
图3:空气燃料速率控制器逻辑
关闭这些窗户。
close_system('sldemo_fuelsys / fuel_rate_control / airflow_calc');close_system('sldemo_fuelsys / fuel_rate_control / fuel_calc');close_system('sldemo_fuelsys / fuel_rate_control / control_logic');hdemo.rt = sfroot; hdemo.m = hdemo.rt.find('-ISA'那'万博1manbetxsimulink.blockdiagram');hdemo.c = hdemo.m.find('-ISA'那'stateflow.chart'那'-和'那'姓名'那'control_logic');hdemo.c.visible = false;close_system('sldemo_fuelsys / fuel_rate_control');
要为模型配置和构建生产ANSI®C/ C ++代码,请设置模型配置参数系统目标文件到ert.tlc.
(嵌入式实时(ert))。你可以设置系统目标文件以编程方式参数。
RTWCONFIGUREDEMO('sldemo_fuelsys'那'ert');
生成并检查代码。您可以通过使用以交互式地导航到相关的代码段以前的和下一个纽扣。从图表上下文菜单(右键单击StateFlow®块),选择C / C ++代码>导航到C / C ++代码。以编程方式,使用RTWTRACE.
公用事业。
SLBUILD('sldemo_fuelsys / fuel_rate_control');RTWTRACE('sldemo_fuelsys / fuel_rate_control / control_logic')
###开始构建过程:fuel_rate_control ###成功完成构建过程:fuel_rate_control构建摘要顶部模型目标构建:模型动作重建原因================================================================================================== ucl_rate_control代码生成和编译的代码生成信息文件不存在。1个型号中的1个(0型号已达到迄今为止)构建持续时间:0H 0M 32.326S
在生成的代码中查看空燃比控制逻辑。
RTWDEMODBTYPE('fuel_rate_control_ert_rtw / fuel_rate_control.c'那......'/ *函数图表:'那'案例in_warmup:',1,0);
/ *函数用于图表:'/ control_logic'* / static void fueling_mode(const32_t * sfevent){switch(rtdwork.bitsfortid0.is_fueling_mode){case in_fuel_disabled:RTDWork.fuel_Mode =禁用;切换(RTDWork.bitsfortid0.is_fuel_disabled){case in_ operspeed:/ * inport:' / sensors'* / if((rtdwork.bitsfortid0.is_speed == 2)&&(RTU.Sensors.speed <603.0f)){if(rtdwork.bitsfortid0.is_fail!= 1){RTDWork.bitsfortid0.is_fuel_disabled = in_no_active_child;RTDWork.bitsfortid0.is_fueling_mode = in_running;/ *在这种状态下积极控制燃料。* / switch(rtdwork.bitsfortid0.was_running){case in_low_emissions:rtdwork.bitsfortid0.is_running = in_low_emissions;RTDWork.bitsfortid0.was_running = in_low_emissions;RTDWork.Fuel_Mode = Low;切换(RTDWork.bitsfortid0.was_low_emissions){case in_normal:RTDWork.bitsfortid0.is_low_emissions = in_normal;RTDWork.bitsfortid0.was_low_emissions = in_normal; /* All sensors are in correct operating modes, so effective closed-loop mixture control can be used. */ break;
关闭模型和代码生成报告。
清除HDEMO.;Rtwdemoclean;close_system('sldemo_fuelsys',0);
对于使用sldemo_fuelsys的相关定点示例,请参阅
定点设计-固定点燃料速率控制系统(定点设计师)
定点生产C / C ++代码生成-空燃比控制系统具有定点数据