主要内容

带状态流图的空气燃料比控制系统

为带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');

使用EmbeddedCoder®配置和构建模型

要为模型配置和构建生产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的相关定点示例,请参阅