Repository: leoking99-BIT/MPC-for-Self-driving-Vehicles Branch: master Commit: 0723275c65ef Files: 450 Total size: 5.1 MB Directory structure: gitextract_m28kg3fs/ ├── Chapter-2/ │ ├── ReadMe │ ├── chap2_DynamicModel_Validation/ │ │ ├── DynamicsEstimation_UKF.mdl │ │ ├── Main_DynamicsEstimation_DualUKF.m │ │ ├── Main_RollDynamicsEstimation_UKF_Modified.m │ │ ├── Plot_EstimationResultData.m │ │ └── ReadMe │ ├── chap2_KinematicModel_Validation/ │ │ ├── Chapter2_KinematicModel_Validation.par │ │ ├── KinematicModel_Validation.mdl │ │ ├── Main_KinematicModel_Validation.m │ │ ├── ReadMe │ │ ├── SimRes_Plot.m │ │ ├── func_SteerRatio_Estimation_RLS.m │ │ ├── func_SteerRatio_Estimation_RLS_array.m │ │ ├── func_UpdateState_EulerM_2_7.m │ │ └── func_UpdateState_dsolve_2_7.m │ ├── chap2_TireModel_Validation/ │ │ ├── CalLocalCorneringStiffness.m │ │ ├── Calpha.csv │ │ ├── Generate1DLookuptable_BT.m │ │ ├── LEO_TireModel_Validation.sim │ │ ├── LookupTable_test.m │ │ ├── MFlookuptable_mu1_m1540.csv │ │ ├── Main_Sampletime_Abstract.m │ │ ├── ModelValidation_BrushTire_Cfa.m │ │ ├── ModelValidation_MFTire.m │ │ ├── Results Discussion.docx │ │ ├── TireModelValidation.mdl │ │ ├── chapter2_2_2.m │ │ ├── chapter2_3_2.m │ │ ├── func_BrushTyreModel_puresideslip.m │ │ ├── func_MFTyreModel_puresideslip.m │ │ └── lookuptable_mu0.55_m1540.csv │ ├── chapter2_2_2.m │ └── chapter2_3_2.m ├── Chapter-3/ │ ├── ReadMe │ ├── chap3_MPC_AdaptiveCruiseCtrl_VLV/ │ │ ├── Chapter3_MPC_ACC_ First Car (Ext. Sen.).par │ │ ├── Chapter3_MPC_ACC_ Second Car (Ext. Sen.).par │ │ ├── LEO_MPCACC_VLV1.mdl │ │ ├── LEO_MPC_ACC_ExtSen_Car1.sim │ │ ├── LEO_MPC_ACC_ExtSen_Car2.sim │ │ ├── MPC_HostVehicleController_CVXGEN_CTHW.m │ │ ├── Main_ACC_HostVehicleCtrl1.m │ │ ├── ReadMe │ │ ├── csolve_CTHW.mexw64 │ │ ├── qpOASES.mexw64 │ │ └── qpOASES_options.m │ ├── chap3_MPC_SpeedCtrl/ │ │ ├── Chapter3_SpeedTrackingControl_MPC.par │ │ ├── LEO_MPC_SpeedCtrl.mdl │ │ ├── Main_MPC_SpeedCtrl.m │ │ ├── ReadMe │ │ ├── SimRes_Plot_SineWaveSpeed.m │ │ ├── SimRes_Plot_StepSpeed.m │ │ ├── qpOASES.mexw64 │ │ └── qpOASES_options.m │ ├── chap3_MPC_SpeedCtrl_du/ │ │ ├── Chapter3_SpeedTrackingControl_MPC_du.par │ │ ├── LEO_MPC_SpeedCtrl_du.mdl │ │ ├── MPC_Speed_Controller_CVXGEN.m │ │ ├── Main_MPC_SpeedCtrl_du.m │ │ ├── ReadMe │ │ ├── SimRes_Plot_SineWaveSpeed.m │ │ ├── SimRes_Plot_StepSpeed.m │ │ ├── csolve_CC.mexw64 │ │ ├── qpOASES.mexw64 │ │ └── qpOASES_options.m │ ├── chapter3_4_2.m │ └── chatp3_MPC_Toolbox_DoubleInt/ │ ├── ReadMe │ ├── mpc_doubleint_for_speedctrl.mdl │ ├── mpc_doubleint_for_speedctrl_sfun.mexw64 │ ├── mpc_doubleint_sfun.mexw64 │ ├── mpc_miso_sfun.mexw64 │ ├── mpc_misonoise_sfun.mexw64 │ ├── mpc_nonlinear_setoutdist_sfun.mexw64 │ ├── mpc_nonlinear_sfun.mexw64 │ ├── mpc_nonlinear_ss_sfun.mexw64 │ ├── mpcdoubleint_for_speed_control.m │ └── slprj/ │ └── _sfprj/ │ ├── mpc_doubleint/ │ │ ├── _self/ │ │ │ └── sfun/ │ │ │ ├── info/ │ │ │ │ └── binfo.mat │ │ │ └── src/ │ │ │ ├── mpc_doubleint_sfun.bat │ │ │ ├── mpc_doubleint_sfun.c │ │ │ ├── mpc_doubleint_sfun.exp │ │ │ ├── mpc_doubleint_sfun.h │ │ │ ├── mpc_doubleint_sfun.lib │ │ │ ├── mpc_doubleint_sfun.mak │ │ │ ├── mpc_doubleint_sfun.mexw64.manifest │ │ │ ├── mpc_doubleint_sfun.mol │ │ │ ├── mpc_doubleint_sfun.obj │ │ │ ├── mpc_doubleint_sfun_debug_macros.h │ │ │ ├── mpc_doubleint_sfun_registry.c │ │ │ ├── mpc_doubleint_sfun_registry.obj │ │ │ ├── multiword_types.h │ │ │ ├── rtwtypes.h │ │ │ └── rtwtypeschksum.mat │ │ └── mpclib/ │ │ └── sfun/ │ │ ├── info/ │ │ │ ├── binfo.mat │ │ │ ├── chart3_T7oeNP5jU5Ide0wJqxRvND.mat │ │ │ └── chart4_3RFiiaQWqqM0bZLXITcoK.mat │ │ └── src/ │ │ ├── c3_mpclib.c │ │ ├── c3_mpclib.h │ │ ├── c3_mpclib.obj │ │ ├── c4_mpclib.c │ │ ├── c4_mpclib.h │ │ ├── c4_mpclib.obj │ │ ├── mpclib_sfun.bat │ │ ├── mpclib_sfun.c │ │ ├── mpclib_sfun.h │ │ ├── mpclib_sfun.lib │ │ ├── mpclib_sfun.mak │ │ ├── mpclib_sfun.mol │ │ ├── mpclib_sfun.obj │ │ ├── mpclib_sfun_debug_macros.h │ │ ├── multiword_types.h │ │ ├── rtwtypes.h │ │ └── rtwtypeschksum.mat │ ├── mpc_doubleint_for_speedctrl/ │ │ ├── _self/ │ │ │ └── sfun/ │ │ │ ├── info/ │ │ │ │ └── binfo.mat │ │ │ └── src/ │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.bat │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.c │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.exp │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.h │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.lib │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.mak │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.mexw64.manifest │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.mol │ │ │ ├── mpc_doubleint_for_speedctrl_sfun.obj │ │ │ ├── mpc_doubleint_for_speedctrl_sfun_debug_macros.h │ │ │ ├── mpc_doubleint_for_speedctrl_sfun_registry.c │ │ │ ├── mpc_doubleint_for_speedctrl_sfun_registry.obj │ │ │ ├── multiword_types.h │ │ │ ├── rtwtypes.h │ │ │ └── rtwtypeschksum.mat │ │ └── mpclib/ │ │ └── sfun/ │ │ ├── info/ │ │ │ ├── binfo.mat │ │ │ ├── chart3_T7oeNP5jU5Ide0wJqxRvND.mat │ │ │ └── chart4_3RFiiaQWqqM0bZLXITcoK.mat │ │ └── src/ │ │ ├── c3_mpclib.c │ │ ├── c3_mpclib.h │ │ ├── c3_mpclib.obj │ │ ├── c4_mpclib.c │ │ ├── c4_mpclib.h │ │ ├── c4_mpclib.obj │ │ ├── mpclib_sfun.bat │ │ ├── mpclib_sfun.c │ │ ├── mpclib_sfun.h │ │ ├── mpclib_sfun.lib │ │ ├── mpclib_sfun.mak │ │ ├── mpclib_sfun.mol │ │ ├── mpclib_sfun.obj │ │ ├── mpclib_sfun_debug_macros.h │ │ ├── multiword_types.h │ │ ├── rtwtypes.h │ │ └── rtwtypeschksum.mat │ ├── mpc_miso/ │ │ ├── _self/ │ │ │ └── sfun/ │ │ │ ├── info/ │ │ │ │ └── binfo.mat │ │ │ └── src/ │ │ │ ├── mpc_miso_sfun.bat │ │ │ ├── mpc_miso_sfun.c │ │ │ ├── mpc_miso_sfun.exp │ │ │ ├── mpc_miso_sfun.h │ │ │ ├── mpc_miso_sfun.lib │ │ │ ├── mpc_miso_sfun.mak │ │ │ ├── mpc_miso_sfun.mexw64.manifest │ │ │ ├── mpc_miso_sfun.mol │ │ │ ├── mpc_miso_sfun.obj │ │ │ ├── mpc_miso_sfun_debug_macros.h │ │ │ ├── mpc_miso_sfun_registry.c │ │ │ ├── mpc_miso_sfun_registry.obj │ │ │ ├── multiword_types.h │ │ │ ├── rtwtypes.h │ │ │ └── rtwtypeschksum.mat │ │ └── mpclib/ │ │ └── sfun/ │ │ ├── info/ │ │ │ ├── binfo.mat │ │ │ ├── chart3_o0M1hEmlLN4wqMqd3iZhdE.mat │ │ │ └── chart4_GD8JDlchWKMURaoIGLPbgC.mat │ │ └── src/ │ │ ├── c3_mpclib.c │ │ ├── c3_mpclib.h │ │ ├── c3_mpclib.obj │ │ ├── c4_mpclib.c │ │ ├── c4_mpclib.h │ │ ├── c4_mpclib.obj │ │ ├── mpclib_sfun.bat │ │ ├── mpclib_sfun.c │ │ ├── mpclib_sfun.h │ │ ├── mpclib_sfun.lib │ │ ├── mpclib_sfun.mak │ │ ├── mpclib_sfun.mol │ │ ├── mpclib_sfun.obj │ │ ├── mpclib_sfun_debug_macros.h │ │ ├── multiword_types.h │ │ ├── rtwtypes.h │ │ └── rtwtypeschksum.mat │ ├── mpc_misonoise/ │ │ ├── _self/ │ │ │ └── sfun/ │ │ │ ├── info/ │ │ │ │ └── binfo.mat │ │ │ └── src/ │ │ │ ├── mpc_misonoise_sfun.bat │ │ │ ├── mpc_misonoise_sfun.c │ │ │ ├── mpc_misonoise_sfun.exp │ │ │ ├── mpc_misonoise_sfun.h │ │ │ ├── mpc_misonoise_sfun.lib │ │ │ ├── mpc_misonoise_sfun.mak │ │ │ ├── mpc_misonoise_sfun.mexw64.manifest │ │ │ ├── mpc_misonoise_sfun.mol │ │ │ ├── mpc_misonoise_sfun.obj │ │ │ ├── mpc_misonoise_sfun_debug_macros.h │ │ │ ├── mpc_misonoise_sfun_registry.c │ │ │ ├── mpc_misonoise_sfun_registry.obj │ │ │ ├── multiword_types.h │ │ │ ├── rtwtypes.h │ │ │ └── rtwtypeschksum.mat │ │ └── mpclib/ │ │ └── sfun/ │ │ ├── info/ │ │ │ ├── binfo.mat │ │ │ ├── chart3_BE4GM0nbnhTJ929HHu03ZF.mat │ │ │ └── chart4_1DLx4GMDHt9YB7Zv8CsCqC.mat │ │ └── src/ │ │ ├── c3_mpclib.c │ │ ├── c3_mpclib.h │ │ ├── c3_mpclib.obj │ │ ├── c4_mpclib.c │ │ ├── c4_mpclib.h │ │ ├── c4_mpclib.obj │ │ ├── mpclib_sfun.bat │ │ ├── mpclib_sfun.c │ │ ├── mpclib_sfun.h │ │ ├── mpclib_sfun.lib │ │ ├── mpclib_sfun.mak │ │ ├── mpclib_sfun.mol │ │ ├── mpclib_sfun.obj │ │ ├── mpclib_sfun_debug_macros.h │ │ ├── multiword_types.h │ │ ├── rtwtypes.h │ │ └── rtwtypeschksum.mat │ ├── mpc_nonlinear/ │ │ ├── _self/ │ │ │ └── sfun/ │ │ │ ├── info/ │ │ │ │ └── binfo.mat │ │ │ └── src/ │ │ │ ├── mpc_nonlinear_sfun.bat │ │ │ ├── mpc_nonlinear_sfun.c │ │ │ ├── mpc_nonlinear_sfun.exp │ │ │ ├── mpc_nonlinear_sfun.h │ │ │ ├── mpc_nonlinear_sfun.lib │ │ │ ├── mpc_nonlinear_sfun.mak │ │ │ ├── mpc_nonlinear_sfun.mexw64.manifest │ │ │ ├── mpc_nonlinear_sfun.mol │ │ │ ├── mpc_nonlinear_sfun.obj │ │ │ ├── mpc_nonlinear_sfun_debug_macros.h │ │ │ ├── mpc_nonlinear_sfun_registry.c │ │ │ ├── mpc_nonlinear_sfun_registry.obj │ │ │ ├── multiword_types.h │ │ │ ├── rtwtypes.h │ │ │ └── rtwtypeschksum.mat │ │ └── mpclib/ │ │ └── sfun/ │ │ ├── info/ │ │ │ ├── binfo.mat │ │ │ ├── chart3_D4OsMEOPkEhTIURBqithJD.mat │ │ │ └── chart4_xf8liFQGgsdDdPF7ystbhB.mat │ │ └── src/ │ │ ├── c3_mpclib.c │ │ ├── c3_mpclib.h │ │ ├── c3_mpclib.obj │ │ ├── c4_mpclib.c │ │ ├── c4_mpclib.h │ │ ├── c4_mpclib.obj │ │ ├── mpclib_sfun.bat │ │ ├── mpclib_sfun.c │ │ ├── mpclib_sfun.h │ │ ├── mpclib_sfun.lib │ │ ├── mpclib_sfun.mak │ │ ├── mpclib_sfun.mol │ │ ├── mpclib_sfun.obj │ │ ├── mpclib_sfun_debug_macros.h │ │ ├── multiword_types.h │ │ ├── rtwtypes.h │ │ └── rtwtypeschksum.mat │ ├── mpc_nonlinear_setoutdist/ │ │ ├── _self/ │ │ │ └── sfun/ │ │ │ ├── info/ │ │ │ │ └── binfo.mat │ │ │ └── src/ │ │ │ ├── mpc_nonlinear_setoutdist_sfun.bat │ │ │ ├── mpc_nonlinear_setoutdist_sfun.c │ │ │ ├── mpc_nonlinear_setoutdist_sfun.exp │ │ │ ├── mpc_nonlinear_setoutdist_sfun.h │ │ │ ├── mpc_nonlinear_setoutdist_sfun.lib │ │ │ ├── mpc_nonlinear_setoutdist_sfun.mak │ │ │ ├── mpc_nonlinear_setoutdist_sfun.mexw64.manifest │ │ │ ├── mpc_nonlinear_setoutdist_sfun.mol │ │ │ ├── mpc_nonlinear_setoutdist_sfun.obj │ │ │ ├── mpc_nonlinear_setoutdist_sfun_debug_macros.h │ │ │ ├── mpc_nonlinear_setoutdist_sfun_registry.c │ │ │ ├── mpc_nonlinear_setoutdist_sfun_registry.obj │ │ │ ├── multiword_types.h │ │ │ ├── rtwtypes.h │ │ │ └── rtwtypeschksum.mat │ │ └── mpclib/ │ │ └── sfun/ │ │ ├── info/ │ │ │ ├── binfo.mat │ │ │ ├── chart3_UZcJkDgeSZoOkVp9M5i6hE.mat │ │ │ └── chart4_xf8liFQGgsdDdPF7ystbhB.mat │ │ └── src/ │ │ ├── c3_mpclib.c │ │ ├── c3_mpclib.h │ │ ├── c3_mpclib.obj │ │ ├── c4_mpclib.c │ │ ├── c4_mpclib.h │ │ ├── c4_mpclib.obj │ │ ├── mpclib_sfun.bat │ │ ├── mpclib_sfun.c │ │ ├── mpclib_sfun.h │ │ ├── mpclib_sfun.lib │ │ ├── mpclib_sfun.mak │ │ ├── mpclib_sfun.mol │ │ ├── mpclib_sfun.obj │ │ ├── mpclib_sfun_debug_macros.h │ │ ├── multiword_types.h │ │ ├── rtwtypes.h │ │ └── rtwtypeschksum.mat │ └── mpc_nonlinear_ss/ │ ├── _self/ │ │ └── sfun/ │ │ ├── info/ │ │ │ └── binfo.mat │ │ └── src/ │ │ ├── mpc_nonlinear_ss_sfun.bat │ │ ├── mpc_nonlinear_ss_sfun.c │ │ ├── mpc_nonlinear_ss_sfun.exp │ │ ├── mpc_nonlinear_ss_sfun.h │ │ ├── mpc_nonlinear_ss_sfun.lib │ │ ├── mpc_nonlinear_ss_sfun.mak │ │ ├── mpc_nonlinear_ss_sfun.mexw64.manifest │ │ ├── mpc_nonlinear_ss_sfun.mol │ │ ├── mpc_nonlinear_ss_sfun.obj │ │ ├── mpc_nonlinear_ss_sfun_debug_macros.h │ │ ├── mpc_nonlinear_ss_sfun_registry.c │ │ ├── mpc_nonlinear_ss_sfun_registry.obj │ │ ├── multiword_types.h │ │ ├── rtwtypes.h │ │ └── rtwtypeschksum.mat │ └── mpclib/ │ └── sfun/ │ ├── info/ │ │ ├── binfo.mat │ │ ├── chart3_tyXL61drY84iZIuMyIrmK.mat │ │ └── chart4_xf8liFQGgsdDdPF7ystbhB.mat │ └── src/ │ ├── c3_mpclib.c │ ├── c3_mpclib.h │ ├── c3_mpclib.obj │ ├── c4_mpclib.c │ ├── c4_mpclib.h │ ├── c4_mpclib.obj │ ├── mpclib_sfun.bat │ ├── mpclib_sfun.c │ ├── mpclib_sfun.h │ ├── mpclib_sfun.lib │ ├── mpclib_sfun.mak │ ├── mpclib_sfun.mol │ ├── mpclib_sfun.obj │ ├── mpclib_sfun_debug_macros.h │ ├── multiword_types.h │ ├── rtwtypes.h │ └── rtwtypeschksum.mat ├── Chapter-4/ │ ├── ReadMe │ ├── chap4_MPC_ErrorModel_PathTracking/ │ │ ├── Chapter4_MPC_ErrorModel_PathTracking.par │ │ ├── MPC_ErrorModel_PathTracking.mdl │ │ ├── Main_MPC_ec_CVXGEN.m │ │ ├── Main_MPC_ec_qpOASES_quadprog.m │ │ ├── ReadMe │ │ ├── ResultData_Plot.m │ │ ├── SaveSimResData2Mat.m │ │ ├── WayPoints_Alt3fromFHWA_Samples.mat │ │ ├── csolve_Np40.mexw64 │ │ ├── func_ConstraintsBounds.m │ │ ├── func_CostWeightingRegulation.m │ │ ├── func_FindBezierControlPointsND.m │ │ ├── func_RefTraj_LocalPlanning.m │ │ ├── func_Update_ecMPC_SSM.m │ │ ├── func_Update_ecMPC_SSM_Augmented.m │ │ ├── func_bezierInterp.m │ │ ├── osqp.m │ │ ├── osqp_mex.mexw64 │ │ ├── qpOASES.mexw64 │ │ └── qpOASES_options.m │ ├── chap4_MPC_GivenPathTracking/ │ │ ├── Func_Alpha_Pos.m │ │ ├── Func_Theta_Pos.m │ │ ├── MPC_MPC_GivenPathTracking.mdl │ │ ├── Main_MPC_GivenPathTracking.m │ │ ├── ReadMe │ │ └── chapter4_4_2.m │ ├── chap4_MPC_SSM_PathTracking/ │ │ ├── Chapter4_MPC_SSM_PathTracking.par │ │ ├── MPC_SSM_CurvePathTracking.mdl │ │ ├── Main_CurvePathTracking_CVXGEN_CurveLane.m │ │ ├── ReadMe │ │ ├── WayPoints_Alt3fromFHWA_Overall.mat │ │ ├── csolve_StraightLane.mexw64 │ │ ├── func_CalPathCurve.m │ │ ├── func_FindBezierControlPointsND.m │ │ ├── func_GetProjectPoint.m │ │ ├── func_RefTraj_LocalPlanning.m │ │ └── func_bezierInterp.m │ └── chapter4_4_2.m ├── Chapter-5/ │ ├── ReadMe │ ├── chap5_CorneringStiffness_Estimation/ │ │ ├── C_cf.fig │ │ ├── Chapter5_CorneringStiffness_Estimation.par │ │ ├── CorneringStiffness_Estimation.mdl │ │ ├── Main_CorneringStiffness_Comparison_RLS_Alt_new.m │ │ ├── Main_CorneringStiffness_Estimation.m │ │ ├── ReadMe │ │ ├── func_RLSEstimation_Cf.m │ │ ├── func_RLSEstimation_Cr.m │ │ ├── func_RLSFilter_Calpha_f.m │ │ ├── func_RLSFilter_Calpha_f_useFyf.m │ │ ├── func_RLSFilter_Calpha_r.m │ │ └── func_RLSFilter_Calpha_r_useFyr.m │ ├── chap5_DynamicModel_AFS/ │ │ ├── Generate_Double_Line_Shift_refpath.m │ │ ├── Main_MPC_Dynamics_AFS.m │ │ ├── ReadMe │ │ ├── Waypoints_Double_Line_Shift.mat │ │ ├── chapt5_MPC_Dynamics_AFS.mdl │ │ ├── chapter5_1_1.m │ │ ├── chapter5_2_2.m │ │ ├── func_Model_linearization_Jacobian.m │ │ ├── func_RLSEstimation_Ccf.m │ │ ├── func_RLSEstimation_Ccr.m │ │ ├── func_RLSEstimation_Clf.m │ │ └── func_RLSEstimation_Clr.m │ ├── chap5_TireStiffness_Estimation/ │ │ ├── Main_TireStiffness_Estimation.m │ │ ├── SaveSimData2Mat.m │ │ ├── TireStiffness_Estimation.mdl │ │ ├── func_RLSEstimation_Ccf.m │ │ ├── func_RLSEstimation_Ccr.m │ │ ├── func_RLSEstimation_Clf.m │ │ └── func_RLSEstimation_Clr.m │ ├── chapter5_1_1.m │ ├── chapter5_2_2.m │ └── chapter5_5_2.m ├── Chapter-6/ │ ├── Chapter6_3.m │ ├── Chapter6_4_3.mdl │ ├── ReadMe │ ├── chap6_LocalPlan_TrackingCtrl/ │ │ ├── FinalMPCControllerDynamicCarSim_1218.m │ │ ├── FinalMPCPlanerDynamicCarSim_1218.m │ │ ├── ReadMe │ │ ├── chapt6_MPC_DynamicModel_PlanCtrl.mdl │ │ └── chapt6_MPC_DynamicModel_PlanCtrl.mdl.r2010b │ └── chapter6_2_4.m ├── Chapter-7/ │ ├── ReadMe │ ├── chapter7_4_2.m │ └── chapter_7_MPC_highspeed_handlig_stability/ │ ├── LEO_RigidbodyMPC3TurnTracking.sim │ ├── Main_StabilityCtrl.m │ ├── RigidbodyMPCCurvePathTracking.mdl │ ├── TestSymbolicModel.m │ ├── WayPoints_Alt3fromFHWA_Samples.mat │ ├── csolve.mexw64 │ ├── func_CostWeightingRegulation_QuadSlacks.m │ ├── func_FindBezierControlPointsND.m │ ├── func_LocalControlInput_TwoTimeScales.m │ ├── func_RLSFilter_Calpha_f.m │ ├── func_RLSFilter_Calpha_r.m │ ├── func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated.m │ ├── func_RigidbodyDynamicalModel_FOH_Extended.m │ ├── func_RigidbodyModel_FOH_Matrix_ROLL.m │ ├── func_SafedrivingEnvelope_SL.m │ └── func_bezierInterp.m ├── Chapter-8/ │ ├── ReadMe │ ├── chapter8_3_3.m │ └── chapter8_rollover_prevention_terrain/ │ ├── Main_CurvePathTracking_CVXGEN_Terrain.m │ ├── Main_CurvePathTracking_CVXGEN_Terrain_FeedbackCorrections.m │ ├── Plot_Yzmp_LTR_Comparison.m │ ├── RigidbodyMPCCurvePathTracking.mdl │ ├── SaveSimData2Mat.m │ ├── SaveWayPointCollect.m │ ├── TestSymbolicModel.m │ ├── WayPoints_Alt3fromFHWA_Samples.mat │ ├── csolve.mexw64 │ ├── func_CostWeightingRegulation_QuadSlacks.m │ ├── func_FindBezierControlPointsND.m │ ├── func_LocalControlInput_TwoTimeScales.m │ ├── func_RLSFilter_Calpha_f.m │ ├── func_RLSFilter_Calpha_r.m │ ├── func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated.m │ ├── func_RigidbodyDynamicalModel_FOH_Extended.m │ ├── func_RigidbodyModel_FOH_Matrix_ROLL.m │ ├── func_SafedrivingEnvelope_SL.m │ └── func_bezierInterp.m ├── Publications_list └── README.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: Chapter-2/ReadMe ================================================ This folder holds simulation codes for Chapter 2 * chapter_2_2_2.m:tire model validation * chapter_2_3_2.m:车辆动力学模型推导 * chap2_KinematicModel_Validation: 运动学模型仿真验证 * chap2_DynamicModel_Validation: 动力学模型仿真验证 ================================================ FILE: Chapter-2/chap2_DynamicModel_Validation/DynamicsEstimation_UKF.mdl ================================================ Model { Name "DynamicsEstimation_UKF" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.324" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "DynamicsStateEstimation" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [2700.0, 290.0, 931.0, 650.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [881.0, 473.0] ZoomFactor [1.25] Offset [63.507142857142128, 304.6] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Wed Sep 04 11:05:15 2019" RTWModifiedTimeStamp 489495913 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "DynamicsEstimation_UKF" Array { Type "Cell" Dimension 1 Cell "DynamicsEstimation_UKF" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "30" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "DynamicsEstimation_UKF" Location [2700, 290, 3631, 940] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" SIDHighWatermark "141" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [0, 1] Position [330, 239, 430, 301] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "LEO_Dynamics_Estimation.sim" } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [195, 366, 500, 434] ZOrder 12 BlockMirror on FunctionName "Main_DynamicsEstimation_DualUKF" EnableBusSupport off } Block { BlockType ToWorkspace Name "To Workspace1" SID "115" Ports [1] Position [195, 285, 255, 315] ZOrder 19 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 116 SrcBlock "CarSim S-Function" SrcPort 1 Points [104, 0; 0, 130] DstBlock "S-Function" DstPort 1 } Line { ZOrder 130 SrcBlock "S-Function" SrcPort 1 Points [-56, 0; 0, -100] DstBlock "To Workspace1" DstPort 1 } } } ================================================ FILE: Chapter-2/chap2_DynamicModel_Validation/Main_DynamicsEstimation_DualUKF.m ================================================ function [sys,x0,str,ts] =Main_DynamicsEstimation_DualUKF(t,x,u,flag) %***************************************************************% % This dynamics state estimation is based on "Roll Prediction-based Optimal % Control for Safe Path Following" by Sanghyun Hong and J. Karl Hedrick. % This method could provide a good result on the estimation of ROll angle. % But, not so good with Vy and roll rate. % VyĹЧãΪѧģͲȷ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 5; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 12; %S sizes.NumInputs = 39; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms global Initial_State; global Px; global Numx; Initial_State=[0; 0 ; 0 ; 0; 0]; % initial state Numx = numel(Initial_State); Px = eye(Numx); % initial state covraiance global Wm; global Wc; global r_sigmas; [Wm, Wc, r_sigmas] = UTSetup(Numx); global Initial_w; global Pw; global Numw; Initial_w=[1610; 1.1]; % initial w Numw = numel(Initial_w); Pw = eye(Numw); % initial w covraiance global Wm_w; global Wc_w; global r_sigmas_w; [Wm_w, Wc_w, r_sigmas_w] = UTSetup_w(Numw); global PreviousYawrate; global PreviousVx; PreviousYawrate = 0; PreviousVx = 0; % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== global Initial_State; global Px; global Numx; global Wm; global Wc; global r_sigmas; global Initial_w; global Pw; global Numw; global Wm_w; global Wc_w; global r_sigmas_w; global PreviousYawrate; global PreviousVx; Ts = 0.05; Iz = 2059.2; m = 1600; ms = 1430; g = 9.81; hs = 0.65; % Lf = 1.12; %a % Lr = 1.48; %b L = 2.6; Lw = 1.565; Ix = 700.7; rho = 1.206; Cd = 0.15; Af = 3.1; % 1.6; % f_roll = 0.02; Kroll = 145330; %42075; Croll = 4500.5; %5737.5; %% Updatd measured State of Vehicle [VehStateMeasured, ParaHAT] = func_StateEstimation(u); % unpack data from Carsim Vx = VehStateMeasured.x_dot; Vy = VehStateMeasured.y_dot; Yawrate = VehStateMeasured.phi_dot; % rad/s Ax = VehStateMeasured.Ax; % x_dot Ay = VehStateMeasured.Ay; % y_dot fwa = VehStateMeasured.fwa; Beta = VehStateMeasured.beta;%rad if 0 == Vx Vx = 10; end AyG_SM = ParaHAT.AyG_SM; Ay_Bf_SM = ParaHAT.Ay_Bf_SM; alphaf = ParaHAT.alphaf; alphar = ParaHAT.alphar; Rollangle = ParaHAT.Roll; Rollrate = ParaHAT.Rollrate; Faero = 0.5*rho*Cd*Af*Vx^2; % Fyf = ParaHAT.Fyf; % Fyr = ParaHAT.Fyr; Fcfl = ParaHAT.Fy_l1; Fcfr = ParaHAT.Fy_r1; Fcrl = ParaHAT.Fy_l2; Fcrr = ParaHAT.Fy_r2; Flfl = ParaHAT.Fx_L1; Flfr = ParaHAT.Fx_R1; Flrl = ParaHAT.Fx_L2; Flrr = ParaHAT.Fx_R2; Fxfl = Flfl*cos(fwa) -Fcfl*sin(fwa); Fxfr = Flfr*cos(fwa) -Fcfr*sin(fwa); Fxrl = Flrl; Fxrr = Flrr; Fyfl = Flfl*sin(fwa) + Fcfl*cos(fwa); Fyfr = Flfr*sin(fwa) + Fcfr*cos(fwa); Fyrl = Fcrl; Fyrr = Fcrr; Fx = Fxfl+Fxfr+Fxrl+Fxrr; Fy = Fyfl+Fyfr+Fyrl+Fyrr; %% Dual UKF process for estimation %=====================================================================% fstate_w = @(w)[w(1), w(2)]; %[m, lf] hmeas_w = @(w)[ Fy/(w(1)) + g*Rollangle; % + hs*Rollrate_dot; Vx; PreviousYawrate + Ts*( ( w(2)*(Fyfl+Fyfr)-(L-w(2))*(Fyrl+Fyrr) + Lw*(Fxfr+Fxrr-Fxfl-Fxrl)/2 )/Iz ); (Fx-Faero)/(w(1))]; Ny_w = 4; Ymeasurement_w = [AyG_SM; Vx; Yawrate; Ax]; Q_w = 0.1 * eye(Numw); R_w = 0.1 * eye(Ny_w); X_w=Sigmas_w(Initial_w, Pw, r_sigmas_w); %sigma points around x [x1_w,X1_w,P1_w,X2_w]=UnscentedTransform_w(fstate_w, X_w, Wm_w, Wc_w, Numw, Q_w); %unscented transformation of process [z1_w,Z1_w,P2_w,Z2_w]=UnscentedTransform_w(hmeas_w, X1_w, Wm_w, Wc_w, Ny_w, R_w); %unscented transformation of measurments % Update after the measurement of P12_w=X2_w*diag(Wc_w)*Z2_w'; %transformed cross-covariance R_w = chol(P2_w); %Cholesky factorization U_w = P12_w/R_w; %K=U/R'; Faster because of back substitution X0_w = x1_w+U_w*(R_w'\(Ymeasurement_w-z1_w)); %Back substitution to get state update Pp_w = P1_w-U_w*U_w'; %Covariance update, U*U'=P12/R/R'*P12'=K*P12. Initial_w = X0_w; Pw = Pp_w; PreviousYawrate = Yawrate; PreviousVx = Vx; Lf = X0_w(2); %a Lr = L - Lf; %b %=====================================================================% %---Vehicle Dynamics Model according to "Sanghyun Hong and J. Karl Hedrick"-------% % Let s = [Vx; Vy; Yawrate; Rollangle; Rollrate]; % x1_dot = (Fx-Faero-f_roll*m*g)/m + Vy*Yawrate; % x2_dot = Fy/m - Vx*Yawrate; % x3_dot = ( Lf*(Fyfl+Fyfr)-Lr*(Fyrl+Fyrr) + Lw*(Fxfr+Fxrr-Fxfl-Fxrl)/2 )/Iz; % x4_dot = rollrate; % x5_dot = ( ms*hs*( Fy/m+ g*Rollangle ) - Kroll*Rollangle - Croll*Rollrate)/Ix; % Discrete the previous model with Ts, then we get: fstate = @(s)[ s(1) + Ts*((Fx-Faero-f_roll*m*g)/m + s(2)*s(3));% s(2) + Ts*(Fy/m - s(1)*s(3)); % s(3) + Ts*(( Lf*(Fyfl+Fyfr) - Lr*(Fyrl+Fyrr) + Lw*(Fxfr+Fxrr-Fxfl-Fxrl)/2 )/Iz); s(4) + Ts*s(5); s(5) + Ts*(( ms*hs*( Fy/m + g*s(4)) -Kroll*s(4) - Croll*s(5) )/Ix) ]; %-------------ay_sensor, Ax, yaw rate and Vx can be measured -----------*% Ymeasurement = [AyG_SM; Vx; Yawrate; Ax]; Ny = 4; hmeas = @(s)[ Fy/m + g*s(4); % - hs*( ms*hs*( Fy/m + g*s(4) ) -Kroll*s(4) - Croll*s(5))/Ix s(1); s(3); (Fx-Faero)/m - f_roll*g ]; %-------------------------Dynamics of DualUKF----------------------------% Q = 0.1 * eye(Numx); R = 0.1 * eye(Ny); X=Sigmas(Initial_State,Px,r_sigmas); %sigma points around x [x1,X1,P1,X2]=UnscentedTransform(fstate, X, Wm, Wc, Numx, Q); %unscented transformation of process [z1,Z1,P2,Z2]=UnscentedTransform(hmeas, X1, Wm, Wc, Ny, R); %unscented transformation of measurments % Update after the measurement of P12=X2*diag(Wc)*Z2'; %transformed cross-covariance % %********************Normal solution********************% % K=P12*inv(P2); % X0=x1+K*(Ymeasurement-z1); %state update % P0=P1-K*P12'; %covariance update %********************Cholesky solution********************% R=chol(P2); %Cholesky factorization U=P12/R; %K=U/R'; Faster because of back substitution X0 = x1+U*(R'\(Ymeasurement-z1)); %Back substitution to get state update P0=P1-U*U'; %Covariance update, U*U'=P12/R/R'*P12'=K*P12. Initial_State = X0; Px = P0; sys = [X0; Vx; Vy; Yawrate; Rollangle; Rollrate; X0_w]; % end %End of mdlOutputs. %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10)*pi/180; % deg-->rad VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); HATParameter.GearStat = ModelInput(30); HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 VehStatemeasured.Station = ModelInput(34); %m % HATParameter.Z0 = ModelInput(34); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.AyG_SM = ModelInput(37)*g; %m/s^2, acceleration measured by accelerometer HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 % HATParameter.Ax_SM = ModelInput(39)*g; %m/s^2 function [Wm, Wc, r_sigmas] = UTSetup(L) alpha=1e-2; %default, tunable ki=1; %default, tunable, generally set to 3-L beta=2; %default, tunable lambda=alpha^2*(L+ki)-L; %scaling factor c=L+lambda; %scaling factor Wm=[lambda/c 0.5/c+zeros(1,2*L)]; %weights for means %Wm=[lambda/c ones(1,2*L)/(2*c)]; %weights for means Wc=Wm; %length=2*L+1 Wc(1)=Wc(1)+(1-alpha^2+beta); %weights for covariance r_sigmas=sqrt(c); function [y,Y,P,Y1] = UnscentedTransform(f,X,Wm,Wc,n,R) %Unscented Transformation %Input: % f: nonlinear map % X: sigma points % Wm: weights for mean % Wc: weights for covraiance % n: numer of outputs of f % R: additive covariance %Output: % y: transformed mean % Y: transformed smapling points % P: transformed covariance % Y1: transformed deviations L=size(X,2); y=zeros(n,1); Y=zeros(n,L); for k=1:L Y(:,k)=f(X(:,k)); y=y+Wm(k)*Y(:,k); end Y1=Y-y(:,ones(1,L)); P=Y1*diag(Wc)*Y1'+R; function X = Sigmas(x,P,c) %Sigma points around reference point %Inputs: % x: reference point % P: covariance % c: coefficient %Output: % X: Sigma points A = c*chol(P)'; Y = x(:,ones(1,numel(x))); X = [x Y+A Y-A]; function [Wm, Wc, r_sigmas] = UTSetup_w(L) alpha=1e-2; %default, tunable ki=1; %default, tunable, generally set to 3-L beta=2; %default, tunable lambda=alpha^2*(L+ki)-L; %scaling factor c=L+lambda; %scaling factor Wm=[lambda/c 0.5/c+zeros(1,2*L)]; %weights for means %Wm=[lambda/c ones(1,2*L)/(2*c)]; %weights for means Wc=Wm; %length=2*L+1 Wc(1)=Wc(1)+(1-alpha^2+beta); %weights for covariance r_sigmas=sqrt(c); function [y,Y,P,Y1] = UnscentedTransform_w(f,X,Wm,Wc,n,R) %Unscented Transformation %Input: % f: nonlinear map % X: sigma points % Wm: weights for mean % Wc: weights for covraiance % n: numer of outputs of f % R: additive covariance %Output: % y: transformed mean % Y: transformed smapling points % P: transformed covariance % Y1: transformed deviations L=size(X,2); y=zeros(n,1); Y=zeros(n,L); for k=1:L Y(:,k)=f(X(:,k)); y=y+Wm(k)*Y(:,k); end Y1=Y-y(:,ones(1,L)); P=Y1*diag(Wc)*Y1'+R; function X = Sigmas_w(x,P,c) %Sigma points around reference point %Inputs: % x: reference point % P: covariance % c: coefficient %Output: % X: Sigma points A = c*chol(P)'; Y = x(:,ones(1,numel(x))); X = [x Y+A Y-A]; ================================================ FILE: Chapter-2/chap2_DynamicModel_Validation/Main_RollDynamicsEstimation_UKF_Modified.m ================================================ function [sys,x0,str,ts] =Main_RollDynamicsEstimation_UKF_Modified(t,x,u,flag) %***************************************************************% % This dynamics state estimation is based on "Roll Prediction-based Optimal % Control for Safe Path Following" by Sanghyun Hong and J. Karl Hedrick. % VyĹЧãΪѧģͲȷ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 5; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 10; %S sizes.NumInputs = 39; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms global Initial_State; global P; global Numx; Initial_State=[0; 0 ; 0 ; 0; 0]; % initial state Numx = numel(Initial_State); P = eye(Numx); % initial state covraiance % global PreviousYawrate; % PreviousYawrate = 0; global Wm; global Wc; global r_sigmas; [Wm, Wc, r_sigmas] = UTSetup(Numx); % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== global Initial_State; global P; % global PreviousYawrate; global Wm; global Wc; global r_sigmas; global Numx; Ts = 0.05; Iz = 2059.2; m = 1600; ms = 1430; g = 9.81; hs = 0.65; Lf = 1.12; %a Lr = 1.48; %b % L = 2.6; Lw = 1.565; Ix = 700.7; rho = 1.206; Cd = 0.15; Af = 3.1; f_roll = 0.02; Kroll = 145330; %42075; Croll = 4500.5; %5737.5; %% Updatd measured State of Vehicle [VehStateMeasured, ParaHAT] = func_StateEstimation(u); % unpack data from Carsim Vx = VehStateMeasured.x_dot; Vy = VehStateMeasured.y_dot; Yawrate = VehStateMeasured.phi_dot; % rad/s Ax = VehStateMeasured.Ax; % x_dot Ay = VehStateMeasured.Ay; % y_dot fwa = VehStateMeasured.fwa; Beta = VehStateMeasured.beta;%rad if 0 == Vx Vx = 10; end AyG_SM = ParaHAT.AyG_SM; Ay_Bf_SM = ParaHAT.Ay_Bf_SM; Ax_SM = ParaHAT.Ax_SM; %m/s^2 alphaf = ParaHAT.alphaf; alphar = ParaHAT.alphar; Rollangle = ParaHAT.Roll; Rollrate = ParaHAT.Rollrate; Faero = 0.5*rho*Cd*Af*Vx^2; % Fyf = ParaHAT.Fyf; % Fyr = ParaHAT.Fyr; Fcfl = ParaHAT.Fy_l1; Fcfr = ParaHAT.Fy_r1; Fcrl = ParaHAT.Fy_l2; Fcrr = ParaHAT.Fy_r2; Flfl = ParaHAT.Fx_L1; Flfr = ParaHAT.Fx_R1; Flrl = ParaHAT.Fx_L2; Flrr = ParaHAT.Fx_R2; Fxfl = Flfl*cos(fwa) -Fcfl*sin(fwa); Fxfr = Flfr*cos(fwa) -Fcfr*sin(fwa); Fxrl = Flrl; Fxrr = Flrr; Fyfl = Flfl*sin(fwa) + Fcfl*cos(fwa); Fyfr = Flfr*sin(fwa) + Fcfr*cos(fwa); Fyrl = Fcrl; Fyrr = Fcrr; Fx = Fxfl+Fxfr+Fxrl+Fxrr; Fy = Fyfl+Fyfr+Fyrl+Fyrr; %% Dual UKF process for estimation %-----------------Vehicle Dynamics Model according to "Sanghyun Hong and J. Karl Hedrick"-------% % Let s = [Vx; Vy; Yawrate; Rollangle; Rollrate]; % x1_dot = (Fx-Faero)/m + Vy*Yawrate; % x2_dot = Fy/m - Vx*Yawrate; % x3_dot = ( Lf*(Fyfl+Fyfr)-Lr*(Fyrl+Fyrr) + Lw*(Fxfr+Fxrr-Fxfl-Fxrl)/2 )/Iz; % x4_dot = rollrate; % x5_dot = ( ms*hs*( Fy/m+ g*Rollangle ) - Kroll*Rollangle - Croll*Rollrate)/Ix; % Discrete the previous model with Ts, then we get: fstate = @(s)[ s(1) + Ts*((Fx-Faero-f_roll*m*g)/m + s(2)*s(3)) - hs*s(3)*s(5); % 2* s(2) + Ts*(Fy/m - s(1)*s(3)) + hs* (( m*hs*( Fy/m + g*s(4)) -Kroll*s(4) - Croll*s(5) )/Ix); % s(3) + Ts*(( Lf*(Fyfl+Fyfr) - Lr*(Fyrl+Fyrr) + Lw*(Fxfr+Fxrr-Fxfl-Fxrl)/2 )/Iz); s(4) + Ts*s(5); s(5) + Ts*(( m*hs*( Fy/m + g*s(4)) -Kroll*s(4) - Croll*s(5) )/Ix) ]; %------------- ay_sensor, Ax, yawrate and Vx can be measured -----------*% Ymeasurement = [AyG_SM; Vx; Yawrate; Ax_SM]; Ny = 4; hmeas = @(s)[ Fy/m + g*s(4); % - hs* (( m*hs*( Fy/m + g*s(4)) -Kroll*s(4) - Croll*s(5) )/Ix) s(1); s(3); (Fx-Faero)/m - f_roll*g]; %-------------------------Dynamics of DualUKF----------------------------% Q = 0.1 * eye(Numx); R = 0.1 * eye(Ny); X=Sigmas(Initial_State,P,r_sigmas); %sigma points around x [x1,X1,P1,X2]=UnscentedTransform(fstate, X, Wm, Wc, Numx, Q); %unscented transformation of process [z1,Z1,P2,Z2]=UnscentedTransform(hmeas, X1, Wm, Wc, Ny, R); %unscented transformation of measurments % Update after the measurement of P12=X2*diag(Wc)*Z2'; %transformed cross-covariance % %********************Normal solution********************% % K=P12*inv(P2); % X0=x1+K*(Ymeasurement-z1); %state update % P0=P1-K*P12'; %covariance update %********************Cholesky solution********************% R=chol(P2); %Cholesky factorization U=P12/R; %K=U/R'; Faster because of back substitution X0 = x1+U*(R'\(Ymeasurement-z1)); %Back substitution to get state update P0=P1-U*U'; %Covariance update, U*U'=P12/R/R'*P12'=K*P12. Initial_State = X0; P = P0; % PreviousYawrate = Yawrate; sys = [X0; Vx; Vy; Yawrate; Rollangle; Rollrate]; % end %End of mdlOutputs. %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10)*pi/180; % deg-->rad VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); HATParameter.GearStat = ModelInput(30); HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 HATParameter.Z0 = ModelInput(34); %m % VehStatemeasured.Station = ModelInput(35); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.AyG_SM = ModelInput(37)*g; %m/s^2, acceleration measured by accelerometer HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 HATParameter.Ax_SM = ModelInput(39)*g; %m/s^2 function [Wm, Wc, r_sigmas] = UTSetup(L) alpha=1e-2; %default, tunable ki=1; %default, tunable, generally set to 3-L beta=2; %default, tunable lambda=alpha^2*(L+ki)-L; %scaling factor c=L+lambda; %scaling factor Wm=[lambda/c 0.5/c+zeros(1,2*L)]; %weights for means %Wm=[lambda/c ones(1,2*L)/(2*c)]; %weights for means Wc=Wm; %length=2*L+1 Wc(1)=Wc(1)+(1-alpha^2+beta); %weights for covariance r_sigmas=sqrt(c); function [y,Y,P,Y1] = UnscentedTransform(f,X,Wm,Wc,n,R) %Unscented Transformation %Input: % f: nonlinear map % X: sigma points % Wm: weights for mean % Wc: weights for covraiance % n: numer of outputs of f % R: additive covariance %Output: % y: transformed mean % Y: transformed smapling points % P: transformed covariance % Y1: transformed deviations L=size(X,2); y=zeros(n,1); Y=zeros(n,L); for k=1:L Y(:,k)=f(X(:,k)); y=y+Wm(k)*Y(:,k); end Y1=Y-y(:,ones(1,L)); P=Y1*diag(Wc)*Y1'+R; function X = Sigmas(x,P,c) %Sigma points around reference point %Inputs: % x: reference point % P: covariance % c: coefficient %Output: % X: Sigma points A = c*chol(P)'; Y = x(:,ones(1,numel(x))); X = [x Y+A Y-A]; ================================================ FILE: Chapter-2/chap2_DynamicModel_Validation/Plot_EstimationResultData.m ================================================ close all % firstline = u.signals.values(:,1); % Num = length(firstline); Vx_hat = u.signals.values(:,1); Vy_hat = u.signals.values(:,2); Yawrate_hat = u.signals.values(:,3); Roll_hat = u.signals.values(:,4); Rollrate_hat = u.signals.values(:,5); Vx_Carsim = u.signals.values(:,6); Vy_Carsim = u.signals.values(:,7); Yawrate_Carsim = u.signals.values(:,8); Roll_Carsim = u.signals.values(:,9); Rollrate_Carsim = u.signals.values(:,10); Ts = 0.05; Num = length(Vx_hat); Rollrate_Est = zeros(Num,1); for i = 2:1:Num Rollrate_Est(i) = (Roll_hat(i)-Roll_hat(i-1))/Ts; end Vy_error = (Vy_hat - Vy_Carsim); Roll_error = (Roll_hat - Roll_Carsim); Rollrate_error = (Rollrate_Est - Rollrate_Carsim); Rollrate_error1 = (Rollrate_hat - Rollrate_Carsim); Estimation_Result.Vy_hat = Vy_hat; Estimation_Result.Vy_Carsim = Vy_Carsim; Estimation_Result.Roll_hat = Roll_hat; Estimation_Result.Roll_Carsim = Roll_Carsim; Estimation_Result.Rollrate_Est = Rollrate_Est; Estimation_Result.Rollrate_Carsim = Rollrate_Carsim; Estimation_Result.Vy_error = Vy_error; Estimation_Result.Roll_error = Roll_error; Estimation_Result.Rollrate_error = Rollrate_error; % save DynamicsEstimation_DualUKF_Modified_10.mat Estimation_Result; mean_vy = mean(Vy_error); var_vy = var(Vy_error); mean_Roll = mean(Roll_error); var_Roll = var(Roll_error); mean_Rollrate = mean(Rollrate_error); var_Rollrate = var(Rollrate_error); Sumary = [mean_vy, var_vy, mean_Roll, var_Roll, mean_Rollrate, var_Rollrate]; %% figure plot lw = 2; figure plot(1:Num, Vx_hat,'b',1:Num, Vx_Carsim,'r','Linewidth',lw); legend('Vx_{hat}','Vx_{Carsim}'); title('Comparison of Vx'); figure plot(1:Num, Yawrate_hat,'b',1:Num, Yawrate_Carsim,'r','Linewidth',lw); legend('Yawrate_{hat}','Yawrate_{Carsim}'); title('Comparison of Yawrate'); figure subplot(2,1,1) plot(1:Num, Roll_hat,'b',1:Num, Roll_Carsim,'r','Linewidth',lw); legend('Roll_{hat}','Roll_{Carsim}'); title('Comparison of Roll'); subplot(2,1,2) plot(1:Num, Roll_error,'b','Linewidth',lw); figure subplot(2,1,1) plot(1:Num, Rollrate_hat,'b',1:Num, Rollrate_Carsim,'r','Linewidth',lw); legend('Rollrate_{hat}','Rollrate_{Carsim}'); title('Comparison of Rollrate'); subplot(2,1,2) plot(1:Num, Rollrate_error1,'b',1:Num, Rollrate_error,'k','Linewidth',lw); figure subplot(2,1,1) plot(1:Num, Vy_hat,'b',1:Num, Vy_Carsim,'r','Linewidth',lw); legend('Vy_{hat}','Vy_{Carsim}'); subplot(2,1,2) plot(1:Num, Vy_error,'k','Linewidth',lw); title('Comparison of Vy'); ================================================ FILE: Chapter-2/chap2_DynamicModel_Validation/ReadMe ================================================ Dynamic model validation To be Continued ... ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/Chapter2_KinematicModel_Validation.par ================================================ PARSFILE #EXPANDED_PARSFILE 2.0 ! This is an expansion of the parsfile: "Runs\Run278.par" ! It contains the contents of that file plus the contents of any files linked ! with the "PARSFILE" or "SPECIAL_PARSFILE" keywords. ! File created: 20:39 on September 02, 2019 by CarSim Version 8.1a, October 2011 PRODUCT_NAME CarSim ENTER_PARSFILE Runs\Run278.par`08-28-2019`16:03:36 #FullDataName CarSim Run Control`Chapter2_KinematicModel_Validation`BOOK_MPC_Examples #VehicleCode Ind_Ind OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex129.par`08-28-2019`22:38:22 #FullDataName Models: Simulink`chapt2_KinematicModel_Validate Model`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap2_KinematicModel_Validation\KinematicModel_Validation.mdl #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 0 *USE_DIFF_SOLVERS 0 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap2_KinematicModel_Validation *ALTERNATE_PATH E:\Carsim\Book_examples\chap2_KinematicModel_Validation ENTER_PARSFILE IO_Channels\O_Channels\O_Ch124.par`08-28-2019`21:22:06 #FullDataName I/O Channels: Export`chapt2_KM_Validate_Exports`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_X_L2 EXP_X_R2 EXP_Y_L2 EXP_Y_R2 EXP_Yaw EXP_Steer_SW EXP_Steer_L1 EXP_Steer_R1 EXP_Vx_L2 EXP_Vx_R2 #MiscYellow0 #Number of Selected Channels: 10 #CHN_NAME: X_L2 #CHN_NAME: X_R2 #CHN_NAME: Y_L2 #CHN_NAME: Y_R2 #CHN_NAME: Yaw #CHN_NAME: Steer_SW #CHN_NAME: Steer_L1 #CHN_NAME: Steer_R1 #CHN_NAME: Vx_L2 #CHN_NAME: Vx_R2 #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } chapt2_KM_Validate_Exports #Library : I/O Channels: Export #DataSet : chapt2_KM_Validate_Exports #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch124 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-28-2019 21:22:06 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch124.par #BlueLink1 I/O Channels: Export`chapt2_KM_Validate_Exports` MPC_BOOK_Sim_Exports` , Export #MiscYellow1 simfile LEO_KinematicModel_Validation.sim #ENDMYellow LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } chapt2_KinematicModel_Validate Model #Library : Models: Simulink #DataSet : chapt2_KinematicModel_Validate Model #Category: BOOK_MPC_Models #FileID : Cmex129 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-28-2019 22:38:22 #VehCode EXIT_PARSFILE Models\Simulink\Cmex129.par #BlueLink12 Models: Simulink`chapt2_KinematicModel_Validate Model` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera107.par`08-02-2011`16:43:55 #FullDataName Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)`Vehicle Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw ENTER_PARSFILE Animator\Frames\Frame106.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw`Cameras ADD_REFERENCE_FRAME Cameras Camera Tracking X-Y-Z-Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_YAW_NAME yaw #MiscYellow0 cam_global_ambient .4 .4 .4 1 #ENDMYellow WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_yaw ANI_yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Cameras } Camera Tracking X-Y-Z-Yaw #Library : Animator: Reference Frame #DataSet : Camera Tracking X-Y-Z-Yaw #Category: Cameras #FileID : Frame106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame106.par #BlueLink0 Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw` Cameras` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 15 SET_DISTANCE 36 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 15 *SET_DISTANCE 36 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 37 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Vehicle Reference } Rear View High, Veh. Ref., (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View High, Veh. Ref., (Frt. Facing) #Category: Vehicle Reference #FileID : Camera107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera107.par #BlueLink0 Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)` Vehicle Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 1 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 0.753 0.753 0.753 SET_RUN_COLOR 0.753 0.753 0.753 FLAG_10 278 ID_RUN 278 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle166.par`08-28-2019`15:41:14 #FullDataName Vehicle: Assembly`D-Class, Sedan LEO`CS D-Class #VehCode Ind_Ind #CheckBox0 0 #RingCtrl0 1 OPT_PT 1 #RingCtrl1 1 #RingCtrl2 1 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp105.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`D-Class, Sedan - Front Comp.`CS D-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.65144 *R_SPRING_R 0.65144 *R_DAMPER_L 0.65144 *R_DAMPER_R 0.65144 *FS_OFFSET_L 0 *FS_OFFSET_R 0 *CT_FX_L 0 *CT_FX_R 0 *CS_FY_L -0.27e-6 *CS_FY_R -0.27e-6 *CS_MZ_L 0.38e-4 *CS_MZ_R 0.38e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 0 *CI_FY_R 0 *CI_MZ_L 0 *CI_MZ_R 0 *C_LONG_L 5.0e-5 *C_LONG_R 5.0e-5 *C_LAT_L 4.1e-5 *C_LAT_R 4.1e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.65144 *R_JOUNCE_R 0.65144 *R_REBOUND_L 0.65144 *R_REBOUND_R 0.65144 ENTER_PARSFILE Suspensions\Shocks\Shock101.par`08-02-2011`16:42:34 #FullDataName Suspension: Shock Absorber`Big Car Damping` #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 FD_TABLE LINEAR -1410, -5008 -720, -3436 -390, -2324 -210, -1792 -90, -1008 -20, -228 20, 228 90, 596 200, 784 390, 1100 760, 1796 1160, 2560 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Shock Absorber; Big Car Damping #Library : Suspension: Shock Absorber #DataSet : Big Car Damping #Category: #FileID : Shock101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Shock absorber EXIT_PARSFILE Suspensions\Shocks\Shock101.par #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx101.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 384 MX_AUX_COEFFICIENT 384 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 384 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 384 N-m/deg #Category: #FileID : AuxMx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx101.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb101.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+60 mm / -40 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 58, 0 59, 0 60, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -40, -10000 -39, 0 -38, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +60 mm / -40 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +60 mm / -40 mm #Category: Jounce and Rebound Stops #FileID : JncRb101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb101.par #BlueLink5 Suspension: Jounce and Rebound Stops`+60 mm / -40 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.65144 CMP_DAMP_COEFFICIENT 0.65144 FS_OFFSET 0 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT -0.27e-6 CS_MZ_COEFFICIENT 0.38e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 0 CI_MZ_COEFFICIENT 0 C_LONG_COEFFICIENT 5.0e-5 C_LAT_COEFFICIENT 4.1e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.65144 CMP_RSTOP_COEFFICIENT 0.65144 ENTER_PARSFILE Suspensions\Springs\Spring105.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`153 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 153 FS_EXT_COEFFICIENT 153 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 153 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 153 N/mm #Library : Suspension: Spring #DataSet : 153 N/mm #Category: #FileID : Spring105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring105.par #BlueLink0 Suspension: Spring`153 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+60 mm / -40 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.65144 CMP_DAMP_COEFFICIENT 0.65144 FS_OFFSET 0 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT -0.27e-6 CS_MZ_COEFFICIENT 0.38e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 0 CI_MZ_COEFFICIENT 0 C_LONG_COEFFICIENT 5.0e-5 C_LAT_COEFFICIENT 4.1e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.65144 CMP_RSTOP_COEFFICIENT 0.65144 #BlueLink3 Suspension: Spring`153 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS D-Class } D-Class, Sedan - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : D-Class, Sedan - Front Comp. #Category: CS D-Class #FileID : SuspCmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp105_note.txt Front spring rate chosen for a front ride frequency of 2.0 Hz and a front corner weight of 411 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp105_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp105.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`D-Class, Sedan - Front Comp.` CS D-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin105.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`D-Class, Sedan - Front Suspension`CS D-Class iside 1 L_TRACK 1550 Y_CL_SUSP 0 M_US 80 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0 *TOE_R 0 *CAMBER_L 0 *CAMBER_R 0 R_US_STR 0.8 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive101.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Front Strut - Front Dive Angle`Strut #RingCtrl0 SPLINE #DiagramOne0 SUSP_DIVE_TABLE SPLINE -70, 0.282157 -60, 0.243294 -50, 0.204028 -40, 0.164309 -30, 0.124089 -20, 0.083323 -10, 0.041971 0, 0 10, -0.042617 20, -0.085893 30, -0.129828 40, -0.174396 50, -0.21954 60, -0.265153 70, -0.311062 ENDTABLE #RadioCtrl0 0 SUSP_DIVE_AXLE_TABLE SPLINE -70, 0.282157 -60, 0.243294 -50, 0.204028 -40, 0.164309 -30, 0.124089 -20, 0.083323 -10, 0.041971 0, 0 10, -0.042617 20, -0.085893 30, -0.129828 40, -0.174396 50, -0.21954 60, -0.265153 70, -0.311062 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { Strut } Front Strut - Front Dive Angle #Library : Suspension: Dive Angle (Caster Change) #DataSet : Front Strut - Front Dive Angle #Category: Strut #FileID : Dive101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive101_note.txt NOTE: Sign convention of the CS 7.01b and earlier datasets was reversed and demonstrated a pro-dive suspension. This dataset represents an anti-dive suspension. EXIT_NOTEFILE Suspensions\Dive\Dive101_note.txt EXIT_PARSFILE Suspensions\Dive\Dive101.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Front Strut - Front Dive Angle` Strut` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX101.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Front Strut - Longitudinal Movement`Strut #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, -0.779336 -60, -0.596671 -50, -0.438583 -40, -0.304523 -30, -0.194019 -20, -0.106665 -10, -0.042102 0, 0 10, 0.019968 20, 0.018152 30, -0.005034 40, -0.049059 50, -0.113201 60, -0.196434 70, -0.297272 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, -0.779336 -60, -0.596671 -50, -0.438583 -40, -0.304523 -30, -0.194019 -20, -0.106665 -10, -0.042102 0, 0 10, 0.019968 20, 0.018152 30, -0.005034 40, -0.049059 50, -0.113201 60, -0.196434 70, -0.297272 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { Strut } Front Strut - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Front Strut - Longitudinal Movement #Category: Strut #FileID : SusX101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement EXIT_PARSFILE Suspensions\Longitudinal\SusX101.par #BlueLink1 Suspension: Longitudinal Position`Front Strut - Longitudinal Movement` Strut` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber101.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Front Strut - Camber`Strut #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.16282 -60, 0.958695 -50, 0.76676 -40, 0.58725 -30, 0.42045 -20, 0.266701 -10, 0.126399 0, 0 10, -0.111976 20, -0.208942 30, -0.290231 40, -0.355097 50, -0.402697 60, -0.432083 70, -0.442184 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { Strut } Front Strut - Camber #Library : Suspension: Camber Angle #DataSet : Front Strut - Camber #Category: Strut #FileID : Camber101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber EXIT_PARSFILE Suspensions\Camber\Camber101.par #BlueLink2 Suspension: Camber Angle`Front Strut - Camber` Strut` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat101.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Front Strut - Lateral Movement`Strut #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 2.81522 -60, 1.82386 -50, 1.03219 -40, 0.437944 -30, 0.039162 -20, -0.165848 -10, -0.178513 0, 0 10, 0.368777 20, 0.927155 30, 1.67473 40, 2.61133 50, 3.73709 60, 5.05237 70, 6.55783 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 2.81522 -60, 1.82386 -50, 1.03219 -40, 0.437944 -30, 0.039162 -20, -0.165848 -10, -0.178513 0, 0 10, 0.368777 20, 0.927155 30, 1.67473 40, 2.61133 50, 3.73709 60, 5.05237 70, 6.55783 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { Strut } Front Strut - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Front Strut - Lateral Movement #Category: Strut #FileID : SusLat101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement EXIT_PARSFILE Suspensions\Lateral\SusLat101.par #BlueLink3 Suspension: Lateral Position`Front Strut - Lateral Movement` Strut` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe101.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Front Strut - Toe Change`Strut #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, -0.932437 -60, -0.740516 -50, -0.56874 -40, -0.416666 -30, -0.283952 -20, -0.170354 -10, -0.075723 0, 0 10, 0.056776 20, 0.09447 30, 0.112841 40, 0.11153 50, 0.090047 60, 0.047744 70, -0.016224 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { Strut } Front Strut - Toe Change #Library : Suspension: Toe Angle #DataSet : Front Strut - Toe Change #Category: Strut #FileID : Toe101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe EXIT_PARSFILE Suspensions\Toe\Toe101.par #BlueLink4 Suspension: Toe Angle`Front Strut - Toe Change` Strut` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0 A_CAMBER 0 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front Strut - Front Dive Angle` Strut` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front Strut - Longitudinal Movement` Strut` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front Strut - Camber` Strut` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front Strut - Lateral Movement` Strut` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front Strut - Toe Change` Strut` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0 A_CAMBER 0 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS D-Class } D-Class, Sedan - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : D-Class, Sedan - Front Suspension #Category: CS D-Class #FileID : IndKin105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin105_note.txt Generic front strut type suspension geometry created with SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin105_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin105.par #BlueLink19 Suspension: Independent System Kinematics`D-Class, Sedan - Front Suspension` CS D-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire103.par`08-02-2011`16:42:33 #FullDataName Tire`215/55 R17`Touring Tires X_LENGTH 334 Z_LENGTH 334 Y_LENGTH 215 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 0 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup108.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Euro Sedan Tire`Tires *X_REF_LENGTH 291 *Y_REF_LENGTH 195 *Z_REF_LENGTH 291 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL136.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive ENTER_PARSFILE Animator\Cameras\Camera103.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Top)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Fixed ENTER_PARSFILE Animator\Frames\Frame103.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Fixed` ADD_REFERENCE_FRAME Fixed #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll LOG_ENTRY Used Dataset: Animator: Reference Frame; Fixed #Library : Animator: Reference Frame #DataSet : Fixed #Category: #FileID : Frame103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame103.par #BlueLink0 Animator: Reference Frame`Fixed` ` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Fixed SET_LOOKPOINT_X -1.2 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 180 SET_ELEVATION 90 SET_DISTANCE 35 *SET_LOOKPOINT_X -1.2 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 180 *SET_ELEVATION 90 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Top) #Library : Animator: Camera Setup #DataSet : Shape Preview (Top) #Category: Shape Preview #FileID : Camera103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera103.par #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Tire #Library : Animator: Shape File Link #DataSet : Euro. Sedan Tire #Category: Tires #FileID : AniSTL136 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL136.par #BlueLink0 Animator: Shape File Link`Euro. Sedan Tire` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL137.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\wheel.obj #ENDMYellow SET_COLOR .62 .62 .62 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 40 *IMAGE_FIT_MODE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Wheel #Library : Animator: Shape File Link #DataSet : Euro. Sedan Wheel #Category: Tires #FileID : AniSTL137 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL137.par #BlueLink1 Animator: Shape File Link`Euro. Sedan Wheel` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL138.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y 0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Stripe #Library : Animator: Shape File Link #DataSet : Euro. Sedan Stripe #Category: Tires #FileID : AniSTL138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL138.par #BlueLink2 Animator: Shape File Link`Euro. Sedan Stripe` Tires` , Shape File x_ref_length 291 y_ref_length 195 z_ref_length 291 ENTER_PARSFILE Animator\Cameras\Camera104.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Side)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview ENTER_PARSFILE Animator\Frames\Frame101.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Yaw for Shape Preview`Shape Preview ADD_REFERENCE_FRAME Shape Preview Yaw for Shape Preview #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_YAW_NAME Yaw WRT_Yaw ANI_Yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Shape Preview } Yaw for Shape Preview #Library : Animator: Reference Frame #DataSet : Yaw for Shape Preview #Category: Shape Preview #FileID : Frame101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame101.par #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 0 SET_ELEVATION 0 SET_DISTANCE 35 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 0 *SET_ELEVATION 0 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Side) #Library : Animator: Camera Setup #DataSet : Shape Preview (Side) #Category: Shape Preview #FileID : Camera104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera104.par #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Euro Sedan Tire #Library : Animator: Shape Assembly #DataSet : Euro Sedan Tire #Category: Tires #FileID : StlGroup108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup108.par #BlueLink4 Animator: Shape Assembly`Euro Sedan Tire` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 215 ENTER_PARSFILE Animator\Sound\Set\SndSet110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 650 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 650; units = kg; #ENDMYellow ENTER_PARSFILE Animator\Sound\Sample\SndSmp112.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Lateral Slip`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 0.7 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod129.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Force Effects`Tire Lateral Slip Sound Modifiers #MiscYellow0 define_output mod1_<> = abs(fy_<>) /(rated_load_<> * 9.80665) * MuY_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod1_<> SOUNDMOD_INPUT_MIN 0.3 SOUNDMOD_INPUT_LOW 0.6 SOUNDMOD_INPUT_HIGH 0.9 SOUNDMOD_INPUT_MAX 1.2 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod1_<> ANI_mod1_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Lateral Slip Sound Modifiers } Loudness: Lateral Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Force Effects #Category: Tire Lateral Slip Sound Modifiers #FileID : SndMod129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod129.par #BlueLink0 Animator: Sound Modifier`Loudness: Lateral Force Effects` Tire Lateral Slip Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod130.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod2_<> = sin(min(abs(alphL_<>), 15 / dr) * abs(vxcen<>); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod2_<> SOUNDMOD_INPUT_MIN 0.1 SOUNDMOD_INPUT_LOW 0.5 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.5 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_mod2_<> ANI_mod2_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Lateral Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod130.par #BlueLink1 Animator: Sound Modifier`Loudness: Lateral Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Lateral Slip #Library : Animator: Sound Sample #DataSet : Lateral Slip #Category: Tire Sounds #FileID : SndSmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp112.par #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp113.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wheelspin / Brake Lockup`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod131.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Force Effects`Wheelspin / Lockup Sound Modifiers #MiscYellow0 define_output mod3_<> = abs(fx_<>) / (rated_load_<> * 9.80665) * MuX_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod3_<> SOUNDMOD_INPUT_MIN 0.2 SOUNDMOD_INPUT_LOW 0.4 SOUNDMOD_INPUT_HIGH 0.6 SOUNDMOD_INPUT_MAX 0.8 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod3_<> ANI_mod3_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wheelspin / Lockup Sound Modifiers } Loudness: Longitudinal Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Force Effects #Category: Wheelspin / Lockup Sound Modifiers #FileID : SndMod131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod131.par #BlueLink0 Animator: Sound Modifier`Loudness: Longitudinal Force Effects` Wheelspin / Lockup Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod132.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod4_<> = min(abs(KappL_<>), 1.0) * abs(vxcen<>) ; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod4_<> SOUNDMOD_INPUT_MIN 1.5 SOUNDMOD_INPUT_LOW 2.0 SOUNDMOD_INPUT_HIGH 2.5 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.3333 SOUNDMOD_OUTPUT_HIGH 0.6667 SOUNDMOD_OUTPUT_MAX 1.0 WRT_mod4_<> ANI_mod4_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Longitudinal Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod132.par #BlueLink1 Animator: Sound Modifier`Loudness: Longitudinal Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Wheelspin / Brake Lockup #Library : Animator: Sound Sample #DataSet : Wheelspin / Brake Lockup #Category: Tire Sounds #FileID : SndSmp113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp113.par #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 650 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 650 kg Rated Load #Category: Tire Sounds #FileID : SndSet110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet110.par #BlueLink13 Animator: Sound Set`Tire Sounds - 650 kg Rated Load` Tire Sounds` , Animator RRE 325 R0 334 FZ_TIRE_COEFFICIENT 268 FZ_MAX 100000 IT 0 L_RELAX_X 32 L_RELAX_Y 665 VLOW_ALPHA 5 RR_C 0.0038 RR_V 0.000026 RR_FX 1 OPT_TIRE_COMB 0 ENTER_PARSFILE Tires\Mz\TireMz103.par`08-02-2011`16:42:31 #FullDataName Tire: Aligning Moment`215/55 R17`Touring Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 1593.58, 3187.16, 4780.74, 6374.32, 7967.9, 9561.48, 11155.06, 12748.65 0.5, 34.35, 66.71, 96.57, 123.59, 147.51, 168.17, 185.43, 199.2 1, 53.27, 104.31, 152.55, 197.56, 238.93, 276.26, 309.15, 337.21 1.5, 52.85, 104.57, 155.01, 203.99, 251.22, 296.35, 338.9, 378.28 2, 43.71, 87.21, 130.71, 174.32, 218.05, 261.82, 305.41, 348.47 2.5, 33.99, 68.22, 103.04, 138.74, 175.5, 213.49, 252.76, 293.29 3, 26.04, 52.49, 79.75, 108.15, 137.96, 169.45, 202.83, 238.31 3.5, 19.92, 40.32, 61.58, 84.03, 107.95, 133.65, 161.42, 191.56 4, 15.25, 30.98, 47.57, 65.31, 84.49, 105.41, 128.37, 153.71 4.5, 11.62, 23.73, 36.66, 50.69, 66.08, 83.13, 102.12, 123.39 5, 8.75, 17.99, 28.02, 39.09, 51.45, 65.35, 81.09, 98.98 5.5, 6.45, 13.39, 21.07, 29.75, 39.63, 50.98, 64.04, 79.12 6, 4.57, 9.61, 15.38, 22.09, 29.95, 39.18, 50.02, 62.76 6.5, 3.01, 6.48, 10.66, 15.73, 21.9, 29.36, 38.34, 49.11 7, 1.7, 3.85, 6.68, 10.38, 15.11, 21.09, 28.5, 37.59 7.5, 0.58, 1.6, 3.29, 5.81, 9.33, 14.03, 20.1, 27.76 8, -0.39, -0.33, 0.37, 1.88, 4.36, 7.96, 12.87, 19.3 8.5, -1.23, -2.01, -2.17, -1.53, 0.03, 2.68, 6.58, 11.94 9, -1.96, -3.49, -4.39, -4.53, -3.76, -1.95, 1.07, 5.49 9.5, -2.61, -4.79, -6.35, -7.17, -7.11, -6.03, -3.79, -0.21 10, -3.19, -5.94, -8.1, -9.52, -10.09, -9.67, -8.12, -5.27 10.5, -3.71, -6.98, -9.66, -11.63, -12.75, -12.91, -11.98, -9.8 11, -4.17, -7.91, -11.07, -13.52, -15.15, -15.84, -15.46, -13.87 11.5, -4.59, -8.76, -12.34, -15.23, -17.31, -18.48, -18.6, -17.54 12, -4.97, -9.52, -13.5, -16.78, -19.28, -20.87, -21.45, -20.88 12.5, -5.32, -10.22, -14.55, -18.2, -21.07, -23.06, -24.05, -23.92 13, -5.64, -10.86, -15.51, -19.5, -22.72, -25.06, -26.43, -26.71 13.5, -5.94, -11.45, -16.4, -20.69, -24.23, -26.9, -28.62, -29.26 14, -6.21, -11.99, -17.22, -21.79, -25.62, -28.6, -30.64, -31.62 14.5, -6.46, -12.49, -17.98, -22.81, -26.9, -30.16, -32.5, -33.8 15, -6.69, -12.96, -18.68, -23.75, -28.1, -31.62, -34.23, -35.82 15.5, -6.91, -13.39, -19.33, -24.63, -29.21, -32.97, -35.83, -37.69 16, -7.11, -13.79, -19.94, -25.45, -30.24, -34.23, -37.33, -39.44 16.5, -7.3, -14.17, -20.51, -26.21, -31.21, -35.41, -38.73, -41.08 17, -7.47, -14.53, -21.04, -26.93, -32.11, -36.51, -40.04, -42.6 17.5, -7.64, -14.86, -21.54, -27.6, -32.96, -37.54, -41.26, -44.04 18, -7.79, -15.17, -22.01, -28.23, -33.76, -38.51, -42.42, -45.38 18.5, -7.94, -15.46, -22.45, -28.83, -34.51, -39.43, -43.5, -46.65 19, -8.08, -15.74, -22.87, -29.39, -35.22, -40.29, -44.53, -47.85 19.5, -8.21, -16, -23.27, -29.92, -35.89, -41.11, -45.5, -48.98 20, -8.33, -16.25, -23.64, -30.42, -36.52, -41.88, -46.41, -50.05 20.5, -8.45, -16.49, -23.99, -30.9, -37.12, -42.61, -47.28, -51.06 21, -8.56, -16.71, -24.33, -31.35, -37.7, -43.3, -48.1, -52.02 21.5, -8.67, -16.92, -24.65, -31.78, -38.24, -43.96, -48.89, -52.93 22, -8.77, -17.12, -24.95, -32.19, -38.75, -44.59, -49.63, -53.8 22.5, -8.87, -17.32, -25.24, -32.58, -39.24, -45.19, -50.34, -54.63 23, -8.96, -17.5, -25.52, -32.95, -39.71, -45.76, -51.01, -55.42 23.5, -9.04, -17.67, -25.78, -33.3, -40.16, -46.3, -51.66, -56.17 24, -9.13, -17.84, -26.04, -33.64, -40.59, -46.82, -52.28, -56.89 24.5, -9.21, -18, -26.28, -33.96, -41, -47.32, -52.87, -57.58 25, -9.29, -18.16, -26.51, -34.27, -41.39, -47.8, -53.43, -58.23 26, -9.29, -18.16, -26.51, -34.27, -41.39, -47.8, -53.43, -58.23 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Touring Tires } 215/55 R17 #Library : Tire: Aligning Moment #DataSet : 215/55 R17 #Category: Touring Tires #FileID : TireMz103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:31 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz103.par #BlueLink0 Tire: Aligning Moment`215/55 R17` Touring Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy103.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`215/55 R17`Touring Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 1593.58, 3187.16, 4780.74, 6374.32, 7967.9, 9561.48, 11155.06, 12748.65 0.5, 248.08, 483.5, 704.46, 910.03, 1099.7, 1273.15, 1430.26, 1571 1, 486, 947.74, 1381.71, 1786.09, 2159.81, 2502.21, 2812.97, 3091.98 1.5, 704.93, 1375.9, 2007.9, 2598.26, 3145.3, 3647.98, 4105.65, 4518.01 2, 898.46, 1755.66, 2565.35, 3324.08, 4029.58, 4680.29, 5275.2, 5813.66 2.5, 1063.18, 2080.29, 3044.12, 3950.55, 4796.73, 5580.62, 6300.7, 6955.9 3, 1198.64, 2348.57, 3441.97, 4474.17, 5441.86, 6342.46, 7173.99, 7934.9 3.5, 1306.65, 2563.69, 3762.95, 4899.4, 5969.31, 6969.71, 7898.17, 8752.65 4, 1390.46, 2731.63, 4015.21, 5235.95, 6389.87, 7473.66, 8484.53, 9420.05 4.5, 1453.91, 2859.62, 4208.83, 5496.25, 6717.72, 7869.74, 8949.25, 9953.51 5, 1500.82, 2954.92, 4354.16, 5693.25, 6967.99, 8174.77, 9310.36, 10371.82 5.5, 1534.64, 3024.19, 4460.73, 5839.08, 7155.04, 8404.98, 9585.61, 10693.86 6, 1558.28, 3073.11, 4536.82, 5944.36, 7291.62, 8574.99, 9791.17, 10937.07 6.5, 1574.12, 3106.35, 4589.27, 6017.99, 7388.5, 8697.27, 9941.07, 11116.8 7, 1584.05, 3127.63, 4623.58, 6067.16, 7454.5, 8782.18, 10047.02, 11246 7.5, 1589.54, 3139.87, 4644.08, 6097.61, 7496.7, 8838.05, 10118.59, 11335.38 8, 1591.7, 3145.32, 4654.17, 6113.82, 7520.67, 8871.54, 10163.46, 11393.59 8.5, 1591.4, 3145.71, 4656.43, 6119.28, 7530.79, 8887.88, 10187.72, 11427.56 9, 1589.29, 3142.36, 4652.87, 6116.68, 7530.43, 8891.17, 10196.16, 11442.78 9.5, 1585.88, 3136.27, 4645.01, 6108.08, 7522.22, 8884.59, 10192.55, 11443.6 10, 1581.52, 3128.2, 4634.02, 6095.06, 7508.17, 8870.59, 10179.81, 11433.4 10.5, 1576.5, 3118.73, 4620.79, 6078.84, 7489.83, 8851.11, 10160.22, 11414.86 11, 1571.04, 3108.3, 4605.98, 6060.34, 7468.41, 8827.6, 10135.56, 11390.06 11.5, 1565.3, 3097.24, 4590.13, 6040.29, 7444.82, 8801.22, 10107.2, 11360.64 12, 1559.4, 3085.8, 4573.6, 6019.2, 7419.76, 8772.84, 10076.22, 11327.85 12.5, 1553.42, 3074.17, 4556.71, 5997.51, 7393.78, 8743.14, 10043.45, 11292.71 13, 1547.43, 3062.48, 4539.67, 5975.51, 7367.28, 8712.65, 10009.53, 11255.98 13.5, 1541.49, 3050.85, 4522.65, 5953.45, 7340.58, 8681.76, 9974.95, 11218.26 14, 1535.63, 3039.34, 4505.77, 5931.51, 7313.93, 8650.78, 9940.1, 11180.02 14.5, 1529.87, 3028.02, 4489.12, 5909.81, 7287.49, 8619.95, 9905.26, 11141.62 15, 1524.24, 3016.93, 4472.78, 5888.46, 7261.4, 8589.44, 9870.67, 11103.34 15.5, 1518.75, 3006.09, 4456.78, 5867.52, 7235.76, 8559.37, 9836.49, 11065.39 16, 1513.4, 2995.53, 4441.16, 5847.04, 7210.63, 8529.85, 9802.84, 11027.93 16.5, 1508.2, 2985.25, 4425.95, 5827.05, 7186.08, 8500.94, 9769.82, 10991.07 17, 1503.15, 2975.26, 4411.14, 5807.59, 7162.12, 8472.69, 9737.49, 10954.92 17.5, 1498.25, 2965.56, 4396.76, 5788.65, 7138.78, 8445.12, 9705.9, 10919.52 18, 1493.51, 2956.15, 4382.78, 5770.24, 7116.07, 8418.26, 9675.07, 10884.92 18.5, 1488.91, 2947.02, 4369.23, 5752.35, 7093.98, 8392.12, 9645.02, 10851.14 19, 1484.45, 2938.18, 4356.07, 5734.99, 7072.52, 8366.68, 9615.76, 10818.21 19.5, 1480.14, 2929.6, 4343.32, 5718.14, 7051.68, 8341.96, 9587.28, 10786.11 20, 1475.96, 2921.3, 4330.95, 5701.79, 7031.44, 8317.92, 9559.57, 10754.86 20.5, 1471.91, 2913.25, 4318.96, 5685.93, 7011.79, 8294.58, 9532.63, 10724.44 21, 1467.98, 2905.45, 4307.34, 5670.55, 6992.71, 8271.89, 9506.43, 10694.84 21.5, 1464.18, 2897.89, 4296.06, 5655.62, 6974.19, 8249.86, 9480.97, 10666.04 22, 1460.5, 2890.56, 4285.13, 5641.13, 6956.21, 8228.45, 9456.21, 10638.03 22.5, 1456.93, 2883.45, 4274.52, 5627.07, 6938.75, 8207.66, 9432.15, 10610.78 23, 1453.47, 2876.55, 4264.23, 5613.43, 6921.8, 8187.45, 9408.76, 10584.27 23.5, 1450.11, 2869.87, 4254.25, 5600.18, 6905.33, 8167.82, 9386.01, 10558.48 24, 1446.86, 2863.37, 4244.55, 5587.31, 6889.33, 8148.73, 9363.89, 10533.38 24.5, 1443.69, 2857.07, 4235.13, 5574.81, 6873.79, 8130.18, 9342.38, 10508.96 25, 1440.63, 2850.95, 4225.98, 5562.66, 6858.67, 8112.14, 9321.44, 10485.19 26, 1440.63, 2850.95, 4225.98, 5562.66, 6858.67, 8112.14, 9321.44, 10485.19 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Touring Tires } 215/55 R17 #Library : Tire: Lateral Force #DataSet : 215/55 R17 #Category: Touring Tires #FileID : TireFy103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy103.par #BlueLink1 Tire: Lateral Force`215/55 R17` Touring Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx103.par`08-02-2011`16:42:28 #FullDataName Tire: Longitudinal Force`215/55 R17`Touring Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 1593.58, 3187.16, 4780.74, 6374.32, 7967.9, 9561.48, 11155.06, 12748.65 0.02, 866.05, 1702.47, 2504.68, 3270.08, 3996.91, 4683.85, 5329.94, 5934.48 0.04, 1297.02, 2555.8, 3770.2, 4936.54, 6052.18, 7115.02, 8123.39, 9075.89 0.06, 1471.85, 2904.23, 4290.68, 5627.28, 6911.13, 8139.89, 9311.59, 10424.58 0.08, 1545.6, 3051.97, 4512.64, 5923.67, 7282.08, 8585.47, 9831.8, 11019.3 0.1, 1577.33, 3115.96, 4609.52, 6054.07, 7446.63, 8784.79, 10066.48, 11289.9 0.12, 1589.5, 3140.9, 4647.9, 6106.6, 7514.05, 8867.84, 10165.9, 11406.43 0.14, 1591.76, 3145.99, 4656.47, 6119.35, 7531.7, 8891.14, 10195.61, 11443.29 0.16, 1588.74, 3140.47, 4649.06, 6110.7, 7522.49, 8882.06, 10187.38, 11436.63 0.18, 1582.86, 3129.18, 4632.91, 6090.28, 7498.42, 8854.99, 10157.96, 11405.55 0.2, 1575.45, 3114.8, 4612.04, 6063.46, 7466.22, 8817.98, 10116.76, 11360.75 0.22, 1567.3, 3098.87, 4588.79, 6033.36, 7429.78, 8775.74, 10069.25, 11308.54 0.24, 1558.85, 3082.33, 4564.54, 6001.84, 7391.45, 8731.07, 10018.74, 11252.71 0.26, 1550.39, 3065.72, 4540.14, 5970.03, 7352.65, 8685.71, 9967.27, 11195.59 0.28, 1542.08, 3049.37, 4516.08, 5938.61, 7314.24, 8640.71, 9916.07, 11138.62 0.3, 1534.02, 3033.49, 4492.67, 5907.99, 7276.75, 8596.7, 9865.92, 11082.7 0.32, 1526.25, 3018.18, 4470.08, 5878.41, 7240.48, 8554.07, 9817.27, 11028.37 0.34, 1518.81, 3003.5, 4448.4, 5849.99, 7205.61, 8513.03, 9770.37, 10975.93 0.36, 1511.7, 2989.47, 4427.66, 5822.79, 7172.2, 8473.68, 9725.35, 10925.54 0.38, 1504.92, 2976.09, 4407.88, 5796.82, 7140.27, 8436.04, 9682.26, 10877.27 0.4, 1498.48, 2963.35, 4389.03, 5772.06, 7109.82, 8400.12, 9641.1, 10831.12 0.42, 1492.34, 2951.22, 4371.08, 5748.48, 7080.79, 8365.85, 9601.82, 10787.04 0.44, 1486.51, 2939.69, 4354, 5726.02, 7053.13, 8333.19, 9564.36, 10744.99 0.46, 1480.96, 2928.72, 4337.75, 5704.64, 7026.79, 8302.07, 9528.64, 10704.87 0.48, 1475.69, 2918.28, 4322.27, 5684.28, 7001.7, 8272.41, 9494.58, 10666.59 0.5, 1470.66, 2908.34, 4307.54, 5664.88, 6977.78, 8244.13, 9462.1, 10630.08 0.52, 1465.88, 2898.87, 4293.5, 5646.4, 6954.99, 8217.16, 9431.11, 10595.23 0.54, 1461.33, 2889.85, 4280.12, 5628.77, 6933.24, 8191.43, 9401.54, 10561.95 0.56, 1456.98, 2881.24, 4267.35, 5611.95, 6912.49, 8166.87, 9373.29, 10530.16 0.58, 1452.84, 2873.03, 4255.17, 5595.89, 6892.67, 8143.41, 9346.3, 10499.78 0.6, 1448.88, 2865.19, 4243.53, 5580.55, 6873.73, 8120.98, 9320.5, 10470.72 0.62, 1445.1, 2857.69, 4232.4, 5565.89, 6855.62, 8099.52, 9295.81, 10442.91 0.64, 1441.48, 2850.53, 4221.76, 5551.85, 6838.28, 8078.98, 9272.17, 10416.28 0.66, 1438.02, 2843.66, 4211.57, 5538.41, 6821.68, 8059.31, 9249.53, 10390.76 0.68, 1434.7, 2837.09, 4201.81, 5525.54, 6805.78, 8040.46, 9227.82, 10366.28 0.7, 1431.53, 2830.79, 4192.45, 5513.19, 6790.52, 8022.37, 9206.99, 10342.8 0.72, 1428.48, 2824.75, 4183.47, 5501.35, 6775.88, 8005.01, 9186.99, 10320.25 0.74, 1425.55, 2818.95, 4174.85, 5489.97, 6761.82, 7988.34, 9167.78, 10298.59 0.76, 1422.74, 2813.37, 4166.57, 5479.04, 6748.31, 7972.31, 9149.32, 10277.76 0.78, 1420.04, 2808.02, 4158.61, 5468.53, 6735.31, 7956.9, 9131.55, 10257.72 0.8, 1417.44, 2802.86, 4150.95, 5458.42, 6722.81, 7942.07, 9114.46, 10238.43 0.82, 1414.94, 2797.9, 4143.57, 5448.69, 6710.77, 7927.78, 9097.99, 10219.85 0.84, 1412.54, 2793.12, 4136.47, 5439.31, 6699.17, 7914.02, 9082.12, 10201.94 0.86, 1410.22, 2788.52, 4129.63, 5430.27, 6687.99, 7900.75, 9066.82, 10184.67 0.88, 1407.98, 2784.08, 4123.02, 5421.55, 6677.2, 7887.95, 9052.06, 10168.01 0.9, 1405.82, 2779.8, 4116.65, 5413.14, 6666.79, 7875.59, 9037.81, 10151.92 0.92, 1403.74, 2775.66, 4110.5, 5405.02, 6656.74, 7863.66, 9024.04, 10136.37 0.94, 1401.72, 2771.66, 4104.56, 5397.17, 6647.02, 7852.12, 9010.74, 10121.35 0.96, 1399.78, 2767.8, 4098.81, 5389.58, 6637.63, 7840.97, 8997.88, 10106.82 0.98, 1397.9, 2764.07, 4093.26, 5382.24, 6628.55, 7830.19, 8985.43, 10092.77 1, 1396.08, 2760.45, 4087.88, 5375.14, 6619.76, 7819.75, 8973.38, 10079.16 1.02, 1396.08, 2760.45, 4087.88, 5375.14, 6619.76, 7819.75, 8973.38, 10079.16 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Touring Tires } 215/55 R17 #Library : Tire: Longitudinal Force #DataSet : 215/55 R17 #Category: Touring Tires #FileID : TireFx103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:28 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx103.par #BlueLink2 Tire: Longitudinal Force`215/55 R17` Touring Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff103.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`215/55 R17`Touring Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 637.43225, -6.0332 1274.8645, -12.0864 1912.29675, -18.1682 2549.729, -24.2854 3187.16125, -30.4433 3824.5935, -36.6469 4462.02575, -42.9005 5099.458, -49.2081 5736.89025, -55.5734 6374.3225, -62 7011.75475, -68.4912 7649.187, -75.05 8286.61925, -81.6797 8924.0515, -88.3829 9561.48375, -95.1626 10198.916, -102.0213 10836.34825, -108.9617 11473.7805, -115.9864 12111.21275, -123.0976 12748.645, -130.2979 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Touring Tires } 215/55 R17 #Library : Tire: Camber Thrust Coefficient #DataSet : 215/55 R17 #Category: Touring Tires #FileID : CamStiff103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff103.par #BlueLink3 Tire: Camber Thrust Coefficient`215/55 R17` Touring Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Touring Tires } 215/55 R17 #Library : Tire #DataSet : 215/55 R17 #Category: Touring Tires #FileID : Tire103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire103_note.txt 650 kg rated load EXIT_NOTEFILE Tires\Tire\Tire103_note.txt EXIT_PARSFILE Tires\Tire\Tire103.par #BlueLink9 Tire`215/55 R17` Touring Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`215/55 R17` Touring Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp106.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`D-Class, Sedan - Rear Comp.`CS D-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.797 *R_SPRING_R 0.797 *R_DAMPER_L 0.797 *R_DAMPER_R 0.797 *FS_OFFSET_L 0 *FS_OFFSET_R 0 *CT_FX_L 0 *CT_FX_R 0 *CS_FY_L -0.10e-6 *CS_FY_R -0.10e-6 *CS_MZ_L 0.190e-4 *CS_MZ_R 0.190e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 2.9e-5 *CI_FY_R 2.9e-5 *CI_MZ_L 0 *CI_MZ_R 0 *C_LONG_L 7e-5 *C_LONG_R 7e-5 *C_LAT_L 3.8e-5 *C_LAT_R 3.8e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.797 *R_JOUNCE_R 0.797 *R_REBOUND_L 0.797 *R_REBOUND_R 0.797 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx103.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 344 MX_AUX_COEFFICIENT 344 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 344 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 344 N-m/deg #Category: #FileID : AuxMx103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx103.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+70 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 68, 0 69, 0 70, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -70, -10000 -69, 0 -68, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +70 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +70 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 FS_OFFSET 0 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT -0.10e-6 CS_MZ_COEFFICIENT 0.190e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 2.9e-5 CI_MZ_COEFFICIENT 0 C_LONG_COEFFICIENT 7e-5 C_LAT_COEFFICIENT 3.8e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 ENTER_PARSFILE Suspensions\Springs\Spring106.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`82 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 82 FS_EXT_COEFFICIENT 82 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 82 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 82 N/mm #Library : Suspension: Spring #DataSet : 82 N/mm #Category: #FileID : Spring106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring106.par #BlueLink0 Suspension: Spring`82 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 FS_OFFSET 0 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT -0.10e-6 CS_MZ_COEFFICIENT 0.190e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 2.9e-5 CI_MZ_COEFFICIENT 0 C_LONG_COEFFICIENT 7e-5 C_LAT_COEFFICIENT 3.8e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 #BlueLink3 Suspension: Spring`82 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS D-Class } D-Class, Sedan - Rear Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : D-Class, Sedan - Rear Comp. #Category: CS D-Class #FileID : SuspCmp106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp106_note.txt Rear spring rate chosen for a rear ride frequency of 2.2 Hz and a rear corner weight of 273 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp106_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp106.par #BlueLink17 Suspension: Independent Compliance, Springs, and Dampers`D-Class, Sedan - Rear Comp.` CS D-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin106.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`D-Class, Sedan - Rear Suspension`CS D-Class iside 1 L_TRACK 1550 Y_CL_SUSP 0 M_US 80 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0 *TOE_R 0 *CAMBER_L 0 *CAMBER_R 0 R_US_STR 0.1 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive104.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Rear Tri-Link Strut - No Dive`Tri-Link Strut #RingCtrl0 CONSTANT *SCALAR 0 SUSP_DIVE_CONSTANT 0 #RadioCtrl0 0 SUSP_DIVE_AXLE_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { Tri-Link Strut } Rear Tri-Link Strut - No Dive #Library : Suspension: Dive Angle (Caster Change) #DataSet : Rear Tri-Link Strut - No Dive #Category: Tri-Link Strut #FileID : Dive104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive104_note.txt Generic Rear Tri-Link strut suspension Dive angle change vs. Jounce. EXIT_NOTEFILE Suspensions\Dive\Dive104_note.txt EXIT_PARSFILE Suspensions\Dive\Dive104.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear Tri-Link Strut - No Dive` Tri-Link Strut` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX104.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Rear Tri-Link Strut - Longitudinal Movement`Tri-Link Strut #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -150, 34.0109 -135, 29.0492 -120, 24.4735 -105, 20.2638 -90, 16.4039 -75, 12.8801 -60, 9.68167 -45, 6.79994 -30, 4.22844 -15, 1.96266 0, 0 15, -1.66025 30, -3.01692 45, -4.06686 60, -4.8048 75, -5.22318 90, -5.31173 105, -5.05706 120, -4.44179 135, -3.4432 150, -2.03055 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -150, 34.0109 -135, 29.0492 -120, 24.4735 -105, 20.2638 -90, 16.4039 -75, 12.8801 -60, 9.68167 -45, 6.79994 -30, 4.22844 -15, 1.96266 0, 0 15, -1.66025 30, -3.01692 45, -4.06686 60, -4.8048 75, -5.22318 90, -5.31173 105, -5.05706 120, -4.44179 135, -3.4432 150, -2.03055 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { Tri-Link Strut } Rear Tri-Link Strut - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Rear Tri-Link Strut - Longitudinal Movement #Category: Tri-Link Strut #FileID : SusX104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX104_note.txt Generic Rear Tri-Link strut suspension Longitudinal movement vs. Jounce. EXIT_NOTEFILE Suspensions\Longitudinal\SusX104_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX104.par #BlueLink1 Suspension: Longitudinal Position`Rear Tri-Link Strut - Longitudinal Movement` Tri-Link Strut` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber104.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Rear Tri-Link Strut - Camber Change`Tri-Link Strut #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -150, 5.44524 -135, 4.65501 -120, 3.92781 -105, 3.25928 -90, 2.64586 -75, 2.08471 -60, 1.5736 -45, 1.11074 -30, 0.694784 -15, 0.32476 0, 0 15, -0.279867 30, -0.514945 45, -0.705085 60, -0.849884 75, -0.948682 90, -1.00053 105, -1.00416 120, -0.957857 135, -0.85927 150, -0.705008 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { Tri-Link Strut } Rear Tri-Link Strut - Camber Change #Library : Suspension: Camber Angle #DataSet : Rear Tri-Link Strut - Camber Change #Category: Tri-Link Strut #FileID : Camber104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber104_note.txt Generic Rear Tri-Link strut suspension Camber change vs. Jounce. EXIT_NOTEFILE Suspensions\Camber\Camber104_note.txt EXIT_PARSFILE Suspensions\Camber\Camber104.par #BlueLink2 Suspension: Camber Angle`Rear Tri-Link Strut - Camber Change` Tri-Link Strut` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat104.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Rear Tri-Link Strut - Lateral Movement`Tri-Link Strut #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -150, 34.7232 -135, 28.9298 -120, 23.7162 -105, 19.0508 -90, 14.9073 -75, 11.2635 -60, 8.10101 -45, 5.40464 -30, 3.16193 -15, 1.36294 0, 0 15, -0.932437 30, -1.43789 45, -1.51794 60, -1.1722 75, -0.398333 90, 0.808049 105, 2.45344 120, 4.54658 135, 7.09849 150, 10.1225 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -150, 34.7232 -135, 28.9298 -120, 23.7162 -105, 19.0508 -90, 14.9073 -75, 11.2635 -60, 8.10101 -45, 5.40464 -30, 3.16193 -15, 1.36294 0, 0 15, -0.932437 30, -1.43789 45, -1.51794 60, -1.1722 75, -0.398333 90, 0.808049 105, 2.45344 120, 4.54658 135, 7.09849 150, 10.1225 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { Tri-Link Strut } Rear Tri-Link Strut - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Rear Tri-Link Strut - Lateral Movement #Category: Tri-Link Strut #FileID : SusLat104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat104_note.txt Generic Rear Tri-Link strut suspension Lateral movement vs. Jounce. EXIT_NOTEFILE Suspensions\Lateral\SusLat104_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat104.par #BlueLink3 Suspension: Lateral Position`Rear Tri-Link Strut - Lateral Movement` Tri-Link Strut` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe104.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Rear Tri-Link Strut - Toe Change`Tri-Link Strut #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -150, -0.230886 -135, -0.137958 -120, -0.067203 -105, -0.0158 -90, 0.018818 -75, 0.03903 -60, 0.047078 -45, 0.045112 -30, 0.035225 -15, 0.019492 0, 0 15, -0.021118 30, -0.041648 45, -0.059255 60, -0.071439 75, -0.075487 90, -0.068408 105, -0.046854 120, -0.007025 135, 0.055466 150, 0.145778 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { Tri-Link Strut } Rear Tri-Link Strut - Toe Change #Library : Suspension: Toe Angle #DataSet : Rear Tri-Link Strut - Toe Change #Category: Tri-Link Strut #FileID : Toe104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe104_note.txt Generic Rear Tri-Link strut suspension Toe change vs. Jounce. EXIT_NOTEFILE Suspensions\Toe\Toe104_note.txt EXIT_PARSFILE Suspensions\Toe\Toe104.par #BlueLink4 Suspension: Toe Angle`Rear Tri-Link Strut - Toe Change` Tri-Link Strut` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0 A_CAMBER 0 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Rear Tri-Link Strut - No Dive` Tri-Link Strut` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Rear Tri-Link Strut - Longitudinal Movement` Tri-Link Strut` , Right wheel X #BlueLink7 Suspension: Camber Angle`Rear Tri-Link Strut - Camber Change` Tri-Link Strut` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Rear Tri-Link Strut - Lateral Movement` Tri-Link Strut` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Rear Tri-Link Strut - Toe Change` Tri-Link Strut` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0 A_CAMBER 0 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS D-Class } D-Class, Sedan - Rear Suspension #Library : Suspension: Independent System Kinematics #DataSet : D-Class, Sedan - Rear Suspension #Category: CS D-Class #FileID : IndKin106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin106_note.txt Generic Tri-Link Strut type suspension geometry generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin106_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin106.par #BlueLink20 Suspension: Independent System Kinematics`D-Class, Sedan - Rear Suspension` CS D-Class` , Rear kinematics * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`215/55 R17` Touring Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`215/55 R17` Touring Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass103.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`D-Class, Sedan Sprung Mass`CS D-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 2780 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 3850 H_H 500 H_CG_SU 520 LX_AXLE 2780 LX_CG_SU 1110 M_SU 1370 IXX_SU 671.3 IYY_SU 1972.8 IZZ_SU 2315.3 IXZ_SU 0 RX_SGUI 0.700 RY_SGUI 1.200 RZ_SGUI 1.300 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1471 Y_LENGTH 1795 *HWC_LF 340 *HWC_RF 340 *HWC_LR 325 *HWC_RR 325 H_WC 325 iside 2 H_WC 325 iaxle 1 iside 1 H_WC 340 iside 2 H_WC 340 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS D-Class } D-Class, Sedan Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : D-Class, Sedan Sprung Mass #Category: CS D-Class #FileID : SprMass103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass103.par #BlueLink0 Vehicle: Sprung Mass`D-Class, Sedan Sprung Mass` CS D-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero115.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`Scaleable Example Aero Properties` #CheckBox0 0 X_REF_AERO -2775/2 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 2775 AREA_AERO 2.3 D_AIR 1.206 ENTER_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FX_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.45 -160, -0.45 -90, 0 -20, 0.325 0, 0.3 20, 0.325 90, 0 160, -0.45 180, -0.45 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fx (Drag) Coefficient; Drag Coefficient = 0.30 #Library : Aerodynamics: Fx (Drag) Coefficient #DataSet : Drag Coefficient = 0.30 #Category: #FileID : AirCFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Drag vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt A nominal drag coefficent of 0.3 is typical of contemporary mid-size sedans, such as Honda Accord, Toyota Camry, and Ford Fusion. The drag coefficient typically increases a few percent as the vehicle develops an aerodynamic sidelsip angle, peaking around 20 degrees. Drag reduces as sidelip increases because the component of the airspeed in the vehicle X direction reduces. EXIT_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force ENTER_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FY_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.5 0, 0 90, 0.5 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fy (Side Force) Coefficient; Side Force Coefficient = 0.5 at 90 deg #Library : Aerodynamics: Fy (Side Force) Coefficient #DataSet : Side Force Coefficient = 0.5 at 90 deg #Category: #FileID : AirCFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aero side force vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt The side force coefficient is typically larger then the drag coefficent, because the width of the vehiicle is less than the length, contirbuting to drag in the lateral direction. Also, the calculation of the coefficient is based on the projected frontal area of the car, while the side force is developed against the larger side area. EXIT_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force ENTER_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par`08-03-2011`08:02:01 #FullDataName Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FZ_AERO_SHAPING_TABLE SPLINE_FLAT -180, 0.4 -135, 0.45 -90, 0.35 -20, 0.185 0, 0.18 20, 0.185 90, 0.35 135, 0.45 180, 0.4 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fz (Lift) Coefficient; Lift Coefficient = 0.18 #Library : Aerodynamics: Fz (Lift) Coefficient #DataSet : Lift Coefficient = 0.18 #Category: #FileID : AirCFz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:01 #VehCode Lift vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt Nearly all passenger cars develop a small positive lift force at highway speeeds. EXIT_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force ENTER_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par`08-02-2011`16:43:55 #FullDataName Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MX_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.3 0, 0 90, 0.3 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mx (Roll Moment) Coefficient; Roll Moment Coefficient = 0.3 at 90 deg #Library : Aerodynamics: Mx (Roll Moment) Coefficient #DataSet : Roll Moment Coefficient = 0.3 at 90 deg #Category: #FileID : AirCMx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Aero Mx vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment ENTER_PARSFILE Aerodynamics\Aero_My\AirCMy104.par`08-03-2011`08:02:56 #FullDataName Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 MY_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.25 -160, -0.25 -90, 0 -20, 0.17 0, 0.15 20, 0.17 90, 0 160, -0.25 180, -0.25 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: My (Pitch Moment) Coefficient; Pitch Moment Coefficient = -0.15 #Library : Aerodynamics: My (Pitch Moment) Coefficient #DataSet : Pitch Moment Coefficient = -0.15 #Category: #FileID : AirCMy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:56 #VehCode Aero My vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_My\AirCMy104.par #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment ENTER_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par`08-03-2011`08:03:05 #FullDataName Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MZ_AERO_SHAPING_TABLE SPLINE -180, 0 -90, 0.05 0, 0 90, -0.05 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mz (Yaw Moment) Coefficient; Yaw Moment Coefficent = 0.05 at 90 deg #Library : Aerodynamics: Mz (Yaw Moment) Coefficient #DataSet : Yaw Moment Coefficent = 0.05 at 90 deg #Category: #FileID : AirCMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:03:05 #VehCode Aero Mz vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; Scaleable Example Aero Properties #Library : Aerodynamics: Basic #DataSet : Scaleable Example Aero Properties #Category: #FileID : Aero115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero115_note.txt By convention, the aerodynamic reference point is located at ground level, on the vehicle centerline, one-half the wheel base behind the front axle. The reference length is set to the wheelbase, also by convention. If your aerodynamic data is based on forces and moments at the vehicle CG, place the reference point there. The frontal area (2.3 m2) is typical of vehicles like Honda Accord, Toyota Camry, and Ford Fusion. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero115_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero115.par #BlueLink1 Aerodynamics: Basic`Scaleable Example Aero Properties` ` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh103.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`D-Class, Sedan`D-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 2711 OBJ_Y_LENGTH 1753 OBJ_Z_LENGTH 1433 *DZ_V -80 *LAT_WC 1600 *LAT_WC_2 1600 *HWC 280 *WHEEL_RATIO 1.1 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X 0 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X -2.711 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X -2.711 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.266 WRITE_ADD_REFERENCE_FRAME_SHADOW ENTER_PARSFILE Animator\STL\AniSTL104.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Vehicle Shadow Shape`Vehicle Shadow #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\vehicle_shadows\shadow.obj #ENDMYellow SET_COLOR 0.125 0.125 0.125 X_REF_LENGTH 2690 Y_REF_LENGTH 1900 Z_REF_LENGTH 1220 *TRANSPARENCY 0.8 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.8 show_front on show_back off #MiscYellow0 tranclucent_fix on #ENDMYellow #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Vehicle Shadow } Vehicle Shadow Shape #Library : Animator: Shape File Link #DataSet : Vehicle Shadow Shape #Category: Vehicle Shadow #FileID : AniSTL104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL104.par #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT -0.08 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup109.par`08-02-2011`16:43:38 #FullDataName Animator: Shape Assembly`D-Class, Sedan`CS D-Class *COLOR .36 .117 .117 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.25 *X_REF_LENGTH 2711 *Y_REF_LENGTH 1753 *Z_REF_LENGTH 1433 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 0 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL128.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Body`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\body.obj #ENDMYellow SET_COLOR 0 0 .6 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Body #Library : Animator: Shape File Link #DataSet : European Sedan: Body #Category: CS European Sedan #FileID : AniSTL128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL128.par #BlueLink0 Animator: Shape File Link`European Sedan: Body` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL129.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Details`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\details.obj #ENDMYellow SET_COLOR 0.753 0.753 0.753 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Details #Library : Animator: Shape File Link #DataSet : European Sedan: Details #Category: CS European Sedan #FileID : AniSTL129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL129.par #BlueLink1 Animator: Shape File Link`European Sedan: Details` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL130.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Windows`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\windows.obj #ENDMYellow SET_COLOR 0 0 0 *SPECULAR 1 *TRANSPARENCY 0.7 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 0.7 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Windows #Library : Animator: Shape File Link #DataSet : European Sedan: Windows #Category: CS European Sedan #FileID : AniSTL130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL130.par #BlueLink2 Animator: Shape File Link`European Sedan: Windows` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL131.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Interior Trim`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\interior_trim.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Interior Trim #Library : Animator: Shape File Link #DataSet : European Sedan: Interior Trim #Category: CS European Sedan #FileID : AniSTL131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL131.par #BlueLink3 Animator: Shape File Link`European Sedan: Interior Trim` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL132.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Steering Wheel`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\steering_wheel.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Steering Wheel #Library : Animator: Shape File Link #DataSet : European Sedan: Steering Wheel #Category: CS European Sedan #FileID : AniSTL132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL132.par #BlueLink4 Animator: Shape File Link`European Sedan: Steering Wheel` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL133.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Seats`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\seats.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Seats #Library : Animator: Shape File Link #DataSet : European Sedan: Seats #Category: CS European Sedan #FileID : AniSTL133 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL133.par #BlueLink5 Animator: Shape File Link`European Sedan: Seats` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL134.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Driver`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\driver\driver.obj #ENDMYellow SET_COLOR 0.69 0.69 0.69 *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Driver #Library : Animator: Shape File Link #DataSet : European Sedan: Driver #Category: CS European Sedan #FileID : AniSTL134 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL134.par #BlueLink13 Animator: Shape File Link`European Sedan: Driver` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 x_ref_length 2711 y_ref_length 1753 z_ref_length 1433 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS D-Class } D-Class, Sedan #Library : Animator: Shape Assembly #DataSet : D-Class, Sedan #Category: CS D-Class #FileID : StlGroup109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:38 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup109.par #BlueLink1 Animator: Shape Assembly`D-Class, Sedan` CS D-Class` , Vehicle body ENTER_PARSFILE Animator\Sound\Set\SndSet105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Gasoline Engine Vehicle`General Vehicle Sounds ENTER_PARSFILE Animator\Sound\Sample\SndSmp110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power Off`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_0.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod124.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_brake_torque -50; ! maximum engine braking torque define_output v_mod2 = if_gt_0_then(m_engout, 0, pow(m_engout/max_brake_torque, 0.5)); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod2 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod2 ANI_v_mod2 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod124.par #BlueLink0 Animator: Sound Modifier`Power Off Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod125.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 4000 SOUNDMOD_INPUT_HIGH 8000 SOUNDMOD_INPUT_MAX 12000 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod125 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod125.par #BlueLink1 Animator: Sound Modifier`Power Off Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 ENTER_PARSFILE Animator\Sound\Modifier\SndMod126.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Frequency with RPM`Gas Engine Sound Modifiers #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Frequency with RPM #Library : Animator: Sound Modifier #DataSet : Frequency with RPM #Category: Gas Engine Sound Modifiers #FileID : SndMod126 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt This modifier is based on a recording of a 4 cyl engine at 3500 RPM EXIT_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod126.par #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power Off #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power Off #Category: Gas Engine Sounds #FileID : SndSmp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt This sound set uses a sample recorded at closed throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp110.par #BlueLink0 Animator: Sound Sample`4 Cyl. - Power Off` Gas Engine Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power On`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_1.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod127.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_torque 265 define_output v_mod1 = if_gt_0_then(m_engout, pow(m_engout/max_torque, 0.5), 0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod1 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod1 ANI_v_mod1 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod127 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt This modifer is to be applied to power-on conditions, i.e, when the engine torque is positive. EXIT_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod127.par #BlueLink0 Animator: Sound Modifier`Power On Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod128.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod128.par #BlueLink1 Animator: Sound Modifier`Power On Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power On #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power On #Category: Gas Engine Sounds #FileID : SndSmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt This sound set uses a sample recorded at wide open throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp111.par #BlueLink1 Animator: Sound Sample`4 Cyl. - Power On` Gas Engine Sounds` , Sample 2 ENTER_PARSFILE Animator\Sound\Sample\SndSmp105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wind Noise`Wind Noise ADD_3D_SOUND Animator\Audio\Environment\Wind_1_Mono.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 0.3 SOUND_VOL_MIN 0.01 SOUND_VOL_MAX 9.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 9.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod122.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_parameter air_speed_ref 50; units = km/h; define_output v_mod3 = pow(vAir/air_speed_ref, 3.0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod3 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_v_mod3 ANI_v_mod3 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Loudness: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod122.par #BlueLink0 Animator: Sound Modifier`Loudness: Speed Effect` Wind Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod123.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Frequency: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_output v_mod4 = pow(vAir/air_speed_ref, 0.5); #ENDMYellow #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod4 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_v_mod4 ANI_v_mod4 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Frequency: Speed Effect #Library : Animator: Sound Modifier #DataSet : Frequency: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod123.par #BlueLink1 Animator: Sound Modifier`Frequency: Speed Effect` Wind Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Wind Noise } Wind Noise #Library : Animator: Sound Sample #DataSet : Wind Noise #Category: Wind Noise #FileID : SndSmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp105.par #BlueLink2 Animator: Sound Sample`Wind Noise` Wind Noise` , Sample 3 LOG_ENTRY Used Dataset: Animator: Sound Set; { General Vehicle Sounds } Gasoline Engine Vehicle #Library : Animator: Sound Set #DataSet : Gasoline Engine Vehicle #Category: General Vehicle Sounds #FileID : SndSet105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set ENTRY_NOTEFILE Animator\Sound\Set\SndSet105_note.txt The sound samples are based on a 4 cylinder engine. The frequency can be scaled for a different number of cylinders by setting the ncyls parameter here. EXIT_NOTEFILE Animator\Sound\Set\SndSet105_note.txt EXIT_PARSFILE Animator\Sound\Set\SndSet105.par #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL139.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Brake Lights (D-Class)`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\brakes_on.obj #ENDMYellow SET_COLOR 1 .8 .8 SET_SCALE_X 1 SET_SCALE_Y 1.005 SET_SCALE_Z 1 SET_OFFSET_X -0.01 SET_OFFSET_Y 0 SET_OFFSET_Z 0.25 X_REF_LENGTH 2711 Y_REF_LENGTH 1753 Z_REF_LENGTH 1433 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Brake Lights (D-Class) #Library : Animator: Shape File Link #DataSet : European Sedan: Brake Lights (D-Class) #Category: CS European Sedan #FileID : AniSTL139 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL139.par #BlueLink3 Animator: Shape File Link`European Sedan: Brake Lights (D-Class)` CS European Sedan` , Brake lights WRITE_REFERENCE_FRAME_SIZE ENTER_PARSFILE Animator\Cameras\Camera101.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Vehicle Pictures`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 1 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 230 SET_ELEVATION 6 SET_DISTANCE 12 *SET_LOOKPOINT_X 1 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 230 *SET_ELEVATION 6 *SET_DISTANCE 12 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Vehicle Pictures #Library : Animator: Camera Setup #DataSet : Vehicle Pictures #Category: Shape Preview #FileID : Camera101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera ENTRY_NOTEFILE Animator\Cameras\Camera101_note.txt Pause the animation at the very start and center the vehicle in the animator to take a picture for the Animator: Vehicle screen. EXIT_NOTEFILE Animator\Cameras\Camera101_note.txt EXIT_PARSFILE Animator\Cameras\Camera101.par #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera ENTER_PARSFILE Animator\STL\AniSTL114.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Blurred Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\blurred_tire\blurred_tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Blurred Tire #Library : Animator: Shape File Link #DataSet : Blurred Tire #Category: Tires #FileID : AniSTL114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL114.par #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { D-Class Vehicles } D-Class, Sedan #Library : Animator: Vehicles and Sensor Targets #DataSet : D-Class, Sedan #Category: D-Class Vehicles #FileID : AniVeh103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh103_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh103_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh103.par #BlueLink2 Animator: Vehicles and Sensor Targets`D-Class, Sedan` D-Class Vehicles` , Vehicle animator data R_REAR_DRIVE_SC 0 PMAX_SC 201 ENTER_PARSFILE Powertrain\Fwd\FWD102.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front-Wheel Drive`150 kW, 6-spd., 4.1 Ratio` OPT_PT 1 OPT_ENGINE_PITCH_REACTION(1) 0 #RingCtrl0 1 OPT_ENGINE_INTERNAL 1 #RingCtrl1 1 #RingCtrl2 2 #RingCtrl3 1 #RingCtrl4 1 R_MDRIVE 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(1) 1 ENTER_PARSFILE Powertrain\Engine\Engine110.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`150 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.2 #CheckBox0 0 OPT_THROTTLE_DELAY 0 ENTER_PARSFILE Powertrain\Fuel_Rate\FuelRate102.par`08-02-2011`16:42:52 #FullDataName Powertrain: Fuel Consumption Rate`150 kW Fuel Consumption` #RingCtrl0 CARPET #RadioCtrl0 0 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Fuel rate (kg/sec) #DiagramTwo0 *3D_DATA 26, 19 ! columns x rows FUEL_RATE_CARPET 0, 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28, 0.32, 0.36, 0.4, 0.44, 0.48, 0.52, 0.56, 0.6, 0.64, 0.68, 0.72, 0.76, 0.8, 0.84, 0.88, 0.92, 0.96, 1 600, 8e-05, 0.0002, 0.0003, 0.00032, 0.00034, 0.00037, 0.00039, 0.00041, 0.00043, 0.00046, 0.00048, 0.0005, 0.00052, 0.00055, 0.00057, 0.00059, 0.00061, 0.00064, 0.00066, 0.00068, 0.0007, 0.00073, 0.00075, 0.00077, 0.00079, 0.00082 800, 0.00013, 0.0002, 0.0004, 0.00059, 0.00071, 0.0008, 0.00083, 0.00085, 0.00086, 0.00087, 0.00088, 0.00089, 0.0009, 0.00091, 0.00092, 0.00093, 0.00094, 0.00096, 0.00097, 0.00098, 0.00099, 0.001, 0.00101, 0.00102, 0.00103, 0.00104 1000, 0.00016, 0.0002, 0.00039, 0.00062, 0.00079, 0.00091, 0.00099, 0.00104, 0.00107, 0.00108, 0.00109, 0.00111, 0.00112, 0.00113, 0.00114, 0.00115, 0.00117, 0.00118, 0.00119, 0.0012, 0.00121, 0.00123, 0.00124, 0.00125, 0.00126, 0.00127 1200, 0.00016, 0.00021, 0.00039, 0.00064, 0.00088, 0.00104, 0.00114, 0.00123, 0.00128, 0.00131, 0.00133, 0.00134, 0.00135, 0.00137, 0.00138, 0.0014, 0.00141, 0.00142, 0.00144, 0.00145, 0.00147, 0.00148, 0.00149, 0.00151, 0.00152, 0.00154 1400, 0.00017, 0.00023, 0.00039, 0.00066, 0.00091, 0.00113, 0.0013, 0.0014, 0.00148, 0.00153, 0.00156, 0.00158, 0.0016, 0.00161, 0.00163, 0.00165, 0.00167, 0.00168, 0.0017, 0.00172, 0.00174, 0.00175, 0.00177, 0.00179, 0.00181, 0.00182 1600, 0.0002, 0.00026, 0.0004, 0.00066, 0.00095, 0.00119, 0.00139, 0.00154, 0.00164, 0.00173, 0.00178, 0.00181, 0.00183, 0.00184, 0.00186, 0.00188, 0.0019, 0.00192, 0.00194, 0.00195, 0.00197, 0.00199, 0.00201, 0.00203, 0.00205, 0.00207 1800, 0.00021, 0.00028, 0.00039, 0.00067, 0.00095, 0.00124, 0.00147, 0.00166, 0.00178, 0.00189, 0.00195, 0.002, 0.00203, 0.00206, 0.00209, 0.00212, 0.00215, 0.00218, 0.00222, 0.00225, 0.00228, 0.00231, 0.00234, 0.00237, 0.0024, 0.00243 2000, 0.00023, 0.0003, 0.00038, 0.00065, 0.00096, 0.00129, 0.00156, 0.00178, 0.00195, 0.00207, 0.00215, 0.00221, 0.00227, 0.00231, 0.00234, 0.00238, 0.00241, 0.00245, 0.00249, 0.00252, 0.00256, 0.00259, 0.00263, 0.00267, 0.0027, 0.00274 2200, 0.00025, 0.00033, 0.00041, 0.00065, 0.00098, 0.0013, 0.00162, 0.00189, 0.00212, 0.00226, 0.00239, 0.00246, 0.00252, 0.00257, 0.00261, 0.00264, 0.00268, 0.00272, 0.00275, 0.00279, 0.00282, 0.00286, 0.0029, 0.00293, 0.00297, 0.003 2400, 0.00027, 0.00036, 0.00044, 0.00065, 0.00095, 0.00133, 0.00168, 0.00199, 0.00223, 0.0024, 0.00255, 0.00265, 0.00272, 0.00278, 0.00284, 0.0029, 0.00296, 0.00302, 0.00308, 0.00314, 0.00319, 0.00325, 0.00331, 0.00337, 0.00343, 0.00349 2800, 0.00033, 0.00039, 0.00046, 0.00065, 0.00097, 0.00134, 0.00174, 0.00207, 0.00239, 0.00265, 0.0028, 0.00296, 0.00307, 0.00313, 0.0032, 0.00326, 0.00331, 0.00336, 0.00342, 0.00347, 0.00352, 0.00357, 0.00363, 0.00368, 0.00373, 0.00379 3200, 0.00038, 0.00045, 0.00053, 0.00064, 0.00097, 0.00136, 0.00175, 0.00216, 0.00256, 0.00287, 0.0031, 0.00326, 0.00343, 0.00365, 0.00388, 0.0041, 0.00424, 0.00425, 0.00427, 0.00429, 0.0043, 0.00432, 0.00434, 0.00435, 0.00437, 0.00439 3600, 0.00043, 0.00052, 0.00061, 0.0007, 0.00095, 0.00137, 0.00179, 0.00221, 0.00272, 0.00315, 0.00347, 0.00384, 0.00423, 0.00463, 0.00487, 0.00495, 0.00502, 0.00509, 0.00513, 0.00514, 0.00516, 0.00517, 0.00519, 0.0052, 0.00521, 0.00523 4000, 0.00047, 0.00059, 0.00083, 0.00118, 0.00162, 0.0021, 0.00259, 0.00317, 0.00367, 0.00403, 0.00436, 0.00487, 0.00537, 0.00587, 0.00603, 0.00608, 0.00614, 0.0062, 0.00624, 0.00625, 0.00626, 0.00627, 0.00629, 0.0063, 0.00631, 0.00633 4400, 0.00051, 0.00064, 0.00085, 0.00122, 0.00165, 0.00218, 0.0027, 0.00333, 0.00392, 0.00443, 0.00477, 0.00514, 0.00568, 0.00621, 0.00675, 0.00703, 0.00709, 0.00715, 0.00721, 0.00726, 0.00731, 0.00732, 0.00733, 0.00735, 0.00736, 0.00738 4800, 0.00052, 0.00074, 0.00095, 0.00121, 0.00167, 0.00218, 0.00272, 0.00336, 0.00404, 0.00459, 0.00538, 0.0064, 0.00701, 0.00725, 0.0075, 0.00774, 0.00793, 0.00799, 0.00805, 0.00811, 0.00817, 0.00822, 0.00828, 0.00829, 0.0083, 0.00831 5200, 0.00059, 0.00078, 0.00098, 0.00117, 0.00164, 0.00216, 0.00272, 0.0034, 0.0041, 0.00505, 0.00633, 0.0069, 0.00747, 0.00779, 0.00807, 0.00835, 0.00863, 0.0088, 0.00886, 0.00891, 0.00897, 0.00903, 0.00909, 0.00914, 0.0092, 0.00926 5600, 0.00065, 0.00083, 0.001, 0.00119, 0.0016, 0.00212, 0.00273, 0.00356, 0.00462, 0.00551, 0.00638, 0.00704, 0.00762, 0.00803, 0.0083, 0.00857, 0.00885, 0.00912, 0.00925, 0.00931, 0.00937, 0.00943, 0.00949, 0.00955, 0.00961, 0.00967 5800, 0.00076, 0.0009, 0.00103, 0.00119, 0.00162, 0.00211, 0.00271, 0.00357, 0.0046, 0.00548, 0.00642, 0.00712, 0.00772, 0.00816, 0.00841, 0.00867, 0.00892, 0.00918, 0.0093, 0.00935, 0.0094, 0.00945, 0.00951, 0.00956, 0.00961, 0.00966 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Fuel Consumption Rate; 150 kW Fuel Consumption #Library : Powertrain: Fuel Consumption Rate #DataSet : 150 kW Fuel Consumption #Category: #FileID : FuelRate102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:52 #VehCode Fuel rate EXIT_PARSFILE Powertrain\Fuel_Rate\FuelRate102.par #BlueLink0 Powertrain: Fuel Consumption Rate`150 kW Fuel Consumption` ` , Fuel rate *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 24.75, 76.11, 101.37, 103.43, 104.6, 105.18, 105.38, 105.43, 105.46, 105.43 633, 29.7, 92.87, 139.66, 149.15, 150.67, 151.28, 151.5, 151.52, 151.52, 151.52 750, 0, 87.39, 148.02, 161.35, 164.95, 166.25, 166.73, 166.77, 166.77, 166.75 1107, -9.9, 70.62, 173.59, 198.66, 208.61, 212.02, 213.29, 213.4, 213.37, 213.29 1463, -14.85, 47.12, 167.31, 207.9, 221.15, 227.15, 230.09, 230.77, 231.22, 235.62 1820, -16.83, 25.74, 148.5, 211.6, 233.68, 242.29, 246.89, 248.14, 249.06, 255.42 2177, -20.17, 9.9, 117.65, 203.67, 237.6, 257.4, 260.37, 263.34, 266.31, 272.88 2533, -25.32, -6.41, 81.3, 182.08, 239.58, 267, 274.23, 279.24, 282.15, 287.1 2890, -30.14, -15.16, 56.41, 153.5, 233.12, 269.9, 285.22, 289.08, 295.02, 299.97 3247, -34.39, -22.06, 37.66, 122.49, 223.45, 267.3, 287.1, 295.02, 300.96, 306.9 3603, -38.57, -28.1, 23.48, 96.53, 201.04, 259.38, 288.09, 297, 303.93, 309.87 3960, -42.77, -33.71, 11.8, 76.42, 174.35, 248.62, 285.12, 296.01, 302.94, 306.9 4317, -47.21, -39.38, 0.28, 57.45, 150.24, 237.3, 280.17, 290.07, 297, 302.88 4673, -51.83, -45.01, -9.97, 41.19, 125.06, 220.31, 272.25, 282.15, 292.05, 297 5030, -56.74, -50.57, -19.08, 26.99, 102.65, 198.96, 262.35, 272.25, 282.15, 287.1 5387, -61.67, -56.24, -27.53, 14.45, 83.52, 176.58, 246.84, 256.41, 269.64, 272.49 5743, -67.19, -62.17, -35.72, 2.82, 66.2, 153.28, 221.41, 236.52, 243.61, 246.41 6100, -73.21, -68.41, -43.88, -8.16, 50.38, 130.66, 193.86, 207.92, 214.52, 217.05 6500, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19 6700, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 150 kW Engine #Library : Powertrain: Engine #DataSet : 150 kW Engine #Category: CS Engine Torque Curves #FileID : Engine110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine110.par #BlueLink0 Powertrain: Engine`150 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC103.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 150 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.00704273 0.1, 0.00704273 0.2, 0.00704273 0.3, 0.00704269 0.4, 0.00704199 0.5, 0.00703585 0.6, 0.00700014 0.7, 0.00684379 0.8, 0.00628652 0.9, 0.00458708 0.95, 0.00282599 0.99, 0.000673411 1.01, -0.000673411 1.05, -0.00282599 1.1, -0.00458708 1.2, -0.00628652 1.3, -0.00684379 1.4, -0.00700014 1.5, -0.00703585 1.6, -0.00704199 1.7, -0.00704269 1.8, -0.00704273 1.9, -0.00704273 2, -0.00704273 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 150 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 150 kW Engine #Category: CS Torque Converters #FileID : TC103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC103.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 150 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` #RingCtrl0 6 NGEARS 6 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.168 R_GEAR_TR(1) 3.538 R_GEAR_TR(2) 2.06 R_GEAR_TR(3) 1.404 R_GEAR_TR(4) 1.00 R_GEAR_TR(5) 0.713 R_GEAR_TR(6) 0.582 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 T_SHIFT 0.25 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift101.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 1-2 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 874 0.2, 874 0.8, 1653 1, 1653 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 699 0.4, 699 0.8, 1240 1, 1240 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 1-2 Shift #Category: 6-speed #FileID : Shift101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift101.par #BlueLink0 Powertrain: Shift Schedule`6-speed, 1-2 Shift` 6-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift102.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 2-3 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1282 0.2, 1282 0.8, 2840 1, 2840 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1026 0.4, 1026 0.8, 2130 1, 2130 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 2-3 Shift #Category: 6-speed #FileID : Shift102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift102.par #BlueLink1 Powertrain: Shift Schedule`6-speed, 2-3 Shift` 6-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift103.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 3-4 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 4167 1, 4167 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 3125 1, 3125 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 3-4 Shift #Category: 6-speed #FileID : Shift103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift103.par #BlueLink2 Powertrain: Shift Schedule`6-speed, 3-4 Shift` 6-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift104.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 4-5 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2525 0.2, 2525 0.8, 5850 1, 5850 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2020 0.4, 2020 0.8, 4388 1, 4388 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 4-5 Shift #Category: 6-speed #FileID : Shift104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift104.par #BlueLink3 Powertrain: Shift Schedule`6-speed, 4-5 Shift` 6-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift105.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 5-6 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 3093 0.2, 3093 0.8, 8205 1, 8205 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2474 0.4, 2474 0.8, 6154 1, 6154 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 5-6 Shift #Category: 6-speed #FileID : Shift105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift105.par #BlueLink4 Powertrain: Shift Schedule`6-speed, 5-6 Shift` 6-speed` , Shift schedule igear 6 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 6-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 6-Speed Transmission #Category: #FileID : Trans101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans101.par #BlueLink8 Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` ` , Transmission (Extended) IDIFF 1 ENTER_PARSFILE Powertrain\Frontdiff\F_Diff103.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front Differential`Open - Gear Ratio 4.1`CS Front Differentials #CheckBox0 0 LOCKED_FD_OPT 0 #RingCtrl0 CONSTANT OPT_LOCKED_DIFF 0 M_DIFF_VISC_CONSTANT 0 #RadioCtrl0 0 M_DIFF_FD_CONSTANT 0 R_GEAR_FD 4.1 R_EFF_F_FD 0.99 R_EFF_R_FD 0.99 LOCKED_FD_DAMP 0.8 LOCKED_FD_K 80 IDS_F 0.013 IHS_LF 0.009 IHS_RF 0.009 *SCALAR 0 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Front Differential; { CS Front Differentials } Open - Gear Ratio 4.1 #Library : Powertrain: Front Differential #DataSet : Open - Gear Ratio 4.1 #Category: CS Front Differentials #FileID : F_Diff103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Front differential EXIT_PARSFILE Powertrain\Frontdiff\F_Diff103.par #BlueLink3 Powertrain: Front Differential`Open - Gear Ratio 4.1` CS Front Differentials` , Differential IDIFF 1 #BlueLink4 Powertrain: Front Differential`Open - Gear Ratio 4.1` CS Front Differentials` , Differential LOG_ENTRY Used Dataset: Powertrain: Front-Wheel Drive; 150 kW, 6-spd., 4.1 Ratio #Library : Powertrain: Front-Wheel Drive #DataSet : 150 kW, 6-spd., 4.1 Ratio #Category: #FileID : FWD102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode FWD ENTRY_NOTEFILE Powertrain\Fwd\FWD102_note.txt Generic 150 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 150 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\Fwd\FWD102_note.txt EXIT_PARSFILE Powertrain\Fwd\FWD102.par #BlueLink3 Powertrain: Front-Wheel Drive`150 kW, 6-spd., 4.1 Ratio` ` , Front-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W103.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`D-Class, Sedan w/ ABS`CS D-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 OFF_F_SGUI 0.15 OFF_R_SGUI 0.12 ON_F_SGUI 0.09 ON_R_SGUI 0.09 V_F_SGUI 2 V_R_SGUI 2 #RingCtrl0 2 #RingCtrl1 2 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq105.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`250 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 250 MY_BRAKE_COEFFICIENT 250 LOG_ENTRY Used Dataset: Brakes: Torque; 250 N-m/MPa #Library : Brakes: Torque #DataSet : 250 N-m/MPa #Category: #FileID : BrkTrq105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq105.par #BlueLink0 Brakes: Torque`250 N-m/MPa` ` , Left front ENTER_PARSFILE Brakes\Proportioning\BrkProp101.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity Gain` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1 PBK_DL_COEFFICIENT 1 LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity Gain #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity Gain #Category: #FileID : BrkProp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve EXIT_PARSFILE Brakes\Proportioning\BrkProp101.par #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.09 ABS_VMIN 2 iside 2 #BlueLink1 Brakes: Torque`250 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq108.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`100 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 100 MY_BRAKE_COEFFICIENT 100 LOG_ENTRY Used Dataset: Brakes: Torque; 100 N-m/MPa #Library : Brakes: Torque #DataSet : 100 N-m/MPa #Category: #FileID : BrkTrq108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq108.par #BlueLink2 Brakes: Torque`100 N-m/MPa` ` , Left rear #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.12 ABS_SLIP_ON 0.09 ABS_VMIN 2 iside 2 #BlueLink3 Brakes: Torque`100 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS D-Class } D-Class, Sedan w/ ABS #Library : Brakes: Four-Wheel System #DataSet : D-Class, Sedan w/ ABS #Category: CS D-Class #FileID : Brk4W103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W103.par #BlueLink6 Brakes: Four-Wheel System`D-Class, Sedan w/ ABS` CS D-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2103.par`08-02-2011`16:42:43 #FullDataName Steering`D-Class, Sedan: Power, R&P w/ Parking Tq.`CS D-Class *I_COL 0.02 *I_GEAR_IN 0.00011 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 77.0 *L2_LKPO 0 *R1_LKPO 77.0 *R2_LKPO 0 *L1_AKPI 12.5 *L2_AKPI 0 *R1_AKPI 12.5 *R2_AKPI 0 *L1_ACAST 9.5 *L2_ACAST 0 *R1_ACAST 9.5 *R2_ACAST 0 *L1_XKPO 5.0 *L2_XKPO 0 *R1_XKPO 5.0 *R2_XKPO 0 *CF_F 40 *D_RACK_F 4 *K_TBAR 4 #RingCtrl0 1 #RingCtrl1 3 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.00011 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 77.0 A_KPI 12.5 A_CASTER 9.5 X_KPO 5.0 iside 2 L_KPO 77.0 A_KPI 12.5 A_CASTER 9.5 X_KPO 5.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 0.1 ENTER_PARSFILE Steering\Compliance\StrCmp101.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`No Steer Compliance` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 STEER_COMP_CONSTANT 0 LOG_ENTRY Used Dataset: Steering System: Compliance; No Steer Compliance #Library : Steering System: Compliance #DataSet : No Steer Compliance #Category: #FileID : StrCmp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp101.par #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 40/360 D_RACK 4 TBAR 4 ENTER_PARSFILE Steering\KinematicsRack2\RkKinAx118.par`08-02-2011`16:42:42 #FullDataName Steering System: Kinematics for 2 Wheels (Rack & Pinion)`D-Class, Sedan Wheel Kinematics`CS D-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 RACK_KIN_TABLE SPLINE -64, -41.81 -61.44, -39.68 -58.88, -37.61 -56.32, -35.58 -53.76, -33.6 -51.2, -31.66 -48.64, -29.77 -46.08, -27.92 -43.52, -26.1 -40.96, -24.33 -38.4, -22.59 -35.84, -20.88 -33.28, -19.21 -30.72, -17.57 -28.16, -15.97 -25.6, -14.39 -23.04, -12.84 -20.48, -11.32 -17.92, -9.83 -15.36, -8.36 -12.8, -6.91 -10.24, -5.49 -7.68, -4.09 -5.12, -2.7 -2.56, -1.34 0, 0 2.56, 1.33 5.12, 2.64 7.68, 3.93 10.24, 5.21 12.8, 6.48 15.36, 7.73 17.92, 8.97 20.48, 10.21 23.04, 11.43 25.6, 12.65 28.16, 13.86 30.72, 15.07 33.28, 16.27 35.84, 17.46 38.4, 18.66 40.96, 19.85 43.52, 21.05 46.08, 22.24 48.64, 23.45 51.2, 24.65 53.76, 25.86 56.32, 27.09 58.88, 28.32 61.44, 29.57 64, 30.83 ENDTABLE iside 1 #DiagramOne1 RACK_KIN_TABLE SPLINE -64, -30.83 -61.44, -29.57 -58.88, -28.32 -56.32, -27.09 -53.76, -25.86 -51.2, -24.65 -48.64, -23.45 -46.08, -22.24 -43.52, -21.05 -40.96, -19.85 -38.4, -18.66 -35.84, -17.46 -33.28, -16.27 -30.72, -15.07 -28.16, -13.86 -25.6, -12.65 -23.04, -11.43 -20.48, -10.21 -17.92, -8.97 -15.36, -7.73 -12.8, -6.48 -10.24, -5.21 -7.68, -3.93 -5.12, -2.64 -2.56, -1.33 0, 0 2.56, 1.34 5.12, 2.7 7.68, 4.09 10.24, 5.49 12.8, 6.91 15.36, 8.36 17.92, 9.83 20.48, 11.32 23.04, 12.84 25.6, 14.39 28.16, 15.97 30.72, 17.57 33.28, 19.21 35.84, 20.88 38.4, 22.59 40.96, 24.33 43.52, 26.1 46.08, 27.92 48.64, 29.77 51.2, 31.66 53.76, 33.6 56.32, 35.58 58.88, 37.61 61.44, 39.68 64, 41.81 ENDTABLE #RadioCtrl0 0 #RadioCtrl1 0 *SCALAR 0.45 *SCALAR2 0.45 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Rack & Pinion); { CS D-Class } D-Class, Sedan Wheel Kinematics #Library : Steering System: Kinematics for 2 Wheels (Rack & Pinion) #DataSet : D-Class, Sedan Wheel Kinematics #Category: CS D-Class #FileID : RkKinAx118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:42 #VehCode Steer kinematics ENTRY_NOTEFILE Steering\KinematicsRack2\RkKinAx118_note.txt EXIT_NOTEFILE Steering\KinematicsRack2\RkKinAx118_note.txt EXIT_PARSFILE Steering\KinematicsRack2\RkKinAx118.par #BlueLink10 Steering System: Kinematics for 2 Wheels (Rack & Pinion)`D-Class, Sedan Wheel Kinematics` CS D-Class` , Rack to front wheels ENTER_PARSFILE Steering\Str_FBoost\FBoost102.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` #RingCtrl0 CARPET #RadioCtrl0 1 TC_BOOST 0.08 F_BOOST_MAX 2500 *3D_XLabel Vehicle speed (kph) *3D_YLabel Torsion bar torque (N-m) *3D_ZLabel Power assist force (N) #DiagramTwo0 *3D_DATA 6, 63 ! columns x rows F_BOOST_R_CARPET 0, 0, 20, 50, 80, 120, 200 -16, -2500, -2500, -2500, -2500, -2500, -2500 -15, -2500, -2500, -2500, -2500, -2500, -2500 -14.5, -2500, -2500, -2500, -2500, -2500, -2500 -14, -2500, -2500, -2500, -2500, -2500, -2500 -13.5, -2500, -2500, -2500, -2500, -2500, -2500 -13, -2500, -2500, -2500, -2500, -2500, -2500 -12.5, -2500, -2500, -2500, -2500, -2500, -2500 -12, -2500, -2500, -2500, -2500, -2500, -2500 -11.5, -2500, -2500, -2500, -2500, -2266.8, -2141.32 -11, -2500, -2420, -2427.94, -2280.85, -1736.13, -1500.51 -10.5, -2500, -2205, -2063.12, -1815.93, -1313.29, -1034.22 -10, -2500, -2000, -1739.25, -1429.79, -980, -700 -9.5, -2500, -1805, -1453.43, -1112.03, -720.39, -464.39 -9, -2500, -1620, -1202.85, -853.22, -520.81, -301.33 -8.5, -2500, -1445, -984.76, -644.8, -369.61, -190.74 -8, -2500, -1280, -796.49, -479.09, -256.9, -117.44 -7.5, -2500, -1125, -635.44, -349.2, -174.42, -70.08 -7, -2500, -980, -499.12, -249.03, -115.3, -40.35 -6.5, -2500, -845, -385.09, -173.2, -73.91, -22.31 -6, -2500, -720, -291, -117.01, -45.72, -11.76 -5.5, -2500, -605, -214.6, -76.39, -27.13, -5.86 -5, -2500, -500, -153.73, -47.89, -15.31, -2.73 -4.5, -2278.13, -405, -106.32, -28.58, -8.14, -1.18 -4, -1600, -320, -70.4, -16.05, -4.01, -0.46 -3.5, -1071.88, -245, -44.12, -8.34, -1.8, -0.16 -3, -675, -180, -25.72, -3.92, -0.71, -0.05 -2.5, -390.63, -125, -13.59, -1.6, -0.24, -0.01 -2, -200, -80, -6.22, -0.54, -0.06, 0 -1.5, -84.38, -45, -2.27, -0.13, -0.01, 0 -1, -25, -20, -0.55, -0.02, 0, 0 -0.5, -3.13, -5, -0.05, 0, 0, 0 0, 0, 0, 0, 0, 0, 0 0.5, 3.13, 5, 0.05, 0, 0, 0 1, 25, 20, 0.55, 0.02, 0, 0 1.5, 84.38, 45, 2.27, 0.13, 0.01, 0 2, 200, 80, 6.22, 0.54, 0.06, 0 2.5, 390.63, 125, 13.59, 1.6, 0.24, 0.01 3, 675, 180, 25.72, 3.92, 0.71, 0.05 3.5, 1071.88, 245, 44.12, 8.34, 1.8, 0.16 4, 1600, 320, 70.4, 16.05, 4.01, 0.46 4.5, 2278.13, 405, 106.32, 28.58, 8.14, 1.18 5, 2500, 500, 153.73, 47.89, 15.31, 2.73 5.5, 2500, 605, 214.6, 76.39, 27.13, 5.86 6, 2500, 720, 291, 117.01, 45.72, 11.76 6.5, 2500, 845, 385.09, 173.2, 73.91, 22.31 7, 2500, 980, 499.12, 249.03, 115.3, 40.35 7.5, 2500, 1125, 635.44, 349.2, 174.42, 70.08 8, 2500, 1280, 796.49, 479.09, 256.9, 117.44 8.5, 2500, 1445, 984.76, 644.8, 369.61, 190.74 9, 2500, 1620, 1202.85, 853.22, 520.81, 301.33 9.5, 2500, 1805, 1453.43, 1112.03, 720.39, 464.39 10, 2500, 2000, 1739.25, 1429.79, 980, 700 10.5, 2500, 2205, 2063.12, 1815.93, 1313.29, 1034.22 11, 2500, 2420, 2427.94, 2280.85, 1736.13, 1500.51 11.5, 2500, 2500, 2500, 2500, 2266.8, 2141.32 12, 2500, 2500, 2500, 2500, 2500, 2500 12.5, 2500, 2500, 2500, 2500, 2500, 2500 13, 2500, 2500, 2500, 2500, 2500, 2500 13.5, 2500, 2500, 2500, 2500, 2500, 2500 14, 2500, 2500, 2500, 2500, 2500, 2500 14.5, 2500, 2500, 2500, 2500, 2500, 2500 15, 2500, 2500, 2500, 2500, 2500, 2500 16, 2500, 2500, 2500, 2500, 2500, 2500 ENDTABLE LOG_ENTRY Used Dataset: Steering: Power Assist Force; Symetrical, Speed Sensitive High Boost Curve #Library : Steering: Power Assist Force #DataSet : Symetrical, Speed Sensitive High Boost Curve #Category: #FileID : FBoost102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist force EXIT_PARSFILE Steering\Str_FBoost\FBoost102.par #BlueLink19 Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` ` , Front boost force ENTER_PARSFILE Steering\Compliance\StrCmp102.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`0.001 deg/N-m` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 0.001 STEER_COMP_COEFFICIENT 0.001 LOG_ENTRY Used Dataset: Steering System: Compliance; 0.001 deg/N-m #Library : Steering System: Compliance #DataSet : 0.001 deg/N-m #Category: #FileID : StrCmp102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp102.par #BlueLink13 Steering System: Compliance`0.001 deg/N-m` ` , Front compliance ENTER_PARSFILE Steering\Str_Park_Trq2\TqPkAx102.par`08-02-2011`16:42:40 #FullDataName Steering: Parking Torque for 2 Wheels`Example Parking Torque for 2 Wheels` #RingCtrl0 CARPET #RingCtrl1 CARPET #RadioCtrl0 0 #RadioCtrl1 0 *A_MZ_BETA_R 5 *A_MZ_BETA_L 5 *SCALAR2 0 iside 2 A_MZ_BETA 5 *3D_XLabel Vertical load (N) *3D_YLabel Vehicle speed (km/h) *3D_ZLabel Parking torque at R kingpin (N-m) #DiagramTwo0 *3D_DATA 2, 3 ! columns x rows MZ_PARKING_STEER_CARPET 0, 1000, 5000 0, 300, 400 10, 0, 0 12, 0, 0 ENDTABLE iside 1 A_MZ_BETA 5 *3D_XLabel Vertical load (N) *3D_YLabel Vehicle speed (km/h) *3D_ZLabel Parking torque at L kingpin (N-m) #DiagramTwo1 *3D_DATA 2, 3 ! columns x rows MZ_PARKING_STEER_CARPET 0, 1000, 5000 0, 300, 400 10, 0, 0 12, 0, 0 ENDTABLE LOG_ENTRY Used Dataset: Steering: Parking Torque for 2 Wheels; Example Parking Torque for 2 Wheels #Library : Steering: Parking Torque for 2 Wheels #DataSet : Example Parking Torque for 2 Wheels #Category: #FileID : TqPkAx102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Parking Torque EXIT_PARSFILE Steering\Str_Park_Trq2\TqPkAx102.par #BlueLink15 Steering: Parking Torque for 2 Wheels`Example Parking Torque for 2 Wheels` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS D-Class } D-Class, Sedan: Power, R&P w/ Parking Tq. #Library : Steering #DataSet : D-Class, Sedan: Power, R&P w/ Parking Tq. #Category: CS D-Class #FileID : StrSys2103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2103_note.txt Steering for a vehicle with Wheelbase = 2780 mm Front Track = 1550 mm This dataset uses an example of parking torque, which is speed and load sensitive. EXIT_NOTEFILE Steering\System2\StrSys2103_note.txt EXIT_PARSFILE Steering\System2\StrSys2103.par #BlueLink7 Steering`D-Class, Sedan: Power, R&P w/ Parking Tq.` CS D-Class` , Steering system *IMAGE_LINK Animator: Vehicles and Sensor Targets`D-Class, Sedan` D-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS D-Class } D-Class, Sedan LEO #Library : Vehicle: Assembly #DataSet : D-Class, Sedan LEO #Category: CS D-Class #FileID : Vehicle166 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-28-2019 15:41:14 #VehCode Ind_Ind EXIT_PARSFILE Vehicles\Assembly\Vehicle166.par #BlueLink2 Vehicle: Assembly`D-Class, Sedan LEO` CS D-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc168.par`08-28-2019`16:44:53 #FullDataName Procedures`chapt2_KinematicModel_Validate Procedure`BOOK_MPC_Procedures #CheckBox0 1 OPT_INIT_CONFIG 1 #CheckBox1 1 OPT_INIT_ROAD 1 #CheckBox2 1 OPT_INIT_SPEED 1 #CheckBox3 1 #RingCtrl0 2 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 *SPEED 95 TSTOP 50 TSTART 0 SSTART 0 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 1 OPT_DIRECTION 1 Opt_SC 2 ENTER_PARSFILE Control\Steer\Steer115.par`08-28-2019`17:06:58 #FullDataName Control: Steering (Open Loop)`Leo self-defined SteeringProfile 1`BOOK_MPC_SteeringProfile OPT_DRIVER_MODEL 0 OPT_STEER 0 #RingCtrl0 LINEAR #DiagramOne0 STEER_SW_TABLE LINEAR 0, 0 1.24, 12.958 1.55, 16.492 1.86, 20.14 2.17, 23.56 2.47, 27.17 2.78, 30.59 3.09, 33.82 3.4, 37.05 3.71, 40.28 4.02, 43.32 4.33, 46.17 4.64, 48.83 4.95, 51.49 5.26, 53.96 5.57, 56.05 5.88, 58.14 6.19, 60.04 6.5, 61.75 6.81, 63.08 7.12, 64.22 7.42, 65.17 7.73, 65.74 8.04, 66.31 8.35, 66.31 8.66, 66.31 8.97, 65.93 9.28, 65.36 9.59, 64.41 9.9, 63.27 10.2, 61.94 10.5, 60.23 10.8, 58.33 11.1, 56.05 11.4, 53.58 11.8, 50.92 12.1, 48.07 12.4, 44.84 12.7, 41.42 13, 38 13.3, 34.39 13.6, 30.21 13.9, 26.03 14.2, 21.85 14.5, 17.404 14.8, 12.844 15.2, 8.246 15.5, 3.534 15.8, -1.3186 16.1, -6.137 16.4, -10.982 16.7, -15.827 17, -20.71 17.3, -25.65 17.6, -30.4 17.9, -35.34 18.3, -40.09 18.6, -44.65 18.9, -49.4 19.2, -53.77 19.5, -57.95 19.8, -61.94 20.1, -65.93 20.4, -69.54 20.7, -73.15 21, -76.38 21.3, -79.23 21.7, -82.08 22, -84.36 22.3, -86.45 22.6, -88.35 22.9, -89.68 23.2, -90.82 23.5, -91.58 23.8, -92.15 24.1, -92.34 24.4, -91.96 24.7, -91.39 25.1, -90.44 25.4, -89.11 25.7, -87.4 26, -85.31 26.3, -82.84 26.6, -80.18 26.9, -76.95 27.2, -73.53 27.5, -69.73 27.8, -65.55 28.2, -61.18 28.5, -56.43 28.8, -51.49 29.1, -46.17 29.4, -40.85 29.7, -35.15 30, -29.07 30.3, -22.99 30.6, -16.758 30.9, -10.488 31.2, -4.066 31.6, 2.584 31.9, 9.386 32.2, 15.922 32.5, 22.8 32.8, 29.45 33.1, 36.29 33.4, 42.75 33.7, 49.59 34, 55.86 34.3, 62.13 34.6, 68.4 35, 74.29 35.3, 79.99 35.6, 85.5 35.9, 90.63 36.2, 95.57 36.5, 100.13 36.8, 104.5 37.1, 108.3 37.4, 111.91 37.7, 115.14 38.1, 117.8 38.4, 120.08 38.7, 121.98 39, 123.31 39.3, 124.26 39.6, 124.64 39.9, 124.64 40.2, 124.07 40.5, 123.12 40.8, 121.41 41.1, 119.32 41.5, 116.85 41.8, 113.81 42.1, 110.39 42.4, 106.4 42.7, 102.03 43, 97.09 43.3, 91.58 43.6, 85.88 43.9, 79.61 44.2, 73.15 44.5, 66.12 44.9, 58.71 45.2, 51.11 45.5, 43.13 45.8, 34.96 46.1, 26.41 46.4, 17.708 46.7, 8.968 47, -0.076 47.3, -8.949 47.6, -18.107 48, -27.36 48.3, -36.48 48.6, -45.98 48.9, -55.1 49.2, -64.22 49.5, -73.15 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Control: Steering (Open Loop); { BOOK_MPC_SteeringProfile } Leo self-defined SteeringProfile 1 #Library : Control: Steering (Open Loop) #DataSet : Leo self-defined SteeringProfile 1 #Category: BOOK_MPC_SteeringProfile #FileID : Steer115 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-28-2019 17:06:58 #VehCode Open-loop steer control EXIT_PARSFILE Control\Steer\Steer115.par #BlueLink27 Control: Steering (Open Loop)`Leo self-defined SteeringProfile 1` BOOK_MPC_SteeringProfile` , Steering ENTER_PARSFILE Control\Braking\ConBrk101.par`08-02-2011`16:43:32 #FullDataName Control: Braking (Open Loop)`No Open-Loop Braking Pressure` #RingCtrl0 CONSTANT #RadioCtrl0 0 OPT_VMIN -1 *SCALAR 0 PBK_CON_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Braking (Open Loop); No Open-Loop Braking Pressure #Library : Control: Braking (Open Loop) #DataSet : No Open-Loop Braking Pressure #Category: #FileID : ConBrk101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:32 #VehCode Brake control EXIT_PARSFILE Control\Braking\ConBrk101.par #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Gear_at\GearAT101.par`08-02-2011`16:43:31 #FullDataName Control: Shifting (Closed Loop)`AT All Gears` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR NGEARS MODE_TRANS_CONSTANT NGEARS LOG_ENTRY Used Dataset: Control: Shifting (Closed Loop); AT All Gears #Library : Control: Shifting (Closed Loop) #DataSet : AT All Gears #Category: #FileID : GearAT101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:31 #VehCode Closed-loop shift control ENTRY_NOTEFILE Control\Gear_at\GearAT101_note.txt NGEARS is the internal symbol for the number of gears in a transmission. By setting the Mode to NGEARS, CarSim is automatically told to use all of the transmission gears. EXIT_NOTEFILE Control\Gear_at\GearAT101_note.txt EXIT_PARSFILE Control\Gear_at\GearAT101.par #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control ENTER_PARSFILE Control\Speed_t\SpdTime108.par`08-28-2019`21:10:42 #FullDataName Control: Speed (Closed Loop) vs. Time`Leo self-defined speed profile 1`BOOK_MPC_SpeedProfile OPT_SC 2 #RingCtrl0 LINEAR #RadioCtrl0 0 SPEED_KI 0.157 SPEED_KP 0.141 OPT_VMIN -1 #CheckBox0 0 OPT_BK_SC 0 #CheckBox1 0 OPT_SC_ENGINE_BRAKING 0 #DiagramOne0 SPEED_TIME_TABLE LINEAR 0, 10.8 1.14, 11.808 1.45, 12.06 1.77, 12.312 2.08, 12.564 2.39, 12.816 2.7, 13.032 3.01, 13.284 3.32, 13.5 3.63, 13.716 3.94, 13.932 4.25, 14.112 4.57, 14.328 4.88, 14.508 5.19, 14.688 5.5, 14.832 5.81, 14.976 6.12, 15.12 6.43, 15.228 6.74, 15.336 7.05, 15.408 7.36, 15.516 7.67, 15.552 7.98, 15.624 8.29, 15.66 8.6, 15.66 8.91, 15.66 9.22, 15.66 9.53, 15.624 9.84, 15.588 10.2, 15.552 10.5, 15.48 10.8, 15.408 11.1, 15.3 11.4, 15.192 11.7, 15.048 12, 14.904 12.3, 14.796 12.6, 14.616 12.9, 14.436 13.2, 14.292 13.6, 14.076 13.9, 13.896 14.2, 13.716 14.5, 13.5 14.8, 13.284 15.1, 13.068 15.4, 12.852 15.7, 12.636 16, 12.384 16.3, 12.168 16.6, 11.952 17, 11.736 17.3, 11.52 17.6, 11.304 17.9, 11.088 18.2, 10.872 18.5, 10.692 18.8, 10.512 19.1, 10.332 19.4, 10.152 19.7, 9.972 20, 9.828 20.4, 9.72 20.7, 9.576 21, 9.468 21.3, 9.36 21.6, 9.288 21.9, 9.216 22.2, 9.18 22.5, 9.144 22.8, 9.108 23.1, 9.108 23.5, 9.108 23.8, 9.144 24.1, 9.216 24.4, 9.288 24.7, 9.36 25, 9.468 25.3, 9.576 25.6, 9.72 25.9, 9.864 26.3, 10.044 26.6, 10.26 26.9, 10.44 27.2, 10.656 27.5, 10.908 27.8, 11.16 28.1, 11.412 28.4, 11.7 28.7, 11.988 29.1, 12.276 29.4, 12.6 29.7, 12.924 30, 13.248 30.3, 13.572 30.6, 13.932 30.9, 14.256 31.2, 14.616 31.5, 14.94 31.9, 15.3 32.2, 15.66 32.5, 16.02 32.8, 16.344 33.1, 16.704 33.4, 17.028 33.7, 17.388 34, 17.712 34.3, 18.036 34.7, 18.324 35, 18.648 35.3, 18.936 35.6, 19.224 35.9, 19.476 36.2, 19.728 36.5, 19.944 36.8, 20.196 37.1, 20.376 37.5, 20.556 37.8, 20.736 38.1, 20.88 38.4, 21.024 38.7, 21.132 39, 21.24 39.3, 21.276 39.6, 21.348 39.9, 21.384 40.3, 21.384 40.6, 21.384 40.9, 21.348 41.2, 21.312 41.5, 21.24 41.8, 21.132 42.1, 21.024 42.4, 20.88 42.7, 20.736 43, 20.592 43.4, 20.412 43.7, 20.196 44, 20.016 44.3, 19.764 44.6, 19.548 44.9, 19.296 45.2, 19.008 45.5, 18.756 45.8, 18.468 46.1, 18.18 46.4, 17.892 46.8, 17.604 47.1, 17.28 47.4, 16.992 47.7, 16.668 48, 16.38 48.3, 16.056 48.6, 15.768 48.9, 15.48 49.2, 15.192 49.5, 14.904 49.8, 14.652 ENDTABLE LOG_ENTRY Used Dataset: Control: Speed (Closed Loop) vs. Time; { BOOK_MPC_SpeedProfile } Leo self-defined speed profile 1 #Library : Control: Speed (Closed Loop) vs. Time #DataSet : Leo self-defined speed profile 1 #Category: BOOK_MPC_SpeedProfile #FileID : SpdTime108 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-28-2019 21:10:42 #VehCode Speed vs. time EXIT_PARSFILE Control\Speed_t\SpdTime108.par #BlueLink31 Control: Speed (Closed Loop) vs. Time`Leo self-defined speed profile 1` BOOK_MPC_SpeedProfile` , Speed vs. time #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow ENTER_PARSFILE Roads\3D_Road\Road109.par`08-02-2011`16:43:16 #FullDataName Road: 3D Surface (All Properties)`1 km Square (Mu = 1.0)`3D Grid OPT_ROAD 1 iroad 1 ! obsolete March 2011 idz_road 1 RR_SURF 1 DZ_SHADOW 0.02 L_CAMERA_FRONT 0.5 L_CAMERA_REAR 0.5 ENTER_PARSFILE Roads\Center_XY\RoadXY101.par`08-02-2011`16:43:06 #FullDataName Road: X-Y Coordinates of Centerline`Straight` SPATH 0 #CheckBox0 0 OPT_ROAD_LOOP 0 #RadioCtrl0 0 OPT_ROAD 1 #DiagramOne0 YIN_TABLE 0, 0, 0 100, 0, 100 ENDTABLE LOG_ENTRY Used Dataset: Road: X-Y Coordinates of Centerline; Straight #Library : Road: X-Y Coordinates of Centerline #DataSet : Straight #Category: #FileID : RoadXY101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:06 #VehCode Horizontal (X-Y) table EXIT_PARSFILE Roads\Center_XY\RoadXY101.par #BlueLink0 Road: X-Y Coordinates of Centerline`Straight` ` , Centerline geometry ENTER_PARSFILE Roads\Center_Z\RoadZ101.par`08-02-2011`16:43:13 #FullDataName Road: Centerline Elevation`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_ZS_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Centerline Elevation; Flat #Library : Road: Centerline Elevation #DataSet : Flat #Category: #FileID : RoadZ101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Centerline elevation: Z vs S EXIT_PARSFILE Roads\Center_Z\RoadZ101.par #BlueLink1 Road: Centerline Elevation`Flat` ` , Centerline elevation ENTER_PARSFILE Roads\dZ_Map\RdElMap101.par`08-02-2011`16:43:11 #FullDataName Road: Off-Center Elevation Map, S-L Grid`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_DZ_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Off-Center Elevation Map, S-L Grid; Flat #Library : Road: Off-Center Elevation Map, S-L Grid #DataSet : Flat #Category: #FileID : RdElMap101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:11 #VehCode dZ via S-L grid EXIT_PARSFILE Roads\dZ_Map\RdElMap101.par #BlueLink2 Road: Off-Center Elevation Map, S-L Grid`Flat` ` , Off-center elevation 1 ENTER_PARSFILE Roads\Friction\RdFric103.par`08-02-2011`16:43:12 #FullDataName Road: Friction Map, S-L Grid`1.0`Constant Mu OPT_ROAD 1 #RingCtrl0 CONSTANT MU_ROAD_CONSTANT 1 #RadioCtrl0 0 *SCALAR 1 LOG_ENTRY Used Dataset: Road: Friction Map, S-L Grid; { Constant Mu } 1.0 #Library : Road: Friction Map, S-L Grid #DataSet : 1.0 #Category: Constant Mu #FileID : RdFric103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:12 #VehCode Mu via S-L grid EXIT_PARSFILE Roads\Friction\RdFric103.par #BlueLink3 Road: Friction Map, S-L Grid`1.0` Constant Mu` , Friction ENTER_PARSFILE Roads\Shapes\RdShp109.par`08-02-2011`16:43:13 #FullDataName Road: Animator Surface Shapes`1 km Square Checkerboard`3D Grid NLANES 4 #MiscYellow0 # 0.9 0.9 0.9, Pavement, 0.15, 10, 100, -500, m, 500, m, 99, 2, -500, 500, 10, 2, 0, # 0.9 0.9 0.9, Pavement, 0.15, 10, 99, -500, m, 490, m, 98, 2, -490, 500, 10, 2, 0, # 0.9 0.9 0.9, Slate (White), 0.10, 10, 99, -490, m, 500, m, 98, 2, -490, 500, 10, 2, 0, # 0.9 0.9 0.9, Slate (White), 0.10, 10, 99, -500, m, 490, m, 98, 2, -500, 500, 10, 2, 0, #ENDMYellow #CheckBox0 0 MIRROR 0 COLOR(1) 0.9 0.9 0.9 MATERIAL(1) Pavement SPECULAR(1) 0.15 SCALE(1) 10 LTILES(1) 100 LIN(1) -500 LINUNITS(1) m LOUT(1) 500 LOUTUNITS(1) m LDIV(1) 99 LIPRINT(1) 2 SSTART(1) -500 SSTOP(1) 500 SINT(1) 10 IPRINT(1) 2 DZ(1) 0 COLOR(2) 0.9 0.9 0.9 MATERIAL(2) Pavement SPECULAR(2) 0.15 SCALE(2) 10 LTILES(2) 99 LIN(2) -500 LINUNITS(2) m LOUT(2) 490 LOUTUNITS(2) m LDIV(2) 98 LIPRINT(2) 2 SSTART(2) -490 SSTOP(2) 500 SINT(2) 10 IPRINT(2) 2 DZ(2) 0 COLOR(3) 0.9 0.9 0.9 MATERIAL(3) Slate (White) SPECULAR(3) 0.10 SCALE(3) 10 LTILES(3) 99 LIN(3) -490 LINUNITS(3) m LOUT(3) 500 LOUTUNITS(3) m LDIV(3) 98 LIPRINT(3) 2 SSTART(3) -490 SSTOP(3) 500 SINT(3) 10 IPRINT(3) 2 DZ(3) 0 COLOR(4) 0.9 0.9 0.9 MATERIAL(4) Slate (White) SPECULAR(4) 0.10 SCALE(4) 10 LTILES(4) 99 LIN(4) -500 LINUNITS(4) m LOUT(4) 490 LOUTUNITS(4) m LDIV(4) 98 LIPRINT(4) 2 SSTART(4) -500 SSTOP(4) 500 SINT(4) 10 IPRINT(4) 2 DZ(4) 0 MTL_FILE Roads\materials\road.mtl LOG_ENTRY Used Dataset: Road: Animator Surface Shapes; { 3D Grid } 1 km Square Checkerboard #Library : Road: Animator Surface Shapes #DataSet : 1 km Square Checkerboard #Category: 3D Grid #FileID : RdShp109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Road shapes EXIT_PARSFILE Roads\Shapes\RdShp109.par #BlueLink4 Road: Animator Surface Shapes`1 km Square Checkerboard` 3D Grid` , Road shape definitions add_reference_frame road_stuff_1 reference_frame_ghosts off ENTER_PARSFILE Animator\Groups\Group101.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Partly Cloudy Sky`Skies ENTER_PARSFILE Animator\Frames\Frame104.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Front Point w/o Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Front Point w/o Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camF SET_Y_NAME Y_camF SET_Z_NAME Z_camF WRT_X_camF ANI_X_camF WRT_Y_camF ANI_Y_camF WRT_Z_camF ANI_Z_camF LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Front Point w/o Yaw #Library : Animator: Reference Frame #DataSet : Camera Front Point w/o Yaw #Category: Road Tracking #FileID : Frame104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame104.par #BlueLink0 Animator: Reference Frame`Camera Front Point w/o Yaw` Road Tracking` , Animator data ENTER_PARSFILE Animator\STL\AniSTL115.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Partly Cloudy Sky`Skies #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\Slightly_Cloudy_Sky\sky_road_course.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0 SMOOTH_MAX_ANGLE 30 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 1 set_fogging off #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Skies } Partly Cloudy Sky #Library : Animator: Shape File Link #DataSet : Partly Cloudy Sky #Category: Skies #FileID : AniSTL115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL115.par #BlueLink1 Animator: Shape File Link`Partly Cloudy Sky` Skies` , Animator data ENTER_PARSFILE Animator\STL\AniSTL116.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Complex Land Bowl for Light Grass`Terrain #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\landbowls\complex_land_for_light_grass.obj #ENDMYellow SET_COLOR .8 .8 .8 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 1 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Terrain } Complex Land Bowl for Light Grass #Library : Animator: Shape File Link #DataSet : Complex Land Bowl for Light Grass #Category: Terrain #FileID : AniSTL116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL116.par #BlueLink2 Animator: Shape File Link`Complex Land Bowl for Light Grass` Terrain` , Animator data #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { Skies } Partly Cloudy Sky #Library : Animator: Group #DataSet : Partly Cloudy Sky #Category: Skies #FileID : Group101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group EXIT_PARSFILE Animator\Groups\Group101.par #BlueLink6 Animator: Group`Partly Cloudy Sky` Skies` , Misc. animator set add_reference_frame road_stuff_2 reference_frame_ghosts off add_reference_frame road_stuff_3 reference_frame_ghosts off add_reference_frame road_stuff_4 reference_frame_ghosts off iroad 2 ! obsolete March 2011 idz_road 2 ENTER_PARSFILE Animator\Cameras\Camera105.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 1 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw ENTER_PARSFILE Animator\Frames\Frame105.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Rear Point w/ Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Rear Point w/ Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camR SET_Y_NAME Y_camR SET_Z_NAME Z_camR SET_YAW_NAME Yaw_CamR WRT_X_camR ANI_X_camR WRT_Y_camR ANI_Y_camR WRT_Z_camR ANI_Z_camR WRT_Yaw_CamR ANI_Yaw_CamR LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Rear Point w/ Yaw #Library : Animator: Reference Frame #DataSet : Camera Rear Point w/ Yaw #Category: Road Tracking #FileID : Frame105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame105.par #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 5 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 5 SET_DISTANCE 49 *SET_LOOKPOINT_X 5 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 5 *SET_DISTANCE 49 GHOST_COUNT 0 *LIGHT_X -1000 *LIGHT_Y -1000 *LIGHT_Z 10000 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 30 SUN_POSITION -1000 -1000 10000 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } Rear View , Road Ref. (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View , Road Ref. (Frt. Facing) #Category: Road Reference #FileID : Camera105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera105.par #BlueLink5 Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)` Road Reference` , Camera ENTER_PARSFILE Roads\3D_Road\Road109.ani`02-12-2009`07:50:48 add_reference_frame The Road reference_frame_ghosts off add_obj Roads\3D_Road\Road109_1.obj set_color 0.9 0.9 0.9 show_front on show_back off compute_normals on set_specular 0.15 0.15 0.15 add_obj Roads\3D_Road\Road109_2.obj set_color 0.9 0.9 0.9 show_front on show_back off compute_normals on set_specular 0.15 0.15 0.15 add_obj Roads\3D_Road\Road109_3.obj set_color 0.9 0.9 0.9 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road109_4.obj set_color 0.9 0.9 0.9 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 EXIT_PARSFILE Roads\3D_Road\Road109.ani LOG_ENTRY Used Dataset: Road: 3D Surface (All Properties); { 3D Grid } 1 km Square (Mu = 1.0) #Library : Road: 3D Surface (All Properties) #DataSet : 1 km Square (Mu = 1.0) #Category: 3D Grid #FileID : Road109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:16 #VehCode 3D road EXIT_PARSFILE Roads\3D_Road\Road109.par #BlueLink0 Road: 3D Surface (All Properties)`1 km Square (Mu = 1.0)` 3D Grid` , Misc. ENTER_PARSFILE Plot\Setup\Plot109.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Longitudinal Speed`Vehicle Motion ENTER_PARSFILE Plot\Transform\PlotTfm101.par`08-02-2011`16:43:01 #FullDataName Plot: Data Transform`No Filter` #RingCtrl0 None FILTER None LOG_ENTRY Used Dataset: Plot: Data Transform; No Filter #Library : Plot: Data Transform #DataSet : No Filter #Category: #FileID : PlotTfm101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:01 #VehCode Plot data transform EXIT_PARSFILE Plot\Transform\PlotTfm101.par #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) ENTER_PARSFILE Plot\Format\PlotFmt101.par`08-02-2011`16:43:00 #FullDataName Plot: Format`Default Plot Settings` #RingCtrl0 Axes AXES Axes #RingCtrl1 Noframe FRAME Noframe #RingCtrl2 NoGrid GRID NoGrid #RingCtrl3 FileTitle LEGENDFILE FileTitle #RingCtrl4 RigidBodyName LEGENDDATA_1 RigidBodyName #RingCtrl5 AutoLocation LEGENDLOCATION AutoLocation #RingCtrl6 Regular TITLEFONTSTYLE Regular #RingCtrl7 Regular LEGENDFONTSTYLE Regular #RingCtrl8 Regular LABELFONTSTYLE Regular #RingCtrl9 Regular TICLABELFONTSTYLE Regular #RingCtrl10 0 TITLELOCATION 0 LEGENDPERCENT 40 TITLEFONTSIZE 14 LEGENDFONTSIZE 12 LABELFONTSIZE 14 TICLABELFONTSIZE 12 TITLEFONTNAME Arial LEGENDFONTNAME Arial LABELFONTNAME Arial TICLABELFONTNAME Arial SYMBOLS 10,1,2,3,4,5,6,7,8,9,10,4,1,2,3,4,5,6,7,8 LINESTYL 1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1 COLORS 8,2,3,7,4,0,6,14,8,9,10,11,12,13,14,6,1,2,0,4 LOG_ENTRY Used Dataset: Plot: Format; Default Plot Settings #Library : Plot: Format #DataSet : Default Plot Settings #Category: #FileID : PlotFmt101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot format EXIT_PARSFILE Plot\Format\PlotFmt101.par #MiscYellow0 PLOTCHANNELS Vx, Time PLOTCHANNELS VxTarget, Time PLOTCHANNELS Vx_2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Longitudinal Speed LOG_ENTRY Used Dataset: Plot: Setup; { Vehicle Motion } Longitudinal Speed #Library : Plot: Setup #DataSet : Longitudinal Speed #Category: Vehicle Motion #FileID : Plot109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot109.par #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot ENTER_PARSFILE Plot\Setup\Plot118.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Throttle: Control Input`Controls: Driver #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Throttle, Time PLOTCHANNELS Thr_Eng, Time #ENDMYellow YAXISLABEL Throttle - #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Throttle: Control Input LOG_ENTRY Used Dataset: Plot: Setup; { Controls: Driver } Throttle: Control Input #Library : Plot: Setup #DataSet : Throttle: Control Input #Category: Controls: Driver #FileID : Plot118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup ENTRY_NOTEFILE Plot\Setup\Plot118_note.txt The variable "Throttle" is the sum of any throttle control calculated by the CarSim closed loop speed controller and any specified open-loop throttle. The source of open-loop throttle command may be from internal tables, VS commmands, or external sources like Simulink or the API. By using the sum of these 2 command sources you can implement things like driver aids for active safety that augment actions taken by the driver. When switching between open loop and closed loop control, take care that no unintended open loop control is "left over" by supplying a data set that sets the open loop component to zero. The variable "Thr_Eng" is the value of "Throttle", optionally modified by the application of a time constant to simulate the transient delay in changes in engine torque. EXIT_NOTEFILE Plot\Setup\Plot118_note.txt EXIT_PARSFILE Plot\Setup\Plot118.par #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot ENTER_PARSFILE Plot\Setup\Plot203.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Wheel Cylinder Pressures`Braking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS PbkCh_L1, Time PLOTCHANNELS PbkCh_R1, Time PLOTCHANNELS PbkCh_L2, Time PLOTCHANNELS PbkCh_R2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Wheel Cylinder Pressures LOG_ENTRY Used Dataset: Plot: Setup; { Braking } Wheel Cylinder Pressures #Library : Plot: Setup #DataSet : Wheel Cylinder Pressures #Category: Braking #FileID : Plot203 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot203.par #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot ENTER_PARSFILE Plot\Setup\Plot141.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Y vs. X -- Trajectory`Tracking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Yo, Xo PLOTCHANNELS Y_Design, X_Design PLOTCHANNELS Y_Target, X_Target PLOTCHANNELS Yo_2, Xo_2 #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Y vs. X -- Trajectory LOG_ENTRY Used Dataset: Plot: Setup; { Tracking } Y vs. X -- Trajectory #Library : Plot: Setup #DataSet : Y vs. X -- Trajectory #Category: Tracking #FileID : Plot141 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot141.par #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } chapt2_KinematicModel_Validate Procedure #Library : Procedures #DataSet : chapt2_KinematicModel_Validate Procedure #Category: BOOK_MPC_Procedures #FileID : Proc168 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-28-2019 16:44:53 #VehCode Procedure EXIT_PARSFILE Procedures\Proc168.par #BlueLink28 Procedures`chapt2_KinematicModel_Validate Procedure` BOOK_MPC_Procedures` , Procedure *IMAGE_LINK Animator: Vehicles and Sensor Targets`D-Class, Sedan` D-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter2_KinematicModel_Validation CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter2_KinematicModel_Validation LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter2_KinematicModel_Validation #Library : CarSim Run Control #DataSet : Chapter2_KinematicModel_Validation #Category: BOOK_MPC_Examples #FileID : Run278 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-28-2019 16:03:36 #VehCode Run EXIT_PARSFILE Runs\Run278.par END ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/KinematicModel_Validation.mdl ================================================ Model { Name "KinematicModel_Validation" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.103" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "ModelValidation_Pacejka" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [734.0, 356.0, 992.0, 519.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [942.0, 342.0] ZoomFactor [1.2258064516129032] Offset [158.91694480102666, 140.0] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Wed Aug 28 17:26:52 2019" RTWModifiedTimeStamp 488913141 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "KinematicModel_Validation" Array { Type "Cell" Dimension 1 Cell "KinematicModel_Validation" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "50" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "KinematicModel_Validation" Location [734, 356, 1726, 875] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "123" ReportName "simulink-default.rpt" SIDHighWatermark "96" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [0, 1] Position [240, 154, 340, 216] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i" SIMFILE "LEO_KinematicModel_Validation.sim" } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [375, 152, 630, 218] ZOrder 12 FunctionName "Main_KinematicModel_Validation" EnableBusSupport off } Block { BlockType ToWorkspace Name "To Workspace1" SID "95" Ports [1] Position [665, 170, 725, 200] ZOrder 11 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 17 SrcBlock "S-Function" SrcPort 1 DstBlock "To Workspace1" DstPort 1 } Line { ZOrder 18 SrcBlock "CarSim S-Function" SrcPort 1 DstBlock "S-Function" DstPort 1 } } } ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/Main_KinematicModel_Validation.m ================================================ function [sys,x0,str,ts] =Main_KinematicModel_Validation(t,x,u,flag) %***************************************************************% % 2.1ij˶ģ͵ķ֤ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % end % end sfuntmpl %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes %***************************************************************% % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. %***************************************************************% sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 5; %ģɢ״̬ĸ,ʵϱapp ûõֵֻʾɢģ sizes.NumOutputs = 10; %S sizes.NumInputs = 10; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms global InitialGapflag; InitialGapflag = 0; % Ignore the first few inputs from CarSim global Previous_States; % store the previous state vector Previous_States.X_pred = 0.0; Previous_States.Y_pred = 0.0; Previous_States.Yaw_pred = 0.0; % RLS initialization [y, c] = func_SteerRatio_Estimation_RLS('initial', 0.95, 1, 10); [y, e] = func_SteerRatio_Estimation_RLS_array('initial', 0.95, 10, 10); % End of mdlInitializeSizes %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== function sys = mdlUpdates(t,x,u) % Ŀǰûọ̃ںڵijģ黯ʱԼܡ sys = x; % end %End of mdlUpdate. %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== function sys = mdlOutputs(t,x,u) %tDzʱ, x״̬, u(simulinkģ) global InitialGapflag; global Previous_States; lfr = 2.78; Ts = 0.05; Steer_ratio = 1; % ȡCarSim뵽Simulink x_L2 = u(1); %x x_R2 = u(2); %Һx y_L2 = u(3); %y y_R2 = u(4); %Һy Yaw = u(5)*pi/180;%Unitdeg-->rad Steer_SW = u(6); %̽Ƕ Steer_L1 = u(7); %ǰƫ Steer_R1 = u(8); %ǰƫ Vx_L2 = u(9); %ٶȣUnit:km/h Vx_R2 = u(10); %ҺٶȣUnit:km/h Car_X = 0.5*(x_L2 + x_R2);%X꣬Unit:m Car_Y = 0.5*(y_L2 + y_R2);%Y꣬Unit:m Vx_km_h = 0.5*(Vx_L2 + Vx_R2);%Ĵٶ,Unitkm/h Steer_deg = 0.5*(Steer_L1 + Steer_R1);%ЧǰƫǣUnitdeg Vx_m_s = Vx_km_h/3.6;%%Ĵٶ in (m/s),Unitm/s Steer_rad = Steer_deg*pi/180;%Чǰƫin (rad)Unitdegs-->rad; if (InitialGapflag < 3) % Ignore the first few inputs InitialGapflag = InitialGapflag + 1; X_pred = Car_X; Y_pred = Car_Y; Yaw_pred = Yaw; Previous_States.X_pred = Car_X; Previous_States.Y_pred = Car_Y; Previous_States.Yaw_pred = Yaw; else % start control %-----I. Update predicted states using differential equation--------% % Updated_state = func_UpdateState_dsolve_2_7(Previous_States, lfr, Vx_m_s, Steer_rad, Ts); %-----II. Update predicted states using RK4-------% %-----III. Update predicted states using Euler Method------% Updated_state = func_UpdateState_EulerM_2_7(Previous_States, lfr, Vx_m_s, Steer_rad, Ts); X_pred = Updated_state.X_pred; Y_pred = Updated_state.Y_pred; Yaw_pred = Updated_state.Yaw_pred; Previous_States.X_pred = X_pred; Previous_States.Y_pred = Y_pred; Previous_States.Yaw_pred = Yaw_pred; %-----Estimate Steer_ratio-----% % [Steer_SW_hat, Steer_ratio, Rinv_f] = func_SteerRatio_Estimation_RLS(Steer_deg, Steer_SW); % Hat_err = Steer_SW_hat - Steer_SW; [Steer_SW_hat, Steer_ratio_vector] = func_SteerRatio_Estimation_RLS_array(Steer_deg, Steer_SW); Steer_ratio =sum(Steer_ratio_vector); end % End of if (Initialflag < 3) % sys = [Car_X; Car_Y; Yaw; X_pred; Y_pred; Yaw_pred; Vx_m_s; Steer_rad; Steer_SW; Steer_ratio]; % end %End of mdlOutputs. ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/ReadMe ================================================ Kinematic Model Validation ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/SimRes_Plot.m ================================================ close all Num = length(u.signals.values(:,1)); Car_X = u.signals.values(:,1); Car_Y = u.signals.values(:,2); Yaw = u.signals.values(:,3); X_pred = u.signals.values(:,4); Y_pred = u.signals.values(:,5); Yaw_pred = u.signals.values(:,6); Vx_m_s = u.signals.values(:,7); Steer_rad = u.signals.values(:,8); Steer_SW = u.signals.values(:,9); Steer_ratio = u.signals.values(:,10); ratio = mean(Steer_ratio); fprintf('the mean-ratio between Steer_SW and front-wheel-steering is: %f\n', ratio); %% lw=2; figure plot(Car_X, Car_Y,'b',X_pred, Y_pred,'r','Linewidth',lw); legend('CarSim Pos','ModelPredict Pos'); xlabel('X (m)','FontName','Times New Roman','FontSize',14) ylabel('Y(m)','FontName','Times New Roman','FontSize',14,'Rotation',90) title('Pos compare'); axis tight figure plot(1:Num, Yaw,'b',1:Num, Yaw_pred,'r','Linewidth',lw); legend('Yaw','Yaw pred'); xlabel('Data Index','FontName','Times New Roman','FontSize',14) ylabel('Yaw angle (rad)','FontName','Times New Roman','FontSize',14,'Rotation',90) title('Yaw angle predict'); axis tight figure plot(1:Num, Steer_SW, 'b',1:Num, (ratio*180/pi)*Steer_rad,'k', 'Linewidth',lw); grid on legend('Steer SW','Desired steer SW'); xlabel('Data Index','FontName','Times New Roman','FontSize',14) ylabel('Steer_SW angle (deg)','FontName','Times New Roman','FontSize',14,'Rotation',90) title('Steer SW predict'); axis tight ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/func_SteerRatio_Estimation_RLS.m ================================================ function [y, Bout, R_f_out] = func_SteerRatio_Estimation_RLS(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_f, Num_f, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_f: is also called the "forgetting" exponential weight factor % Num_f is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_f F_f B_f lambda_f Num_f Rinv_f %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f, 'initial')) % Initial lambda_f = d; % delta = delta_n; Num_f = FIR_Num; Rinv_f = delta_n*eye(Num_f); F_f = zeros(Num_f,1); Y_f = zeros(1, Num_f); B_f = 18; %zeros(1,1); y = 0; Bout = 0; else % Filtering: for J = Num_f:-1:2 F_f(J) = F_f(J-1); Y_f(J) = Y_f(J-1); end; F_f(1) = f; Y_f(1) = d; % Perform the convolution y= F_f'*B_f; error=Y_f-y;% 1*nd % Kalman gains K = Rinv_f*F_f/(lambda_f + F_f'*Rinv_f*F_f); % Update Rinv_f Rinvn = (Rinv_f - K*F_f'*Rinv_f)/lambda_f; % Update the filter coefficients B_f = B_f + K*error; Rinv_f = Rinvn; Bout = B_f; R_f_out = Rinv_f; end end ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/func_SteerRatio_Estimation_RLS_array.m ================================================ function [y, Bout] = func_SteerRatio_Estimation_RLS_array(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_r, Num_r, delta) % d = lambda_r: is the convergence rate parameter, % also called the "forgetting" exponential weight factor % FIR_Num is the filter length % delta_n are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent F_r B_r lambda_r Num_r Rinv_r %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_r = d; % delta = delta_n; Num_r = FIR_Num; Rinv_r = delta_n*eye(Num_r); F_r = zeros(Num_r,1); B_r = zeros(Num_r,1); y = 0; Bout = 0; else % Filtering: for J = Num_r:-1:2 F_r(J) = F_r(J-1); end; F_r(1) = f; % Perform the convolution y= F_r'*B_r; error=d-y; % Kalman gains K = Rinv_r*F_r/(lambda_r + F_r'*Rinv_r*F_r); % Update Rinv_r Rinvn = (Rinv_r - K*F_r'*Rinv_r)/lambda_r; % Update the filter coefficients B_r = B_r + K*error; Bout = B_r; Rinv_r = Rinvn; end end ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/func_UpdateState_EulerM_2_7.m ================================================ function [Updated_state] = func_UpdateState_EulerM_2_7(Previous_States, lfr, Vx_m_s, u, Ts) % validation of dynamic model (2.26) use dsolve X_init = Previous_States.X_pred; Y_init = Previous_States.Y_pred; Yaw_init = Previous_States.Yaw_pred; Updated_state.X_pred = X_init + Ts * Vx_m_s*cos(Yaw_init); Updated_state.Y_pred = Y_init + Ts * Vx_m_s*sin(Yaw_init); Updated_state.Yaw_pred = Yaw_init + Ts * Vx_m_s*tan(u)/lfr; end ================================================ FILE: Chapter-2/chap2_KinematicModel_Validation/func_UpdateState_dsolve_2_7.m ================================================ function [Updated_state] = func_UpdateState_dsolve_2_7(Previous_States, lfr, Vx_m_s, Steer_rad, Ts) % validation of dynamic model (2.26) use dsolve X_init = Previous_States.X_pred; Y_init = Previous_States.Y_pred; Yaw_init = Previous_States.Yaw_pred; XOUT=dsolve('Dx-Vx_m_s*cos(z) = 0', ... 'Dy-Vx_m_s*sin(z) = 0', ... 'Dz-Vx_m_s*tan(Steer_rad)/lfr = 0', ... 'x(0) = X_init', ... 'y(0) = Y_init', ... 'z(0) = Yaw_init');%z denotes yawangle t=0.05; % independent variable is 't' means sample time X_pred = eval(XOUT.x); Y_pred = eval(XOUT.y); Yaw_pred = eval(XOUT.z); Updated_state.X_pred = X_pred; Updated_state.Y_pred = Y_pred; Updated_state.Yaw_pred = Yaw_pred; end ================================================ FILE: Chapter-2/chap2_TireModel_Validation/CalLocalCorneringStiffness.m ================================================ function [Car] = CalLocalCorneringStiffness(alpha_local) syms AL m = 1540; %mΪ,Kg; Sprung mass = 1370 g = 9.8; Lf = 1.11; %a % Lr = 1.67; %bǰ־복ĵľ룬в L = 2.78; %VehiclePara.Lf + VehiclePara.Lr; mu = 1.0; % 0.55; %Ħ Fz = 0.5*m*g*Lf/L; % Calphaf = 91926; %unit: N/rad Calphar = 75066; %unit: N/rad Fyf0 = -Calphar * tan(AL) + power(Calphar,2) * tan(AL)* abs(tan(AL))/(3*mu*Fz) - power(Calphar,3)*power(tan(AL),3)/(27*mu*mu*Fz*Fz); Ca_Jcb = jacobian(Fyf0, AL); Tempt = subs(Ca_Jcb,alpha_local); Car = -eval(Tempt); ================================================ FILE: Chapter-2/chap2_TireModel_Validation/Calpha.csv ================================================ 90675,73570,82122 90823,73762,82293 90914,73927,82420 90973,74069,82521 90576,74199,82388 90696,74274,82485 90915,74297,82606 91016,74314,82665 91113,74348,82731 91225,74400,82812 91324,74463,82893 91408,74530,82969 91477,74596,83037 91538,74660,83099 91593,74722,83158 91500,74784,83142 91486,74839,83162 91581,74872,83227 91656,74888,83272 91715,74902,83308 91764,74921,83343 91810,74946,83378 91851,74974,83413 91889,75004,83447 91924,75036,83480 91972,75067,83520 91997,75098,83547 91940,75129,83535 91934,75156,83545 92001,75169,83585 92023,75172,83598 92064,75176,83620 92074,75190,83632 92109,75192,83651 92117,75206,83661 92149,75224,83686 92154,75236,83695 92183,75253,83718 92188,75270,83729 92154,75288,83721 92166,75302,83734 92200,75310,83755 92204,75315,83759 92228,75320,83774 92230,75327,83778 92252,75334,83793 92251,75342,83797 92271,75351,83811 92269,75359,83814 92287,75367,83827 92285,75375,83830 92244,75383,83814 92260,75387,83823 92262,75384,83823 92277,75380,83829 92271,75377,83824 92283,75376,83829 92275,75376,83826 92275,75377,83826 92284,75378,83831 92281,75378,83829 92283,75380,83831 92260,75382,83821 92243,75383,83813 92252,75380,83816 92256,75374,83815 92245,75368,83807 92246,75363,83805 92246,75359,83803 92233,75355,83794 92230,75352,83791 92228,75349,83789 92215,75345,83780 92213,75342,83777 92202,75338,83770 92189,75334,83761 92186,75329,83757 92182,75323,83753 92167,75318,83742 92159,75312,83735 ================================================ FILE: Chapter-2/chap2_TireModel_Validation/Generate1DLookuptable_BT.m ================================================ function Generate1DLookuptable_BT() %------------------------------------------------------------------% % Brush Tire Model by Pacejka % Using Brush tire model to calcualte Fy % Assume slip = 0, %------------------------------------------------------------------% mu = 1.0; %Ħ %********(1)calculate normal tire load **************% m = 1540; %Ϊ,Kg g = 9.8; lf = 1.11; %unit:m lr = 1.67; %unit:m ǰ־복ĵľ룬в L = 2.78; %unit:m Fzf = 0.5*m*g*lr/L; %********(2)趨 **************% Fz0=4100; %nominal (rated) load(>0,N %ֱغ Pky1=-12.95;Pky2=1.72;Pky3=0.22; r=0; %0.1*pi/180; %camber angle sr=sin(r); %r ǣsr ʾr* Kya0=Pky1*Fz0*sin(2*atan(Fzf/(Pky2*Fz0)));%ȡlamKya=1 Calpha = -1*Kya0*(1-Pky3*sr^2); Ca = 2* Calpha; %********(3)alpha processing **************% % Alpha_max = atan(3*1540*9.8*0.55*1.11/(140000*2.78))*180/pi; % 4deg % alphamax = atan(3*mu*Fzf/Ca)*180/pi; % Լ8deg % alpha = -alphamax:0.1:alphamax; alpha = -8:0.1:8; Alpha_rad = alpha.*pi/180;% % alpha in deg, transform into rad tanalpha_rad = tan(Alpha_rad); %********(4) Using Brush tire model to calcualte Fy **************% Fyf = -Calpha * tanalpha_rad + power(Calpha,2) * tanalpha_rad.*abs(tanalpha_rad)/(3*mu*Fzf) - power(Calpha,3)*power(tanalpha_rad,3)/(27*mu*mu*Fzf*Fzf); FyBT = Fyf; % table(:,1) = FyBT; % table(:,2) = alpha; % csvwrite('BTlookuptable_mu1_m1540.csv',table); %********(5) Using MF tire model to calcualte Fy **************% num = length(alpha); FyMF = zeros(num,1); for i = 1:1:num FyMF(i) = func_MFTyreModel_puresideslip(Fzf, alpha(i)); end plot(alpha, FyBT,'b',alpha, FyMF,'r'); grid on % table(:,1) = FyMF; % table(:,2) = alpha; % csvwrite('MFlookuptable_mu1_m1540.csv',table); % Alpha_max = atan(3*1973*9.8*0.55*1.53/(140000*2.76))*180/pi; % Alpha_max = atan(3*1540*9.8*0.55*1.11/(140000*2.78))*180/pi; end ================================================ FILE: Chapter-2/chap2_TireModel_Validation/LEO_TireModel_Validation.sim ================================================ SIMFILE INPUT C:\Users\Public\Documents\CarSim_Data\Runs\Run280_all.par ECHO C:\Users\Public\Documents\CarSim_Data\Runs\Run280_echo.par FINAL C:\Users\Public\Documents\CarSim_Data\Runs\Run280_end.par LOGFILE C:\Users\Public\Documents\CarSim_Data\Runs\Run280_log.txt ERDFILE C:\Users\Public\Documents\CarSim_Data\Runs\Run280.erd DLLFILE C:\Program Files (x86)\CarSim810_Prog\Programs\Solvers\Default64\i_i.dll END ================================================ FILE: Chapter-2/chap2_TireModel_Validation/LookupTable_test.m ================================================ function LookupTable_test(u) Alpha_L1 = u.signals.values(:,14); Alpha_L2 = u.signals.values(:,15); Fy_L1 = u.signals.values(:,22); Fy_L2 = u.signals.values(:,23); Num = length(Fy_L2); Fy_Alpha_ref = csvread('MFlookuptable_mu1_m1540.csv'); for i=1:1:Num Alpha_LT1(i) = func_LookupTable_alpha(Fy_Alpha_ref, Fy_L1(i)) ; Alpha_LT2(i) = func_LookupTable_alpha(Fy_Alpha_ref, Fy_L2(i)) ; end figure (1) plot(1:Num, Alpha_LT1,'b',1:Num, Alpha_L1,'b*',1:Num, Alpha_L2,'r',1:Num, Alpha_LT2,'r*'); grid on end function [alpha] = func_LookupTable_alpha(Fy_Alpha_ref, Fy) %***************************************************************% % 1. Lookup a pre-defined table to convert the optimal Fyf to steering angle % 2. then transform the steering angle to Steer_SW %***************************************************************% alpha = 0; % Fy_Alpha_ref = csvread('lookuptable_mu055_m1540.csv'); TableSize = size(Fy_Alpha_ref); % row and column NumRow = TableSize(1,1); %get the number of rows Index = 1; while 1 if Fy > Fy_Alpha_ref(1,1) alpha = Fy_Alpha_ref(1,2); break; elseif Fy < Fy_Alpha_ref(NumRow,1) alpha = Fy_Alpha_ref(NumRow,2); break; else % FytableΧ֮ if Fy < Fy_Alpha_ref(Index,1) Index = Index+1; else k_slope = (Fy_Alpha_ref(Index,2)-Fy_Alpha_ref(Index-1,2))/(Fy_Alpha_ref(Index,1)-Fy_Alpha_ref(Index-1,1)); alpha=Fy_Alpha_ref(Index-1,2)+(Fy-Fy_Alpha_ref(Index-1,1))* k_slope; break; end end end % end of while % alpha = alpha*pi/180; %unit: deg-->rad end ================================================ FILE: Chapter-2/chap2_TireModel_Validation/MFlookuptable_mu1_m1540.csv ================================================ 3793.9,-8 3783.1,-7.9 3771.9,-7.8 3760.2,-7.7 3748,-7.6 3735.2,-7.5 3721.9,-7.4 3708.1,-7.3 3693.7,-7.2 3678.7,-7.1 3663.1,-7 3646.8,-6.9 3629.9,-6.8 3612.3,-6.7 3594,-6.6 3574.9,-6.5 3555.1,-6.4 3534.6,-6.3 3513.2,-6.2 3491,-6.1 3468,-6 3444.1,-5.9 3419.2,-5.8 3393.5,-5.7 3366.8,-5.6 3339.1,-5.5 3310.4,-5.4 3280.7,-5.3 3250,-5.2 3218.1,-5.1 3185.2,-5 3151.1,-4.9 3115.8,-4.8 3079.4,-4.7 3041.8,-4.6 3003,-4.5 2962.9,-4.4 2921.5,-4.3 2878.9,-4.2 2835,-4.1 2789.7,-4 2743.2,-3.9 2695.2,-3.8 2646,-3.7 2595.4,-3.6 2543.4,-3.5 2490,-3.4 2435.3,-3.3 2379.1,-3.2 2321.7,-3.1 2262.8,-3 2202.6,-2.9 2141.1,-2.8 2078.2,-2.7 2014,-2.6 1948.5,-2.5 1881.7,-2.4 1813.7,-2.3 1744.5,-2.2 1674.1,-2.1 1602.5,-2 1529.8,-1.9 1456,-1.8 1381.2,-1.7 1305.3,-1.6 1228.6,-1.5 1150.9,-1.4 1072.4,-1.3 993.04,-1.2 912.97,-1.1 832.21,-1 750.82,-0.9 668.86,-0.8 586.39,-0.7 503.46,-0.6 420.15,-0.5 336.51,-0.4 252.61,-0.3 168.52,-0.2 84.291,-0.1 -0,0 -84.3,0.1 -168.59,0.2 -252.86,0.3 -337.11,0.4 -421.31,0.5 -505.46,0.6 -589.53,0.7 -673.51,0.8 -757.37,0.9 -841.08,1 -924.62,1.1 -1007.9,1.2 -1091,1.3 -1173.8,1.4 -1256.2,1.5 -1338.2,1.6 -1419.7,1.7 -1500.7,1.8 -1581.1,1.9 -1660.8,2 -1739.8,2.1 -1818,2.2 -1895.3,2.3 -1971.7,2.4 -2047,2.5 -2121.2,2.6 -2194.2,2.7 -2266,2.8 -2336.4,2.9 -2405.5,3 -2473.1,3.1 -2539.2,3.2 -2603.7,3.3 -2666.6,3.4 -2727.8,3.5 -2787.4,3.6 -2845.3,3.7 -2901.4,3.8 -2955.7,3.9 -3008.3,4 -3059.1,4.1 -3108.1,4.2 -3155.3,4.3 -3200.7,4.4 -3244.4,4.5 -3286.4,4.6 -3326.6,4.7 -3365.2,4.8 -3402.1,4.9 -3437.3,5 -3471,5.1 -3503.1,5.2 -3533.8,5.3 -3562.9,5.4 -3590.6,5.5 -3617,5.6 -3642,5.7 -3665.7,5.8 -3688.2,5.9 -3709.4,6 -3729.6,6.1 -3748.6,6.2 -3766.5,6.3 -3783.4,6.4 -3799.4,6.5 -3814.4,6.6 -3828.5,6.7 -3841.7,6.8 -3854.2,6.9 -3865.9,7 -3876.8,7.1 -3887,7.2 -3896.6,7.3 -3905.5,7.4 -3913.8,7.5 -3921.5,7.6 -3928.7,7.7 -3935.3,7.8 -3941.5,7.9 -3947.2,8 ================================================ FILE: Chapter-2/chap2_TireModel_Validation/Main_Sampletime_Abstract.m ================================================ function [sys,x0,str,ts] =Main_Sampletime_Abstract(t,x,u,flag) %***************************************************************% % Carsim sample time S֮Ĺϵ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % end % end sfuntmpl %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes %***************************************************************% % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. %***************************************************************% sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 5; %ģɢ״̬ĸ,ʵϱapp ûõֵֻʾɢģ sizes.NumOutputs = 38; %S sizes.NumInputs = 38; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms % End of mdlInitializeSizes %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== function sys = mdlUpdates(t,x,u) % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % end %End of mdlUpdate. %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== function sys = mdlOutputs(t,x,u) %tDzʱ, x״̬, u(simulinkģ) sys = u; % end %End of mdlOutputs. ================================================ FILE: Chapter-2/chap2_TireModel_Validation/ModelValidation_BrushTire_Cfa.m ================================================ % function ModelValidation_BrushTire_Cfa(u) %֤Ca = By*Cy*Dy mu = 1.0; alpha_L1 = u.signals.values(:,14); alpha_L2 = u.signals.values(:,15); alpha_R1 = u.signals.values(:,16); alpha_R2 = u.signals.values(:,17); Fz_L1 = u.signals.values(:,18); Fz_L2 = u.signals.values(:,19); Fz_R1 = u.signals.values(:,20); Fz_R2 = u.signals.values(:,21); Fy_L1 = u.signals.values(:,22); Fy_L2 = u.signals.values(:,23); Fy_R1 = u.signals.values(:,24); Fy_R2 = u.signals.values(:,25); iStart = 1; Num = length(alpha_L1); FyL2 = zeros(Num,1); FyL2C = zeros(Num,1); FyR2 = zeros(Num,1); FyR2C = zeros(Num,1); for index = 1:1:Num [Calphar1(index),Car1(index),FyL2(index),FyL2C(index)] = func_BrushTyreModel_puresideslip(Fz_L2(index), alpha_L2(index), mu); [Calphar2(index),Car2(index),FyR2(index),FyR2C(index)] = func_BrushTyreModel_puresideslip(Fz_R2(index), alpha_R2(index), mu); CarM1(index) = Fy_L2(index)/(alpha_L2(index)*pi/180); CarM2(index) = Fy_R2(index)/(alpha_R2(index)*pi/180); FyL2MF(index) = func_MFTyreModel_puresideslip(Fz_L2(index), alpha_L2(index)); FyR2MF(index) = func_MFTyreModel_puresideslip(Fz_R2(index), alpha_R2(index)); end Fyr = Fy_L2 + Fy_R2; FyrC = FyL2C + FyR2C; FyrBT = FyL2 + FyR2; FyrMF = FyL2MF + FyR2MF; figure (1) plot(iStart:Num, Fyr,'B',iStart:Num, FyrBT,'b*',iStart:Num, FyrC,'r',iStart:Num, FyrMF,'r*'); grid on % figure (1) % plot(iStart:Num, Fy_L2,'B',iStart:Num, FyL2,'b*',iStart:Num, FyL2C,'r'); % grid on % figure (2) % plot(iStart:Num, Fy_R2,'B',iStart:Num, FyR2,'b*',iStart:Num, FyR2C,'r'); % grid on % figure (3) % plot(iStart:Num, Calphar1,'b',iStart:Num, Car1,'b*',iStart:Num, CarM1,'r'); % grid on % figure (4) % plot(iStart:Num, Calphar2,'b',iStart:Num, Car2,'b*',iStart:Num, CarM2,'r'); % grid on % end % End of func ================================================ FILE: Chapter-2/chap2_TireModel_Validation/ModelValidation_MFTire.m ================================================ % function ModelValidation_MFTire(u) %ȱDzmuģеá %IJmu=1²Եġ clc close all mu = 1.0; % 0.3 alpha_L1 = u.signals.values(:,14); alpha_L2 = u.signals.values(:,15); alpha_R1 = u.signals.values(:,16); alpha_R2 = u.signals.values(:,17); Fz_L1 = u.signals.values(:,18); Fz_L2 = u.signals.values(:,19); Fz_R1 = u.signals.values(:,20); Fz_R2 = u.signals.values(:,21); Fy_L1 = u.signals.values(:,22); Fy_L2 = u.signals.values(:,23); Fy_R1 = u.signals.values(:,24); Fy_R2 = u.signals.values(:,25); iStart = 1; Num = length(alpha_L1); FyL1 = zeros(Num,1); FyL2 = zeros(Num,1); FyR1 = zeros(Num,1); FyR2 = zeros(Num,1); for index = 1:1:Num FyL1(index) = func_MFTyreModel_puresideslip(Fz_L1(index), alpha_L1(index)); FyL2(index) = func_MFTyreModel_puresideslip(Fz_L2(index), alpha_L2(index)); FyR1(index) = func_MFTyreModel_puresideslip(Fz_R1(index), alpha_R1(index)); FyR2(index) = func_MFTyreModel_puresideslip(Fz_R2(index), alpha_R2(index)); end figure (1) plot(iStart:Num, Fy_L1,'b',iStart:Num, FyL1,'b*',iStart:Num, Fy_R1,'r',iStart:Num, FyR1,'r*'); legend('Fyf-L1-CarSim','Fyf-L1-Pacejka','Fyf-R1-CarSim','Fyf-R1-Pacejka'); grid on figure (2) plot(iStart:Num, Fy_L2,'b',iStart:Num, FyL2,'b*',iStart:Num, Fy_R2,'r',iStart:Num, FyR2,'r*'); legend('Fyr-L2-CarSim','Fyf-L2-Pacejka','Fyf-R2-CarSim','Fyf-R2-Pacejka'); grid on % end % End of func ================================================ FILE: Chapter-2/chap2_TireModel_Validation/TireModelValidation.mdl ================================================ Model { Name "TireModelValidation" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.103" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "ModelValidation_Pacejka" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [1077.0, 187.0, 719.0, 519.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [669.0, 342.0] ZoomFactor [1.25] Offset [166.35378690628988, 55.402524604193076] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Tue Sep 03 16:59:42 2019" RTWModifiedTimeStamp 489016209 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "TireModelValidation" Array { Type "Cell" Dimension 1 Cell "TireModelValidation" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "30" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "TireModelValidation" Location [1077, 187, 1796, 706] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" SIDHighWatermark "96" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [0, 1] Position [240, 154, 340, 216] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i" SIMFILE "LEO_TireModel_Validation.sim" } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [375, 152, 520, 218] ZOrder 12 FunctionName "Main_Sampletime_Abstract" EnableBusSupport off } Block { BlockType ToWorkspace Name "To Workspace1" SID "95" Ports [1] Position [560, 170, 620, 200] ZOrder 11 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 17 SrcBlock "S-Function" SrcPort 1 DstBlock "To Workspace1" DstPort 1 } Line { ZOrder 18 SrcBlock "CarSim S-Function" SrcPort 1 DstBlock "S-Function" DstPort 1 } } } ================================================ FILE: Chapter-2/chap2_TireModel_Validation/chapter2_2_2.m ================================================ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %---------------------------------------------------------------% %% % Calculate lateral tire force under pure side slip angle % default friction coefficient mu=1.0 alpha=linspace(-10,10,100); %-10deg~10degֵ20ɲƫǺ r=0; %ǣΪ %*************lateral coefficients*******************************% a0 = 1.65; a1 = -34; a2 = 1250; a3 = 3036; a4 = 12.8; a5 = 0.00501; a6 = -0.02103; a7 = 0.77394; a8 = 0.0022890; a9 = 0.013442; a10 = 0.003709; a11 = 19.1656; a12 = 1.21356; a13 = 6.26206; % Calc lateral tire force with Fz=2.5 kN% Fz = 2.5;%ֱغɣλKN %**********parameters *********************% Cy = a0;%״ Dy = a1*Fz^2+a2*Fz;% BCDy = a3*sin(2*atan(Fz/a4))*(1-a5*abs(r));%㴦IJն By = BCDy/(Cy*Dy);%ն Shy = a9*Fz+a10+a8*r;%ߵˮƽƯ ky = alpha+Shy;%X Svy = a11*Fz*r+a12*Fz+a13;%ߵĴֱƯ Ey = a6*Fz^2+a7;% %***********lateral force formulation************% Fy_2_5kN = Dy*sin(Cy*atan(By*ky-Ey*(By*ky-atan(By*ky))))+Svy;%unit:N Fy_2_5kN = -Fy_2_5kN./1000;%unit:kN % Calc lateral tire force with Fz=5 kN% Fz = 5;%ֱغɣλKN Cy = a0;%״ Dy = a1*Fz^2+a2*Fz;% BCDy = a3*sin(2*atan(Fz/a4))*(1-a5*abs(r));%㴦IJն By = BCDy/(Cy*Dy);%ն Shy = a9*Fz+a10+a8*r;%ߵˮƽƯ ky = alpha+Shy;%X Svy = a11*Fz*r+a12*Fz+a13;%ߵĴֱƯ Ey = a6*Fz^2+a7;% Fy_5kN = Dy*sin(Cy*atan(By*ky-Ey*(By*ky-atan(By*ky))))+Svy;%unit:N Fy_5kN = -Fy_5kN./1000;%unit:kN % Calc lateral tire force with Fz=8.5 kN% Fz = 8.5;%ֱغɣλKN Cy = a0;%״ Dy = a1*Fz^2+a2*Fz;% BCDy = a3*sin(2*atan(Fz/a4))*(1-a5*abs(r));%㴦IJն By = BCDy/(Cy*Dy);%ն Shy = a9*Fz+a10+a8*r;%ߵˮƽƯ ky = alpha+Shy;%X Svy = a11*Fz*r+a12*Fz+a13;%ߵĴֱƯ Ey = a6*Fz^2+a7;% Fy_8_5kN = Dy*sin(Cy*atan(By*ky-Ey*(By*ky-atan(By*ky))))+Svy; %unit:N Fy_8_5kN = -Fy_8_5kN./1000; %unit:kN % Calc lateral tire force with Fz=14 kN% Fz = 14;%ֱغɣλKN Cy = a0;%״ Dy = a1*Fz^2+a2*Fz;% BCDy = a3*sin(2*atan(Fz/a4))*(1-a5*abs(r));%㴦IJն By = BCDy/(Cy*Dy);%ն Shy = a9*Fz+a10+a8*r;%ߵˮƽƯ ky = alpha+Shy;%X Svy = a11*Fz*r+a12*Fz+a13;%ߵĴֱƯ Ey = a6*Fz^2+a7;% Fy_14kN = Dy*sin(Cy*atan(By*ky-Ey*(By*ky-atan(By*ky))))+Svy;%unit:N Fy_14kN = -Fy_14kN./1000;%unit:kN %% plot result figure (1); plot(alpha,Fy_2_5kN,'k',alpha,Fy_5kN,'k+',alpha,Fy_8_5kN,'k--',alpha,Fy_14kN,'k.','LineWidth',2); grid set(gca,'xlim',[-8 8]); %x᷶Χ set(gca,'xtick',[-8:1:8]); %x set(gca,'ylim',[-15 15]) %y᷶Χ set(gca,'ytick',[-15:3:15]); %y legend('Fz=2.5kN','Fz=5 kN','Fz=8.5 kN','Fz=14 kN'); xlabel('ƫ/ (deg)'); ylabel('/kN'); title('ֱͬغµ̥(ƫ)'); ================================================ FILE: Chapter-2/chap2_TireModel_Validation/chapter2_3_2.m ================================================ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %---------------------------------------------------------------% %% % ģƵѽõIJ syms K_phi D_phi Theta_1 Theta_2 Theta_3 syms M hCG Iz Ix Vel g Calpha_f Calpha_r lf %ʵҪ峵ѧ΢ַ̣MintNintF1intF2int Mint = [ M 0 -M*hCG 0; 0 Iz 0 0; -M*hCG 0 Ix+M*hCG*hCG 0; 0 0 0 1]; Nint = [-Theta_1/Vel M*Vel-Theta_2/Vel 0 M*g; -Theta_2/Vel -Theta_3/Vel 0 0; 0 -M*hCG*Vel D_phi K_phi-M*g*hCG; 0 0 -1 0]; F1int = [-Calpha_f; -lf*Calpha_f; 0; 0]; F2int = [ 0 0; 0 0; K_phi 0; 0 0]; %ͨ任õ״̬ռ䷽ʽijѧ % dot{kesi} = Ac_11*kesi + B1cn_11 * u1 + B2cn_11*u2 Ac_11 = -Mint\Nint; B1cn_11 = Mint\F1int; B2cn_11 = Mint\F2int; ================================================ FILE: Chapter-2/chap2_TireModel_Validation/func_BrushTyreModel_puresideslip.m ================================================ function [Calphar, Car, Fyf, FyfC] = func_BrushTyreModel_puresideslip(Fz, alpha, mu) %------------------------------------------------------------------% % Brush Tire Model by Pacejka % Using Brush tire model to calcualte Fy % Assume slip = 0, mu=1.0 %------------------------------------------------------------------% %-------Pacejka Tire 175/70 R13(symmetric)----------------------% %********(1)calculate normal tire load **************% m = 1540; %Ϊ,Kg g = 9.8; lf = 1.11; %unit:m lr = 1.67; %unit:m ǰ־복ĵľ룬в L = 2.78; %unit:m Fzf = 0.5*m*g*lr/L; Fzr = 0.5*m*g*lf/L; Fz0=4100; %nominal (rated) load(>0,N %ֱغ Pky1=-12.95;Pky2=1.72;Pky3=0.22; r=0; %0.1*pi/180; %camber angle sr=sin(r); %r ǣsr ʾr* % Kyaf=Pky1*Fz0*sin(2*atan(Fzf/(Pky2*Fz0)));%ȡlamKya=1 % Calphaf=-1*Kyaf*(1-Pky3*sr^2); %Cfa = ByCyDy Kyar=Pky1*Fz0*sin(2*atan(Fzr/(Pky2*Fz0)));%ȡlamKya=1 Calphar=-1*Kyar*(1-Pky3*sr^2); %Cra = ByCyDy %********(3)alpha processing **************% Alpha_rad = alpha*pi/180;% % alpha in deg, transform into rad tanalpha_rad = tan(Alpha_rad); %********(4) Using Brush tire model to calcualte Fy **************% % use normal tire load from CarSim Fyf0 = -Calphar * tanalpha_rad + power(Calphar,2) * tanalpha_rad* abs(tanalpha_rad)/(3*mu*Fz) - power(Calphar,3)*power(tanalpha_rad,3)/(27*mu*mu*Fz*Fz); Fyf = Fyf0; if 0 == Alpha_rad Car = Calphar; else Car = Fyf/Alpha_rad; end % use Constant normal tire load FyfC0=-Calphar * tanalpha_rad + power(Calphar,2) * tanalpha_rad* abs(tanalpha_rad)/(3*mu*Fzr) - power(Calphar,3)*power(tanalpha_rad,3)/(27*mu*mu*Fzf*Fzf); FyfC = FyfC0; end ================================================ FILE: Chapter-2/chap2_TireModel_Validation/func_MFTyreModel_puresideslip.m ================================================ function [Fy0] = func_MFTyreModel_puresideslip(Fz, alpha) %------------------------------------------------------------------% % Magic Formula model %------------------------------------------------------------------% % Parameter values of Magic Formula from CarSim Fz0=4100; %nominal (rated) load(>0,N %ֱغ R0=0.298; %unloaded tyre radius (=ro)m dfz=(Fz-Fz0)/Fz0; mux = 1; muy = 1; % Tire/ground coefficients for this data % Slip_Ratio = 0; % pure side slip %-------Pacejka Tire 175/70 R13(symmetric)----------------------% Pcy1=1.29; Pdy1=-0.9;Pdy2=0.18;Pdy3=-4.5; Pey1=-1.07;Pey2=0.68;Pey3=-0.63;Pey4=-12.35; Pky1=-12.95;Pky2=1.72;Pky3=0.22; Phy1=0.0035;Phy2=-0.003; Phy3 = 0.045; Pvy1=0.045;Pvy2=-0.03;Pvy3=-0.174;Pvy4=-0.45; Rby1 = 6.38; %----Lateral Force(pure side slip) input:ƫ Dzƫȡtanֵa*---% r=0; %0.1*pi/180; %camber angle sr=sin(r); %r ǣsr ʾr* Cy=Pcy1; %ȡlamCy=1 ta = tan(alpha *pi/180); % uy=(Pdy1+Pdy2*dfz)*(1-Pdy3*sr^2); %ȡlam(uy*)=1 Dy=uy*Fz; Kya0=Pky1*Fz0*sin(2*atan(Fz/(Pky2*Fz0)));%ȡlamKya=1 Kya=Kya0*(1-Pky3*sr^2); By=Kya/(Cy*Dy); %ȡ¡y=0 Shy=Phy3*sr; Svy=Fz*(Pvy3 + Pvy4*dfz)*sr; ay=ta+Shy; Ey=(Pey1+Pey2*dfz)*(1-(Pey3+Pey4*sr)*sign(ay)); Fy0=Dy*sin(Cy*atan(By*ay-Ey.*(By*ay-atan(By*ay))))+Svy; % subplot(2,3,2) % plot(a,Fy0);grid % set(gca,'xlim',[-10 10]) % set(gca,'xtick',[-10:1:10]); % set(gca,'ylim',[-4000 4000]) % set(gca,'ytick',[-4000:1000:4000]); % xlabel('ƫ/ȣ'); % ylabel('ƫ/N'); % title('ƫ(໬)'); end % end of function % for i= 1:1:50001 % MF_Fy(i) = func_MFTyreModel(FzL1(i), alphaL1(i)); % end ================================================ FILE: Chapter-2/chap2_TireModel_Validation/lookuptable_mu0.55_m1540.csv ================================================ 4986.3,-8.8024 4986.3,-8.7024 4986.3,-8.6024 4986.1,-8.5024 4985.8,-8.4024 4985.4,-8.3024 4984.7,-8.2024 4983.7,-8.1024 4982.4,-8.0024 4980.8,-7.9024 4978.7,-7.8024 4976.2,-7.7024 4973.2,-7.6024 4969.7,-7.5024 4965.5,-7.4024 4960.8,-7.3024 4955.3,-7.2024 4949.2,-7.1024 4942.2,-7.0024 4934.5,-6.9024 4925.9,-6.8024 4916.4,-6.7024 4906,-6.6024 4894.6,-6.5024 4882.2,-6.4024 4868.7,-6.3024 4854.1,-6.2024 4838.4,-6.1024 4821.4,-6.0024 4803.2,-5.9024 4783.8,-5.8024 4763,-5.7024 4740.8,-5.6024 4717.2,-5.5024 4692.2,-5.4024 4665.6,-5.3024 4637.6,-5.2024 4607.9,-5.1024 4576.6,-5.0024 4543.7,-4.9024 4509,-4.8024 4472.6,-4.7024 4434.4,-4.6024 4394.3,-4.5024 4352.4,-4.4024 4308.6,-4.3024 4262.7,-4.2024 4214.9,-4.1024 4165.1,-4.0024 4113.1,-3.9024 4059,-3.8024 4002.7,-3.7024 3944.2,-3.6024 3883.5,-3.5024 3820.4,-3.4024 3755,-3.3024 3687.3,-3.2024 3617,-3.1024 3544.4,-3.0024 3469.2,-2.9024 3391.4,-2.8024 3311.1,-2.7024 3228.1,-2.6024 3142.4,-2.5024 3054,-2.4024 2962.8,-2.3024 2868.8,-2.2024 2772,-2.1024 2672.3,-2.0024 2569.6,-1.9024 2464,-1.8024 2355.3,-1.7024 2243.6,-1.6024 2128.8,-1.5024 2010.8,-1.4024 1889.6,-1.3024 1765.2,-1.2024 1637.5,-1.1024 1506.5,-1.0024 1372.1,-0.90239 1234.3,-0.80239 1093,-0.70239 948.29,-0.60239 800.01,-0.50239 648.15,-0.40239 492.67,-0.30239 333.52,-0.20239 170.66,-0.10239 4.0357,-0.0023943 -162.76,0.097606 -325.81,0.19761 -485.13,0.29761 -640.79,0.39761 -792.82,0.49761 -941.27,0.59761 -1086.2,0.69761 -1227.6,0.79761 -1365.5,0.89761 -1500.1,0.99761 -1631.3,1.0976 -1759.1,1.1976 -1883.7,1.2976 -2005,1.3976 -2123.2,1.4976 -2238.2,1.5976 -2350,1.6976 -2458.9,1.7976 -2564.6,1.8976 -2667.4,1.9976 -2767.3,2.0976 -2864.3,2.1976 -2958.4,2.2976 -3049.7,2.3976 -3138.2,2.4976 -3224,2.5976 -3307.1,2.6976 -3387.6,2.7976 -3465.5,2.8976 -3540.8,2.9976 -3613.6,3.0976 -3684,3.1976 -3751.9,3.2976 -3817.4,3.3976 -3880.5,3.4976 -3941.4,3.5976 -4000,3.6976 -4056.4,3.7976 -4110.6,3.8976 -4162.6,3.9976 -4212.6,4.0976 -4260.5,4.1976 -4306.4,4.2976 -4350.4,4.3976 -4392.4,4.4976 -4432.5,4.5976 -4470.8,4.6976 -4507.3,4.7976 -4542.1,4.8976 -4575.1,4.9976 -4606.4,5.0976 -4636.2,5.1976 -4664.3,5.2976 -4690.9,5.3976 -4716,5.4976 -4739.7,5.5976 -4761.9,5.6976 -4782.8,5.7976 -4802.3,5.8976 -4820.6,5.9976 -4837.6,6.0976 -4853.4,6.1976 -4868.1,6.2976 -4881.6,6.3976 -4894.1,6.4976 -4905.5,6.5976 -4916,6.6976 -4925.5,6.7976 -4934.1,6.8976 -4941.9,6.9976 -4948.8,7.0976 -4955,7.1976 -4960.5,7.2976 -4965.3,7.3976 -4969.5,7.4976 -4973.1,7.5976 -4976.1,7.6976 -4978.6,7.7976 -4980.7,7.8976 -4982.4,7.9976 -4983.7,8.0976 -4984.6,8.1976 -4985.3,8.2976 -4985.8,8.3976 -4986.1,8.4976 -4986.3,8.5976 -4986.3,8.6976 -4986.3,8.7976 ================================================ FILE: Chapter-2/chapter2_2_2.m ================================================ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %---------------------------------------------------------------% %% % Calculate lateral tire force under pure side slip angle % default friction coefficient mu=1.0 alpha=linspace(-10,10,100); %-10deg~10degֵ20ɲƫǺ r=0; %ǣΪ %*************lateral coefficients*******************************% a0 = 1.65; a1 = -34; a2 = 1250; a3 = 3036; a4 = 12.8; a5 = 0.00501; a6 = -0.02103; a7 = 0.77394; a8 = 0.0022890; a9 = 0.013442; a10 = 0.003709; a11 = 19.1656; a12 = 1.21356; a13 = 6.26206; % Calc lateral tire force with Fz=2.5 kN% Fz = 2.5;%ֱغɣλKN %**********parameters *********************% Cy = a0;%״ Dy = a1*Fz^2+a2*Fz;% BCDy = a3*sin(2*atan(Fz/a4))*(1-a5*abs(r));%㴦IJն By = BCDy/(Cy*Dy);%ն Shy = a9*Fz+a10+a8*r;%ߵˮƽƯ ky = alpha+Shy;%X Svy = a11*Fz*r+a12*Fz+a13;%ߵĴֱƯ Ey = a6*Fz^2+a7;% %***********lateral force formulation************% Fy_2_5kN = Dy*sin(Cy*atan(By*ky-Ey*(By*ky-atan(By*ky))))+Svy;%unit:N Fy_2_5kN = -Fy_2_5kN./1000;%unit:kN % Calc lateral tire force with Fz=5 kN% Fz = 5;%ֱغɣλKN Cy = a0;%״ Dy = a1*Fz^2+a2*Fz;% BCDy = a3*sin(2*atan(Fz/a4))*(1-a5*abs(r));%㴦IJն By = BCDy/(Cy*Dy);%ն Shy = a9*Fz+a10+a8*r;%ߵˮƽƯ ky = alpha+Shy;%X Svy = a11*Fz*r+a12*Fz+a13;%ߵĴֱƯ Ey = a6*Fz^2+a7;% Fy_5kN = Dy*sin(Cy*atan(By*ky-Ey*(By*ky-atan(By*ky))))+Svy;%unit:N Fy_5kN = -Fy_5kN./1000;%unit:kN % Calc lateral tire force with Fz=8.5 kN% Fz = 8.5;%ֱغɣλKN Cy = a0;%״ Dy = a1*Fz^2+a2*Fz;% BCDy = a3*sin(2*atan(Fz/a4))*(1-a5*abs(r));%㴦IJն By = BCDy/(Cy*Dy);%ն Shy = a9*Fz+a10+a8*r;%ߵˮƽƯ ky = alpha+Shy;%X Svy = a11*Fz*r+a12*Fz+a13;%ߵĴֱƯ Ey = a6*Fz^2+a7;% Fy_8_5kN = Dy*sin(Cy*atan(By*ky-Ey*(By*ky-atan(By*ky))))+Svy; %unit:N Fy_8_5kN = -Fy_8_5kN./1000; %unit:kN % Calc lateral tire force with Fz=14 kN% Fz = 14;%ֱغɣλKN Cy = a0;%״ Dy = a1*Fz^2+a2*Fz;% BCDy = a3*sin(2*atan(Fz/a4))*(1-a5*abs(r));%㴦IJն By = BCDy/(Cy*Dy);%ն Shy = a9*Fz+a10+a8*r;%ߵˮƽƯ ky = alpha+Shy;%X Svy = a11*Fz*r+a12*Fz+a13;%ߵĴֱƯ Ey = a6*Fz^2+a7;% Fy_14kN = Dy*sin(Cy*atan(By*ky-Ey*(By*ky-atan(By*ky))))+Svy;%unit:N Fy_14kN = -Fy_14kN./1000;%unit:kN %% plot result figure (1); plot(alpha,Fy_2_5kN,'k',alpha,Fy_5kN,'k+',alpha,Fy_8_5kN,'k--',alpha,Fy_14kN,'k.','LineWidth',2); grid set(gca,'xlim',[-8 8]); %x᷶Χ set(gca,'xtick',[-8:1:8]); %x set(gca,'ylim',[-15 15]) %y᷶Χ set(gca,'ytick',[-15:3:15]); %y legend('Fz=2.5kN','Fz=5 kN','Fz=8.5 kN','Fz=14 kN'); xlabel('ƫ/ (deg)'); ylabel('/kN'); title('ֱͬغµ̥(ƫ)'); ================================================ FILE: Chapter-2/chapter2_3_2.m ================================================ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %---------------------------------------------------------------% %% % ģƵѽõIJ syms K_phi D_phi Theta_1 Theta_2 Theta_3 syms M hCG Iz Ix Vel g Calpha_f Calpha_r lf %ʵҪ峵ѧ΢ַ̣MintNintF1intF2int Mint = [ M 0 -M*hCG 0; 0 Iz 0 0; -M*hCG 0 Ix+M*hCG*hCG 0; 0 0 0 1]; Nint = [-Theta_1/Vel M*Vel-Theta_2/Vel 0 M*g; -Theta_2/Vel -Theta_3/Vel 0 0; 0 -M*hCG*Vel D_phi K_phi-M*g*hCG; 0 0 -1 0]; F1int = [-Calpha_f; -lf*Calpha_f; 0; 0]; F2int = [ 0 0; 0 0; K_phi 0; 0 0]; %ͨ任õ״̬ռ䷽ʽijѧ % dot{kesi} = Ac_11*kesi + B1cn_11 * u1 + B2cn_11*u2 Ac_11 = -Mint\Nint; B1cn_11 = Mint\F1int; B2cn_11 = Mint\F2int; ================================================ FILE: Chapter-3/ReadMe ================================================ This folder holds simulation codes for Chapter 3 * chatp3_MPC_Toolbox_DoubleInt: a simple example using MPC toolbox for speed tracking demo * chap3_MPC_SpeedCtrl_du: MPC for speed tracking control, with du as input * chap3_MPC_SpeedCtrl: Extended: MPC for speed tracking control, with u as input * chap3_MPC_AdaptiveCruiseCtrl_VLV: Extended: MPC for Adaptive Cruise Control, involve multi-vehicle joint simulation ================================================ FILE: Chapter-3/chap3_MPC_AdaptiveCruiseCtrl_VLV/Chapter3_MPC_ACC_ First Car (Ext. Sen.).par ================================================ PARSFILE #EXPANDED_PARSFILE 2.0 ! This is an expansion of the parsfile: "Runs\Run288.par" ! It contains the contents of that file plus the contents of any files linked ! with the "PARSFILE" or "SPECIAL_PARSFILE" keywords. ! File created: 09:14 on September 01, 2019 by CarSim Version 8.1a, October 2011 PRODUCT_NAME CarSim ENTER_PARSFILE Runs\Run288.par`08-30-2019`23:51:42 #FullDataName CarSim Run Control`Chapter3_MPC_ACC: First Car (Ext. Sen.)`BOOK_MPC_Examples #VehicleCode Ind_Ind OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex135.par`09-01-2019`08:50:47 #FullDataName Models: Simulink`chapt3_Radar Active Cruise: First Car (Ext. Sen.)`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV\LEO_MPCACC_VLV1.mdl #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 0 *USE_DIFF_SOLVERS 0 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV *ALTERNATE_PATH E:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV ENTER_PARSFILE IO_Channels\O_Channels\O_Ch126.par`08-31-2019`10:10:49 #FullDataName I/O Channels: Export`Radar Active Cruising Export (Ext. Sen.)`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Vx EXP_Xo EXP_Yo EXP_Yaw EXP_Ax #MiscYellow0 #Number of Selected Channels: 5 #CHN_NAME: Vx #CHN_NAME: Xo #CHN_NAME: Yo #CHN_NAME: Yaw #CHN_NAME: Ax #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } Radar Active Cruising Export (Ext. Sen.) #Library : I/O Channels: Export #DataSet : Radar Active Cruising Export (Ext. Sen.) #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch126 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-31-2019 10:10:49 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch126.par #BlueLink1 I/O Channels: Export`Radar Active Cruising Export (Ext. Sen.)` MPC_BOOK_Sim_Exports` , Export #MiscYellow1 simfile LEO_MPC_ACC_ExtSen_Car1.sim #ENDMYellow LIVE_SERVER_UPDATE_FREQ_MAX 60 LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } chapt3_Radar Active Cruise: First Car (Ext. Sen.) #Library : Models: Simulink #DataSet : chapt3_Radar Active Cruise: First Car (Ext. Sen.) #Category: BOOK_MPC_Models #FileID : Cmex135 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 08:50:47 #VehCode EXIT_PARSFILE Models\Simulink\Cmex135.par #BlueLink12 Models: Simulink`chapt3_Radar Active Cruise: First Car (Ext. Sen.)` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera138.par`08-02-2011`16:43:53 #FullDataName Animator: Camera Setup`High Front View, Road Ref. (Rr. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw ENTER_PARSFILE Animator\Frames\Frame105.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Rear Point w/ Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Rear Point w/ Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camR SET_Y_NAME Y_camR SET_Z_NAME Z_camR SET_YAW_NAME Yaw_CamR WRT_X_camR ANI_X_camR WRT_Y_camR ANI_Y_camR WRT_Z_camR ANI_Z_camR WRT_Yaw_CamR ANI_Yaw_CamR LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Rear Point w/ Yaw #Library : Animator: Reference Frame #DataSet : Camera Rear Point w/ Yaw #Category: Road Tracking #FileID : Frame105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame105.par #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y -1.65 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 355.5 SET_ELEVATION 20 SET_DISTANCE 49 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y -1.65 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 355.5 *SET_ELEVATION 20 *SET_DISTANCE 49 GHOST_COUNT 0 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 40 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } High Front View, Road Ref. (Rr. Facing) #Library : Animator: Camera Setup #DataSet : High Front View, Road Ref. (Rr. Facing) #Category: Road Reference #FileID : Camera138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:53 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera138.par #BlueLink0 Animator: Camera Setup`High Front View, Road Ref. (Rr. Facing)` Road Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 2 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 1 0.6 0 FLAG_10 288 ID_RUN 288 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle105.par`08-02-2011`16:42:23 #FullDataName Vehicle: Assembly`B-Class, Sports Car`CS B-Class #VehCode Ind_Ind #CheckBox0 0 #RingCtrl0 2 OPT_PT 2 #RingCtrl1 1 #RingCtrl2 1 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp107.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`B-Class, Sports Car - Front Comp.`CS B-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.611 *R_SPRING_R 0.611 *R_DAMPER_L 0.611 *R_DAMPER_R 0.611 *CT_FX_L 1.9e-6 *CT_FX_R 1.9e-6 *CS_FY_L -1.4e-6 *CS_FY_R -1.4e-6 *CS_MZ_L 6.4e-4 *CS_MZ_R 6.4e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 1.4e-4 *CI_FY_R 1.4e-4 *CI_MZ_L -2.75e-4 *CI_MZ_R -2.75e-4 *C_LONG_L 1.2e-5 *C_LONG_R 1.2e-5 *C_LAT_L 1.6e-5 *C_LAT_R 1.6e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.611 *R_JOUNCE_R 0.611 *R_REBOUND_L 0.611 *R_REBOUND_R 0.611 ENTER_PARSFILE Suspensions\Shocks\Shock101.par`08-02-2011`16:42:34 #FullDataName Suspension: Shock Absorber`Big Car Damping` #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 FD_TABLE LINEAR -1410, -5008 -720, -3436 -390, -2324 -210, -1792 -90, -1008 -20, -228 20, 228 90, 596 200, 784 390, 1100 760, 1796 1160, 2560 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Shock Absorber; Big Car Damping #Library : Suspension: Shock Absorber #DataSet : Big Car Damping #Category: #FileID : Shock101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Shock absorber EXIT_PARSFILE Suspensions\Shocks\Shock101.par #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx101.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 384 MX_AUX_COEFFICIENT 384 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 384 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 384 N-m/deg #Category: #FileID : AuxMx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx101.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb104.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+25 mm / -55 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 24, 0 25, 0 26, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -56, -10000 -55, 0 -54, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +25 mm / -55 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +25 mm / -55 mm #Category: Jounce and Rebound Stops #FileID : JncRb104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb104.par #BlueLink5 Suspension: Jounce and Rebound Stops`+25 mm / -55 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.611 CT_FX_COEFFICIENT 1.9e-6 CS_FY_COEFFICIENT -1.4e-6 CS_MZ_COEFFICIENT 6.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.4e-4 CI_MZ_COEFFICIENT -2.75e-4 C_LONG_COEFFICIENT 1.2e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.611 CMP_RSTOP_COEFFICIENT 0.611 ENTER_PARSFILE Suspensions\Springs\Spring107.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`130.5 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 130.5 FS_EXT_COEFFICIENT 130.5 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 130.5 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 130.5 N/mm #Library : Suspension: Spring #DataSet : 130.5 N/mm #Category: #FileID : Spring107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring107.par #BlueLink0 Suspension: Spring`130.5 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+25 mm / -55 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.611 CT_FX_COEFFICIENT 1.9e-6 CS_FY_COEFFICIENT -1.4e-6 CS_MZ_COEFFICIENT 6.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.4e-4 CI_MZ_COEFFICIENT -2.75e-4 C_LONG_COEFFICIENT 1.2e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.611 CMP_RSTOP_COEFFICIENT 0.611 #BlueLink3 Suspension: Spring`130.5 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS B-Class } B-Class, Sports Car - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : B-Class, Sports Car - Front Comp. #Category: CS B-Class #FileID : SuspCmp107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp107_note.txt Front spring rate chosen for a front ride frequency of 2.2 Hz and a front corner weight of 255 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp107_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp107.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`B-Class, Sports Car - Front Comp.` CS B-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin107.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`B-Class, Sports Car - Front Suspension`CS B-Class iside 1 L_TRACK 1480 Y_CL_SUSP 0 M_US 60 *IW_L 0.6 *JNC_DESIGN_L 0 *IW_R 0.6 *JNC_DESIGN_R 0 *TOE_L -0.2 *TOE_R -0.2 *CAMBER_L -1 *CAMBER_R -1 R_US_STR 0.7 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive103.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_DIVE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE #RadioCtrl0 0 SUSP_DIVE_AXLE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { SLA } Front SLA - Dive Angle #Library : Suspension: Dive Angle (Caster Change) #DataSet : Front SLA - Dive Angle #Category: SLA #FileID : Dive103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive103_note.txt NOTE: Sign convention of the CS 7.01b and earlier datasets was reversed and demonstrated a pro-dive suspension. This dataset represents an anti-dive suspension. EXIT_NOTEFILE Suspensions\Dive\Dive103_note.txt EXIT_PARSFILE Suspensions\Dive\Dive103.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX103.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Front SLA - Longitudinal Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { SLA } Front SLA - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Front SLA - Longitudinal Movement #Category: SLA #FileID : SusX103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt Generic SLA Longitudinal movement vs. Jounce EXIT_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX103.par #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber103.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Front SLA - Camber Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.08171 -60, 0.996827 -50, 0.88789 -40, 0.755642 -30, 0.600569 -20, 0.422934 -10, 0.222791 0, 0 10, -0.245764 20, -0.515012 30, -0.808436 40, -1.12692 50, -1.47156 60, -1.84365 70, -2.24474 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { SLA } Front SLA - Camber Change #Library : Suspension: Camber Angle #DataSet : Front SLA - Camber Change #Category: SLA #FileID : Camber103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber103_note.txt Generic SLA Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber103_note.txt EXIT_PARSFILE Suspensions\Camber\Camber103.par #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat103.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Front SLA - Lateral Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { SLA } Front SLA - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Front SLA - Lateral Movement #Category: SLA #FileID : SusLat103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat103_note.txt Generic SLA Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat103_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat103.par #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe103.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Front SLA - Toe Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, 0.292407 -60, 0.237822 -50, 0.187561 -40, 0.141604 -30, 0.099916 -20, 0.062452 -10, 0.029164 0, 0 10, -0.025093 20, -0.046165 30, -0.063264 40, -0.076429 50, -0.085696 60, -0.091086 70, -0.09261 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { SLA } Front SLA - Toe Change #Library : Suspension: Toe Angle #DataSet : Front SLA - Toe Change #Category: SLA #FileID : Toe103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe103_note.txt Generic SLA Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe103_note.txt EXIT_PARSFILE Suspensions\Toe\Toe103.par #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.6 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -1 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.6 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -1 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS B-Class } B-Class, Sports Car - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : B-Class, Sports Car - Front Suspension #Category: CS B-Class #FileID : IndKin107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin107_note.txt Generic SLA front suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin107_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin107.par #BlueLink19 Suspension: Independent System Kinematics`B-Class, Sports Car - Front Suspension` CS B-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire104.par`08-02-2011`16:42:32 #FullDataName Tire`205/45 R17`Performance Tires X_LENGTH 308 Z_LENGTH 308 Y_LENGTH 205 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 0 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup101.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Sports Car`Tires *X_REF_LENGTH 291 *Y_REF_LENGTH 195 *Z_REF_LENGTH 291 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL101.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Sports Car Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive ENTER_PARSFILE Animator\Cameras\Camera103.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Top)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Fixed ENTER_PARSFILE Animator\Frames\Frame103.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Fixed` ADD_REFERENCE_FRAME Fixed #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll LOG_ENTRY Used Dataset: Animator: Reference Frame; Fixed #Library : Animator: Reference Frame #DataSet : Fixed #Category: #FileID : Frame103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame103.par #BlueLink0 Animator: Reference Frame`Fixed` ` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Fixed SET_LOOKPOINT_X -1.2 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 180 SET_ELEVATION 90 SET_DISTANCE 35 *SET_LOOKPOINT_X -1.2 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 180 *SET_ELEVATION 90 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Top) #Library : Animator: Camera Setup #DataSet : Shape Preview (Top) #Category: Shape Preview #FileID : Camera103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera103.par #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Sports Car Tire #Library : Animator: Shape File Link #DataSet : Sports Car Tire #Category: Tires #FileID : AniSTL101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL101.par #BlueLink0 Animator: Shape File Link`Sports Car Tire` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL102.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Sports Car Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\wheel.obj #ENDMYellow SET_COLOR .62 .62 .62 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Sports Car Wheel #Library : Animator: Shape File Link #DataSet : Sports Car Wheel #Category: Tires #FileID : AniSTL102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL102.par #BlueLink1 Animator: Shape File Link`Sports Car Wheel` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL103.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Sports Car Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y 0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Sports Car Stripe #Library : Animator: Shape File Link #DataSet : Sports Car Stripe #Category: Tires #FileID : AniSTL103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL103.par #BlueLink2 Animator: Shape File Link`Sports Car Stripe` Tires` , Shape File x_ref_length 291 y_ref_length 195 z_ref_length 291 ENTER_PARSFILE Animator\Cameras\Camera104.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Side)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview ENTER_PARSFILE Animator\Frames\Frame101.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Yaw for Shape Preview`Shape Preview ADD_REFERENCE_FRAME Shape Preview Yaw for Shape Preview #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_YAW_NAME Yaw WRT_Yaw ANI_Yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Shape Preview } Yaw for Shape Preview #Library : Animator: Reference Frame #DataSet : Yaw for Shape Preview #Category: Shape Preview #FileID : Frame101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame101.par #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 0 SET_ELEVATION 0 SET_DISTANCE 35 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 0 *SET_ELEVATION 0 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Side) #Library : Animator: Camera Setup #DataSet : Shape Preview (Side) #Category: Shape Preview #FileID : Camera104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera104.par #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Sports Car #Library : Animator: Shape Assembly #DataSet : Sports Car #Category: Tires #FileID : StlGroup101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup101.par #BlueLink4 Animator: Shape Assembly`Sports Car` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 205 ENTER_PARSFILE Animator\Sound\Set\SndSet109.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 550 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 550; units = kg; #ENDMYellow ENTER_PARSFILE Animator\Sound\Sample\SndSmp112.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Lateral Slip`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 0.7 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod129.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Force Effects`Tire Lateral Slip Sound Modifiers #MiscYellow0 define_output mod1_<> = abs(fy_<>) /(rated_load_<> * 9.80665) * MuY_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod1_<> SOUNDMOD_INPUT_MIN 0.3 SOUNDMOD_INPUT_LOW 0.6 SOUNDMOD_INPUT_HIGH 0.9 SOUNDMOD_INPUT_MAX 1.2 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod1_<> ANI_mod1_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Lateral Slip Sound Modifiers } Loudness: Lateral Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Force Effects #Category: Tire Lateral Slip Sound Modifiers #FileID : SndMod129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod129.par #BlueLink0 Animator: Sound Modifier`Loudness: Lateral Force Effects` Tire Lateral Slip Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod130.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod2_<> = sin(min(abs(alphL_<>), 15 / dr) * abs(vxcen<>); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod2_<> SOUNDMOD_INPUT_MIN 0.1 SOUNDMOD_INPUT_LOW 0.5 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.5 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_mod2_<> ANI_mod2_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Lateral Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod130.par #BlueLink1 Animator: Sound Modifier`Loudness: Lateral Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Lateral Slip #Library : Animator: Sound Sample #DataSet : Lateral Slip #Category: Tire Sounds #FileID : SndSmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp112.par #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp113.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wheelspin / Brake Lockup`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod131.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Force Effects`Wheelspin / Lockup Sound Modifiers #MiscYellow0 define_output mod3_<> = abs(fx_<>) / (rated_load_<> * 9.80665) * MuX_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod3_<> SOUNDMOD_INPUT_MIN 0.2 SOUNDMOD_INPUT_LOW 0.4 SOUNDMOD_INPUT_HIGH 0.6 SOUNDMOD_INPUT_MAX 0.8 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod3_<> ANI_mod3_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wheelspin / Lockup Sound Modifiers } Loudness: Longitudinal Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Force Effects #Category: Wheelspin / Lockup Sound Modifiers #FileID : SndMod131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod131.par #BlueLink0 Animator: Sound Modifier`Loudness: Longitudinal Force Effects` Wheelspin / Lockup Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod132.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod4_<> = min(abs(KappL_<>), 1.0) * abs(vxcen<>) ; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod4_<> SOUNDMOD_INPUT_MIN 1.5 SOUNDMOD_INPUT_LOW 2.0 SOUNDMOD_INPUT_HIGH 2.5 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.3333 SOUNDMOD_OUTPUT_HIGH 0.6667 SOUNDMOD_OUTPUT_MAX 1.0 WRT_mod4_<> ANI_mod4_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Longitudinal Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod132.par #BlueLink1 Animator: Sound Modifier`Loudness: Longitudinal Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Wheelspin / Brake Lockup #Library : Animator: Sound Sample #DataSet : Wheelspin / Brake Lockup #Category: Tire Sounds #FileID : SndSmp113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp113.par #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 550 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 550 kg Rated Load #Category: Tire Sounds #FileID : SndSet109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet109.par #BlueLink13 Animator: Sound Set`Tire Sounds - 550 kg Rated Load` Tire Sounds` , Animator RRE 298 R0 308 FZ_TIRE_COEFFICIENT 242 FZ_MAX 100000 IT 1.1 L_RELAX_X 28 L_RELAX_Y 610 VLOW_ALPHA 5 RR_C 0.004 RR_V 0.000025 RR_FX 1 OPT_TIRE_COMB 0 ENTER_PARSFILE Tires\Mz\TireMz104.par`08-02-2011`16:42:31 #FullDataName Tire: Aligning Moment`205/45 R17`Performance Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 1348.41, 2696.83, 4045.24, 5393.66, 6742.07, 8090.49, 9438.9, 10787.32 0.5, 20.97, 40.83, 59.32, 76.25, 91.51, 105, 116.65, 126.42 1, 32.44, 63.59, 93.15, 120.91, 146.66, 170.24, 191.46, 210.15 1.5, 32.09, 63.43, 93.92, 123.47, 151.96, 179.23, 205.11, 229.37 2, 26.48, 52.68, 78.68, 104.53, 130.23, 155.75, 181.01, 205.88 2.5, 20.56, 41.09, 61.75, 82.65, 103.87, 125.46, 147.46, 169.87 3, 15.73, 31.55, 47.63, 64.11, 81.1, 98.69, 116.97, 136 3.5, 12.02, 24.19, 36.67, 49.6, 63.09, 77.26, 92.21, 108.04 4, 9.18, 18.54, 28.24, 38.38, 49.1, 60.5, 72.69, 85.78 4.5, 6.99, 14.17, 21.68, 29.64, 38.17, 47.35, 57.29, 68.12 5, 5.26, 10.71, 16.5, 22.73, 29.49, 36.89, 45.02, 53.98 5.5, 3.86, 7.93, 12.33, 17.15, 22.49, 28.44, 35.09, 42.53 6, 2.73, 5.66, 8.92, 12.59, 16.76, 21.52, 26.94, 33.12 6.5, 1.78, 3.77, 6.09, 8.8, 12, 15.76, 20.16, 25.28 7, 0.99, 2.19, 3.7, 5.61, 7.99, 10.91, 14.44, 18.67 7.5, 0.31, 0.83, 1.67, 2.89, 4.57, 6.78, 9.57, 13.03 8, -0.27, -0.33, -0.08, 0.55, 1.63, 3.22, 5.38, 8.18 8.5, -0.78, -1.34, -1.6, -1.48, -0.93, 0.12, 1.73, 3.96 9, -1.23, -2.23, -2.93, -3.27, -3.17, -2.59, -1.46, 0.26 9.5, -1.62, -3.02, -4.11, -4.84, -5.15, -4.98, -4.28, -3 10, -1.97, -3.71, -5.16, -6.24, -6.91, -7.11, -6.79, -5.9 10.5, -2.28, -4.34, -6.1, -7.49, -8.48, -9.01, -9.04, -8.5 11, -2.56, -4.9, -6.94, -8.62, -9.9, -10.73, -11.05, -10.83 11.5, -2.82, -5.41, -7.7, -9.64, -11.18, -12.28, -12.88, -12.94 12, -3.05, -5.87, -8.39, -10.57, -12.34, -13.68, -14.53, -14.86 12.5, -3.26, -6.29, -9.03, -11.41, -13.41, -14.96, -16.04, -16.6 13, -3.45, -6.68, -9.6, -12.19, -14.38, -16.14, -17.43, -18.2 13.5, -3.63, -7.03, -10.14, -12.9, -15.27, -17.22, -18.7, -19.67 14, -3.79, -7.36, -10.63, -13.55, -16.09, -18.21, -19.87, -21.02 14.5, -3.95, -7.66, -11.08, -14.16, -16.86, -19.13, -20.95, -22.27 15, -4.09, -7.94, -11.5, -14.72, -17.56, -19.98, -21.95, -23.43 15.5, -4.22, -8.2, -11.89, -15.25, -18.22, -20.78, -22.89, -24.51 16, -4.34, -8.45, -12.26, -15.73, -18.83, -21.52, -23.76, -25.51 16.5, -4.45, -8.67, -12.6, -16.19, -19.4, -22.21, -24.57, -26.45 17, -4.56, -8.89, -12.92, -16.62, -19.94, -22.85, -25.33, -27.33 17.5, -4.66, -9.09, -13.22, -17.02, -20.44, -23.46, -26.04, -28.16 18, -4.75, -9.27, -13.5, -17.39, -20.91, -24.03, -26.71, -28.93 18.5, -4.84, -9.45, -13.77, -17.75, -21.36, -24.57, -27.35, -29.66 19, -4.93, -9.62, -14.02, -18.08, -21.78, -25.08, -27.94, -30.35 19.5, -5.01, -9.78, -14.26, -18.4, -22.18, -25.56, -28.51, -31 20, -5.08, -9.93, -14.48, -18.7, -22.55, -26.01, -29.04, -31.61 20.5, -5.15, -10.07, -14.69, -18.98, -22.91, -26.44, -29.54, -32.2 21, -5.22, -10.2, -14.89, -19.25, -23.25, -26.85, -30.02, -32.75 21.5, -5.28, -10.33, -15.09, -19.51, -23.57, -27.23, -30.48, -33.27 22, -5.34, -10.45, -15.27, -19.75, -23.87, -27.6, -30.91, -33.77 22.5, -5.4, -10.57, -15.44, -19.98, -24.16, -27.95, -31.32, -34.25 23, -5.46, -10.68, -15.61, -20.21, -24.44, -28.29, -31.72, -34.7 23.5, -5.51, -10.79, -15.77, -20.42, -24.71, -28.61, -32.09, -35.14 24, -5.56, -10.89, -15.92, -20.62, -24.96, -28.91, -32.45, -35.55 24.5, -5.61, -10.98, -16.06, -20.81, -25.2, -29.21, -32.8, -35.95 25, -5.66, -11.08, -16.2, -21, -25.44, -29.49, -33.13, -36.33 26, -5.66, -11.08, -16.2, -21, -25.44, -29.49, -33.13, -36.33 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Performance Tires } 205/45 R17 #Library : Tire: Aligning Moment #DataSet : 205/45 R17 #Category: Performance Tires #FileID : TireMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:31 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz104.par #BlueLink0 Tire: Aligning Moment`205/45 R17` Performance Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy104.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`205/45 R17`Performance Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 1348.41, 2696.83, 4045.24, 5393.66, 6742.07, 8090.49, 9438.9, 10787.32 0.5, 235.28, 461.71, 677.96, 883.33, 1077.34, 1259.69, 1430.17, 1588.65 1, 459.85, 902.69, 1325.96, 1728.27, 2108.7, 2466.63, 2801.63, 3113.42 1.5, 664.55, 1305.19, 1918.27, 2501.78, 3054.38, 3575.14, 4063.37, 4518.63 2, 843.04, 1656.81, 2436.8, 3180.46, 3886.07, 4552.37, 5178.44, 5763.61 2.5, 992.35, 1951.66, 2872.76, 3752.69, 4589.37, 5381.28, 6127.24, 6826.37 3, 1112.66, 2189.91, 3226.13, 4218.04, 5163.29, 6060.13, 6907.13, 7703.2 3.5, 1206.45, 2376.23, 3503.43, 4584.55, 5617.06, 6598.99, 7528.73, 8405 4, 1277.48, 2517.8, 3714.91, 4865.19, 5965.95, 7015.09, 8010.85, 8951.79 4.5, 1329.85, 2622.56, 3872.05, 5074.6, 6227.48, 7328.45, 8375.68, 9367.59 5, 1367.43, 2698.06, 3985.81, 5226.96, 6418.7, 7558.77, 8645.25, 9676.49 5.5, 1393.59, 2750.87, 4065.83, 5334.73, 6554.78, 7723.66, 8839.44, 9900.39 6, 1411.08, 2786.41, 4120.06, 5408.32, 6648.39, 7837.97, 8975.08, 10058 6.5, 1422.06, 2808.96, 4154.83, 5456.01, 6709.73, 7913.68, 9065.89, 10164.61 7, 1428.23, 2821.85, 4175.08, 5484.32, 6746.8, 7960.25, 9122.7, 10232.41 7.5, 1430.84, 2827.6, 4184.57, 5498.2, 6765.77, 7985.01, 9153.97, 10270.91 8, 1430.86, 2828.12, 4186.16, 5501.46, 6771.33, 7993.55, 9166.16, 10287.45 8.5, 1429.01, 2824.85, 4181.99, 5496.94, 6767.06, 7990.12, 9164.22, 10287.65 9, 1425.81, 2818.87, 4173.67, 5486.8, 6755.63, 7977.96, 9151.92, 10275.8 9.5, 1421.68, 2810.96, 4162.41, 5472.64, 6739.06, 7959.5, 9132.08, 10255.15 10, 1416.91, 2801.73, 4149.1, 5455.67, 6718.87, 7936.55, 9106.87, 10228.17 10.5, 1411.71, 2791.62, 4134.42, 5436.8, 6696.2, 7910.51, 9077.89, 10196.72 11, 1406.24, 2780.96, 4118.87, 5416.69, 6671.9, 7882.4, 9046.38, 10162.21 11.5, 1400.64, 2769.99, 4102.81, 5395.85, 6646.61, 7853, 9013.24, 10125.72 12, 1394.99, 2758.89, 4086.53, 5374.66, 6620.8, 7822.9, 8979.18, 10088.05 12.5, 1389.34, 2747.8, 4070.22, 5353.39, 6594.84, 7792.53, 8944.71, 10049.79 13, 1383.76, 2736.81, 4054.04, 5332.23, 6568.97, 7762.21, 8910.21, 10011.41 13.5, 1378.27, 2725.99, 4038.08, 5311.35, 6543.39, 7732.17, 8875.97, 9973.24 14, 1372.89, 2715.4, 4022.43, 5290.85, 6518.23, 7702.59, 8842.2, 9935.52 14.5, 1367.65, 2705.05, 4007.14, 5270.79, 6493.6, 7673.59, 8809.05, 9898.44 15, 1362.55, 2694.98, 3992.24, 5251.23, 6469.56, 7645.25, 8776.61, 9862.12 15.5, 1357.6, 2685.19, 3977.76, 5232.2, 6446.15, 7617.64, 8744.97, 9826.65 16, 1352.8, 2675.7, 3963.7, 5213.72, 6423.39, 7590.77, 8714.17, 9792.09 16.5, 1348.16, 2666.5, 3950.08, 5195.79, 6401.31, 7564.68, 8684.23, 9758.47 17, 1343.66, 2657.6, 3936.88, 5178.42, 6379.9, 7539.37, 8655.16, 9725.81 17.5, 1339.31, 2648.99, 3924.1, 5161.6, 6359.15, 7514.83, 8626.97, 9694.11 18, 1335.1, 2640.66, 3911.74, 5145.32, 6339.06, 7491.05, 8599.64, 9663.36 18.5, 1331.04, 2632.6, 3899.79, 5129.57, 6319.61, 7468.03, 8573.16, 9633.55 19, 1327.11, 2624.81, 3888.23, 5114.32, 6300.79, 7445.73, 8547.51, 9604.66 19.5, 1323.31, 2617.28, 3877.04, 5099.57, 6282.57, 7424.15, 8522.66, 9576.67 20, 1319.64, 2610, 3866.23, 5085.31, 6264.94, 7403.25, 8498.6, 9549.55 20.5, 1316.09, 2602.96, 3855.76, 5071.5, 6247.88, 7383.02, 8475.29, 9523.28 21, 1312.65, 2596.14, 3845.64, 5058.14, 6231.36, 7363.42, 8452.72, 9497.82 21.5, 1309.33, 2589.55, 3835.84, 5045.2, 6215.36, 7344.44, 8430.85, 9473.15 22, 1306.11, 2583.17, 3826.35, 5032.67, 6199.86, 7326.06, 8409.65, 9449.23 22.5, 1303, 2576.99, 3817.16, 5020.53, 6184.85, 7308.24, 8389.11, 9426.04 23, 1299.98, 2571, 3808.26, 5008.78, 6170.3, 7290.97, 8369.19, 9403.55 23.5, 1297.06, 2565.2, 3799.63, 4997.38, 6156.19, 7274.22, 8349.87, 9381.73 24, 1294.23, 2559.58, 3791.26, 4986.32, 6142.51, 7257.97, 8331.12, 9360.56 24.5, 1291.48, 2554.12, 3783.15, 4975.6, 6129.23, 7242.2, 8312.93, 9340.01 25, 1288.81, 2548.83, 3775.27, 4965.19, 6116.34, 7226.89, 8295.26, 9320.05 26, 1288.81, 2548.83, 3775.27, 4965.19, 6116.34, 7226.89, 8295.26, 9320.05 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Performance Tires } 205/45 R17 #Library : Tire: Lateral Force #DataSet : 205/45 R17 #Category: Performance Tires #FileID : TireFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy104.par #BlueLink1 Tire: Lateral Force`205/45 R17` Performance Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx104.par`08-02-2011`16:42:27 #FullDataName Tire: Longitudinal Force`205/45 R17`Performance Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 1348.41, 2696.83, 4045.24, 5393.66, 6742.07, 8090.49, 9438.9, 10787.32 0.02, 704.77, 1395.6, 2070.06, 2726.61, 3363.99, 3981.14, 4577.1, 5151 0.04, 1097.08, 2170.78, 3217.1, 4233.54, 5218.12, 6169.21, 7085.36, 7965.25 0.06, 1274.84, 2521.28, 3734.55, 4911.69, 6050.38, 7148.75, 8205.15, 9218.1 0.08, 1357.64, 2684.31, 3974.85, 5226.07, 6435.52, 7601.19, 8721.37, 9794.51 0.1, 1398.39, 2764.43, 4092.76, 5380.06, 6623.83, 7822.01, 8972.83, 10074.75 0.12, 1418.63, 2804.15, 4151.09, 5456.06, 6716.52, 7930.39, 9095.89, 10211.48 0.14, 1427.94, 2822.34, 4177.66, 5490.49, 6758.29, 7978.95, 9150.69, 10271.97 0.16, 1431.01, 2828.24, 4186.14, 5501.28, 6771.1, 7993.51, 9166.72, 10289.19 0.18, 1430.36, 2826.84, 4183.86, 5498.01, 6766.72, 7987.9, 9159.78, 10280.81 0.2, 1427.44, 2820.98, 4175.04, 5486.2, 6751.9, 7970.06, 9138.92, 10256.94 0.22, 1423.14, 2812.4, 4162.21, 5469.17, 6730.72, 7944.79, 9109.62, 10223.69 0.24, 1418, 2802.18, 4146.98, 5449.02, 6705.74, 7915.08, 9075.3, 10184.87 0.26, 1412.37, 2791.01, 4130.38, 5427.09, 6678.6, 7882.87, 9038.16, 10142.94 0.28, 1406.5, 2779.36, 4113.07, 5404.25, 6650.38, 7849.42, 8999.63, 10099.51 0.3, 1400.53, 2767.53, 4095.51, 5381.1, 6621.8, 7815.57, 8960.68, 10055.64 0.32, 1394.57, 2755.73, 4078, 5358.03, 6593.33, 7781.86, 8921.92, 10012.02 0.34, 1388.69, 2744.08, 4060.73, 5335.29, 6565.28, 7748.68, 8883.79, 9969.12 0.36, 1382.93, 2732.69, 4043.83, 5313.05, 6537.86, 7716.26, 8846.54, 9927.24 0.38, 1377.32, 2721.59, 4027.4, 5291.42, 6511.21, 7684.75, 8810.35, 9886.56 0.4, 1371.89, 2710.84, 4011.47, 5270.47, 6485.39, 7654.23, 8775.32, 9847.2 0.42, 1366.63, 2700.45, 3996.07, 5250.22, 6460.45, 7624.77, 8741.5, 9809.2 0.44, 1361.56, 2690.43, 3981.23, 5230.7, 6436.41, 7596.36, 8708.91, 9772.6 0.46, 1356.68, 2680.77, 3966.93, 5211.9, 6413.26, 7569.02, 8677.55, 9737.38 0.48, 1351.98, 2671.47, 3953.17, 5193.81, 6390.99, 7542.73, 8647.39, 9703.52 0.5, 1347.45, 2662.53, 3939.93, 5176.42, 6369.58, 7517.46, 8618.4, 9670.98 0.52, 1343.1, 2653.94, 3927.21, 5159.7, 6349, 7493.17, 8590.55, 9639.72 0.54, 1338.92, 2645.68, 3914.98, 5143.64, 6329.23, 7469.83, 8563.79, 9609.69 0.56, 1334.9, 2637.73, 3903.23, 5128.2, 6310.23, 7447.41, 8538.08, 9580.85 0.58, 1331.04, 2630.1, 3891.93, 5113.35, 6291.97, 7425.86, 8513.38, 9553.13 0.6, 1327.32, 2622.75, 3881.07, 5099.08, 6274.41, 7405.14, 8489.64, 9526.5 0.62, 1323.75, 2615.69, 3870.62, 5085.36, 6257.53, 7385.22, 8466.81, 9500.89 0.64, 1320.31, 2608.89, 3860.56, 5072.15, 6241.29, 7366.06, 8444.86, 9476.27 0.66, 1316.99, 2602.35, 3850.89, 5059.45, 6225.66, 7347.63, 8423.73, 9452.58 0.68, 1313.81, 2596.05, 3841.57, 5047.21, 6210.62, 7329.88, 8403.4, 9429.78 0.7, 1310.73, 2589.98, 3832.6, 5035.43, 6196.13, 7312.79, 8383.82, 9407.82 0.72, 1307.77, 2584.14, 3823.95, 5024.07, 6182.16, 7296.32, 8364.95, 9386.67 0.74, 1304.92, 2578.5, 3815.61, 5013.12, 6168.7, 7280.45, 8346.77, 9366.28 0.76, 1302.16, 2573.06, 3807.57, 5002.57, 6155.72, 7265.14, 8329.23, 9346.62 0.78, 1299.5, 2567.81, 3799.8, 4992.38, 6143.19, 7250.37, 8312.31, 9327.65 0.8, 1296.94, 2562.74, 3792.31, 4982.54, 6131.1, 7236.11, 8295.98, 9309.34 0.82, 1294.46, 2557.84, 3785.07, 4973.03, 6119.41, 7222.33, 8280.21, 9291.66 0.84, 1292.06, 2553.11, 3778.08, 4963.85, 6108.13, 7209.02, 8264.97, 9274.58 0.86, 1289.74, 2548.54, 3771.31, 4954.97, 6097.21, 7196.16, 8250.23, 9258.07 0.88, 1287.5, 2544.11, 3764.77, 4946.39, 6086.66, 7183.72, 8235.98, 9242.1 0.9, 1285.33, 2539.83, 3758.44, 4938.08, 6076.44, 7171.68, 8222.2, 9226.65 0.92, 1283.23, 2535.68, 3752.31, 4930.03, 6066.56, 7160.02, 8208.85, 9211.69 0.94, 1281.2, 2531.66, 3746.37, 4922.24, 6056.98, 7148.73, 8195.93, 9197.21 0.96, 1279.22, 2527.77, 3740.62, 4914.69, 6047.7, 7137.79, 8183.41, 9183.17 0.98, 1277.31, 2524, 3735.04, 4907.37, 6038.71, 7127.19, 8171.27, 9169.57 1, 1275.46, 2520.34, 3729.63, 4900.27, 6029.98, 7116.91, 8159.5, 9156.39 1.02, 1275.46, 2520.34, 3729.63, 4900.27, 6029.98, 7116.91, 8159.5, 9156.39 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Performance Tires } 205/45 R17 #Library : Tire: Longitudinal Force #DataSet : 205/45 R17 #Category: Performance Tires #FileID : TireFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:27 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx104.par #BlueLink2 Tire: Longitudinal Force`205/45 R17` Performance Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff104.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`205/45 R17`Performance Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 539.36575, -3.948 1078.7315, -7.9302 1618.09725, -11.9585 2157.463, -16.0411 2696.82875, -20.1848 3236.1945, -24.3954 3775.56025, -28.6777 4314.926, -33.0365 4854.29175, -37.476 5393.6575, -42 5933.02325, -46.6122 6472.389, -51.316 7011.75475, -56.1146 7551.1205, -61.0112 8090.48625, -66.0087 8629.852, -71.1099 9169.21775, -76.3176 9708.5835, -81.6343 10247.94925, -87.0626 10787.315, -92.6048 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Performance Tires } 205/45 R17 #Library : Tire: Camber Thrust Coefficient #DataSet : 205/45 R17 #Category: Performance Tires #FileID : CamStiff104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff104.par #BlueLink3 Tire: Camber Thrust Coefficient`205/45 R17` Performance Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Performance Tires } 205/45 R17 #Library : Tire #DataSet : 205/45 R17 #Category: Performance Tires #FileID : Tire104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire104_note.txt 550 kg rated load EXIT_NOTEFILE Tires\Tire\Tire104_note.txt EXIT_PARSFILE Tires\Tire\Tire104.par #BlueLink9 Tire`205/45 R17` Performance Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`205/45 R17` Performance Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp108.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`B-Class, Sports Car - Rear Comp.`CS B-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.797 *R_SPRING_R 0.797 *R_DAMPER_L 0.797 *R_DAMPER_R 0.797 *CT_FX_L -6.3e-6 *CT_FX_R -6.3e-6 *CS_FY_L -8.3e-6 *CS_FY_R -8.3e-6 *CS_MZ_L -1.2e-4 *CS_MZ_R -1.2e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L -3.2e-4 *CI_FY_R -3.2e-4 *CI_MZ_L -5.0e-4 *CI_MZ_R -5.0e-4 *C_LONG_L 3.6e-5 *C_LONG_R 3.6e-5 *C_LAT_L 9.4e-6 *C_LAT_R 9.4e-6 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.797 *R_JOUNCE_R 0.797 *R_REBOUND_L 0.797 *R_REBOUND_R 0.797 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+70 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 68, 0 69, 0 70, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -70, -10000 -69, 0 -68, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +70 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +70 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.2e-4 CI_MZ_COEFFICIENT -5.0e-4 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-6 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 ENTER_PARSFILE Suspensions\Springs\Spring108.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`91 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 91 FS_EXT_COEFFICIENT 91 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 91 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 91 N/mm #Library : Suspension: Spring #DataSet : 91 N/mm #Category: #FileID : Spring108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring108.par #BlueLink0 Suspension: Spring`91 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.2e-4 CI_MZ_COEFFICIENT -5.0e-4 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-6 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 #BlueLink3 Suspension: Spring`91 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS B-Class } B-Class, Sports Car - Rear Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : B-Class, Sports Car - Rear Comp. #Category: CS B-Class #FileID : SuspCmp108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp108_note.txt Rear spring rate chosen for a rear ride frequency of 2.4 Hz and a rear corner weight of 255 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp108_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp108.par #BlueLink17 Suspension: Independent Compliance, Springs, and Dampers`B-Class, Sports Car - Rear Comp.` CS B-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin108.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`B-Class, Sports Car - Rear Suspension`CS B-Class iside 1 L_TRACK 1485 Y_CL_SUSP 0 M_US 60 *IW_L 0.6 *JNC_DESIGN_L 0 *IW_R 0.6 *JNC_DESIGN_R 0 *TOE_L 0.2 *TOE_R 0.2 *CAMBER_L -1.5 *CAMBER_R -1.5 R_US_STR 0.1 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive102.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive`5-Link Rear #RingCtrl0 CONSTANT *SCALAR 0 SUSP_DIVE_CONSTANT 0 #RadioCtrl0 0 SUSP_DIVE_AXLE_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { 5-Link Rear } Rear 5-Link - No Dive #Library : Suspension: Dive Angle (Caster Change) #DataSet : Rear 5-Link - No Dive #Category: 5-Link Rear #FileID : Dive102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table EXIT_PARSFILE Suspensions\Dive\Dive102.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX102.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement`5-Link Rear #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, 2.6892 -60, 1.76827 -50, 1.01123 -40, 0.426265 -30, 0.022328 -20, -0.190752 -10, -0.202151 0, 0 10, 0.428603 20, 1.09748 30, 2.02114 40, 3.21439 50, 4.69179 60, 6.46687 70, 8.5513 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, 2.6892 -60, 1.76827 -50, 1.01123 -40, 0.426265 -30, 0.022328 -20, -0.190752 -10, -0.202151 0, 0 10, 0.428603 20, 1.09748 30, 2.02114 40, 3.21439 50, 4.69179 60, 6.46687 70, 8.5513 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { 5-Link Rear } Rear 5-Link - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Rear 5-Link - Longitudinal Movement #Category: 5-Link Rear #FileID : SusX102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement EXIT_PARSFILE Suspensions\Longitudinal\SusX102.par #BlueLink1 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber102.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Rear 5-Link - Camber Change`5-Link Rear #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.66479 -60, 1.43877 -50, 1.21143 -40, 0.981031 -30, 0.746032 -20, 0.505036 -10, 0.25676 0, 0 10, -0.266403 20, -0.543604 30, -0.832791 40, -1.13524 50, -1.45237 60, -1.78583 70, -2.13754 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { 5-Link Rear } Rear 5-Link - Camber Change #Library : Suspension: Camber Angle #DataSet : Rear 5-Link - Camber Change #Category: 5-Link Rear #FileID : Camber102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber102_note.txt Generic 5-Link rear Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber102_note.txt EXIT_PARSFILE Suspensions\Camber\Camber102.par #BlueLink2 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat102.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Rear 5-Link - Lateral Movement`5-Link Rear #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 5.34878 -60, 3.82136 -50, 2.55534 -40, 1.54581 -30, 0.788587 -20, 0.280222 -10, 0.018009 0, 0 10, 0.22505 20, 0.692872 30, 1.40412 40, 2.36046 50, 3.56474 60, 5.02106 70, 6.73495 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 5.34878 -60, 3.82136 -50, 2.55534 -40, 1.54581 -30, 0.788587 -20, 0.280222 -10, 0.018009 0, 0 10, 0.22505 20, 0.692872 30, 1.40412 40, 2.36046 50, 3.56474 60, 5.02106 70, 6.73495 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { 5-Link Rear } Rear 5-Link - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Rear 5-Link - Lateral Movement #Category: 5-Link Rear #FileID : SusLat102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat102_note.txt Generic 5-Link rear Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat102_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat102.par #BlueLink3 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe102.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Rear 5-Link - Toe Change`5-Link Rear #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, -1.02057 -60, -0.828098 -50, -0.65623 -40, -0.501756 -30, -0.361641 -20, -0.233037 -10, -0.113294 0, 0 10, 0.108974 20, 0.215401 30, 0.320605 40, 0.425353 50, 0.529714 60, 0.632927 70, 0.733253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { 5-Link Rear } Rear 5-Link - Toe Change #Library : Suspension: Toe Angle #DataSet : Rear 5-Link - Toe Change #Category: 5-Link Rear #FileID : Toe102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe102_note.txt Generic 5-Link Rear Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe102_note.txt EXIT_PARSFILE Suspensions\Toe\Toe102.par #BlueLink4 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Left wheel toe IW 0.6 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -1.5 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Right wheel X #BlueLink7 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Right wheel toe IW 0.6 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -1.5 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS B-Class } B-Class, Sports Car - Rear Suspension #Library : Suspension: Independent System Kinematics #DataSet : B-Class, Sports Car - Rear Suspension #Category: CS B-Class #FileID : IndKin108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin108_note.txt Generic 5-Link rear suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin108_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin108.par #BlueLink20 Suspension: Independent System Kinematics`B-Class, Sports Car - Rear Suspension` CS B-Class` , Rear kinematics * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`205/45 R17` Performance Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`205/45 R17` Performance Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass104.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`B-Class, Sports Car Sprung Mass`CS B-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 2330 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 2860 H_H 380 H_CG_SU 375 LX_AXLE 2330 LX_CG_SU 1165 M_SU 1020 IXX_SU 308.6 IYY_SU 1020.0 IZZ_SU 1020.0 IXZ_SU 0 RX_SGUI 0.550 RY_SGUI 1.000 RZ_SGUI 1.000 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1200 Y_LENGTH 1750 *HWC_LF 330 *HWC_RF 330 *HWC_LR 310 *HWC_RR 310 L_FRAME 2400 W_FRAME 1000 X_NODE 1100 K_FRAME 3000 C_FRAME 100 X_ENG 1000 H_WC 310 iside 2 H_WC 310 iaxle 1 iside 1 H_WC 330 iside 2 H_WC 330 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS B-Class } B-Class, Sports Car Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : B-Class, Sports Car Sprung Mass #Category: CS B-Class #FileID : SprMass104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass104.par #BlueLink0 Vehicle: Sprung Mass`B-Class, Sports Car Sprung Mass` CS B-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`B-Class, Sports Car Aero`CS B-Class #CheckBox0 0 X_REF_AERO -1165 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 2330 AREA_AERO 1.6 D_AIR 1.206 ENTER_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FX_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.45 -160, -0.45 -90, 0 -20, 0.325 0, 0.3 20, 0.325 90, 0 160, -0.45 180, -0.45 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fx (Drag) Coefficient; Drag Coefficient = 0.30 #Library : Aerodynamics: Fx (Drag) Coefficient #DataSet : Drag Coefficient = 0.30 #Category: #FileID : AirCFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Drag vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt A nominal drag coefficent of 0.3 is typical of contemporary mid-size sedans, such as Honda Accord, Toyota Camry, and Ford Fusion. The drag coefficient typically increases a few percent as the vehicle develops an aerodynamic sidelsip angle, peaking around 20 degrees. Drag reduces as sidelip increases because the component of the airspeed in the vehicle X direction reduces. EXIT_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force ENTER_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FY_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.5 0, 0 90, 0.5 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fy (Side Force) Coefficient; Side Force Coefficient = 0.5 at 90 deg #Library : Aerodynamics: Fy (Side Force) Coefficient #DataSet : Side Force Coefficient = 0.5 at 90 deg #Category: #FileID : AirCFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aero side force vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt The side force coefficient is typically larger then the drag coefficent, because the width of the vehiicle is less than the length, contirbuting to drag in the lateral direction. Also, the calculation of the coefficient is based on the projected frontal area of the car, while the side force is developed against the larger side area. EXIT_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force ENTER_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par`08-03-2011`08:02:01 #FullDataName Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FZ_AERO_SHAPING_TABLE SPLINE_FLAT -180, 0.4 -135, 0.45 -90, 0.35 -20, 0.185 0, 0.18 20, 0.185 90, 0.35 135, 0.45 180, 0.4 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fz (Lift) Coefficient; Lift Coefficient = 0.18 #Library : Aerodynamics: Fz (Lift) Coefficient #DataSet : Lift Coefficient = 0.18 #Category: #FileID : AirCFz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:01 #VehCode Lift vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt Nearly all passenger cars develop a small positive lift force at highway speeeds. EXIT_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force ENTER_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par`08-02-2011`16:43:55 #FullDataName Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MX_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.3 0, 0 90, 0.3 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mx (Roll Moment) Coefficient; Roll Moment Coefficient = 0.3 at 90 deg #Library : Aerodynamics: Mx (Roll Moment) Coefficient #DataSet : Roll Moment Coefficient = 0.3 at 90 deg #Category: #FileID : AirCMx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Aero Mx vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment ENTER_PARSFILE Aerodynamics\Aero_My\AirCMy104.par`08-03-2011`08:02:56 #FullDataName Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 MY_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.25 -160, -0.25 -90, 0 -20, 0.17 0, 0.15 20, 0.17 90, 0 160, -0.25 180, -0.25 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: My (Pitch Moment) Coefficient; Pitch Moment Coefficient = -0.15 #Library : Aerodynamics: My (Pitch Moment) Coefficient #DataSet : Pitch Moment Coefficient = -0.15 #Category: #FileID : AirCMy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:56 #VehCode Aero My vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_My\AirCMy104.par #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment ENTER_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par`08-03-2011`08:03:05 #FullDataName Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MZ_AERO_SHAPING_TABLE SPLINE -180, 0 -90, 0.05 0, 0 90, -0.05 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mz (Yaw Moment) Coefficient; Yaw Moment Coefficent = 0.05 at 90 deg #Library : Aerodynamics: Mz (Yaw Moment) Coefficient #DataSet : Yaw Moment Coefficent = 0.05 at 90 deg #Category: #FileID : AirCMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:03:05 #VehCode Aero Mz vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS B-Class } B-Class, Sports Car Aero #Library : Aerodynamics: Basic #DataSet : B-Class, Sports Car Aero #Category: CS B-Class #FileID : Aero104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero104_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero104.par #BlueLink1 Aerodynamics: Basic`B-Class, Sports Car Aero` CS B-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh104.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`B-Class, Sports Car`B-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 2390 OBJ_Y_LENGTH 1700 OBJ_Z_LENGTH 1175 *DZ_V 50 *LAT_WC 1575 *LAT_WC_2 1575 *HWC 350 *WHEEL_RATIO 1 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1 SET_SCALE_Y 1 SET_SCALE_Z 1 SET_OFFSET_X 0 SET_OFFSET_Y 0.7875 SET_OFFSET_Z 0.3325 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1 SET_SCALE_Y 1 SET_SCALE_Z 1 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.7875 SET_OFFSET_Z 0.3325 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1 SET_SCALE_Y 1 SET_SCALE_Z 1 SET_OFFSET_X -2.39 SET_OFFSET_Y 0.7875 SET_OFFSET_Z 0.3325 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1 SET_SCALE_Y 1 SET_SCALE_Z 1 SET_ANGLE_X 180 SET_OFFSET_X -2.39 SET_OFFSET_Y -0.7875 SET_OFFSET_Z 0.3325 WRITE_ADD_REFERENCE_FRAME_SHADOW ENTER_PARSFILE Animator\STL\AniSTL104.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Vehicle Shadow Shape`Vehicle Shadow #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\vehicle_shadows\shadow.obj #ENDMYellow SET_COLOR 0.125 0.125 0.125 X_REF_LENGTH 2690 Y_REF_LENGTH 1900 Z_REF_LENGTH 1220 *TRANSPARENCY 0.8 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.8 show_front on show_back off #MiscYellow0 tranclucent_fix on #ENDMYellow #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Vehicle Shadow } Vehicle Shadow Shape #Library : Animator: Shape File Link #DataSet : Vehicle Shadow Shape #Category: Vehicle Shadow #FileID : AniSTL104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL104.par #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT 0.05 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup110.par`08-02-2011`16:43:37 #FullDataName Animator: Shape Assembly`B-Class, Convertible`CS B-Class *COLOR .36 .117 .117 *SCALE_X 1 *SCALE_Y 0.95 *SCALE_Z 1 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.270 *X_REF_LENGTH 2390 *Y_REF_LENGTH 1700 *Z_REF_LENGTH 1175 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 1 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL145.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Body`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\Conv_body.obj #ENDMYellow SET_COLOR 0 0 0.8 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Body #Library : Animator: Shape File Link #DataSet : Conv.: Body #Category: CS Sports Car #FileID : AniSTL145 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL145.par #BlueLink0 Animator: Shape File Link`Conv.: Body` CS Sports Car` , Shape File set_scale_x 1 set_scale_y 0.95 set_scale_z 1 set_offset_x 0 set_offset_y 0 set_offset_z 0.270 ENTER_PARSFILE Animator\STL\AniSTL146.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Details`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\Conv_details.obj #ENDMYellow *SPECULAR 1 *TRANSPARENCY 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 1 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Details #Library : Animator: Shape File Link #DataSet : Conv.: Details #Category: CS Sports Car #FileID : AniSTL146 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL146.par #BlueLink1 Animator: Shape File Link`Conv.: Details` CS Sports Car` , Shape File set_scale_x 1 set_scale_y 0.95 set_scale_z 1 set_offset_x 0 set_offset_y 0 set_offset_z 0.270 ENTER_PARSFILE Animator\STL\AniSTL356.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Windows`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\Conv_Window.obj #ENDMYellow *SPECULAR 1 *TRANSPARENCY 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 1 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Windows #Library : Animator: Shape File Link #DataSet : Conv.: Windows #Category: CS Sports Car #FileID : AniSTL356 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL356.par #BlueLink2 Animator: Shape File Link`Conv.: Windows` CS Sports Car` , Shape File set_scale_x 1 set_scale_y 0.95 set_scale_z 1 set_offset_x 0 set_offset_y 0 set_offset_z 0.270 ENTER_PARSFILE Animator\STL\AniSTL147.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Driver`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\driver.obj #ENDMYellow *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Driver #Library : Animator: Shape File Link #DataSet : Conv.: Driver #Category: CS Sports Car #FileID : AniSTL147 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL147.par #BlueLink13 Animator: Shape File Link`Conv.: Driver` CS Sports Car` , Shape File set_scale_x 1 set_scale_y 0.95 set_scale_z 1 set_offset_x 0 set_offset_y 0 set_offset_z 0.270 x_ref_length 2390 y_ref_length 1700 z_ref_length 1175 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS B-Class } B-Class, Convertible #Library : Animator: Shape Assembly #DataSet : B-Class, Convertible #Category: CS B-Class #FileID : StlGroup110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup110.par #BlueLink1 Animator: Shape Assembly`B-Class, Convertible` CS B-Class` , Vehicle body ENTER_PARSFILE Animator\Sound\Set\SndSet105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Gasoline Engine Vehicle`General Vehicle Sounds ENTER_PARSFILE Animator\Sound\Sample\SndSmp110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power Off`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_0.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod124.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_brake_torque -50; ! maximum engine braking torque define_output v_mod2 = if_gt_0_then(m_engout, 0, pow(m_engout/max_brake_torque, 0.5)); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod2 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod2 ANI_v_mod2 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod124.par #BlueLink0 Animator: Sound Modifier`Power Off Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod125.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 4000 SOUNDMOD_INPUT_HIGH 8000 SOUNDMOD_INPUT_MAX 12000 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod125 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod125.par #BlueLink1 Animator: Sound Modifier`Power Off Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 ENTER_PARSFILE Animator\Sound\Modifier\SndMod126.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Frequency with RPM`Gas Engine Sound Modifiers #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Frequency with RPM #Library : Animator: Sound Modifier #DataSet : Frequency with RPM #Category: Gas Engine Sound Modifiers #FileID : SndMod126 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt This modifier is based on a recording of a 4 cyl engine at 3500 RPM EXIT_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod126.par #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power Off #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power Off #Category: Gas Engine Sounds #FileID : SndSmp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt This sound set uses a sample recorded at closed throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp110.par #BlueLink0 Animator: Sound Sample`4 Cyl. - Power Off` Gas Engine Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power On`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_1.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod127.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_torque 265 define_output v_mod1 = if_gt_0_then(m_engout, pow(m_engout/max_torque, 0.5), 0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod1 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod1 ANI_v_mod1 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod127 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt This modifer is to be applied to power-on conditions, i.e, when the engine torque is positive. EXIT_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod127.par #BlueLink0 Animator: Sound Modifier`Power On Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod128.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod128.par #BlueLink1 Animator: Sound Modifier`Power On Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power On #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power On #Category: Gas Engine Sounds #FileID : SndSmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt This sound set uses a sample recorded at wide open throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp111.par #BlueLink1 Animator: Sound Sample`4 Cyl. - Power On` Gas Engine Sounds` , Sample 2 ENTER_PARSFILE Animator\Sound\Sample\SndSmp105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wind Noise`Wind Noise ADD_3D_SOUND Animator\Audio\Environment\Wind_1_Mono.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 0.3 SOUND_VOL_MIN 0.01 SOUND_VOL_MAX 9.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 9.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod122.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_parameter air_speed_ref 50; units = km/h; define_output v_mod3 = pow(vAir/air_speed_ref, 3.0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod3 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_v_mod3 ANI_v_mod3 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Loudness: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod122.par #BlueLink0 Animator: Sound Modifier`Loudness: Speed Effect` Wind Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod123.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Frequency: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_output v_mod4 = pow(vAir/air_speed_ref, 0.5); #ENDMYellow #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod4 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_v_mod4 ANI_v_mod4 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Frequency: Speed Effect #Library : Animator: Sound Modifier #DataSet : Frequency: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod123.par #BlueLink1 Animator: Sound Modifier`Frequency: Speed Effect` Wind Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Wind Noise } Wind Noise #Library : Animator: Sound Sample #DataSet : Wind Noise #Category: Wind Noise #FileID : SndSmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp105.par #BlueLink2 Animator: Sound Sample`Wind Noise` Wind Noise` , Sample 3 LOG_ENTRY Used Dataset: Animator: Sound Set; { General Vehicle Sounds } Gasoline Engine Vehicle #Library : Animator: Sound Set #DataSet : Gasoline Engine Vehicle #Category: General Vehicle Sounds #FileID : SndSet105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set ENTRY_NOTEFILE Animator\Sound\Set\SndSet105_note.txt The sound samples are based on a 4 cylinder engine. The frequency can be scaled for a different number of cylinders by setting the ncyls parameter here. EXIT_NOTEFILE Animator\Sound\Set\SndSet105_note.txt EXIT_PARSFILE Animator\Sound\Set\SndSet105.par #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL148.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Brake Lights`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\Conv_brakes_on.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 1 SET_SCALE_Y 0.95 SET_SCALE_Z 1 SET_OFFSET_X -0.01 SET_OFFSET_Y 0 SET_OFFSET_Z 0.270 X_REF_LENGTH 2390 Y_REF_LENGTH 1700 Z_REF_LENGTH 1175 *SPECULAR 1 SMOOTH_MAX_ANGLE 45 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Brake Lights #Library : Animator: Shape File Link #DataSet : Conv.: Brake Lights #Category: CS Sports Car #FileID : AniSTL148 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL148.par #BlueLink3 Animator: Shape File Link`Conv.: Brake Lights` CS Sports Car` , Brake lights WRITE_REFERENCE_FRAME_SIZE ENTER_PARSFILE Animator\Cameras\Camera101.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Vehicle Pictures`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 1 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 230 SET_ELEVATION 6 SET_DISTANCE 12 *SET_LOOKPOINT_X 1 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 230 *SET_ELEVATION 6 *SET_DISTANCE 12 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Vehicle Pictures #Library : Animator: Camera Setup #DataSet : Vehicle Pictures #Category: Shape Preview #FileID : Camera101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera ENTRY_NOTEFILE Animator\Cameras\Camera101_note.txt Pause the animation at the very start and center the vehicle in the animator to take a picture for the Animator: Vehicle screen. EXIT_NOTEFILE Animator\Cameras\Camera101_note.txt EXIT_PARSFILE Animator\Cameras\Camera101.par #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera ENTER_PARSFILE Animator\STL\AniSTL114.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Blurred Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\blurred_tire\blurred_tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Blurred Tire #Library : Animator: Shape File Link #DataSet : Blurred Tire #Category: Tires #FileID : AniSTL114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL114.par #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { B-Class Vehicles } B-Class, Sports Car #Library : Animator: Vehicles and Sensor Targets #DataSet : B-Class, Sports Car #Category: B-Class Vehicles #FileID : AniVeh104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh104_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh104_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh104.par #BlueLink2 Animator: Vehicles and Sensor Targets`B-Class, Sports Car` B-Class Vehicles` , Vehicle animator data R_REAR_DRIVE_SC 1 PMAX_SC 125 ENTER_PARSFILE Powertrain\Rwd\RWD101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Rear-Wheel Drive`125 kW, 6-spd., 4.1 Ratio` OPT_PT 2 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine109.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`125 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.16 #CheckBox0 0 OPT_THROTTLE_DELAY 0 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 20.63, 63.42, 84.48, 86.19, 87.17, 87.65, 87.82, 87.86, 87.88, 87.86 633, 24.75, 77.39, 116.38, 124.29, 125.56, 126.07, 126.25, 126.27, 126.27, 126.27 750, 0, 72.82, 123.35, 134.46, 137.46, 138.54, 138.94, 138.98, 138.97, 138.96 1107, -8.25, 58.85, 144.66, 165.55, 173.84, 176.68, 177.74, 177.84, 177.81, 177.74 1463, -12.38, 39.26, 139.43, 173.25, 184.29, 189.29, 191.74, 192.31, 192.68, 196.35 1820, -14.03, 21.45, 123.75, 176.33, 194.74, 201.9, 205.74, 206.78, 207.55, 212.85 2177, -16.81, 8.25, 98.04, 169.73, 198, 214.5, 216.98, 219.45, 221.93, 227.4 2533, -21.1, -5.34, 67.75, 151.73, 199.65, 222.5, 228.53, 232.7, 235.13, 239.25 2890, -25.11, -12.63, 47.01, 127.92, 194.27, 224.92, 237.69, 240.9, 245.85, 249.98 3247, -28.65, -18.38, 31.39, 102.07, 186.21, 222.75, 239.25, 245.85, 250.8, 255.75 3603, -32.14, -23.42, 19.57, 80.44, 167.53, 216.15, 240.08, 247.5, 253.28, 258.23 3960, -35.64, -28.09, 9.84, 63.68, 145.29, 207.19, 237.6, 246.68, 252.45, 255.75 4317, -39.34, -32.81, 0.23, 47.88, 125.2, 197.75, 233.48, 241.73, 247.5, 252.4 4673, -43.19, -37.51, -8.31, 34.33, 104.22, 183.59, 226.88, 235.13, 243.38, 247.5 5030, -47.28, -42.14, -15.9, 22.49, 85.54, 165.8, 218.63, 226.88, 235.13, 239.25 5387, -51.39, -46.87, -22.94, 12.04, 69.6, 147.15, 205.7, 213.68, 224.7, 227.07 5743, -55.99, -51.8, -29.76, 2.35, 55.16, 127.73, 184.51, 197.1, 203.01, 205.34 6100, -61.01, -57.01, -36.57, -6.8, 41.98, 108.88, 161.55, 173.27, 178.77, 180.88 6500, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83 6700, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 125 kW Engine #Library : Powertrain: Engine #DataSet : 125 kW Engine #Category: CS Engine Torque Curves #FileID : Engine109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine109.par #BlueLink0 Powertrain: Engine`125 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 125 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.006425 0.1, 0.006425 0.2, 0.006425 0.3, 0.006425 0.4, 0.006424 0.5, 0.006419 0.6, 0.006386 0.7, 0.006243 0.8, 0.005735 0.9, 0.004185 0.95, 0.002578 0.99, 0.000614 1.01, -0.000614 1.05, -0.002578 1.1, -0.004185 1.2, -0.005735 1.3, -0.006243 1.4, -0.006386 1.5, -0.006419 1.6, -0.006424 1.7, -0.006425 1.8, -0.006425 1.9, -0.006425 2, -0.006425 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 125 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 125 kW Engine #Category: CS Torque Converters #FileID : TC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC101.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 125 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` #RingCtrl0 6 NGEARS 6 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.168 R_GEAR_TR(1) 3.538 R_GEAR_TR(2) 2.06 R_GEAR_TR(3) 1.404 R_GEAR_TR(4) 1.00 R_GEAR_TR(5) 0.713 R_GEAR_TR(6) 0.582 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 T_SHIFT 0.25 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift101.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 1-2 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 874 0.2, 874 0.8, 1653 1, 1653 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 699 0.4, 699 0.8, 1240 1, 1240 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 1-2 Shift #Category: 6-speed #FileID : Shift101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift101.par #BlueLink0 Powertrain: Shift Schedule`6-speed, 1-2 Shift` 6-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift102.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 2-3 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1282 0.2, 1282 0.8, 2840 1, 2840 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1026 0.4, 1026 0.8, 2130 1, 2130 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 2-3 Shift #Category: 6-speed #FileID : Shift102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift102.par #BlueLink1 Powertrain: Shift Schedule`6-speed, 2-3 Shift` 6-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift103.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 3-4 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 4167 1, 4167 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 3125 1, 3125 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 3-4 Shift #Category: 6-speed #FileID : Shift103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift103.par #BlueLink2 Powertrain: Shift Schedule`6-speed, 3-4 Shift` 6-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift104.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 4-5 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2525 0.2, 2525 0.8, 5850 1, 5850 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2020 0.4, 2020 0.8, 4388 1, 4388 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 4-5 Shift #Category: 6-speed #FileID : Shift104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift104.par #BlueLink3 Powertrain: Shift Schedule`6-speed, 4-5 Shift` 6-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift105.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 5-6 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 3093 0.2, 3093 0.8, 8205 1, 8205 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2474 0.4, 2474 0.8, 6154 1, 6154 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 5-6 Shift #Category: 6-speed #FileID : Shift105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift105.par #BlueLink4 Powertrain: Shift Schedule`6-speed, 5-6 Shift` 6-speed` , Shift schedule igear 6 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 6-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 6-Speed Transmission #Category: #FileID : Trans101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans101.par #BlueLink9 Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` ` , Transmission (Extended) IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff102.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Viscous - Gear Ratio 4.1`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_RD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_RD 4.1 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Viscous - Gear Ratio 4.1 #Library : Powertrain: Rear Differential #DataSet : Viscous - Gear Ratio 4.1 #Category: CS Rear Differentials #FileID : R_Diff102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff102.par #BlueLink3 Powertrain: Rear Differential`Viscous - Gear Ratio 4.1` CS Rear Differentials` , Differential IDIFF 2 #BlueLink5 Powertrain: Rear Differential`Viscous - Gear Ratio 4.1` CS Rear Differentials` , Differential LOG_ENTRY Used Dataset: Powertrain: Rear-Wheel Drive; 125 kW, 6-spd., 4.1 Ratio #Library : Powertrain: Rear-Wheel Drive #DataSet : 125 kW, 6-spd., 4.1 Ratio #Category: #FileID : RWD101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode RWD ENTRY_NOTEFILE Powertrain\Rwd\RWD101_note.txt Generic 125 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 125 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\Rwd\RWD101_note.txt EXIT_PARSFILE Powertrain\Rwd\RWD101.par #BlueLink4 Powertrain: Rear-Wheel Drive`125 kW, 6-spd., 4.1 Ratio` ` , Rear-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W104.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`B-Class, Sports Car w/ ABS`CS B-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 OFF_F_SGUI 0.15 OFF_R_SGUI 0.2 ON_F_SGUI 0.09 ON_R_SGUI 0.1 V_F_SGUI 2 V_R_SGUI 2 #RingCtrl0 2 #RingCtrl1 2 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq102.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`200 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 200 MY_BRAKE_COEFFICIENT 200 LOG_ENTRY Used Dataset: Brakes: Torque; 200 N-m/MPa #Library : Brakes: Torque #DataSet : 200 N-m/MPa #Category: #FileID : BrkTrq102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq102.par #BlueLink0 Brakes: Torque`200 N-m/MPa` ` , Left front ENTER_PARSFILE Brakes\Proportioning\BrkProp101.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity Gain` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1 PBK_DL_COEFFICIENT 1 LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity Gain #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity Gain #Category: #FileID : BrkProp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve EXIT_PARSFILE Brakes\Proportioning\BrkProp101.par #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.09 ABS_VMIN 2 iside 2 #BlueLink1 Brakes: Torque`200 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq108.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`100 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 100 MY_BRAKE_COEFFICIENT 100 LOG_ENTRY Used Dataset: Brakes: Torque; 100 N-m/MPa #Library : Brakes: Torque #DataSet : 100 N-m/MPa #Category: #FileID : BrkTrq108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq108.par #BlueLink2 Brakes: Torque`100 N-m/MPa` ` , Left rear #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.2 ABS_SLIP_ON 0.1 ABS_VMIN 2 iside 2 #BlueLink3 Brakes: Torque`100 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS B-Class } B-Class, Sports Car w/ ABS #Library : Brakes: Four-Wheel System #DataSet : B-Class, Sports Car w/ ABS #Category: CS B-Class #FileID : Brk4W104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W104.par #BlueLink6 Brakes: Four-Wheel System`B-Class, Sports Car w/ ABS` CS B-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2104.par`08-02-2011`16:42:43 #FullDataName Steering`B-Class, Sports Car: Power, R&P`CS B-Class *I_COL 0.02 *I_GEAR_IN 0.0001 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 39.5 *L2_LKPO 0 *R1_LKPO 39.5 *R2_LKPO 0 *L1_AKPI 8.0 *L2_AKPI 0 *R1_AKPI 8.0 *R2_AKPI 0 *L1_ACAST 3.5 *L2_ACAST 0 *R1_ACAST 3.5 *R2_ACAST 0 *L1_XKPO -1.0 *L2_XKPO 0 *R1_XKPO -1.0 *R2_XKPO 0 *CF_F 40 *D_RACK_F 4 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 3 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.0001 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iside 2 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 0.1 ENTER_PARSFILE Steering\Compliance\StrCmp101.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`No Steer Compliance` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 STEER_COMP_CONSTANT 0 LOG_ENTRY Used Dataset: Steering System: Compliance; No Steer Compliance #Library : Steering System: Compliance #DataSet : No Steer Compliance #Category: #FileID : StrCmp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp101.par #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 40/360 D_RACK 4 TBAR 2 ENTER_PARSFILE Steering\KinematicsRack2\RkKinAx116.par`08-02-2011`16:42:42 #FullDataName Steering System: Kinematics for 2 Wheels (Rack & Pinion)`B-Class, Sports Car Wheel Kinematics`CS B-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 RACK_KIN_TABLE SPLINE -60, -48.84 -57.6, -46.24 -55.2, -43.71 -52.8, -41.25 -50.4, -38.86 -48, -36.52 -45.6, -34.25 -43.2, -32.04 -40.8, -29.88 -38.4, -27.78 -36, -25.73 -33.6, -23.74 -31.2, -21.78 -28.8, -19.88 -26.4, -18.02 -24, -16.2 -21.6, -14.43 -19.2, -12.69 -16.8, -10.99 -14.4, -9.33 -12, -7.7 -9.6, -6.1 -7.2, -4.53 -4.8, -3 -2.4, -1.49 0, 0 2.4, 1.46 4.8, 2.9 7.2, 4.32 9.6, 5.72 12, 7.1 14.4, 8.46 16.8, 9.81 19.2, 11.15 21.6, 12.47 24, 13.78 26.4, 15.09 28.8, 16.39 31.2, 17.68 33.6, 18.97 36, 20.26 38.4, 21.54 40.8, 22.83 43.2, 24.12 45.6, 25.42 48, 26.73 50.4, 28.05 52.8, 29.39 55.2, 30.74 57.6, 32.12 60, 33.53 ENDTABLE iside 1 #DiagramOne1 RACK_KIN_TABLE SPLINE -60, -33.53 -57.6, -32.12 -55.2, -30.74 -52.8, -29.39 -50.4, -28.05 -48, -26.73 -45.6, -25.42 -43.2, -24.12 -40.8, -22.83 -38.4, -21.54 -36, -20.26 -33.6, -18.97 -31.2, -17.68 -28.8, -16.39 -26.4, -15.09 -24, -13.78 -21.6, -12.47 -19.2, -11.15 -16.8, -9.81 -14.4, -8.46 -12, -7.1 -9.6, -5.72 -7.2, -4.32 -4.8, -2.9 -2.4, -1.46 0, 0 2.4, 1.49 4.8, 3 7.2, 4.53 9.6, 6.1 12, 7.7 14.4, 9.33 16.8, 10.99 19.2, 12.69 21.6, 14.43 24, 16.2 26.4, 18.02 28.8, 19.88 31.2, 21.78 33.6, 23.74 36, 25.73 38.4, 27.78 40.8, 29.88 43.2, 32.04 45.6, 34.25 48, 36.52 50.4, 38.86 52.8, 41.25 55.2, 43.71 57.6, 46.24 60, 48.84 ENDTABLE #RadioCtrl0 0 #RadioCtrl1 0 *SCALAR 0.45 *SCALAR2 0.45 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Rack & Pinion); { CS B-Class } B-Class, Sports Car Wheel Kinematics #Library : Steering System: Kinematics for 2 Wheels (Rack & Pinion) #DataSet : B-Class, Sports Car Wheel Kinematics #Category: CS B-Class #FileID : RkKinAx116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:42 #VehCode Steer kinematics EXIT_PARSFILE Steering\KinematicsRack2\RkKinAx116.par #BlueLink10 Steering System: Kinematics for 2 Wheels (Rack & Pinion)`B-Class, Sports Car Wheel Kinematics` CS B-Class` , Rack to front wheels ENTER_PARSFILE Steering\Str_FBoost\FBoost101.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Force`Symetrical, Speed Sensitive Low Boost Curve` #RingCtrl0 CARPET #RadioCtrl0 0 TC_BOOST 0.08 F_BOOST_MAX 1250 *3D_XLabel Vehicle speed (kph) *3D_YLabel Torsion bar torque (N-m) *3D_ZLabel Power assist force (N) #DiagramTwo0 *3D_DATA 6, 63 ! columns x rows F_BOOST_R_CARPET 0, 0, 20, 50, 80, 120, 200 -16, -1250, -1250, -1250, -1250, -1250, -1250 -15, -1250, -1250, -1250, -1250, -1250, -1250 -14.5, -1250, -1250, -1250, -1250, -1250, -1250 -14, -1250, -1250, -1250, -1250, -1250, -1250 -13.5, -1250, -1250, -1250, -1250, -1250, -1250 -13, -1250, -1250, -1250, -1250, -1250, -1250 -12.5, -1250, -1250, -1250, -1250, -1250, -1250 -12, -1250, -1250, -1250, -1250, -1250, -1250 -11.5, -1250, -1250, -1250, -1250, -1133.4, -1070.66 -11, -1250, -1210, -1213.97, -1140.425, -868.065, -750.255 -10.5, -1250, -1102.5, -1031.56, -907.965, -656.645, -517.11 -10, -1250, -1000, -869.625, -714.895, -490, -350 -9.5, -1250, -902.5, -726.715, -556.015, -360.195, -232.195 -9, -1250, -810, -601.425, -426.61, -260.405, -150.665 -8.5, -1250, -722.5, -492.38, -322.4, -184.805, -95.37 -8, -1250, -640, -398.245, -239.545, -128.45, -58.72 -7.5, -1250, -562.5, -317.72, -174.6, -87.21, -35.04 -7, -1250, -490, -249.56, -124.515, -57.65, -20.175 -6.5, -1250, -422.5, -192.545, -86.6, -36.955, -11.155 -6, -1250, -360, -145.5, -58.505, -22.86, -5.88 -5.5, -1250, -302.5, -107.3, -38.195, -13.565, -2.93 -5, -1250, -250, -76.865, -23.945, -7.655, -1.365 -4.5, -1139.065, -202.5, -53.16, -14.29, -4.07, -0.59 -4, -800, -160, -35.2, -8.025, -2.005, -0.23 -3.5, -535.94, -122.5, -22.06, -4.17, -0.9, -0.08 -3, -337.5, -90, -12.86, -1.96, -0.355, -0.025 -2.5, -195.315, -62.5, -6.795, -0.8, -0.12, -0.005 -2, -100, -40, -3.11, -0.27, -0.03, 0 -1.5, -42.19, -22.5, -1.135, -0.065, -0.005, 0 -1, -12.5, -10, -0.275, -0.01, 0, 0 -0.5, -1.565, -2.5, -0.025, 0, 0, 0 0, 0, 0, 0, 0, 0, 0 0.5, 1.565, 2.5, 0.025, 0, 0, 0 1, 12.5, 10, 0.275, 0.01, 0, 0 1.5, 42.19, 22.5, 1.135, 0.065, 0.005, 0 2, 100, 40, 3.11, 0.27, 0.03, 0 2.5, 195.315, 62.5, 6.795, 0.8, 0.12, 0.005 3, 337.5, 90, 12.86, 1.96, 0.355, 0.025 3.5, 535.94, 122.5, 22.06, 4.17, 0.9, 0.08 4, 800, 160, 35.2, 8.025, 2.005, 0.23 4.5, 1139.065, 202.5, 53.16, 14.29, 4.07, 0.59 5, 1250, 250, 76.865, 23.945, 7.655, 1.365 5.5, 1250, 302.5, 107.3, 38.195, 13.565, 2.93 6, 1250, 360, 145.5, 58.505, 22.86, 5.88 6.5, 1250, 422.5, 192.545, 86.6, 36.955, 11.155 7, 1250, 490, 249.56, 124.515, 57.65, 20.175 7.5, 1250, 562.5, 317.72, 174.6, 87.21, 35.04 8, 1250, 640, 398.245, 239.545, 128.45, 58.72 8.5, 1250, 722.5, 492.38, 322.4, 184.805, 95.37 9, 1250, 810, 601.425, 426.61, 260.405, 150.665 9.5, 1250, 902.5, 726.715, 556.015, 360.195, 232.195 10, 1250, 1000, 869.625, 714.895, 490, 350 10.5, 1250, 1102.5, 1031.56, 907.965, 656.645, 517.11 11, 1250, 1210, 1213.97, 1140.425, 868.065, 750.255 11.5, 1250, 1250, 1250, 1250, 1133.4, 1070.66 12, 1250, 1250, 1250, 1250, 1250, 1250 12.5, 1250, 1250, 1250, 1250, 1250, 1250 13, 1250, 1250, 1250, 1250, 1250, 1250 13.5, 1250, 1250, 1250, 1250, 1250, 1250 14, 1250, 1250, 1250, 1250, 1250, 1250 14.5, 1250, 1250, 1250, 1250, 1250, 1250 15, 1250, 1250, 1250, 1250, 1250, 1250 16, 1250, 1250, 1250, 1250, 1250, 1250 ENDTABLE LOG_ENTRY Used Dataset: Steering: Power Assist Force; Symetrical, Speed Sensitive Low Boost Curve #Library : Steering: Power Assist Force #DataSet : Symetrical, Speed Sensitive Low Boost Curve #Category: #FileID : FBoost101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist force EXIT_PARSFILE Steering\Str_FBoost\FBoost101.par #BlueLink19 Steering: Power Assist Force`Symetrical, Speed Sensitive Low Boost Curve` ` , Front boost force ENTER_PARSFILE Steering\Compliance\StrCmp103.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`B-Class, Sports Car - Steering Comp.`CS B-Class #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 7.0e-07 STEER_COMP_COEFFICIENT 7.0e-07 LOG_ENTRY Used Dataset: Steering System: Compliance; { CS B-Class } B-Class, Sports Car - Steering Comp. #Library : Steering System: Compliance #DataSet : B-Class, Sports Car - Steering Comp. #Category: CS B-Class #FileID : StrCmp103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp103.par #BlueLink13 Steering System: Compliance`B-Class, Sports Car - Steering Comp.` CS B-Class` , Front compliance ENTER_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par`08-02-2011`16:42:40 #FullDataName Steering: Parking Torque for 2 Wheels`Zero` #RingCtrl0 CONSTANT #RingCtrl1 CONSTANT #RadioCtrl0 0 #RadioCtrl1 0 *A_MZ_BETA_R 0.1 *A_MZ_BETA_L 0.1 *SCALAR 0 *SCALAR2 0 iside 2 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 iside 1 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 LOG_ENTRY Used Dataset: Steering: Parking Torque for 2 Wheels; Zero #Library : Steering: Parking Torque for 2 Wheels #DataSet : Zero #Category: #FileID : TqPkAx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Parking Torque EXIT_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS B-Class } B-Class, Sports Car: Power, R&P #Library : Steering #DataSet : B-Class, Sports Car: Power, R&P #Category: CS B-Class #FileID : StrSys2104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2104_note.txt Steering for a vehicle with Wheelbase = 2330 mm Front Track = 1480 mm EXIT_NOTEFILE Steering\System2\StrSys2104_note.txt EXIT_PARSFILE Steering\System2\StrSys2104.par #BlueLink7 Steering`B-Class, Sports Car: Power, R&P` CS B-Class` , Steering system *IMAGE_FIT_MODE 1 *IMAGE_LINK Animator: Vehicles and Sensor Targets`B-Class, Sports Car` B-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS B-Class } B-Class, Sports Car #Library : Vehicle: Assembly #DataSet : B-Class, Sports Car #Category: CS B-Class #FileID : Vehicle105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:23 #VehCode Ind_Ind ENTRY_NOTEFILE Vehicles\Assembly\Vehicle105_note.txt Generic B-Class Sports Car with SLA front and 5-Link rear suspension. B-Class type vehicles include Audi TT, BMW Z4, Mercedes Benz SLK, Honda S2000, and Mazda MX-5. EXIT_NOTEFILE Vehicles\Assembly\Vehicle105_note.txt EXIT_PARSFILE Vehicles\Assembly\Vehicle105.par #BlueLink2 Vehicle: Assembly`B-Class, Sports Car` CS B-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc172.par`09-01-2019`07:52:03 #FullDataName Procedures`chapt3_Radar Active Cruise Control: First Car`BOOK_MPC_Procedures #CheckBox3 0 #RingCtrl0 3 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 TSTOP 40 TSTART 0 SSTART 80 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 81 OPT_DIRECTION 1 Opt_SC 3 ENTER_PARSFILE Control\Driver\Driver105.par`08-02-2011`16:43:30 #FullDataName Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview`Constant Position #RingCtrl0 0 #RingCtrl1 CONSTANT LTARG_CONSTANT 0 #RadioCtrl0 0 AV_SW_MAX_DM 1200 TLAG_DM 0 A_SW_MAX_DM 720 *TPREV 1.5 *SCALAR 0 VLOW_DRIVER 10 #CheckBox0 0 OPT_DRIVER_MODEL 1 #CheckBox1 0 CREATE_PATH_OBJ off TPREV_CONSTANT 1.5 LOG_ENTRY Used Dataset: Control: Steering by the Closed-loop Driver Model; { Constant Position } No Offset, 1.5 sec. Preview #Library : Control: Steering by the Closed-loop Driver Model #DataSet : No Offset, 1.5 sec. Preview #Category: Constant Position #FileID : Driver105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:30 #VehCode Driver path follower EXIT_PARSFILE Control\Driver\Driver105.par #BlueLink27 Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview` Constant Position` , Steering ENTER_PARSFILE Control\Braking\ConBrk101.par`08-02-2011`16:43:32 #FullDataName Control: Braking (Open Loop)`No Open-Loop Braking Pressure` #RingCtrl0 CONSTANT #RadioCtrl0 0 OPT_VMIN -1 *SCALAR 0 PBK_CON_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Braking (Open Loop); No Open-Loop Braking Pressure #Library : Control: Braking (Open Loop) #DataSet : No Open-Loop Braking Pressure #Category: #FileID : ConBrk101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:32 #VehCode Brake control EXIT_PARSFILE Control\Braking\ConBrk101.par #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Gear_at\GearAT101.par`08-02-2011`16:43:31 #FullDataName Control: Shifting (Closed Loop)`AT All Gears` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR NGEARS MODE_TRANS_CONSTANT NGEARS LOG_ENTRY Used Dataset: Control: Shifting (Closed Loop); AT All Gears #Library : Control: Shifting (Closed Loop) #DataSet : AT All Gears #Category: #FileID : GearAT101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:31 #VehCode Closed-loop shift control ENTRY_NOTEFILE Control\Gear_at\GearAT101_note.txt NGEARS is the internal symbol for the number of gears in a transmission. By setting the Mode to NGEARS, CarSim is automatically told to use all of the transmission gears. EXIT_NOTEFILE Control\Gear_at\GearAT101_note.txt EXIT_PARSFILE Control\Gear_at\GearAT101.par #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control ENTER_PARSFILE Control\Speed_s\SpdSta106.par`08-31-2019`20:05:01 #FullDataName Control: Speed (Closed Loop) vs. Station`Sensor Target Vehicle Speed LEO-define`Sensor Target Vehicle OPT_SC 3 #RingCtrl0 LINEAR_FLAT #RadioCtrl0 0 SPEED_KI 0.75 SPEED_KP 0.5 OPT_VMIN -1 BK_PERF_SC 0.16 FPD_PERF_SC 0.1 #CheckBox0 1 OPT_BK_SC 1 #CheckBox1 0 OPT_SC_ENGINE_BRAKING 0 #DiagramOne0 SPEED_STATION_TABLE LINEAR_FLAT 0, 80 100, 105 130, 105 180, 90 200, 80 275, 80 325, 90 405, 105 470, 105 530, 85 540, 80 615, 80 715, 105 745, 105 795, 90 815, 80 890, 80 940, 90 1020, 105 1040, 105 1100, 80 1160, 5 ENDTABLE LOG_ENTRY Used Dataset: Control: Speed (Closed Loop) vs. Station; { Sensor Target Vehicle } Sensor Target Vehicle Speed LEO-define #Library : Control: Speed (Closed Loop) vs. Station #DataSet : Sensor Target Vehicle Speed LEO-define #Category: Sensor Target Vehicle #FileID : SpdSta106 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-31-2019 20:05:01 #VehCode Speed vs. station EXIT_PARSFILE Control\Speed_s\SpdSta106.par #BlueLink32 Control: Speed (Closed Loop) vs. Station`Sensor Target Vehicle Speed LEO-define` Sensor Target Vehicle` , Speed vs. station #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow ENTER_PARSFILE Roads\3D_Road\Road102.par`08-02-2011`16:43:22 #FullDataName Road: 3D Surface (All Properties)`1200 m One Lane`Straight OPT_ROAD 1 iroad 1 ! obsolete March 2011 idz_road 1 RR_SURF 1 DZ_SHADOW 0.005 L_CAMERA_FRONT 0.5 L_CAMERA_REAR 0.5 ENTER_PARSFILE Roads\Center_XY\RoadXY101.par`08-02-2011`16:43:06 #FullDataName Road: X-Y Coordinates of Centerline`Straight` SPATH 0 #CheckBox0 0 OPT_ROAD_LOOP 0 #RadioCtrl0 0 OPT_ROAD 1 #DiagramOne0 YIN_TABLE 0, 0, 0 100, 0, 100 ENDTABLE LOG_ENTRY Used Dataset: Road: X-Y Coordinates of Centerline; Straight #Library : Road: X-Y Coordinates of Centerline #DataSet : Straight #Category: #FileID : RoadXY101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:06 #VehCode Horizontal (X-Y) table EXIT_PARSFILE Roads\Center_XY\RoadXY101.par #BlueLink0 Road: X-Y Coordinates of Centerline`Straight` ` , Centerline geometry ENTER_PARSFILE Roads\Center_Z\RoadZ101.par`08-02-2011`16:43:13 #FullDataName Road: Centerline Elevation`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_ZS_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Centerline Elevation; Flat #Library : Road: Centerline Elevation #DataSet : Flat #Category: #FileID : RoadZ101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Centerline elevation: Z vs S EXIT_PARSFILE Roads\Center_Z\RoadZ101.par #BlueLink1 Road: Centerline Elevation`Flat` ` , Centerline elevation ENTER_PARSFILE Roads\dZ_Map\RdElMap101.par`08-02-2011`16:43:11 #FullDataName Road: Off-Center Elevation Map, S-L Grid`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_DZ_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Off-Center Elevation Map, S-L Grid; Flat #Library : Road: Off-Center Elevation Map, S-L Grid #DataSet : Flat #Category: #FileID : RdElMap101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:11 #VehCode dZ via S-L grid EXIT_PARSFILE Roads\dZ_Map\RdElMap101.par #BlueLink2 Road: Off-Center Elevation Map, S-L Grid`Flat` ` , Off-center elevation 1 ENTER_PARSFILE Roads\Friction\RdFric101.par`08-02-2011`16:43:12 #FullDataName Road: Friction Map, S-L Grid`0.85`Constant Mu OPT_ROAD 1 #RingCtrl0 CONSTANT MU_ROAD_CONSTANT 0.85 #RadioCtrl0 0 *SCALAR 0.85 LOG_ENTRY Used Dataset: Road: Friction Map, S-L Grid; { Constant Mu } 0.85 #Library : Road: Friction Map, S-L Grid #DataSet : 0.85 #Category: Constant Mu #FileID : RdFric101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:12 #VehCode Mu via S-L grid EXIT_PARSFILE Roads\Friction\RdFric101.par #BlueLink3 Road: Friction Map, S-L Grid`0.85` Constant Mu` , Friction ENTER_PARSFILE Roads\Shapes\RdShp102.par`08-02-2011`16:43:14 #FullDataName Road: Animator Surface Shapes`1200 m Road + 200 m Light Grass (One Lane)`Roads NLANES 5 OPTTHRESHOLD 1 #MiscYellow0 # 0.878 0.878 0.878, Road (One Lane), 0.2, 60, 1, -4, m, 4, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 60, 1, 4, m, 7.1, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 60, 3.1, -7.1, m, -100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 60, 3.1, 7.1, m, 100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 60, -0.969, -4, m, -7.1, m, , , -100, 1200, 5, , , #ENDMYellow #CheckBox0 0 MIRROR 0 COLOR(1) 0.878 0.878 0.878 MATERIAL(1) Road (One Lane) SPECULAR(1) 0.2 SCALE(1) 60 LTILES(1) 1 LIN(1) -4 LINUNITS(1) m LOUT(1) 4 LOUTUNITS(1) m SSTART(1) -100 SSTOP(1) 1200 SINT(1) 5 COLOR(2) 0.878 0.878 0.878 MATERIAL(2) Road Transition (Light) SPECULAR(2) 0.1 SCALE(2) 60 LTILES(2) 1 LIN(2) 4 LINUNITS(2) m LOUT(2) 7.1 LOUTUNITS(2) m SSTART(2) -100 SSTOP(2) 1200 SINT(2) 5 COLOR(3) 0.878 0.878 0.878 MATERIAL(3) Grass (Light) SPECULAR(3) 0.1 SCALE(3) 60 LTILES(3) 3.1 LIN(3) -7.1 LINUNITS(3) m LOUT(3) -100 LOUTUNITS(3) m SSTART(3) -100 SSTOP(3) 1200 SINT(3) 5 COLOR(4) 0.878 0.878 0.878 MATERIAL(4) Grass (Light) SPECULAR(4) 0.1 SCALE(4) 60 LTILES(4) 3.1 LIN(4) 7.1 LINUNITS(4) m LOUT(4) 100 LOUTUNITS(4) m SSTART(4) -100 SSTOP(4) 1200 SINT(4) 5 COLOR(5) 0.878 0.878 0.878 MATERIAL(5) Road Transition (Light) SPECULAR(5) 0.1 SCALE(5) 60 LTILES(5) -0.969 LIN(5) -4 LINUNITS(5) m LOUT(5) -7.1 LOUTUNITS(5) m SSTART(5) -100 SSTOP(5) 1200 SINT(5) 5 MTL_FILE Roads\materials\road.mtl LOG_ENTRY Used Dataset: Road: Animator Surface Shapes; { Roads } 1200 m Road + 200 m Light Grass (One Lane) #Library : Road: Animator Surface Shapes #DataSet : 1200 m Road + 200 m Light Grass (One Lane) #Category: Roads #FileID : RdShp102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:14 #VehCode Road shapes EXIT_PARSFILE Roads\Shapes\RdShp102.par #BlueLink4 Road: Animator Surface Shapes`1200 m Road + 200 m Light Grass (One Lane)` Roads` , Road shape definitions add_reference_frame road_stuff_1 reference_frame_ghosts off ENTER_PARSFILE Animator\Groups\Group101.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Partly Cloudy Sky`Skies ENTER_PARSFILE Animator\Frames\Frame104.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Front Point w/o Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Front Point w/o Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camF SET_Y_NAME Y_camF SET_Z_NAME Z_camF WRT_X_camF ANI_X_camF WRT_Y_camF ANI_Y_camF WRT_Z_camF ANI_Z_camF LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Front Point w/o Yaw #Library : Animator: Reference Frame #DataSet : Camera Front Point w/o Yaw #Category: Road Tracking #FileID : Frame104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame104.par #BlueLink0 Animator: Reference Frame`Camera Front Point w/o Yaw` Road Tracking` , Animator data ENTER_PARSFILE Animator\STL\AniSTL115.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Partly Cloudy Sky`Skies #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\Slightly_Cloudy_Sky\sky_road_course.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0 SMOOTH_MAX_ANGLE 30 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 1 set_fogging off #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Skies } Partly Cloudy Sky #Library : Animator: Shape File Link #DataSet : Partly Cloudy Sky #Category: Skies #FileID : AniSTL115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL115.par #BlueLink1 Animator: Shape File Link`Partly Cloudy Sky` Skies` , Animator data ENTER_PARSFILE Animator\STL\AniSTL116.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Complex Land Bowl for Light Grass`Terrain #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\landbowls\complex_land_for_light_grass.obj #ENDMYellow SET_COLOR .8 .8 .8 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 1 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Terrain } Complex Land Bowl for Light Grass #Library : Animator: Shape File Link #DataSet : Complex Land Bowl for Light Grass #Category: Terrain #FileID : AniSTL116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL116.par #BlueLink2 Animator: Shape File Link`Complex Land Bowl for Light Grass` Terrain` , Animator data #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { Skies } Partly Cloudy Sky #Library : Animator: Group #DataSet : Partly Cloudy Sky #Category: Skies #FileID : Group101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group EXIT_PARSFILE Animator\Groups\Group101.par #BlueLink6 Animator: Group`Partly Cloudy Sky` Skies` , Misc. animator set add_reference_frame road_stuff_2 reference_frame_ghosts off add_reference_frame road_stuff_3 reference_frame_ghosts off add_reference_frame road_stuff_4 reference_frame_ghosts off iroad 2 ! obsolete March 2011 idz_road 2 ENTER_PARSFILE Animator\Cameras\Camera105.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 1 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 5 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 5 SET_DISTANCE 49 *SET_LOOKPOINT_X 5 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 5 *SET_DISTANCE 49 GHOST_COUNT 0 *LIGHT_X -1000 *LIGHT_Y -1000 *LIGHT_Z 10000 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 30 SUN_POSITION -1000 -1000 10000 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } Rear View , Road Ref. (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View , Road Ref. (Frt. Facing) #Category: Road Reference #FileID : Camera105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera105.par #BlueLink5 Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)` Road Reference` , Camera ENTER_PARSFILE Roads\3D_Road\Road102.ani`07-20-2011`03:07:16 add_reference_frame The Road reference_frame_ghosts off add_obj Roads\3D_Road\Road102_1.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.2 0.2 0.2 add_obj Roads\3D_Road\Road102_2.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_3.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_4.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_5.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 EXIT_PARSFILE Roads\3D_Road\Road102.ani LOG_ENTRY Used Dataset: Road: 3D Surface (All Properties); { Straight } 1200 m One Lane #Library : Road: 3D Surface (All Properties) #DataSet : 1200 m One Lane #Category: Straight #FileID : Road102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:22 #VehCode 3D road EXIT_PARSFILE Roads\3D_Road\Road102.par #BlueLink0 Road: 3D Surface (All Properties)`1200 m One Lane` Straight` , Misc. ENTER_PARSFILE Plot\Setup\Plot109.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Longitudinal Speed`Vehicle Motion ENTER_PARSFILE Plot\Transform\PlotTfm101.par`08-02-2011`16:43:01 #FullDataName Plot: Data Transform`No Filter` #RingCtrl0 None FILTER None LOG_ENTRY Used Dataset: Plot: Data Transform; No Filter #Library : Plot: Data Transform #DataSet : No Filter #Category: #FileID : PlotTfm101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:01 #VehCode Plot data transform EXIT_PARSFILE Plot\Transform\PlotTfm101.par #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) ENTER_PARSFILE Plot\Format\PlotFmt101.par`08-02-2011`16:43:00 #FullDataName Plot: Format`Default Plot Settings` #RingCtrl0 Axes AXES Axes #RingCtrl1 Noframe FRAME Noframe #RingCtrl2 NoGrid GRID NoGrid #RingCtrl3 FileTitle LEGENDFILE FileTitle #RingCtrl4 RigidBodyName LEGENDDATA_1 RigidBodyName #RingCtrl5 AutoLocation LEGENDLOCATION AutoLocation #RingCtrl6 Regular TITLEFONTSTYLE Regular #RingCtrl7 Regular LEGENDFONTSTYLE Regular #RingCtrl8 Regular LABELFONTSTYLE Regular #RingCtrl9 Regular TICLABELFONTSTYLE Regular #RingCtrl10 0 TITLELOCATION 0 LEGENDPERCENT 40 TITLEFONTSIZE 14 LEGENDFONTSIZE 12 LABELFONTSIZE 14 TICLABELFONTSIZE 12 TITLEFONTNAME Arial LEGENDFONTNAME Arial LABELFONTNAME Arial TICLABELFONTNAME Arial SYMBOLS 10,1,2,3,4,5,6,7,8,9,10,4,1,2,3,4,5,6,7,8 LINESTYL 1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1 COLORS 8,2,3,7,4,0,6,14,8,9,10,11,12,13,14,6,1,2,0,4 LOG_ENTRY Used Dataset: Plot: Format; Default Plot Settings #Library : Plot: Format #DataSet : Default Plot Settings #Category: #FileID : PlotFmt101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot format EXIT_PARSFILE Plot\Format\PlotFmt101.par #MiscYellow0 PLOTCHANNELS Vx, Time PLOTCHANNELS VxTarget, Time PLOTCHANNELS Vx_2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Longitudinal Speed LOG_ENTRY Used Dataset: Plot: Setup; { Vehicle Motion } Longitudinal Speed #Library : Plot: Setup #DataSet : Longitudinal Speed #Category: Vehicle Motion #FileID : Plot109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot109.par #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot ENTER_PARSFILE Plot\Setup\Plot118.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Throttle: Control Input`Controls: Driver #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Throttle, Time PLOTCHANNELS Thr_Eng, Time #ENDMYellow YAXISLABEL Throttle - #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Throttle: Control Input LOG_ENTRY Used Dataset: Plot: Setup; { Controls: Driver } Throttle: Control Input #Library : Plot: Setup #DataSet : Throttle: Control Input #Category: Controls: Driver #FileID : Plot118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup ENTRY_NOTEFILE Plot\Setup\Plot118_note.txt The variable "Throttle" is the sum of any throttle control calculated by the CarSim closed loop speed controller and any specified open-loop throttle. The source of open-loop throttle command may be from internal tables, VS commmands, or external sources like Simulink or the API. By using the sum of these 2 command sources you can implement things like driver aids for active safety that augment actions taken by the driver. When switching between open loop and closed loop control, take care that no unintended open loop control is "left over" by supplying a data set that sets the open loop component to zero. The variable "Thr_Eng" is the value of "Throttle", optionally modified by the application of a time constant to simulate the transient delay in changes in engine torque. EXIT_NOTEFILE Plot\Setup\Plot118_note.txt EXIT_PARSFILE Plot\Setup\Plot118.par #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot ENTER_PARSFILE Plot\Setup\Plot203.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Wheel Cylinder Pressures`Braking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS PbkCh_L1, Time PLOTCHANNELS PbkCh_R1, Time PLOTCHANNELS PbkCh_L2, Time PLOTCHANNELS PbkCh_R2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Wheel Cylinder Pressures LOG_ENTRY Used Dataset: Plot: Setup; { Braking } Wheel Cylinder Pressures #Library : Plot: Setup #DataSet : Wheel Cylinder Pressures #Category: Braking #FileID : Plot203 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot203.par #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot ENTER_PARSFILE Plot\Setup\Plot141.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Y vs. X -- Trajectory`Tracking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Yo, Xo PLOTCHANNELS Y_Design, X_Design PLOTCHANNELS Y_Target, X_Target PLOTCHANNELS Yo_2, Xo_2 #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Y vs. X -- Trajectory LOG_ENTRY Used Dataset: Plot: Setup; { Tracking } Y vs. X -- Trajectory #Library : Plot: Setup #DataSet : Y vs. X -- Trajectory #Category: Tracking #FileID : Plot141 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot141.par #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } chapt3_Radar Active Cruise Control: First Car #Library : Procedures #DataSet : chapt3_Radar Active Cruise Control: First Car #Category: BOOK_MPC_Procedures #FileID : Proc172 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 07:52:03 #VehCode Procedure EXIT_PARSFILE Procedures\Proc172.par #BlueLink28 Procedures`chapt3_Radar Active Cruise Control: First Car` BOOK_MPC_Procedures` , Procedure ENTER_PARSFILE Runs\Run286.par`09-01-2019`09:12:01 #FullDataName CarSim Run Control`Chapter3_MPC_ACC: Second Car (Ext. Sen.)`BOOK_MPC_Examples #VehicleCode Ind_Ind OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex134.par`09-01-2019`08:51:54 #FullDataName Models: Simulink`chapt3_Radar Active Cruise: Second Car (Ext. Sen.)`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV\LEO_MPCACC_VLV1.mdl #RunSimCat Ind_Ind`C:\Users\Public\Documents\CarSim_Data\Extensions\Simulink\Multi_Vehicle\i_i2_64.dll #RingCtrl0 1 #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 1 *USE_DIFF_SOLVERS 1 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV *SIM_CODE1 Ind_Ind *SIM_PATH1 C:\Users\Public\Documents\CarSim_Data\Extensions\Simulink\Multi_Vehicle\i_i2_64.dll *ALTERNATE_PATH E:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV ENTER_PARSFILE IO_Channels\I_Channels\I_Ch121.par`08-30-2019`23:47:24 #FullDataName I/O Channels: Import`Radar ACC Import (Ext. Sen.)`MPC_BOOK_Sim_Imports *README_FILE Programs\solvers\ReadMe\i_i_imports_tab.txt #MiscYellow0 IMP_THROTTLE_ENGINE Add 0.0 1 IMP_PCON_BK Add 0.0 1 IMP_AUX1 Add 0.0 0 #ENDMYellow #RingCtrl0 0 LOG_ENTRY Used Dataset: I/O Channels: Import; { MPC_BOOK_Sim_Imports } Radar ACC Import (Ext. Sen.) #Library : I/O Channels: Import #DataSet : Radar ACC Import (Ext. Sen.) #Category: MPC_BOOK_Sim_Imports #FileID : I_Ch121 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-30-2019 23:47:24 #VehCode Import Channels EXIT_PARSFILE IO_Channels\I_Channels\I_Ch121.par #BlueLink0 I/O Channels: Import`Radar ACC Import (Ext. Sen.)` MPC_BOOK_Sim_Imports` , Import ENTER_PARSFILE IO_Channels\O_Channels\O_Ch125.par`08-31-2019`10:11:22 #FullDataName I/O Channels: Export`Radar ACC Export (Ext. Sen.)`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Vx EXP_Xo EXP_Yo EXP_Yaw EXP_Ax #MiscYellow0 #Number of Selected Channels: 5 #CHN_NAME: Vx #CHN_NAME: Xo #CHN_NAME: Yo #CHN_NAME: Yaw #CHN_NAME: Ax #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } Radar ACC Export (Ext. Sen.) #Library : I/O Channels: Export #DataSet : Radar ACC Export (Ext. Sen.) #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch125 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-31-2019 10:11:22 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch125.par #BlueLink1 I/O Channels: Export`Radar ACC Export (Ext. Sen.)` MPC_BOOK_Sim_Exports` , Export ENTER_PARSFILE Generic\VS_commands\GVS107.par`08-02-2011`16:43:24 #FullDataName Generic VS Commands`Install Obsolete CarSim 8.03 Generic Variables`Install Obsolete CarSim 8.03 Generic Variables #VehCode #MiscYellow0 ! There were 10 outputs with the root keyword "flag". These were simply given a ! value in a data field (yellow field), and written to the outputs. ! The default value of flag 1 was set to the run ID number. ! Change this if you used it for another purpose. define_output flag_1 = ID_RUN; ! ! The remaining flags had a default value of zero. define_output flag_2 = 0; define_output flag_3 = 0; define_output flag_4 = 0; define_output flag_5 = 0; define_output flag_6 = 0; define_output flag_7 = 0; define_output flag_8 = 0; define_output flag_9 = 0; define_output flag_10 = 0; ! ! There were 20 import variables with the root keyword IMP_AUX. ! They could be imported from external code for plotting, use as ! event triggers, etc. define_import imp_aux1 0; define_import imp_aux2 0; define_import imp_aux3 0; define_import imp_aux4 0; define_import imp_aux5 0; define_import imp_aux6 0; define_import imp_aux7 0; define_import imp_aux8 0; define_import imp_aux9 0; define_import imp_aux10 0; define_import imp_aux11 0; define_import imp_aux12 0; define_import imp_aux13 0; define_import imp_aux14 0; define_import imp_aux15 0; define_import imp_aux16 0; define_import imp_aux17 0; define_import imp_aux18 0; define_import imp_aux19 0; define_import imp_aux20 0; ! ! Each auxiliary import had an associated output variable, to automatically ! pass the imported value to the output file. define_output InpAux1 = imp_aux1; define_output InpAux2 = imp_aux2; define_output InpAux3 = imp_aux3; define_output InpAux4 = imp_aux4; define_output InpAux5 = imp_aux5; define_output InpAux6 = imp_aux6; define_output InpAux7 = imp_aux7; define_output InpAux8 = imp_aux8; define_output InpAux9 = imp_aux9; define_output InpAux10 = imp_aux10; define_output InpAux11 = imp_aux11; define_output InpAux12 = imp_aux12; define_output InpAux13 = imp_aux13; define_output InpAux14 = imp_aux14; define_output InpAux15 = imp_aux15; define_output InpAux16 = imp_aux16; define_output InpAux17 = imp_aux17; define_output InpAux18 = imp_aux18; define_output InpAux19 = imp_aux19; define_output InpAux20 = imp_aux20; ! ! 12 table functions with the root keyword "generic" were supported. ! This table definition creates 12 isntances, and automatically assigns ! the index "igeneric" for their use. define_table generic 12 #ENDMYellow LOG_ENTRY Used Dataset: Generic VS Commands; { Install Obsolete CarSim 8.03 Generic Variables } Install Obsolete CarSim 8.03 Generic Variables #Library : Generic VS Commands #DataSet : Install Obsolete CarSim 8.03 Generic Variables #Category: Install Obsolete CarSim 8.03 Generic Variables #FileID : GVS107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:24 #VehCode ENTRY_NOTEFILE Generic\VS_commands\GVS107_note.txt Support has been DROPPED for the CarSim output variables "flag", InpAux1 through InpAux 20, import variables imp_aux1 through imp_aux20, and tables generic(1) through generic(12). Through version 8.03, CarSim included a number of built-in "generic" output variables, import variables, and configurable functions (tables). VS Commands now allow you to create your own outputs, imports, and configurable functions, as well as parameters and variables. This VS Commands dataset installs all of the built-in variables supported before 8.1. To use them, this dataset must be linked so the definitions occur BEFORE any reference to the variables, or just use this example to create them yourself in the appropriate place. RECOMMENDED PRACTICE: Create new variables with names that are meaningful for your specific use, and don't use the old generic variables at all. EXIT_NOTEFILE Generic\VS_commands\GVS107_note.txt EXIT_PARSFILE Generic\VS_commands\GVS107.par #BlueLink2 Generic VS Commands`Install Obsolete CarSim 8.03 Generic Variables` Install Obsolete CarSim 8.03 Generic Variables` , Misc. Link #MiscYellow1 simfile LEO_MPC_ACC_ExtSen_Car2.sim #ENDMYellow LIVE_SERVER_UPDATE_FREQ_MAX 60 LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } chapt3_Radar Active Cruise: Second Car (Ext. Sen.) #Library : Models: Simulink #DataSet : chapt3_Radar Active Cruise: Second Car (Ext. Sen.) #Category: BOOK_MPC_Models #FileID : Cmex134 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 08:51:54 #VehCode EXIT_PARSFILE Models\Simulink\Cmex134.par #BlueLink12 Models: Simulink`chapt3_Radar Active Cruise: Second Car (Ext. Sen.)` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera107.par`08-02-2011`16:43:55 #FullDataName Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)`Vehicle Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw ENTER_PARSFILE Animator\Frames\Frame106.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw`Cameras ADD_REFERENCE_FRAME Cameras Camera Tracking X-Y-Z-Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_YAW_NAME yaw #MiscYellow0 cam_global_ambient .4 .4 .4 1 #ENDMYellow WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_yaw ANI_yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Cameras } Camera Tracking X-Y-Z-Yaw #Library : Animator: Reference Frame #DataSet : Camera Tracking X-Y-Z-Yaw #Category: Cameras #FileID : Frame106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame106.par #BlueLink0 Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw` Cameras` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 15 SET_DISTANCE 36 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 15 *SET_DISTANCE 36 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 37 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Vehicle Reference } Rear View High, Veh. Ref., (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View High, Veh. Ref., (Frt. Facing) #Category: Vehicle Reference #FileID : Camera107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera107.par #BlueLink0 Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)` Vehicle Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 1 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 0.753 0.753 0.753 SET_RUN_COLOR 0.753 0.753 0.753 FLAG_10 286 ID_RUN 286 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle123.par`08-02-2011`16:42:24 #FullDataName Vehicle: Assembly`E-Class, Sedan`CS E-Class #VehCode Ind_Ind #CheckBox0 0 #RingCtrl0 3 OPT_PT 3 #RingCtrl1 1 #RingCtrl2 1 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp111.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Front Comp.`CS E-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.8613 *R_SPRING_R 0.8613 *R_DAMPER_L 0.8681 *R_DAMPER_R 0.8681 *CT_FX_L -1.9e-6 *CT_FX_R -1.9e-6 *CS_FY_L -3.3e-5 *CS_FY_R -3.3e-5 *CS_MZ_L 1.4e-4 *CS_MZ_R 1.4e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 5e-5 *CI_FY_R 5e-5 *CI_MZ_L -5.3e-5 *CI_MZ_R -5.3e-5 *C_LONG_L 2.0e-4 *C_LONG_R 2.0e-4 *C_LAT_L 2.2e-5 *C_LAT_R 2.2e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.8681 *R_JOUNCE_R 0.8681 *R_REBOUND_L 0.8681 *R_REBOUND_R 0.8681 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb105.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+80 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 78, 0 79, 0 80, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -50, -10000 -49, 0 -48, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +80 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +80 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb105.par #BlueLink5 Suspension: Jounce and Rebound Stops`+80 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.8613 CMP_DAMP_COEFFICIENT 0.8681 CT_FX_COEFFICIENT -1.9e-6 CS_FY_COEFFICIENT -3.3e-5 CS_MZ_COEFFICIENT 1.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 5e-5 CI_MZ_COEFFICIENT -5.3e-5 C_LONG_COEFFICIENT 2.0e-4 C_LAT_COEFFICIENT 2.2e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.8681 CMP_RSTOP_COEFFICIENT 0.8681 ENTER_PARSFILE Suspensions\Springs\Spring109.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`34 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 34 FS_EXT_COEFFICIENT 34 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 3.0 SPRING_EXT_BETA 3.0 *SCALAR 34 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 34 N/mm #Library : Suspension: Spring #DataSet : 34 N/mm #Category: #FileID : Spring109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring109.par #BlueLink0 Suspension: Spring`34 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+80 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.8613 CMP_DAMP_COEFFICIENT 0.8681 CT_FX_COEFFICIENT -1.9e-6 CS_FY_COEFFICIENT -3.3e-5 CS_MZ_COEFFICIENT 1.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 5e-5 CI_MZ_COEFFICIENT -5.3e-5 C_LONG_COEFFICIENT 2.0e-4 C_LAT_COEFFICIENT 2.2e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.8681 CMP_RSTOP_COEFFICIENT 0.8681 #BlueLink3 Suspension: Spring`34 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS E-Class } E-Class, Sedan - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : E-Class, Sedan - Front Comp. #Category: CS E-Class #FileID : SuspCmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp111_note.txt Front spring rate chosen for a front ride frequency of 1.2 Hz and a front corner weight of 446 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp111_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp111.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Front Comp.` CS E-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin109.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`E-Class, Sedan - Front Suspension`CS E-Class iside 1 L_TRACK 1600 Y_CL_SUSP 0 M_US 90 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0.2 *TOE_R 0.2 *CAMBER_L -0.15 *CAMBER_R -0.15 R_US_STR 0.8 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -0.15 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -0.15 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS E-Class } E-Class, Sedan - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : E-Class, Sedan - Front Suspension #Category: CS E-Class #FileID : IndKin109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin109_note.txt Generic Front SLA suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin109_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin109.par #BlueLink19 Suspension: Independent System Kinematics`E-Class, Sedan - Front Suspension` CS E-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire109.par`08-02-2011`16:42:33 #FullDataName Tire`225/60 R18`Touring Tires X_LENGTH 364 Z_LENGTH 364 Y_LENGTH 225 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup108.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Euro Sedan Tire`Tires *X_REF_LENGTH 291 *Y_REF_LENGTH 195 *Z_REF_LENGTH 291 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL136.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Tire #Library : Animator: Shape File Link #DataSet : Euro. Sedan Tire #Category: Tires #FileID : AniSTL136 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL136.par #BlueLink0 Animator: Shape File Link`Euro. Sedan Tire` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL137.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\wheel.obj #ENDMYellow SET_COLOR .62 .62 .62 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 40 *IMAGE_FIT_MODE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Wheel #Library : Animator: Shape File Link #DataSet : Euro. Sedan Wheel #Category: Tires #FileID : AniSTL137 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL137.par #BlueLink1 Animator: Shape File Link`Euro. Sedan Wheel` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL138.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y 0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Stripe #Library : Animator: Shape File Link #DataSet : Euro. Sedan Stripe #Category: Tires #FileID : AniSTL138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL138.par #BlueLink2 Animator: Shape File Link`Euro. Sedan Stripe` Tires` , Shape File x_ref_length 291 y_ref_length 195 z_ref_length 291 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Euro Sedan Tire #Library : Animator: Shape Assembly #DataSet : Euro Sedan Tire #Category: Tires #FileID : StlGroup108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup108.par #BlueLink4 Animator: Shape Assembly`Euro Sedan Tire` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 225 ENTER_PARSFILE Animator\Sound\Set\SndSet111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 800 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 800; units = kg; #ENDMYellow #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 800 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 800 kg Rated Load #Category: Tire Sounds #FileID : SndSet111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet111.par #BlueLink13 Animator: Sound Set`Tire Sounds - 800 kg Rated Load` Tire Sounds` , Animator RRE 353 R0 364 FZ_TIRE_COEFFICIENT 278 FZ_MAX 100000 IT 0 L_RELAX_X 38 L_RELAX_Y 764 VLOW_ALPHA 5 RR_C 0.0041 RR_V 0.00003 RR_FX 1 OPT_TIRE_COMB 1 R_TIRE_COMB 1.1 ENTER_PARSFILE Tires\Mz\TireMz107.par`08-02-2011`16:42:32 #FullDataName Tire: Aligning Moment`225/60 R18`Touring Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.5, 13.74, 26.59, 38.42, 49.18, 58.84, 67.4, 74.85, 81.2 1, 27.52, 53.29, 77.08, 98.77, 118.28, 135.59, 150.69, 163.58 1.5, 38.52, 75, 109.07, 140.54, 169.23, 195.05, 217.91, 237.76 2, 42.77, 84.07, 123.55, 160.94, 195.99, 228.45, 258.1, 284.74 2.5, 40.05, 79.6, 118.43, 156.31, 192.98, 228.18, 261.6, 292.94 3, 33.77, 67.76, 101.91, 136.11, 170.21, 203.99, 237.23, 269.64 3.5, 26.96, 54.52, 82.71, 111.52, 140.91, 170.77, 200.97, 231.34 4, 21, 42.71, 65.25, 88.66, 112.96, 138.12, 164.12, 190.86 4.5, 16.15, 33.03, 50.78, 69.47, 89.15, 109.84, 131.57, 154.32 5, 12.31, 25.32, 39.18, 53.96, 69.73, 86.54, 104.45, 123.47 5.5, 9.27, 19.2, 29.94, 41.55, 54.11, 67.68, 82.33, 98.09 6, 6.85, 14.32, 22.54, 31.58, 41.53, 52.43, 64.36, 77.37 6.5, 4.9, 10.38, 16.56, 23.52, 31.32, 40.03, 49.71, 60.42 7, 3.3, 7.16, 11.68, 16.92, 22.96, 29.86, 37.67, 46.45 7.5, 1.99, 4.5, 7.63, 11.46, 16.04, 21.43, 27.68, 34.85 8, 0.89, 2.27, 4.25, 6.89, 10.24, 14.36, 19.3, 25.11 8.5, -0.04, 0.39, 1.39, 3.03, 5.34, 8.39, 12.21, 16.87 9, -0.84, -1.22, -1.05, -0.28, 1.15, 3.28, 6.16, 9.83 9.5, -1.52, -2.6, -3.15, -3.12, -2.46, -1.12, 0.94, 3.76 10, -2.12, -3.81, -4.98, -5.59, -5.59, -4.94, -3.59, -1.51 10.5, -2.64, -4.86, -6.59, -7.76, -8.33, -8.28, -7.55, -6.12 11, -3.1, -5.79, -8, -9.66, -10.75, -11.23, -11.05, -10.18 11.5, -3.51, -6.62, -9.25, -11.36, -12.9, -13.84, -14.14, -13.77 12, -3.88, -7.36, -10.37, -12.87, -14.81, -16.17, -16.9, -16.98 12.5, -4.21, -8.02, -11.38, -14.22, -16.53, -18.26, -19.38, -19.86 13, -4.5, -8.62, -12.28, -15.45, -18.08, -20.14, -21.6, -22.44 13.5, -4.77, -9.16, -13.1, -16.55, -19.48, -21.84, -23.62, -24.78 14, -5.02, -9.65, -13.85, -17.56, -20.75, -23.39, -25.45, -26.91 14.5, -5.24, -10.1, -14.53, -18.48, -21.91, -24.81, -27.13, -28.85 15, -5.44, -10.52, -15.16, -19.32, -22.98, -26.1, -28.66, -30.62 15.5, -5.63, -10.9, -15.73, -20.1, -23.96, -27.29, -30.06, -32.25 16, -5.8, -11.25, -16.26, -20.81, -24.86, -28.38, -31.36, -33.75 16.5, -5.97, -11.57, -16.75, -21.47, -25.69, -29.4, -32.55, -35.14 17, -6.11, -11.87, -17.21, -22.08, -26.47, -30.34, -33.66, -36.42 17.5, -6.25, -12.15, -17.63, -22.65, -27.19, -31.21, -34.69, -37.62 18, -6.38, -12.41, -18.02, -23.18, -27.86, -32.02, -35.65, -38.73 18.5, -6.5, -12.65, -18.39, -23.68, -28.48, -32.78, -36.55, -39.76 19, -6.62, -12.88, -18.74, -24.14, -29.07, -33.49, -37.39, -40.73 19.5, -6.72, -13.1, -19.06, -24.58, -29.62, -34.16, -38.17, -41.64 20, -6.82, -13.3, -19.36, -24.99, -30.13, -34.78, -38.91, -42.49 20.5, -6.92, -13.49, -19.65, -25.37, -30.62, -35.37, -39.6, -43.29 21, -7.01, -13.67, -19.92, -25.73, -31.08, -35.92, -40.25, -44.05 21.5, -7.09, -13.83, -20.18, -26.08, -31.51, -36.45, -40.87, -44.76 22, -7.17, -13.99, -20.42, -26.4, -31.92, -36.94, -41.45, -45.44 22.5, -7.24, -14.15, -20.64, -26.71, -32.3, -37.41, -42.01, -46.07 23, -7.32, -14.29, -20.86, -27, -32.67, -37.85, -42.53, -46.68 23.5, -7.38, -14.42, -21.07, -27.27, -33.02, -38.28, -43.03, -47.25 24, -7.45, -14.55, -21.26, -27.54, -33.35, -38.68, -43.5, -47.8 24.5, -7.51, -14.68, -21.45, -27.79, -33.66, -39.06, -43.95, -48.31 25, -7.57, -14.8, -21.63, -28.03, -33.97, -39.42, -44.38, -48.81 26, -7.57, -14.8, -21.63, -28.03, -33.97, -39.42, -44.38, -48.81 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Touring Tires } 225/60 R18 #Library : Tire: Aligning Moment #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireMz107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz107.par #BlueLink0 Tire: Aligning Moment`225/60 R18` Touring Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy107.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`225/60 R18`Touring Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.5, 276.28, 542.17, 796.11, 1037.22, 1264.9, 1478.75, 1678.46, 1863.81 1, 543.78, 1067.29, 1567.45, 2042.53, 2491.36, 2913.12, 3307.21, 3673.19 1.5, 794.63, 1560.03, 2291.71, 2987.17, 3644.68, 4263.02, 4841.27, 5378.78 2, 1022.61, 2008.24, 2951.2, 3848.24, 4697.14, 5496.28, 6244.46, 6940.76 2.5, 1223.67, 2403.99, 3534.24, 4610.54, 5630.23, 6591.31, 7492.28, 8331.97 3, 1396.06, 2743.8, 4035.64, 5267.18, 6435.36, 7537.86, 8572.88, 9539 3.5, 1540.13, 3028.22, 4456.04, 5818.77, 7113, 8336.12, 9486.09, 10561.24 4, 1657.77, 3260.87, 4800.56, 6271.72, 7670.65, 8994.49, 10240.97, 11408.22 4.5, 1751.86, 3447.27, 5077.17, 6636.17, 8120.35, 9526.68, 10852.66, 12096.26 5, 1825.68, 3593.81, 5295.1, 6923.97, 8476.36, 9949.04, 11339.39, 12645.19 5.5, 1882.54, 3706.94, 5463.74, 7147.24, 8753.26, 10278.46, 11720.06, 13075.75 6, 1925.52, 3792.65, 5591.84, 7317.32, 8964.81, 10530.87, 12012.67, 13407.74 6.5, 1957.31, 3856.21, 5687.13, 7444.25, 9123.23, 10720.57, 12233.34, 13659.03 7, 1980.19, 3902.12, 5756.22, 7536.65, 9239.02, 10859.81, 12396.02, 13845.08 7.5, 1996.04, 3934.07, 5804.56, 7601.65, 9320.93, 10958.85, 12512.39, 13978.92 8, 2006.38, 3955.09, 5836.61, 7645.08, 9376.12, 11026.13, 12592.07, 14071.29 8.5, 2012.44, 3967.57, 5855.92, 7671.64, 9410.35, 11068.44, 12642.86, 14130.95 9, 2015.19, 3973.45, 5865.35, 7685.08, 9428.24, 11091.25, 12671.03, 14164.92 9.5, 2015.4, 3974.24, 5867.15, 7688.35, 9433.46, 11098.89, 12681.58, 14178.84 10, 2013.65, 3971.12, 5863.1, 7683.82, 9428.92, 11094.83, 12678.48, 14177.19 10.5, 2010.43, 3965.04, 5854.58, 7673.31, 9416.9, 11081.77, 12664.87, 14163.51 11, 2006.09, 3956.73, 5842.69, 7658.29, 9399.2, 11061.86, 12643.23, 14140.62 11.5, 2000.94, 3946.76, 5828.3, 7639.9, 9377.24, 11036.8, 12615.52, 14110.74 12, 1995.19, 3935.59, 5812.08, 7619.02, 9352.14, 11007.91, 12583.3, 14075.63 12.5, 1989.02, 3923.55, 5794.54, 7596.36, 9324.76, 10976.24, 12547.76, 14036.68 13, 1982.57, 3910.94, 5776.1, 7572.47, 9295.8, 10942.61, 12509.88, 13994.97 13.5, 1975.94, 3897.96, 5757.09, 7547.77, 9265.79, 10907.67, 12470.41, 13951.37 14, 1969.22, 3884.77, 5737.75, 7522.61, 9235.15, 10871.92, 12429.93, 13906.55 14.5, 1962.46, 3871.51, 5718.27, 7497.23, 9204.21, 10835.75, 12388.91, 13861.05 15, 1955.73, 3858.28, 5698.81, 7471.85, 9173.21, 10799.49, 12347.71, 13815.27 15.5, 1949.05, 3845.15, 5679.48, 7446.61, 9142.37, 10763.35, 12306.61, 13769.55 16, 1942.46, 3832.17, 5660.38, 7421.64, 9111.82, 10727.53, 12265.82, 13724.13 16.5, 1935.97, 3819.4, 5641.55, 7397.02, 9081.68, 10692.16, 12225.52, 13679.2 17, 1929.6, 3806.86, 5623.06, 7372.82, 9052.04, 10657.35, 12185.83, 13634.92 17.5, 1923.37, 3794.57, 5604.94, 7349.1, 9022.96, 10623.17, 12146.83, 13591.38 18, 1917.28, 3782.56, 5587.21, 7325.88, 8994.48, 10589.68, 12108.6, 13548.67 18.5, 1911.33, 3770.83, 5569.89, 7303.18, 8966.64, 10556.93, 12071.18, 13506.85 19, 1905.53, 3759.38, 5552.99, 7281.02, 8939.44, 10524.92, 12034.6, 13465.95 19.5, 1899.87, 3748.23, 5536.51, 7259.41, 8912.91, 10493.68, 11998.88, 13425.99 20, 1894.37, 3737.36, 5520.45, 7238.35, 8887.04, 10463.21, 11964.03, 13386.99 20.5, 1889.01, 3726.78, 5504.81, 7217.83, 8861.82, 10433.51, 11930.05, 13348.95 21, 1883.79, 3716.48, 5489.59, 7197.84, 8837.27, 10404.57, 11896.93, 13311.86 21.5, 1878.72, 3706.46, 5474.77, 7178.39, 8813.35, 10376.38, 11864.66, 13275.71 22, 1873.78, 3696.71, 5460.34, 7159.45, 8790.07, 10348.93, 11833.23, 13240.49 22.5, 1868.98, 3687.23, 5446.31, 7141.02, 8767.4, 10322.2, 11802.62, 13206.18 23, 1864.31, 3677.99, 5432.65, 7123.08, 8745.34, 10296.17, 11772.8, 13172.75 23.5, 1859.76, 3669.01, 5419.36, 7105.62, 8723.86, 10270.83, 11743.76, 13140.19 24, 1855.34, 3660.27, 5406.42, 7088.63, 8702.94, 10246.15, 11715.48, 13108.47 24.5, 1851.04, 3651.76, 5393.83, 7072.08, 8682.58, 10222.12, 11687.93, 13077.57 25, 1846.85, 3643.48, 5381.57, 7055.96, 8662.75, 10198.71, 11661.1, 13047.47 26, 1846.85, 3643.48, 5381.57, 7055.96, 8662.75, 10198.71, 11661.1, 13047.47 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Touring Tires } 225/60 R18 #Library : Tire: Lateral Force #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireFy107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy107.par #BlueLink1 Tire: Lateral Force`225/60 R18` Touring Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx107.par`08-02-2011`16:42:28 #FullDataName Tire: Longitudinal Force`225/60 R18`Touring Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.02, 862.81, 1783.13, 2762.04, 3794.59, 4873.05, 5988.03, 7129.14, 8285.48 0.04, 1405.11, 2856.38, 4345.65, 5859.21, 7381.77, 8898.09, 10393.74, 11855.5 0.06, 1683.96, 3384.43, 5089.04, 6782.93, 8451.6, 10081.79, 11661.81, 13181.59 0.08, 1827.85, 3649.23, 5451.02, 7219.83, 8943.43, 10611.08, 12213.62, 13743.29 0.1, 1906.98, 3792.03, 5642.2, 7445.59, 9191.77, 10871.81, 12478.17, 14004.57 0.12, 1953.08, 3873.7, 5749.19, 7568.78, 9323.31, 11005.08, 12607.67, 14125.76 0.14, 1980.9, 3921.81, 5810.31, 7636.48, 9392.07, 11070.27, 12665.46, 14173.03 0.16, 1997.79, 3949.97, 5844.33, 7671.56, 9424.12, 11095.9, 12681.88, 14178.04 0.18, 2007.75, 3965.55, 5861.32, 7686.27, 9433.43, 11097.23, 12673.18, 14157.7 0.2, 2013.13, 3972.81, 5867.14, 7687.73, 9428.09, 11083.11, 12648.74, 14121.81 0.22, 2015.35, 3974.42, 5865.42, 7680.34, 9413.11, 11059, 12614.36, 14076.35 0.24, 2015.35, 3972.07, 5858.5, 7666.95, 9391.71, 11028.42, 12573.74, 14025.16 0.26, 2013.76, 3966.92, 5847.96, 7649.47, 9366.06, 10993.69, 12529.34, 13970.72 0.28, 2011.02, 3959.8, 5834.91, 7629.22, 9337.64, 10956.43, 12482.8, 13914.72 0.3, 2007.45, 3951.26, 5820.11, 7607.14, 9307.51, 10917.73, 12435.27, 13858.28 0.32, 2003.28, 3941.72, 5804.15, 7583.9, 9276.39, 10878.38, 12387.52, 13802.18 0.34, 1998.68, 3931.51, 5787.42, 7559.98, 9244.83, 10838.92, 12340.11, 13746.92 0.36, 1993.78, 3920.84, 5770.24, 7535.74, 9213.2, 10799.74, 12293.41, 13692.85 0.38, 1988.68, 3909.89, 5752.83, 7511.45, 9181.77, 10761.12, 12247.67, 13640.2 0.4, 1983.44, 3898.79, 5735.37, 7487.29, 9150.75, 10723.23, 12203.05, 13589.1 0.42, 1978.13, 3887.65, 5717.98, 7463.4, 9120.27, 10686.22, 12159.68, 13539.63 0.44, 1972.79, 3876.53, 5700.76, 7439.89, 9090.44, 10650.16, 12117.59, 13491.82 0.46, 1967.46, 3865.5, 5683.77, 7416.82, 9061.31, 10615.11, 12076.84, 13445.67 0.48, 1962.16, 3854.6, 5667.07, 7394.26, 9032.94, 10581.08, 12037.42, 13401.17 0.5, 1956.92, 3843.87, 5650.7, 7372.23, 9005.34, 10548.1, 11999.32, 13358.28 0.52, 1951.74, 3833.32, 5634.68, 7350.75, 8978.52, 10516.16, 11962.53, 13316.96 0.54, 1946.64, 3822.97, 5619.03, 7329.84, 8952.5, 10485.24, 11927, 13277.16 0.56, 1941.64, 3812.84, 5603.75, 7309.5, 8927.25, 10455.32, 11892.7, 13238.82 0.58, 1936.72, 3802.94, 5588.86, 7289.72, 8902.77, 10426.39, 11859.61, 13201.89 0.6, 1931.91, 3793.26, 5574.36, 7270.51, 8879.05, 10398.4, 11827.66, 13166.31 0.62, 1927.2, 3783.82, 5560.24, 7251.85, 8856.06, 10371.34, 11796.82, 13132.02 0.64, 1922.59, 3774.61, 5546.5, 7233.73, 8833.78, 10345.16, 11767.05, 13098.97 0.66, 1918.09, 3765.62, 5533.13, 7216.15, 8812.19, 10319.85, 11738.3, 13067.1 0.68, 1913.69, 3756.87, 5520.13, 7199.08, 8791.28, 10295.36, 11710.53, 13036.36 0.7, 1909.4, 3748.34, 5507.49, 7182.5, 8771.01, 10271.67, 11683.7, 13006.7 0.72, 1905.21, 3740.03, 5495.19, 7166.42, 8751.37, 10248.74, 11657.77, 12978.07 0.74, 1901.12, 3731.93, 5483.24, 7150.8, 8732.33, 10226.54, 11632.7, 12950.42 0.76, 1897.13, 3724.05, 5471.61, 7135.64, 8713.87, 10205.05, 11608.46, 12923.72 0.78, 1893.24, 3716.37, 5460.31, 7120.91, 8695.97, 10184.23, 11585, 12897.9 0.8, 1889.45, 3708.9, 5449.31, 7106.61, 8678.6, 10164.06, 11562.3, 12872.95 0.82, 1885.74, 3701.61, 5438.62, 7092.72, 8661.76, 10144.52, 11540.33, 12848.81 0.84, 1882.13, 3694.52, 5428.22, 7079.23, 8645.4, 10125.56, 11519.04, 12825.45 0.86, 1878.61, 3687.6, 5418.09, 7066.11, 8629.53, 10107.19, 11498.41, 12802.83 0.88, 1875.18, 3680.87, 5408.24, 7053.36, 8614.12, 10089.36, 11478.42, 12780.93 0.9, 1871.82, 3674.31, 5398.66, 7040.96, 8599.14, 10072.05, 11459.04, 12759.71 0.92, 1868.55, 3667.91, 5389.32, 7028.9, 8584.6, 10055.26, 11440.24, 12739.14 0.94, 1865.36, 3661.68, 5380.23, 7017.17, 8570.46, 10038.95, 11421.99, 12719.2 0.96, 1862.25, 3655.6, 5371.38, 7005.76, 8556.71, 10023.1, 11404.28, 12699.85 0.98, 1859.21, 3649.67, 5362.76, 6994.65, 8543.34, 10007.7, 11387.08, 12681.07 1, 1856.24, 3643.89, 5354.35, 6983.83, 8530.34, 9992.73, 11370.37, 12662.85 1.02, 1856.24, 3643.89, 5354.35, 6983.83, 8530.34, 9992.73, 11370.37, 12662.85 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Touring Tires } 225/60 R18 #Library : Tire: Longitudinal Force #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireFx107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:28 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx107.par #BlueLink2 Tire: Longitudinal Force`225/60 R18` Touring Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff107.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`225/60 R18`Touring Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 784.532, -2.7453 1569.064, -6.7216 2353.596, -11.0497 3138.128, -15.5865 3922.66, -20.2695 4707.192, -25.0638 5491.724, -29.9472 6276.256, -34.9047 7060.788, -39.925 7845.32, -45 8629.852, -50.1231 9414.384, -55.2891 10198.916, -60.4937 10983.448, -65.7334 11767.98, -71.0051 12552.512, -76.3065 13337.044, -81.6351 14121.576, -86.9892 14906.108, -92.3669 15690.64, -97.767 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Touring Tires } 225/60 R18 #Library : Tire: Camber Thrust Coefficient #DataSet : 225/60 R18 #Category: Touring Tires #FileID : CamStiff107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff107.par #BlueLink3 Tire: Camber Thrust Coefficient`225/60 R18` Touring Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Touring Tires } 225/60 R18 #Library : Tire #DataSet : 225/60 R18 #Category: Touring Tires #FileID : Tire109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire109_note.txt 800 kg rated load EXIT_NOTEFILE Tires\Tire\Tire109_note.txt EXIT_PARSFILE Tires\Tire\Tire109.par #BlueLink9 Tire`225/60 R18` Touring Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`225/60 R18` Touring Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp112.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Rear Comp.`CS E-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.797 *R_SPRING_R 0.797 *R_DAMPER_L 0.797 *R_DAMPER_R 0.797 *CT_FX_L -6.3e-6 *CT_FX_R -6.3e-6 *CS_FY_L -8.3e-6 *CS_FY_R -8.3e-6 *CS_MZ_L -1.2e-4 *CS_MZ_R -1.2e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L -3.3e-5 *CI_FY_R -3.3e-5 *CI_MZ_L -5e-5 *CI_MZ_R -5e-5 *C_LONG_L 3.6e-5 *C_LONG_R 3.6e-5 *C_LAT_L 9.4e-5 *C_LAT_R 9.4e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.797 *R_JOUNCE_R 0.797 *R_REBOUND_L 0.797 *R_REBOUND_R 0.797 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx103.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 344 MX_AUX_COEFFICIENT 344 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 344 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 344 N-m/deg #Category: #FileID : AuxMx103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx103.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` ` , Roll moment #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.3e-5 CI_MZ_COEFFICIENT -5e-5 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 ENTER_PARSFILE Suspensions\Springs\Spring110.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`46 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 46 FS_EXT_COEFFICIENT 46 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 3.0 SPRING_EXT_BETA 3.0 *SCALAR 46 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 46 N/mm #Library : Suspension: Spring #DataSet : 46 N/mm #Category: #FileID : Spring110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring110.par #BlueLink0 Suspension: Spring`46 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.3e-5 CI_MZ_COEFFICIENT -5e-5 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 #BlueLink3 Suspension: Spring`46 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS E-Class } E-Class, Sedan - Rear Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : E-Class, Sedan - Rear Comp. #Category: CS E-Class #FileID : SuspCmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp112_note.txt Rear spring rate chosen for a rear ride frequency of 1.4 Hz and a rear corner weight of 380 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp112_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp112.par #BlueLink17 Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Rear Comp.` CS E-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin110.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`E-Class, Sedan - Rear Suspension`CS E-Class iside 1 L_TRACK 1600 Y_CL_SUSP 0 M_US 90 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0.1 *TOE_R 0.1 *CAMBER_L 0 *CAMBER_R 0 R_US_STR 0.1 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Left wheel dive (caster change) #BlueLink1 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Left wheel X #BlueLink2 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Left wheel camber #BlueLink3 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Left wheel lateral (-Y) #BlueLink4 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.1 A_CAMBER 0 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Right wheel X #BlueLink7 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.1 A_CAMBER 0 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS E-Class } E-Class, Sedan - Rear Suspension #Library : Suspension: Independent System Kinematics #DataSet : E-Class, Sedan - Rear Suspension #Category: CS E-Class #FileID : IndKin110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin110_note.txt Generic 5-Link rear suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin110_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin110.par #BlueLink20 Suspension: Independent System Kinematics`E-Class, Sedan - Rear Suspension` CS E-Class` , Rear kinematics * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`225/60 R18` Touring Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`225/60 R18` Touring Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass106.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`E-Class, Sedan Sprung Mass`CS E-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 3050 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 4250 H_H 500 H_CG_SU 530 LX_AXLE 3050 LX_CG_SU 1400 M_SU 1650 IXX_SU 928.1 IYY_SU 2788.5 IZZ_SU 3234.0 IXZ_SU 0 RX_SGUI 0.750 RY_SGUI 1.300 RZ_SGUI 1.400 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1480 Y_LENGTH 1880 *HWC_LF 320 *HWC_RF 320 *HWC_LR 300 *HWC_RR 300 H_WC 300 iside 2 H_WC 300 iaxle 1 iside 1 H_WC 320 iside 2 H_WC 320 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS E-Class } E-Class, Sedan Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : E-Class, Sedan Sprung Mass #Category: CS E-Class #FileID : SprMass106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass106.par #BlueLink0 Vehicle: Sprung Mass`E-Class, Sedan Sprung Mass` CS E-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero105.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`E-Class, Sedan Aero`CS E-Class #CheckBox0 0 X_REF_AERO -1525 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 3050 AREA_AERO 2.8 D_AIR 1.206 #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS E-Class } E-Class, Sedan Aero #Library : Aerodynamics: Basic #DataSet : E-Class, Sedan Aero #Category: CS E-Class #FileID : Aero105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero105_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero105_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero105.par #BlueLink1 Aerodynamics: Basic`E-Class, Sedan Aero` CS E-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh105.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`E-Class, Sedan`E-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 3048 OBJ_Y_LENGTH 1880 OBJ_Z_LENGTH 1480 *DZ_V 0 *LAT_WC 1600 *LAT_WC_2 1600 *HWC 375 *WHEEL_RATIO 1.1 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X 0 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X -3.048 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X -3.048 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.35625 WRITE_ADD_REFERENCE_FRAME_SHADOW #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup111.par`08-02-2011`16:43:38 #FullDataName Animator: Shape Assembly`E-Class, Sedan`CS E-Class *COLOR .36 .117 .117 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.25 *X_REF_LENGTH 2711 *Y_REF_LENGTH 1725 *Z_REF_LENGTH 1400 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 0 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL128.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Body`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\body.obj #ENDMYellow SET_COLOR 0 0 .6 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Body #Library : Animator: Shape File Link #DataSet : European Sedan: Body #Category: CS European Sedan #FileID : AniSTL128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL128.par #BlueLink0 Animator: Shape File Link`European Sedan: Body` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL129.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Details`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\details.obj #ENDMYellow SET_COLOR 0.753 0.753 0.753 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Details #Library : Animator: Shape File Link #DataSet : European Sedan: Details #Category: CS European Sedan #FileID : AniSTL129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL129.par #BlueLink1 Animator: Shape File Link`European Sedan: Details` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL130.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Windows`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\windows.obj #ENDMYellow SET_COLOR 0 0 0 *SPECULAR 1 *TRANSPARENCY 0.7 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 0.7 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Windows #Library : Animator: Shape File Link #DataSet : European Sedan: Windows #Category: CS European Sedan #FileID : AniSTL130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL130.par #BlueLink2 Animator: Shape File Link`European Sedan: Windows` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL131.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Interior Trim`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\interior_trim.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Interior Trim #Library : Animator: Shape File Link #DataSet : European Sedan: Interior Trim #Category: CS European Sedan #FileID : AniSTL131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL131.par #BlueLink3 Animator: Shape File Link`European Sedan: Interior Trim` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL132.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Steering Wheel`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\steering_wheel.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Steering Wheel #Library : Animator: Shape File Link #DataSet : European Sedan: Steering Wheel #Category: CS European Sedan #FileID : AniSTL132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL132.par #BlueLink4 Animator: Shape File Link`European Sedan: Steering Wheel` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL133.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Seats`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\seats.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Seats #Library : Animator: Shape File Link #DataSet : European Sedan: Seats #Category: CS European Sedan #FileID : AniSTL133 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL133.par #BlueLink5 Animator: Shape File Link`European Sedan: Seats` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL134.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Driver`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\driver\driver.obj #ENDMYellow SET_COLOR 0.69 0.69 0.69 *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Driver #Library : Animator: Shape File Link #DataSet : European Sedan: Driver #Category: CS European Sedan #FileID : AniSTL134 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL134.par #BlueLink13 Animator: Shape File Link`European Sedan: Driver` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 x_ref_length 2711 y_ref_length 1725 z_ref_length 1400 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS E-Class } E-Class, Sedan #Library : Animator: Shape Assembly #DataSet : E-Class, Sedan #Category: CS E-Class #FileID : StlGroup111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:38 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup111.par #BlueLink1 Animator: Shape Assembly`E-Class, Sedan` CS E-Class` , Vehicle body #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL151.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Brake Lights (E-Class)`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\brakes_on.obj #ENDMYellow SET_COLOR 1 .8 .8 SET_SCALE_X 1 SET_SCALE_Y 1.005 SET_SCALE_Z 1 SET_OFFSET_X -0.02 SET_OFFSET_Y 0 SET_OFFSET_Z 0.25 X_REF_LENGTH 2711 Y_REF_LENGTH 1725 Z_REF_LENGTH 1400 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Brake Lights (E-Class) #Library : Animator: Shape File Link #DataSet : European Sedan: Brake Lights (E-Class) #Category: CS European Sedan #FileID : AniSTL151 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL151.par #BlueLink3 Animator: Shape File Link`European Sedan: Brake Lights (E-Class)` CS European Sedan` , Brake lights WRITE_REFERENCE_FRAME_SIZE #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { E-Class Vehicles } E-Class, Sedan #Library : Animator: Vehicles and Sensor Targets #DataSet : E-Class, Sedan #Category: E-Class Vehicles #FileID : AniVeh105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh105_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh105_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh105.par #BlueLink2 Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` , Vehicle animator data R_REAR_DRIVE_SC 1 PMAX_SC 200 ENTER_PARSFILE Powertrain\4wd\4WD103.par`08-02-2011`16:42:55 #FullDataName Powertrain: 4-Wheel Drive`250 kW, 7-spd., 2.65 Ratio` OPT_PT 3 OPT_ENGINE_PITCH_REACTION(1) 0 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 OPT_DIFF_INTERNAL(3) 1 #RingCtrl5 1 #RingCtrl6 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 #CheckBox1 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(1) 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine112.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`250 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.38 TC_THR_REL 0.02 TC_THR_APP 0.06 #CheckBox0 1 OPT_THROTTLE_DELAY 1 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 41.13, 126.46, 168.44, 171.86, 173.81, 174.77, 175.1, 175.18, 175.23, 175.18 633, 49.35, 154.32, 232.06, 247.82, 250.35, 251.38, 251.74, 251.77, 251.77, 251.77 750, 0, 145.21, 245.96, 268.1, 274.08, 276.25, 277.05, 277.12, 277.1, 277.07 1107, -16.45, 117.35, 288.44, 330.1, 346.63, 352.29, 354.4, 354.59, 354.55, 354.4 1463, -24.68, 78.29, 278.01, 345.45, 367.46, 377.44, 382.32, 383.45, 384.2, 391.51 1820, -27.97, 42.77, 246.75, 351.59, 388.29, 402.59, 410.23, 412.31, 413.85, 424.41 2177, -33.51, 16.45, 195.49, 338.42, 394.8, 427.7, 432.64, 437.57, 442.51, 453.42 2533, -42.07, -10.64, 135.08, 302.54, 398.09, 443.64, 455.67, 463.99, 468.83, 477.05 2890, -50.08, -25.19, 93.73, 255.06, 387.36, 448.48, 473.93, 480.34, 490.21, 498.44 3247, -57.14, -36.65, 62.58, 203.53, 371.29, 444.15, 477.05, 490.21, 500.08, 509.95 3603, -64.08, -46.7, 39.02, 160.4, 334.05, 430.99, 478.7, 493.5, 505.02, 514.89 3960, -71.06, -56.01, 19.61, 126.98, 289.7, 413.12, 473.76, 491.86, 503.37, 509.95 4317, -78.44, -65.43, 0.46, 95.46, 249.64, 394.29, 465.54, 481.99, 493.5, 503.27 4673, -86.11, -74.79, -16.57, 68.44, 207.81, 366.08, 452.38, 468.83, 485.28, 493.5 5030, -94.28, -84.03, -31.71, 44.85, 170.57, 330.59, 435.93, 452.38, 468.83, 477.05 5387, -102.47, -93.46, -45.75, 24, 138.78, 293.42, 410.15, 426.06, 448.04, 452.77 5743, -111.65, -103.3, -59.35, 4.69, 109.99, 254.69, 367.91, 393, 404.78, 409.44 6100, -121.65, -113.67, -72.91, -13.57, 83.71, 217.11, 322.13, 345.48, 356.46, 360.66 6500, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25 6700, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 250 kW Engine #Library : Powertrain: Engine #DataSet : 250 kW Engine #Category: CS Engine Torque Curves #FileID : Engine112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine112.par #BlueLink0 Powertrain: Engine`250 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC104.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 250 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.009121 0.1, 0.009121 0.2, 0.009121 0.3, 0.009121 0.4, 0.00912 0.5, 0.009112 0.6, 0.009066 0.7, 0.008864 0.8, 0.008142 0.9, 0.005941 0.95, 0.00366 0.99, 0.000872 1.01, -0.000872 1.05, -0.00366 1.1, -0.005941 1.2, -0.008142 1.3, -0.008864 1.4, -0.009066 1.5, -0.009112 1.6, -0.00912 1.7, -0.009121 1.8, -0.009121 1.9, -0.009121 2, -0.009121 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 250 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 250 kW Engine #Category: CS Torque Converters #FileID : TC104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC104.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 250 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans104.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`7-Speed Transmission` #RingCtrl0 7 NGEARS 7 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.42 R_GEAR_TR(1) 4.38 R_GEAR_TR(2) 2.86 R_GEAR_TR(3) 1.92 R_GEAR_TR(4) 1.37 R_GEAR_TR(5) 1.00 R_GEAR_TR(6) 0.82 R_GEAR_TR(7) 0.70 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 ITR(7) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_F(7) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 R_EFF_TR_R(7) 0.99 T_SHIFT 0.35 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift113.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 1-2 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 629 0.2, 629 0.8, 1233 1, 1233 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 503 0.4, 503 0.8, 925 1, 925 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 1-2 Shift #Category: 7-speed #FileID : Shift113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift113.par #BlueLink0 Powertrain: Shift Schedule`7-speed, 1-2 Shift` 7-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift114.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 2-3 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 938 0.2, 938 0.8, 1888 1, 1888 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 750 0.4, 750 0.8, 1416 1, 1416 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 2-3 Shift #Category: 7-speed #FileID : Shift114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift114.par #BlueLink1 Powertrain: Shift Schedule`7-speed, 2-3 Shift` 7-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift115.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 3-4 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1314 0.2, 1314 0.8, 2813 1, 2813 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1051 0.4, 1051 0.8, 2109 1, 2109 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 3-4 Shift #Category: 7-speed #FileID : Shift115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift115.par #BlueLink2 Powertrain: Shift Schedule`7-speed, 3-4 Shift` 7-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift116.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 4-5 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 3942 1, 3942 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 2956 1, 2956 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 4-5 Shift #Category: 7-speed #FileID : Shift116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift116.par #BlueLink3 Powertrain: Shift Schedule`7-speed, 4-5 Shift` 7-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift117.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 5-6 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2195 0.2, 2195 0.8, 5400 1, 5400 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1756 0.4, 1756 0.8, 4050 1, 4050 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 5-6 Shift #Category: 7-speed #FileID : Shift117 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift117.par #BlueLink4 Powertrain: Shift Schedule`7-speed, 5-6 Shift` 7-speed` , Shift schedule igear 6 ENTER_PARSFILE Powertrain\Shift\Shift118.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 6-7 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2571 0.2, 2571 0.8, 6585 1, 6585 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2057 0.4, 2057 0.8, 4939 1, 4939 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 6-7 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 6-7 Shift #Category: 7-speed #FileID : Shift118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift118.par #BlueLink5 Powertrain: Shift Schedule`7-speed, 6-7 Shift` 7-speed` , Shift schedule igear 7 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 7-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 7-Speed Transmission #Category: #FileID : Trans104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans104.par #BlueLink10 Powertrain: Transmission (18 Gears or CVT)`7-Speed Transmission` ` , Transmission (Extended) IDIFF 3 ENTER_PARSFILE Powertrain\Centerdiff\XC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transfer Case`Full Time Viscous 50/50` #CheckBox0 0 LOCKED_XC_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_XC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_XC 1.00 R_EFF_F_XC 0.99 R_EFF_R_XC 0.99 R_REAR_XC 0.5 LOCKED_XC_DAMP 0.8 LOCKED_XC_K 80 R_GEAR_DIFF 1.00 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 R_REAR_BIAS 0.5 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 LOG_ENTRY Used Dataset: Powertrain: Transfer Case; Full Time Viscous 50/50 #Library : Powertrain: Transfer Case #DataSet : Full Time Viscous 50/50 #Category: #FileID : XC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transfer case EXIT_PARSFILE Powertrain\Centerdiff\XC101.par #BlueLink3 Powertrain: Transfer Case`Full Time Viscous 50/50` ` , Transfer case IDIFF 1 ENTER_PARSFILE Powertrain\Frontdiff\F_Diff102.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front Differential`Viscous - Gear Ratio 2.65`CS Front Differentials #CheckBox0 0 LOCKED_FD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_FD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_FD 2.65 R_EFF_F_FD 0.99 R_EFF_R_FD 0.99 LOCKED_FD_DAMP 1 LOCKED_FD_K 100 IDS_F 0.013 IHS_LF 0.009 IHS_RF 0.009 R_GEAR_DIFF 2.65 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 1 LOCKED_DIFF_K 100 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Front Differential; { CS Front Differentials } Viscous - Gear Ratio 2.65 #Library : Powertrain: Front Differential #DataSet : Viscous - Gear Ratio 2.65 #Category: CS Front Differentials #FileID : F_Diff102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Front differential EXIT_PARSFILE Powertrain\Frontdiff\F_Diff102.par #BlueLink4 Powertrain: Front Differential`Viscous - Gear Ratio 2.65` CS Front Differentials` , Differential front IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff101.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Viscous - Gear Ratio 2.65`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_RD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_RD 2.65 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 R_GEAR_DIFF 2.65 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Viscous - Gear Ratio 2.65 #Library : Powertrain: Rear Differential #DataSet : Viscous - Gear Ratio 2.65 #Category: CS Rear Differentials #FileID : R_Diff101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff101.par #BlueLink5 Powertrain: Rear Differential`Viscous - Gear Ratio 2.65` CS Rear Differentials` , Differential rear LOG_ENTRY Used Dataset: Powertrain: 4-Wheel Drive; 250 kW, 7-spd., 2.65 Ratio #Library : Powertrain: 4-Wheel Drive #DataSet : 250 kW, 7-spd., 2.65 Ratio #Category: #FileID : 4WD103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:55 #VehCode 4WD ENTRY_NOTEFILE Powertrain\4wd\4WD103_note.txt Generic 250 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 250 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\4wd\4WD103_note.txt EXIT_PARSFILE Powertrain\4wd\4WD103.par #BlueLink5 Powertrain: 4-Wheel Drive`250 kW, 7-spd., 2.65 Ratio` ` , All-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W111.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`E-Class, Sedan w/ ABS`CS E-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 OFF_F_SGUI 0.15 OFF_R_SGUI 0.15 ON_F_SGUI 0.1 ON_R_SGUI 0.1 V_F_SGUI 3 V_R_SGUI 3 #RingCtrl0 2 #RingCtrl1 2 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq107.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`350 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 350 MY_BRAKE_COEFFICIENT 350 LOG_ENTRY Used Dataset: Brakes: Torque; 350 N-m/MPa #Library : Brakes: Torque #DataSet : 350 N-m/MPa #Category: #FileID : BrkTrq107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq107.par #BlueLink0 Brakes: Torque`350 N-m/MPa` ` , Left front #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.1 ABS_VMIN 3 iside 2 #BlueLink1 Brakes: Torque`350 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq104.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`150 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 150 MY_BRAKE_COEFFICIENT 150 LOG_ENTRY Used Dataset: Brakes: Torque; 150 N-m/MPa #Library : Brakes: Torque #DataSet : 150 N-m/MPa #Category: #FileID : BrkTrq104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq104.par #BlueLink2 Brakes: Torque`150 N-m/MPa` ` , Left rear #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.1 ABS_VMIN 3 iside 2 #BlueLink3 Brakes: Torque`150 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS E-Class } E-Class, Sedan w/ ABS #Library : Brakes: Four-Wheel System #DataSet : E-Class, Sedan w/ ABS #Category: CS E-Class #FileID : Brk4W111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W111.par #BlueLink6 Brakes: Four-Wheel System`E-Class, Sedan w/ ABS` CS E-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2106.par`08-02-2011`16:42:43 #FullDataName Steering`E-Class, Sedan: Power R&P`CS E-Class *I_COL 0.02 *I_GEAR_IN 0.0001 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 39.5 *L2_LKPO 0 *R1_LKPO 39.5 *R2_LKPO 0 *L1_AKPI 8.0 *L2_AKPI 0 *R1_AKPI 8.0 *R2_AKPI 0 *L1_ACAST 3.5 *L2_ACAST 0 *R1_ACAST 3.5 *R2_ACAST 0 *L1_XKPO -1.0 *L2_XKPO 0 *R1_XKPO -1.0 *R2_XKPO 0 *D_RACK_F 4 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 3 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 1 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.0001 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iside 2 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 0.1 #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 1 ENTER_PARSFILE Steering\Rack_Kinematics\RackKin113.par`08-02-2011`16:42:41 #FullDataName Steering System: Rack kinematics`E-Class, Sedan Rack Kinematics`CS E-Class #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 RACK_TRAVEL_TABLE SPLINE -916.4942656, -86.36 -867.4138828, -83.03846154 -824.4560495, -79.96296296 -786.3359267, -77.10714286 -752.1486273, -74.44827586 -721.227932, -71.96666667 -693.0665246, -69.64516129 -667.2677336, -67.46875 -643.5147167, -65.42424242 -621.549914, -63.5 -601.160854, -61.68571429 -582.1700533, -59.97222222 -564.4276481, -58.35135135 -547.8059016, -56.81578947 -532.1950333, -55.35897436 -517.5, -53.975 -503.6379761, -52.65853659 -490.5363551, -51.4047619 -478.1311476, -50.20930233 -466.3656834, -49.06818182 -455.1895493, -47.97777778 -444.557715, -46.93478261 -434.4298052, -45.93617021 -424.7694916, -44.97916667 -415.5439804, -44.06122449 -406.7235787, -43.18 0, 0 406.7235787, 43.18 415.5439804, 44.06122449 424.7694916, 44.97916667 434.4298052, 45.93617021 444.557715, 46.93478261 455.1895493, 47.97777778 466.3656834, 49.06818182 478.1311476, 50.20930233 490.5363551, 51.4047619 503.6379761, 52.65853659 517.5, 53.975 532.1950333, 55.35897436 547.8059016, 56.81578947 564.4276481, 58.35135135 582.1700533, 59.97222222 601.160854, 61.68571429 621.549914, 63.5 643.5147167, 65.42424242 667.2677336, 67.46875 693.0665246, 69.64516129 721.227932, 71.96666667 752.1486273, 74.44827586 786.3359267, 77.10714286 824.4560495, 79.96296296 867.4138828, 83.03846154 916.4942656, 86.36 ENDTABLE LOG_ENTRY Used Dataset: Steering System: Rack kinematics; { CS E-Class } E-Class, Sedan Rack Kinematics #Library : Steering System: Rack kinematics #DataSet : E-Class, Sedan Rack Kinematics #Category: CS E-Class #FileID : RackKin113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:41 #VehCode Steering rack EXIT_PARSFILE Steering\Rack_Kinematics\RackKin113.par #BlueLink4 Steering System: Rack kinematics`E-Class, Sedan Rack Kinematics` CS E-Class` , Rack input to output: front D_RACK 4 TBAR 2 ENTER_PARSFILE Steering\KinematicsRack2\RkKinAx119.par`08-02-2011`16:42:42 #FullDataName Steering System: Kinematics for 2 Wheels (Rack & Pinion)`E-Class, Sedan Wheel Kinematics`CS E-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 RACK_KIN_TABLE SPLINE -86.36, -64.00924761 -83.03846154, -60.39496988 -79.96296296, -57.20021687 -77.10714286, -54.34703994 -74.44827586, -51.77840772 -71.96666667, -49.45080212 -69.64516129, -47.32999144 -67.46875, -45.38842777 -65.42424242, -43.60354705 -63.5, -41.95660533 -61.68571429, -40.43185156 -59.97222222, -39.01592124 -58.35135135, -37.69738095 -56.81578947, -36.46637887 -55.35897436, -35.31437211 -53.975, -34.23391082 -52.65853659, -33.21846512 -51.4047619, -32.26228482 -50.20930233, -31.3602847 -49.06818182, -30.5079499 -47.97777778, -29.70125727 -46.93478261, -28.93660959 -45.93617021, -28.21078022 -44.97916667, -27.52086625 -44.06122449, -26.86424867 -43.18, -26.23855826 0, 0 43.18, 21.3843292 44.06122449, 21.8085708 44.97916667, 22.25095273 45.93617021, 22.71274374 46.93478261, 23.19534249 47.97777778, 23.70029582 49.06818182, 24.22932041 50.20930233, 24.78432852 51.4047619, 25.367459 52.65853659, 25.98111474 53.975, 26.62800831 55.35897436, 27.31121822 56.81578947, 28.03425875 58.35135135, 28.80116776 59.97222222, 29.61661825 61.68571429, 30.48606232 63.5, 31.41591936 65.42424242, 32.41382662 67.46875, 33.48897913 69.64516129, 34.65260127 71.96666667, 35.91861787 74.44827586, 37.30463871 77.10714286, 38.83345523 79.96296296, 40.53541768 83.03846154, 42.45242008 86.36, 44.6450584 ENDTABLE iside 1 #DiagramOne1 RACK_KIN_TABLE SPLINE -86.36, -44.6450584 -83.03846154, -42.45242008 -79.96296296, -40.53541768 -77.10714286, -38.83345523 -74.44827586, -37.30463871 -71.96666667, -35.91861787 -69.64516129, -34.65260127 -67.46875, -33.48897913 -65.42424242, -32.41382662 -63.5, -31.41591936 -61.68571429, -30.48606232 -59.97222222, -29.61661825 -58.35135135, -28.80116776 -56.81578947, -28.03425875 -55.35897436, -27.31121822 -53.975, -26.62800831 -52.65853659, -25.98111474 -51.4047619, -25.367459 -50.20930233, -24.78432852 -49.06818182, -24.22932041 -47.97777778, -23.70029582 -46.93478261, -23.19534249 -45.93617021, -22.71274374 -44.97916667, -22.25095273 -44.06122449, -21.8085708 -43.18, -21.3843292 0, 0 43.18, 26.23855826 44.06122449, 26.86424867 44.97916667, 27.52086625 45.93617021, 28.21078022 46.93478261, 28.93660959 47.97777778, 29.70125727 49.06818182, 30.5079499 50.20930233, 31.3602847 51.4047619, 32.26228482 52.65853659, 33.21846512 53.975, 34.23391082 55.35897436, 35.31437211 56.81578947, 36.46637887 58.35135135, 37.69738095 59.97222222, 39.01592124 61.68571429, 40.43185156 63.5, 41.95660533 65.42424242, 43.60354705 67.46875, 45.38842777 69.64516129, 47.32999144 71.96666667, 49.45080212 74.44827586, 51.77840772 77.10714286, 54.34703994 79.96296296, 57.20021687 83.03846154, 60.39496988 86.36, 64.00924761 ENDTABLE #RadioCtrl0 0 #RadioCtrl1 0 *SCALAR 0.45 *SCALAR2 0.45 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Rack & Pinion); { CS E-Class } E-Class, Sedan Wheel Kinematics #Library : Steering System: Kinematics for 2 Wheels (Rack & Pinion) #DataSet : E-Class, Sedan Wheel Kinematics #Category: CS E-Class #FileID : RkKinAx119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:42 #VehCode Steer kinematics EXIT_PARSFILE Steering\KinematicsRack2\RkKinAx119.par #BlueLink10 Steering System: Kinematics for 2 Wheels (Rack & Pinion)`E-Class, Sedan Wheel Kinematics` CS E-Class` , Rack to front wheels ENTER_PARSFILE Steering\Str_FBoost\FBoost102.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` #RingCtrl0 CARPET #RadioCtrl0 1 TC_BOOST 0.08 F_BOOST_MAX 2500 *3D_XLabel Vehicle speed (kph) *3D_YLabel Torsion bar torque (N-m) *3D_ZLabel Power assist force (N) #DiagramTwo0 *3D_DATA 6, 63 ! columns x rows F_BOOST_R_CARPET 0, 0, 20, 50, 80, 120, 200 -16, -2500, -2500, -2500, -2500, -2500, -2500 -15, -2500, -2500, -2500, -2500, -2500, -2500 -14.5, -2500, -2500, -2500, -2500, -2500, -2500 -14, -2500, -2500, -2500, -2500, -2500, -2500 -13.5, -2500, -2500, -2500, -2500, -2500, -2500 -13, -2500, -2500, -2500, -2500, -2500, -2500 -12.5, -2500, -2500, -2500, -2500, -2500, -2500 -12, -2500, -2500, -2500, -2500, -2500, -2500 -11.5, -2500, -2500, -2500, -2500, -2266.8, -2141.32 -11, -2500, -2420, -2427.94, -2280.85, -1736.13, -1500.51 -10.5, -2500, -2205, -2063.12, -1815.93, -1313.29, -1034.22 -10, -2500, -2000, -1739.25, -1429.79, -980, -700 -9.5, -2500, -1805, -1453.43, -1112.03, -720.39, -464.39 -9, -2500, -1620, -1202.85, -853.22, -520.81, -301.33 -8.5, -2500, -1445, -984.76, -644.8, -369.61, -190.74 -8, -2500, -1280, -796.49, -479.09, -256.9, -117.44 -7.5, -2500, -1125, -635.44, -349.2, -174.42, -70.08 -7, -2500, -980, -499.12, -249.03, -115.3, -40.35 -6.5, -2500, -845, -385.09, -173.2, -73.91, -22.31 -6, -2500, -720, -291, -117.01, -45.72, -11.76 -5.5, -2500, -605, -214.6, -76.39, -27.13, -5.86 -5, -2500, -500, -153.73, -47.89, -15.31, -2.73 -4.5, -2278.13, -405, -106.32, -28.58, -8.14, -1.18 -4, -1600, -320, -70.4, -16.05, -4.01, -0.46 -3.5, -1071.88, -245, -44.12, -8.34, -1.8, -0.16 -3, -675, -180, -25.72, -3.92, -0.71, -0.05 -2.5, -390.63, -125, -13.59, -1.6, -0.24, -0.01 -2, -200, -80, -6.22, -0.54, -0.06, 0 -1.5, -84.38, -45, -2.27, -0.13, -0.01, 0 -1, -25, -20, -0.55, -0.02, 0, 0 -0.5, -3.13, -5, -0.05, 0, 0, 0 0, 0, 0, 0, 0, 0, 0 0.5, 3.13, 5, 0.05, 0, 0, 0 1, 25, 20, 0.55, 0.02, 0, 0 1.5, 84.38, 45, 2.27, 0.13, 0.01, 0 2, 200, 80, 6.22, 0.54, 0.06, 0 2.5, 390.63, 125, 13.59, 1.6, 0.24, 0.01 3, 675, 180, 25.72, 3.92, 0.71, 0.05 3.5, 1071.88, 245, 44.12, 8.34, 1.8, 0.16 4, 1600, 320, 70.4, 16.05, 4.01, 0.46 4.5, 2278.13, 405, 106.32, 28.58, 8.14, 1.18 5, 2500, 500, 153.73, 47.89, 15.31, 2.73 5.5, 2500, 605, 214.6, 76.39, 27.13, 5.86 6, 2500, 720, 291, 117.01, 45.72, 11.76 6.5, 2500, 845, 385.09, 173.2, 73.91, 22.31 7, 2500, 980, 499.12, 249.03, 115.3, 40.35 7.5, 2500, 1125, 635.44, 349.2, 174.42, 70.08 8, 2500, 1280, 796.49, 479.09, 256.9, 117.44 8.5, 2500, 1445, 984.76, 644.8, 369.61, 190.74 9, 2500, 1620, 1202.85, 853.22, 520.81, 301.33 9.5, 2500, 1805, 1453.43, 1112.03, 720.39, 464.39 10, 2500, 2000, 1739.25, 1429.79, 980, 700 10.5, 2500, 2205, 2063.12, 1815.93, 1313.29, 1034.22 11, 2500, 2420, 2427.94, 2280.85, 1736.13, 1500.51 11.5, 2500, 2500, 2500, 2500, 2266.8, 2141.32 12, 2500, 2500, 2500, 2500, 2500, 2500 12.5, 2500, 2500, 2500, 2500, 2500, 2500 13, 2500, 2500, 2500, 2500, 2500, 2500 13.5, 2500, 2500, 2500, 2500, 2500, 2500 14, 2500, 2500, 2500, 2500, 2500, 2500 14.5, 2500, 2500, 2500, 2500, 2500, 2500 15, 2500, 2500, 2500, 2500, 2500, 2500 16, 2500, 2500, 2500, 2500, 2500, 2500 ENDTABLE LOG_ENTRY Used Dataset: Steering: Power Assist Force; Symetrical, Speed Sensitive High Boost Curve #Library : Steering: Power Assist Force #DataSet : Symetrical, Speed Sensitive High Boost Curve #Category: #FileID : FBoost102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist force EXIT_PARSFILE Steering\Str_FBoost\FBoost102.par #BlueLink19 Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` ` , Front boost force ENTER_PARSFILE Steering\Compliance\StrCmp104.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`E-Class, Sedan - Steering Comp.`CS E-Class #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1.7738e-07 STEER_COMP_COEFFICIENT 1.7738e-07 LOG_ENTRY Used Dataset: Steering System: Compliance; { CS E-Class } E-Class, Sedan - Steering Comp. #Library : Steering System: Compliance #DataSet : E-Class, Sedan - Steering Comp. #Category: CS E-Class #FileID : StrCmp104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp104.par #BlueLink13 Steering System: Compliance`E-Class, Sedan - Steering Comp.` CS E-Class` , Front compliance #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS E-Class } E-Class, Sedan: Power R&P #Library : Steering #DataSet : E-Class, Sedan: Power R&P #Category: CS E-Class #FileID : StrSys2106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2106_note.txt Steering for a vehicle with Wheelbase = 3050 mm Front Track = 1600 mm EXIT_NOTEFILE Steering\System2\StrSys2106_note.txt EXIT_PARSFILE Steering\System2\StrSys2106.par #BlueLink7 Steering`E-Class, Sedan: Power R&P` CS E-Class` , Steering system *IMAGE_LINK Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS E-Class } E-Class, Sedan #Library : Vehicle: Assembly #DataSet : E-Class, Sedan #Category: CS E-Class #FileID : Vehicle123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:24 #VehCode Ind_Ind ENTRY_NOTEFILE Vehicles\Assembly\Vehicle123_note.txt Generic E-Class Sedan (Full-Size) with SLA front and 5-Link rear suspension. E-Class type vehicles include Audi A6, BMW 5-Series, Mercedes Benz E350, Lexus GS, Cadillac DTS, Chrysler 300C. EXIT_NOTEFILE Vehicles\Assembly\Vehicle123_note.txt EXIT_PARSFILE Vehicles\Assembly\Vehicle123.par #BlueLink2 Vehicle: Assembly`E-Class, Sedan` CS E-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc171.par`09-01-2019`07:52:20 #FullDataName Procedures`chapt3_Radar Active Cruise Control: Second Car`BOOK_MPC_Procedures #CheckBox3 0 #RingCtrl0 0 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 *SPEED 80 TSTOP 40 TSTART 0 SSTART 0 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 1 OPT_DIRECTION 1 Opt_SC 0 SPEED 80 SV_VXS 80 #BlueLink27 Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview` Constant Position` , Steering #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Throttle\Throttle102.par`08-02-2011`16:43:27 #FullDataName Control: Throttle (Open Loop)`No Open-Loop Throttle` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 THROTTLE_ENGINE_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Throttle (Open Loop); No Open-Loop Throttle #Library : Control: Throttle (Open Loop) #DataSet : No Open-Loop Throttle #Category: #FileID : Throttle102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:27 #VehCode Open-loop throttle control EXIT_PARSFILE Control\Throttle\Throttle102.par #BlueLink29 Control: Throttle (Open Loop)`No Open-Loop Throttle` ` , Throttle #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow #BlueLink0 Road: 3D Surface (All Properties)`1200 m One Lane` Straight` , Misc. ENTER_PARSFILE Animator\Groups\Group124.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Radar Beam Pyramid`ACC Sensor ENTER_PARSFILE Animator\Frames\Frame188.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Car X-Y-Z-Yaw (Radar Not Detected)`Car Tracking ADD_REFERENCE_FRAME Car Tracking Car X-Y-Z-Yaw (Radar Not Detected) #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_ROLL_NAME Roll_E SET_PITCH_NAME Pitch SET_YAW_NAME Yaw SET_OFFSET_VAR_Z 0.45 SET_FRAME_VISIBLE_NAME NotDetec WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_Roll_E ANI_Roll_E WRT_Pitch ANI_Pitch WRT_Yaw ANI_Yaw WRT_NotDetec ANI_NotDetec LOG_ENTRY Used Dataset: Animator: Reference Frame; { Car Tracking } Car X-Y-Z-Yaw (Radar Not Detected) #Library : Animator: Reference Frame #DataSet : Car X-Y-Z-Yaw (Radar Not Detected) #Category: Car Tracking #FileID : Frame188 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame188.par #BlueLink10 Animator: Reference Frame`Car X-Y-Z-Yaw (Radar Not Detected)` Car Tracking` , Animator data #MiscYellow0 X_LENGTH 65 Y_LENGTH 12.25 Z_LENGTH 5 DEFINE_OUTPUT NotDetec=IF_GT_0_THEN(InpAux1, 0, 1) #ENDMYellow ENTER_PARSFILE Animator\STL\AniSTL352.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Pyramid`Primitives #MiscYellow3 add_obj Animator\3D_shape_files_CS\primitives\pyramid_1m_x_1m_x_1m.obj #ENDMYellow SET_COLOR 0.376 0.376 0.376 X_REF_LENGTH 1 Y_REF_LENGTH 1 Z_REF_LENGTH 1 *SPECULAR 1 SMOOTH_MAX_ANGLE 45 *IMAGE_FIT_MODE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Primitives } Pyramid #Library : Animator: Shape File Link #DataSet : Pyramid #Category: Primitives #FileID : AniSTL352 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL352.par #BlueLink11 Animator: Shape File Link`Pyramid` Primitives` , Animator data #MiscYellow1 ANI_NotDetec SET_COLOR green set_transparency .3 #ENDMYellow ENTER_PARSFILE Animator\Frames\Frame189.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Car X-Y-Z-Yaw (Radar Detected)`Car Tracking ADD_REFERENCE_FRAME Car Tracking Car X-Y-Z-Yaw (Radar Detected) #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_ROLL_NAME Roll_E SET_PITCH_NAME Pitch SET_YAW_NAME Yaw SET_OFFSET_VAR_Z 0.45 SET_FRAME_VISIBLE_NAME InpAux1 WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_Roll_E ANI_Roll_E WRT_Pitch ANI_Pitch WRT_Yaw ANI_Yaw WRT_InpAux1 ANI_InpAux1 LOG_ENTRY Used Dataset: Animator: Reference Frame; { Car Tracking } Car X-Y-Z-Yaw (Radar Detected) #Library : Animator: Reference Frame #DataSet : Car X-Y-Z-Yaw (Radar Detected) #Category: Car Tracking #FileID : Frame189 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame189.par #BlueLink12 Animator: Reference Frame`Car X-Y-Z-Yaw (Radar Detected)` Car Tracking` , Animator data #MiscYellow2 X_LENGTH 65 Y_LENGTH 12.25 Z_LENGTH 5 #ENDMYellow #BlueLink13 Animator: Shape File Link`Pyramid` Primitives` , Animator data #MiscYellow3 SET_COLOR red set_transparency .3 #ENDMYellow *X_REF_LENGTH 2756 *Y_REF_LENGTH 1988 *Z_REF_LENGTH 1272 #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { ACC Sensor } Radar Beam Pyramid #Library : Animator: Group #DataSet : Radar Beam Pyramid #Category: ACC Sensor #FileID : Group124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group ENTRY_NOTEFILE Animator\Groups\Group124_note.txt This shape is used to represent a radar field. It is attached to a reference frame and given some reference lengths for sizing purposes. You need manually to synchronize the animation shape sizes with the actual simulation settings in the Simulink model "Radar_Acc_CS8.mdl"). Open the above Simulink model and double click "Radar Sensor" block. Then, you will see "View Angle" and "Distance Range". For example, if "Distance Range" is 70 (m), you have to set X_LENGTH to 70. If "View Angle" is 10 (deg), you have to set Y_LENGTH to 12.25, which can be obtained by the following hand equations: Y_LENGTH = {tan(View Angle/2) * Distance Range} * 2. Z_LENGTH (height of the radar range) is not involved in the simulation. Therefore, you can adopt any number in order to show good looking animation. This screen is set up to change the visibility of two shape, one green and one red. The color indicates that detection has occurred. EXIT_NOTEFILE Animator\Groups\Group124_note.txt EXIT_PARSFILE Animator\Groups\Group124.par #BlueLink1 Animator: Group`Radar Beam Pyramid` ACC Sensor` , Misc. #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } chapt3_Radar Active Cruise Control: Second Car #Library : Procedures #DataSet : chapt3_Radar Active Cruise Control: Second Car #Category: BOOK_MPC_Procedures #FileID : Proc171 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 07:52:20 #VehCode Procedure EXIT_PARSFILE Procedures\Proc171.par #BlueLink28 Procedures`chapt3_Radar Active Cruise Control: Second Car` BOOK_MPC_Procedures` , Procedure #BlueLink23 CarSim Run Control`Chapter3_MPC_ACC: First Car (Ext. Sen.)` BOOK_MPC_Examples` , Overlay run or ERD file *IMAGE_LINK Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter3_MPC_ACC: Second Car (Ext. Sen.) CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter3_MPC_ACC: Second Car (Ext. Sen.) LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter3_MPC_ACC: Second Car (Ext. Sen.) #Library : CarSim Run Control #DataSet : Chapter3_MPC_ACC: Second Car (Ext. Sen.) #Category: BOOK_MPC_Examples #FileID : Run286 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 09:12:01 #VehCode Run EXIT_PARSFILE Runs\Run286.par #BlueLink23 CarSim Run Control`Chapter3_MPC_ACC: Second Car (Ext. Sen.)` BOOK_MPC_Examples` , Overlay run or ERD file *IMAGE_LINK Animator: Vehicles and Sensor Targets`B-Class, Sports Car` B-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter3_MPC_ACC: First Car (Ext. Sen.) CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter3_MPC_ACC: First Car (Ext. Sen.) LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter3_MPC_ACC: First Car (Ext. Sen.) #Library : CarSim Run Control #DataSet : Chapter3_MPC_ACC: First Car (Ext. Sen.) #Category: BOOK_MPC_Examples #FileID : Run288 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-30-2019 23:51:42 #VehCode Run EXIT_PARSFILE Runs\Run288.par END ================================================ FILE: Chapter-3/chap3_MPC_AdaptiveCruiseCtrl_VLV/Chapter3_MPC_ACC_ Second Car (Ext. Sen.).par ================================================ PARSFILE #EXPANDED_PARSFILE 2.0 ! This is an expansion of the parsfile: "Runs\Run286.par" ! It contains the contents of that file plus the contents of any files linked ! with the "PARSFILE" or "SPECIAL_PARSFILE" keywords. ! File created: 09:13 on September 01, 2019 by CarSim Version 8.1a, October 2011 PRODUCT_NAME CarSim ENTER_PARSFILE Runs\Run286.par`09-01-2019`09:12:01 #FullDataName CarSim Run Control`Chapter3_MPC_ACC: Second Car (Ext. Sen.)`BOOK_MPC_Examples #VehicleCode Ind_Ind OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex134.par`09-01-2019`08:51:54 #FullDataName Models: Simulink`chapt3_Radar Active Cruise: Second Car (Ext. Sen.)`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV\LEO_MPCACC_VLV1.mdl #RunSimCat Ind_Ind`C:\Users\Public\Documents\CarSim_Data\Extensions\Simulink\Multi_Vehicle\i_i2_64.dll #RingCtrl0 1 #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 1 *USE_DIFF_SOLVERS 1 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV *SIM_CODE1 Ind_Ind *SIM_PATH1 C:\Users\Public\Documents\CarSim_Data\Extensions\Simulink\Multi_Vehicle\i_i2_64.dll *ALTERNATE_PATH E:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV ENTER_PARSFILE IO_Channels\I_Channels\I_Ch121.par`08-30-2019`23:47:24 #FullDataName I/O Channels: Import`Radar ACC Import (Ext. Sen.)`MPC_BOOK_Sim_Imports *README_FILE Programs\solvers\ReadMe\i_i_imports_tab.txt #MiscYellow0 IMP_THROTTLE_ENGINE Add 0.0 1 IMP_PCON_BK Add 0.0 1 IMP_AUX1 Add 0.0 0 #ENDMYellow #RingCtrl0 0 LOG_ENTRY Used Dataset: I/O Channels: Import; { MPC_BOOK_Sim_Imports } Radar ACC Import (Ext. Sen.) #Library : I/O Channels: Import #DataSet : Radar ACC Import (Ext. Sen.) #Category: MPC_BOOK_Sim_Imports #FileID : I_Ch121 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-30-2019 23:47:24 #VehCode Import Channels EXIT_PARSFILE IO_Channels\I_Channels\I_Ch121.par #BlueLink0 I/O Channels: Import`Radar ACC Import (Ext. Sen.)` MPC_BOOK_Sim_Imports` , Import ENTER_PARSFILE IO_Channels\O_Channels\O_Ch125.par`08-31-2019`10:11:22 #FullDataName I/O Channels: Export`Radar ACC Export (Ext. Sen.)`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Vx EXP_Xo EXP_Yo EXP_Yaw EXP_Ax #MiscYellow0 #Number of Selected Channels: 5 #CHN_NAME: Vx #CHN_NAME: Xo #CHN_NAME: Yo #CHN_NAME: Yaw #CHN_NAME: Ax #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } Radar ACC Export (Ext. Sen.) #Library : I/O Channels: Export #DataSet : Radar ACC Export (Ext. Sen.) #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch125 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-31-2019 10:11:22 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch125.par #BlueLink1 I/O Channels: Export`Radar ACC Export (Ext. Sen.)` MPC_BOOK_Sim_Exports` , Export ENTER_PARSFILE Generic\VS_commands\GVS107.par`08-02-2011`16:43:24 #FullDataName Generic VS Commands`Install Obsolete CarSim 8.03 Generic Variables`Install Obsolete CarSim 8.03 Generic Variables #VehCode #MiscYellow0 ! There were 10 outputs with the root keyword "flag". These were simply given a ! value in a data field (yellow field), and written to the outputs. ! The default value of flag 1 was set to the run ID number. ! Change this if you used it for another purpose. define_output flag_1 = ID_RUN; ! ! The remaining flags had a default value of zero. define_output flag_2 = 0; define_output flag_3 = 0; define_output flag_4 = 0; define_output flag_5 = 0; define_output flag_6 = 0; define_output flag_7 = 0; define_output flag_8 = 0; define_output flag_9 = 0; define_output flag_10 = 0; ! ! There were 20 import variables with the root keyword IMP_AUX. ! They could be imported from external code for plotting, use as ! event triggers, etc. define_import imp_aux1 0; define_import imp_aux2 0; define_import imp_aux3 0; define_import imp_aux4 0; define_import imp_aux5 0; define_import imp_aux6 0; define_import imp_aux7 0; define_import imp_aux8 0; define_import imp_aux9 0; define_import imp_aux10 0; define_import imp_aux11 0; define_import imp_aux12 0; define_import imp_aux13 0; define_import imp_aux14 0; define_import imp_aux15 0; define_import imp_aux16 0; define_import imp_aux17 0; define_import imp_aux18 0; define_import imp_aux19 0; define_import imp_aux20 0; ! ! Each auxiliary import had an associated output variable, to automatically ! pass the imported value to the output file. define_output InpAux1 = imp_aux1; define_output InpAux2 = imp_aux2; define_output InpAux3 = imp_aux3; define_output InpAux4 = imp_aux4; define_output InpAux5 = imp_aux5; define_output InpAux6 = imp_aux6; define_output InpAux7 = imp_aux7; define_output InpAux8 = imp_aux8; define_output InpAux9 = imp_aux9; define_output InpAux10 = imp_aux10; define_output InpAux11 = imp_aux11; define_output InpAux12 = imp_aux12; define_output InpAux13 = imp_aux13; define_output InpAux14 = imp_aux14; define_output InpAux15 = imp_aux15; define_output InpAux16 = imp_aux16; define_output InpAux17 = imp_aux17; define_output InpAux18 = imp_aux18; define_output InpAux19 = imp_aux19; define_output InpAux20 = imp_aux20; ! ! 12 table functions with the root keyword "generic" were supported. ! This table definition creates 12 isntances, and automatically assigns ! the index "igeneric" for their use. define_table generic 12 #ENDMYellow LOG_ENTRY Used Dataset: Generic VS Commands; { Install Obsolete CarSim 8.03 Generic Variables } Install Obsolete CarSim 8.03 Generic Variables #Library : Generic VS Commands #DataSet : Install Obsolete CarSim 8.03 Generic Variables #Category: Install Obsolete CarSim 8.03 Generic Variables #FileID : GVS107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:24 #VehCode ENTRY_NOTEFILE Generic\VS_commands\GVS107_note.txt Support has been DROPPED for the CarSim output variables "flag", InpAux1 through InpAux 20, import variables imp_aux1 through imp_aux20, and tables generic(1) through generic(12). Through version 8.03, CarSim included a number of built-in "generic" output variables, import variables, and configurable functions (tables). VS Commands now allow you to create your own outputs, imports, and configurable functions, as well as parameters and variables. This VS Commands dataset installs all of the built-in variables supported before 8.1. To use them, this dataset must be linked so the definitions occur BEFORE any reference to the variables, or just use this example to create them yourself in the appropriate place. RECOMMENDED PRACTICE: Create new variables with names that are meaningful for your specific use, and don't use the old generic variables at all. EXIT_NOTEFILE Generic\VS_commands\GVS107_note.txt EXIT_PARSFILE Generic\VS_commands\GVS107.par #BlueLink2 Generic VS Commands`Install Obsolete CarSim 8.03 Generic Variables` Install Obsolete CarSim 8.03 Generic Variables` , Misc. Link #MiscYellow1 simfile LEO_MPC_ACC_ExtSen_Car2.sim #ENDMYellow LIVE_SERVER_UPDATE_FREQ_MAX 60 LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } chapt3_Radar Active Cruise: Second Car (Ext. Sen.) #Library : Models: Simulink #DataSet : chapt3_Radar Active Cruise: Second Car (Ext. Sen.) #Category: BOOK_MPC_Models #FileID : Cmex134 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 08:51:54 #VehCode EXIT_PARSFILE Models\Simulink\Cmex134.par #BlueLink12 Models: Simulink`chapt3_Radar Active Cruise: Second Car (Ext. Sen.)` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera107.par`08-02-2011`16:43:55 #FullDataName Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)`Vehicle Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw ENTER_PARSFILE Animator\Frames\Frame106.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw`Cameras ADD_REFERENCE_FRAME Cameras Camera Tracking X-Y-Z-Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_YAW_NAME yaw #MiscYellow0 cam_global_ambient .4 .4 .4 1 #ENDMYellow WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_yaw ANI_yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Cameras } Camera Tracking X-Y-Z-Yaw #Library : Animator: Reference Frame #DataSet : Camera Tracking X-Y-Z-Yaw #Category: Cameras #FileID : Frame106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame106.par #BlueLink0 Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw` Cameras` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 15 SET_DISTANCE 36 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 15 *SET_DISTANCE 36 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 37 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Vehicle Reference } Rear View High, Veh. Ref., (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View High, Veh. Ref., (Frt. Facing) #Category: Vehicle Reference #FileID : Camera107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera107.par #BlueLink0 Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)` Vehicle Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 1 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 0.753 0.753 0.753 SET_RUN_COLOR 0.753 0.753 0.753 FLAG_10 286 ID_RUN 286 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle123.par`08-02-2011`16:42:24 #FullDataName Vehicle: Assembly`E-Class, Sedan`CS E-Class #VehCode Ind_Ind #CheckBox0 0 #RingCtrl0 3 OPT_PT 3 #RingCtrl1 1 #RingCtrl2 1 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp111.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Front Comp.`CS E-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.8613 *R_SPRING_R 0.8613 *R_DAMPER_L 0.8681 *R_DAMPER_R 0.8681 *CT_FX_L -1.9e-6 *CT_FX_R -1.9e-6 *CS_FY_L -3.3e-5 *CS_FY_R -3.3e-5 *CS_MZ_L 1.4e-4 *CS_MZ_R 1.4e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 5e-5 *CI_FY_R 5e-5 *CI_MZ_L -5.3e-5 *CI_MZ_R -5.3e-5 *C_LONG_L 2.0e-4 *C_LONG_R 2.0e-4 *C_LAT_L 2.2e-5 *C_LAT_R 2.2e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.8681 *R_JOUNCE_R 0.8681 *R_REBOUND_L 0.8681 *R_REBOUND_R 0.8681 ENTER_PARSFILE Suspensions\Shocks\Shock101.par`08-02-2011`16:42:34 #FullDataName Suspension: Shock Absorber`Big Car Damping` #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 FD_TABLE LINEAR -1410, -5008 -720, -3436 -390, -2324 -210, -1792 -90, -1008 -20, -228 20, 228 90, 596 200, 784 390, 1100 760, 1796 1160, 2560 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Shock Absorber; Big Car Damping #Library : Suspension: Shock Absorber #DataSet : Big Car Damping #Category: #FileID : Shock101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Shock absorber EXIT_PARSFILE Suspensions\Shocks\Shock101.par #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx101.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 384 MX_AUX_COEFFICIENT 384 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 384 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 384 N-m/deg #Category: #FileID : AuxMx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx101.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb105.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+80 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 78, 0 79, 0 80, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -50, -10000 -49, 0 -48, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +80 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +80 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb105.par #BlueLink5 Suspension: Jounce and Rebound Stops`+80 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.8613 CMP_DAMP_COEFFICIENT 0.8681 CT_FX_COEFFICIENT -1.9e-6 CS_FY_COEFFICIENT -3.3e-5 CS_MZ_COEFFICIENT 1.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 5e-5 CI_MZ_COEFFICIENT -5.3e-5 C_LONG_COEFFICIENT 2.0e-4 C_LAT_COEFFICIENT 2.2e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.8681 CMP_RSTOP_COEFFICIENT 0.8681 ENTER_PARSFILE Suspensions\Springs\Spring109.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`34 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 34 FS_EXT_COEFFICIENT 34 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 3.0 SPRING_EXT_BETA 3.0 *SCALAR 34 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 34 N/mm #Library : Suspension: Spring #DataSet : 34 N/mm #Category: #FileID : Spring109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring109.par #BlueLink0 Suspension: Spring`34 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+80 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.8613 CMP_DAMP_COEFFICIENT 0.8681 CT_FX_COEFFICIENT -1.9e-6 CS_FY_COEFFICIENT -3.3e-5 CS_MZ_COEFFICIENT 1.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 5e-5 CI_MZ_COEFFICIENT -5.3e-5 C_LONG_COEFFICIENT 2.0e-4 C_LAT_COEFFICIENT 2.2e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.8681 CMP_RSTOP_COEFFICIENT 0.8681 #BlueLink3 Suspension: Spring`34 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS E-Class } E-Class, Sedan - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : E-Class, Sedan - Front Comp. #Category: CS E-Class #FileID : SuspCmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp111_note.txt Front spring rate chosen for a front ride frequency of 1.2 Hz and a front corner weight of 446 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp111_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp111.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Front Comp.` CS E-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin109.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`E-Class, Sedan - Front Suspension`CS E-Class iside 1 L_TRACK 1600 Y_CL_SUSP 0 M_US 90 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0.2 *TOE_R 0.2 *CAMBER_L -0.15 *CAMBER_R -0.15 R_US_STR 0.8 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive103.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_DIVE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE #RadioCtrl0 0 SUSP_DIVE_AXLE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { SLA } Front SLA - Dive Angle #Library : Suspension: Dive Angle (Caster Change) #DataSet : Front SLA - Dive Angle #Category: SLA #FileID : Dive103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive103_note.txt NOTE: Sign convention of the CS 7.01b and earlier datasets was reversed and demonstrated a pro-dive suspension. This dataset represents an anti-dive suspension. EXIT_NOTEFILE Suspensions\Dive\Dive103_note.txt EXIT_PARSFILE Suspensions\Dive\Dive103.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX103.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Front SLA - Longitudinal Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { SLA } Front SLA - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Front SLA - Longitudinal Movement #Category: SLA #FileID : SusX103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt Generic SLA Longitudinal movement vs. Jounce EXIT_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX103.par #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber103.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Front SLA - Camber Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.08171 -60, 0.996827 -50, 0.88789 -40, 0.755642 -30, 0.600569 -20, 0.422934 -10, 0.222791 0, 0 10, -0.245764 20, -0.515012 30, -0.808436 40, -1.12692 50, -1.47156 60, -1.84365 70, -2.24474 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { SLA } Front SLA - Camber Change #Library : Suspension: Camber Angle #DataSet : Front SLA - Camber Change #Category: SLA #FileID : Camber103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber103_note.txt Generic SLA Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber103_note.txt EXIT_PARSFILE Suspensions\Camber\Camber103.par #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat103.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Front SLA - Lateral Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { SLA } Front SLA - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Front SLA - Lateral Movement #Category: SLA #FileID : SusLat103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat103_note.txt Generic SLA Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat103_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat103.par #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe103.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Front SLA - Toe Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, 0.292407 -60, 0.237822 -50, 0.187561 -40, 0.141604 -30, 0.099916 -20, 0.062452 -10, 0.029164 0, 0 10, -0.025093 20, -0.046165 30, -0.063264 40, -0.076429 50, -0.085696 60, -0.091086 70, -0.09261 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { SLA } Front SLA - Toe Change #Library : Suspension: Toe Angle #DataSet : Front SLA - Toe Change #Category: SLA #FileID : Toe103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe103_note.txt Generic SLA Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe103_note.txt EXIT_PARSFILE Suspensions\Toe\Toe103.par #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -0.15 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -0.15 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS E-Class } E-Class, Sedan - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : E-Class, Sedan - Front Suspension #Category: CS E-Class #FileID : IndKin109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin109_note.txt Generic Front SLA suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin109_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin109.par #BlueLink19 Suspension: Independent System Kinematics`E-Class, Sedan - Front Suspension` CS E-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire109.par`08-02-2011`16:42:33 #FullDataName Tire`225/60 R18`Touring Tires X_LENGTH 364 Z_LENGTH 364 Y_LENGTH 225 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup108.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Euro Sedan Tire`Tires *X_REF_LENGTH 291 *Y_REF_LENGTH 195 *Z_REF_LENGTH 291 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL136.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive ENTER_PARSFILE Animator\Cameras\Camera103.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Top)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Fixed ENTER_PARSFILE Animator\Frames\Frame103.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Fixed` ADD_REFERENCE_FRAME Fixed #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll LOG_ENTRY Used Dataset: Animator: Reference Frame; Fixed #Library : Animator: Reference Frame #DataSet : Fixed #Category: #FileID : Frame103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame103.par #BlueLink0 Animator: Reference Frame`Fixed` ` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Fixed SET_LOOKPOINT_X -1.2 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 180 SET_ELEVATION 90 SET_DISTANCE 35 *SET_LOOKPOINT_X -1.2 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 180 *SET_ELEVATION 90 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Top) #Library : Animator: Camera Setup #DataSet : Shape Preview (Top) #Category: Shape Preview #FileID : Camera103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera103.par #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Tire #Library : Animator: Shape File Link #DataSet : Euro. Sedan Tire #Category: Tires #FileID : AniSTL136 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL136.par #BlueLink0 Animator: Shape File Link`Euro. Sedan Tire` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL137.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\wheel.obj #ENDMYellow SET_COLOR .62 .62 .62 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 40 *IMAGE_FIT_MODE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Wheel #Library : Animator: Shape File Link #DataSet : Euro. Sedan Wheel #Category: Tires #FileID : AniSTL137 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL137.par #BlueLink1 Animator: Shape File Link`Euro. Sedan Wheel` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL138.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y 0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Stripe #Library : Animator: Shape File Link #DataSet : Euro. Sedan Stripe #Category: Tires #FileID : AniSTL138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL138.par #BlueLink2 Animator: Shape File Link`Euro. Sedan Stripe` Tires` , Shape File x_ref_length 291 y_ref_length 195 z_ref_length 291 ENTER_PARSFILE Animator\Cameras\Camera104.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Side)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview ENTER_PARSFILE Animator\Frames\Frame101.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Yaw for Shape Preview`Shape Preview ADD_REFERENCE_FRAME Shape Preview Yaw for Shape Preview #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_YAW_NAME Yaw WRT_Yaw ANI_Yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Shape Preview } Yaw for Shape Preview #Library : Animator: Reference Frame #DataSet : Yaw for Shape Preview #Category: Shape Preview #FileID : Frame101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame101.par #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 0 SET_ELEVATION 0 SET_DISTANCE 35 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 0 *SET_ELEVATION 0 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Side) #Library : Animator: Camera Setup #DataSet : Shape Preview (Side) #Category: Shape Preview #FileID : Camera104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera104.par #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Euro Sedan Tire #Library : Animator: Shape Assembly #DataSet : Euro Sedan Tire #Category: Tires #FileID : StlGroup108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup108.par #BlueLink4 Animator: Shape Assembly`Euro Sedan Tire` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 225 ENTER_PARSFILE Animator\Sound\Set\SndSet111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 800 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 800; units = kg; #ENDMYellow ENTER_PARSFILE Animator\Sound\Sample\SndSmp112.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Lateral Slip`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 0.7 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod129.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Force Effects`Tire Lateral Slip Sound Modifiers #MiscYellow0 define_output mod1_<> = abs(fy_<>) /(rated_load_<> * 9.80665) * MuY_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod1_<> SOUNDMOD_INPUT_MIN 0.3 SOUNDMOD_INPUT_LOW 0.6 SOUNDMOD_INPUT_HIGH 0.9 SOUNDMOD_INPUT_MAX 1.2 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod1_<> ANI_mod1_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Lateral Slip Sound Modifiers } Loudness: Lateral Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Force Effects #Category: Tire Lateral Slip Sound Modifiers #FileID : SndMod129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod129.par #BlueLink0 Animator: Sound Modifier`Loudness: Lateral Force Effects` Tire Lateral Slip Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod130.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod2_<> = sin(min(abs(alphL_<>), 15 / dr) * abs(vxcen<>); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod2_<> SOUNDMOD_INPUT_MIN 0.1 SOUNDMOD_INPUT_LOW 0.5 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.5 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_mod2_<> ANI_mod2_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Lateral Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod130.par #BlueLink1 Animator: Sound Modifier`Loudness: Lateral Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Lateral Slip #Library : Animator: Sound Sample #DataSet : Lateral Slip #Category: Tire Sounds #FileID : SndSmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp112.par #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp113.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wheelspin / Brake Lockup`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod131.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Force Effects`Wheelspin / Lockup Sound Modifiers #MiscYellow0 define_output mod3_<> = abs(fx_<>) / (rated_load_<> * 9.80665) * MuX_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod3_<> SOUNDMOD_INPUT_MIN 0.2 SOUNDMOD_INPUT_LOW 0.4 SOUNDMOD_INPUT_HIGH 0.6 SOUNDMOD_INPUT_MAX 0.8 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod3_<> ANI_mod3_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wheelspin / Lockup Sound Modifiers } Loudness: Longitudinal Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Force Effects #Category: Wheelspin / Lockup Sound Modifiers #FileID : SndMod131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod131.par #BlueLink0 Animator: Sound Modifier`Loudness: Longitudinal Force Effects` Wheelspin / Lockup Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod132.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod4_<> = min(abs(KappL_<>), 1.0) * abs(vxcen<>) ; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod4_<> SOUNDMOD_INPUT_MIN 1.5 SOUNDMOD_INPUT_LOW 2.0 SOUNDMOD_INPUT_HIGH 2.5 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.3333 SOUNDMOD_OUTPUT_HIGH 0.6667 SOUNDMOD_OUTPUT_MAX 1.0 WRT_mod4_<> ANI_mod4_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Longitudinal Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod132.par #BlueLink1 Animator: Sound Modifier`Loudness: Longitudinal Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Wheelspin / Brake Lockup #Library : Animator: Sound Sample #DataSet : Wheelspin / Brake Lockup #Category: Tire Sounds #FileID : SndSmp113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp113.par #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 800 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 800 kg Rated Load #Category: Tire Sounds #FileID : SndSet111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet111.par #BlueLink13 Animator: Sound Set`Tire Sounds - 800 kg Rated Load` Tire Sounds` , Animator RRE 353 R0 364 FZ_TIRE_COEFFICIENT 278 FZ_MAX 100000 IT 0 L_RELAX_X 38 L_RELAX_Y 764 VLOW_ALPHA 5 RR_C 0.0041 RR_V 0.00003 RR_FX 1 OPT_TIRE_COMB 1 R_TIRE_COMB 1.1 ENTER_PARSFILE Tires\Mz\TireMz107.par`08-02-2011`16:42:32 #FullDataName Tire: Aligning Moment`225/60 R18`Touring Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.5, 13.74, 26.59, 38.42, 49.18, 58.84, 67.4, 74.85, 81.2 1, 27.52, 53.29, 77.08, 98.77, 118.28, 135.59, 150.69, 163.58 1.5, 38.52, 75, 109.07, 140.54, 169.23, 195.05, 217.91, 237.76 2, 42.77, 84.07, 123.55, 160.94, 195.99, 228.45, 258.1, 284.74 2.5, 40.05, 79.6, 118.43, 156.31, 192.98, 228.18, 261.6, 292.94 3, 33.77, 67.76, 101.91, 136.11, 170.21, 203.99, 237.23, 269.64 3.5, 26.96, 54.52, 82.71, 111.52, 140.91, 170.77, 200.97, 231.34 4, 21, 42.71, 65.25, 88.66, 112.96, 138.12, 164.12, 190.86 4.5, 16.15, 33.03, 50.78, 69.47, 89.15, 109.84, 131.57, 154.32 5, 12.31, 25.32, 39.18, 53.96, 69.73, 86.54, 104.45, 123.47 5.5, 9.27, 19.2, 29.94, 41.55, 54.11, 67.68, 82.33, 98.09 6, 6.85, 14.32, 22.54, 31.58, 41.53, 52.43, 64.36, 77.37 6.5, 4.9, 10.38, 16.56, 23.52, 31.32, 40.03, 49.71, 60.42 7, 3.3, 7.16, 11.68, 16.92, 22.96, 29.86, 37.67, 46.45 7.5, 1.99, 4.5, 7.63, 11.46, 16.04, 21.43, 27.68, 34.85 8, 0.89, 2.27, 4.25, 6.89, 10.24, 14.36, 19.3, 25.11 8.5, -0.04, 0.39, 1.39, 3.03, 5.34, 8.39, 12.21, 16.87 9, -0.84, -1.22, -1.05, -0.28, 1.15, 3.28, 6.16, 9.83 9.5, -1.52, -2.6, -3.15, -3.12, -2.46, -1.12, 0.94, 3.76 10, -2.12, -3.81, -4.98, -5.59, -5.59, -4.94, -3.59, -1.51 10.5, -2.64, -4.86, -6.59, -7.76, -8.33, -8.28, -7.55, -6.12 11, -3.1, -5.79, -8, -9.66, -10.75, -11.23, -11.05, -10.18 11.5, -3.51, -6.62, -9.25, -11.36, -12.9, -13.84, -14.14, -13.77 12, -3.88, -7.36, -10.37, -12.87, -14.81, -16.17, -16.9, -16.98 12.5, -4.21, -8.02, -11.38, -14.22, -16.53, -18.26, -19.38, -19.86 13, -4.5, -8.62, -12.28, -15.45, -18.08, -20.14, -21.6, -22.44 13.5, -4.77, -9.16, -13.1, -16.55, -19.48, -21.84, -23.62, -24.78 14, -5.02, -9.65, -13.85, -17.56, -20.75, -23.39, -25.45, -26.91 14.5, -5.24, -10.1, -14.53, -18.48, -21.91, -24.81, -27.13, -28.85 15, -5.44, -10.52, -15.16, -19.32, -22.98, -26.1, -28.66, -30.62 15.5, -5.63, -10.9, -15.73, -20.1, -23.96, -27.29, -30.06, -32.25 16, -5.8, -11.25, -16.26, -20.81, -24.86, -28.38, -31.36, -33.75 16.5, -5.97, -11.57, -16.75, -21.47, -25.69, -29.4, -32.55, -35.14 17, -6.11, -11.87, -17.21, -22.08, -26.47, -30.34, -33.66, -36.42 17.5, -6.25, -12.15, -17.63, -22.65, -27.19, -31.21, -34.69, -37.62 18, -6.38, -12.41, -18.02, -23.18, -27.86, -32.02, -35.65, -38.73 18.5, -6.5, -12.65, -18.39, -23.68, -28.48, -32.78, -36.55, -39.76 19, -6.62, -12.88, -18.74, -24.14, -29.07, -33.49, -37.39, -40.73 19.5, -6.72, -13.1, -19.06, -24.58, -29.62, -34.16, -38.17, -41.64 20, -6.82, -13.3, -19.36, -24.99, -30.13, -34.78, -38.91, -42.49 20.5, -6.92, -13.49, -19.65, -25.37, -30.62, -35.37, -39.6, -43.29 21, -7.01, -13.67, -19.92, -25.73, -31.08, -35.92, -40.25, -44.05 21.5, -7.09, -13.83, -20.18, -26.08, -31.51, -36.45, -40.87, -44.76 22, -7.17, -13.99, -20.42, -26.4, -31.92, -36.94, -41.45, -45.44 22.5, -7.24, -14.15, -20.64, -26.71, -32.3, -37.41, -42.01, -46.07 23, -7.32, -14.29, -20.86, -27, -32.67, -37.85, -42.53, -46.68 23.5, -7.38, -14.42, -21.07, -27.27, -33.02, -38.28, -43.03, -47.25 24, -7.45, -14.55, -21.26, -27.54, -33.35, -38.68, -43.5, -47.8 24.5, -7.51, -14.68, -21.45, -27.79, -33.66, -39.06, -43.95, -48.31 25, -7.57, -14.8, -21.63, -28.03, -33.97, -39.42, -44.38, -48.81 26, -7.57, -14.8, -21.63, -28.03, -33.97, -39.42, -44.38, -48.81 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Touring Tires } 225/60 R18 #Library : Tire: Aligning Moment #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireMz107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz107.par #BlueLink0 Tire: Aligning Moment`225/60 R18` Touring Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy107.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`225/60 R18`Touring Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.5, 276.28, 542.17, 796.11, 1037.22, 1264.9, 1478.75, 1678.46, 1863.81 1, 543.78, 1067.29, 1567.45, 2042.53, 2491.36, 2913.12, 3307.21, 3673.19 1.5, 794.63, 1560.03, 2291.71, 2987.17, 3644.68, 4263.02, 4841.27, 5378.78 2, 1022.61, 2008.24, 2951.2, 3848.24, 4697.14, 5496.28, 6244.46, 6940.76 2.5, 1223.67, 2403.99, 3534.24, 4610.54, 5630.23, 6591.31, 7492.28, 8331.97 3, 1396.06, 2743.8, 4035.64, 5267.18, 6435.36, 7537.86, 8572.88, 9539 3.5, 1540.13, 3028.22, 4456.04, 5818.77, 7113, 8336.12, 9486.09, 10561.24 4, 1657.77, 3260.87, 4800.56, 6271.72, 7670.65, 8994.49, 10240.97, 11408.22 4.5, 1751.86, 3447.27, 5077.17, 6636.17, 8120.35, 9526.68, 10852.66, 12096.26 5, 1825.68, 3593.81, 5295.1, 6923.97, 8476.36, 9949.04, 11339.39, 12645.19 5.5, 1882.54, 3706.94, 5463.74, 7147.24, 8753.26, 10278.46, 11720.06, 13075.75 6, 1925.52, 3792.65, 5591.84, 7317.32, 8964.81, 10530.87, 12012.67, 13407.74 6.5, 1957.31, 3856.21, 5687.13, 7444.25, 9123.23, 10720.57, 12233.34, 13659.03 7, 1980.19, 3902.12, 5756.22, 7536.65, 9239.02, 10859.81, 12396.02, 13845.08 7.5, 1996.04, 3934.07, 5804.56, 7601.65, 9320.93, 10958.85, 12512.39, 13978.92 8, 2006.38, 3955.09, 5836.61, 7645.08, 9376.12, 11026.13, 12592.07, 14071.29 8.5, 2012.44, 3967.57, 5855.92, 7671.64, 9410.35, 11068.44, 12642.86, 14130.95 9, 2015.19, 3973.45, 5865.35, 7685.08, 9428.24, 11091.25, 12671.03, 14164.92 9.5, 2015.4, 3974.24, 5867.15, 7688.35, 9433.46, 11098.89, 12681.58, 14178.84 10, 2013.65, 3971.12, 5863.1, 7683.82, 9428.92, 11094.83, 12678.48, 14177.19 10.5, 2010.43, 3965.04, 5854.58, 7673.31, 9416.9, 11081.77, 12664.87, 14163.51 11, 2006.09, 3956.73, 5842.69, 7658.29, 9399.2, 11061.86, 12643.23, 14140.62 11.5, 2000.94, 3946.76, 5828.3, 7639.9, 9377.24, 11036.8, 12615.52, 14110.74 12, 1995.19, 3935.59, 5812.08, 7619.02, 9352.14, 11007.91, 12583.3, 14075.63 12.5, 1989.02, 3923.55, 5794.54, 7596.36, 9324.76, 10976.24, 12547.76, 14036.68 13, 1982.57, 3910.94, 5776.1, 7572.47, 9295.8, 10942.61, 12509.88, 13994.97 13.5, 1975.94, 3897.96, 5757.09, 7547.77, 9265.79, 10907.67, 12470.41, 13951.37 14, 1969.22, 3884.77, 5737.75, 7522.61, 9235.15, 10871.92, 12429.93, 13906.55 14.5, 1962.46, 3871.51, 5718.27, 7497.23, 9204.21, 10835.75, 12388.91, 13861.05 15, 1955.73, 3858.28, 5698.81, 7471.85, 9173.21, 10799.49, 12347.71, 13815.27 15.5, 1949.05, 3845.15, 5679.48, 7446.61, 9142.37, 10763.35, 12306.61, 13769.55 16, 1942.46, 3832.17, 5660.38, 7421.64, 9111.82, 10727.53, 12265.82, 13724.13 16.5, 1935.97, 3819.4, 5641.55, 7397.02, 9081.68, 10692.16, 12225.52, 13679.2 17, 1929.6, 3806.86, 5623.06, 7372.82, 9052.04, 10657.35, 12185.83, 13634.92 17.5, 1923.37, 3794.57, 5604.94, 7349.1, 9022.96, 10623.17, 12146.83, 13591.38 18, 1917.28, 3782.56, 5587.21, 7325.88, 8994.48, 10589.68, 12108.6, 13548.67 18.5, 1911.33, 3770.83, 5569.89, 7303.18, 8966.64, 10556.93, 12071.18, 13506.85 19, 1905.53, 3759.38, 5552.99, 7281.02, 8939.44, 10524.92, 12034.6, 13465.95 19.5, 1899.87, 3748.23, 5536.51, 7259.41, 8912.91, 10493.68, 11998.88, 13425.99 20, 1894.37, 3737.36, 5520.45, 7238.35, 8887.04, 10463.21, 11964.03, 13386.99 20.5, 1889.01, 3726.78, 5504.81, 7217.83, 8861.82, 10433.51, 11930.05, 13348.95 21, 1883.79, 3716.48, 5489.59, 7197.84, 8837.27, 10404.57, 11896.93, 13311.86 21.5, 1878.72, 3706.46, 5474.77, 7178.39, 8813.35, 10376.38, 11864.66, 13275.71 22, 1873.78, 3696.71, 5460.34, 7159.45, 8790.07, 10348.93, 11833.23, 13240.49 22.5, 1868.98, 3687.23, 5446.31, 7141.02, 8767.4, 10322.2, 11802.62, 13206.18 23, 1864.31, 3677.99, 5432.65, 7123.08, 8745.34, 10296.17, 11772.8, 13172.75 23.5, 1859.76, 3669.01, 5419.36, 7105.62, 8723.86, 10270.83, 11743.76, 13140.19 24, 1855.34, 3660.27, 5406.42, 7088.63, 8702.94, 10246.15, 11715.48, 13108.47 24.5, 1851.04, 3651.76, 5393.83, 7072.08, 8682.58, 10222.12, 11687.93, 13077.57 25, 1846.85, 3643.48, 5381.57, 7055.96, 8662.75, 10198.71, 11661.1, 13047.47 26, 1846.85, 3643.48, 5381.57, 7055.96, 8662.75, 10198.71, 11661.1, 13047.47 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Touring Tires } 225/60 R18 #Library : Tire: Lateral Force #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireFy107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy107.par #BlueLink1 Tire: Lateral Force`225/60 R18` Touring Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx107.par`08-02-2011`16:42:28 #FullDataName Tire: Longitudinal Force`225/60 R18`Touring Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.02, 862.81, 1783.13, 2762.04, 3794.59, 4873.05, 5988.03, 7129.14, 8285.48 0.04, 1405.11, 2856.38, 4345.65, 5859.21, 7381.77, 8898.09, 10393.74, 11855.5 0.06, 1683.96, 3384.43, 5089.04, 6782.93, 8451.6, 10081.79, 11661.81, 13181.59 0.08, 1827.85, 3649.23, 5451.02, 7219.83, 8943.43, 10611.08, 12213.62, 13743.29 0.1, 1906.98, 3792.03, 5642.2, 7445.59, 9191.77, 10871.81, 12478.17, 14004.57 0.12, 1953.08, 3873.7, 5749.19, 7568.78, 9323.31, 11005.08, 12607.67, 14125.76 0.14, 1980.9, 3921.81, 5810.31, 7636.48, 9392.07, 11070.27, 12665.46, 14173.03 0.16, 1997.79, 3949.97, 5844.33, 7671.56, 9424.12, 11095.9, 12681.88, 14178.04 0.18, 2007.75, 3965.55, 5861.32, 7686.27, 9433.43, 11097.23, 12673.18, 14157.7 0.2, 2013.13, 3972.81, 5867.14, 7687.73, 9428.09, 11083.11, 12648.74, 14121.81 0.22, 2015.35, 3974.42, 5865.42, 7680.34, 9413.11, 11059, 12614.36, 14076.35 0.24, 2015.35, 3972.07, 5858.5, 7666.95, 9391.71, 11028.42, 12573.74, 14025.16 0.26, 2013.76, 3966.92, 5847.96, 7649.47, 9366.06, 10993.69, 12529.34, 13970.72 0.28, 2011.02, 3959.8, 5834.91, 7629.22, 9337.64, 10956.43, 12482.8, 13914.72 0.3, 2007.45, 3951.26, 5820.11, 7607.14, 9307.51, 10917.73, 12435.27, 13858.28 0.32, 2003.28, 3941.72, 5804.15, 7583.9, 9276.39, 10878.38, 12387.52, 13802.18 0.34, 1998.68, 3931.51, 5787.42, 7559.98, 9244.83, 10838.92, 12340.11, 13746.92 0.36, 1993.78, 3920.84, 5770.24, 7535.74, 9213.2, 10799.74, 12293.41, 13692.85 0.38, 1988.68, 3909.89, 5752.83, 7511.45, 9181.77, 10761.12, 12247.67, 13640.2 0.4, 1983.44, 3898.79, 5735.37, 7487.29, 9150.75, 10723.23, 12203.05, 13589.1 0.42, 1978.13, 3887.65, 5717.98, 7463.4, 9120.27, 10686.22, 12159.68, 13539.63 0.44, 1972.79, 3876.53, 5700.76, 7439.89, 9090.44, 10650.16, 12117.59, 13491.82 0.46, 1967.46, 3865.5, 5683.77, 7416.82, 9061.31, 10615.11, 12076.84, 13445.67 0.48, 1962.16, 3854.6, 5667.07, 7394.26, 9032.94, 10581.08, 12037.42, 13401.17 0.5, 1956.92, 3843.87, 5650.7, 7372.23, 9005.34, 10548.1, 11999.32, 13358.28 0.52, 1951.74, 3833.32, 5634.68, 7350.75, 8978.52, 10516.16, 11962.53, 13316.96 0.54, 1946.64, 3822.97, 5619.03, 7329.84, 8952.5, 10485.24, 11927, 13277.16 0.56, 1941.64, 3812.84, 5603.75, 7309.5, 8927.25, 10455.32, 11892.7, 13238.82 0.58, 1936.72, 3802.94, 5588.86, 7289.72, 8902.77, 10426.39, 11859.61, 13201.89 0.6, 1931.91, 3793.26, 5574.36, 7270.51, 8879.05, 10398.4, 11827.66, 13166.31 0.62, 1927.2, 3783.82, 5560.24, 7251.85, 8856.06, 10371.34, 11796.82, 13132.02 0.64, 1922.59, 3774.61, 5546.5, 7233.73, 8833.78, 10345.16, 11767.05, 13098.97 0.66, 1918.09, 3765.62, 5533.13, 7216.15, 8812.19, 10319.85, 11738.3, 13067.1 0.68, 1913.69, 3756.87, 5520.13, 7199.08, 8791.28, 10295.36, 11710.53, 13036.36 0.7, 1909.4, 3748.34, 5507.49, 7182.5, 8771.01, 10271.67, 11683.7, 13006.7 0.72, 1905.21, 3740.03, 5495.19, 7166.42, 8751.37, 10248.74, 11657.77, 12978.07 0.74, 1901.12, 3731.93, 5483.24, 7150.8, 8732.33, 10226.54, 11632.7, 12950.42 0.76, 1897.13, 3724.05, 5471.61, 7135.64, 8713.87, 10205.05, 11608.46, 12923.72 0.78, 1893.24, 3716.37, 5460.31, 7120.91, 8695.97, 10184.23, 11585, 12897.9 0.8, 1889.45, 3708.9, 5449.31, 7106.61, 8678.6, 10164.06, 11562.3, 12872.95 0.82, 1885.74, 3701.61, 5438.62, 7092.72, 8661.76, 10144.52, 11540.33, 12848.81 0.84, 1882.13, 3694.52, 5428.22, 7079.23, 8645.4, 10125.56, 11519.04, 12825.45 0.86, 1878.61, 3687.6, 5418.09, 7066.11, 8629.53, 10107.19, 11498.41, 12802.83 0.88, 1875.18, 3680.87, 5408.24, 7053.36, 8614.12, 10089.36, 11478.42, 12780.93 0.9, 1871.82, 3674.31, 5398.66, 7040.96, 8599.14, 10072.05, 11459.04, 12759.71 0.92, 1868.55, 3667.91, 5389.32, 7028.9, 8584.6, 10055.26, 11440.24, 12739.14 0.94, 1865.36, 3661.68, 5380.23, 7017.17, 8570.46, 10038.95, 11421.99, 12719.2 0.96, 1862.25, 3655.6, 5371.38, 7005.76, 8556.71, 10023.1, 11404.28, 12699.85 0.98, 1859.21, 3649.67, 5362.76, 6994.65, 8543.34, 10007.7, 11387.08, 12681.07 1, 1856.24, 3643.89, 5354.35, 6983.83, 8530.34, 9992.73, 11370.37, 12662.85 1.02, 1856.24, 3643.89, 5354.35, 6983.83, 8530.34, 9992.73, 11370.37, 12662.85 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Touring Tires } 225/60 R18 #Library : Tire: Longitudinal Force #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireFx107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:28 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx107.par #BlueLink2 Tire: Longitudinal Force`225/60 R18` Touring Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff107.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`225/60 R18`Touring Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 784.532, -2.7453 1569.064, -6.7216 2353.596, -11.0497 3138.128, -15.5865 3922.66, -20.2695 4707.192, -25.0638 5491.724, -29.9472 6276.256, -34.9047 7060.788, -39.925 7845.32, -45 8629.852, -50.1231 9414.384, -55.2891 10198.916, -60.4937 10983.448, -65.7334 11767.98, -71.0051 12552.512, -76.3065 13337.044, -81.6351 14121.576, -86.9892 14906.108, -92.3669 15690.64, -97.767 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Touring Tires } 225/60 R18 #Library : Tire: Camber Thrust Coefficient #DataSet : 225/60 R18 #Category: Touring Tires #FileID : CamStiff107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff107.par #BlueLink3 Tire: Camber Thrust Coefficient`225/60 R18` Touring Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Touring Tires } 225/60 R18 #Library : Tire #DataSet : 225/60 R18 #Category: Touring Tires #FileID : Tire109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire109_note.txt 800 kg rated load EXIT_NOTEFILE Tires\Tire\Tire109_note.txt EXIT_PARSFILE Tires\Tire\Tire109.par #BlueLink9 Tire`225/60 R18` Touring Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`225/60 R18` Touring Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp112.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Rear Comp.`CS E-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.797 *R_SPRING_R 0.797 *R_DAMPER_L 0.797 *R_DAMPER_R 0.797 *CT_FX_L -6.3e-6 *CT_FX_R -6.3e-6 *CS_FY_L -8.3e-6 *CS_FY_R -8.3e-6 *CS_MZ_L -1.2e-4 *CS_MZ_R -1.2e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L -3.3e-5 *CI_FY_R -3.3e-5 *CI_MZ_L -5e-5 *CI_MZ_R -5e-5 *C_LONG_L 3.6e-5 *C_LONG_R 3.6e-5 *C_LAT_L 9.4e-5 *C_LAT_R 9.4e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.797 *R_JOUNCE_R 0.797 *R_REBOUND_L 0.797 *R_REBOUND_R 0.797 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx103.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 344 MX_AUX_COEFFICIENT 344 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 344 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 344 N-m/deg #Category: #FileID : AuxMx103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx103.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+70 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 68, 0 69, 0 70, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -70, -10000 -69, 0 -68, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +70 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +70 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.3e-5 CI_MZ_COEFFICIENT -5e-5 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 ENTER_PARSFILE Suspensions\Springs\Spring110.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`46 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 46 FS_EXT_COEFFICIENT 46 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 3.0 SPRING_EXT_BETA 3.0 *SCALAR 46 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 46 N/mm #Library : Suspension: Spring #DataSet : 46 N/mm #Category: #FileID : Spring110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring110.par #BlueLink0 Suspension: Spring`46 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.3e-5 CI_MZ_COEFFICIENT -5e-5 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 #BlueLink3 Suspension: Spring`46 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS E-Class } E-Class, Sedan - Rear Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : E-Class, Sedan - Rear Comp. #Category: CS E-Class #FileID : SuspCmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp112_note.txt Rear spring rate chosen for a rear ride frequency of 1.4 Hz and a rear corner weight of 380 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp112_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp112.par #BlueLink17 Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Rear Comp.` CS E-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin110.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`E-Class, Sedan - Rear Suspension`CS E-Class iside 1 L_TRACK 1600 Y_CL_SUSP 0 M_US 90 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0.1 *TOE_R 0.1 *CAMBER_L 0 *CAMBER_R 0 R_US_STR 0.1 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive102.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive`5-Link Rear #RingCtrl0 CONSTANT *SCALAR 0 SUSP_DIVE_CONSTANT 0 #RadioCtrl0 0 SUSP_DIVE_AXLE_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { 5-Link Rear } Rear 5-Link - No Dive #Library : Suspension: Dive Angle (Caster Change) #DataSet : Rear 5-Link - No Dive #Category: 5-Link Rear #FileID : Dive102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table EXIT_PARSFILE Suspensions\Dive\Dive102.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX102.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement`5-Link Rear #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, 2.6892 -60, 1.76827 -50, 1.01123 -40, 0.426265 -30, 0.022328 -20, -0.190752 -10, -0.202151 0, 0 10, 0.428603 20, 1.09748 30, 2.02114 40, 3.21439 50, 4.69179 60, 6.46687 70, 8.5513 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, 2.6892 -60, 1.76827 -50, 1.01123 -40, 0.426265 -30, 0.022328 -20, -0.190752 -10, -0.202151 0, 0 10, 0.428603 20, 1.09748 30, 2.02114 40, 3.21439 50, 4.69179 60, 6.46687 70, 8.5513 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { 5-Link Rear } Rear 5-Link - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Rear 5-Link - Longitudinal Movement #Category: 5-Link Rear #FileID : SusX102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement EXIT_PARSFILE Suspensions\Longitudinal\SusX102.par #BlueLink1 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber102.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Rear 5-Link - Camber Change`5-Link Rear #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.66479 -60, 1.43877 -50, 1.21143 -40, 0.981031 -30, 0.746032 -20, 0.505036 -10, 0.25676 0, 0 10, -0.266403 20, -0.543604 30, -0.832791 40, -1.13524 50, -1.45237 60, -1.78583 70, -2.13754 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { 5-Link Rear } Rear 5-Link - Camber Change #Library : Suspension: Camber Angle #DataSet : Rear 5-Link - Camber Change #Category: 5-Link Rear #FileID : Camber102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber102_note.txt Generic 5-Link rear Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber102_note.txt EXIT_PARSFILE Suspensions\Camber\Camber102.par #BlueLink2 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat102.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Rear 5-Link - Lateral Movement`5-Link Rear #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 5.34878 -60, 3.82136 -50, 2.55534 -40, 1.54581 -30, 0.788587 -20, 0.280222 -10, 0.018009 0, 0 10, 0.22505 20, 0.692872 30, 1.40412 40, 2.36046 50, 3.56474 60, 5.02106 70, 6.73495 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 5.34878 -60, 3.82136 -50, 2.55534 -40, 1.54581 -30, 0.788587 -20, 0.280222 -10, 0.018009 0, 0 10, 0.22505 20, 0.692872 30, 1.40412 40, 2.36046 50, 3.56474 60, 5.02106 70, 6.73495 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { 5-Link Rear } Rear 5-Link - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Rear 5-Link - Lateral Movement #Category: 5-Link Rear #FileID : SusLat102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat102_note.txt Generic 5-Link rear Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat102_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat102.par #BlueLink3 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe102.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Rear 5-Link - Toe Change`5-Link Rear #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, -1.02057 -60, -0.828098 -50, -0.65623 -40, -0.501756 -30, -0.361641 -20, -0.233037 -10, -0.113294 0, 0 10, 0.108974 20, 0.215401 30, 0.320605 40, 0.425353 50, 0.529714 60, 0.632927 70, 0.733253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { 5-Link Rear } Rear 5-Link - Toe Change #Library : Suspension: Toe Angle #DataSet : Rear 5-Link - Toe Change #Category: 5-Link Rear #FileID : Toe102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe102_note.txt Generic 5-Link Rear Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe102_note.txt EXIT_PARSFILE Suspensions\Toe\Toe102.par #BlueLink4 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.1 A_CAMBER 0 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Right wheel X #BlueLink7 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.1 A_CAMBER 0 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS E-Class } E-Class, Sedan - Rear Suspension #Library : Suspension: Independent System Kinematics #DataSet : E-Class, Sedan - Rear Suspension #Category: CS E-Class #FileID : IndKin110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin110_note.txt Generic 5-Link rear suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin110_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin110.par #BlueLink20 Suspension: Independent System Kinematics`E-Class, Sedan - Rear Suspension` CS E-Class` , Rear kinematics * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`225/60 R18` Touring Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`225/60 R18` Touring Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass106.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`E-Class, Sedan Sprung Mass`CS E-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 3050 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 4250 H_H 500 H_CG_SU 530 LX_AXLE 3050 LX_CG_SU 1400 M_SU 1650 IXX_SU 928.1 IYY_SU 2788.5 IZZ_SU 3234.0 IXZ_SU 0 RX_SGUI 0.750 RY_SGUI 1.300 RZ_SGUI 1.400 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1480 Y_LENGTH 1880 *HWC_LF 320 *HWC_RF 320 *HWC_LR 300 *HWC_RR 300 H_WC 300 iside 2 H_WC 300 iaxle 1 iside 1 H_WC 320 iside 2 H_WC 320 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS E-Class } E-Class, Sedan Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : E-Class, Sedan Sprung Mass #Category: CS E-Class #FileID : SprMass106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass106.par #BlueLink0 Vehicle: Sprung Mass`E-Class, Sedan Sprung Mass` CS E-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero105.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`E-Class, Sedan Aero`CS E-Class #CheckBox0 0 X_REF_AERO -1525 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 3050 AREA_AERO 2.8 D_AIR 1.206 ENTER_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FX_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.45 -160, -0.45 -90, 0 -20, 0.325 0, 0.3 20, 0.325 90, 0 160, -0.45 180, -0.45 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fx (Drag) Coefficient; Drag Coefficient = 0.30 #Library : Aerodynamics: Fx (Drag) Coefficient #DataSet : Drag Coefficient = 0.30 #Category: #FileID : AirCFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Drag vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt A nominal drag coefficent of 0.3 is typical of contemporary mid-size sedans, such as Honda Accord, Toyota Camry, and Ford Fusion. The drag coefficient typically increases a few percent as the vehicle develops an aerodynamic sidelsip angle, peaking around 20 degrees. Drag reduces as sidelip increases because the component of the airspeed in the vehicle X direction reduces. EXIT_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force ENTER_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FY_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.5 0, 0 90, 0.5 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fy (Side Force) Coefficient; Side Force Coefficient = 0.5 at 90 deg #Library : Aerodynamics: Fy (Side Force) Coefficient #DataSet : Side Force Coefficient = 0.5 at 90 deg #Category: #FileID : AirCFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aero side force vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt The side force coefficient is typically larger then the drag coefficent, because the width of the vehiicle is less than the length, contirbuting to drag in the lateral direction. Also, the calculation of the coefficient is based on the projected frontal area of the car, while the side force is developed against the larger side area. EXIT_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force ENTER_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par`08-03-2011`08:02:01 #FullDataName Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FZ_AERO_SHAPING_TABLE SPLINE_FLAT -180, 0.4 -135, 0.45 -90, 0.35 -20, 0.185 0, 0.18 20, 0.185 90, 0.35 135, 0.45 180, 0.4 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fz (Lift) Coefficient; Lift Coefficient = 0.18 #Library : Aerodynamics: Fz (Lift) Coefficient #DataSet : Lift Coefficient = 0.18 #Category: #FileID : AirCFz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:01 #VehCode Lift vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt Nearly all passenger cars develop a small positive lift force at highway speeeds. EXIT_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force ENTER_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par`08-02-2011`16:43:55 #FullDataName Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MX_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.3 0, 0 90, 0.3 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mx (Roll Moment) Coefficient; Roll Moment Coefficient = 0.3 at 90 deg #Library : Aerodynamics: Mx (Roll Moment) Coefficient #DataSet : Roll Moment Coefficient = 0.3 at 90 deg #Category: #FileID : AirCMx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Aero Mx vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment ENTER_PARSFILE Aerodynamics\Aero_My\AirCMy104.par`08-03-2011`08:02:56 #FullDataName Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 MY_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.25 -160, -0.25 -90, 0 -20, 0.17 0, 0.15 20, 0.17 90, 0 160, -0.25 180, -0.25 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: My (Pitch Moment) Coefficient; Pitch Moment Coefficient = -0.15 #Library : Aerodynamics: My (Pitch Moment) Coefficient #DataSet : Pitch Moment Coefficient = -0.15 #Category: #FileID : AirCMy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:56 #VehCode Aero My vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_My\AirCMy104.par #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment ENTER_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par`08-03-2011`08:03:05 #FullDataName Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MZ_AERO_SHAPING_TABLE SPLINE -180, 0 -90, 0.05 0, 0 90, -0.05 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mz (Yaw Moment) Coefficient; Yaw Moment Coefficent = 0.05 at 90 deg #Library : Aerodynamics: Mz (Yaw Moment) Coefficient #DataSet : Yaw Moment Coefficent = 0.05 at 90 deg #Category: #FileID : AirCMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:03:05 #VehCode Aero Mz vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS E-Class } E-Class, Sedan Aero #Library : Aerodynamics: Basic #DataSet : E-Class, Sedan Aero #Category: CS E-Class #FileID : Aero105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero105_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero105_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero105.par #BlueLink1 Aerodynamics: Basic`E-Class, Sedan Aero` CS E-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh105.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`E-Class, Sedan`E-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 3048 OBJ_Y_LENGTH 1880 OBJ_Z_LENGTH 1480 *DZ_V 0 *LAT_WC 1600 *LAT_WC_2 1600 *HWC 375 *WHEEL_RATIO 1.1 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X 0 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X -3.048 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X -3.048 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.35625 WRITE_ADD_REFERENCE_FRAME_SHADOW ENTER_PARSFILE Animator\STL\AniSTL104.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Vehicle Shadow Shape`Vehicle Shadow #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\vehicle_shadows\shadow.obj #ENDMYellow SET_COLOR 0.125 0.125 0.125 X_REF_LENGTH 2690 Y_REF_LENGTH 1900 Z_REF_LENGTH 1220 *TRANSPARENCY 0.8 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.8 show_front on show_back off #MiscYellow0 tranclucent_fix on #ENDMYellow #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Vehicle Shadow } Vehicle Shadow Shape #Library : Animator: Shape File Link #DataSet : Vehicle Shadow Shape #Category: Vehicle Shadow #FileID : AniSTL104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL104.par #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup111.par`08-02-2011`16:43:38 #FullDataName Animator: Shape Assembly`E-Class, Sedan`CS E-Class *COLOR .36 .117 .117 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.25 *X_REF_LENGTH 2711 *Y_REF_LENGTH 1725 *Z_REF_LENGTH 1400 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 0 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL128.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Body`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\body.obj #ENDMYellow SET_COLOR 0 0 .6 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Body #Library : Animator: Shape File Link #DataSet : European Sedan: Body #Category: CS European Sedan #FileID : AniSTL128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL128.par #BlueLink0 Animator: Shape File Link`European Sedan: Body` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL129.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Details`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\details.obj #ENDMYellow SET_COLOR 0.753 0.753 0.753 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Details #Library : Animator: Shape File Link #DataSet : European Sedan: Details #Category: CS European Sedan #FileID : AniSTL129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL129.par #BlueLink1 Animator: Shape File Link`European Sedan: Details` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL130.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Windows`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\windows.obj #ENDMYellow SET_COLOR 0 0 0 *SPECULAR 1 *TRANSPARENCY 0.7 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 0.7 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Windows #Library : Animator: Shape File Link #DataSet : European Sedan: Windows #Category: CS European Sedan #FileID : AniSTL130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL130.par #BlueLink2 Animator: Shape File Link`European Sedan: Windows` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL131.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Interior Trim`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\interior_trim.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Interior Trim #Library : Animator: Shape File Link #DataSet : European Sedan: Interior Trim #Category: CS European Sedan #FileID : AniSTL131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL131.par #BlueLink3 Animator: Shape File Link`European Sedan: Interior Trim` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL132.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Steering Wheel`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\steering_wheel.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Steering Wheel #Library : Animator: Shape File Link #DataSet : European Sedan: Steering Wheel #Category: CS European Sedan #FileID : AniSTL132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL132.par #BlueLink4 Animator: Shape File Link`European Sedan: Steering Wheel` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL133.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Seats`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\seats.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Seats #Library : Animator: Shape File Link #DataSet : European Sedan: Seats #Category: CS European Sedan #FileID : AniSTL133 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL133.par #BlueLink5 Animator: Shape File Link`European Sedan: Seats` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL134.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Driver`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\driver\driver.obj #ENDMYellow SET_COLOR 0.69 0.69 0.69 *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Driver #Library : Animator: Shape File Link #DataSet : European Sedan: Driver #Category: CS European Sedan #FileID : AniSTL134 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL134.par #BlueLink13 Animator: Shape File Link`European Sedan: Driver` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 x_ref_length 2711 y_ref_length 1725 z_ref_length 1400 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS E-Class } E-Class, Sedan #Library : Animator: Shape Assembly #DataSet : E-Class, Sedan #Category: CS E-Class #FileID : StlGroup111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:38 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup111.par #BlueLink1 Animator: Shape Assembly`E-Class, Sedan` CS E-Class` , Vehicle body ENTER_PARSFILE Animator\Sound\Set\SndSet105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Gasoline Engine Vehicle`General Vehicle Sounds ENTER_PARSFILE Animator\Sound\Sample\SndSmp110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power Off`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_0.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod124.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_brake_torque -50; ! maximum engine braking torque define_output v_mod2 = if_gt_0_then(m_engout, 0, pow(m_engout/max_brake_torque, 0.5)); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod2 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod2 ANI_v_mod2 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod124.par #BlueLink0 Animator: Sound Modifier`Power Off Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod125.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 4000 SOUNDMOD_INPUT_HIGH 8000 SOUNDMOD_INPUT_MAX 12000 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod125 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod125.par #BlueLink1 Animator: Sound Modifier`Power Off Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 ENTER_PARSFILE Animator\Sound\Modifier\SndMod126.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Frequency with RPM`Gas Engine Sound Modifiers #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Frequency with RPM #Library : Animator: Sound Modifier #DataSet : Frequency with RPM #Category: Gas Engine Sound Modifiers #FileID : SndMod126 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt This modifier is based on a recording of a 4 cyl engine at 3500 RPM EXIT_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod126.par #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power Off #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power Off #Category: Gas Engine Sounds #FileID : SndSmp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt This sound set uses a sample recorded at closed throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp110.par #BlueLink0 Animator: Sound Sample`4 Cyl. - Power Off` Gas Engine Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power On`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_1.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod127.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_torque 265 define_output v_mod1 = if_gt_0_then(m_engout, pow(m_engout/max_torque, 0.5), 0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod1 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod1 ANI_v_mod1 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod127 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt This modifer is to be applied to power-on conditions, i.e, when the engine torque is positive. EXIT_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod127.par #BlueLink0 Animator: Sound Modifier`Power On Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod128.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod128.par #BlueLink1 Animator: Sound Modifier`Power On Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power On #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power On #Category: Gas Engine Sounds #FileID : SndSmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt This sound set uses a sample recorded at wide open throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp111.par #BlueLink1 Animator: Sound Sample`4 Cyl. - Power On` Gas Engine Sounds` , Sample 2 ENTER_PARSFILE Animator\Sound\Sample\SndSmp105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wind Noise`Wind Noise ADD_3D_SOUND Animator\Audio\Environment\Wind_1_Mono.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 0.3 SOUND_VOL_MIN 0.01 SOUND_VOL_MAX 9.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 9.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod122.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_parameter air_speed_ref 50; units = km/h; define_output v_mod3 = pow(vAir/air_speed_ref, 3.0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod3 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_v_mod3 ANI_v_mod3 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Loudness: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod122.par #BlueLink0 Animator: Sound Modifier`Loudness: Speed Effect` Wind Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod123.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Frequency: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_output v_mod4 = pow(vAir/air_speed_ref, 0.5); #ENDMYellow #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod4 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_v_mod4 ANI_v_mod4 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Frequency: Speed Effect #Library : Animator: Sound Modifier #DataSet : Frequency: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod123.par #BlueLink1 Animator: Sound Modifier`Frequency: Speed Effect` Wind Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Wind Noise } Wind Noise #Library : Animator: Sound Sample #DataSet : Wind Noise #Category: Wind Noise #FileID : SndSmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp105.par #BlueLink2 Animator: Sound Sample`Wind Noise` Wind Noise` , Sample 3 LOG_ENTRY Used Dataset: Animator: Sound Set; { General Vehicle Sounds } Gasoline Engine Vehicle #Library : Animator: Sound Set #DataSet : Gasoline Engine Vehicle #Category: General Vehicle Sounds #FileID : SndSet105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set ENTRY_NOTEFILE Animator\Sound\Set\SndSet105_note.txt The sound samples are based on a 4 cylinder engine. The frequency can be scaled for a different number of cylinders by setting the ncyls parameter here. EXIT_NOTEFILE Animator\Sound\Set\SndSet105_note.txt EXIT_PARSFILE Animator\Sound\Set\SndSet105.par #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL151.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Brake Lights (E-Class)`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\brakes_on.obj #ENDMYellow SET_COLOR 1 .8 .8 SET_SCALE_X 1 SET_SCALE_Y 1.005 SET_SCALE_Z 1 SET_OFFSET_X -0.02 SET_OFFSET_Y 0 SET_OFFSET_Z 0.25 X_REF_LENGTH 2711 Y_REF_LENGTH 1725 Z_REF_LENGTH 1400 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Brake Lights (E-Class) #Library : Animator: Shape File Link #DataSet : European Sedan: Brake Lights (E-Class) #Category: CS European Sedan #FileID : AniSTL151 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL151.par #BlueLink3 Animator: Shape File Link`European Sedan: Brake Lights (E-Class)` CS European Sedan` , Brake lights WRITE_REFERENCE_FRAME_SIZE ENTER_PARSFILE Animator\Cameras\Camera101.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Vehicle Pictures`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 1 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 230 SET_ELEVATION 6 SET_DISTANCE 12 *SET_LOOKPOINT_X 1 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 230 *SET_ELEVATION 6 *SET_DISTANCE 12 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Vehicle Pictures #Library : Animator: Camera Setup #DataSet : Vehicle Pictures #Category: Shape Preview #FileID : Camera101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera ENTRY_NOTEFILE Animator\Cameras\Camera101_note.txt Pause the animation at the very start and center the vehicle in the animator to take a picture for the Animator: Vehicle screen. EXIT_NOTEFILE Animator\Cameras\Camera101_note.txt EXIT_PARSFILE Animator\Cameras\Camera101.par #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera ENTER_PARSFILE Animator\STL\AniSTL114.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Blurred Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\blurred_tire\blurred_tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Blurred Tire #Library : Animator: Shape File Link #DataSet : Blurred Tire #Category: Tires #FileID : AniSTL114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL114.par #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { E-Class Vehicles } E-Class, Sedan #Library : Animator: Vehicles and Sensor Targets #DataSet : E-Class, Sedan #Category: E-Class Vehicles #FileID : AniVeh105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh105_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh105_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh105.par #BlueLink2 Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` , Vehicle animator data R_REAR_DRIVE_SC 1 PMAX_SC 200 ENTER_PARSFILE Powertrain\4wd\4WD103.par`08-02-2011`16:42:55 #FullDataName Powertrain: 4-Wheel Drive`250 kW, 7-spd., 2.65 Ratio` OPT_PT 3 OPT_ENGINE_PITCH_REACTION(1) 0 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 OPT_DIFF_INTERNAL(3) 1 #RingCtrl5 1 #RingCtrl6 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 #CheckBox1 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(1) 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine112.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`250 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.38 TC_THR_REL 0.02 TC_THR_APP 0.06 #CheckBox0 1 OPT_THROTTLE_DELAY 1 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 41.13, 126.46, 168.44, 171.86, 173.81, 174.77, 175.1, 175.18, 175.23, 175.18 633, 49.35, 154.32, 232.06, 247.82, 250.35, 251.38, 251.74, 251.77, 251.77, 251.77 750, 0, 145.21, 245.96, 268.1, 274.08, 276.25, 277.05, 277.12, 277.1, 277.07 1107, -16.45, 117.35, 288.44, 330.1, 346.63, 352.29, 354.4, 354.59, 354.55, 354.4 1463, -24.68, 78.29, 278.01, 345.45, 367.46, 377.44, 382.32, 383.45, 384.2, 391.51 1820, -27.97, 42.77, 246.75, 351.59, 388.29, 402.59, 410.23, 412.31, 413.85, 424.41 2177, -33.51, 16.45, 195.49, 338.42, 394.8, 427.7, 432.64, 437.57, 442.51, 453.42 2533, -42.07, -10.64, 135.08, 302.54, 398.09, 443.64, 455.67, 463.99, 468.83, 477.05 2890, -50.08, -25.19, 93.73, 255.06, 387.36, 448.48, 473.93, 480.34, 490.21, 498.44 3247, -57.14, -36.65, 62.58, 203.53, 371.29, 444.15, 477.05, 490.21, 500.08, 509.95 3603, -64.08, -46.7, 39.02, 160.4, 334.05, 430.99, 478.7, 493.5, 505.02, 514.89 3960, -71.06, -56.01, 19.61, 126.98, 289.7, 413.12, 473.76, 491.86, 503.37, 509.95 4317, -78.44, -65.43, 0.46, 95.46, 249.64, 394.29, 465.54, 481.99, 493.5, 503.27 4673, -86.11, -74.79, -16.57, 68.44, 207.81, 366.08, 452.38, 468.83, 485.28, 493.5 5030, -94.28, -84.03, -31.71, 44.85, 170.57, 330.59, 435.93, 452.38, 468.83, 477.05 5387, -102.47, -93.46, -45.75, 24, 138.78, 293.42, 410.15, 426.06, 448.04, 452.77 5743, -111.65, -103.3, -59.35, 4.69, 109.99, 254.69, 367.91, 393, 404.78, 409.44 6100, -121.65, -113.67, -72.91, -13.57, 83.71, 217.11, 322.13, 345.48, 356.46, 360.66 6500, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25 6700, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 250 kW Engine #Library : Powertrain: Engine #DataSet : 250 kW Engine #Category: CS Engine Torque Curves #FileID : Engine112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine112.par #BlueLink0 Powertrain: Engine`250 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC104.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 250 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.009121 0.1, 0.009121 0.2, 0.009121 0.3, 0.009121 0.4, 0.00912 0.5, 0.009112 0.6, 0.009066 0.7, 0.008864 0.8, 0.008142 0.9, 0.005941 0.95, 0.00366 0.99, 0.000872 1.01, -0.000872 1.05, -0.00366 1.1, -0.005941 1.2, -0.008142 1.3, -0.008864 1.4, -0.009066 1.5, -0.009112 1.6, -0.00912 1.7, -0.009121 1.8, -0.009121 1.9, -0.009121 2, -0.009121 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 250 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 250 kW Engine #Category: CS Torque Converters #FileID : TC104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC104.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 250 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans104.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`7-Speed Transmission` #RingCtrl0 7 NGEARS 7 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.42 R_GEAR_TR(1) 4.38 R_GEAR_TR(2) 2.86 R_GEAR_TR(3) 1.92 R_GEAR_TR(4) 1.37 R_GEAR_TR(5) 1.00 R_GEAR_TR(6) 0.82 R_GEAR_TR(7) 0.70 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 ITR(7) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_F(7) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 R_EFF_TR_R(7) 0.99 T_SHIFT 0.35 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift113.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 1-2 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 629 0.2, 629 0.8, 1233 1, 1233 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 503 0.4, 503 0.8, 925 1, 925 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 1-2 Shift #Category: 7-speed #FileID : Shift113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift113.par #BlueLink0 Powertrain: Shift Schedule`7-speed, 1-2 Shift` 7-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift114.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 2-3 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 938 0.2, 938 0.8, 1888 1, 1888 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 750 0.4, 750 0.8, 1416 1, 1416 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 2-3 Shift #Category: 7-speed #FileID : Shift114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift114.par #BlueLink1 Powertrain: Shift Schedule`7-speed, 2-3 Shift` 7-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift115.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 3-4 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1314 0.2, 1314 0.8, 2813 1, 2813 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1051 0.4, 1051 0.8, 2109 1, 2109 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 3-4 Shift #Category: 7-speed #FileID : Shift115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift115.par #BlueLink2 Powertrain: Shift Schedule`7-speed, 3-4 Shift` 7-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift116.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 4-5 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 3942 1, 3942 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 2956 1, 2956 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 4-5 Shift #Category: 7-speed #FileID : Shift116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift116.par #BlueLink3 Powertrain: Shift Schedule`7-speed, 4-5 Shift` 7-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift117.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 5-6 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2195 0.2, 2195 0.8, 5400 1, 5400 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1756 0.4, 1756 0.8, 4050 1, 4050 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 5-6 Shift #Category: 7-speed #FileID : Shift117 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift117.par #BlueLink4 Powertrain: Shift Schedule`7-speed, 5-6 Shift` 7-speed` , Shift schedule igear 6 ENTER_PARSFILE Powertrain\Shift\Shift118.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 6-7 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2571 0.2, 2571 0.8, 6585 1, 6585 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2057 0.4, 2057 0.8, 4939 1, 4939 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 6-7 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 6-7 Shift #Category: 7-speed #FileID : Shift118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift118.par #BlueLink5 Powertrain: Shift Schedule`7-speed, 6-7 Shift` 7-speed` , Shift schedule igear 7 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 7-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 7-Speed Transmission #Category: #FileID : Trans104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans104.par #BlueLink10 Powertrain: Transmission (18 Gears or CVT)`7-Speed Transmission` ` , Transmission (Extended) IDIFF 3 ENTER_PARSFILE Powertrain\Centerdiff\XC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transfer Case`Full Time Viscous 50/50` #CheckBox0 0 LOCKED_XC_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_XC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_XC 1.00 R_EFF_F_XC 0.99 R_EFF_R_XC 0.99 R_REAR_XC 0.5 LOCKED_XC_DAMP 0.8 LOCKED_XC_K 80 R_GEAR_DIFF 1.00 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 R_REAR_BIAS 0.5 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 LOG_ENTRY Used Dataset: Powertrain: Transfer Case; Full Time Viscous 50/50 #Library : Powertrain: Transfer Case #DataSet : Full Time Viscous 50/50 #Category: #FileID : XC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transfer case EXIT_PARSFILE Powertrain\Centerdiff\XC101.par #BlueLink3 Powertrain: Transfer Case`Full Time Viscous 50/50` ` , Transfer case IDIFF 1 ENTER_PARSFILE Powertrain\Frontdiff\F_Diff102.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front Differential`Viscous - Gear Ratio 2.65`CS Front Differentials #CheckBox0 0 LOCKED_FD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_FD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_FD 2.65 R_EFF_F_FD 0.99 R_EFF_R_FD 0.99 LOCKED_FD_DAMP 1 LOCKED_FD_K 100 IDS_F 0.013 IHS_LF 0.009 IHS_RF 0.009 R_GEAR_DIFF 2.65 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 1 LOCKED_DIFF_K 100 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Front Differential; { CS Front Differentials } Viscous - Gear Ratio 2.65 #Library : Powertrain: Front Differential #DataSet : Viscous - Gear Ratio 2.65 #Category: CS Front Differentials #FileID : F_Diff102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Front differential EXIT_PARSFILE Powertrain\Frontdiff\F_Diff102.par #BlueLink4 Powertrain: Front Differential`Viscous - Gear Ratio 2.65` CS Front Differentials` , Differential front IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff101.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Viscous - Gear Ratio 2.65`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_RD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_RD 2.65 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 R_GEAR_DIFF 2.65 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Viscous - Gear Ratio 2.65 #Library : Powertrain: Rear Differential #DataSet : Viscous - Gear Ratio 2.65 #Category: CS Rear Differentials #FileID : R_Diff101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff101.par #BlueLink5 Powertrain: Rear Differential`Viscous - Gear Ratio 2.65` CS Rear Differentials` , Differential rear LOG_ENTRY Used Dataset: Powertrain: 4-Wheel Drive; 250 kW, 7-spd., 2.65 Ratio #Library : Powertrain: 4-Wheel Drive #DataSet : 250 kW, 7-spd., 2.65 Ratio #Category: #FileID : 4WD103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:55 #VehCode 4WD ENTRY_NOTEFILE Powertrain\4wd\4WD103_note.txt Generic 250 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 250 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\4wd\4WD103_note.txt EXIT_PARSFILE Powertrain\4wd\4WD103.par #BlueLink5 Powertrain: 4-Wheel Drive`250 kW, 7-spd., 2.65 Ratio` ` , All-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W111.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`E-Class, Sedan w/ ABS`CS E-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 OFF_F_SGUI 0.15 OFF_R_SGUI 0.15 ON_F_SGUI 0.1 ON_R_SGUI 0.1 V_F_SGUI 3 V_R_SGUI 3 #RingCtrl0 2 #RingCtrl1 2 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq107.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`350 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 350 MY_BRAKE_COEFFICIENT 350 LOG_ENTRY Used Dataset: Brakes: Torque; 350 N-m/MPa #Library : Brakes: Torque #DataSet : 350 N-m/MPa #Category: #FileID : BrkTrq107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq107.par #BlueLink0 Brakes: Torque`350 N-m/MPa` ` , Left front ENTER_PARSFILE Brakes\Proportioning\BrkProp101.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity Gain` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1 PBK_DL_COEFFICIENT 1 LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity Gain #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity Gain #Category: #FileID : BrkProp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve EXIT_PARSFILE Brakes\Proportioning\BrkProp101.par #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.1 ABS_VMIN 3 iside 2 #BlueLink1 Brakes: Torque`350 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq104.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`150 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 150 MY_BRAKE_COEFFICIENT 150 LOG_ENTRY Used Dataset: Brakes: Torque; 150 N-m/MPa #Library : Brakes: Torque #DataSet : 150 N-m/MPa #Category: #FileID : BrkTrq104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq104.par #BlueLink2 Brakes: Torque`150 N-m/MPa` ` , Left rear #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.1 ABS_VMIN 3 iside 2 #BlueLink3 Brakes: Torque`150 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS E-Class } E-Class, Sedan w/ ABS #Library : Brakes: Four-Wheel System #DataSet : E-Class, Sedan w/ ABS #Category: CS E-Class #FileID : Brk4W111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W111.par #BlueLink6 Brakes: Four-Wheel System`E-Class, Sedan w/ ABS` CS E-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2106.par`08-02-2011`16:42:43 #FullDataName Steering`E-Class, Sedan: Power R&P`CS E-Class *I_COL 0.02 *I_GEAR_IN 0.0001 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 39.5 *L2_LKPO 0 *R1_LKPO 39.5 *R2_LKPO 0 *L1_AKPI 8.0 *L2_AKPI 0 *R1_AKPI 8.0 *R2_AKPI 0 *L1_ACAST 3.5 *L2_ACAST 0 *R1_ACAST 3.5 *R2_ACAST 0 *L1_XKPO -1.0 *L2_XKPO 0 *R1_XKPO -1.0 *R2_XKPO 0 *D_RACK_F 4 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 3 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 1 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.0001 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iside 2 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 0.1 ENTER_PARSFILE Steering\Compliance\StrCmp101.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`No Steer Compliance` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 STEER_COMP_CONSTANT 0 LOG_ENTRY Used Dataset: Steering System: Compliance; No Steer Compliance #Library : Steering System: Compliance #DataSet : No Steer Compliance #Category: #FileID : StrCmp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp101.par #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 1 ENTER_PARSFILE Steering\Rack_Kinematics\RackKin113.par`08-02-2011`16:42:41 #FullDataName Steering System: Rack kinematics`E-Class, Sedan Rack Kinematics`CS E-Class #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 RACK_TRAVEL_TABLE SPLINE -916.4942656, -86.36 -867.4138828, -83.03846154 -824.4560495, -79.96296296 -786.3359267, -77.10714286 -752.1486273, -74.44827586 -721.227932, -71.96666667 -693.0665246, -69.64516129 -667.2677336, -67.46875 -643.5147167, -65.42424242 -621.549914, -63.5 -601.160854, -61.68571429 -582.1700533, -59.97222222 -564.4276481, -58.35135135 -547.8059016, -56.81578947 -532.1950333, -55.35897436 -517.5, -53.975 -503.6379761, -52.65853659 -490.5363551, -51.4047619 -478.1311476, -50.20930233 -466.3656834, -49.06818182 -455.1895493, -47.97777778 -444.557715, -46.93478261 -434.4298052, -45.93617021 -424.7694916, -44.97916667 -415.5439804, -44.06122449 -406.7235787, -43.18 0, 0 406.7235787, 43.18 415.5439804, 44.06122449 424.7694916, 44.97916667 434.4298052, 45.93617021 444.557715, 46.93478261 455.1895493, 47.97777778 466.3656834, 49.06818182 478.1311476, 50.20930233 490.5363551, 51.4047619 503.6379761, 52.65853659 517.5, 53.975 532.1950333, 55.35897436 547.8059016, 56.81578947 564.4276481, 58.35135135 582.1700533, 59.97222222 601.160854, 61.68571429 621.549914, 63.5 643.5147167, 65.42424242 667.2677336, 67.46875 693.0665246, 69.64516129 721.227932, 71.96666667 752.1486273, 74.44827586 786.3359267, 77.10714286 824.4560495, 79.96296296 867.4138828, 83.03846154 916.4942656, 86.36 ENDTABLE LOG_ENTRY Used Dataset: Steering System: Rack kinematics; { CS E-Class } E-Class, Sedan Rack Kinematics #Library : Steering System: Rack kinematics #DataSet : E-Class, Sedan Rack Kinematics #Category: CS E-Class #FileID : RackKin113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:41 #VehCode Steering rack EXIT_PARSFILE Steering\Rack_Kinematics\RackKin113.par #BlueLink4 Steering System: Rack kinematics`E-Class, Sedan Rack Kinematics` CS E-Class` , Rack input to output: front D_RACK 4 TBAR 2 ENTER_PARSFILE Steering\KinematicsRack2\RkKinAx119.par`08-02-2011`16:42:42 #FullDataName Steering System: Kinematics for 2 Wheels (Rack & Pinion)`E-Class, Sedan Wheel Kinematics`CS E-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 RACK_KIN_TABLE SPLINE -86.36, -64.00924761 -83.03846154, -60.39496988 -79.96296296, -57.20021687 -77.10714286, -54.34703994 -74.44827586, -51.77840772 -71.96666667, -49.45080212 -69.64516129, -47.32999144 -67.46875, -45.38842777 -65.42424242, -43.60354705 -63.5, -41.95660533 -61.68571429, -40.43185156 -59.97222222, -39.01592124 -58.35135135, -37.69738095 -56.81578947, -36.46637887 -55.35897436, -35.31437211 -53.975, -34.23391082 -52.65853659, -33.21846512 -51.4047619, -32.26228482 -50.20930233, -31.3602847 -49.06818182, -30.5079499 -47.97777778, -29.70125727 -46.93478261, -28.93660959 -45.93617021, -28.21078022 -44.97916667, -27.52086625 -44.06122449, -26.86424867 -43.18, -26.23855826 0, 0 43.18, 21.3843292 44.06122449, 21.8085708 44.97916667, 22.25095273 45.93617021, 22.71274374 46.93478261, 23.19534249 47.97777778, 23.70029582 49.06818182, 24.22932041 50.20930233, 24.78432852 51.4047619, 25.367459 52.65853659, 25.98111474 53.975, 26.62800831 55.35897436, 27.31121822 56.81578947, 28.03425875 58.35135135, 28.80116776 59.97222222, 29.61661825 61.68571429, 30.48606232 63.5, 31.41591936 65.42424242, 32.41382662 67.46875, 33.48897913 69.64516129, 34.65260127 71.96666667, 35.91861787 74.44827586, 37.30463871 77.10714286, 38.83345523 79.96296296, 40.53541768 83.03846154, 42.45242008 86.36, 44.6450584 ENDTABLE iside 1 #DiagramOne1 RACK_KIN_TABLE SPLINE -86.36, -44.6450584 -83.03846154, -42.45242008 -79.96296296, -40.53541768 -77.10714286, -38.83345523 -74.44827586, -37.30463871 -71.96666667, -35.91861787 -69.64516129, -34.65260127 -67.46875, -33.48897913 -65.42424242, -32.41382662 -63.5, -31.41591936 -61.68571429, -30.48606232 -59.97222222, -29.61661825 -58.35135135, -28.80116776 -56.81578947, -28.03425875 -55.35897436, -27.31121822 -53.975, -26.62800831 -52.65853659, -25.98111474 -51.4047619, -25.367459 -50.20930233, -24.78432852 -49.06818182, -24.22932041 -47.97777778, -23.70029582 -46.93478261, -23.19534249 -45.93617021, -22.71274374 -44.97916667, -22.25095273 -44.06122449, -21.8085708 -43.18, -21.3843292 0, 0 43.18, 26.23855826 44.06122449, 26.86424867 44.97916667, 27.52086625 45.93617021, 28.21078022 46.93478261, 28.93660959 47.97777778, 29.70125727 49.06818182, 30.5079499 50.20930233, 31.3602847 51.4047619, 32.26228482 52.65853659, 33.21846512 53.975, 34.23391082 55.35897436, 35.31437211 56.81578947, 36.46637887 58.35135135, 37.69738095 59.97222222, 39.01592124 61.68571429, 40.43185156 63.5, 41.95660533 65.42424242, 43.60354705 67.46875, 45.38842777 69.64516129, 47.32999144 71.96666667, 49.45080212 74.44827586, 51.77840772 77.10714286, 54.34703994 79.96296296, 57.20021687 83.03846154, 60.39496988 86.36, 64.00924761 ENDTABLE #RadioCtrl0 0 #RadioCtrl1 0 *SCALAR 0.45 *SCALAR2 0.45 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Rack & Pinion); { CS E-Class } E-Class, Sedan Wheel Kinematics #Library : Steering System: Kinematics for 2 Wheels (Rack & Pinion) #DataSet : E-Class, Sedan Wheel Kinematics #Category: CS E-Class #FileID : RkKinAx119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:42 #VehCode Steer kinematics EXIT_PARSFILE Steering\KinematicsRack2\RkKinAx119.par #BlueLink10 Steering System: Kinematics for 2 Wheels (Rack & Pinion)`E-Class, Sedan Wheel Kinematics` CS E-Class` , Rack to front wheels ENTER_PARSFILE Steering\Str_FBoost\FBoost102.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` #RingCtrl0 CARPET #RadioCtrl0 1 TC_BOOST 0.08 F_BOOST_MAX 2500 *3D_XLabel Vehicle speed (kph) *3D_YLabel Torsion bar torque (N-m) *3D_ZLabel Power assist force (N) #DiagramTwo0 *3D_DATA 6, 63 ! columns x rows F_BOOST_R_CARPET 0, 0, 20, 50, 80, 120, 200 -16, -2500, -2500, -2500, -2500, -2500, -2500 -15, -2500, -2500, -2500, -2500, -2500, -2500 -14.5, -2500, -2500, -2500, -2500, -2500, -2500 -14, -2500, -2500, -2500, -2500, -2500, -2500 -13.5, -2500, -2500, -2500, -2500, -2500, -2500 -13, -2500, -2500, -2500, -2500, -2500, -2500 -12.5, -2500, -2500, -2500, -2500, -2500, -2500 -12, -2500, -2500, -2500, -2500, -2500, -2500 -11.5, -2500, -2500, -2500, -2500, -2266.8, -2141.32 -11, -2500, -2420, -2427.94, -2280.85, -1736.13, -1500.51 -10.5, -2500, -2205, -2063.12, -1815.93, -1313.29, -1034.22 -10, -2500, -2000, -1739.25, -1429.79, -980, -700 -9.5, -2500, -1805, -1453.43, -1112.03, -720.39, -464.39 -9, -2500, -1620, -1202.85, -853.22, -520.81, -301.33 -8.5, -2500, -1445, -984.76, -644.8, -369.61, -190.74 -8, -2500, -1280, -796.49, -479.09, -256.9, -117.44 -7.5, -2500, -1125, -635.44, -349.2, -174.42, -70.08 -7, -2500, -980, -499.12, -249.03, -115.3, -40.35 -6.5, -2500, -845, -385.09, -173.2, -73.91, -22.31 -6, -2500, -720, -291, -117.01, -45.72, -11.76 -5.5, -2500, -605, -214.6, -76.39, -27.13, -5.86 -5, -2500, -500, -153.73, -47.89, -15.31, -2.73 -4.5, -2278.13, -405, -106.32, -28.58, -8.14, -1.18 -4, -1600, -320, -70.4, -16.05, -4.01, -0.46 -3.5, -1071.88, -245, -44.12, -8.34, -1.8, -0.16 -3, -675, -180, -25.72, -3.92, -0.71, -0.05 -2.5, -390.63, -125, -13.59, -1.6, -0.24, -0.01 -2, -200, -80, -6.22, -0.54, -0.06, 0 -1.5, -84.38, -45, -2.27, -0.13, -0.01, 0 -1, -25, -20, -0.55, -0.02, 0, 0 -0.5, -3.13, -5, -0.05, 0, 0, 0 0, 0, 0, 0, 0, 0, 0 0.5, 3.13, 5, 0.05, 0, 0, 0 1, 25, 20, 0.55, 0.02, 0, 0 1.5, 84.38, 45, 2.27, 0.13, 0.01, 0 2, 200, 80, 6.22, 0.54, 0.06, 0 2.5, 390.63, 125, 13.59, 1.6, 0.24, 0.01 3, 675, 180, 25.72, 3.92, 0.71, 0.05 3.5, 1071.88, 245, 44.12, 8.34, 1.8, 0.16 4, 1600, 320, 70.4, 16.05, 4.01, 0.46 4.5, 2278.13, 405, 106.32, 28.58, 8.14, 1.18 5, 2500, 500, 153.73, 47.89, 15.31, 2.73 5.5, 2500, 605, 214.6, 76.39, 27.13, 5.86 6, 2500, 720, 291, 117.01, 45.72, 11.76 6.5, 2500, 845, 385.09, 173.2, 73.91, 22.31 7, 2500, 980, 499.12, 249.03, 115.3, 40.35 7.5, 2500, 1125, 635.44, 349.2, 174.42, 70.08 8, 2500, 1280, 796.49, 479.09, 256.9, 117.44 8.5, 2500, 1445, 984.76, 644.8, 369.61, 190.74 9, 2500, 1620, 1202.85, 853.22, 520.81, 301.33 9.5, 2500, 1805, 1453.43, 1112.03, 720.39, 464.39 10, 2500, 2000, 1739.25, 1429.79, 980, 700 10.5, 2500, 2205, 2063.12, 1815.93, 1313.29, 1034.22 11, 2500, 2420, 2427.94, 2280.85, 1736.13, 1500.51 11.5, 2500, 2500, 2500, 2500, 2266.8, 2141.32 12, 2500, 2500, 2500, 2500, 2500, 2500 12.5, 2500, 2500, 2500, 2500, 2500, 2500 13, 2500, 2500, 2500, 2500, 2500, 2500 13.5, 2500, 2500, 2500, 2500, 2500, 2500 14, 2500, 2500, 2500, 2500, 2500, 2500 14.5, 2500, 2500, 2500, 2500, 2500, 2500 15, 2500, 2500, 2500, 2500, 2500, 2500 16, 2500, 2500, 2500, 2500, 2500, 2500 ENDTABLE LOG_ENTRY Used Dataset: Steering: Power Assist Force; Symetrical, Speed Sensitive High Boost Curve #Library : Steering: Power Assist Force #DataSet : Symetrical, Speed Sensitive High Boost Curve #Category: #FileID : FBoost102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist force EXIT_PARSFILE Steering\Str_FBoost\FBoost102.par #BlueLink19 Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` ` , Front boost force ENTER_PARSFILE Steering\Compliance\StrCmp104.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`E-Class, Sedan - Steering Comp.`CS E-Class #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1.7738e-07 STEER_COMP_COEFFICIENT 1.7738e-07 LOG_ENTRY Used Dataset: Steering System: Compliance; { CS E-Class } E-Class, Sedan - Steering Comp. #Library : Steering System: Compliance #DataSet : E-Class, Sedan - Steering Comp. #Category: CS E-Class #FileID : StrCmp104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp104.par #BlueLink13 Steering System: Compliance`E-Class, Sedan - Steering Comp.` CS E-Class` , Front compliance ENTER_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par`08-02-2011`16:42:40 #FullDataName Steering: Parking Torque for 2 Wheels`Zero` #RingCtrl0 CONSTANT #RingCtrl1 CONSTANT #RadioCtrl0 0 #RadioCtrl1 0 *A_MZ_BETA_R 0.1 *A_MZ_BETA_L 0.1 *SCALAR 0 *SCALAR2 0 iside 2 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 iside 1 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 LOG_ENTRY Used Dataset: Steering: Parking Torque for 2 Wheels; Zero #Library : Steering: Parking Torque for 2 Wheels #DataSet : Zero #Category: #FileID : TqPkAx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Parking Torque EXIT_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS E-Class } E-Class, Sedan: Power R&P #Library : Steering #DataSet : E-Class, Sedan: Power R&P #Category: CS E-Class #FileID : StrSys2106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2106_note.txt Steering for a vehicle with Wheelbase = 3050 mm Front Track = 1600 mm EXIT_NOTEFILE Steering\System2\StrSys2106_note.txt EXIT_PARSFILE Steering\System2\StrSys2106.par #BlueLink7 Steering`E-Class, Sedan: Power R&P` CS E-Class` , Steering system *IMAGE_LINK Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS E-Class } E-Class, Sedan #Library : Vehicle: Assembly #DataSet : E-Class, Sedan #Category: CS E-Class #FileID : Vehicle123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:24 #VehCode Ind_Ind ENTRY_NOTEFILE Vehicles\Assembly\Vehicle123_note.txt Generic E-Class Sedan (Full-Size) with SLA front and 5-Link rear suspension. E-Class type vehicles include Audi A6, BMW 5-Series, Mercedes Benz E350, Lexus GS, Cadillac DTS, Chrysler 300C. EXIT_NOTEFILE Vehicles\Assembly\Vehicle123_note.txt EXIT_PARSFILE Vehicles\Assembly\Vehicle123.par #BlueLink2 Vehicle: Assembly`E-Class, Sedan` CS E-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc171.par`09-01-2019`07:52:20 #FullDataName Procedures`chapt3_Radar Active Cruise Control: Second Car`BOOK_MPC_Procedures #CheckBox3 0 #RingCtrl0 0 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 *SPEED 80 TSTOP 40 TSTART 0 SSTART 0 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 1 OPT_DIRECTION 1 Opt_SC 0 SPEED 80 SV_VXS 80 ENTER_PARSFILE Control\Driver\Driver105.par`08-02-2011`16:43:30 #FullDataName Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview`Constant Position #RingCtrl0 0 #RingCtrl1 CONSTANT LTARG_CONSTANT 0 #RadioCtrl0 0 AV_SW_MAX_DM 1200 TLAG_DM 0 A_SW_MAX_DM 720 *TPREV 1.5 *SCALAR 0 VLOW_DRIVER 10 #CheckBox0 0 OPT_DRIVER_MODEL 1 #CheckBox1 0 CREATE_PATH_OBJ off TPREV_CONSTANT 1.5 LOG_ENTRY Used Dataset: Control: Steering by the Closed-loop Driver Model; { Constant Position } No Offset, 1.5 sec. Preview #Library : Control: Steering by the Closed-loop Driver Model #DataSet : No Offset, 1.5 sec. Preview #Category: Constant Position #FileID : Driver105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:30 #VehCode Driver path follower EXIT_PARSFILE Control\Driver\Driver105.par #BlueLink27 Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview` Constant Position` , Steering ENTER_PARSFILE Control\Braking\ConBrk101.par`08-02-2011`16:43:32 #FullDataName Control: Braking (Open Loop)`No Open-Loop Braking Pressure` #RingCtrl0 CONSTANT #RadioCtrl0 0 OPT_VMIN -1 *SCALAR 0 PBK_CON_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Braking (Open Loop); No Open-Loop Braking Pressure #Library : Control: Braking (Open Loop) #DataSet : No Open-Loop Braking Pressure #Category: #FileID : ConBrk101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:32 #VehCode Brake control EXIT_PARSFILE Control\Braking\ConBrk101.par #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Throttle\Throttle102.par`08-02-2011`16:43:27 #FullDataName Control: Throttle (Open Loop)`No Open-Loop Throttle` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 THROTTLE_ENGINE_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Throttle (Open Loop); No Open-Loop Throttle #Library : Control: Throttle (Open Loop) #DataSet : No Open-Loop Throttle #Category: #FileID : Throttle102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:27 #VehCode Open-loop throttle control EXIT_PARSFILE Control\Throttle\Throttle102.par #BlueLink29 Control: Throttle (Open Loop)`No Open-Loop Throttle` ` , Throttle ENTER_PARSFILE Control\Gear_at\GearAT101.par`08-02-2011`16:43:31 #FullDataName Control: Shifting (Closed Loop)`AT All Gears` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR NGEARS MODE_TRANS_CONSTANT NGEARS LOG_ENTRY Used Dataset: Control: Shifting (Closed Loop); AT All Gears #Library : Control: Shifting (Closed Loop) #DataSet : AT All Gears #Category: #FileID : GearAT101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:31 #VehCode Closed-loop shift control ENTRY_NOTEFILE Control\Gear_at\GearAT101_note.txt NGEARS is the internal symbol for the number of gears in a transmission. By setting the Mode to NGEARS, CarSim is automatically told to use all of the transmission gears. EXIT_NOTEFILE Control\Gear_at\GearAT101_note.txt EXIT_PARSFILE Control\Gear_at\GearAT101.par #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow ENTER_PARSFILE Roads\3D_Road\Road102.par`08-02-2011`16:43:22 #FullDataName Road: 3D Surface (All Properties)`1200 m One Lane`Straight OPT_ROAD 1 iroad 1 ! obsolete March 2011 idz_road 1 RR_SURF 1 DZ_SHADOW 0.005 L_CAMERA_FRONT 0.5 L_CAMERA_REAR 0.5 ENTER_PARSFILE Roads\Center_XY\RoadXY101.par`08-02-2011`16:43:06 #FullDataName Road: X-Y Coordinates of Centerline`Straight` SPATH 0 #CheckBox0 0 OPT_ROAD_LOOP 0 #RadioCtrl0 0 OPT_ROAD 1 #DiagramOne0 YIN_TABLE 0, 0, 0 100, 0, 100 ENDTABLE LOG_ENTRY Used Dataset: Road: X-Y Coordinates of Centerline; Straight #Library : Road: X-Y Coordinates of Centerline #DataSet : Straight #Category: #FileID : RoadXY101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:06 #VehCode Horizontal (X-Y) table EXIT_PARSFILE Roads\Center_XY\RoadXY101.par #BlueLink0 Road: X-Y Coordinates of Centerline`Straight` ` , Centerline geometry ENTER_PARSFILE Roads\Center_Z\RoadZ101.par`08-02-2011`16:43:13 #FullDataName Road: Centerline Elevation`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_ZS_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Centerline Elevation; Flat #Library : Road: Centerline Elevation #DataSet : Flat #Category: #FileID : RoadZ101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Centerline elevation: Z vs S EXIT_PARSFILE Roads\Center_Z\RoadZ101.par #BlueLink1 Road: Centerline Elevation`Flat` ` , Centerline elevation ENTER_PARSFILE Roads\dZ_Map\RdElMap101.par`08-02-2011`16:43:11 #FullDataName Road: Off-Center Elevation Map, S-L Grid`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_DZ_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Off-Center Elevation Map, S-L Grid; Flat #Library : Road: Off-Center Elevation Map, S-L Grid #DataSet : Flat #Category: #FileID : RdElMap101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:11 #VehCode dZ via S-L grid EXIT_PARSFILE Roads\dZ_Map\RdElMap101.par #BlueLink2 Road: Off-Center Elevation Map, S-L Grid`Flat` ` , Off-center elevation 1 ENTER_PARSFILE Roads\Friction\RdFric101.par`08-02-2011`16:43:12 #FullDataName Road: Friction Map, S-L Grid`0.85`Constant Mu OPT_ROAD 1 #RingCtrl0 CONSTANT MU_ROAD_CONSTANT 0.85 #RadioCtrl0 0 *SCALAR 0.85 LOG_ENTRY Used Dataset: Road: Friction Map, S-L Grid; { Constant Mu } 0.85 #Library : Road: Friction Map, S-L Grid #DataSet : 0.85 #Category: Constant Mu #FileID : RdFric101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:12 #VehCode Mu via S-L grid EXIT_PARSFILE Roads\Friction\RdFric101.par #BlueLink3 Road: Friction Map, S-L Grid`0.85` Constant Mu` , Friction ENTER_PARSFILE Roads\Shapes\RdShp102.par`08-02-2011`16:43:14 #FullDataName Road: Animator Surface Shapes`1200 m Road + 200 m Light Grass (One Lane)`Roads NLANES 5 OPTTHRESHOLD 1 #MiscYellow0 # 0.878 0.878 0.878, Road (One Lane), 0.2, 60, 1, -4, m, 4, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 60, 1, 4, m, 7.1, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 60, 3.1, -7.1, m, -100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 60, 3.1, 7.1, m, 100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 60, -0.969, -4, m, -7.1, m, , , -100, 1200, 5, , , #ENDMYellow #CheckBox0 0 MIRROR 0 COLOR(1) 0.878 0.878 0.878 MATERIAL(1) Road (One Lane) SPECULAR(1) 0.2 SCALE(1) 60 LTILES(1) 1 LIN(1) -4 LINUNITS(1) m LOUT(1) 4 LOUTUNITS(1) m SSTART(1) -100 SSTOP(1) 1200 SINT(1) 5 COLOR(2) 0.878 0.878 0.878 MATERIAL(2) Road Transition (Light) SPECULAR(2) 0.1 SCALE(2) 60 LTILES(2) 1 LIN(2) 4 LINUNITS(2) m LOUT(2) 7.1 LOUTUNITS(2) m SSTART(2) -100 SSTOP(2) 1200 SINT(2) 5 COLOR(3) 0.878 0.878 0.878 MATERIAL(3) Grass (Light) SPECULAR(3) 0.1 SCALE(3) 60 LTILES(3) 3.1 LIN(3) -7.1 LINUNITS(3) m LOUT(3) -100 LOUTUNITS(3) m SSTART(3) -100 SSTOP(3) 1200 SINT(3) 5 COLOR(4) 0.878 0.878 0.878 MATERIAL(4) Grass (Light) SPECULAR(4) 0.1 SCALE(4) 60 LTILES(4) 3.1 LIN(4) 7.1 LINUNITS(4) m LOUT(4) 100 LOUTUNITS(4) m SSTART(4) -100 SSTOP(4) 1200 SINT(4) 5 COLOR(5) 0.878 0.878 0.878 MATERIAL(5) Road Transition (Light) SPECULAR(5) 0.1 SCALE(5) 60 LTILES(5) -0.969 LIN(5) -4 LINUNITS(5) m LOUT(5) -7.1 LOUTUNITS(5) m SSTART(5) -100 SSTOP(5) 1200 SINT(5) 5 MTL_FILE Roads\materials\road.mtl LOG_ENTRY Used Dataset: Road: Animator Surface Shapes; { Roads } 1200 m Road + 200 m Light Grass (One Lane) #Library : Road: Animator Surface Shapes #DataSet : 1200 m Road + 200 m Light Grass (One Lane) #Category: Roads #FileID : RdShp102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:14 #VehCode Road shapes EXIT_PARSFILE Roads\Shapes\RdShp102.par #BlueLink4 Road: Animator Surface Shapes`1200 m Road + 200 m Light Grass (One Lane)` Roads` , Road shape definitions add_reference_frame road_stuff_1 reference_frame_ghosts off ENTER_PARSFILE Animator\Groups\Group101.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Partly Cloudy Sky`Skies ENTER_PARSFILE Animator\Frames\Frame104.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Front Point w/o Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Front Point w/o Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camF SET_Y_NAME Y_camF SET_Z_NAME Z_camF WRT_X_camF ANI_X_camF WRT_Y_camF ANI_Y_camF WRT_Z_camF ANI_Z_camF LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Front Point w/o Yaw #Library : Animator: Reference Frame #DataSet : Camera Front Point w/o Yaw #Category: Road Tracking #FileID : Frame104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame104.par #BlueLink0 Animator: Reference Frame`Camera Front Point w/o Yaw` Road Tracking` , Animator data ENTER_PARSFILE Animator\STL\AniSTL115.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Partly Cloudy Sky`Skies #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\Slightly_Cloudy_Sky\sky_road_course.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0 SMOOTH_MAX_ANGLE 30 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 1 set_fogging off #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Skies } Partly Cloudy Sky #Library : Animator: Shape File Link #DataSet : Partly Cloudy Sky #Category: Skies #FileID : AniSTL115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL115.par #BlueLink1 Animator: Shape File Link`Partly Cloudy Sky` Skies` , Animator data ENTER_PARSFILE Animator\STL\AniSTL116.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Complex Land Bowl for Light Grass`Terrain #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\landbowls\complex_land_for_light_grass.obj #ENDMYellow SET_COLOR .8 .8 .8 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 1 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Terrain } Complex Land Bowl for Light Grass #Library : Animator: Shape File Link #DataSet : Complex Land Bowl for Light Grass #Category: Terrain #FileID : AniSTL116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL116.par #BlueLink2 Animator: Shape File Link`Complex Land Bowl for Light Grass` Terrain` , Animator data #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { Skies } Partly Cloudy Sky #Library : Animator: Group #DataSet : Partly Cloudy Sky #Category: Skies #FileID : Group101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group EXIT_PARSFILE Animator\Groups\Group101.par #BlueLink6 Animator: Group`Partly Cloudy Sky` Skies` , Misc. animator set add_reference_frame road_stuff_2 reference_frame_ghosts off add_reference_frame road_stuff_3 reference_frame_ghosts off add_reference_frame road_stuff_4 reference_frame_ghosts off iroad 2 ! obsolete March 2011 idz_road 2 ENTER_PARSFILE Animator\Cameras\Camera105.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 1 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw ENTER_PARSFILE Animator\Frames\Frame105.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Rear Point w/ Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Rear Point w/ Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camR SET_Y_NAME Y_camR SET_Z_NAME Z_camR SET_YAW_NAME Yaw_CamR WRT_X_camR ANI_X_camR WRT_Y_camR ANI_Y_camR WRT_Z_camR ANI_Z_camR WRT_Yaw_CamR ANI_Yaw_CamR LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Rear Point w/ Yaw #Library : Animator: Reference Frame #DataSet : Camera Rear Point w/ Yaw #Category: Road Tracking #FileID : Frame105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame105.par #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 5 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 5 SET_DISTANCE 49 *SET_LOOKPOINT_X 5 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 5 *SET_DISTANCE 49 GHOST_COUNT 0 *LIGHT_X -1000 *LIGHT_Y -1000 *LIGHT_Z 10000 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 30 SUN_POSITION -1000 -1000 10000 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } Rear View , Road Ref. (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View , Road Ref. (Frt. Facing) #Category: Road Reference #FileID : Camera105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera105.par #BlueLink5 Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)` Road Reference` , Camera ENTER_PARSFILE Roads\3D_Road\Road102.ani`07-20-2011`03:07:16 add_reference_frame The Road reference_frame_ghosts off add_obj Roads\3D_Road\Road102_1.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.2 0.2 0.2 add_obj Roads\3D_Road\Road102_2.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_3.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_4.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_5.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 EXIT_PARSFILE Roads\3D_Road\Road102.ani LOG_ENTRY Used Dataset: Road: 3D Surface (All Properties); { Straight } 1200 m One Lane #Library : Road: 3D Surface (All Properties) #DataSet : 1200 m One Lane #Category: Straight #FileID : Road102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:22 #VehCode 3D road EXIT_PARSFILE Roads\3D_Road\Road102.par #BlueLink0 Road: 3D Surface (All Properties)`1200 m One Lane` Straight` , Misc. ENTER_PARSFILE Animator\Groups\Group124.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Radar Beam Pyramid`ACC Sensor ENTER_PARSFILE Animator\Frames\Frame188.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Car X-Y-Z-Yaw (Radar Not Detected)`Car Tracking ADD_REFERENCE_FRAME Car Tracking Car X-Y-Z-Yaw (Radar Not Detected) #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_ROLL_NAME Roll_E SET_PITCH_NAME Pitch SET_YAW_NAME Yaw SET_OFFSET_VAR_Z 0.45 SET_FRAME_VISIBLE_NAME NotDetec WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_Roll_E ANI_Roll_E WRT_Pitch ANI_Pitch WRT_Yaw ANI_Yaw WRT_NotDetec ANI_NotDetec LOG_ENTRY Used Dataset: Animator: Reference Frame; { Car Tracking } Car X-Y-Z-Yaw (Radar Not Detected) #Library : Animator: Reference Frame #DataSet : Car X-Y-Z-Yaw (Radar Not Detected) #Category: Car Tracking #FileID : Frame188 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame188.par #BlueLink10 Animator: Reference Frame`Car X-Y-Z-Yaw (Radar Not Detected)` Car Tracking` , Animator data #MiscYellow0 X_LENGTH 65 Y_LENGTH 12.25 Z_LENGTH 5 DEFINE_OUTPUT NotDetec=IF_GT_0_THEN(InpAux1, 0, 1) #ENDMYellow ENTER_PARSFILE Animator\STL\AniSTL352.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Pyramid`Primitives #MiscYellow3 add_obj Animator\3D_shape_files_CS\primitives\pyramid_1m_x_1m_x_1m.obj #ENDMYellow SET_COLOR 0.376 0.376 0.376 X_REF_LENGTH 1 Y_REF_LENGTH 1 Z_REF_LENGTH 1 *SPECULAR 1 SMOOTH_MAX_ANGLE 45 *IMAGE_FIT_MODE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Primitives } Pyramid #Library : Animator: Shape File Link #DataSet : Pyramid #Category: Primitives #FileID : AniSTL352 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL352.par #BlueLink11 Animator: Shape File Link`Pyramid` Primitives` , Animator data #MiscYellow1 ANI_NotDetec SET_COLOR green set_transparency .3 #ENDMYellow ENTER_PARSFILE Animator\Frames\Frame189.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Car X-Y-Z-Yaw (Radar Detected)`Car Tracking ADD_REFERENCE_FRAME Car Tracking Car X-Y-Z-Yaw (Radar Detected) #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_ROLL_NAME Roll_E SET_PITCH_NAME Pitch SET_YAW_NAME Yaw SET_OFFSET_VAR_Z 0.45 SET_FRAME_VISIBLE_NAME InpAux1 WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_Roll_E ANI_Roll_E WRT_Pitch ANI_Pitch WRT_Yaw ANI_Yaw WRT_InpAux1 ANI_InpAux1 LOG_ENTRY Used Dataset: Animator: Reference Frame; { Car Tracking } Car X-Y-Z-Yaw (Radar Detected) #Library : Animator: Reference Frame #DataSet : Car X-Y-Z-Yaw (Radar Detected) #Category: Car Tracking #FileID : Frame189 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame189.par #BlueLink12 Animator: Reference Frame`Car X-Y-Z-Yaw (Radar Detected)` Car Tracking` , Animator data #MiscYellow2 X_LENGTH 65 Y_LENGTH 12.25 Z_LENGTH 5 #ENDMYellow #BlueLink13 Animator: Shape File Link`Pyramid` Primitives` , Animator data #MiscYellow3 SET_COLOR red set_transparency .3 #ENDMYellow *X_REF_LENGTH 2756 *Y_REF_LENGTH 1988 *Z_REF_LENGTH 1272 #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { ACC Sensor } Radar Beam Pyramid #Library : Animator: Group #DataSet : Radar Beam Pyramid #Category: ACC Sensor #FileID : Group124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group ENTRY_NOTEFILE Animator\Groups\Group124_note.txt This shape is used to represent a radar field. It is attached to a reference frame and given some reference lengths for sizing purposes. You need manually to synchronize the animation shape sizes with the actual simulation settings in the Simulink model "Radar_Acc_CS8.mdl"). Open the above Simulink model and double click "Radar Sensor" block. Then, you will see "View Angle" and "Distance Range". For example, if "Distance Range" is 70 (m), you have to set X_LENGTH to 70. If "View Angle" is 10 (deg), you have to set Y_LENGTH to 12.25, which can be obtained by the following hand equations: Y_LENGTH = {tan(View Angle/2) * Distance Range} * 2. Z_LENGTH (height of the radar range) is not involved in the simulation. Therefore, you can adopt any number in order to show good looking animation. This screen is set up to change the visibility of two shape, one green and one red. The color indicates that detection has occurred. EXIT_NOTEFILE Animator\Groups\Group124_note.txt EXIT_PARSFILE Animator\Groups\Group124.par #BlueLink1 Animator: Group`Radar Beam Pyramid` ACC Sensor` , Misc. ENTER_PARSFILE Plot\Setup\Plot109.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Longitudinal Speed`Vehicle Motion ENTER_PARSFILE Plot\Transform\PlotTfm101.par`08-02-2011`16:43:01 #FullDataName Plot: Data Transform`No Filter` #RingCtrl0 None FILTER None LOG_ENTRY Used Dataset: Plot: Data Transform; No Filter #Library : Plot: Data Transform #DataSet : No Filter #Category: #FileID : PlotTfm101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:01 #VehCode Plot data transform EXIT_PARSFILE Plot\Transform\PlotTfm101.par #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) ENTER_PARSFILE Plot\Format\PlotFmt101.par`08-02-2011`16:43:00 #FullDataName Plot: Format`Default Plot Settings` #RingCtrl0 Axes AXES Axes #RingCtrl1 Noframe FRAME Noframe #RingCtrl2 NoGrid GRID NoGrid #RingCtrl3 FileTitle LEGENDFILE FileTitle #RingCtrl4 RigidBodyName LEGENDDATA_1 RigidBodyName #RingCtrl5 AutoLocation LEGENDLOCATION AutoLocation #RingCtrl6 Regular TITLEFONTSTYLE Regular #RingCtrl7 Regular LEGENDFONTSTYLE Regular #RingCtrl8 Regular LABELFONTSTYLE Regular #RingCtrl9 Regular TICLABELFONTSTYLE Regular #RingCtrl10 0 TITLELOCATION 0 LEGENDPERCENT 40 TITLEFONTSIZE 14 LEGENDFONTSIZE 12 LABELFONTSIZE 14 TICLABELFONTSIZE 12 TITLEFONTNAME Arial LEGENDFONTNAME Arial LABELFONTNAME Arial TICLABELFONTNAME Arial SYMBOLS 10,1,2,3,4,5,6,7,8,9,10,4,1,2,3,4,5,6,7,8 LINESTYL 1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1 COLORS 8,2,3,7,4,0,6,14,8,9,10,11,12,13,14,6,1,2,0,4 LOG_ENTRY Used Dataset: Plot: Format; Default Plot Settings #Library : Plot: Format #DataSet : Default Plot Settings #Category: #FileID : PlotFmt101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot format EXIT_PARSFILE Plot\Format\PlotFmt101.par #MiscYellow0 PLOTCHANNELS Vx, Time PLOTCHANNELS VxTarget, Time PLOTCHANNELS Vx_2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Longitudinal Speed LOG_ENTRY Used Dataset: Plot: Setup; { Vehicle Motion } Longitudinal Speed #Library : Plot: Setup #DataSet : Longitudinal Speed #Category: Vehicle Motion #FileID : Plot109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot109.par #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot ENTER_PARSFILE Plot\Setup\Plot118.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Throttle: Control Input`Controls: Driver #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Throttle, Time PLOTCHANNELS Thr_Eng, Time #ENDMYellow YAXISLABEL Throttle - #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Throttle: Control Input LOG_ENTRY Used Dataset: Plot: Setup; { Controls: Driver } Throttle: Control Input #Library : Plot: Setup #DataSet : Throttle: Control Input #Category: Controls: Driver #FileID : Plot118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup ENTRY_NOTEFILE Plot\Setup\Plot118_note.txt The variable "Throttle" is the sum of any throttle control calculated by the CarSim closed loop speed controller and any specified open-loop throttle. The source of open-loop throttle command may be from internal tables, VS commmands, or external sources like Simulink or the API. By using the sum of these 2 command sources you can implement things like driver aids for active safety that augment actions taken by the driver. When switching between open loop and closed loop control, take care that no unintended open loop control is "left over" by supplying a data set that sets the open loop component to zero. The variable "Thr_Eng" is the value of "Throttle", optionally modified by the application of a time constant to simulate the transient delay in changes in engine torque. EXIT_NOTEFILE Plot\Setup\Plot118_note.txt EXIT_PARSFILE Plot\Setup\Plot118.par #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot ENTER_PARSFILE Plot\Setup\Plot203.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Wheel Cylinder Pressures`Braking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS PbkCh_L1, Time PLOTCHANNELS PbkCh_R1, Time PLOTCHANNELS PbkCh_L2, Time PLOTCHANNELS PbkCh_R2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Wheel Cylinder Pressures LOG_ENTRY Used Dataset: Plot: Setup; { Braking } Wheel Cylinder Pressures #Library : Plot: Setup #DataSet : Wheel Cylinder Pressures #Category: Braking #FileID : Plot203 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot203.par #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot ENTER_PARSFILE Plot\Setup\Plot141.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Y vs. X -- Trajectory`Tracking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Yo, Xo PLOTCHANNELS Y_Design, X_Design PLOTCHANNELS Y_Target, X_Target PLOTCHANNELS Yo_2, Xo_2 #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Y vs. X -- Trajectory LOG_ENTRY Used Dataset: Plot: Setup; { Tracking } Y vs. X -- Trajectory #Library : Plot: Setup #DataSet : Y vs. X -- Trajectory #Category: Tracking #FileID : Plot141 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot141.par #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } chapt3_Radar Active Cruise Control: Second Car #Library : Procedures #DataSet : chapt3_Radar Active Cruise Control: Second Car #Category: BOOK_MPC_Procedures #FileID : Proc171 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 07:52:20 #VehCode Procedure EXIT_PARSFILE Procedures\Proc171.par #BlueLink28 Procedures`chapt3_Radar Active Cruise Control: Second Car` BOOK_MPC_Procedures` , Procedure ENTER_PARSFILE Runs\Run288.par`08-30-2019`23:51:42 #FullDataName CarSim Run Control`Chapter3_MPC_ACC: First Car (Ext. Sen.)`BOOK_MPC_Examples #VehicleCode Ind_Ind OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex135.par`09-01-2019`08:50:47 #FullDataName Models: Simulink`chapt3_Radar Active Cruise: First Car (Ext. Sen.)`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV\LEO_MPCACC_VLV1.mdl #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 0 *USE_DIFF_SOLVERS 0 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV *ALTERNATE_PATH E:\Carsim\Book_examples\chap3_MPC_AdaptiveCruiseCtrl_VLV ENTER_PARSFILE IO_Channels\O_Channels\O_Ch126.par`08-31-2019`10:10:49 #FullDataName I/O Channels: Export`Radar Active Cruising Export (Ext. Sen.)`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Vx EXP_Xo EXP_Yo EXP_Yaw EXP_Ax #MiscYellow0 #Number of Selected Channels: 5 #CHN_NAME: Vx #CHN_NAME: Xo #CHN_NAME: Yo #CHN_NAME: Yaw #CHN_NAME: Ax #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } Radar Active Cruising Export (Ext. Sen.) #Library : I/O Channels: Export #DataSet : Radar Active Cruising Export (Ext. Sen.) #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch126 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-31-2019 10:10:49 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch126.par #BlueLink1 I/O Channels: Export`Radar Active Cruising Export (Ext. Sen.)` MPC_BOOK_Sim_Exports` , Export #MiscYellow1 simfile LEO_MPC_ACC_ExtSen_Car1.sim #ENDMYellow LIVE_SERVER_UPDATE_FREQ_MAX 60 LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } chapt3_Radar Active Cruise: First Car (Ext. Sen.) #Library : Models: Simulink #DataSet : chapt3_Radar Active Cruise: First Car (Ext. Sen.) #Category: BOOK_MPC_Models #FileID : Cmex135 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 08:50:47 #VehCode EXIT_PARSFILE Models\Simulink\Cmex135.par #BlueLink12 Models: Simulink`chapt3_Radar Active Cruise: First Car (Ext. Sen.)` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera138.par`08-02-2011`16:43:53 #FullDataName Animator: Camera Setup`High Front View, Road Ref. (Rr. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y -1.65 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 355.5 SET_ELEVATION 20 SET_DISTANCE 49 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y -1.65 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 355.5 *SET_ELEVATION 20 *SET_DISTANCE 49 GHOST_COUNT 0 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 40 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } High Front View, Road Ref. (Rr. Facing) #Library : Animator: Camera Setup #DataSet : High Front View, Road Ref. (Rr. Facing) #Category: Road Reference #FileID : Camera138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:53 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera138.par #BlueLink0 Animator: Camera Setup`High Front View, Road Ref. (Rr. Facing)` Road Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 2 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 1 0.6 0 FLAG_10 288 ID_RUN 288 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle105.par`08-02-2011`16:42:23 #FullDataName Vehicle: Assembly`B-Class, Sports Car`CS B-Class #VehCode Ind_Ind #CheckBox0 0 #RingCtrl0 2 OPT_PT 2 #RingCtrl1 1 #RingCtrl2 1 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp107.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`B-Class, Sports Car - Front Comp.`CS B-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.611 *R_SPRING_R 0.611 *R_DAMPER_L 0.611 *R_DAMPER_R 0.611 *CT_FX_L 1.9e-6 *CT_FX_R 1.9e-6 *CS_FY_L -1.4e-6 *CS_FY_R -1.4e-6 *CS_MZ_L 6.4e-4 *CS_MZ_R 6.4e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 1.4e-4 *CI_FY_R 1.4e-4 *CI_MZ_L -2.75e-4 *CI_MZ_R -2.75e-4 *C_LONG_L 1.2e-5 *C_LONG_R 1.2e-5 *C_LAT_L 1.6e-5 *C_LAT_R 1.6e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.611 *R_JOUNCE_R 0.611 *R_REBOUND_L 0.611 *R_REBOUND_R 0.611 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb104.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+25 mm / -55 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 24, 0 25, 0 26, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -56, -10000 -55, 0 -54, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +25 mm / -55 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +25 mm / -55 mm #Category: Jounce and Rebound Stops #FileID : JncRb104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb104.par #BlueLink5 Suspension: Jounce and Rebound Stops`+25 mm / -55 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.611 CT_FX_COEFFICIENT 1.9e-6 CS_FY_COEFFICIENT -1.4e-6 CS_MZ_COEFFICIENT 6.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.4e-4 CI_MZ_COEFFICIENT -2.75e-4 C_LONG_COEFFICIENT 1.2e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.611 CMP_RSTOP_COEFFICIENT 0.611 ENTER_PARSFILE Suspensions\Springs\Spring107.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`130.5 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 130.5 FS_EXT_COEFFICIENT 130.5 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 130.5 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 130.5 N/mm #Library : Suspension: Spring #DataSet : 130.5 N/mm #Category: #FileID : Spring107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring107.par #BlueLink0 Suspension: Spring`130.5 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+25 mm / -55 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.611 CT_FX_COEFFICIENT 1.9e-6 CS_FY_COEFFICIENT -1.4e-6 CS_MZ_COEFFICIENT 6.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.4e-4 CI_MZ_COEFFICIENT -2.75e-4 C_LONG_COEFFICIENT 1.2e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.611 CMP_RSTOP_COEFFICIENT 0.611 #BlueLink3 Suspension: Spring`130.5 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS B-Class } B-Class, Sports Car - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : B-Class, Sports Car - Front Comp. #Category: CS B-Class #FileID : SuspCmp107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp107_note.txt Front spring rate chosen for a front ride frequency of 2.2 Hz and a front corner weight of 255 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp107_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp107.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`B-Class, Sports Car - Front Comp.` CS B-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin107.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`B-Class, Sports Car - Front Suspension`CS B-Class iside 1 L_TRACK 1480 Y_CL_SUSP 0 M_US 60 *IW_L 0.6 *JNC_DESIGN_L 0 *IW_R 0.6 *JNC_DESIGN_R 0 *TOE_L -0.2 *TOE_R -0.2 *CAMBER_L -1 *CAMBER_R -1 R_US_STR 0.7 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.6 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -1 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.6 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -1 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS B-Class } B-Class, Sports Car - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : B-Class, Sports Car - Front Suspension #Category: CS B-Class #FileID : IndKin107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin107_note.txt Generic SLA front suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin107_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin107.par #BlueLink19 Suspension: Independent System Kinematics`B-Class, Sports Car - Front Suspension` CS B-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire104.par`08-02-2011`16:42:32 #FullDataName Tire`205/45 R17`Performance Tires X_LENGTH 308 Z_LENGTH 308 Y_LENGTH 205 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 0 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup101.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Sports Car`Tires *X_REF_LENGTH 291 *Y_REF_LENGTH 195 *Z_REF_LENGTH 291 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL101.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Sports Car Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Sports Car Tire #Library : Animator: Shape File Link #DataSet : Sports Car Tire #Category: Tires #FileID : AniSTL101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL101.par #BlueLink0 Animator: Shape File Link`Sports Car Tire` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL102.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Sports Car Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\wheel.obj #ENDMYellow SET_COLOR .62 .62 .62 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Sports Car Wheel #Library : Animator: Shape File Link #DataSet : Sports Car Wheel #Category: Tires #FileID : AniSTL102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL102.par #BlueLink1 Animator: Shape File Link`Sports Car Wheel` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL103.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Sports Car Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y 0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Sports Car Stripe #Library : Animator: Shape File Link #DataSet : Sports Car Stripe #Category: Tires #FileID : AniSTL103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL103.par #BlueLink2 Animator: Shape File Link`Sports Car Stripe` Tires` , Shape File x_ref_length 291 y_ref_length 195 z_ref_length 291 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Sports Car #Library : Animator: Shape Assembly #DataSet : Sports Car #Category: Tires #FileID : StlGroup101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup101.par #BlueLink4 Animator: Shape Assembly`Sports Car` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 205 ENTER_PARSFILE Animator\Sound\Set\SndSet109.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 550 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 550; units = kg; #ENDMYellow #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 550 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 550 kg Rated Load #Category: Tire Sounds #FileID : SndSet109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet109.par #BlueLink13 Animator: Sound Set`Tire Sounds - 550 kg Rated Load` Tire Sounds` , Animator RRE 298 R0 308 FZ_TIRE_COEFFICIENT 242 FZ_MAX 100000 IT 1.1 L_RELAX_X 28 L_RELAX_Y 610 VLOW_ALPHA 5 RR_C 0.004 RR_V 0.000025 RR_FX 1 OPT_TIRE_COMB 0 ENTER_PARSFILE Tires\Mz\TireMz104.par`08-02-2011`16:42:31 #FullDataName Tire: Aligning Moment`205/45 R17`Performance Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 1348.41, 2696.83, 4045.24, 5393.66, 6742.07, 8090.49, 9438.9, 10787.32 0.5, 20.97, 40.83, 59.32, 76.25, 91.51, 105, 116.65, 126.42 1, 32.44, 63.59, 93.15, 120.91, 146.66, 170.24, 191.46, 210.15 1.5, 32.09, 63.43, 93.92, 123.47, 151.96, 179.23, 205.11, 229.37 2, 26.48, 52.68, 78.68, 104.53, 130.23, 155.75, 181.01, 205.88 2.5, 20.56, 41.09, 61.75, 82.65, 103.87, 125.46, 147.46, 169.87 3, 15.73, 31.55, 47.63, 64.11, 81.1, 98.69, 116.97, 136 3.5, 12.02, 24.19, 36.67, 49.6, 63.09, 77.26, 92.21, 108.04 4, 9.18, 18.54, 28.24, 38.38, 49.1, 60.5, 72.69, 85.78 4.5, 6.99, 14.17, 21.68, 29.64, 38.17, 47.35, 57.29, 68.12 5, 5.26, 10.71, 16.5, 22.73, 29.49, 36.89, 45.02, 53.98 5.5, 3.86, 7.93, 12.33, 17.15, 22.49, 28.44, 35.09, 42.53 6, 2.73, 5.66, 8.92, 12.59, 16.76, 21.52, 26.94, 33.12 6.5, 1.78, 3.77, 6.09, 8.8, 12, 15.76, 20.16, 25.28 7, 0.99, 2.19, 3.7, 5.61, 7.99, 10.91, 14.44, 18.67 7.5, 0.31, 0.83, 1.67, 2.89, 4.57, 6.78, 9.57, 13.03 8, -0.27, -0.33, -0.08, 0.55, 1.63, 3.22, 5.38, 8.18 8.5, -0.78, -1.34, -1.6, -1.48, -0.93, 0.12, 1.73, 3.96 9, -1.23, -2.23, -2.93, -3.27, -3.17, -2.59, -1.46, 0.26 9.5, -1.62, -3.02, -4.11, -4.84, -5.15, -4.98, -4.28, -3 10, -1.97, -3.71, -5.16, -6.24, -6.91, -7.11, -6.79, -5.9 10.5, -2.28, -4.34, -6.1, -7.49, -8.48, -9.01, -9.04, -8.5 11, -2.56, -4.9, -6.94, -8.62, -9.9, -10.73, -11.05, -10.83 11.5, -2.82, -5.41, -7.7, -9.64, -11.18, -12.28, -12.88, -12.94 12, -3.05, -5.87, -8.39, -10.57, -12.34, -13.68, -14.53, -14.86 12.5, -3.26, -6.29, -9.03, -11.41, -13.41, -14.96, -16.04, -16.6 13, -3.45, -6.68, -9.6, -12.19, -14.38, -16.14, -17.43, -18.2 13.5, -3.63, -7.03, -10.14, -12.9, -15.27, -17.22, -18.7, -19.67 14, -3.79, -7.36, -10.63, -13.55, -16.09, -18.21, -19.87, -21.02 14.5, -3.95, -7.66, -11.08, -14.16, -16.86, -19.13, -20.95, -22.27 15, -4.09, -7.94, -11.5, -14.72, -17.56, -19.98, -21.95, -23.43 15.5, -4.22, -8.2, -11.89, -15.25, -18.22, -20.78, -22.89, -24.51 16, -4.34, -8.45, -12.26, -15.73, -18.83, -21.52, -23.76, -25.51 16.5, -4.45, -8.67, -12.6, -16.19, -19.4, -22.21, -24.57, -26.45 17, -4.56, -8.89, -12.92, -16.62, -19.94, -22.85, -25.33, -27.33 17.5, -4.66, -9.09, -13.22, -17.02, -20.44, -23.46, -26.04, -28.16 18, -4.75, -9.27, -13.5, -17.39, -20.91, -24.03, -26.71, -28.93 18.5, -4.84, -9.45, -13.77, -17.75, -21.36, -24.57, -27.35, -29.66 19, -4.93, -9.62, -14.02, -18.08, -21.78, -25.08, -27.94, -30.35 19.5, -5.01, -9.78, -14.26, -18.4, -22.18, -25.56, -28.51, -31 20, -5.08, -9.93, -14.48, -18.7, -22.55, -26.01, -29.04, -31.61 20.5, -5.15, -10.07, -14.69, -18.98, -22.91, -26.44, -29.54, -32.2 21, -5.22, -10.2, -14.89, -19.25, -23.25, -26.85, -30.02, -32.75 21.5, -5.28, -10.33, -15.09, -19.51, -23.57, -27.23, -30.48, -33.27 22, -5.34, -10.45, -15.27, -19.75, -23.87, -27.6, -30.91, -33.77 22.5, -5.4, -10.57, -15.44, -19.98, -24.16, -27.95, -31.32, -34.25 23, -5.46, -10.68, -15.61, -20.21, -24.44, -28.29, -31.72, -34.7 23.5, -5.51, -10.79, -15.77, -20.42, -24.71, -28.61, -32.09, -35.14 24, -5.56, -10.89, -15.92, -20.62, -24.96, -28.91, -32.45, -35.55 24.5, -5.61, -10.98, -16.06, -20.81, -25.2, -29.21, -32.8, -35.95 25, -5.66, -11.08, -16.2, -21, -25.44, -29.49, -33.13, -36.33 26, -5.66, -11.08, -16.2, -21, -25.44, -29.49, -33.13, -36.33 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Performance Tires } 205/45 R17 #Library : Tire: Aligning Moment #DataSet : 205/45 R17 #Category: Performance Tires #FileID : TireMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:31 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz104.par #BlueLink0 Tire: Aligning Moment`205/45 R17` Performance Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy104.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`205/45 R17`Performance Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 1348.41, 2696.83, 4045.24, 5393.66, 6742.07, 8090.49, 9438.9, 10787.32 0.5, 235.28, 461.71, 677.96, 883.33, 1077.34, 1259.69, 1430.17, 1588.65 1, 459.85, 902.69, 1325.96, 1728.27, 2108.7, 2466.63, 2801.63, 3113.42 1.5, 664.55, 1305.19, 1918.27, 2501.78, 3054.38, 3575.14, 4063.37, 4518.63 2, 843.04, 1656.81, 2436.8, 3180.46, 3886.07, 4552.37, 5178.44, 5763.61 2.5, 992.35, 1951.66, 2872.76, 3752.69, 4589.37, 5381.28, 6127.24, 6826.37 3, 1112.66, 2189.91, 3226.13, 4218.04, 5163.29, 6060.13, 6907.13, 7703.2 3.5, 1206.45, 2376.23, 3503.43, 4584.55, 5617.06, 6598.99, 7528.73, 8405 4, 1277.48, 2517.8, 3714.91, 4865.19, 5965.95, 7015.09, 8010.85, 8951.79 4.5, 1329.85, 2622.56, 3872.05, 5074.6, 6227.48, 7328.45, 8375.68, 9367.59 5, 1367.43, 2698.06, 3985.81, 5226.96, 6418.7, 7558.77, 8645.25, 9676.49 5.5, 1393.59, 2750.87, 4065.83, 5334.73, 6554.78, 7723.66, 8839.44, 9900.39 6, 1411.08, 2786.41, 4120.06, 5408.32, 6648.39, 7837.97, 8975.08, 10058 6.5, 1422.06, 2808.96, 4154.83, 5456.01, 6709.73, 7913.68, 9065.89, 10164.61 7, 1428.23, 2821.85, 4175.08, 5484.32, 6746.8, 7960.25, 9122.7, 10232.41 7.5, 1430.84, 2827.6, 4184.57, 5498.2, 6765.77, 7985.01, 9153.97, 10270.91 8, 1430.86, 2828.12, 4186.16, 5501.46, 6771.33, 7993.55, 9166.16, 10287.45 8.5, 1429.01, 2824.85, 4181.99, 5496.94, 6767.06, 7990.12, 9164.22, 10287.65 9, 1425.81, 2818.87, 4173.67, 5486.8, 6755.63, 7977.96, 9151.92, 10275.8 9.5, 1421.68, 2810.96, 4162.41, 5472.64, 6739.06, 7959.5, 9132.08, 10255.15 10, 1416.91, 2801.73, 4149.1, 5455.67, 6718.87, 7936.55, 9106.87, 10228.17 10.5, 1411.71, 2791.62, 4134.42, 5436.8, 6696.2, 7910.51, 9077.89, 10196.72 11, 1406.24, 2780.96, 4118.87, 5416.69, 6671.9, 7882.4, 9046.38, 10162.21 11.5, 1400.64, 2769.99, 4102.81, 5395.85, 6646.61, 7853, 9013.24, 10125.72 12, 1394.99, 2758.89, 4086.53, 5374.66, 6620.8, 7822.9, 8979.18, 10088.05 12.5, 1389.34, 2747.8, 4070.22, 5353.39, 6594.84, 7792.53, 8944.71, 10049.79 13, 1383.76, 2736.81, 4054.04, 5332.23, 6568.97, 7762.21, 8910.21, 10011.41 13.5, 1378.27, 2725.99, 4038.08, 5311.35, 6543.39, 7732.17, 8875.97, 9973.24 14, 1372.89, 2715.4, 4022.43, 5290.85, 6518.23, 7702.59, 8842.2, 9935.52 14.5, 1367.65, 2705.05, 4007.14, 5270.79, 6493.6, 7673.59, 8809.05, 9898.44 15, 1362.55, 2694.98, 3992.24, 5251.23, 6469.56, 7645.25, 8776.61, 9862.12 15.5, 1357.6, 2685.19, 3977.76, 5232.2, 6446.15, 7617.64, 8744.97, 9826.65 16, 1352.8, 2675.7, 3963.7, 5213.72, 6423.39, 7590.77, 8714.17, 9792.09 16.5, 1348.16, 2666.5, 3950.08, 5195.79, 6401.31, 7564.68, 8684.23, 9758.47 17, 1343.66, 2657.6, 3936.88, 5178.42, 6379.9, 7539.37, 8655.16, 9725.81 17.5, 1339.31, 2648.99, 3924.1, 5161.6, 6359.15, 7514.83, 8626.97, 9694.11 18, 1335.1, 2640.66, 3911.74, 5145.32, 6339.06, 7491.05, 8599.64, 9663.36 18.5, 1331.04, 2632.6, 3899.79, 5129.57, 6319.61, 7468.03, 8573.16, 9633.55 19, 1327.11, 2624.81, 3888.23, 5114.32, 6300.79, 7445.73, 8547.51, 9604.66 19.5, 1323.31, 2617.28, 3877.04, 5099.57, 6282.57, 7424.15, 8522.66, 9576.67 20, 1319.64, 2610, 3866.23, 5085.31, 6264.94, 7403.25, 8498.6, 9549.55 20.5, 1316.09, 2602.96, 3855.76, 5071.5, 6247.88, 7383.02, 8475.29, 9523.28 21, 1312.65, 2596.14, 3845.64, 5058.14, 6231.36, 7363.42, 8452.72, 9497.82 21.5, 1309.33, 2589.55, 3835.84, 5045.2, 6215.36, 7344.44, 8430.85, 9473.15 22, 1306.11, 2583.17, 3826.35, 5032.67, 6199.86, 7326.06, 8409.65, 9449.23 22.5, 1303, 2576.99, 3817.16, 5020.53, 6184.85, 7308.24, 8389.11, 9426.04 23, 1299.98, 2571, 3808.26, 5008.78, 6170.3, 7290.97, 8369.19, 9403.55 23.5, 1297.06, 2565.2, 3799.63, 4997.38, 6156.19, 7274.22, 8349.87, 9381.73 24, 1294.23, 2559.58, 3791.26, 4986.32, 6142.51, 7257.97, 8331.12, 9360.56 24.5, 1291.48, 2554.12, 3783.15, 4975.6, 6129.23, 7242.2, 8312.93, 9340.01 25, 1288.81, 2548.83, 3775.27, 4965.19, 6116.34, 7226.89, 8295.26, 9320.05 26, 1288.81, 2548.83, 3775.27, 4965.19, 6116.34, 7226.89, 8295.26, 9320.05 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Performance Tires } 205/45 R17 #Library : Tire: Lateral Force #DataSet : 205/45 R17 #Category: Performance Tires #FileID : TireFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy104.par #BlueLink1 Tire: Lateral Force`205/45 R17` Performance Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx104.par`08-02-2011`16:42:27 #FullDataName Tire: Longitudinal Force`205/45 R17`Performance Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 1348.41, 2696.83, 4045.24, 5393.66, 6742.07, 8090.49, 9438.9, 10787.32 0.02, 704.77, 1395.6, 2070.06, 2726.61, 3363.99, 3981.14, 4577.1, 5151 0.04, 1097.08, 2170.78, 3217.1, 4233.54, 5218.12, 6169.21, 7085.36, 7965.25 0.06, 1274.84, 2521.28, 3734.55, 4911.69, 6050.38, 7148.75, 8205.15, 9218.1 0.08, 1357.64, 2684.31, 3974.85, 5226.07, 6435.52, 7601.19, 8721.37, 9794.51 0.1, 1398.39, 2764.43, 4092.76, 5380.06, 6623.83, 7822.01, 8972.83, 10074.75 0.12, 1418.63, 2804.15, 4151.09, 5456.06, 6716.52, 7930.39, 9095.89, 10211.48 0.14, 1427.94, 2822.34, 4177.66, 5490.49, 6758.29, 7978.95, 9150.69, 10271.97 0.16, 1431.01, 2828.24, 4186.14, 5501.28, 6771.1, 7993.51, 9166.72, 10289.19 0.18, 1430.36, 2826.84, 4183.86, 5498.01, 6766.72, 7987.9, 9159.78, 10280.81 0.2, 1427.44, 2820.98, 4175.04, 5486.2, 6751.9, 7970.06, 9138.92, 10256.94 0.22, 1423.14, 2812.4, 4162.21, 5469.17, 6730.72, 7944.79, 9109.62, 10223.69 0.24, 1418, 2802.18, 4146.98, 5449.02, 6705.74, 7915.08, 9075.3, 10184.87 0.26, 1412.37, 2791.01, 4130.38, 5427.09, 6678.6, 7882.87, 9038.16, 10142.94 0.28, 1406.5, 2779.36, 4113.07, 5404.25, 6650.38, 7849.42, 8999.63, 10099.51 0.3, 1400.53, 2767.53, 4095.51, 5381.1, 6621.8, 7815.57, 8960.68, 10055.64 0.32, 1394.57, 2755.73, 4078, 5358.03, 6593.33, 7781.86, 8921.92, 10012.02 0.34, 1388.69, 2744.08, 4060.73, 5335.29, 6565.28, 7748.68, 8883.79, 9969.12 0.36, 1382.93, 2732.69, 4043.83, 5313.05, 6537.86, 7716.26, 8846.54, 9927.24 0.38, 1377.32, 2721.59, 4027.4, 5291.42, 6511.21, 7684.75, 8810.35, 9886.56 0.4, 1371.89, 2710.84, 4011.47, 5270.47, 6485.39, 7654.23, 8775.32, 9847.2 0.42, 1366.63, 2700.45, 3996.07, 5250.22, 6460.45, 7624.77, 8741.5, 9809.2 0.44, 1361.56, 2690.43, 3981.23, 5230.7, 6436.41, 7596.36, 8708.91, 9772.6 0.46, 1356.68, 2680.77, 3966.93, 5211.9, 6413.26, 7569.02, 8677.55, 9737.38 0.48, 1351.98, 2671.47, 3953.17, 5193.81, 6390.99, 7542.73, 8647.39, 9703.52 0.5, 1347.45, 2662.53, 3939.93, 5176.42, 6369.58, 7517.46, 8618.4, 9670.98 0.52, 1343.1, 2653.94, 3927.21, 5159.7, 6349, 7493.17, 8590.55, 9639.72 0.54, 1338.92, 2645.68, 3914.98, 5143.64, 6329.23, 7469.83, 8563.79, 9609.69 0.56, 1334.9, 2637.73, 3903.23, 5128.2, 6310.23, 7447.41, 8538.08, 9580.85 0.58, 1331.04, 2630.1, 3891.93, 5113.35, 6291.97, 7425.86, 8513.38, 9553.13 0.6, 1327.32, 2622.75, 3881.07, 5099.08, 6274.41, 7405.14, 8489.64, 9526.5 0.62, 1323.75, 2615.69, 3870.62, 5085.36, 6257.53, 7385.22, 8466.81, 9500.89 0.64, 1320.31, 2608.89, 3860.56, 5072.15, 6241.29, 7366.06, 8444.86, 9476.27 0.66, 1316.99, 2602.35, 3850.89, 5059.45, 6225.66, 7347.63, 8423.73, 9452.58 0.68, 1313.81, 2596.05, 3841.57, 5047.21, 6210.62, 7329.88, 8403.4, 9429.78 0.7, 1310.73, 2589.98, 3832.6, 5035.43, 6196.13, 7312.79, 8383.82, 9407.82 0.72, 1307.77, 2584.14, 3823.95, 5024.07, 6182.16, 7296.32, 8364.95, 9386.67 0.74, 1304.92, 2578.5, 3815.61, 5013.12, 6168.7, 7280.45, 8346.77, 9366.28 0.76, 1302.16, 2573.06, 3807.57, 5002.57, 6155.72, 7265.14, 8329.23, 9346.62 0.78, 1299.5, 2567.81, 3799.8, 4992.38, 6143.19, 7250.37, 8312.31, 9327.65 0.8, 1296.94, 2562.74, 3792.31, 4982.54, 6131.1, 7236.11, 8295.98, 9309.34 0.82, 1294.46, 2557.84, 3785.07, 4973.03, 6119.41, 7222.33, 8280.21, 9291.66 0.84, 1292.06, 2553.11, 3778.08, 4963.85, 6108.13, 7209.02, 8264.97, 9274.58 0.86, 1289.74, 2548.54, 3771.31, 4954.97, 6097.21, 7196.16, 8250.23, 9258.07 0.88, 1287.5, 2544.11, 3764.77, 4946.39, 6086.66, 7183.72, 8235.98, 9242.1 0.9, 1285.33, 2539.83, 3758.44, 4938.08, 6076.44, 7171.68, 8222.2, 9226.65 0.92, 1283.23, 2535.68, 3752.31, 4930.03, 6066.56, 7160.02, 8208.85, 9211.69 0.94, 1281.2, 2531.66, 3746.37, 4922.24, 6056.98, 7148.73, 8195.93, 9197.21 0.96, 1279.22, 2527.77, 3740.62, 4914.69, 6047.7, 7137.79, 8183.41, 9183.17 0.98, 1277.31, 2524, 3735.04, 4907.37, 6038.71, 7127.19, 8171.27, 9169.57 1, 1275.46, 2520.34, 3729.63, 4900.27, 6029.98, 7116.91, 8159.5, 9156.39 1.02, 1275.46, 2520.34, 3729.63, 4900.27, 6029.98, 7116.91, 8159.5, 9156.39 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Performance Tires } 205/45 R17 #Library : Tire: Longitudinal Force #DataSet : 205/45 R17 #Category: Performance Tires #FileID : TireFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:27 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx104.par #BlueLink2 Tire: Longitudinal Force`205/45 R17` Performance Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff104.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`205/45 R17`Performance Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 539.36575, -3.948 1078.7315, -7.9302 1618.09725, -11.9585 2157.463, -16.0411 2696.82875, -20.1848 3236.1945, -24.3954 3775.56025, -28.6777 4314.926, -33.0365 4854.29175, -37.476 5393.6575, -42 5933.02325, -46.6122 6472.389, -51.316 7011.75475, -56.1146 7551.1205, -61.0112 8090.48625, -66.0087 8629.852, -71.1099 9169.21775, -76.3176 9708.5835, -81.6343 10247.94925, -87.0626 10787.315, -92.6048 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Performance Tires } 205/45 R17 #Library : Tire: Camber Thrust Coefficient #DataSet : 205/45 R17 #Category: Performance Tires #FileID : CamStiff104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff104.par #BlueLink3 Tire: Camber Thrust Coefficient`205/45 R17` Performance Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Performance Tires } 205/45 R17 #Library : Tire #DataSet : 205/45 R17 #Category: Performance Tires #FileID : Tire104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire104_note.txt 550 kg rated load EXIT_NOTEFILE Tires\Tire\Tire104_note.txt EXIT_PARSFILE Tires\Tire\Tire104.par #BlueLink9 Tire`205/45 R17` Performance Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`205/45 R17` Performance Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp108.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`B-Class, Sports Car - Rear Comp.`CS B-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.797 *R_SPRING_R 0.797 *R_DAMPER_L 0.797 *R_DAMPER_R 0.797 *CT_FX_L -6.3e-6 *CT_FX_R -6.3e-6 *CS_FY_L -8.3e-6 *CS_FY_R -8.3e-6 *CS_MZ_L -1.2e-4 *CS_MZ_R -1.2e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L -3.2e-4 *CI_FY_R -3.2e-4 *CI_MZ_L -5.0e-4 *CI_MZ_R -5.0e-4 *C_LONG_L 3.6e-5 *C_LONG_R 3.6e-5 *C_LAT_L 9.4e-6 *C_LAT_R 9.4e-6 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.797 *R_JOUNCE_R 0.797 *R_REBOUND_L 0.797 *R_REBOUND_R 0.797 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.2e-4 CI_MZ_COEFFICIENT -5.0e-4 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-6 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 ENTER_PARSFILE Suspensions\Springs\Spring108.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`91 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 91 FS_EXT_COEFFICIENT 91 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 91 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 91 N/mm #Library : Suspension: Spring #DataSet : 91 N/mm #Category: #FileID : Spring108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring108.par #BlueLink0 Suspension: Spring`91 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.2e-4 CI_MZ_COEFFICIENT -5.0e-4 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-6 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 #BlueLink3 Suspension: Spring`91 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS B-Class } B-Class, Sports Car - Rear Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : B-Class, Sports Car - Rear Comp. #Category: CS B-Class #FileID : SuspCmp108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp108_note.txt Rear spring rate chosen for a rear ride frequency of 2.4 Hz and a rear corner weight of 255 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp108_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp108.par #BlueLink17 Suspension: Independent Compliance, Springs, and Dampers`B-Class, Sports Car - Rear Comp.` CS B-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin108.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`B-Class, Sports Car - Rear Suspension`CS B-Class iside 1 L_TRACK 1485 Y_CL_SUSP 0 M_US 60 *IW_L 0.6 *JNC_DESIGN_L 0 *IW_R 0.6 *JNC_DESIGN_R 0 *TOE_L 0.2 *TOE_R 0.2 *CAMBER_L -1.5 *CAMBER_R -1.5 R_US_STR 0.1 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Left wheel dive (caster change) #BlueLink1 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Left wheel X #BlueLink2 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Left wheel camber #BlueLink3 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Left wheel lateral (-Y) #BlueLink4 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Left wheel toe IW 0.6 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -1.5 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Right wheel X #BlueLink7 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Right wheel toe IW 0.6 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -1.5 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS B-Class } B-Class, Sports Car - Rear Suspension #Library : Suspension: Independent System Kinematics #DataSet : B-Class, Sports Car - Rear Suspension #Category: CS B-Class #FileID : IndKin108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin108_note.txt Generic 5-Link rear suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin108_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin108.par #BlueLink20 Suspension: Independent System Kinematics`B-Class, Sports Car - Rear Suspension` CS B-Class` , Rear kinematics * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`205/45 R17` Performance Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`205/45 R17` Performance Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass104.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`B-Class, Sports Car Sprung Mass`CS B-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 2330 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 2860 H_H 380 H_CG_SU 375 LX_AXLE 2330 LX_CG_SU 1165 M_SU 1020 IXX_SU 308.6 IYY_SU 1020.0 IZZ_SU 1020.0 IXZ_SU 0 RX_SGUI 0.550 RY_SGUI 1.000 RZ_SGUI 1.000 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1200 Y_LENGTH 1750 *HWC_LF 330 *HWC_RF 330 *HWC_LR 310 *HWC_RR 310 L_FRAME 2400 W_FRAME 1000 X_NODE 1100 K_FRAME 3000 C_FRAME 100 X_ENG 1000 H_WC 310 iside 2 H_WC 310 iaxle 1 iside 1 H_WC 330 iside 2 H_WC 330 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS B-Class } B-Class, Sports Car Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : B-Class, Sports Car Sprung Mass #Category: CS B-Class #FileID : SprMass104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass104.par #BlueLink0 Vehicle: Sprung Mass`B-Class, Sports Car Sprung Mass` CS B-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`B-Class, Sports Car Aero`CS B-Class #CheckBox0 0 X_REF_AERO -1165 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 2330 AREA_AERO 1.6 D_AIR 1.206 #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS B-Class } B-Class, Sports Car Aero #Library : Aerodynamics: Basic #DataSet : B-Class, Sports Car Aero #Category: CS B-Class #FileID : Aero104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero104_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero104.par #BlueLink1 Aerodynamics: Basic`B-Class, Sports Car Aero` CS B-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh104.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`B-Class, Sports Car`B-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 2390 OBJ_Y_LENGTH 1700 OBJ_Z_LENGTH 1175 *DZ_V 50 *LAT_WC 1575 *LAT_WC_2 1575 *HWC 350 *WHEEL_RATIO 1 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1 SET_SCALE_Y 1 SET_SCALE_Z 1 SET_OFFSET_X 0 SET_OFFSET_Y 0.7875 SET_OFFSET_Z 0.3325 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1 SET_SCALE_Y 1 SET_SCALE_Z 1 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.7875 SET_OFFSET_Z 0.3325 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1 SET_SCALE_Y 1 SET_SCALE_Z 1 SET_OFFSET_X -2.39 SET_OFFSET_Y 0.7875 SET_OFFSET_Z 0.3325 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1 SET_SCALE_Y 1 SET_SCALE_Z 1 SET_ANGLE_X 180 SET_OFFSET_X -2.39 SET_OFFSET_Y -0.7875 SET_OFFSET_Z 0.3325 WRITE_ADD_REFERENCE_FRAME_SHADOW #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT 0.05 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup110.par`08-02-2011`16:43:37 #FullDataName Animator: Shape Assembly`B-Class, Convertible`CS B-Class *COLOR .36 .117 .117 *SCALE_X 1 *SCALE_Y 0.95 *SCALE_Z 1 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.270 *X_REF_LENGTH 2390 *Y_REF_LENGTH 1700 *Z_REF_LENGTH 1175 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 1 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL145.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Body`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\Conv_body.obj #ENDMYellow SET_COLOR 0 0 0.8 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Body #Library : Animator: Shape File Link #DataSet : Conv.: Body #Category: CS Sports Car #FileID : AniSTL145 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL145.par #BlueLink0 Animator: Shape File Link`Conv.: Body` CS Sports Car` , Shape File set_scale_x 1 set_scale_y 0.95 set_scale_z 1 set_offset_x 0 set_offset_y 0 set_offset_z 0.270 ENTER_PARSFILE Animator\STL\AniSTL146.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Details`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\Conv_details.obj #ENDMYellow *SPECULAR 1 *TRANSPARENCY 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 1 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Details #Library : Animator: Shape File Link #DataSet : Conv.: Details #Category: CS Sports Car #FileID : AniSTL146 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL146.par #BlueLink1 Animator: Shape File Link`Conv.: Details` CS Sports Car` , Shape File set_scale_x 1 set_scale_y 0.95 set_scale_z 1 set_offset_x 0 set_offset_y 0 set_offset_z 0.270 ENTER_PARSFILE Animator\STL\AniSTL356.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Windows`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\Conv_Window.obj #ENDMYellow *SPECULAR 1 *TRANSPARENCY 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 1 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Windows #Library : Animator: Shape File Link #DataSet : Conv.: Windows #Category: CS Sports Car #FileID : AniSTL356 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL356.par #BlueLink2 Animator: Shape File Link`Conv.: Windows` CS Sports Car` , Shape File set_scale_x 1 set_scale_y 0.95 set_scale_z 1 set_offset_x 0 set_offset_y 0 set_offset_z 0.270 ENTER_PARSFILE Animator\STL\AniSTL147.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Driver`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\driver.obj #ENDMYellow *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Driver #Library : Animator: Shape File Link #DataSet : Conv.: Driver #Category: CS Sports Car #FileID : AniSTL147 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL147.par #BlueLink13 Animator: Shape File Link`Conv.: Driver` CS Sports Car` , Shape File set_scale_x 1 set_scale_y 0.95 set_scale_z 1 set_offset_x 0 set_offset_y 0 set_offset_z 0.270 x_ref_length 2390 y_ref_length 1700 z_ref_length 1175 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS B-Class } B-Class, Convertible #Library : Animator: Shape Assembly #DataSet : B-Class, Convertible #Category: CS B-Class #FileID : StlGroup110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup110.par #BlueLink1 Animator: Shape Assembly`B-Class, Convertible` CS B-Class` , Vehicle body #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL148.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`Conv.: Brake Lights`CS Sports Car #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\conv\Conv_brakes_on.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 1 SET_SCALE_Y 0.95 SET_SCALE_Z 1 SET_OFFSET_X -0.01 SET_OFFSET_Y 0 SET_OFFSET_Z 0.270 X_REF_LENGTH 2390 Y_REF_LENGTH 1700 Z_REF_LENGTH 1175 *SPECULAR 1 SMOOTH_MAX_ANGLE 45 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS Sports Car } Conv.: Brake Lights #Library : Animator: Shape File Link #DataSet : Conv.: Brake Lights #Category: CS Sports Car #FileID : AniSTL148 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL148.par #BlueLink3 Animator: Shape File Link`Conv.: Brake Lights` CS Sports Car` , Brake lights WRITE_REFERENCE_FRAME_SIZE #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { B-Class Vehicles } B-Class, Sports Car #Library : Animator: Vehicles and Sensor Targets #DataSet : B-Class, Sports Car #Category: B-Class Vehicles #FileID : AniVeh104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh104_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh104_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh104.par #BlueLink2 Animator: Vehicles and Sensor Targets`B-Class, Sports Car` B-Class Vehicles` , Vehicle animator data R_REAR_DRIVE_SC 1 PMAX_SC 125 ENTER_PARSFILE Powertrain\Rwd\RWD101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Rear-Wheel Drive`125 kW, 6-spd., 4.1 Ratio` OPT_PT 2 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine109.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`125 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.16 #CheckBox0 0 OPT_THROTTLE_DELAY 0 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 20.63, 63.42, 84.48, 86.19, 87.17, 87.65, 87.82, 87.86, 87.88, 87.86 633, 24.75, 77.39, 116.38, 124.29, 125.56, 126.07, 126.25, 126.27, 126.27, 126.27 750, 0, 72.82, 123.35, 134.46, 137.46, 138.54, 138.94, 138.98, 138.97, 138.96 1107, -8.25, 58.85, 144.66, 165.55, 173.84, 176.68, 177.74, 177.84, 177.81, 177.74 1463, -12.38, 39.26, 139.43, 173.25, 184.29, 189.29, 191.74, 192.31, 192.68, 196.35 1820, -14.03, 21.45, 123.75, 176.33, 194.74, 201.9, 205.74, 206.78, 207.55, 212.85 2177, -16.81, 8.25, 98.04, 169.73, 198, 214.5, 216.98, 219.45, 221.93, 227.4 2533, -21.1, -5.34, 67.75, 151.73, 199.65, 222.5, 228.53, 232.7, 235.13, 239.25 2890, -25.11, -12.63, 47.01, 127.92, 194.27, 224.92, 237.69, 240.9, 245.85, 249.98 3247, -28.65, -18.38, 31.39, 102.07, 186.21, 222.75, 239.25, 245.85, 250.8, 255.75 3603, -32.14, -23.42, 19.57, 80.44, 167.53, 216.15, 240.08, 247.5, 253.28, 258.23 3960, -35.64, -28.09, 9.84, 63.68, 145.29, 207.19, 237.6, 246.68, 252.45, 255.75 4317, -39.34, -32.81, 0.23, 47.88, 125.2, 197.75, 233.48, 241.73, 247.5, 252.4 4673, -43.19, -37.51, -8.31, 34.33, 104.22, 183.59, 226.88, 235.13, 243.38, 247.5 5030, -47.28, -42.14, -15.9, 22.49, 85.54, 165.8, 218.63, 226.88, 235.13, 239.25 5387, -51.39, -46.87, -22.94, 12.04, 69.6, 147.15, 205.7, 213.68, 224.7, 227.07 5743, -55.99, -51.8, -29.76, 2.35, 55.16, 127.73, 184.51, 197.1, 203.01, 205.34 6100, -61.01, -57.01, -36.57, -6.8, 41.98, 108.88, 161.55, 173.27, 178.77, 180.88 6500, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83, -66.83 6700, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65, -67.65 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 125 kW Engine #Library : Powertrain: Engine #DataSet : 125 kW Engine #Category: CS Engine Torque Curves #FileID : Engine109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine109.par #BlueLink0 Powertrain: Engine`125 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 125 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.006425 0.1, 0.006425 0.2, 0.006425 0.3, 0.006425 0.4, 0.006424 0.5, 0.006419 0.6, 0.006386 0.7, 0.006243 0.8, 0.005735 0.9, 0.004185 0.95, 0.002578 0.99, 0.000614 1.01, -0.000614 1.05, -0.002578 1.1, -0.004185 1.2, -0.005735 1.3, -0.006243 1.4, -0.006386 1.5, -0.006419 1.6, -0.006424 1.7, -0.006425 1.8, -0.006425 1.9, -0.006425 2, -0.006425 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 125 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 125 kW Engine #Category: CS Torque Converters #FileID : TC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC101.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 125 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` #RingCtrl0 6 NGEARS 6 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.168 R_GEAR_TR(1) 3.538 R_GEAR_TR(2) 2.06 R_GEAR_TR(3) 1.404 R_GEAR_TR(4) 1.00 R_GEAR_TR(5) 0.713 R_GEAR_TR(6) 0.582 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 T_SHIFT 0.25 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift101.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 1-2 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 874 0.2, 874 0.8, 1653 1, 1653 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 699 0.4, 699 0.8, 1240 1, 1240 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 1-2 Shift #Category: 6-speed #FileID : Shift101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift101.par #BlueLink0 Powertrain: Shift Schedule`6-speed, 1-2 Shift` 6-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift102.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 2-3 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1282 0.2, 1282 0.8, 2840 1, 2840 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1026 0.4, 1026 0.8, 2130 1, 2130 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 2-3 Shift #Category: 6-speed #FileID : Shift102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift102.par #BlueLink1 Powertrain: Shift Schedule`6-speed, 2-3 Shift` 6-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift103.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 3-4 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 4167 1, 4167 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 3125 1, 3125 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 3-4 Shift #Category: 6-speed #FileID : Shift103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift103.par #BlueLink2 Powertrain: Shift Schedule`6-speed, 3-4 Shift` 6-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift104.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 4-5 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2525 0.2, 2525 0.8, 5850 1, 5850 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2020 0.4, 2020 0.8, 4388 1, 4388 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 4-5 Shift #Category: 6-speed #FileID : Shift104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift104.par #BlueLink3 Powertrain: Shift Schedule`6-speed, 4-5 Shift` 6-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift105.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 5-6 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 3093 0.2, 3093 0.8, 8205 1, 8205 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2474 0.4, 2474 0.8, 6154 1, 6154 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 5-6 Shift #Category: 6-speed #FileID : Shift105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift105.par #BlueLink4 Powertrain: Shift Schedule`6-speed, 5-6 Shift` 6-speed` , Shift schedule igear 6 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 6-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 6-Speed Transmission #Category: #FileID : Trans101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans101.par #BlueLink9 Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` ` , Transmission (Extended) IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff102.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Viscous - Gear Ratio 4.1`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_RD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_RD 4.1 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Viscous - Gear Ratio 4.1 #Library : Powertrain: Rear Differential #DataSet : Viscous - Gear Ratio 4.1 #Category: CS Rear Differentials #FileID : R_Diff102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff102.par #BlueLink3 Powertrain: Rear Differential`Viscous - Gear Ratio 4.1` CS Rear Differentials` , Differential IDIFF 2 #BlueLink5 Powertrain: Rear Differential`Viscous - Gear Ratio 4.1` CS Rear Differentials` , Differential LOG_ENTRY Used Dataset: Powertrain: Rear-Wheel Drive; 125 kW, 6-spd., 4.1 Ratio #Library : Powertrain: Rear-Wheel Drive #DataSet : 125 kW, 6-spd., 4.1 Ratio #Category: #FileID : RWD101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode RWD ENTRY_NOTEFILE Powertrain\Rwd\RWD101_note.txt Generic 125 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 125 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\Rwd\RWD101_note.txt EXIT_PARSFILE Powertrain\Rwd\RWD101.par #BlueLink4 Powertrain: Rear-Wheel Drive`125 kW, 6-spd., 4.1 Ratio` ` , Rear-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W104.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`B-Class, Sports Car w/ ABS`CS B-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 OFF_F_SGUI 0.15 OFF_R_SGUI 0.2 ON_F_SGUI 0.09 ON_R_SGUI 0.1 V_F_SGUI 2 V_R_SGUI 2 #RingCtrl0 2 #RingCtrl1 2 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq102.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`200 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 200 MY_BRAKE_COEFFICIENT 200 LOG_ENTRY Used Dataset: Brakes: Torque; 200 N-m/MPa #Library : Brakes: Torque #DataSet : 200 N-m/MPa #Category: #FileID : BrkTrq102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq102.par #BlueLink0 Brakes: Torque`200 N-m/MPa` ` , Left front #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.09 ABS_VMIN 2 iside 2 #BlueLink1 Brakes: Torque`200 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq108.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`100 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 100 MY_BRAKE_COEFFICIENT 100 LOG_ENTRY Used Dataset: Brakes: Torque; 100 N-m/MPa #Library : Brakes: Torque #DataSet : 100 N-m/MPa #Category: #FileID : BrkTrq108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq108.par #BlueLink2 Brakes: Torque`100 N-m/MPa` ` , Left rear #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.2 ABS_SLIP_ON 0.1 ABS_VMIN 2 iside 2 #BlueLink3 Brakes: Torque`100 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS B-Class } B-Class, Sports Car w/ ABS #Library : Brakes: Four-Wheel System #DataSet : B-Class, Sports Car w/ ABS #Category: CS B-Class #FileID : Brk4W104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W104.par #BlueLink6 Brakes: Four-Wheel System`B-Class, Sports Car w/ ABS` CS B-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2104.par`08-02-2011`16:42:43 #FullDataName Steering`B-Class, Sports Car: Power, R&P`CS B-Class *I_COL 0.02 *I_GEAR_IN 0.0001 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 39.5 *L2_LKPO 0 *R1_LKPO 39.5 *R2_LKPO 0 *L1_AKPI 8.0 *L2_AKPI 0 *R1_AKPI 8.0 *R2_AKPI 0 *L1_ACAST 3.5 *L2_ACAST 0 *R1_ACAST 3.5 *R2_ACAST 0 *L1_XKPO -1.0 *L2_XKPO 0 *R1_XKPO -1.0 *R2_XKPO 0 *CF_F 40 *D_RACK_F 4 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 3 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.0001 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iside 2 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 0.1 #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 40/360 D_RACK 4 TBAR 2 ENTER_PARSFILE Steering\KinematicsRack2\RkKinAx116.par`08-02-2011`16:42:42 #FullDataName Steering System: Kinematics for 2 Wheels (Rack & Pinion)`B-Class, Sports Car Wheel Kinematics`CS B-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 RACK_KIN_TABLE SPLINE -60, -48.84 -57.6, -46.24 -55.2, -43.71 -52.8, -41.25 -50.4, -38.86 -48, -36.52 -45.6, -34.25 -43.2, -32.04 -40.8, -29.88 -38.4, -27.78 -36, -25.73 -33.6, -23.74 -31.2, -21.78 -28.8, -19.88 -26.4, -18.02 -24, -16.2 -21.6, -14.43 -19.2, -12.69 -16.8, -10.99 -14.4, -9.33 -12, -7.7 -9.6, -6.1 -7.2, -4.53 -4.8, -3 -2.4, -1.49 0, 0 2.4, 1.46 4.8, 2.9 7.2, 4.32 9.6, 5.72 12, 7.1 14.4, 8.46 16.8, 9.81 19.2, 11.15 21.6, 12.47 24, 13.78 26.4, 15.09 28.8, 16.39 31.2, 17.68 33.6, 18.97 36, 20.26 38.4, 21.54 40.8, 22.83 43.2, 24.12 45.6, 25.42 48, 26.73 50.4, 28.05 52.8, 29.39 55.2, 30.74 57.6, 32.12 60, 33.53 ENDTABLE iside 1 #DiagramOne1 RACK_KIN_TABLE SPLINE -60, -33.53 -57.6, -32.12 -55.2, -30.74 -52.8, -29.39 -50.4, -28.05 -48, -26.73 -45.6, -25.42 -43.2, -24.12 -40.8, -22.83 -38.4, -21.54 -36, -20.26 -33.6, -18.97 -31.2, -17.68 -28.8, -16.39 -26.4, -15.09 -24, -13.78 -21.6, -12.47 -19.2, -11.15 -16.8, -9.81 -14.4, -8.46 -12, -7.1 -9.6, -5.72 -7.2, -4.32 -4.8, -2.9 -2.4, -1.46 0, 0 2.4, 1.49 4.8, 3 7.2, 4.53 9.6, 6.1 12, 7.7 14.4, 9.33 16.8, 10.99 19.2, 12.69 21.6, 14.43 24, 16.2 26.4, 18.02 28.8, 19.88 31.2, 21.78 33.6, 23.74 36, 25.73 38.4, 27.78 40.8, 29.88 43.2, 32.04 45.6, 34.25 48, 36.52 50.4, 38.86 52.8, 41.25 55.2, 43.71 57.6, 46.24 60, 48.84 ENDTABLE #RadioCtrl0 0 #RadioCtrl1 0 *SCALAR 0.45 *SCALAR2 0.45 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Rack & Pinion); { CS B-Class } B-Class, Sports Car Wheel Kinematics #Library : Steering System: Kinematics for 2 Wheels (Rack & Pinion) #DataSet : B-Class, Sports Car Wheel Kinematics #Category: CS B-Class #FileID : RkKinAx116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:42 #VehCode Steer kinematics EXIT_PARSFILE Steering\KinematicsRack2\RkKinAx116.par #BlueLink10 Steering System: Kinematics for 2 Wheels (Rack & Pinion)`B-Class, Sports Car Wheel Kinematics` CS B-Class` , Rack to front wheels ENTER_PARSFILE Steering\Str_FBoost\FBoost101.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Force`Symetrical, Speed Sensitive Low Boost Curve` #RingCtrl0 CARPET #RadioCtrl0 0 TC_BOOST 0.08 F_BOOST_MAX 1250 *3D_XLabel Vehicle speed (kph) *3D_YLabel Torsion bar torque (N-m) *3D_ZLabel Power assist force (N) #DiagramTwo0 *3D_DATA 6, 63 ! columns x rows F_BOOST_R_CARPET 0, 0, 20, 50, 80, 120, 200 -16, -1250, -1250, -1250, -1250, -1250, -1250 -15, -1250, -1250, -1250, -1250, -1250, -1250 -14.5, -1250, -1250, -1250, -1250, -1250, -1250 -14, -1250, -1250, -1250, -1250, -1250, -1250 -13.5, -1250, -1250, -1250, -1250, -1250, -1250 -13, -1250, -1250, -1250, -1250, -1250, -1250 -12.5, -1250, -1250, -1250, -1250, -1250, -1250 -12, -1250, -1250, -1250, -1250, -1250, -1250 -11.5, -1250, -1250, -1250, -1250, -1133.4, -1070.66 -11, -1250, -1210, -1213.97, -1140.425, -868.065, -750.255 -10.5, -1250, -1102.5, -1031.56, -907.965, -656.645, -517.11 -10, -1250, -1000, -869.625, -714.895, -490, -350 -9.5, -1250, -902.5, -726.715, -556.015, -360.195, -232.195 -9, -1250, -810, -601.425, -426.61, -260.405, -150.665 -8.5, -1250, -722.5, -492.38, -322.4, -184.805, -95.37 -8, -1250, -640, -398.245, -239.545, -128.45, -58.72 -7.5, -1250, -562.5, -317.72, -174.6, -87.21, -35.04 -7, -1250, -490, -249.56, -124.515, -57.65, -20.175 -6.5, -1250, -422.5, -192.545, -86.6, -36.955, -11.155 -6, -1250, -360, -145.5, -58.505, -22.86, -5.88 -5.5, -1250, -302.5, -107.3, -38.195, -13.565, -2.93 -5, -1250, -250, -76.865, -23.945, -7.655, -1.365 -4.5, -1139.065, -202.5, -53.16, -14.29, -4.07, -0.59 -4, -800, -160, -35.2, -8.025, -2.005, -0.23 -3.5, -535.94, -122.5, -22.06, -4.17, -0.9, -0.08 -3, -337.5, -90, -12.86, -1.96, -0.355, -0.025 -2.5, -195.315, -62.5, -6.795, -0.8, -0.12, -0.005 -2, -100, -40, -3.11, -0.27, -0.03, 0 -1.5, -42.19, -22.5, -1.135, -0.065, -0.005, 0 -1, -12.5, -10, -0.275, -0.01, 0, 0 -0.5, -1.565, -2.5, -0.025, 0, 0, 0 0, 0, 0, 0, 0, 0, 0 0.5, 1.565, 2.5, 0.025, 0, 0, 0 1, 12.5, 10, 0.275, 0.01, 0, 0 1.5, 42.19, 22.5, 1.135, 0.065, 0.005, 0 2, 100, 40, 3.11, 0.27, 0.03, 0 2.5, 195.315, 62.5, 6.795, 0.8, 0.12, 0.005 3, 337.5, 90, 12.86, 1.96, 0.355, 0.025 3.5, 535.94, 122.5, 22.06, 4.17, 0.9, 0.08 4, 800, 160, 35.2, 8.025, 2.005, 0.23 4.5, 1139.065, 202.5, 53.16, 14.29, 4.07, 0.59 5, 1250, 250, 76.865, 23.945, 7.655, 1.365 5.5, 1250, 302.5, 107.3, 38.195, 13.565, 2.93 6, 1250, 360, 145.5, 58.505, 22.86, 5.88 6.5, 1250, 422.5, 192.545, 86.6, 36.955, 11.155 7, 1250, 490, 249.56, 124.515, 57.65, 20.175 7.5, 1250, 562.5, 317.72, 174.6, 87.21, 35.04 8, 1250, 640, 398.245, 239.545, 128.45, 58.72 8.5, 1250, 722.5, 492.38, 322.4, 184.805, 95.37 9, 1250, 810, 601.425, 426.61, 260.405, 150.665 9.5, 1250, 902.5, 726.715, 556.015, 360.195, 232.195 10, 1250, 1000, 869.625, 714.895, 490, 350 10.5, 1250, 1102.5, 1031.56, 907.965, 656.645, 517.11 11, 1250, 1210, 1213.97, 1140.425, 868.065, 750.255 11.5, 1250, 1250, 1250, 1250, 1133.4, 1070.66 12, 1250, 1250, 1250, 1250, 1250, 1250 12.5, 1250, 1250, 1250, 1250, 1250, 1250 13, 1250, 1250, 1250, 1250, 1250, 1250 13.5, 1250, 1250, 1250, 1250, 1250, 1250 14, 1250, 1250, 1250, 1250, 1250, 1250 14.5, 1250, 1250, 1250, 1250, 1250, 1250 15, 1250, 1250, 1250, 1250, 1250, 1250 16, 1250, 1250, 1250, 1250, 1250, 1250 ENDTABLE LOG_ENTRY Used Dataset: Steering: Power Assist Force; Symetrical, Speed Sensitive Low Boost Curve #Library : Steering: Power Assist Force #DataSet : Symetrical, Speed Sensitive Low Boost Curve #Category: #FileID : FBoost101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist force EXIT_PARSFILE Steering\Str_FBoost\FBoost101.par #BlueLink19 Steering: Power Assist Force`Symetrical, Speed Sensitive Low Boost Curve` ` , Front boost force ENTER_PARSFILE Steering\Compliance\StrCmp103.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`B-Class, Sports Car - Steering Comp.`CS B-Class #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 7.0e-07 STEER_COMP_COEFFICIENT 7.0e-07 LOG_ENTRY Used Dataset: Steering System: Compliance; { CS B-Class } B-Class, Sports Car - Steering Comp. #Library : Steering System: Compliance #DataSet : B-Class, Sports Car - Steering Comp. #Category: CS B-Class #FileID : StrCmp103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp103.par #BlueLink13 Steering System: Compliance`B-Class, Sports Car - Steering Comp.` CS B-Class` , Front compliance #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS B-Class } B-Class, Sports Car: Power, R&P #Library : Steering #DataSet : B-Class, Sports Car: Power, R&P #Category: CS B-Class #FileID : StrSys2104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2104_note.txt Steering for a vehicle with Wheelbase = 2330 mm Front Track = 1480 mm EXIT_NOTEFILE Steering\System2\StrSys2104_note.txt EXIT_PARSFILE Steering\System2\StrSys2104.par #BlueLink7 Steering`B-Class, Sports Car: Power, R&P` CS B-Class` , Steering system *IMAGE_FIT_MODE 1 *IMAGE_LINK Animator: Vehicles and Sensor Targets`B-Class, Sports Car` B-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS B-Class } B-Class, Sports Car #Library : Vehicle: Assembly #DataSet : B-Class, Sports Car #Category: CS B-Class #FileID : Vehicle105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:23 #VehCode Ind_Ind ENTRY_NOTEFILE Vehicles\Assembly\Vehicle105_note.txt Generic B-Class Sports Car with SLA front and 5-Link rear suspension. B-Class type vehicles include Audi TT, BMW Z4, Mercedes Benz SLK, Honda S2000, and Mazda MX-5. EXIT_NOTEFILE Vehicles\Assembly\Vehicle105_note.txt EXIT_PARSFILE Vehicles\Assembly\Vehicle105.par #BlueLink2 Vehicle: Assembly`B-Class, Sports Car` CS B-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc172.par`09-01-2019`07:52:03 #FullDataName Procedures`chapt3_Radar Active Cruise Control: First Car`BOOK_MPC_Procedures #CheckBox3 0 #RingCtrl0 3 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 TSTOP 40 TSTART 0 SSTART 80 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 81 OPT_DIRECTION 1 Opt_SC 3 #BlueLink27 Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview` Constant Position` , Steering #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control ENTER_PARSFILE Control\Speed_s\SpdSta106.par`08-31-2019`20:05:01 #FullDataName Control: Speed (Closed Loop) vs. Station`Sensor Target Vehicle Speed LEO-define`Sensor Target Vehicle OPT_SC 3 #RingCtrl0 LINEAR_FLAT #RadioCtrl0 0 SPEED_KI 0.75 SPEED_KP 0.5 OPT_VMIN -1 BK_PERF_SC 0.16 FPD_PERF_SC 0.1 #CheckBox0 1 OPT_BK_SC 1 #CheckBox1 0 OPT_SC_ENGINE_BRAKING 0 #DiagramOne0 SPEED_STATION_TABLE LINEAR_FLAT 0, 80 100, 105 130, 105 180, 90 200, 80 275, 80 325, 90 405, 105 470, 105 530, 85 540, 80 615, 80 715, 105 745, 105 795, 90 815, 80 890, 80 940, 90 1020, 105 1040, 105 1100, 80 1160, 5 ENDTABLE LOG_ENTRY Used Dataset: Control: Speed (Closed Loop) vs. Station; { Sensor Target Vehicle } Sensor Target Vehicle Speed LEO-define #Library : Control: Speed (Closed Loop) vs. Station #DataSet : Sensor Target Vehicle Speed LEO-define #Category: Sensor Target Vehicle #FileID : SpdSta106 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-31-2019 20:05:01 #VehCode Speed vs. station EXIT_PARSFILE Control\Speed_s\SpdSta106.par #BlueLink32 Control: Speed (Closed Loop) vs. Station`Sensor Target Vehicle Speed LEO-define` Sensor Target Vehicle` , Speed vs. station #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow #BlueLink0 Road: 3D Surface (All Properties)`1200 m One Lane` Straight` , Misc. #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } chapt3_Radar Active Cruise Control: First Car #Library : Procedures #DataSet : chapt3_Radar Active Cruise Control: First Car #Category: BOOK_MPC_Procedures #FileID : Proc172 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 07:52:03 #VehCode Procedure EXIT_PARSFILE Procedures\Proc172.par #BlueLink28 Procedures`chapt3_Radar Active Cruise Control: First Car` BOOK_MPC_Procedures` , Procedure #BlueLink23 CarSim Run Control`Chapter3_MPC_ACC: Second Car (Ext. Sen.)` BOOK_MPC_Examples` , Overlay run or ERD file *IMAGE_LINK Animator: Vehicles and Sensor Targets`B-Class, Sports Car` B-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter3_MPC_ACC: First Car (Ext. Sen.) CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter3_MPC_ACC: First Car (Ext. Sen.) LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter3_MPC_ACC: First Car (Ext. Sen.) #Library : CarSim Run Control #DataSet : Chapter3_MPC_ACC: First Car (Ext. Sen.) #Category: BOOK_MPC_Examples #FileID : Run288 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-30-2019 23:51:42 #VehCode Run EXIT_PARSFILE Runs\Run288.par #BlueLink23 CarSim Run Control`Chapter3_MPC_ACC: First Car (Ext. Sen.)` BOOK_MPC_Examples` , Overlay run or ERD file *IMAGE_LINK Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter3_MPC_ACC: Second Car (Ext. Sen.) CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter3_MPC_ACC: Second Car (Ext. Sen.) LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter3_MPC_ACC: Second Car (Ext. Sen.) #Library : CarSim Run Control #DataSet : Chapter3_MPC_ACC: Second Car (Ext. Sen.) #Category: BOOK_MPC_Examples #FileID : Run286 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 09:12:01 #VehCode Run EXIT_PARSFILE Runs\Run286.par END ================================================ FILE: Chapter-3/chap3_MPC_AdaptiveCruiseCtrl_VLV/LEO_MPCACC_VLV1.mdl ================================================ Model { Name "LEO_MPCACC_VLV1" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.46" NumModelReferences 0 NumTestPointedSignals 0 } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 1 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 2 $ClassName "Simulink.WindowInfo" IsActive [1] Location [750.0, 233.0, 1073.0, 738.0] Object { $PropName "ModelBrowserInfo" $ObjectID 3 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 4 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 5 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [1023.0, 561.0] ZoomFactor [1.25] Offset [-54.166666666666316, 31.199999999999989] } } } Created "Fri Dec 16 13:40:57 2016" Creator "admin" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Sun Sep 01 11:24:35 2019" RTWModifiedTimeStamp 489237158 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "disabled" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 6 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "LEO_MPCACC_VLV1" overrideMode_ [0.0] Array { Type "Cell" Dimension 1 Cell "LEO_MPCACC_VLV1" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell [] PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 7 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 8 Version "1.13.1" StartTime "0.0" StopTime "40" AbsTol "auto" FixedStep "auto" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 9 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "Dataset" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 10 Version "1.13.1" Array { Type "Cell" Dimension 8 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" Cell "UseSpecifiedMinMax" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 128 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 11 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "EnableAllAsError" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "none" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 12 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 13 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 14 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 15 Version "1.13.1" Array { Type "Cell" Dimension 15 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" Cell "PortableWordSizes" Cell "GenerateWebview" Cell "GenerateCodeMetricsReport" Cell "GenerateCodeReplacementReport" Cell "GenerateErtSFunction" Cell "CreateSILPILBlock" Cell "CodeExecutionProfiling" Cell "CodeProfilingSaveOptions" Cell "CodeProfilingInstrumentation" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 23 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "InsertPolySpaceComments" Cell "SFDataObjDesc" Cell "MATLABFcnDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InternalIdentifier" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "CustomSymbolStrUtil" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 15 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "GenerateAllocFcn" Cell "PurelyIntegerCode" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "SupportNonInlinedSFcns" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns on CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface off GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 18 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 260, 130, 1340, 770 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 7 } Object { $PropName "DataTransfer" $ObjectID 19 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType Memory X0 "0" InheritSampleTime off LinearizeMemory off LinearizeAsDelay off StateMustResolveToSignalObject off RTWStateStorageClass "Auto" } Block { BlockType Mux Inputs "4" DisplayOption "none" UseBusObject off BusObject "BusObject" NonVirtualBus off } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "LEO_MPCACC_VLV1" Location [750, 233, 1823, 971] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" SIDHighWatermark "18" Block { BlockType Demux Name "Demux" SID "12" Ports [1, 2] Position [90, 335, 95, 395] ZOrder 21 BlockMirror on BackgroundColor "black" ShowName off Outputs "[3 6]" } Block { BlockType Reference Name "Ego Vehicle" SID "14" Ports [1, 1] Position [235, 204, 335, 266] ZOrder 33 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i2_64" SIMFILE "LEO_MPC_ACC_ExtSen_Car2.sim" } Block { BlockType Reference Name "Leading Vehicle" SID "1" Ports [0, 1] Position [175, 79, 275, 141] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i" SIMFILE "LEO_MPC_ACC_ExtSen_Car1.sim" } Block { BlockType Memory Name "Memory1" SID "9" Position [145, 219, 175, 251] ZOrder 9 ShowName off } Block { BlockType Mux Name "Mux1" SID "18" Ports [2, 1] Position [385, 91, 395, 169] ZOrder 37 ShowName off Inputs "2" DisplayOption "bar" } Block { BlockType S-Function Name "S-Function Host vehicle Ctrl" SID "10" Ports [1, 1] Position [225, 325, 525, 405] ZOrder 13 BlockMirror on FunctionName "Main_ACC_HostVehicleCtrl1" EnableBusSupport off } Block { BlockType Terminator Name "Terminator" SID "13" Position [25, 365, 60, 395] ZOrder 32 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace1" SID "11" Ports [1] Position [90, 425, 150, 455] ZOrder 20 BlockMirror on VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 17 SrcBlock "S-Function Host vehicle Ctrl" SrcPort 1 Points [-40, 0] Branch { ZOrder 54 Points [0, 75] DstBlock "To Workspace1" DstPort 1 } Branch { ZOrder 53 DstBlock "Demux" DstPort 1 } } Line { ZOrder 25 SrcBlock "Demux" SrcPort 1 Points [-9, 0; 0, -115] DstBlock "Memory1" DstPort 1 } Line { ZOrder 26 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Line { ZOrder 37 SrcBlock "Memory1" SrcPort 1 DstBlock "Ego Vehicle" DstPort 1 } Line { ZOrder 42 SrcBlock "Ego Vehicle" SrcPort 1 Points [18, 0; 0, -85] DstBlock "Mux1" DstPort 2 } Line { ZOrder 52 SrcBlock "Mux1" SrcPort 1 Points [140, 0] DstBlock "S-Function Host vehicle Ctrl" DstPort 1 } Line { ZOrder 47 SrcBlock "Leading Vehicle" SrcPort 1 DstBlock "Mux1" DstPort 1 } } } ================================================ FILE: Chapter-3/chap3_MPC_AdaptiveCruiseCtrl_VLV/LEO_MPC_ACC_ExtSen_Car1.sim ================================================ SIMFILE INPUT C:\Users\Public\Documents\CarSim_Data\Runs\Run288_all.par ECHO C:\Users\Public\Documents\CarSim_Data\Runs\Run288_echo.par FINAL C:\Users\Public\Documents\CarSim_Data\Runs\Run288_end.par LOGFILE C:\Users\Public\Documents\CarSim_Data\Runs\Run288_log.txt ERDFILE C:\Users\Public\Documents\CarSim_Data\Runs\Run288.erd DLLFILE C:\Program Files (x86)\CarSim810_Prog\Programs\Solvers\Default64\i_i.dll END ================================================ FILE: Chapter-3/chap3_MPC_AdaptiveCruiseCtrl_VLV/LEO_MPC_ACC_ExtSen_Car2.sim ================================================ SIMFILE INPUT C:\Users\Public\Documents\CarSim_Data\Runs\Run286_all.par ECHO C:\Users\Public\Documents\CarSim_Data\Runs\Run286_echo.par FINAL C:\Users\Public\Documents\CarSim_Data\Runs\Run286_end.par LOGFILE C:\Users\Public\Documents\CarSim_Data\Runs\Run286_log.txt ERDFILE C:\Users\Public\Documents\CarSim_Data\Runs\Run286.erd DLLFILE C:\Users\Public\Documents\CarSim_Data\Extensions\Simulink\Multi_Vehicle\i_i2_64.dll END ================================================ FILE: Chapter-3/chap3_MPC_AdaptiveCruiseCtrl_VLV/MPC_HostVehicleController_CVXGEN_CTHW.m ================================================ function [vars, status] = MPC_HostVehicleController_CVXGEN_CTHW(kesi_host, Ah, Avl_des, Xmin_host, Xmax_host, thw) % Input: % kesi_host = [dr_vl; Vr_vl; EgoV.Vh; EgoV.acc ] % Avl_des virtual vehicle optimal control % Ah: EgoV.acc % Xmin_host=[Dsafe; 0; 0; 0]; % Xmax_host=[10000; 0; Vlimits; 0]; % % Self-defined parameters: % Ts--control period % dumax--limits of jerk % umax--the max of acceleration % umin--the max of deceleration % % Output: % status.converged: 1-converge, 0-nonconverge % vars.u_0, vars.u{i}: optimized control % vars.x{i}: predicted states % %Constant Time-Headway = thw*Vh+r; r:constant %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %---------------------------------------------------------------% %****Step(1): longitudinal vehilce model-one step delay******************% Ts = 0.05; % 50ms Ts2 = Ts*Ts; tao = 0.1; %0.5 A = [1 Ts 0 -Ts2/2; 0 1 0 -Ts; 0 0 1 Ts; 0 0 0 1-Ts/tao ]; B1 = [0; 0; 0; Ts/tao]; B2 = [Ts2/2; Ts; 0; 0]; C =[1 0 -thw 0]; H =[1 0 0 0; 0 0 1 0]; % end %****Step(2): Constraints and bounds*************************************% dumax = 5; % limits of jerk umax = 1.5; % the max of acceleration umin = -5;% the max of deceleration %****Step(3): Weighting coeffcients**************************************% Q = 10; R = 0.1; S = 0.5; %****Step(4): MPC formulation;CVXGEN solver *****************************% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations settings.resid_tol = 1e-1; settings.eps = 1e1; params.x_0 = kesi_host; params.ahm = Ah; % Ah params.avlp = Avl_des; % Avl_des params.An = A; params.B1 = B1; params.B2 = B2; params.C = C; params.Q = Q; params.R = R; params.S = S; params.r = 15;%1.5; params.dumax = dumax; params.umax = umax; params.umin = umin; params.H = H; params.Xmin = Xmin_host; params.Xmax = Xmax_host; [vars, status] = csolve_CTHW(params, settings); end ================================================ FILE: Chapter-3/chap3_MPC_AdaptiveCruiseCtrl_VLV/Main_ACC_HostVehicleCtrl1.m ================================================ function [sys,x0,str,ts] =Main_ACC_HostVehicleCtrl1(t,x,u,flag) % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 4; %ģɢ״̬ĸ,ʵûõֵ,ֻʾɢģ sizes.NumOutputs = 9; %S sizes.NumInputs = 10; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global E_gradient; E_gradient = [0.904837418035960; 0.818730753077982; 0.740818220681718; 0.670320046035639; 0.606530659712633; 0.548811636094026; 0.496585303791409; 0.449328964117222; 0.406569659740599; 0.367879441171442; 0.332871083698080; 0.301194211912202; 0.272531793034013; 0.246596963941606; 0.223130160148430; 0.201896517994655; 0.182683524052735; 0.165298888221587; 0.149568619222635; 0.135335283236613; 0.122456428252982; 0.110803158362334; 0.100258843722804; 0.0907179532894125; 0.0820849986238988; 0.0742735782143339; 0.0672055127397498; 0.0608100626252180; 0.0550232200564072; 0.0497870683678639]; global MPCParameters; MPCParameters.Np = 30;% predictive horizon MPCParameters.Nc = 30;% control horizon MPCParameters.Nx = 4; %number of state variables MPCParameters.Nu = 1; %number of control inputs MPCParameters.Ny = 1; %number of output variables MPCParameters.Ts = 0.05; %Set the sample time MPCParameters.Q = 100; % cost weight factor MPCParameters.R = 0.1; % cost weight factor MPCParameters.S = 0.5; % cost weight factor MPCParameters.qp_solver = 0; %0: default, quadprog; 1:qpOASES; 2:CVXGEN MPCParameters.umin = -5.0; % the min of deceleration MPCParameters.umax = 3.5; % the max of acceleration MPCParameters.dumin = -5.0; % minimum limits of jerk MPCParameters.dumax = 5.0; % maximum limits of jerk MPCParameters.dist_CG = 1.5; % maximum limits of jerk global WarmStart; WarmStart = zeros(MPCParameters.Np,1); % End of mdlInitializeSizes %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== function sys = mdlUpdates(t,x,u) % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== function sys = mdlOutputs(t,x,u) global InitialGapflag; global E_gradient; global MPCParameters; global WarmStart; Vlimits = 30.0; % 趨·٣road speed limits CTHW = 3.0; % 趨Constant Time-Head-Way (CTHW), Ϊ3s Dsafe = 3.0; % 趨ǰ뱾Сȫ룬Ϊ3m Vh = 0; Ah = 0; ah_opt = 0; dr_al = 0; Vr_al = 0; A_al = 0; t_Start = tic; % ʼʱ if InitialGapflag < 2 % get rid of the first two inputs InitialGapflag = InitialGapflag + 1;% else %***********Step (1). ǰԼ״̬ **********************% Target.Vt = u(1)/3.6; %ǰٶȣλkm/h-->m/s Target.Xt = u(2); %ǰX Target.Yt = u(3); %ǰY Target.Yawt = u(4); %ǰ Target.acc = u(5)*9.8; %ǰٶȣλg's-->m/s2 EgoV.Vh = u(6)/3.6; %ٶȣλkm/h-->m/s EgoV.Xh = u(7); %X EgoV.Yh = u(8); %Y EgoV.Yawh = u(9); % EgoV.acc = u(10)*9.8;%ٶȣλg's-->m/s2 %********Step(2): ǰԼ״̬״****************% [Detected, dr_al, Dangle] = func_Radar_Sensor_Processing(Target, EgoV); if 0 == Detected %δ⵽Ŀ꣬ǰijΪ·٣ٶΪ0 Target.Vt = Vlimits; Target.acc = 0; end Vh = EgoV.Vh; Ah = EgoV.acc; Vr_al = Target.Vt - EgoV.Vh; A_al = Target.acc; aal_P = cell(MPCParameters.Np,1); for i = 1:1:MPCParameters.Np aal_P{i,1} = Target.acc * E_gradient(i); end %**Step(3): update longitudinal vehilce model, with inertial delay***% Ts = MPCParameters.Ts; % 50ms tao = 0.1; %inertial delay time StateSpaceModel.A = [1 Ts 0 -Ts*Ts/2; 0 1 0 -Ts; 0 0 1 Ts; 0 0 0 1-Ts/tao ]; StateSpaceModel.B1 = [0; 0; 0; Ts/tao]; StateSpaceModel.B2 = [Ts*Ts/2; Ts; 0; 0]; StateSpaceModel.C = [1 0 -CTHW 0]; % Gmin_host <= H*U <= Gmax_host H_env =[1 0 0 0; 0 0 1 0]; Gmin_host = [Dsafe; 0]; %[СԾ;С] Gmax_host = [500;Vlimits;]; %[Ծ(Ϊֵ);(Ϊ·)] kesi_host = [dr_al; Vr_al; EgoV.Vh; EgoV.acc ]; %****Step(4): MPC formulation;********************% %Update Theta, PHI and GAMMA for future states prediction [PHI0, THETA0, GAMMA0, PHI, THETA, GAMMA] = func_Update_PHI_THETA_GAMMA(StateSpaceModel, MPCParameters); %Update H and g for cost function J=0.5*U'*H*U + g'*U U2 = cell2mat(aal_P); [H, g] = func_Update_H_g(kesi_host, U2, PHI, THETA, GAMMA, MPCParameters); %****Step(5): Call qp-solver********************% switch MPCParameters.qp_solver, case 0 % default qp-solver: quadprog [A, b, Aeq, beq, lb, ub] = func_Constraints_du_quadprog(MPCParameters, Ah, ... kesi_host, U2, PHI0, THETA0, GAMMA0, H_env, Gmin_host, Gmax_host); options = optimset('Display','off', ... 'TolFun', 1e-8, ... 'MaxIter', 2000, ... 'Algorithm', 'active-set', ... 'FinDiffType', 'forward', ... 'RelLineSrchBnd', [], ... 'RelLineSrchBndDuration', 1, ... 'TolConSQP', 1e-8); warning off all % close the warnings during computation U0 = WarmStart; [U, FVAL, EXITFLAG] = quadprog(H, g, A, b, Aeq, beq, lb, ub, U0, options); % WarmStart = shiftHorizon(U); % Prepare restart, nominal close loop if (1 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; fprintf('MPC solver not converged!\n'); end ah_opt = U(1); case 1 % qpOASES [A, lb, ub, lbA, ubA] = func_Constraints_du_qpOASES(MPCParameters, Ah, ... kesi_host, U2, PHI0, THETA0, GAMMA0, H_env, Gmin_host, Gmax_host); options = qpOASES_options('default', ... 'printLevel', 0); [U, FVAL, EXITFLAG, iter, lambda] = qpOASES(H, g, A, lb, ub, lbA, ubA, options); % if (0 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; fprintf('MPC solver: qpOASES not converged!\n'); end ah_opt = U(1); case 2 % CVXGEN %--Licenseƣ鲻ṩCVXGENsolver߿ [vars, status] = MPC_HostVehicleController_CVXGEN_CTHW(kesi_host, ... Ah, aal_P, Gmin_host, Gmax_host, CTHW); if (1 == status.converged) %if optimization succeeded. ah_opt = vars.u_0; else ah_opt = 0; fprintf('MPC solver not converged!\n'); end otherwise % Unexpected flags % error(['unexpected qp-solver, Sol_method=',num2str(flag)]); % Error handling end % end of switch end % end of if Initialflag < 1 % [Throttle, Brake] = func_AccelerationTrackingController(ah_opt); t_Elapsed = toc( t_Start ); %computation time sys = [Throttle; Brake; t_Elapsed; Vh; Ah; ah_opt; dr_al; Vr_al; A_al]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== function [Detected, Distance, Dangle] = func_Radar_Sensor_Processing(Target, EgoV) %***************************************************************% % % Input: % Targetǰ״̬ % EgoV״̬ % Output: % Detected״1ʾ⵽Ŀ꣬0ʾδ⵽Ŀ % Distance: ǰ뱾Ծ룬δ⵽ĿĬΪ % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %***************************************************************% L_Radar = 200; % Radar detect length:70 m R_Radar = 0.6; % Radar detect range:34.4deg=0.6rad DistY = Target.Yt - EgoV.Yh; DistX = Target.Xt - EgoV.Xh; Distance = sqrt( DistY*DistY + DistX*DistX ); Theta = atan2(DistY, DistX); Theta_Deg = Theta*180/pi; Dangle = Theta_Deg - mod(EgoV.Yawh, 360); if abs(Dangle) >= 270 Dangle = 360 - abs(Dangle); end if abs(Dangle) >= R_Radar Distance = L_Radar; end if Distance < L_Radar Detected = 1; %⵽ǰ else Detected = 0; %δ⵽ǰ end function [Throttle, Brake] = func_AccelerationTrackingController(ahopt) K_brake = 0.3; K_throttle = 0.1; %0.05; Brake_Sat = 15; Throttle_Sat = 1; if ahopt < 0 % Brake control Brake = K_brake * ahopt; if Brake > Brake_Sat Brake = Brake_Sat; end Throttle = 0; else % throttle control Brake = 0; Throttle = K_throttle *ahopt; if Throttle > Throttle_Sat Throttle = Throttle_Sat; end if Throttle < 0 Throttle = 0; end end function u0 = shiftHorizon(u) %shift control horizon u0 = [u(:,2:size(u,2)), u(:,size(u,2))]; % size(u,2)) function [PHI0, THETA0, GAMMA0, PHI, THETA, GAMMA] = func_Update_PHI_THETA_GAMMA(StateSpaceModel, MPCParameters) %***************************************************************% % Ԥʽ Y(t)=PHI*kesi(t)+THETA*DU(t) + GAMMA*U2(t) % Y(t) = [Eta(t+1|t) Eta(t+2|t) Eta(t+3|t) ... Eta(t+Np|t)]' %***************************************************************% Np = MPCParameters.Np; Nc = MPCParameters.Nc; Nx = MPCParameters.Nx; Ny = MPCParameters.Ny; Nu = MPCParameters.Nu; A = StateSpaceModel.A; B1 = StateSpaceModel.B1; B2 = StateSpaceModel.B2; C = StateSpaceModel.C; PHI0_cell=cell(Np,1); %PHI=[CA CA^2 CA^3 ... CA^Np]' THETA0_cell=cell(Np,Nc); %THETA GAMMA0_cell=cell(Np,Nc); %GAMMA PHI_cell=cell(Np,1); %PHI=[CA CA^2 CA^3 ... CA^Np]' THETA_cell=cell(Np,Nc); %THETA GAMMA_cell=cell(Np,Nc); %GAMMA for j=1:1:Np PHI0_cell{j,1}=A^j; PHI_cell{j,1}=C*PHI0_cell{j,1}; % demision:Ny* Nx for k=1:1:Nc if k<=j A_j_k = A^(j-k); THETA0_cell{j,k}=A_j_k*B1; GAMMA0_cell{j,k}=A_j_k*B2; THETA_cell{j,k}=C*A_j_k*B1; % demision:Ny*Nu GAMMA_cell{j,k}=C*A_j_k*B2; % demision:Ny*Nu else THETA0_cell{j,k}=zeros(Nx,Nu); GAMMA0_cell{j,k}=zeros(Nx,Nu); THETA_cell{j,k}=zeros(Ny,Nu); GAMMA_cell{j,k}=zeros(Ny,Nu); end end end PHI0=cell2mat(PHI0_cell); % size(PHI)=[(Ny*Np) * Nx] THETA0=cell2mat(THETA0_cell);% size(THETA)=[Ny*Np Nu*Nc] GAMMA0=cell2mat(GAMMA0_cell);% size(THETA)=[Ny*Np Nu*Nc] PHI=cell2mat(PHI_cell); % size(PHI)=[(Ny*Np) * Nx] THETA=cell2mat(THETA_cell);% size(THETA)=[Ny*Np Nu*Nc] GAMMA=cell2mat(GAMMA_cell);% size(THETA)=[Ny*Np Nu*Nc] % end %EoF function [H, g] = func_Update_H_g(kesi, U2, PHI, THETA, GAMMA, MPCParameters) %***************************************************************% % trajectory planning %***************************************************************% Np = MPCParameters.Np; Nc = MPCParameters.Nc; Q = MPCParameters.Q; R = MPCParameters.R; S = MPCParameters.S; Qq = kron(eye(Np), Q); % Q = [Np*Nx] * [Np*Nx] Rr = kron(eye(Nc), R); % R = [Nc*Nu] * [Nc*Nu] Ss = kron(eye(Nc), S); A_t=zeros(Nc,Nc); for p=1:1:Nc for q=1:1:Nc if p >= q A_t(p,q)=1; else A_t(p,q)=0; end end end PHI_kesi = PHI * kesi; GAMMA_U2 = GAMMA * U2; Yr = MPCParameters.dist_CG * ones(Nc, 1); H = THETA'*Qq*THETA + Rr + A_t'*Ss*A_t; f = (PHI_kesi' + GAMMA_U2' - Yr')*Qq*THETA; g = f'; % end %EoF function [A, b, Aeq, beq, lb, ub] = func_Constraints_du_quadprog(MPCParameters, um, ... kesi, U2, PHI0, THETA0, GAMMA0, H, Gmin_host, Gmax_host) %************************************************************************% % generate the constraints of the vehicle % %************************************************************************% Np = MPCParameters.Np; Nc = Np; dumin = MPCParameters.dumin; dumax = MPCParameters.dumax; umin = MPCParameters.umin; umax = MPCParameters.umax; Umin = kron(ones(Nc,1),umin); Umax = kron(ones(Nc,1),umax); Ut = kron(ones(Nc,1),um); %----(1) A*x<=b----------% A_t=zeros(Nc,Nc); for p=1:1:Nc for q=1:1:Nc if p >= q A_t(p,q)=1; else A_t(p,q)=0; end end end A_H = kron(eye(Nc,Nc), H); G_MAX = kron(ones(Nc,1), Gmax_host); G_MIN = kron(ones(Nc,1), Gmin_host); A_cell=cell(4,1); A_cell{1,1} = A_t; % A_cell{2,1} = -A_t; A_cell{3,1} = A_H*THETA0; A_cell{4,1} = -A_H*THETA0; A=cell2mat(A_cell); % b_cell=cell(4, 1); b_cell{1,1} = Umax - Ut; % b_cell{2,1} = -Umin + Ut; b_cell{3,1} = G_MAX - A_H*PHI0*kesi - A_H*GAMMA0*U2; b_cell{4,1} = -G_MIN + A_H*PHI0*kesi + A_H*GAMMA0*U2; b=cell2mat(b_cell); % %----(2) Aeq*x=beq----------% Aeq = []; beq = []; %----(3) lb== q A_t(p,q)=1; else A_t(p,q)=0; end end end A_H = kron(eye(Nc,Nc), H); G_MAX = kron(ones(Nc,1), Gmax_host); G_MIN = kron(ones(Nc,1), Gmin_host); A_cell=cell(2,1); A_cell{1,1} = A_t; % A_cell{2,1} = A_H*THETA0; A=cell2mat(A_cell); % ubA_cell=cell(2, 1); lbA_cell=cell(2, 1); ubA_cell{1,1} = Umax - Ut; lbA_cell{1,1} = Umin - Ut; ubA_cell{2,1} = G_MAX - A_H*PHI0*kesi - A_H*GAMMA0*U2; lbA_cell{2,1} = G_MIN - A_H*PHI0*kesi - A_H*GAMMA0*U2; ubA=cell2mat(ubA_cell); lbA=cell2mat(lbA_cell); %---- lb= 1 ) && ( ischar( varargin{nargin} ) ) ) error('ERROR (qpOASES_options): Options must be specified in pairs!'); end switch ( varargin{1} ) case 'default' options = qpOASES_default_options(); case 'reliable' options = qpOASES_reliable_options(); case {'MPC','mpc','fast'} options = qpOASES_MPC_options(); otherwise error( ['ERROR (qpOASES_options): Only the following option schemes are defined: ''default'', ''reliable'', ''MPC''!'] ); end firstIsStructOrScheme = 1; end else error('ERROR (qpOASES_options): First argument needs to be a string or an options struct!'); end end end % set options to user-defined values for i=(1+firstIsStructOrScheme):2:nargin argName = varargin{i}; argValue = varargin{i+1}; if ( ( isempty( argName ) ) || ( ~ischar( argName ) ) ) error('ERROR (qpOASES_options): Argmument no. %d has to be a non-empty string!',i ); end if ( ( ischar(argValue) ) || ( ~isscalar( argValue ) ) ) error('ERROR (qpOASES_options): Argmument no. %d has to be a scalar constant!',i+1 ); end if ( ~isfield( options,argName ) ) error('ERROR (qpOASES_options): Argmument no. %d is an invalid option!',i ); end eval( ['options.',argName,' = ',num2str(argValue),';'] ); end end function [ options ] = qpOASES_default_options( ) % setup options struct with default values options = struct( 'maxIter', -1, ... 'maxCpuTime', -1, ... 'printLevel', 1, ... ... 'enableRamping', 1, ... 'enableFarBounds', 1, ... 'enableFlippingBounds', 1, ... 'enableRegularisation', 0, ... 'enableFullLITests', 0, ... 'enableNZCTests', 1, ... 'enableDriftCorrection', 1, ... 'enableCholeskyRefactorisation', 0, ... 'enableEqualities', 0, ... ... 'terminationTolerance', 5.0e6*eps, ... 'boundTolerance', 1.0e6*eps, ... 'boundRelaxation', 1.0e4, ... 'epsNum', -1.0e3*eps, ... 'epsDen', 1.0e3*eps, ... 'maxPrimalJump', 1.0e8, ... 'maxDualJump', 1.0e8, ... ... 'initialRamping', 0.5, ... 'finalRamping', 1.0, ... 'initialFarBounds', 1.0e6, ... 'growFarBounds', 1.0e3, ... 'initialStatusBounds', -1, ... 'epsFlipping', 1.0e3*eps, ... 'numRegularisationSteps', 0, ... 'epsRegularisation', 1.0e3*eps, ... 'numRefinementSteps', 1, ... 'epsIterRef', 1.0e2*eps, ... 'epsLITests', 1.0e5*eps, ... 'epsNZCTests', 3.1e3*eps ); end function [ options ] = qpOASES_reliable_options( ) % setup options struct with values for most reliable QP solution options = qpOASES_default_options( ); options.enableFullLITests = 1; options.enableCholeskyRefactorisation = 1; options.numRefinementSteps = 2; end function [ options ] = qpOASES_MPC_options( ) % setup options struct with values for most reliable QP solution options = qpOASES_default_options( ); options.enableRamping = 0; options.enableFarBounds = 1; options.enableFlippingBounds = 0; options.enableRegularisation = 1; options.enableNZCTests = 0; options.enableDriftCorrection = 0; options.enableEqualities = 1; options.terminationTolerance = 1.0e9*eps; options.initialStatusBounds = 0; options.numRegularisationSteps = 1; options.numRefinementSteps = 0; end ================================================ FILE: Chapter-3/chap3_MPC_SpeedCtrl/Chapter3_SpeedTrackingControl_MPC.par ================================================ PARSFILE #EXPANDED_PARSFILE 2.0 ! This is an expansion of the parsfile: "Runs\Run272.par" ! It contains the contents of that file plus the contents of any files linked ! with the "PARSFILE" or "SPECIAL_PARSFILE" keywords. ! File created: 23:11 on August 30, 2019 by CarSim Version 8.1a, October 2011 PRODUCT_NAME CarSim ENTER_PARSFILE Runs\Run272.par`08-23-2019`23:36:49 #FullDataName CarSim Run Control`Chapter3_SpeedTrackingControl_MPC`BOOK_MPC_Examples #VehicleCode Ind_Ind OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex122.par`08-29-2019`21:59:17 #FullDataName Models: Simulink`MPC_SpeedCtrl_Sim`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap3_MPC_SpeedCtrl\LEO_MPC_SpeedCtrl.mdl #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 0 *USE_DIFF_SOLVERS 0 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap3_MPC_SpeedCtrl *ALTERNATE_PATH E:\Carsim\Book_examples\chap3_MPC_SpeedCtrl ENTER_PARSFILE IO_Channels\I_Channels\I_Ch119.par`08-23-2019`21:26:22 #FullDataName I/O Channels: Import`SpeedCtrl_Imports`MPC_BOOK_Sim_Imports *README_FILE Programs\solvers\ReadMe\i_i_imports_tab.txt #MiscYellow0 IMP_THROTTLE_ENGINE Replace 0.0 1 IMP_PCON_BK Replace 0.0 1 #ENDMYellow #RingCtrl0 2 LOG_ENTRY Used Dataset: I/O Channels: Import; { MPC_BOOK_Sim_Imports } SpeedCtrl_Imports #Library : I/O Channels: Import #DataSet : SpeedCtrl_Imports #Category: MPC_BOOK_Sim_Imports #FileID : I_Ch119 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-23-2019 21:26:22 #VehCode Import Channels EXIT_PARSFILE IO_Channels\I_Channels\I_Ch119.par #BlueLink0 I/O Channels: Import`SpeedCtrl_Imports` MPC_BOOK_Sim_Imports` , Import ENTER_PARSFILE IO_Channels\O_Channels\O_Ch121.par`08-23-2019`20:56:04 #FullDataName I/O Channels: Export`SpeedCtrl_Exports`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Vx EXP_Ax #MiscYellow0 #Number of Selected Channels: 2 #CHN_NAME: Vx #CHN_NAME: Ax #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } SpeedCtrl_Exports #Library : I/O Channels: Export #DataSet : SpeedCtrl_Exports #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch121 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-23-2019 20:56:04 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch121.par #BlueLink1 I/O Channels: Export`SpeedCtrl_Exports` MPC_BOOK_Sim_Exports` , Export #MiscYellow1 simfile LEO_MPC_SpeedCtrl.sim #ENDMYellow LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } MPC_SpeedCtrl_Sim #Library : Models: Simulink #DataSet : MPC_SpeedCtrl_Sim #Category: BOOK_MPC_Models #FileID : Cmex122 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-29-2019 21:59:17 #VehCode EXIT_PARSFILE Models\Simulink\Cmex122.par #BlueLink12 Models: Simulink`MPC_SpeedCtrl_Sim` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera107.par`08-02-2011`16:43:55 #FullDataName Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)`Vehicle Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw ENTER_PARSFILE Animator\Frames\Frame106.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw`Cameras ADD_REFERENCE_FRAME Cameras Camera Tracking X-Y-Z-Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_YAW_NAME yaw #MiscYellow0 cam_global_ambient .4 .4 .4 1 #ENDMYellow WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_yaw ANI_yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Cameras } Camera Tracking X-Y-Z-Yaw #Library : Animator: Reference Frame #DataSet : Camera Tracking X-Y-Z-Yaw #Category: Cameras #FileID : Frame106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame106.par #BlueLink0 Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw` Cameras` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 15 SET_DISTANCE 36 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 15 *SET_DISTANCE 36 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 37 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Vehicle Reference } Rear View High, Veh. Ref., (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View High, Veh. Ref., (Frt. Facing) #Category: Vehicle Reference #FileID : Camera107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera107.par #BlueLink0 Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)` Vehicle Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 1 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 0.753 0.753 0.753 SET_RUN_COLOR 0.753 0.753 0.753 FLAG_10 272 ID_RUN 272 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle123.par`08-02-2011`16:42:24 #FullDataName Vehicle: Assembly`E-Class, Sedan`CS E-Class #VehCode Ind_Ind #CheckBox0 0 #RingCtrl0 3 OPT_PT 3 #RingCtrl1 1 #RingCtrl2 1 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp111.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Front Comp.`CS E-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.8613 *R_SPRING_R 0.8613 *R_DAMPER_L 0.8681 *R_DAMPER_R 0.8681 *CT_FX_L -1.9e-6 *CT_FX_R -1.9e-6 *CS_FY_L -3.3e-5 *CS_FY_R -3.3e-5 *CS_MZ_L 1.4e-4 *CS_MZ_R 1.4e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 5e-5 *CI_FY_R 5e-5 *CI_MZ_L -5.3e-5 *CI_MZ_R -5.3e-5 *C_LONG_L 2.0e-4 *C_LONG_R 2.0e-4 *C_LAT_L 2.2e-5 *C_LAT_R 2.2e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.8681 *R_JOUNCE_R 0.8681 *R_REBOUND_L 0.8681 *R_REBOUND_R 0.8681 ENTER_PARSFILE Suspensions\Shocks\Shock101.par`08-02-2011`16:42:34 #FullDataName Suspension: Shock Absorber`Big Car Damping` #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 FD_TABLE LINEAR -1410, -5008 -720, -3436 -390, -2324 -210, -1792 -90, -1008 -20, -228 20, 228 90, 596 200, 784 390, 1100 760, 1796 1160, 2560 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Shock Absorber; Big Car Damping #Library : Suspension: Shock Absorber #DataSet : Big Car Damping #Category: #FileID : Shock101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Shock absorber EXIT_PARSFILE Suspensions\Shocks\Shock101.par #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx101.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 384 MX_AUX_COEFFICIENT 384 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 384 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 384 N-m/deg #Category: #FileID : AuxMx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx101.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb105.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+80 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 78, 0 79, 0 80, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -50, -10000 -49, 0 -48, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +80 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +80 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb105.par #BlueLink5 Suspension: Jounce and Rebound Stops`+80 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.8613 CMP_DAMP_COEFFICIENT 0.8681 CT_FX_COEFFICIENT -1.9e-6 CS_FY_COEFFICIENT -3.3e-5 CS_MZ_COEFFICIENT 1.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 5e-5 CI_MZ_COEFFICIENT -5.3e-5 C_LONG_COEFFICIENT 2.0e-4 C_LAT_COEFFICIENT 2.2e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.8681 CMP_RSTOP_COEFFICIENT 0.8681 ENTER_PARSFILE Suspensions\Springs\Spring109.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`34 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 34 FS_EXT_COEFFICIENT 34 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 3.0 SPRING_EXT_BETA 3.0 *SCALAR 34 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 34 N/mm #Library : Suspension: Spring #DataSet : 34 N/mm #Category: #FileID : Spring109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring109.par #BlueLink0 Suspension: Spring`34 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+80 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.8613 CMP_DAMP_COEFFICIENT 0.8681 CT_FX_COEFFICIENT -1.9e-6 CS_FY_COEFFICIENT -3.3e-5 CS_MZ_COEFFICIENT 1.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 5e-5 CI_MZ_COEFFICIENT -5.3e-5 C_LONG_COEFFICIENT 2.0e-4 C_LAT_COEFFICIENT 2.2e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.8681 CMP_RSTOP_COEFFICIENT 0.8681 #BlueLink3 Suspension: Spring`34 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS E-Class } E-Class, Sedan - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : E-Class, Sedan - Front Comp. #Category: CS E-Class #FileID : SuspCmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp111_note.txt Front spring rate chosen for a front ride frequency of 1.2 Hz and a front corner weight of 446 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp111_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp111.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Front Comp.` CS E-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin109.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`E-Class, Sedan - Front Suspension`CS E-Class iside 1 L_TRACK 1600 Y_CL_SUSP 0 M_US 90 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0.2 *TOE_R 0.2 *CAMBER_L -0.15 *CAMBER_R -0.15 R_US_STR 0.8 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive103.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_DIVE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE #RadioCtrl0 0 SUSP_DIVE_AXLE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { SLA } Front SLA - Dive Angle #Library : Suspension: Dive Angle (Caster Change) #DataSet : Front SLA - Dive Angle #Category: SLA #FileID : Dive103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive103_note.txt NOTE: Sign convention of the CS 7.01b and earlier datasets was reversed and demonstrated a pro-dive suspension. This dataset represents an anti-dive suspension. EXIT_NOTEFILE Suspensions\Dive\Dive103_note.txt EXIT_PARSFILE Suspensions\Dive\Dive103.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX103.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Front SLA - Longitudinal Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { SLA } Front SLA - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Front SLA - Longitudinal Movement #Category: SLA #FileID : SusX103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt Generic SLA Longitudinal movement vs. Jounce EXIT_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX103.par #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber103.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Front SLA - Camber Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.08171 -60, 0.996827 -50, 0.88789 -40, 0.755642 -30, 0.600569 -20, 0.422934 -10, 0.222791 0, 0 10, -0.245764 20, -0.515012 30, -0.808436 40, -1.12692 50, -1.47156 60, -1.84365 70, -2.24474 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { SLA } Front SLA - Camber Change #Library : Suspension: Camber Angle #DataSet : Front SLA - Camber Change #Category: SLA #FileID : Camber103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber103_note.txt Generic SLA Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber103_note.txt EXIT_PARSFILE Suspensions\Camber\Camber103.par #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat103.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Front SLA - Lateral Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { SLA } Front SLA - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Front SLA - Lateral Movement #Category: SLA #FileID : SusLat103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat103_note.txt Generic SLA Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat103_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat103.par #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe103.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Front SLA - Toe Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, 0.292407 -60, 0.237822 -50, 0.187561 -40, 0.141604 -30, 0.099916 -20, 0.062452 -10, 0.029164 0, 0 10, -0.025093 20, -0.046165 30, -0.063264 40, -0.076429 50, -0.085696 60, -0.091086 70, -0.09261 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { SLA } Front SLA - Toe Change #Library : Suspension: Toe Angle #DataSet : Front SLA - Toe Change #Category: SLA #FileID : Toe103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe103_note.txt Generic SLA Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe103_note.txt EXIT_PARSFILE Suspensions\Toe\Toe103.par #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -0.15 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -0.15 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS E-Class } E-Class, Sedan - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : E-Class, Sedan - Front Suspension #Category: CS E-Class #FileID : IndKin109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin109_note.txt Generic Front SLA suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin109_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin109.par #BlueLink19 Suspension: Independent System Kinematics`E-Class, Sedan - Front Suspension` CS E-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire109.par`08-02-2011`16:42:33 #FullDataName Tire`225/60 R18`Touring Tires X_LENGTH 364 Z_LENGTH 364 Y_LENGTH 225 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup108.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Euro Sedan Tire`Tires *X_REF_LENGTH 291 *Y_REF_LENGTH 195 *Z_REF_LENGTH 291 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL136.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive ENTER_PARSFILE Animator\Cameras\Camera103.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Top)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Fixed ENTER_PARSFILE Animator\Frames\Frame103.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Fixed` ADD_REFERENCE_FRAME Fixed #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll LOG_ENTRY Used Dataset: Animator: Reference Frame; Fixed #Library : Animator: Reference Frame #DataSet : Fixed #Category: #FileID : Frame103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame103.par #BlueLink0 Animator: Reference Frame`Fixed` ` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Fixed SET_LOOKPOINT_X -1.2 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 180 SET_ELEVATION 90 SET_DISTANCE 35 *SET_LOOKPOINT_X -1.2 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 180 *SET_ELEVATION 90 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Top) #Library : Animator: Camera Setup #DataSet : Shape Preview (Top) #Category: Shape Preview #FileID : Camera103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera103.par #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Tire #Library : Animator: Shape File Link #DataSet : Euro. Sedan Tire #Category: Tires #FileID : AniSTL136 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL136.par #BlueLink0 Animator: Shape File Link`Euro. Sedan Tire` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL137.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\wheel.obj #ENDMYellow SET_COLOR .62 .62 .62 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 40 *IMAGE_FIT_MODE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Wheel #Library : Animator: Shape File Link #DataSet : Euro. Sedan Wheel #Category: Tires #FileID : AniSTL137 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL137.par #BlueLink1 Animator: Shape File Link`Euro. Sedan Wheel` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL138.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y 0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Stripe #Library : Animator: Shape File Link #DataSet : Euro. Sedan Stripe #Category: Tires #FileID : AniSTL138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL138.par #BlueLink2 Animator: Shape File Link`Euro. Sedan Stripe` Tires` , Shape File x_ref_length 291 y_ref_length 195 z_ref_length 291 ENTER_PARSFILE Animator\Cameras\Camera104.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Side)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview ENTER_PARSFILE Animator\Frames\Frame101.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Yaw for Shape Preview`Shape Preview ADD_REFERENCE_FRAME Shape Preview Yaw for Shape Preview #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_YAW_NAME Yaw WRT_Yaw ANI_Yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Shape Preview } Yaw for Shape Preview #Library : Animator: Reference Frame #DataSet : Yaw for Shape Preview #Category: Shape Preview #FileID : Frame101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame101.par #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 0 SET_ELEVATION 0 SET_DISTANCE 35 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 0 *SET_ELEVATION 0 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Side) #Library : Animator: Camera Setup #DataSet : Shape Preview (Side) #Category: Shape Preview #FileID : Camera104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera104.par #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Euro Sedan Tire #Library : Animator: Shape Assembly #DataSet : Euro Sedan Tire #Category: Tires #FileID : StlGroup108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup108.par #BlueLink4 Animator: Shape Assembly`Euro Sedan Tire` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 225 ENTER_PARSFILE Animator\Sound\Set\SndSet111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 800 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 800; units = kg; #ENDMYellow ENTER_PARSFILE Animator\Sound\Sample\SndSmp112.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Lateral Slip`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 0.7 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod129.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Force Effects`Tire Lateral Slip Sound Modifiers #MiscYellow0 define_output mod1_<> = abs(fy_<>) /(rated_load_<> * 9.80665) * MuY_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod1_<> SOUNDMOD_INPUT_MIN 0.3 SOUNDMOD_INPUT_LOW 0.6 SOUNDMOD_INPUT_HIGH 0.9 SOUNDMOD_INPUT_MAX 1.2 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod1_<> ANI_mod1_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Lateral Slip Sound Modifiers } Loudness: Lateral Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Force Effects #Category: Tire Lateral Slip Sound Modifiers #FileID : SndMod129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod129.par #BlueLink0 Animator: Sound Modifier`Loudness: Lateral Force Effects` Tire Lateral Slip Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod130.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod2_<> = sin(min(abs(alphL_<>), 15 / dr) * abs(vxcen<>); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod2_<> SOUNDMOD_INPUT_MIN 0.1 SOUNDMOD_INPUT_LOW 0.5 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.5 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_mod2_<> ANI_mod2_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Lateral Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod130.par #BlueLink1 Animator: Sound Modifier`Loudness: Lateral Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Lateral Slip #Library : Animator: Sound Sample #DataSet : Lateral Slip #Category: Tire Sounds #FileID : SndSmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp112.par #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp113.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wheelspin / Brake Lockup`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod131.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Force Effects`Wheelspin / Lockup Sound Modifiers #MiscYellow0 define_output mod3_<> = abs(fx_<>) / (rated_load_<> * 9.80665) * MuX_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod3_<> SOUNDMOD_INPUT_MIN 0.2 SOUNDMOD_INPUT_LOW 0.4 SOUNDMOD_INPUT_HIGH 0.6 SOUNDMOD_INPUT_MAX 0.8 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod3_<> ANI_mod3_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wheelspin / Lockup Sound Modifiers } Loudness: Longitudinal Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Force Effects #Category: Wheelspin / Lockup Sound Modifiers #FileID : SndMod131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod131.par #BlueLink0 Animator: Sound Modifier`Loudness: Longitudinal Force Effects` Wheelspin / Lockup Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod132.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod4_<> = min(abs(KappL_<>), 1.0) * abs(vxcen<>) ; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod4_<> SOUNDMOD_INPUT_MIN 1.5 SOUNDMOD_INPUT_LOW 2.0 SOUNDMOD_INPUT_HIGH 2.5 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.3333 SOUNDMOD_OUTPUT_HIGH 0.6667 SOUNDMOD_OUTPUT_MAX 1.0 WRT_mod4_<> ANI_mod4_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Longitudinal Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod132.par #BlueLink1 Animator: Sound Modifier`Loudness: Longitudinal Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Wheelspin / Brake Lockup #Library : Animator: Sound Sample #DataSet : Wheelspin / Brake Lockup #Category: Tire Sounds #FileID : SndSmp113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp113.par #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 800 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 800 kg Rated Load #Category: Tire Sounds #FileID : SndSet111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet111.par #BlueLink13 Animator: Sound Set`Tire Sounds - 800 kg Rated Load` Tire Sounds` , Animator RRE 353 R0 364 FZ_TIRE_COEFFICIENT 278 FZ_MAX 100000 IT 0 L_RELAX_X 38 L_RELAX_Y 764 VLOW_ALPHA 5 RR_C 0.0041 RR_V 0.00003 RR_FX 1 OPT_TIRE_COMB 1 R_TIRE_COMB 1.1 ENTER_PARSFILE Tires\Mz\TireMz107.par`08-02-2011`16:42:32 #FullDataName Tire: Aligning Moment`225/60 R18`Touring Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.5, 13.74, 26.59, 38.42, 49.18, 58.84, 67.4, 74.85, 81.2 1, 27.52, 53.29, 77.08, 98.77, 118.28, 135.59, 150.69, 163.58 1.5, 38.52, 75, 109.07, 140.54, 169.23, 195.05, 217.91, 237.76 2, 42.77, 84.07, 123.55, 160.94, 195.99, 228.45, 258.1, 284.74 2.5, 40.05, 79.6, 118.43, 156.31, 192.98, 228.18, 261.6, 292.94 3, 33.77, 67.76, 101.91, 136.11, 170.21, 203.99, 237.23, 269.64 3.5, 26.96, 54.52, 82.71, 111.52, 140.91, 170.77, 200.97, 231.34 4, 21, 42.71, 65.25, 88.66, 112.96, 138.12, 164.12, 190.86 4.5, 16.15, 33.03, 50.78, 69.47, 89.15, 109.84, 131.57, 154.32 5, 12.31, 25.32, 39.18, 53.96, 69.73, 86.54, 104.45, 123.47 5.5, 9.27, 19.2, 29.94, 41.55, 54.11, 67.68, 82.33, 98.09 6, 6.85, 14.32, 22.54, 31.58, 41.53, 52.43, 64.36, 77.37 6.5, 4.9, 10.38, 16.56, 23.52, 31.32, 40.03, 49.71, 60.42 7, 3.3, 7.16, 11.68, 16.92, 22.96, 29.86, 37.67, 46.45 7.5, 1.99, 4.5, 7.63, 11.46, 16.04, 21.43, 27.68, 34.85 8, 0.89, 2.27, 4.25, 6.89, 10.24, 14.36, 19.3, 25.11 8.5, -0.04, 0.39, 1.39, 3.03, 5.34, 8.39, 12.21, 16.87 9, -0.84, -1.22, -1.05, -0.28, 1.15, 3.28, 6.16, 9.83 9.5, -1.52, -2.6, -3.15, -3.12, -2.46, -1.12, 0.94, 3.76 10, -2.12, -3.81, -4.98, -5.59, -5.59, -4.94, -3.59, -1.51 10.5, -2.64, -4.86, -6.59, -7.76, -8.33, -8.28, -7.55, -6.12 11, -3.1, -5.79, -8, -9.66, -10.75, -11.23, -11.05, -10.18 11.5, -3.51, -6.62, -9.25, -11.36, -12.9, -13.84, -14.14, -13.77 12, -3.88, -7.36, -10.37, -12.87, -14.81, -16.17, -16.9, -16.98 12.5, -4.21, -8.02, -11.38, -14.22, -16.53, -18.26, -19.38, -19.86 13, -4.5, -8.62, -12.28, -15.45, -18.08, -20.14, -21.6, -22.44 13.5, -4.77, -9.16, -13.1, -16.55, -19.48, -21.84, -23.62, -24.78 14, -5.02, -9.65, -13.85, -17.56, -20.75, -23.39, -25.45, -26.91 14.5, -5.24, -10.1, -14.53, -18.48, -21.91, -24.81, -27.13, -28.85 15, -5.44, -10.52, -15.16, -19.32, -22.98, -26.1, -28.66, -30.62 15.5, -5.63, -10.9, -15.73, -20.1, -23.96, -27.29, -30.06, -32.25 16, -5.8, -11.25, -16.26, -20.81, -24.86, -28.38, -31.36, -33.75 16.5, -5.97, -11.57, -16.75, -21.47, -25.69, -29.4, -32.55, -35.14 17, -6.11, -11.87, -17.21, -22.08, -26.47, -30.34, -33.66, -36.42 17.5, -6.25, -12.15, -17.63, -22.65, -27.19, -31.21, -34.69, -37.62 18, -6.38, -12.41, -18.02, -23.18, -27.86, -32.02, -35.65, -38.73 18.5, -6.5, -12.65, -18.39, -23.68, -28.48, -32.78, -36.55, -39.76 19, -6.62, -12.88, -18.74, -24.14, -29.07, -33.49, -37.39, -40.73 19.5, -6.72, -13.1, -19.06, -24.58, -29.62, -34.16, -38.17, -41.64 20, -6.82, -13.3, -19.36, -24.99, -30.13, -34.78, -38.91, -42.49 20.5, -6.92, -13.49, -19.65, -25.37, -30.62, -35.37, -39.6, -43.29 21, -7.01, -13.67, -19.92, -25.73, -31.08, -35.92, -40.25, -44.05 21.5, -7.09, -13.83, -20.18, -26.08, -31.51, -36.45, -40.87, -44.76 22, -7.17, -13.99, -20.42, -26.4, -31.92, -36.94, -41.45, -45.44 22.5, -7.24, -14.15, -20.64, -26.71, -32.3, -37.41, -42.01, -46.07 23, -7.32, -14.29, -20.86, -27, -32.67, -37.85, -42.53, -46.68 23.5, -7.38, -14.42, -21.07, -27.27, -33.02, -38.28, -43.03, -47.25 24, -7.45, -14.55, -21.26, -27.54, -33.35, -38.68, -43.5, -47.8 24.5, -7.51, -14.68, -21.45, -27.79, -33.66, -39.06, -43.95, -48.31 25, -7.57, -14.8, -21.63, -28.03, -33.97, -39.42, -44.38, -48.81 26, -7.57, -14.8, -21.63, -28.03, -33.97, -39.42, -44.38, -48.81 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Touring Tires } 225/60 R18 #Library : Tire: Aligning Moment #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireMz107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz107.par #BlueLink0 Tire: Aligning Moment`225/60 R18` Touring Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy107.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`225/60 R18`Touring Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.5, 276.28, 542.17, 796.11, 1037.22, 1264.9, 1478.75, 1678.46, 1863.81 1, 543.78, 1067.29, 1567.45, 2042.53, 2491.36, 2913.12, 3307.21, 3673.19 1.5, 794.63, 1560.03, 2291.71, 2987.17, 3644.68, 4263.02, 4841.27, 5378.78 2, 1022.61, 2008.24, 2951.2, 3848.24, 4697.14, 5496.28, 6244.46, 6940.76 2.5, 1223.67, 2403.99, 3534.24, 4610.54, 5630.23, 6591.31, 7492.28, 8331.97 3, 1396.06, 2743.8, 4035.64, 5267.18, 6435.36, 7537.86, 8572.88, 9539 3.5, 1540.13, 3028.22, 4456.04, 5818.77, 7113, 8336.12, 9486.09, 10561.24 4, 1657.77, 3260.87, 4800.56, 6271.72, 7670.65, 8994.49, 10240.97, 11408.22 4.5, 1751.86, 3447.27, 5077.17, 6636.17, 8120.35, 9526.68, 10852.66, 12096.26 5, 1825.68, 3593.81, 5295.1, 6923.97, 8476.36, 9949.04, 11339.39, 12645.19 5.5, 1882.54, 3706.94, 5463.74, 7147.24, 8753.26, 10278.46, 11720.06, 13075.75 6, 1925.52, 3792.65, 5591.84, 7317.32, 8964.81, 10530.87, 12012.67, 13407.74 6.5, 1957.31, 3856.21, 5687.13, 7444.25, 9123.23, 10720.57, 12233.34, 13659.03 7, 1980.19, 3902.12, 5756.22, 7536.65, 9239.02, 10859.81, 12396.02, 13845.08 7.5, 1996.04, 3934.07, 5804.56, 7601.65, 9320.93, 10958.85, 12512.39, 13978.92 8, 2006.38, 3955.09, 5836.61, 7645.08, 9376.12, 11026.13, 12592.07, 14071.29 8.5, 2012.44, 3967.57, 5855.92, 7671.64, 9410.35, 11068.44, 12642.86, 14130.95 9, 2015.19, 3973.45, 5865.35, 7685.08, 9428.24, 11091.25, 12671.03, 14164.92 9.5, 2015.4, 3974.24, 5867.15, 7688.35, 9433.46, 11098.89, 12681.58, 14178.84 10, 2013.65, 3971.12, 5863.1, 7683.82, 9428.92, 11094.83, 12678.48, 14177.19 10.5, 2010.43, 3965.04, 5854.58, 7673.31, 9416.9, 11081.77, 12664.87, 14163.51 11, 2006.09, 3956.73, 5842.69, 7658.29, 9399.2, 11061.86, 12643.23, 14140.62 11.5, 2000.94, 3946.76, 5828.3, 7639.9, 9377.24, 11036.8, 12615.52, 14110.74 12, 1995.19, 3935.59, 5812.08, 7619.02, 9352.14, 11007.91, 12583.3, 14075.63 12.5, 1989.02, 3923.55, 5794.54, 7596.36, 9324.76, 10976.24, 12547.76, 14036.68 13, 1982.57, 3910.94, 5776.1, 7572.47, 9295.8, 10942.61, 12509.88, 13994.97 13.5, 1975.94, 3897.96, 5757.09, 7547.77, 9265.79, 10907.67, 12470.41, 13951.37 14, 1969.22, 3884.77, 5737.75, 7522.61, 9235.15, 10871.92, 12429.93, 13906.55 14.5, 1962.46, 3871.51, 5718.27, 7497.23, 9204.21, 10835.75, 12388.91, 13861.05 15, 1955.73, 3858.28, 5698.81, 7471.85, 9173.21, 10799.49, 12347.71, 13815.27 15.5, 1949.05, 3845.15, 5679.48, 7446.61, 9142.37, 10763.35, 12306.61, 13769.55 16, 1942.46, 3832.17, 5660.38, 7421.64, 9111.82, 10727.53, 12265.82, 13724.13 16.5, 1935.97, 3819.4, 5641.55, 7397.02, 9081.68, 10692.16, 12225.52, 13679.2 17, 1929.6, 3806.86, 5623.06, 7372.82, 9052.04, 10657.35, 12185.83, 13634.92 17.5, 1923.37, 3794.57, 5604.94, 7349.1, 9022.96, 10623.17, 12146.83, 13591.38 18, 1917.28, 3782.56, 5587.21, 7325.88, 8994.48, 10589.68, 12108.6, 13548.67 18.5, 1911.33, 3770.83, 5569.89, 7303.18, 8966.64, 10556.93, 12071.18, 13506.85 19, 1905.53, 3759.38, 5552.99, 7281.02, 8939.44, 10524.92, 12034.6, 13465.95 19.5, 1899.87, 3748.23, 5536.51, 7259.41, 8912.91, 10493.68, 11998.88, 13425.99 20, 1894.37, 3737.36, 5520.45, 7238.35, 8887.04, 10463.21, 11964.03, 13386.99 20.5, 1889.01, 3726.78, 5504.81, 7217.83, 8861.82, 10433.51, 11930.05, 13348.95 21, 1883.79, 3716.48, 5489.59, 7197.84, 8837.27, 10404.57, 11896.93, 13311.86 21.5, 1878.72, 3706.46, 5474.77, 7178.39, 8813.35, 10376.38, 11864.66, 13275.71 22, 1873.78, 3696.71, 5460.34, 7159.45, 8790.07, 10348.93, 11833.23, 13240.49 22.5, 1868.98, 3687.23, 5446.31, 7141.02, 8767.4, 10322.2, 11802.62, 13206.18 23, 1864.31, 3677.99, 5432.65, 7123.08, 8745.34, 10296.17, 11772.8, 13172.75 23.5, 1859.76, 3669.01, 5419.36, 7105.62, 8723.86, 10270.83, 11743.76, 13140.19 24, 1855.34, 3660.27, 5406.42, 7088.63, 8702.94, 10246.15, 11715.48, 13108.47 24.5, 1851.04, 3651.76, 5393.83, 7072.08, 8682.58, 10222.12, 11687.93, 13077.57 25, 1846.85, 3643.48, 5381.57, 7055.96, 8662.75, 10198.71, 11661.1, 13047.47 26, 1846.85, 3643.48, 5381.57, 7055.96, 8662.75, 10198.71, 11661.1, 13047.47 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Touring Tires } 225/60 R18 #Library : Tire: Lateral Force #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireFy107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy107.par #BlueLink1 Tire: Lateral Force`225/60 R18` Touring Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx107.par`08-02-2011`16:42:28 #FullDataName Tire: Longitudinal Force`225/60 R18`Touring Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.02, 862.81, 1783.13, 2762.04, 3794.59, 4873.05, 5988.03, 7129.14, 8285.48 0.04, 1405.11, 2856.38, 4345.65, 5859.21, 7381.77, 8898.09, 10393.74, 11855.5 0.06, 1683.96, 3384.43, 5089.04, 6782.93, 8451.6, 10081.79, 11661.81, 13181.59 0.08, 1827.85, 3649.23, 5451.02, 7219.83, 8943.43, 10611.08, 12213.62, 13743.29 0.1, 1906.98, 3792.03, 5642.2, 7445.59, 9191.77, 10871.81, 12478.17, 14004.57 0.12, 1953.08, 3873.7, 5749.19, 7568.78, 9323.31, 11005.08, 12607.67, 14125.76 0.14, 1980.9, 3921.81, 5810.31, 7636.48, 9392.07, 11070.27, 12665.46, 14173.03 0.16, 1997.79, 3949.97, 5844.33, 7671.56, 9424.12, 11095.9, 12681.88, 14178.04 0.18, 2007.75, 3965.55, 5861.32, 7686.27, 9433.43, 11097.23, 12673.18, 14157.7 0.2, 2013.13, 3972.81, 5867.14, 7687.73, 9428.09, 11083.11, 12648.74, 14121.81 0.22, 2015.35, 3974.42, 5865.42, 7680.34, 9413.11, 11059, 12614.36, 14076.35 0.24, 2015.35, 3972.07, 5858.5, 7666.95, 9391.71, 11028.42, 12573.74, 14025.16 0.26, 2013.76, 3966.92, 5847.96, 7649.47, 9366.06, 10993.69, 12529.34, 13970.72 0.28, 2011.02, 3959.8, 5834.91, 7629.22, 9337.64, 10956.43, 12482.8, 13914.72 0.3, 2007.45, 3951.26, 5820.11, 7607.14, 9307.51, 10917.73, 12435.27, 13858.28 0.32, 2003.28, 3941.72, 5804.15, 7583.9, 9276.39, 10878.38, 12387.52, 13802.18 0.34, 1998.68, 3931.51, 5787.42, 7559.98, 9244.83, 10838.92, 12340.11, 13746.92 0.36, 1993.78, 3920.84, 5770.24, 7535.74, 9213.2, 10799.74, 12293.41, 13692.85 0.38, 1988.68, 3909.89, 5752.83, 7511.45, 9181.77, 10761.12, 12247.67, 13640.2 0.4, 1983.44, 3898.79, 5735.37, 7487.29, 9150.75, 10723.23, 12203.05, 13589.1 0.42, 1978.13, 3887.65, 5717.98, 7463.4, 9120.27, 10686.22, 12159.68, 13539.63 0.44, 1972.79, 3876.53, 5700.76, 7439.89, 9090.44, 10650.16, 12117.59, 13491.82 0.46, 1967.46, 3865.5, 5683.77, 7416.82, 9061.31, 10615.11, 12076.84, 13445.67 0.48, 1962.16, 3854.6, 5667.07, 7394.26, 9032.94, 10581.08, 12037.42, 13401.17 0.5, 1956.92, 3843.87, 5650.7, 7372.23, 9005.34, 10548.1, 11999.32, 13358.28 0.52, 1951.74, 3833.32, 5634.68, 7350.75, 8978.52, 10516.16, 11962.53, 13316.96 0.54, 1946.64, 3822.97, 5619.03, 7329.84, 8952.5, 10485.24, 11927, 13277.16 0.56, 1941.64, 3812.84, 5603.75, 7309.5, 8927.25, 10455.32, 11892.7, 13238.82 0.58, 1936.72, 3802.94, 5588.86, 7289.72, 8902.77, 10426.39, 11859.61, 13201.89 0.6, 1931.91, 3793.26, 5574.36, 7270.51, 8879.05, 10398.4, 11827.66, 13166.31 0.62, 1927.2, 3783.82, 5560.24, 7251.85, 8856.06, 10371.34, 11796.82, 13132.02 0.64, 1922.59, 3774.61, 5546.5, 7233.73, 8833.78, 10345.16, 11767.05, 13098.97 0.66, 1918.09, 3765.62, 5533.13, 7216.15, 8812.19, 10319.85, 11738.3, 13067.1 0.68, 1913.69, 3756.87, 5520.13, 7199.08, 8791.28, 10295.36, 11710.53, 13036.36 0.7, 1909.4, 3748.34, 5507.49, 7182.5, 8771.01, 10271.67, 11683.7, 13006.7 0.72, 1905.21, 3740.03, 5495.19, 7166.42, 8751.37, 10248.74, 11657.77, 12978.07 0.74, 1901.12, 3731.93, 5483.24, 7150.8, 8732.33, 10226.54, 11632.7, 12950.42 0.76, 1897.13, 3724.05, 5471.61, 7135.64, 8713.87, 10205.05, 11608.46, 12923.72 0.78, 1893.24, 3716.37, 5460.31, 7120.91, 8695.97, 10184.23, 11585, 12897.9 0.8, 1889.45, 3708.9, 5449.31, 7106.61, 8678.6, 10164.06, 11562.3, 12872.95 0.82, 1885.74, 3701.61, 5438.62, 7092.72, 8661.76, 10144.52, 11540.33, 12848.81 0.84, 1882.13, 3694.52, 5428.22, 7079.23, 8645.4, 10125.56, 11519.04, 12825.45 0.86, 1878.61, 3687.6, 5418.09, 7066.11, 8629.53, 10107.19, 11498.41, 12802.83 0.88, 1875.18, 3680.87, 5408.24, 7053.36, 8614.12, 10089.36, 11478.42, 12780.93 0.9, 1871.82, 3674.31, 5398.66, 7040.96, 8599.14, 10072.05, 11459.04, 12759.71 0.92, 1868.55, 3667.91, 5389.32, 7028.9, 8584.6, 10055.26, 11440.24, 12739.14 0.94, 1865.36, 3661.68, 5380.23, 7017.17, 8570.46, 10038.95, 11421.99, 12719.2 0.96, 1862.25, 3655.6, 5371.38, 7005.76, 8556.71, 10023.1, 11404.28, 12699.85 0.98, 1859.21, 3649.67, 5362.76, 6994.65, 8543.34, 10007.7, 11387.08, 12681.07 1, 1856.24, 3643.89, 5354.35, 6983.83, 8530.34, 9992.73, 11370.37, 12662.85 1.02, 1856.24, 3643.89, 5354.35, 6983.83, 8530.34, 9992.73, 11370.37, 12662.85 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Touring Tires } 225/60 R18 #Library : Tire: Longitudinal Force #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireFx107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:28 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx107.par #BlueLink2 Tire: Longitudinal Force`225/60 R18` Touring Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff107.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`225/60 R18`Touring Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 784.532, -2.7453 1569.064, -6.7216 2353.596, -11.0497 3138.128, -15.5865 3922.66, -20.2695 4707.192, -25.0638 5491.724, -29.9472 6276.256, -34.9047 7060.788, -39.925 7845.32, -45 8629.852, -50.1231 9414.384, -55.2891 10198.916, -60.4937 10983.448, -65.7334 11767.98, -71.0051 12552.512, -76.3065 13337.044, -81.6351 14121.576, -86.9892 14906.108, -92.3669 15690.64, -97.767 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Touring Tires } 225/60 R18 #Library : Tire: Camber Thrust Coefficient #DataSet : 225/60 R18 #Category: Touring Tires #FileID : CamStiff107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff107.par #BlueLink3 Tire: Camber Thrust Coefficient`225/60 R18` Touring Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Touring Tires } 225/60 R18 #Library : Tire #DataSet : 225/60 R18 #Category: Touring Tires #FileID : Tire109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire109_note.txt 800 kg rated load EXIT_NOTEFILE Tires\Tire\Tire109_note.txt EXIT_PARSFILE Tires\Tire\Tire109.par #BlueLink9 Tire`225/60 R18` Touring Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`225/60 R18` Touring Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp112.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Rear Comp.`CS E-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.797 *R_SPRING_R 0.797 *R_DAMPER_L 0.797 *R_DAMPER_R 0.797 *CT_FX_L -6.3e-6 *CT_FX_R -6.3e-6 *CS_FY_L -8.3e-6 *CS_FY_R -8.3e-6 *CS_MZ_L -1.2e-4 *CS_MZ_R -1.2e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L -3.3e-5 *CI_FY_R -3.3e-5 *CI_MZ_L -5e-5 *CI_MZ_R -5e-5 *C_LONG_L 3.6e-5 *C_LONG_R 3.6e-5 *C_LAT_L 9.4e-5 *C_LAT_R 9.4e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.797 *R_JOUNCE_R 0.797 *R_REBOUND_L 0.797 *R_REBOUND_R 0.797 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx103.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 344 MX_AUX_COEFFICIENT 344 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 344 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 344 N-m/deg #Category: #FileID : AuxMx103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx103.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+70 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 68, 0 69, 0 70, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -70, -10000 -69, 0 -68, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +70 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +70 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.3e-5 CI_MZ_COEFFICIENT -5e-5 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 ENTER_PARSFILE Suspensions\Springs\Spring110.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`46 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 46 FS_EXT_COEFFICIENT 46 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 3.0 SPRING_EXT_BETA 3.0 *SCALAR 46 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 46 N/mm #Library : Suspension: Spring #DataSet : 46 N/mm #Category: #FileID : Spring110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring110.par #BlueLink0 Suspension: Spring`46 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.3e-5 CI_MZ_COEFFICIENT -5e-5 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 #BlueLink3 Suspension: Spring`46 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS E-Class } E-Class, Sedan - Rear Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : E-Class, Sedan - Rear Comp. #Category: CS E-Class #FileID : SuspCmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp112_note.txt Rear spring rate chosen for a rear ride frequency of 1.4 Hz and a rear corner weight of 380 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp112_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp112.par #BlueLink17 Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Rear Comp.` CS E-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin110.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`E-Class, Sedan - Rear Suspension`CS E-Class iside 1 L_TRACK 1600 Y_CL_SUSP 0 M_US 90 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0.1 *TOE_R 0.1 *CAMBER_L 0 *CAMBER_R 0 R_US_STR 0.1 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive102.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive`5-Link Rear #RingCtrl0 CONSTANT *SCALAR 0 SUSP_DIVE_CONSTANT 0 #RadioCtrl0 0 SUSP_DIVE_AXLE_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { 5-Link Rear } Rear 5-Link - No Dive #Library : Suspension: Dive Angle (Caster Change) #DataSet : Rear 5-Link - No Dive #Category: 5-Link Rear #FileID : Dive102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table EXIT_PARSFILE Suspensions\Dive\Dive102.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX102.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement`5-Link Rear #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, 2.6892 -60, 1.76827 -50, 1.01123 -40, 0.426265 -30, 0.022328 -20, -0.190752 -10, -0.202151 0, 0 10, 0.428603 20, 1.09748 30, 2.02114 40, 3.21439 50, 4.69179 60, 6.46687 70, 8.5513 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, 2.6892 -60, 1.76827 -50, 1.01123 -40, 0.426265 -30, 0.022328 -20, -0.190752 -10, -0.202151 0, 0 10, 0.428603 20, 1.09748 30, 2.02114 40, 3.21439 50, 4.69179 60, 6.46687 70, 8.5513 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { 5-Link Rear } Rear 5-Link - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Rear 5-Link - Longitudinal Movement #Category: 5-Link Rear #FileID : SusX102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement EXIT_PARSFILE Suspensions\Longitudinal\SusX102.par #BlueLink1 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber102.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Rear 5-Link - Camber Change`5-Link Rear #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.66479 -60, 1.43877 -50, 1.21143 -40, 0.981031 -30, 0.746032 -20, 0.505036 -10, 0.25676 0, 0 10, -0.266403 20, -0.543604 30, -0.832791 40, -1.13524 50, -1.45237 60, -1.78583 70, -2.13754 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { 5-Link Rear } Rear 5-Link - Camber Change #Library : Suspension: Camber Angle #DataSet : Rear 5-Link - Camber Change #Category: 5-Link Rear #FileID : Camber102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber102_note.txt Generic 5-Link rear Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber102_note.txt EXIT_PARSFILE Suspensions\Camber\Camber102.par #BlueLink2 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat102.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Rear 5-Link - Lateral Movement`5-Link Rear #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 5.34878 -60, 3.82136 -50, 2.55534 -40, 1.54581 -30, 0.788587 -20, 0.280222 -10, 0.018009 0, 0 10, 0.22505 20, 0.692872 30, 1.40412 40, 2.36046 50, 3.56474 60, 5.02106 70, 6.73495 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 5.34878 -60, 3.82136 -50, 2.55534 -40, 1.54581 -30, 0.788587 -20, 0.280222 -10, 0.018009 0, 0 10, 0.22505 20, 0.692872 30, 1.40412 40, 2.36046 50, 3.56474 60, 5.02106 70, 6.73495 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { 5-Link Rear } Rear 5-Link - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Rear 5-Link - Lateral Movement #Category: 5-Link Rear #FileID : SusLat102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat102_note.txt Generic 5-Link rear Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat102_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat102.par #BlueLink3 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe102.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Rear 5-Link - Toe Change`5-Link Rear #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, -1.02057 -60, -0.828098 -50, -0.65623 -40, -0.501756 -30, -0.361641 -20, -0.233037 -10, -0.113294 0, 0 10, 0.108974 20, 0.215401 30, 0.320605 40, 0.425353 50, 0.529714 60, 0.632927 70, 0.733253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { 5-Link Rear } Rear 5-Link - Toe Change #Library : Suspension: Toe Angle #DataSet : Rear 5-Link - Toe Change #Category: 5-Link Rear #FileID : Toe102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe102_note.txt Generic 5-Link Rear Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe102_note.txt EXIT_PARSFILE Suspensions\Toe\Toe102.par #BlueLink4 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.1 A_CAMBER 0 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Right wheel X #BlueLink7 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.1 A_CAMBER 0 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS E-Class } E-Class, Sedan - Rear Suspension #Library : Suspension: Independent System Kinematics #DataSet : E-Class, Sedan - Rear Suspension #Category: CS E-Class #FileID : IndKin110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin110_note.txt Generic 5-Link rear suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin110_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin110.par #BlueLink20 Suspension: Independent System Kinematics`E-Class, Sedan - Rear Suspension` CS E-Class` , Rear kinematics * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`225/60 R18` Touring Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`225/60 R18` Touring Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass106.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`E-Class, Sedan Sprung Mass`CS E-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 3050 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 4250 H_H 500 H_CG_SU 530 LX_AXLE 3050 LX_CG_SU 1400 M_SU 1650 IXX_SU 928.1 IYY_SU 2788.5 IZZ_SU 3234.0 IXZ_SU 0 RX_SGUI 0.750 RY_SGUI 1.300 RZ_SGUI 1.400 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1480 Y_LENGTH 1880 *HWC_LF 320 *HWC_RF 320 *HWC_LR 300 *HWC_RR 300 H_WC 300 iside 2 H_WC 300 iaxle 1 iside 1 H_WC 320 iside 2 H_WC 320 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS E-Class } E-Class, Sedan Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : E-Class, Sedan Sprung Mass #Category: CS E-Class #FileID : SprMass106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass106.par #BlueLink0 Vehicle: Sprung Mass`E-Class, Sedan Sprung Mass` CS E-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero105.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`E-Class, Sedan Aero`CS E-Class #CheckBox0 0 X_REF_AERO -1525 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 3050 AREA_AERO 2.8 D_AIR 1.206 ENTER_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FX_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.45 -160, -0.45 -90, 0 -20, 0.325 0, 0.3 20, 0.325 90, 0 160, -0.45 180, -0.45 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fx (Drag) Coefficient; Drag Coefficient = 0.30 #Library : Aerodynamics: Fx (Drag) Coefficient #DataSet : Drag Coefficient = 0.30 #Category: #FileID : AirCFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Drag vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt A nominal drag coefficent of 0.3 is typical of contemporary mid-size sedans, such as Honda Accord, Toyota Camry, and Ford Fusion. The drag coefficient typically increases a few percent as the vehicle develops an aerodynamic sidelsip angle, peaking around 20 degrees. Drag reduces as sidelip increases because the component of the airspeed in the vehicle X direction reduces. EXIT_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force ENTER_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FY_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.5 0, 0 90, 0.5 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fy (Side Force) Coefficient; Side Force Coefficient = 0.5 at 90 deg #Library : Aerodynamics: Fy (Side Force) Coefficient #DataSet : Side Force Coefficient = 0.5 at 90 deg #Category: #FileID : AirCFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aero side force vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt The side force coefficient is typically larger then the drag coefficent, because the width of the vehiicle is less than the length, contirbuting to drag in the lateral direction. Also, the calculation of the coefficient is based on the projected frontal area of the car, while the side force is developed against the larger side area. EXIT_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force ENTER_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par`08-03-2011`08:02:01 #FullDataName Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FZ_AERO_SHAPING_TABLE SPLINE_FLAT -180, 0.4 -135, 0.45 -90, 0.35 -20, 0.185 0, 0.18 20, 0.185 90, 0.35 135, 0.45 180, 0.4 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fz (Lift) Coefficient; Lift Coefficient = 0.18 #Library : Aerodynamics: Fz (Lift) Coefficient #DataSet : Lift Coefficient = 0.18 #Category: #FileID : AirCFz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:01 #VehCode Lift vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt Nearly all passenger cars develop a small positive lift force at highway speeeds. EXIT_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force ENTER_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par`08-02-2011`16:43:55 #FullDataName Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MX_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.3 0, 0 90, 0.3 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mx (Roll Moment) Coefficient; Roll Moment Coefficient = 0.3 at 90 deg #Library : Aerodynamics: Mx (Roll Moment) Coefficient #DataSet : Roll Moment Coefficient = 0.3 at 90 deg #Category: #FileID : AirCMx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Aero Mx vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment ENTER_PARSFILE Aerodynamics\Aero_My\AirCMy104.par`08-03-2011`08:02:56 #FullDataName Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 MY_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.25 -160, -0.25 -90, 0 -20, 0.17 0, 0.15 20, 0.17 90, 0 160, -0.25 180, -0.25 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: My (Pitch Moment) Coefficient; Pitch Moment Coefficient = -0.15 #Library : Aerodynamics: My (Pitch Moment) Coefficient #DataSet : Pitch Moment Coefficient = -0.15 #Category: #FileID : AirCMy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:56 #VehCode Aero My vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_My\AirCMy104.par #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment ENTER_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par`08-03-2011`08:03:05 #FullDataName Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MZ_AERO_SHAPING_TABLE SPLINE -180, 0 -90, 0.05 0, 0 90, -0.05 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mz (Yaw Moment) Coefficient; Yaw Moment Coefficent = 0.05 at 90 deg #Library : Aerodynamics: Mz (Yaw Moment) Coefficient #DataSet : Yaw Moment Coefficent = 0.05 at 90 deg #Category: #FileID : AirCMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:03:05 #VehCode Aero Mz vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS E-Class } E-Class, Sedan Aero #Library : Aerodynamics: Basic #DataSet : E-Class, Sedan Aero #Category: CS E-Class #FileID : Aero105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero105_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero105_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero105.par #BlueLink1 Aerodynamics: Basic`E-Class, Sedan Aero` CS E-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh105.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`E-Class, Sedan`E-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 3048 OBJ_Y_LENGTH 1880 OBJ_Z_LENGTH 1480 *DZ_V 0 *LAT_WC 1600 *LAT_WC_2 1600 *HWC 375 *WHEEL_RATIO 1.1 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X 0 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X -3.048 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X -3.048 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.35625 WRITE_ADD_REFERENCE_FRAME_SHADOW ENTER_PARSFILE Animator\STL\AniSTL104.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Vehicle Shadow Shape`Vehicle Shadow #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\vehicle_shadows\shadow.obj #ENDMYellow SET_COLOR 0.125 0.125 0.125 X_REF_LENGTH 2690 Y_REF_LENGTH 1900 Z_REF_LENGTH 1220 *TRANSPARENCY 0.8 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.8 show_front on show_back off #MiscYellow0 tranclucent_fix on #ENDMYellow #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Vehicle Shadow } Vehicle Shadow Shape #Library : Animator: Shape File Link #DataSet : Vehicle Shadow Shape #Category: Vehicle Shadow #FileID : AniSTL104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL104.par #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup111.par`08-02-2011`16:43:38 #FullDataName Animator: Shape Assembly`E-Class, Sedan`CS E-Class *COLOR .36 .117 .117 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.25 *X_REF_LENGTH 2711 *Y_REF_LENGTH 1725 *Z_REF_LENGTH 1400 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 0 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL128.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Body`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\body.obj #ENDMYellow SET_COLOR 0 0 .6 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Body #Library : Animator: Shape File Link #DataSet : European Sedan: Body #Category: CS European Sedan #FileID : AniSTL128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL128.par #BlueLink0 Animator: Shape File Link`European Sedan: Body` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL129.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Details`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\details.obj #ENDMYellow SET_COLOR 0.753 0.753 0.753 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Details #Library : Animator: Shape File Link #DataSet : European Sedan: Details #Category: CS European Sedan #FileID : AniSTL129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL129.par #BlueLink1 Animator: Shape File Link`European Sedan: Details` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL130.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Windows`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\windows.obj #ENDMYellow SET_COLOR 0 0 0 *SPECULAR 1 *TRANSPARENCY 0.7 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 0.7 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Windows #Library : Animator: Shape File Link #DataSet : European Sedan: Windows #Category: CS European Sedan #FileID : AniSTL130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL130.par #BlueLink2 Animator: Shape File Link`European Sedan: Windows` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL131.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Interior Trim`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\interior_trim.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Interior Trim #Library : Animator: Shape File Link #DataSet : European Sedan: Interior Trim #Category: CS European Sedan #FileID : AniSTL131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL131.par #BlueLink3 Animator: Shape File Link`European Sedan: Interior Trim` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL132.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Steering Wheel`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\steering_wheel.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Steering Wheel #Library : Animator: Shape File Link #DataSet : European Sedan: Steering Wheel #Category: CS European Sedan #FileID : AniSTL132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL132.par #BlueLink4 Animator: Shape File Link`European Sedan: Steering Wheel` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL133.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Seats`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\seats.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Seats #Library : Animator: Shape File Link #DataSet : European Sedan: Seats #Category: CS European Sedan #FileID : AniSTL133 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL133.par #BlueLink5 Animator: Shape File Link`European Sedan: Seats` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL134.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Driver`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\driver\driver.obj #ENDMYellow SET_COLOR 0.69 0.69 0.69 *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Driver #Library : Animator: Shape File Link #DataSet : European Sedan: Driver #Category: CS European Sedan #FileID : AniSTL134 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL134.par #BlueLink13 Animator: Shape File Link`European Sedan: Driver` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 x_ref_length 2711 y_ref_length 1725 z_ref_length 1400 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS E-Class } E-Class, Sedan #Library : Animator: Shape Assembly #DataSet : E-Class, Sedan #Category: CS E-Class #FileID : StlGroup111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:38 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup111.par #BlueLink1 Animator: Shape Assembly`E-Class, Sedan` CS E-Class` , Vehicle body ENTER_PARSFILE Animator\Sound\Set\SndSet105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Gasoline Engine Vehicle`General Vehicle Sounds ENTER_PARSFILE Animator\Sound\Sample\SndSmp110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power Off`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_0.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod124.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_brake_torque -50; ! maximum engine braking torque define_output v_mod2 = if_gt_0_then(m_engout, 0, pow(m_engout/max_brake_torque, 0.5)); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod2 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod2 ANI_v_mod2 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod124.par #BlueLink0 Animator: Sound Modifier`Power Off Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod125.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 4000 SOUNDMOD_INPUT_HIGH 8000 SOUNDMOD_INPUT_MAX 12000 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod125 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod125.par #BlueLink1 Animator: Sound Modifier`Power Off Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 ENTER_PARSFILE Animator\Sound\Modifier\SndMod126.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Frequency with RPM`Gas Engine Sound Modifiers #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Frequency with RPM #Library : Animator: Sound Modifier #DataSet : Frequency with RPM #Category: Gas Engine Sound Modifiers #FileID : SndMod126 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt This modifier is based on a recording of a 4 cyl engine at 3500 RPM EXIT_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod126.par #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power Off #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power Off #Category: Gas Engine Sounds #FileID : SndSmp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt This sound set uses a sample recorded at closed throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp110.par #BlueLink0 Animator: Sound Sample`4 Cyl. - Power Off` Gas Engine Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power On`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_1.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod127.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_torque 265 define_output v_mod1 = if_gt_0_then(m_engout, pow(m_engout/max_torque, 0.5), 0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod1 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod1 ANI_v_mod1 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod127 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt This modifer is to be applied to power-on conditions, i.e, when the engine torque is positive. EXIT_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod127.par #BlueLink0 Animator: Sound Modifier`Power On Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod128.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod128.par #BlueLink1 Animator: Sound Modifier`Power On Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power On #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power On #Category: Gas Engine Sounds #FileID : SndSmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt This sound set uses a sample recorded at wide open throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp111.par #BlueLink1 Animator: Sound Sample`4 Cyl. - Power On` Gas Engine Sounds` , Sample 2 ENTER_PARSFILE Animator\Sound\Sample\SndSmp105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wind Noise`Wind Noise ADD_3D_SOUND Animator\Audio\Environment\Wind_1_Mono.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 0.3 SOUND_VOL_MIN 0.01 SOUND_VOL_MAX 9.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 9.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod122.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_parameter air_speed_ref 50; units = km/h; define_output v_mod3 = pow(vAir/air_speed_ref, 3.0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod3 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_v_mod3 ANI_v_mod3 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Loudness: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod122.par #BlueLink0 Animator: Sound Modifier`Loudness: Speed Effect` Wind Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod123.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Frequency: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_output v_mod4 = pow(vAir/air_speed_ref, 0.5); #ENDMYellow #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod4 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_v_mod4 ANI_v_mod4 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Frequency: Speed Effect #Library : Animator: Sound Modifier #DataSet : Frequency: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod123.par #BlueLink1 Animator: Sound Modifier`Frequency: Speed Effect` Wind Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Wind Noise } Wind Noise #Library : Animator: Sound Sample #DataSet : Wind Noise #Category: Wind Noise #FileID : SndSmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp105.par #BlueLink2 Animator: Sound Sample`Wind Noise` Wind Noise` , Sample 3 LOG_ENTRY Used Dataset: Animator: Sound Set; { General Vehicle Sounds } Gasoline Engine Vehicle #Library : Animator: Sound Set #DataSet : Gasoline Engine Vehicle #Category: General Vehicle Sounds #FileID : SndSet105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set ENTRY_NOTEFILE Animator\Sound\Set\SndSet105_note.txt The sound samples are based on a 4 cylinder engine. The frequency can be scaled for a different number of cylinders by setting the ncyls parameter here. EXIT_NOTEFILE Animator\Sound\Set\SndSet105_note.txt EXIT_PARSFILE Animator\Sound\Set\SndSet105.par #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL151.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Brake Lights (E-Class)`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\brakes_on.obj #ENDMYellow SET_COLOR 1 .8 .8 SET_SCALE_X 1 SET_SCALE_Y 1.005 SET_SCALE_Z 1 SET_OFFSET_X -0.02 SET_OFFSET_Y 0 SET_OFFSET_Z 0.25 X_REF_LENGTH 2711 Y_REF_LENGTH 1725 Z_REF_LENGTH 1400 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Brake Lights (E-Class) #Library : Animator: Shape File Link #DataSet : European Sedan: Brake Lights (E-Class) #Category: CS European Sedan #FileID : AniSTL151 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL151.par #BlueLink3 Animator: Shape File Link`European Sedan: Brake Lights (E-Class)` CS European Sedan` , Brake lights WRITE_REFERENCE_FRAME_SIZE ENTER_PARSFILE Animator\Cameras\Camera101.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Vehicle Pictures`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 1 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 230 SET_ELEVATION 6 SET_DISTANCE 12 *SET_LOOKPOINT_X 1 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 230 *SET_ELEVATION 6 *SET_DISTANCE 12 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Vehicle Pictures #Library : Animator: Camera Setup #DataSet : Vehicle Pictures #Category: Shape Preview #FileID : Camera101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera ENTRY_NOTEFILE Animator\Cameras\Camera101_note.txt Pause the animation at the very start and center the vehicle in the animator to take a picture for the Animator: Vehicle screen. EXIT_NOTEFILE Animator\Cameras\Camera101_note.txt EXIT_PARSFILE Animator\Cameras\Camera101.par #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera ENTER_PARSFILE Animator\STL\AniSTL114.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Blurred Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\blurred_tire\blurred_tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Blurred Tire #Library : Animator: Shape File Link #DataSet : Blurred Tire #Category: Tires #FileID : AniSTL114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL114.par #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { E-Class Vehicles } E-Class, Sedan #Library : Animator: Vehicles and Sensor Targets #DataSet : E-Class, Sedan #Category: E-Class Vehicles #FileID : AniVeh105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh105_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh105_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh105.par #BlueLink2 Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` , Vehicle animator data R_REAR_DRIVE_SC 1 PMAX_SC 200 ENTER_PARSFILE Powertrain\4wd\4WD103.par`08-02-2011`16:42:55 #FullDataName Powertrain: 4-Wheel Drive`250 kW, 7-spd., 2.65 Ratio` OPT_PT 3 OPT_ENGINE_PITCH_REACTION(1) 0 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 OPT_DIFF_INTERNAL(3) 1 #RingCtrl5 1 #RingCtrl6 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 #CheckBox1 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(1) 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine112.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`250 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.38 TC_THR_REL 0.02 TC_THR_APP 0.06 #CheckBox0 1 OPT_THROTTLE_DELAY 1 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 41.13, 126.46, 168.44, 171.86, 173.81, 174.77, 175.1, 175.18, 175.23, 175.18 633, 49.35, 154.32, 232.06, 247.82, 250.35, 251.38, 251.74, 251.77, 251.77, 251.77 750, 0, 145.21, 245.96, 268.1, 274.08, 276.25, 277.05, 277.12, 277.1, 277.07 1107, -16.45, 117.35, 288.44, 330.1, 346.63, 352.29, 354.4, 354.59, 354.55, 354.4 1463, -24.68, 78.29, 278.01, 345.45, 367.46, 377.44, 382.32, 383.45, 384.2, 391.51 1820, -27.97, 42.77, 246.75, 351.59, 388.29, 402.59, 410.23, 412.31, 413.85, 424.41 2177, -33.51, 16.45, 195.49, 338.42, 394.8, 427.7, 432.64, 437.57, 442.51, 453.42 2533, -42.07, -10.64, 135.08, 302.54, 398.09, 443.64, 455.67, 463.99, 468.83, 477.05 2890, -50.08, -25.19, 93.73, 255.06, 387.36, 448.48, 473.93, 480.34, 490.21, 498.44 3247, -57.14, -36.65, 62.58, 203.53, 371.29, 444.15, 477.05, 490.21, 500.08, 509.95 3603, -64.08, -46.7, 39.02, 160.4, 334.05, 430.99, 478.7, 493.5, 505.02, 514.89 3960, -71.06, -56.01, 19.61, 126.98, 289.7, 413.12, 473.76, 491.86, 503.37, 509.95 4317, -78.44, -65.43, 0.46, 95.46, 249.64, 394.29, 465.54, 481.99, 493.5, 503.27 4673, -86.11, -74.79, -16.57, 68.44, 207.81, 366.08, 452.38, 468.83, 485.28, 493.5 5030, -94.28, -84.03, -31.71, 44.85, 170.57, 330.59, 435.93, 452.38, 468.83, 477.05 5387, -102.47, -93.46, -45.75, 24, 138.78, 293.42, 410.15, 426.06, 448.04, 452.77 5743, -111.65, -103.3, -59.35, 4.69, 109.99, 254.69, 367.91, 393, 404.78, 409.44 6100, -121.65, -113.67, -72.91, -13.57, 83.71, 217.11, 322.13, 345.48, 356.46, 360.66 6500, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25 6700, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 250 kW Engine #Library : Powertrain: Engine #DataSet : 250 kW Engine #Category: CS Engine Torque Curves #FileID : Engine112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine112.par #BlueLink0 Powertrain: Engine`250 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC104.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 250 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.009121 0.1, 0.009121 0.2, 0.009121 0.3, 0.009121 0.4, 0.00912 0.5, 0.009112 0.6, 0.009066 0.7, 0.008864 0.8, 0.008142 0.9, 0.005941 0.95, 0.00366 0.99, 0.000872 1.01, -0.000872 1.05, -0.00366 1.1, -0.005941 1.2, -0.008142 1.3, -0.008864 1.4, -0.009066 1.5, -0.009112 1.6, -0.00912 1.7, -0.009121 1.8, -0.009121 1.9, -0.009121 2, -0.009121 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 250 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 250 kW Engine #Category: CS Torque Converters #FileID : TC104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC104.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 250 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans104.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`7-Speed Transmission` #RingCtrl0 7 NGEARS 7 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.42 R_GEAR_TR(1) 4.38 R_GEAR_TR(2) 2.86 R_GEAR_TR(3) 1.92 R_GEAR_TR(4) 1.37 R_GEAR_TR(5) 1.00 R_GEAR_TR(6) 0.82 R_GEAR_TR(7) 0.70 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 ITR(7) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_F(7) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 R_EFF_TR_R(7) 0.99 T_SHIFT 0.35 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift113.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 1-2 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 629 0.2, 629 0.8, 1233 1, 1233 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 503 0.4, 503 0.8, 925 1, 925 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 1-2 Shift #Category: 7-speed #FileID : Shift113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift113.par #BlueLink0 Powertrain: Shift Schedule`7-speed, 1-2 Shift` 7-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift114.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 2-3 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 938 0.2, 938 0.8, 1888 1, 1888 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 750 0.4, 750 0.8, 1416 1, 1416 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 2-3 Shift #Category: 7-speed #FileID : Shift114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift114.par #BlueLink1 Powertrain: Shift Schedule`7-speed, 2-3 Shift` 7-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift115.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 3-4 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1314 0.2, 1314 0.8, 2813 1, 2813 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1051 0.4, 1051 0.8, 2109 1, 2109 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 3-4 Shift #Category: 7-speed #FileID : Shift115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift115.par #BlueLink2 Powertrain: Shift Schedule`7-speed, 3-4 Shift` 7-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift116.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 4-5 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 3942 1, 3942 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 2956 1, 2956 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 4-5 Shift #Category: 7-speed #FileID : Shift116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift116.par #BlueLink3 Powertrain: Shift Schedule`7-speed, 4-5 Shift` 7-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift117.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 5-6 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2195 0.2, 2195 0.8, 5400 1, 5400 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1756 0.4, 1756 0.8, 4050 1, 4050 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 5-6 Shift #Category: 7-speed #FileID : Shift117 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift117.par #BlueLink4 Powertrain: Shift Schedule`7-speed, 5-6 Shift` 7-speed` , Shift schedule igear 6 ENTER_PARSFILE Powertrain\Shift\Shift118.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 6-7 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2571 0.2, 2571 0.8, 6585 1, 6585 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2057 0.4, 2057 0.8, 4939 1, 4939 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 6-7 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 6-7 Shift #Category: 7-speed #FileID : Shift118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift118.par #BlueLink5 Powertrain: Shift Schedule`7-speed, 6-7 Shift` 7-speed` , Shift schedule igear 7 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 7-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 7-Speed Transmission #Category: #FileID : Trans104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans104.par #BlueLink10 Powertrain: Transmission (18 Gears or CVT)`7-Speed Transmission` ` , Transmission (Extended) IDIFF 3 ENTER_PARSFILE Powertrain\Centerdiff\XC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transfer Case`Full Time Viscous 50/50` #CheckBox0 0 LOCKED_XC_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_XC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_XC 1.00 R_EFF_F_XC 0.99 R_EFF_R_XC 0.99 R_REAR_XC 0.5 LOCKED_XC_DAMP 0.8 LOCKED_XC_K 80 R_GEAR_DIFF 1.00 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 R_REAR_BIAS 0.5 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 LOG_ENTRY Used Dataset: Powertrain: Transfer Case; Full Time Viscous 50/50 #Library : Powertrain: Transfer Case #DataSet : Full Time Viscous 50/50 #Category: #FileID : XC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transfer case EXIT_PARSFILE Powertrain\Centerdiff\XC101.par #BlueLink3 Powertrain: Transfer Case`Full Time Viscous 50/50` ` , Transfer case IDIFF 1 ENTER_PARSFILE Powertrain\Frontdiff\F_Diff102.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front Differential`Viscous - Gear Ratio 2.65`CS Front Differentials #CheckBox0 0 LOCKED_FD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_FD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_FD 2.65 R_EFF_F_FD 0.99 R_EFF_R_FD 0.99 LOCKED_FD_DAMP 1 LOCKED_FD_K 100 IDS_F 0.013 IHS_LF 0.009 IHS_RF 0.009 R_GEAR_DIFF 2.65 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 1 LOCKED_DIFF_K 100 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Front Differential; { CS Front Differentials } Viscous - Gear Ratio 2.65 #Library : Powertrain: Front Differential #DataSet : Viscous - Gear Ratio 2.65 #Category: CS Front Differentials #FileID : F_Diff102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Front differential EXIT_PARSFILE Powertrain\Frontdiff\F_Diff102.par #BlueLink4 Powertrain: Front Differential`Viscous - Gear Ratio 2.65` CS Front Differentials` , Differential front IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff101.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Viscous - Gear Ratio 2.65`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_RD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_RD 2.65 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 R_GEAR_DIFF 2.65 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Viscous - Gear Ratio 2.65 #Library : Powertrain: Rear Differential #DataSet : Viscous - Gear Ratio 2.65 #Category: CS Rear Differentials #FileID : R_Diff101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff101.par #BlueLink5 Powertrain: Rear Differential`Viscous - Gear Ratio 2.65` CS Rear Differentials` , Differential rear LOG_ENTRY Used Dataset: Powertrain: 4-Wheel Drive; 250 kW, 7-spd., 2.65 Ratio #Library : Powertrain: 4-Wheel Drive #DataSet : 250 kW, 7-spd., 2.65 Ratio #Category: #FileID : 4WD103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:55 #VehCode 4WD ENTRY_NOTEFILE Powertrain\4wd\4WD103_note.txt Generic 250 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 250 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\4wd\4WD103_note.txt EXIT_PARSFILE Powertrain\4wd\4WD103.par #BlueLink5 Powertrain: 4-Wheel Drive`250 kW, 7-spd., 2.65 Ratio` ` , All-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W111.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`E-Class, Sedan w/ ABS`CS E-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 OFF_F_SGUI 0.15 OFF_R_SGUI 0.15 ON_F_SGUI 0.1 ON_R_SGUI 0.1 V_F_SGUI 3 V_R_SGUI 3 #RingCtrl0 2 #RingCtrl1 2 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq107.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`350 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 350 MY_BRAKE_COEFFICIENT 350 LOG_ENTRY Used Dataset: Brakes: Torque; 350 N-m/MPa #Library : Brakes: Torque #DataSet : 350 N-m/MPa #Category: #FileID : BrkTrq107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq107.par #BlueLink0 Brakes: Torque`350 N-m/MPa` ` , Left front ENTER_PARSFILE Brakes\Proportioning\BrkProp101.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity Gain` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1 PBK_DL_COEFFICIENT 1 LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity Gain #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity Gain #Category: #FileID : BrkProp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve EXIT_PARSFILE Brakes\Proportioning\BrkProp101.par #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.1 ABS_VMIN 3 iside 2 #BlueLink1 Brakes: Torque`350 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq104.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`150 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 150 MY_BRAKE_COEFFICIENT 150 LOG_ENTRY Used Dataset: Brakes: Torque; 150 N-m/MPa #Library : Brakes: Torque #DataSet : 150 N-m/MPa #Category: #FileID : BrkTrq104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq104.par #BlueLink2 Brakes: Torque`150 N-m/MPa` ` , Left rear #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.1 ABS_VMIN 3 iside 2 #BlueLink3 Brakes: Torque`150 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS E-Class } E-Class, Sedan w/ ABS #Library : Brakes: Four-Wheel System #DataSet : E-Class, Sedan w/ ABS #Category: CS E-Class #FileID : Brk4W111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W111.par #BlueLink6 Brakes: Four-Wheel System`E-Class, Sedan w/ ABS` CS E-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2106.par`08-02-2011`16:42:43 #FullDataName Steering`E-Class, Sedan: Power R&P`CS E-Class *I_COL 0.02 *I_GEAR_IN 0.0001 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 39.5 *L2_LKPO 0 *R1_LKPO 39.5 *R2_LKPO 0 *L1_AKPI 8.0 *L2_AKPI 0 *R1_AKPI 8.0 *R2_AKPI 0 *L1_ACAST 3.5 *L2_ACAST 0 *R1_ACAST 3.5 *R2_ACAST 0 *L1_XKPO -1.0 *L2_XKPO 0 *R1_XKPO -1.0 *R2_XKPO 0 *D_RACK_F 4 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 3 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 1 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.0001 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iside 2 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 0.1 ENTER_PARSFILE Steering\Compliance\StrCmp101.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`No Steer Compliance` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 STEER_COMP_CONSTANT 0 LOG_ENTRY Used Dataset: Steering System: Compliance; No Steer Compliance #Library : Steering System: Compliance #DataSet : No Steer Compliance #Category: #FileID : StrCmp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp101.par #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 1 ENTER_PARSFILE Steering\Rack_Kinematics\RackKin113.par`08-02-2011`16:42:41 #FullDataName Steering System: Rack kinematics`E-Class, Sedan Rack Kinematics`CS E-Class #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 RACK_TRAVEL_TABLE SPLINE -916.4942656, -86.36 -867.4138828, -83.03846154 -824.4560495, -79.96296296 -786.3359267, -77.10714286 -752.1486273, -74.44827586 -721.227932, -71.96666667 -693.0665246, -69.64516129 -667.2677336, -67.46875 -643.5147167, -65.42424242 -621.549914, -63.5 -601.160854, -61.68571429 -582.1700533, -59.97222222 -564.4276481, -58.35135135 -547.8059016, -56.81578947 -532.1950333, -55.35897436 -517.5, -53.975 -503.6379761, -52.65853659 -490.5363551, -51.4047619 -478.1311476, -50.20930233 -466.3656834, -49.06818182 -455.1895493, -47.97777778 -444.557715, -46.93478261 -434.4298052, -45.93617021 -424.7694916, -44.97916667 -415.5439804, -44.06122449 -406.7235787, -43.18 0, 0 406.7235787, 43.18 415.5439804, 44.06122449 424.7694916, 44.97916667 434.4298052, 45.93617021 444.557715, 46.93478261 455.1895493, 47.97777778 466.3656834, 49.06818182 478.1311476, 50.20930233 490.5363551, 51.4047619 503.6379761, 52.65853659 517.5, 53.975 532.1950333, 55.35897436 547.8059016, 56.81578947 564.4276481, 58.35135135 582.1700533, 59.97222222 601.160854, 61.68571429 621.549914, 63.5 643.5147167, 65.42424242 667.2677336, 67.46875 693.0665246, 69.64516129 721.227932, 71.96666667 752.1486273, 74.44827586 786.3359267, 77.10714286 824.4560495, 79.96296296 867.4138828, 83.03846154 916.4942656, 86.36 ENDTABLE LOG_ENTRY Used Dataset: Steering System: Rack kinematics; { CS E-Class } E-Class, Sedan Rack Kinematics #Library : Steering System: Rack kinematics #DataSet : E-Class, Sedan Rack Kinematics #Category: CS E-Class #FileID : RackKin113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:41 #VehCode Steering rack EXIT_PARSFILE Steering\Rack_Kinematics\RackKin113.par #BlueLink4 Steering System: Rack kinematics`E-Class, Sedan Rack Kinematics` CS E-Class` , Rack input to output: front D_RACK 4 TBAR 2 ENTER_PARSFILE Steering\KinematicsRack2\RkKinAx119.par`08-02-2011`16:42:42 #FullDataName Steering System: Kinematics for 2 Wheels (Rack & Pinion)`E-Class, Sedan Wheel Kinematics`CS E-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 RACK_KIN_TABLE SPLINE -86.36, -64.00924761 -83.03846154, -60.39496988 -79.96296296, -57.20021687 -77.10714286, -54.34703994 -74.44827586, -51.77840772 -71.96666667, -49.45080212 -69.64516129, -47.32999144 -67.46875, -45.38842777 -65.42424242, -43.60354705 -63.5, -41.95660533 -61.68571429, -40.43185156 -59.97222222, -39.01592124 -58.35135135, -37.69738095 -56.81578947, -36.46637887 -55.35897436, -35.31437211 -53.975, -34.23391082 -52.65853659, -33.21846512 -51.4047619, -32.26228482 -50.20930233, -31.3602847 -49.06818182, -30.5079499 -47.97777778, -29.70125727 -46.93478261, -28.93660959 -45.93617021, -28.21078022 -44.97916667, -27.52086625 -44.06122449, -26.86424867 -43.18, -26.23855826 0, 0 43.18, 21.3843292 44.06122449, 21.8085708 44.97916667, 22.25095273 45.93617021, 22.71274374 46.93478261, 23.19534249 47.97777778, 23.70029582 49.06818182, 24.22932041 50.20930233, 24.78432852 51.4047619, 25.367459 52.65853659, 25.98111474 53.975, 26.62800831 55.35897436, 27.31121822 56.81578947, 28.03425875 58.35135135, 28.80116776 59.97222222, 29.61661825 61.68571429, 30.48606232 63.5, 31.41591936 65.42424242, 32.41382662 67.46875, 33.48897913 69.64516129, 34.65260127 71.96666667, 35.91861787 74.44827586, 37.30463871 77.10714286, 38.83345523 79.96296296, 40.53541768 83.03846154, 42.45242008 86.36, 44.6450584 ENDTABLE iside 1 #DiagramOne1 RACK_KIN_TABLE SPLINE -86.36, -44.6450584 -83.03846154, -42.45242008 -79.96296296, -40.53541768 -77.10714286, -38.83345523 -74.44827586, -37.30463871 -71.96666667, -35.91861787 -69.64516129, -34.65260127 -67.46875, -33.48897913 -65.42424242, -32.41382662 -63.5, -31.41591936 -61.68571429, -30.48606232 -59.97222222, -29.61661825 -58.35135135, -28.80116776 -56.81578947, -28.03425875 -55.35897436, -27.31121822 -53.975, -26.62800831 -52.65853659, -25.98111474 -51.4047619, -25.367459 -50.20930233, -24.78432852 -49.06818182, -24.22932041 -47.97777778, -23.70029582 -46.93478261, -23.19534249 -45.93617021, -22.71274374 -44.97916667, -22.25095273 -44.06122449, -21.8085708 -43.18, -21.3843292 0, 0 43.18, 26.23855826 44.06122449, 26.86424867 44.97916667, 27.52086625 45.93617021, 28.21078022 46.93478261, 28.93660959 47.97777778, 29.70125727 49.06818182, 30.5079499 50.20930233, 31.3602847 51.4047619, 32.26228482 52.65853659, 33.21846512 53.975, 34.23391082 55.35897436, 35.31437211 56.81578947, 36.46637887 58.35135135, 37.69738095 59.97222222, 39.01592124 61.68571429, 40.43185156 63.5, 41.95660533 65.42424242, 43.60354705 67.46875, 45.38842777 69.64516129, 47.32999144 71.96666667, 49.45080212 74.44827586, 51.77840772 77.10714286, 54.34703994 79.96296296, 57.20021687 83.03846154, 60.39496988 86.36, 64.00924761 ENDTABLE #RadioCtrl0 0 #RadioCtrl1 0 *SCALAR 0.45 *SCALAR2 0.45 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Rack & Pinion); { CS E-Class } E-Class, Sedan Wheel Kinematics #Library : Steering System: Kinematics for 2 Wheels (Rack & Pinion) #DataSet : E-Class, Sedan Wheel Kinematics #Category: CS E-Class #FileID : RkKinAx119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:42 #VehCode Steer kinematics EXIT_PARSFILE Steering\KinematicsRack2\RkKinAx119.par #BlueLink10 Steering System: Kinematics for 2 Wheels (Rack & Pinion)`E-Class, Sedan Wheel Kinematics` CS E-Class` , Rack to front wheels ENTER_PARSFILE Steering\Str_FBoost\FBoost102.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` #RingCtrl0 CARPET #RadioCtrl0 1 TC_BOOST 0.08 F_BOOST_MAX 2500 *3D_XLabel Vehicle speed (kph) *3D_YLabel Torsion bar torque (N-m) *3D_ZLabel Power assist force (N) #DiagramTwo0 *3D_DATA 6, 63 ! columns x rows F_BOOST_R_CARPET 0, 0, 20, 50, 80, 120, 200 -16, -2500, -2500, -2500, -2500, -2500, -2500 -15, -2500, -2500, -2500, -2500, -2500, -2500 -14.5, -2500, -2500, -2500, -2500, -2500, -2500 -14, -2500, -2500, -2500, -2500, -2500, -2500 -13.5, -2500, -2500, -2500, -2500, -2500, -2500 -13, -2500, -2500, -2500, -2500, -2500, -2500 -12.5, -2500, -2500, -2500, -2500, -2500, -2500 -12, -2500, -2500, -2500, -2500, -2500, -2500 -11.5, -2500, -2500, -2500, -2500, -2266.8, -2141.32 -11, -2500, -2420, -2427.94, -2280.85, -1736.13, -1500.51 -10.5, -2500, -2205, -2063.12, -1815.93, -1313.29, -1034.22 -10, -2500, -2000, -1739.25, -1429.79, -980, -700 -9.5, -2500, -1805, -1453.43, -1112.03, -720.39, -464.39 -9, -2500, -1620, -1202.85, -853.22, -520.81, -301.33 -8.5, -2500, -1445, -984.76, -644.8, -369.61, -190.74 -8, -2500, -1280, -796.49, -479.09, -256.9, -117.44 -7.5, -2500, -1125, -635.44, -349.2, -174.42, -70.08 -7, -2500, -980, -499.12, -249.03, -115.3, -40.35 -6.5, -2500, -845, -385.09, -173.2, -73.91, -22.31 -6, -2500, -720, -291, -117.01, -45.72, -11.76 -5.5, -2500, -605, -214.6, -76.39, -27.13, -5.86 -5, -2500, -500, -153.73, -47.89, -15.31, -2.73 -4.5, -2278.13, -405, -106.32, -28.58, -8.14, -1.18 -4, -1600, -320, -70.4, -16.05, -4.01, -0.46 -3.5, -1071.88, -245, -44.12, -8.34, -1.8, -0.16 -3, -675, -180, -25.72, -3.92, -0.71, -0.05 -2.5, -390.63, -125, -13.59, -1.6, -0.24, -0.01 -2, -200, -80, -6.22, -0.54, -0.06, 0 -1.5, -84.38, -45, -2.27, -0.13, -0.01, 0 -1, -25, -20, -0.55, -0.02, 0, 0 -0.5, -3.13, -5, -0.05, 0, 0, 0 0, 0, 0, 0, 0, 0, 0 0.5, 3.13, 5, 0.05, 0, 0, 0 1, 25, 20, 0.55, 0.02, 0, 0 1.5, 84.38, 45, 2.27, 0.13, 0.01, 0 2, 200, 80, 6.22, 0.54, 0.06, 0 2.5, 390.63, 125, 13.59, 1.6, 0.24, 0.01 3, 675, 180, 25.72, 3.92, 0.71, 0.05 3.5, 1071.88, 245, 44.12, 8.34, 1.8, 0.16 4, 1600, 320, 70.4, 16.05, 4.01, 0.46 4.5, 2278.13, 405, 106.32, 28.58, 8.14, 1.18 5, 2500, 500, 153.73, 47.89, 15.31, 2.73 5.5, 2500, 605, 214.6, 76.39, 27.13, 5.86 6, 2500, 720, 291, 117.01, 45.72, 11.76 6.5, 2500, 845, 385.09, 173.2, 73.91, 22.31 7, 2500, 980, 499.12, 249.03, 115.3, 40.35 7.5, 2500, 1125, 635.44, 349.2, 174.42, 70.08 8, 2500, 1280, 796.49, 479.09, 256.9, 117.44 8.5, 2500, 1445, 984.76, 644.8, 369.61, 190.74 9, 2500, 1620, 1202.85, 853.22, 520.81, 301.33 9.5, 2500, 1805, 1453.43, 1112.03, 720.39, 464.39 10, 2500, 2000, 1739.25, 1429.79, 980, 700 10.5, 2500, 2205, 2063.12, 1815.93, 1313.29, 1034.22 11, 2500, 2420, 2427.94, 2280.85, 1736.13, 1500.51 11.5, 2500, 2500, 2500, 2500, 2266.8, 2141.32 12, 2500, 2500, 2500, 2500, 2500, 2500 12.5, 2500, 2500, 2500, 2500, 2500, 2500 13, 2500, 2500, 2500, 2500, 2500, 2500 13.5, 2500, 2500, 2500, 2500, 2500, 2500 14, 2500, 2500, 2500, 2500, 2500, 2500 14.5, 2500, 2500, 2500, 2500, 2500, 2500 15, 2500, 2500, 2500, 2500, 2500, 2500 16, 2500, 2500, 2500, 2500, 2500, 2500 ENDTABLE LOG_ENTRY Used Dataset: Steering: Power Assist Force; Symetrical, Speed Sensitive High Boost Curve #Library : Steering: Power Assist Force #DataSet : Symetrical, Speed Sensitive High Boost Curve #Category: #FileID : FBoost102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist force EXIT_PARSFILE Steering\Str_FBoost\FBoost102.par #BlueLink19 Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` ` , Front boost force ENTER_PARSFILE Steering\Compliance\StrCmp104.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`E-Class, Sedan - Steering Comp.`CS E-Class #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1.7738e-07 STEER_COMP_COEFFICIENT 1.7738e-07 LOG_ENTRY Used Dataset: Steering System: Compliance; { CS E-Class } E-Class, Sedan - Steering Comp. #Library : Steering System: Compliance #DataSet : E-Class, Sedan - Steering Comp. #Category: CS E-Class #FileID : StrCmp104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp104.par #BlueLink13 Steering System: Compliance`E-Class, Sedan - Steering Comp.` CS E-Class` , Front compliance ENTER_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par`08-02-2011`16:42:40 #FullDataName Steering: Parking Torque for 2 Wheels`Zero` #RingCtrl0 CONSTANT #RingCtrl1 CONSTANT #RadioCtrl0 0 #RadioCtrl1 0 *A_MZ_BETA_R 0.1 *A_MZ_BETA_L 0.1 *SCALAR 0 *SCALAR2 0 iside 2 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 iside 1 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 LOG_ENTRY Used Dataset: Steering: Parking Torque for 2 Wheels; Zero #Library : Steering: Parking Torque for 2 Wheels #DataSet : Zero #Category: #FileID : TqPkAx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Parking Torque EXIT_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS E-Class } E-Class, Sedan: Power R&P #Library : Steering #DataSet : E-Class, Sedan: Power R&P #Category: CS E-Class #FileID : StrSys2106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2106_note.txt Steering for a vehicle with Wheelbase = 3050 mm Front Track = 1600 mm EXIT_NOTEFILE Steering\System2\StrSys2106_note.txt EXIT_PARSFILE Steering\System2\StrSys2106.par #BlueLink7 Steering`E-Class, Sedan: Power R&P` CS E-Class` , Steering system *IMAGE_LINK Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS E-Class } E-Class, Sedan #Library : Vehicle: Assembly #DataSet : E-Class, Sedan #Category: CS E-Class #FileID : Vehicle123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:24 #VehCode Ind_Ind ENTRY_NOTEFILE Vehicles\Assembly\Vehicle123_note.txt Generic E-Class Sedan (Full-Size) with SLA front and 5-Link rear suspension. E-Class type vehicles include Audi A6, BMW 5-Series, Mercedes Benz E350, Lexus GS, Cadillac DTS, Chrysler 300C. EXIT_NOTEFILE Vehicles\Assembly\Vehicle123_note.txt EXIT_PARSFILE Vehicles\Assembly\Vehicle123.par #BlueLink2 Vehicle: Assembly`E-Class, Sedan` CS E-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc161.par`08-30-2019`17:18:33 #FullDataName Procedures`SpeedTrackingCtrl_LongLane`BOOK_MPC_Procedures #CheckBox0 1 OPT_INIT_CONFIG 1 #CheckBox1 1 OPT_INIT_ROAD 1 #CheckBox2 1 OPT_INIT_SPEED 1 #CheckBox3 1 #RingCtrl0 0 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 *SPEED 72 TSTOP 50 TSTART 0 SSTART 0 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 1 OPT_DIRECTION 1 Opt_SC 0 SPEED 72 SV_VXS 72 ENTER_PARSFILE Control\Driver\Driver105.par`08-02-2011`16:43:30 #FullDataName Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview`Constant Position #RingCtrl0 0 #RingCtrl1 CONSTANT LTARG_CONSTANT 0 #RadioCtrl0 0 AV_SW_MAX_DM 1200 TLAG_DM 0 A_SW_MAX_DM 720 *TPREV 1.5 *SCALAR 0 VLOW_DRIVER 10 #CheckBox0 0 OPT_DRIVER_MODEL 1 #CheckBox1 0 CREATE_PATH_OBJ off TPREV_CONSTANT 1.5 LOG_ENTRY Used Dataset: Control: Steering by the Closed-loop Driver Model; { Constant Position } No Offset, 1.5 sec. Preview #Library : Control: Steering by the Closed-loop Driver Model #DataSet : No Offset, 1.5 sec. Preview #Category: Constant Position #FileID : Driver105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:30 #VehCode Driver path follower EXIT_PARSFILE Control\Driver\Driver105.par #BlueLink27 Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview` Constant Position` , Steering ENTER_PARSFILE Control\Braking\ConBrk101.par`08-02-2011`16:43:32 #FullDataName Control: Braking (Open Loop)`No Open-Loop Braking Pressure` #RingCtrl0 CONSTANT #RadioCtrl0 0 OPT_VMIN -1 *SCALAR 0 PBK_CON_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Braking (Open Loop); No Open-Loop Braking Pressure #Library : Control: Braking (Open Loop) #DataSet : No Open-Loop Braking Pressure #Category: #FileID : ConBrk101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:32 #VehCode Brake control EXIT_PARSFILE Control\Braking\ConBrk101.par #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Throttle\Throttle102.par`08-02-2011`16:43:27 #FullDataName Control: Throttle (Open Loop)`No Open-Loop Throttle` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 THROTTLE_ENGINE_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Throttle (Open Loop); No Open-Loop Throttle #Library : Control: Throttle (Open Loop) #DataSet : No Open-Loop Throttle #Category: #FileID : Throttle102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:27 #VehCode Open-loop throttle control EXIT_PARSFILE Control\Throttle\Throttle102.par #BlueLink29 Control: Throttle (Open Loop)`No Open-Loop Throttle` ` , Throttle ENTER_PARSFILE Control\Gear_at\GearAT101.par`08-02-2011`16:43:31 #FullDataName Control: Shifting (Closed Loop)`AT All Gears` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR NGEARS MODE_TRANS_CONSTANT NGEARS LOG_ENTRY Used Dataset: Control: Shifting (Closed Loop); AT All Gears #Library : Control: Shifting (Closed Loop) #DataSet : AT All Gears #Category: #FileID : GearAT101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:31 #VehCode Closed-loop shift control ENTRY_NOTEFILE Control\Gear_at\GearAT101_note.txt NGEARS is the internal symbol for the number of gears in a transmission. By setting the Mode to NGEARS, CarSim is automatically told to use all of the transmission gears. EXIT_NOTEFILE Control\Gear_at\GearAT101_note.txt EXIT_PARSFILE Control\Gear_at\GearAT101.par #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow ENTER_PARSFILE Roads\3D_Road\Road102.par`08-02-2011`16:43:22 #FullDataName Road: 3D Surface (All Properties)`1200 m One Lane`Straight OPT_ROAD 1 iroad 1 ! obsolete March 2011 idz_road 1 RR_SURF 1 DZ_SHADOW 0.005 L_CAMERA_FRONT 0.5 L_CAMERA_REAR 0.5 ENTER_PARSFILE Roads\Center_XY\RoadXY101.par`08-02-2011`16:43:06 #FullDataName Road: X-Y Coordinates of Centerline`Straight` SPATH 0 #CheckBox0 0 OPT_ROAD_LOOP 0 #RadioCtrl0 0 OPT_ROAD 1 #DiagramOne0 YIN_TABLE 0, 0, 0 100, 0, 100 ENDTABLE LOG_ENTRY Used Dataset: Road: X-Y Coordinates of Centerline; Straight #Library : Road: X-Y Coordinates of Centerline #DataSet : Straight #Category: #FileID : RoadXY101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:06 #VehCode Horizontal (X-Y) table EXIT_PARSFILE Roads\Center_XY\RoadXY101.par #BlueLink0 Road: X-Y Coordinates of Centerline`Straight` ` , Centerline geometry ENTER_PARSFILE Roads\Center_Z\RoadZ101.par`08-02-2011`16:43:13 #FullDataName Road: Centerline Elevation`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_ZS_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Centerline Elevation; Flat #Library : Road: Centerline Elevation #DataSet : Flat #Category: #FileID : RoadZ101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Centerline elevation: Z vs S EXIT_PARSFILE Roads\Center_Z\RoadZ101.par #BlueLink1 Road: Centerline Elevation`Flat` ` , Centerline elevation ENTER_PARSFILE Roads\dZ_Map\RdElMap101.par`08-02-2011`16:43:11 #FullDataName Road: Off-Center Elevation Map, S-L Grid`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_DZ_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Off-Center Elevation Map, S-L Grid; Flat #Library : Road: Off-Center Elevation Map, S-L Grid #DataSet : Flat #Category: #FileID : RdElMap101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:11 #VehCode dZ via S-L grid EXIT_PARSFILE Roads\dZ_Map\RdElMap101.par #BlueLink2 Road: Off-Center Elevation Map, S-L Grid`Flat` ` , Off-center elevation 1 ENTER_PARSFILE Roads\Friction\RdFric101.par`08-02-2011`16:43:12 #FullDataName Road: Friction Map, S-L Grid`0.85`Constant Mu OPT_ROAD 1 #RingCtrl0 CONSTANT MU_ROAD_CONSTANT 0.85 #RadioCtrl0 0 *SCALAR 0.85 LOG_ENTRY Used Dataset: Road: Friction Map, S-L Grid; { Constant Mu } 0.85 #Library : Road: Friction Map, S-L Grid #DataSet : 0.85 #Category: Constant Mu #FileID : RdFric101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:12 #VehCode Mu via S-L grid EXIT_PARSFILE Roads\Friction\RdFric101.par #BlueLink3 Road: Friction Map, S-L Grid`0.85` Constant Mu` , Friction ENTER_PARSFILE Roads\Shapes\RdShp102.par`08-02-2011`16:43:14 #FullDataName Road: Animator Surface Shapes`1200 m Road + 200 m Light Grass (One Lane)`Roads NLANES 5 OPTTHRESHOLD 1 #MiscYellow0 # 0.878 0.878 0.878, Road (One Lane), 0.2, 60, 1, -4, m, 4, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 60, 1, 4, m, 7.1, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 60, 3.1, -7.1, m, -100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 60, 3.1, 7.1, m, 100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 60, -0.969, -4, m, -7.1, m, , , -100, 1200, 5, , , #ENDMYellow #CheckBox0 0 MIRROR 0 COLOR(1) 0.878 0.878 0.878 MATERIAL(1) Road (One Lane) SPECULAR(1) 0.2 SCALE(1) 60 LTILES(1) 1 LIN(1) -4 LINUNITS(1) m LOUT(1) 4 LOUTUNITS(1) m SSTART(1) -100 SSTOP(1) 1200 SINT(1) 5 COLOR(2) 0.878 0.878 0.878 MATERIAL(2) Road Transition (Light) SPECULAR(2) 0.1 SCALE(2) 60 LTILES(2) 1 LIN(2) 4 LINUNITS(2) m LOUT(2) 7.1 LOUTUNITS(2) m SSTART(2) -100 SSTOP(2) 1200 SINT(2) 5 COLOR(3) 0.878 0.878 0.878 MATERIAL(3) Grass (Light) SPECULAR(3) 0.1 SCALE(3) 60 LTILES(3) 3.1 LIN(3) -7.1 LINUNITS(3) m LOUT(3) -100 LOUTUNITS(3) m SSTART(3) -100 SSTOP(3) 1200 SINT(3) 5 COLOR(4) 0.878 0.878 0.878 MATERIAL(4) Grass (Light) SPECULAR(4) 0.1 SCALE(4) 60 LTILES(4) 3.1 LIN(4) 7.1 LINUNITS(4) m LOUT(4) 100 LOUTUNITS(4) m SSTART(4) -100 SSTOP(4) 1200 SINT(4) 5 COLOR(5) 0.878 0.878 0.878 MATERIAL(5) Road Transition (Light) SPECULAR(5) 0.1 SCALE(5) 60 LTILES(5) -0.969 LIN(5) -4 LINUNITS(5) m LOUT(5) -7.1 LOUTUNITS(5) m SSTART(5) -100 SSTOP(5) 1200 SINT(5) 5 MTL_FILE Roads\materials\road.mtl LOG_ENTRY Used Dataset: Road: Animator Surface Shapes; { Roads } 1200 m Road + 200 m Light Grass (One Lane) #Library : Road: Animator Surface Shapes #DataSet : 1200 m Road + 200 m Light Grass (One Lane) #Category: Roads #FileID : RdShp102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:14 #VehCode Road shapes EXIT_PARSFILE Roads\Shapes\RdShp102.par #BlueLink4 Road: Animator Surface Shapes`1200 m Road + 200 m Light Grass (One Lane)` Roads` , Road shape definitions add_reference_frame road_stuff_1 reference_frame_ghosts off ENTER_PARSFILE Animator\Groups\Group101.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Partly Cloudy Sky`Skies ENTER_PARSFILE Animator\Frames\Frame104.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Front Point w/o Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Front Point w/o Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camF SET_Y_NAME Y_camF SET_Z_NAME Z_camF WRT_X_camF ANI_X_camF WRT_Y_camF ANI_Y_camF WRT_Z_camF ANI_Z_camF LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Front Point w/o Yaw #Library : Animator: Reference Frame #DataSet : Camera Front Point w/o Yaw #Category: Road Tracking #FileID : Frame104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame104.par #BlueLink0 Animator: Reference Frame`Camera Front Point w/o Yaw` Road Tracking` , Animator data ENTER_PARSFILE Animator\STL\AniSTL115.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Partly Cloudy Sky`Skies #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\Slightly_Cloudy_Sky\sky_road_course.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0 SMOOTH_MAX_ANGLE 30 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 1 set_fogging off #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Skies } Partly Cloudy Sky #Library : Animator: Shape File Link #DataSet : Partly Cloudy Sky #Category: Skies #FileID : AniSTL115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL115.par #BlueLink1 Animator: Shape File Link`Partly Cloudy Sky` Skies` , Animator data ENTER_PARSFILE Animator\STL\AniSTL116.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Complex Land Bowl for Light Grass`Terrain #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\landbowls\complex_land_for_light_grass.obj #ENDMYellow SET_COLOR .8 .8 .8 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 1 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Terrain } Complex Land Bowl for Light Grass #Library : Animator: Shape File Link #DataSet : Complex Land Bowl for Light Grass #Category: Terrain #FileID : AniSTL116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL116.par #BlueLink2 Animator: Shape File Link`Complex Land Bowl for Light Grass` Terrain` , Animator data #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { Skies } Partly Cloudy Sky #Library : Animator: Group #DataSet : Partly Cloudy Sky #Category: Skies #FileID : Group101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group EXIT_PARSFILE Animator\Groups\Group101.par #BlueLink6 Animator: Group`Partly Cloudy Sky` Skies` , Misc. animator set add_reference_frame road_stuff_2 reference_frame_ghosts off add_reference_frame road_stuff_3 reference_frame_ghosts off add_reference_frame road_stuff_4 reference_frame_ghosts off iroad 2 ! obsolete March 2011 idz_road 2 ENTER_PARSFILE Animator\Cameras\Camera105.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 1 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw ENTER_PARSFILE Animator\Frames\Frame105.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Rear Point w/ Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Rear Point w/ Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camR SET_Y_NAME Y_camR SET_Z_NAME Z_camR SET_YAW_NAME Yaw_CamR WRT_X_camR ANI_X_camR WRT_Y_camR ANI_Y_camR WRT_Z_camR ANI_Z_camR WRT_Yaw_CamR ANI_Yaw_CamR LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Rear Point w/ Yaw #Library : Animator: Reference Frame #DataSet : Camera Rear Point w/ Yaw #Category: Road Tracking #FileID : Frame105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame105.par #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 5 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 5 SET_DISTANCE 49 *SET_LOOKPOINT_X 5 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 5 *SET_DISTANCE 49 GHOST_COUNT 0 *LIGHT_X -1000 *LIGHT_Y -1000 *LIGHT_Z 10000 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 30 SUN_POSITION -1000 -1000 10000 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } Rear View , Road Ref. (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View , Road Ref. (Frt. Facing) #Category: Road Reference #FileID : Camera105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera105.par #BlueLink5 Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)` Road Reference` , Camera ENTER_PARSFILE Roads\3D_Road\Road102.ani`07-20-2011`03:07:16 add_reference_frame The Road reference_frame_ghosts off add_obj Roads\3D_Road\Road102_1.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.2 0.2 0.2 add_obj Roads\3D_Road\Road102_2.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_3.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_4.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_5.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 EXIT_PARSFILE Roads\3D_Road\Road102.ani LOG_ENTRY Used Dataset: Road: 3D Surface (All Properties); { Straight } 1200 m One Lane #Library : Road: 3D Surface (All Properties) #DataSet : 1200 m One Lane #Category: Straight #FileID : Road102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:22 #VehCode 3D road EXIT_PARSFILE Roads\3D_Road\Road102.par #BlueLink0 Road: 3D Surface (All Properties)`1200 m One Lane` Straight` , Misc. ENTER_PARSFILE Plot\Setup\Plot109.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Longitudinal Speed`Vehicle Motion ENTER_PARSFILE Plot\Transform\PlotTfm101.par`08-02-2011`16:43:01 #FullDataName Plot: Data Transform`No Filter` #RingCtrl0 None FILTER None LOG_ENTRY Used Dataset: Plot: Data Transform; No Filter #Library : Plot: Data Transform #DataSet : No Filter #Category: #FileID : PlotTfm101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:01 #VehCode Plot data transform EXIT_PARSFILE Plot\Transform\PlotTfm101.par #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) ENTER_PARSFILE Plot\Format\PlotFmt101.par`08-02-2011`16:43:00 #FullDataName Plot: Format`Default Plot Settings` #RingCtrl0 Axes AXES Axes #RingCtrl1 Noframe FRAME Noframe #RingCtrl2 NoGrid GRID NoGrid #RingCtrl3 FileTitle LEGENDFILE FileTitle #RingCtrl4 RigidBodyName LEGENDDATA_1 RigidBodyName #RingCtrl5 AutoLocation LEGENDLOCATION AutoLocation #RingCtrl6 Regular TITLEFONTSTYLE Regular #RingCtrl7 Regular LEGENDFONTSTYLE Regular #RingCtrl8 Regular LABELFONTSTYLE Regular #RingCtrl9 Regular TICLABELFONTSTYLE Regular #RingCtrl10 0 TITLELOCATION 0 LEGENDPERCENT 40 TITLEFONTSIZE 14 LEGENDFONTSIZE 12 LABELFONTSIZE 14 TICLABELFONTSIZE 12 TITLEFONTNAME Arial LEGENDFONTNAME Arial LABELFONTNAME Arial TICLABELFONTNAME Arial SYMBOLS 10,1,2,3,4,5,6,7,8,9,10,4,1,2,3,4,5,6,7,8 LINESTYL 1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1 COLORS 8,2,3,7,4,0,6,14,8,9,10,11,12,13,14,6,1,2,0,4 LOG_ENTRY Used Dataset: Plot: Format; Default Plot Settings #Library : Plot: Format #DataSet : Default Plot Settings #Category: #FileID : PlotFmt101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot format EXIT_PARSFILE Plot\Format\PlotFmt101.par #MiscYellow0 PLOTCHANNELS Vx, Time PLOTCHANNELS VxTarget, Time PLOTCHANNELS Vx_2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Longitudinal Speed LOG_ENTRY Used Dataset: Plot: Setup; { Vehicle Motion } Longitudinal Speed #Library : Plot: Setup #DataSet : Longitudinal Speed #Category: Vehicle Motion #FileID : Plot109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot109.par #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot ENTER_PARSFILE Plot\Setup\Plot118.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Throttle: Control Input`Controls: Driver #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Throttle, Time PLOTCHANNELS Thr_Eng, Time #ENDMYellow YAXISLABEL Throttle - #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Throttle: Control Input LOG_ENTRY Used Dataset: Plot: Setup; { Controls: Driver } Throttle: Control Input #Library : Plot: Setup #DataSet : Throttle: Control Input #Category: Controls: Driver #FileID : Plot118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup ENTRY_NOTEFILE Plot\Setup\Plot118_note.txt The variable "Throttle" is the sum of any throttle control calculated by the CarSim closed loop speed controller and any specified open-loop throttle. The source of open-loop throttle command may be from internal tables, VS commmands, or external sources like Simulink or the API. By using the sum of these 2 command sources you can implement things like driver aids for active safety that augment actions taken by the driver. When switching between open loop and closed loop control, take care that no unintended open loop control is "left over" by supplying a data set that sets the open loop component to zero. The variable "Thr_Eng" is the value of "Throttle", optionally modified by the application of a time constant to simulate the transient delay in changes in engine torque. EXIT_NOTEFILE Plot\Setup\Plot118_note.txt EXIT_PARSFILE Plot\Setup\Plot118.par #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot ENTER_PARSFILE Plot\Setup\Plot203.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Wheel Cylinder Pressures`Braking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS PbkCh_L1, Time PLOTCHANNELS PbkCh_R1, Time PLOTCHANNELS PbkCh_L2, Time PLOTCHANNELS PbkCh_R2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Wheel Cylinder Pressures LOG_ENTRY Used Dataset: Plot: Setup; { Braking } Wheel Cylinder Pressures #Library : Plot: Setup #DataSet : Wheel Cylinder Pressures #Category: Braking #FileID : Plot203 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot203.par #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot ENTER_PARSFILE Plot\Setup\Plot141.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Y vs. X -- Trajectory`Tracking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Yo, Xo PLOTCHANNELS Y_Design, X_Design PLOTCHANNELS Y_Target, X_Target PLOTCHANNELS Yo_2, Xo_2 #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Y vs. X -- Trajectory LOG_ENTRY Used Dataset: Plot: Setup; { Tracking } Y vs. X -- Trajectory #Library : Plot: Setup #DataSet : Y vs. X -- Trajectory #Category: Tracking #FileID : Plot141 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot141.par #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } SpeedTrackingCtrl_LongLane #Library : Procedures #DataSet : SpeedTrackingCtrl_LongLane #Category: BOOK_MPC_Procedures #FileID : Proc161 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-30-2019 17:18:33 #VehCode Procedure EXIT_PARSFILE Procedures\Proc161.par #BlueLink28 Procedures`SpeedTrackingCtrl_LongLane` BOOK_MPC_Procedures` , Procedure *IMAGE_LINK Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter3_SpeedTrackingControl_MPC CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter3_SpeedTrackingControl_MPC LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter3_SpeedTrackingControl_MPC #Library : CarSim Run Control #DataSet : Chapter3_SpeedTrackingControl_MPC #Category: BOOK_MPC_Examples #FileID : Run272 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-23-2019 23:36:49 #VehCode Run EXIT_PARSFILE Runs\Run272.par END ================================================ FILE: Chapter-3/chap3_MPC_SpeedCtrl/LEO_MPC_SpeedCtrl.mdl ================================================ Model { Name "LEO_MPC_SpeedCtrl" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.47" NumModelReferences 0 NumTestPointedSignals 0 } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 1 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 2 $ClassName "Simulink.WindowInfo" IsActive [1] Location [2695.0, 276.0, 970.0, 740.0] Object { $PropName "ModelBrowserInfo" $ObjectID 3 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 4 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 5 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [920.0, 563.0] ZoomFactor [1.5] Offset [-53.066666666666663, 144.53333333333327] } } } Created "Fri Dec 16 13:40:57 2016" Creator "admin" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Fri Aug 30 17:20:48 2019" RTWModifiedTimeStamp 489086316 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "disabled" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 6 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "LEO_MPC_ACC" overrideMode_ [0.0] Array { Type "Cell" Dimension 1 Cell "LEO_MPC_ACC" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell [] PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 7 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 8 Version "1.13.1" StartTime "0.0" StopTime "50" AbsTol "auto" FixedStep "auto" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 9 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "Dataset" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 10 Version "1.13.1" Array { Type "Cell" Dimension 8 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" Cell "UseSpecifiedMinMax" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 128 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 11 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "EnableAllAsError" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "none" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 12 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 13 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 14 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 15 Version "1.13.1" Array { Type "Cell" Dimension 15 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" Cell "PortableWordSizes" Cell "GenerateWebview" Cell "GenerateCodeMetricsReport" Cell "GenerateCodeReplacementReport" Cell "GenerateErtSFunction" Cell "CreateSILPILBlock" Cell "CodeExecutionProfiling" Cell "CodeProfilingSaveOptions" Cell "CodeProfilingInstrumentation" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 23 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "InsertPolySpaceComments" Cell "SFDataObjDesc" Cell "MATLABFcnDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InternalIdentifier" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "CustomSymbolStrUtil" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 15 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "GenerateAllocFcn" Cell "PurelyIntegerCode" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "SupportNonInlinedSFcns" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns on CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface off GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 18 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 260, 130, 1340, 770 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 7 } Object { $PropName "DataTransfer" $ObjectID 19 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType Memory X0 "0" InheritSampleTime off LinearizeMemory off LinearizeAsDelay off StateMustResolveToSignalObject off RTWStateStorageClass "Auto" } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "LEO_MPC_SpeedCtrl" Location [2695, 276, 3665, 1016] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "150" ReportName "simulink-default.rpt" SIDHighWatermark "15" Block { BlockType Reference Name "CarSim S-Function" SID "14" Ports [1, 1] Position [235, 204, 335, 266] ZOrder 33 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i" SIMFILE "LEO_MPC_SpeedCtrl.sim" } Block { BlockType Demux Name "Demux" SID "12" Ports [1, 2] Position [90, 250, 95, 310] ZOrder 21 BlockMirror on BackgroundColor "black" ShowName off Outputs "[2 4]" } Block { BlockType Memory Name "Memory1" SID "9" Position [170, 219, 180, 251] ZOrder 9 ShowName off } Block { BlockType S-Function Name "S-Function" SID "10" Ports [1, 1] Position [190, 334, 360, 386] ZOrder 13 BlockMirror on FunctionName "Main_MPC_SpeedCtrl" EnableBusSupport off } Block { BlockType Terminator Name "Terminator" SID "13" Position [25, 280, 60, 310] ZOrder 32 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace1" SID "11" Ports [1] Position [25, 345, 85, 375] ZOrder 20 BlockMirror on VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 17 SrcBlock "S-Function" SrcPort 1 Points [-41, 0] Branch { ZOrder 48 Points [0, -80] DstBlock "Demux" DstPort 1 } Branch { ZOrder 47 DstBlock "To Workspace1" DstPort 1 } } Line { ZOrder 25 SrcBlock "Demux" SrcPort 1 Points [-9, 0; 0, -30] DstBlock "Memory1" DstPort 1 } Line { ZOrder 26 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Line { ZOrder 41 SrcBlock "CarSim S-Function" SrcPort 1 Points [83, 0; 0, 125] DstBlock "S-Function" DstPort 1 } Line { ZOrder 53 SrcBlock "Memory1" SrcPort 1 DstBlock "CarSim S-Function" DstPort 1 } } } ================================================ FILE: Chapter-3/chap3_MPC_SpeedCtrl/Main_MPC_SpeedCtrl.m ================================================ function [sys,x0,str,ts] =Main_MPC_SpeedCtrl(t,x,u,flag) % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 2; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 6; %S sizes.NumInputs = 2; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global MPCParameters; MPCParameters.Np = 30;% predictive horizon MPCParameters.Nc = 30;% control horizon MPCParameters.Nx = 2; %number of state variables MPCParameters.Nu = 1; %number of control inputs MPCParameters.Ny = 1; %number of output variables MPCParameters.Ts = 0.05; %Set the sample time MPCParameters.Q = 100; % cost weight factor MPCParameters.R = 0.1; % cost weight factor MPCParameters.S = 0.1; % cost weight factor MPCParameters.qp_solver = 0; %0: default, quadprog; 1:qpOASES MPCParameters.refspeedT = 1; %0: default, step speed profile; %1:sine-wave speed profile MPCParameters.umin = -5.0; % the min of deceleration MPCParameters.umax = 3.5; % the max of acceleration MPCParameters.dumin = -5.0; % minimum limits of jerk MPCParameters.dumax = 5.0; % maximum limits of jerk global WarmStart; WarmStart = zeros(MPCParameters.Np,1); % End of mdlInitializeSizes %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== function sys = mdlUpdates(t,x,u) % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== function sys = mdlOutputs(t,x,u) global InitialGapflag; global MPCParameters; global WarmStart; Vx = 0; a_x = 0; a_des = 0; t_Start = tic; % ʼʱ if InitialGapflag < 2 % get rid of the first two inputs InitialGapflag = InitialGapflag + 1;% delay else InitialGapflag = InitialGapflag + 1; %***********Step (1). Update vehicle states *************************% Vx = u(1)/3.6; %ٶȣλkm/h-->m/s a_x = u(2)*9.8; %ٶȣλg's-->m/s2 kesi = [Vx; a_x]; %³״̬ %********Step(2): Generate reference speed profile *******************% switch MPCParameters.refspeedT, case 0 % default, step speed profile %----趨ʽٶ----------------------% SpeedProfile = func_ConstantSpeed(InitialGapflag, MPCParameters); case 1 % sine-wave speed profile %----sine waveʽ ٶ--------------% SpeedProfile = func_SineSpeed(InitialGapflag,MPCParameters); otherwise % Unexpected flags % error(['unexpected speed-profile:',num2str(MPCParameters.refspeedT)]); % Error handling end % end of switch %****Step(3): update longitudinal vehilce model with inertial delay**8% Ts = MPCParameters.Ts; % 50ms tao = 0.2; %ϵͳʱ0.2 for simulation StateSpaceModel.A = [1 Ts; 0 1-Ts/tao]; StateSpaceModel.B = [0; Ts/tao]; StateSpaceModel.C = [1, 0]; %****Step(4): MPC formulation;********************% %Update Theta and PHI for future states prediction [PHI, THETA] = func_Update_PHI_THETA(StateSpaceModel, MPCParameters); %Update H and f for cost function J [H, f, g] = func_Update_H_f(kesi, SpeedProfile, PHI, THETA, MPCParameters); %****Step(5): Call qp-solver********************% switch MPCParameters.qp_solver, case 0 % default qp-solver: quadprog [A, b, Aeq, beq, lb, ub] = func_Constraints_u_quadprog(MPCParameters); options = optimset('Display','off', ... 'TolFun', 1e-8, ... 'MaxIter', 2000, ... 'Algorithm', 'active-set', ... 'FinDiffType', 'forward', ... 'RelLineSrchBnd', [], ... 'RelLineSrchBndDuration', 1, ... 'TolConSQP', 1e-8); warning off all % close the warnings during computation U0 = WarmStart; [U, FVAL, EXITFLAG] = quadprog(H, g, A, b, Aeq, beq, lb, ub, U0, options); % WarmStart = shiftHorizon(U); % Prepare restart, nominal close loop if (1 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; fprintf('MPC solver not converged!\n'); end a_des = U(1); case 1 % qpOASES [A, lb, ub, lbA, ubA] = func_Constraints_u_qpOASES(MPCParameters); options = qpOASES_options('default', ... 'printLevel', 0); %=======================USE QP==================% [U, FVAL, EXITFLAG, iter, lambda] = qpOASES(H, g, A, lb, ub, lbA, ubA, options); % %=======================USE SQP==================% % try % H=sparse(H); % A=sparse(A); % catch % fprintf('qpOASES Error reported\n'); % end % if (qpOASES_hotstart_flag) % [qpOASES_QP, U, FVAL, EXITFLAG, iter, lambda] = qpOASES_sequence('i', H, g, A, lb, ub, lbA, ubA, options); % qpOASES_hotstart_flag = 1; % else % [U, FVAL, EXITFLAG, iter, lambda] = qpOASES_sequence('m', qpOASES_QP, H, g, A, lb, ub, lbA, ubA, options); % % end if (0 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; fprintf('MPC solver: qpOASES not converged!\n'); end a_des = U(1); otherwise % Unexpected flags % error(['unexpected qp-solver, Sol_method=',num2str(flag)]); % Error handling end % end of switch end % end of if Initialflag < 1 % %****Step(6): ļٶThrottleBrake;********************% [Throttle, Brake] = func_AccelerationTrackingController(a_des); t_Elapsed = toc( t_Start ); %computation time sys = [Throttle; Brake;t_Elapsed; Vx; a_x; a_des]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== function [Vref] = func_SineSpeed(Index, MPCParameters) %ʽٶ %****Sine wave parameters T = 50; %ٶߵڣunit: s freq = 1/T; %ٶߵƵʣunit: Hz Amplit = 10;%ٶߵķֵ offst = 20; %ٶߵƫ Ts = MPCParameters.Ts; %ʱ=0.05unit: s Np = MPCParameters.Np; % Ԥʱ30 Vref = cell(Np,1); t0 = Index*Ts; for i = 1:1:Np t = t0 + i*Ts; Vref{i,1} = Amplit*sin(2*pi*freq*t) + offst; end % end %EoF function [Vref] = func_ConstantSpeed(InitialGapflag, MPCParameters) % ɽʽٶ Ts = MPCParameters.Ts; %ʱ=0.05unit: s Np = MPCParameters.Np; % Ԥʱ30 Vref = cell(Np,1); % Զݵʽ if InitialGapflag < 400 Vset = 10; else if InitialGapflag < 800 Vset = 10; else if InitialGapflag < 1500 Vset = 20; else Vset = 5; end end end for i = 1:1:Np Vref{i,1} = Vset; end % end %EoF function [Throttle, Brake] = func_AccelerationTrackingController(ahopt) % λٶתΪſƶѹ K_brake = 0.3; K_throttle = 0.1; %0.05; Brake_Sat = 15; Throttle_Sat = 1; if ahopt < 0 % Brake control Brake = K_brake * ahopt; if Brake > Brake_Sat Brake = Brake_Sat; end Throttle = 0; else % throttle control Brake = 0; Throttle = K_throttle *ahopt; if Throttle > Throttle_Sat Throttle = Throttle_Sat; end if Throttle < 0 Throttle = 0; end end % end %EoF function u0 = shiftHorizon(u) %shift control horizon u0 = [u(:,2:size(u,2)), u(:,size(u,2))]; % size(u,2)) function [PHI, THETA] = func_Update_PHI_THETA(StateSpaceModel, MPCParameters) %***************************************************************% % Ԥʽ Y(t)=PHI*kesi(t)+THETA*DU(t) % Y(t) = [Eta(t+1|t) Eta(t+2|t) Eta(t+3|t) ... Eta(t+Np|t)]' %***************************************************************% Np = MPCParameters.Np; Nc = MPCParameters.Nc; Nx = MPCParameters.Nx; Ny = MPCParameters.Ny; Nu = MPCParameters.Nu; A = StateSpaceModel.A; B = StateSpaceModel.B; C = StateSpaceModel.C; PHI_cell=cell(Np,1); %PHI=[CA CA^2 CA^3 ... CA^Np]' THETA_cell=cell(Np,Nc); %THETA for j=1:1:Np PHI_cell{j,1}=C*A^j; % demision:Ny* Nx for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; % demision:Ny*Nu else THETA_cell{j,k}=zeros(Ny,Nu); end end end PHI=cell2mat(PHI_cell); % size(PHI)=[(Ny*Np) * Nx] THETA=cell2mat(THETA_cell);% size(THETA)=[Ny*Np Nu*Nc] % end %EoF function[H, f, g] = func_Update_H_f(kesi, SpeedProfile, PHI, THETA, MPCParameters) %***************************************************************% % trajectory planning %***************************************************************% Np = MPCParameters.Np; Nc = MPCParameters.Nc; Q = MPCParameters.Q; R = MPCParameters.R; Qq = kron(eye(Np),Q); % Q = [Np*Nx] * [Np*Nx] Rr = kron(eye(Nc),R); % R = [Nc*Nu] * [Nc*Nu] Vref = cell2mat(SpeedProfile); error = PHI * kesi; %[(Nx*Np) * 1] H = THETA'*Qq*THETA + Rr; f = (error' - Vref')*Qq*THETA; g = f'; % end %EoF function [A, b, Aeq, beq, lb, ub] = func_Constraints_u_quadprog(MPCParameters) %************************************************************************% % generate the constraints of the vehicle % %************************************************************************% Np = MPCParameters.Np; Nc = Np; umin = MPCParameters.umin; umax = MPCParameters.umax; A = []; b = []; Aeq = []; beq = []; %----(3) lb= 1 ) && ( ischar( varargin{nargin} ) ) ) error('ERROR (qpOASES_options): Options must be specified in pairs!'); end switch ( varargin{1} ) case 'default' options = qpOASES_default_options(); case 'reliable' options = qpOASES_reliable_options(); case {'MPC','mpc','fast'} options = qpOASES_MPC_options(); otherwise error( ['ERROR (qpOASES_options): Only the following option schemes are defined: ''default'', ''reliable'', ''MPC''!'] ); end firstIsStructOrScheme = 1; end else error('ERROR (qpOASES_options): First argument needs to be a string or an options struct!'); end end end % set options to user-defined values for i=(1+firstIsStructOrScheme):2:nargin argName = varargin{i}; argValue = varargin{i+1}; if ( ( isempty( argName ) ) || ( ~ischar( argName ) ) ) error('ERROR (qpOASES_options): Argmument no. %d has to be a non-empty string!',i ); end if ( ( ischar(argValue) ) || ( ~isscalar( argValue ) ) ) error('ERROR (qpOASES_options): Argmument no. %d has to be a scalar constant!',i+1 ); end if ( ~isfield( options,argName ) ) error('ERROR (qpOASES_options): Argmument no. %d is an invalid option!',i ); end eval( ['options.',argName,' = ',num2str(argValue),';'] ); end end function [ options ] = qpOASES_default_options( ) % setup options struct with default values options = struct( 'maxIter', -1, ... 'maxCpuTime', -1, ... 'printLevel', 1, ... ... 'enableRamping', 1, ... 'enableFarBounds', 1, ... 'enableFlippingBounds', 1, ... 'enableRegularisation', 0, ... 'enableFullLITests', 0, ... 'enableNZCTests', 1, ... 'enableDriftCorrection', 1, ... 'enableCholeskyRefactorisation', 0, ... 'enableEqualities', 0, ... ... 'terminationTolerance', 5.0e6*eps, ... 'boundTolerance', 1.0e6*eps, ... 'boundRelaxation', 1.0e4, ... 'epsNum', -1.0e3*eps, ... 'epsDen', 1.0e3*eps, ... 'maxPrimalJump', 1.0e8, ... 'maxDualJump', 1.0e8, ... ... 'initialRamping', 0.5, ... 'finalRamping', 1.0, ... 'initialFarBounds', 1.0e6, ... 'growFarBounds', 1.0e3, ... 'initialStatusBounds', -1, ... 'epsFlipping', 1.0e3*eps, ... 'numRegularisationSteps', 0, ... 'epsRegularisation', 1.0e3*eps, ... 'numRefinementSteps', 1, ... 'epsIterRef', 1.0e2*eps, ... 'epsLITests', 1.0e5*eps, ... 'epsNZCTests', 3.1e3*eps ); end function [ options ] = qpOASES_reliable_options( ) % setup options struct with values for most reliable QP solution options = qpOASES_default_options( ); options.enableFullLITests = 1; options.enableCholeskyRefactorisation = 1; options.numRefinementSteps = 2; end function [ options ] = qpOASES_MPC_options( ) % setup options struct with values for most reliable QP solution options = qpOASES_default_options( ); options.enableRamping = 0; options.enableFarBounds = 1; options.enableFlippingBounds = 0; options.enableRegularisation = 1; options.enableNZCTests = 0; options.enableDriftCorrection = 0; options.enableEqualities = 1; options.terminationTolerance = 1.0e9*eps; options.initialStatusBounds = 0; options.numRegularisationSteps = 1; options.numRefinementSteps = 0; end ================================================ FILE: Chapter-3/chap3_MPC_SpeedCtrl_du/Chapter3_SpeedTrackingControl_MPC_du.par ================================================ PARSFILE #EXPANDED_PARSFILE 2.0 ! This is an expansion of the parsfile: "Runs\Run283.par" ! It contains the contents of that file plus the contents of any files linked ! with the "PARSFILE" or "SPECIAL_PARSFILE" keywords. ! File created: 23:31 on August 30, 2019 by CarSim Version 8.1a, October 2011 PRODUCT_NAME CarSim ENTER_PARSFILE Runs\Run283.par`08-30-2019`23:15:43 #FullDataName CarSim Run Control`Chapter3_SpeedTrackingControl_MPC_du`BOOK_MPC_Examples #VehicleCode Ind_Ind OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex133.par`08-30-2019`23:22:31 #FullDataName Models: Simulink`MPC_SpeedCtrl_Sim_du`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap3_MPC_SpeedCtrl_du\LEO_MPC_SpeedCtrl_du.mdl #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 0 *USE_DIFF_SOLVERS 0 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap3_MPC_SpeedCtrl_du *ALTERNATE_PATH E:\Carsim\Book_examples\chap3_MPC_SpeedCtrl_du ENTER_PARSFILE IO_Channels\I_Channels\I_Ch119.par`08-23-2019`21:26:22 #FullDataName I/O Channels: Import`SpeedCtrl_Imports`MPC_BOOK_Sim_Imports *README_FILE Programs\solvers\ReadMe\i_i_imports_tab.txt #MiscYellow0 IMP_THROTTLE_ENGINE Replace 0.0 1 IMP_PCON_BK Replace 0.0 1 #ENDMYellow #RingCtrl0 2 LOG_ENTRY Used Dataset: I/O Channels: Import; { MPC_BOOK_Sim_Imports } SpeedCtrl_Imports #Library : I/O Channels: Import #DataSet : SpeedCtrl_Imports #Category: MPC_BOOK_Sim_Imports #FileID : I_Ch119 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-23-2019 21:26:22 #VehCode Import Channels EXIT_PARSFILE IO_Channels\I_Channels\I_Ch119.par #BlueLink0 I/O Channels: Import`SpeedCtrl_Imports` MPC_BOOK_Sim_Imports` , Import ENTER_PARSFILE IO_Channels\O_Channels\O_Ch121.par`08-23-2019`20:56:04 #FullDataName I/O Channels: Export`SpeedCtrl_Exports`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Vx EXP_Ax #MiscYellow0 #Number of Selected Channels: 2 #CHN_NAME: Vx #CHN_NAME: Ax #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } SpeedCtrl_Exports #Library : I/O Channels: Export #DataSet : SpeedCtrl_Exports #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch121 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-23-2019 20:56:04 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch121.par #BlueLink1 I/O Channels: Export`SpeedCtrl_Exports` MPC_BOOK_Sim_Exports` , Export #MiscYellow1 simfile LEO_MPC_SpeedCtrl_du.sim #ENDMYellow LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } MPC_SpeedCtrl_Sim_du #Library : Models: Simulink #DataSet : MPC_SpeedCtrl_Sim_du #Category: BOOK_MPC_Models #FileID : Cmex133 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-30-2019 23:22:31 #VehCode EXIT_PARSFILE Models\Simulink\Cmex133.par #BlueLink12 Models: Simulink`MPC_SpeedCtrl_Sim_du` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera107.par`08-02-2011`16:43:55 #FullDataName Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)`Vehicle Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw ENTER_PARSFILE Animator\Frames\Frame106.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw`Cameras ADD_REFERENCE_FRAME Cameras Camera Tracking X-Y-Z-Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_YAW_NAME yaw #MiscYellow0 cam_global_ambient .4 .4 .4 1 #ENDMYellow WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_yaw ANI_yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Cameras } Camera Tracking X-Y-Z-Yaw #Library : Animator: Reference Frame #DataSet : Camera Tracking X-Y-Z-Yaw #Category: Cameras #FileID : Frame106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame106.par #BlueLink0 Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw` Cameras` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 15 SET_DISTANCE 36 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 15 *SET_DISTANCE 36 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 37 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Vehicle Reference } Rear View High, Veh. Ref., (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View High, Veh. Ref., (Frt. Facing) #Category: Vehicle Reference #FileID : Camera107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera107.par #BlueLink0 Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)` Vehicle Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 1 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 0.753 0.753 0.753 SET_RUN_COLOR 0.753 0.753 0.753 FLAG_10 283 ID_RUN 283 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle123.par`08-02-2011`16:42:24 #FullDataName Vehicle: Assembly`E-Class, Sedan`CS E-Class #VehCode Ind_Ind #CheckBox0 0 #RingCtrl0 3 OPT_PT 3 #RingCtrl1 1 #RingCtrl2 1 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp111.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Front Comp.`CS E-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.8613 *R_SPRING_R 0.8613 *R_DAMPER_L 0.8681 *R_DAMPER_R 0.8681 *CT_FX_L -1.9e-6 *CT_FX_R -1.9e-6 *CS_FY_L -3.3e-5 *CS_FY_R -3.3e-5 *CS_MZ_L 1.4e-4 *CS_MZ_R 1.4e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 5e-5 *CI_FY_R 5e-5 *CI_MZ_L -5.3e-5 *CI_MZ_R -5.3e-5 *C_LONG_L 2.0e-4 *C_LONG_R 2.0e-4 *C_LAT_L 2.2e-5 *C_LAT_R 2.2e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.8681 *R_JOUNCE_R 0.8681 *R_REBOUND_L 0.8681 *R_REBOUND_R 0.8681 ENTER_PARSFILE Suspensions\Shocks\Shock101.par`08-02-2011`16:42:34 #FullDataName Suspension: Shock Absorber`Big Car Damping` #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 FD_TABLE LINEAR -1410, -5008 -720, -3436 -390, -2324 -210, -1792 -90, -1008 -20, -228 20, 228 90, 596 200, 784 390, 1100 760, 1796 1160, 2560 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Shock Absorber; Big Car Damping #Library : Suspension: Shock Absorber #DataSet : Big Car Damping #Category: #FileID : Shock101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Shock absorber EXIT_PARSFILE Suspensions\Shocks\Shock101.par #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx101.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 384 MX_AUX_COEFFICIENT 384 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 384 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 384 N-m/deg #Category: #FileID : AuxMx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx101.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 384 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb105.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+80 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 78, 0 79, 0 80, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -50, -10000 -49, 0 -48, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +80 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +80 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb105.par #BlueLink5 Suspension: Jounce and Rebound Stops`+80 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.8613 CMP_DAMP_COEFFICIENT 0.8681 CT_FX_COEFFICIENT -1.9e-6 CS_FY_COEFFICIENT -3.3e-5 CS_MZ_COEFFICIENT 1.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 5e-5 CI_MZ_COEFFICIENT -5.3e-5 C_LONG_COEFFICIENT 2.0e-4 C_LAT_COEFFICIENT 2.2e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.8681 CMP_RSTOP_COEFFICIENT 0.8681 ENTER_PARSFILE Suspensions\Springs\Spring109.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`34 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 34 FS_EXT_COEFFICIENT 34 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 3.0 SPRING_EXT_BETA 3.0 *SCALAR 34 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 34 N/mm #Library : Suspension: Spring #DataSet : 34 N/mm #Category: #FileID : Spring109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring109.par #BlueLink0 Suspension: Spring`34 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+80 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.8613 CMP_DAMP_COEFFICIENT 0.8681 CT_FX_COEFFICIENT -1.9e-6 CS_FY_COEFFICIENT -3.3e-5 CS_MZ_COEFFICIENT 1.4e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 5e-5 CI_MZ_COEFFICIENT -5.3e-5 C_LONG_COEFFICIENT 2.0e-4 C_LAT_COEFFICIENT 2.2e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.8681 CMP_RSTOP_COEFFICIENT 0.8681 #BlueLink3 Suspension: Spring`34 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS E-Class } E-Class, Sedan - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : E-Class, Sedan - Front Comp. #Category: CS E-Class #FileID : SuspCmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp111_note.txt Front spring rate chosen for a front ride frequency of 1.2 Hz and a front corner weight of 446 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp111_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp111.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Front Comp.` CS E-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin109.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`E-Class, Sedan - Front Suspension`CS E-Class iside 1 L_TRACK 1600 Y_CL_SUSP 0 M_US 90 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0.2 *TOE_R 0.2 *CAMBER_L -0.15 *CAMBER_R -0.15 R_US_STR 0.8 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive103.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_DIVE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE #RadioCtrl0 0 SUSP_DIVE_AXLE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { SLA } Front SLA - Dive Angle #Library : Suspension: Dive Angle (Caster Change) #DataSet : Front SLA - Dive Angle #Category: SLA #FileID : Dive103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive103_note.txt NOTE: Sign convention of the CS 7.01b and earlier datasets was reversed and demonstrated a pro-dive suspension. This dataset represents an anti-dive suspension. EXIT_NOTEFILE Suspensions\Dive\Dive103_note.txt EXIT_PARSFILE Suspensions\Dive\Dive103.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX103.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Front SLA - Longitudinal Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { SLA } Front SLA - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Front SLA - Longitudinal Movement #Category: SLA #FileID : SusX103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt Generic SLA Longitudinal movement vs. Jounce EXIT_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX103.par #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber103.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Front SLA - Camber Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.08171 -60, 0.996827 -50, 0.88789 -40, 0.755642 -30, 0.600569 -20, 0.422934 -10, 0.222791 0, 0 10, -0.245764 20, -0.515012 30, -0.808436 40, -1.12692 50, -1.47156 60, -1.84365 70, -2.24474 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { SLA } Front SLA - Camber Change #Library : Suspension: Camber Angle #DataSet : Front SLA - Camber Change #Category: SLA #FileID : Camber103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber103_note.txt Generic SLA Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber103_note.txt EXIT_PARSFILE Suspensions\Camber\Camber103.par #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat103.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Front SLA - Lateral Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { SLA } Front SLA - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Front SLA - Lateral Movement #Category: SLA #FileID : SusLat103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat103_note.txt Generic SLA Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat103_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat103.par #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe103.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Front SLA - Toe Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, 0.292407 -60, 0.237822 -50, 0.187561 -40, 0.141604 -30, 0.099916 -20, 0.062452 -10, 0.029164 0, 0 10, -0.025093 20, -0.046165 30, -0.063264 40, -0.076429 50, -0.085696 60, -0.091086 70, -0.09261 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { SLA } Front SLA - Toe Change #Library : Suspension: Toe Angle #DataSet : Front SLA - Toe Change #Category: SLA #FileID : Toe103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe103_note.txt Generic SLA Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe103_note.txt EXIT_PARSFILE Suspensions\Toe\Toe103.par #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -0.15 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.2 A_CAMBER -0.15 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS E-Class } E-Class, Sedan - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : E-Class, Sedan - Front Suspension #Category: CS E-Class #FileID : IndKin109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin109_note.txt Generic Front SLA suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin109_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin109.par #BlueLink19 Suspension: Independent System Kinematics`E-Class, Sedan - Front Suspension` CS E-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire109.par`08-02-2011`16:42:33 #FullDataName Tire`225/60 R18`Touring Tires X_LENGTH 364 Z_LENGTH 364 Y_LENGTH 225 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup108.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Euro Sedan Tire`Tires *X_REF_LENGTH 291 *Y_REF_LENGTH 195 *Z_REF_LENGTH 291 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL136.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive ENTER_PARSFILE Animator\Cameras\Camera103.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Top)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Fixed ENTER_PARSFILE Animator\Frames\Frame103.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Fixed` ADD_REFERENCE_FRAME Fixed #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll LOG_ENTRY Used Dataset: Animator: Reference Frame; Fixed #Library : Animator: Reference Frame #DataSet : Fixed #Category: #FileID : Frame103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame103.par #BlueLink0 Animator: Reference Frame`Fixed` ` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Fixed SET_LOOKPOINT_X -1.2 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 180 SET_ELEVATION 90 SET_DISTANCE 35 *SET_LOOKPOINT_X -1.2 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 180 *SET_ELEVATION 90 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Top) #Library : Animator: Camera Setup #DataSet : Shape Preview (Top) #Category: Shape Preview #FileID : Camera103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera103.par #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Tire #Library : Animator: Shape File Link #DataSet : Euro. Sedan Tire #Category: Tires #FileID : AniSTL136 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL136.par #BlueLink0 Animator: Shape File Link`Euro. Sedan Tire` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL137.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\wheel.obj #ENDMYellow SET_COLOR .62 .62 .62 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 40 *IMAGE_FIT_MODE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Wheel #Library : Animator: Shape File Link #DataSet : Euro. Sedan Wheel #Category: Tires #FileID : AniSTL137 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL137.par #BlueLink1 Animator: Shape File Link`Euro. Sedan Wheel` Tires` , Shape File ENTER_PARSFILE Animator\STL\AniSTL138.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Euro. Sedan Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\195_45R16\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y 0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Euro. Sedan Stripe #Library : Animator: Shape File Link #DataSet : Euro. Sedan Stripe #Category: Tires #FileID : AniSTL138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL138.par #BlueLink2 Animator: Shape File Link`Euro. Sedan Stripe` Tires` , Shape File x_ref_length 291 y_ref_length 195 z_ref_length 291 ENTER_PARSFILE Animator\Cameras\Camera104.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Side)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview ENTER_PARSFILE Animator\Frames\Frame101.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Yaw for Shape Preview`Shape Preview ADD_REFERENCE_FRAME Shape Preview Yaw for Shape Preview #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_YAW_NAME Yaw WRT_Yaw ANI_Yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Shape Preview } Yaw for Shape Preview #Library : Animator: Reference Frame #DataSet : Yaw for Shape Preview #Category: Shape Preview #FileID : Frame101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame101.par #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 0 SET_ELEVATION 0 SET_DISTANCE 35 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 0 *SET_ELEVATION 0 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Side) #Library : Animator: Camera Setup #DataSet : Shape Preview (Side) #Category: Shape Preview #FileID : Camera104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera104.par #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Euro Sedan Tire #Library : Animator: Shape Assembly #DataSet : Euro Sedan Tire #Category: Tires #FileID : StlGroup108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup108.par #BlueLink4 Animator: Shape Assembly`Euro Sedan Tire` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 225 ENTER_PARSFILE Animator\Sound\Set\SndSet111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 800 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 800; units = kg; #ENDMYellow ENTER_PARSFILE Animator\Sound\Sample\SndSmp112.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Lateral Slip`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 0.7 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod129.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Force Effects`Tire Lateral Slip Sound Modifiers #MiscYellow0 define_output mod1_<> = abs(fy_<>) /(rated_load_<> * 9.80665) * MuY_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod1_<> SOUNDMOD_INPUT_MIN 0.3 SOUNDMOD_INPUT_LOW 0.6 SOUNDMOD_INPUT_HIGH 0.9 SOUNDMOD_INPUT_MAX 1.2 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod1_<> ANI_mod1_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Lateral Slip Sound Modifiers } Loudness: Lateral Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Force Effects #Category: Tire Lateral Slip Sound Modifiers #FileID : SndMod129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod129.par #BlueLink0 Animator: Sound Modifier`Loudness: Lateral Force Effects` Tire Lateral Slip Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod130.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod2_<> = sin(min(abs(alphL_<>), 15 / dr) * abs(vxcen<>); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod2_<> SOUNDMOD_INPUT_MIN 0.1 SOUNDMOD_INPUT_LOW 0.5 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.5 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_mod2_<> ANI_mod2_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Lateral Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod130.par #BlueLink1 Animator: Sound Modifier`Loudness: Lateral Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Lateral Slip #Library : Animator: Sound Sample #DataSet : Lateral Slip #Category: Tire Sounds #FileID : SndSmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp112.par #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp113.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wheelspin / Brake Lockup`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod131.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Force Effects`Wheelspin / Lockup Sound Modifiers #MiscYellow0 define_output mod3_<> = abs(fx_<>) / (rated_load_<> * 9.80665) * MuX_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod3_<> SOUNDMOD_INPUT_MIN 0.2 SOUNDMOD_INPUT_LOW 0.4 SOUNDMOD_INPUT_HIGH 0.6 SOUNDMOD_INPUT_MAX 0.8 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod3_<> ANI_mod3_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wheelspin / Lockup Sound Modifiers } Loudness: Longitudinal Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Force Effects #Category: Wheelspin / Lockup Sound Modifiers #FileID : SndMod131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod131.par #BlueLink0 Animator: Sound Modifier`Loudness: Longitudinal Force Effects` Wheelspin / Lockup Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod132.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod4_<> = min(abs(KappL_<>), 1.0) * abs(vxcen<>) ; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod4_<> SOUNDMOD_INPUT_MIN 1.5 SOUNDMOD_INPUT_LOW 2.0 SOUNDMOD_INPUT_HIGH 2.5 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.3333 SOUNDMOD_OUTPUT_HIGH 0.6667 SOUNDMOD_OUTPUT_MAX 1.0 WRT_mod4_<> ANI_mod4_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Longitudinal Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod132.par #BlueLink1 Animator: Sound Modifier`Loudness: Longitudinal Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Wheelspin / Brake Lockup #Library : Animator: Sound Sample #DataSet : Wheelspin / Brake Lockup #Category: Tire Sounds #FileID : SndSmp113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp113.par #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 800 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 800 kg Rated Load #Category: Tire Sounds #FileID : SndSet111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet111.par #BlueLink13 Animator: Sound Set`Tire Sounds - 800 kg Rated Load` Tire Sounds` , Animator RRE 353 R0 364 FZ_TIRE_COEFFICIENT 278 FZ_MAX 100000 IT 0 L_RELAX_X 38 L_RELAX_Y 764 VLOW_ALPHA 5 RR_C 0.0041 RR_V 0.00003 RR_FX 1 OPT_TIRE_COMB 1 R_TIRE_COMB 1.1 ENTER_PARSFILE Tires\Mz\TireMz107.par`08-02-2011`16:42:32 #FullDataName Tire: Aligning Moment`225/60 R18`Touring Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.5, 13.74, 26.59, 38.42, 49.18, 58.84, 67.4, 74.85, 81.2 1, 27.52, 53.29, 77.08, 98.77, 118.28, 135.59, 150.69, 163.58 1.5, 38.52, 75, 109.07, 140.54, 169.23, 195.05, 217.91, 237.76 2, 42.77, 84.07, 123.55, 160.94, 195.99, 228.45, 258.1, 284.74 2.5, 40.05, 79.6, 118.43, 156.31, 192.98, 228.18, 261.6, 292.94 3, 33.77, 67.76, 101.91, 136.11, 170.21, 203.99, 237.23, 269.64 3.5, 26.96, 54.52, 82.71, 111.52, 140.91, 170.77, 200.97, 231.34 4, 21, 42.71, 65.25, 88.66, 112.96, 138.12, 164.12, 190.86 4.5, 16.15, 33.03, 50.78, 69.47, 89.15, 109.84, 131.57, 154.32 5, 12.31, 25.32, 39.18, 53.96, 69.73, 86.54, 104.45, 123.47 5.5, 9.27, 19.2, 29.94, 41.55, 54.11, 67.68, 82.33, 98.09 6, 6.85, 14.32, 22.54, 31.58, 41.53, 52.43, 64.36, 77.37 6.5, 4.9, 10.38, 16.56, 23.52, 31.32, 40.03, 49.71, 60.42 7, 3.3, 7.16, 11.68, 16.92, 22.96, 29.86, 37.67, 46.45 7.5, 1.99, 4.5, 7.63, 11.46, 16.04, 21.43, 27.68, 34.85 8, 0.89, 2.27, 4.25, 6.89, 10.24, 14.36, 19.3, 25.11 8.5, -0.04, 0.39, 1.39, 3.03, 5.34, 8.39, 12.21, 16.87 9, -0.84, -1.22, -1.05, -0.28, 1.15, 3.28, 6.16, 9.83 9.5, -1.52, -2.6, -3.15, -3.12, -2.46, -1.12, 0.94, 3.76 10, -2.12, -3.81, -4.98, -5.59, -5.59, -4.94, -3.59, -1.51 10.5, -2.64, -4.86, -6.59, -7.76, -8.33, -8.28, -7.55, -6.12 11, -3.1, -5.79, -8, -9.66, -10.75, -11.23, -11.05, -10.18 11.5, -3.51, -6.62, -9.25, -11.36, -12.9, -13.84, -14.14, -13.77 12, -3.88, -7.36, -10.37, -12.87, -14.81, -16.17, -16.9, -16.98 12.5, -4.21, -8.02, -11.38, -14.22, -16.53, -18.26, -19.38, -19.86 13, -4.5, -8.62, -12.28, -15.45, -18.08, -20.14, -21.6, -22.44 13.5, -4.77, -9.16, -13.1, -16.55, -19.48, -21.84, -23.62, -24.78 14, -5.02, -9.65, -13.85, -17.56, -20.75, -23.39, -25.45, -26.91 14.5, -5.24, -10.1, -14.53, -18.48, -21.91, -24.81, -27.13, -28.85 15, -5.44, -10.52, -15.16, -19.32, -22.98, -26.1, -28.66, -30.62 15.5, -5.63, -10.9, -15.73, -20.1, -23.96, -27.29, -30.06, -32.25 16, -5.8, -11.25, -16.26, -20.81, -24.86, -28.38, -31.36, -33.75 16.5, -5.97, -11.57, -16.75, -21.47, -25.69, -29.4, -32.55, -35.14 17, -6.11, -11.87, -17.21, -22.08, -26.47, -30.34, -33.66, -36.42 17.5, -6.25, -12.15, -17.63, -22.65, -27.19, -31.21, -34.69, -37.62 18, -6.38, -12.41, -18.02, -23.18, -27.86, -32.02, -35.65, -38.73 18.5, -6.5, -12.65, -18.39, -23.68, -28.48, -32.78, -36.55, -39.76 19, -6.62, -12.88, -18.74, -24.14, -29.07, -33.49, -37.39, -40.73 19.5, -6.72, -13.1, -19.06, -24.58, -29.62, -34.16, -38.17, -41.64 20, -6.82, -13.3, -19.36, -24.99, -30.13, -34.78, -38.91, -42.49 20.5, -6.92, -13.49, -19.65, -25.37, -30.62, -35.37, -39.6, -43.29 21, -7.01, -13.67, -19.92, -25.73, -31.08, -35.92, -40.25, -44.05 21.5, -7.09, -13.83, -20.18, -26.08, -31.51, -36.45, -40.87, -44.76 22, -7.17, -13.99, -20.42, -26.4, -31.92, -36.94, -41.45, -45.44 22.5, -7.24, -14.15, -20.64, -26.71, -32.3, -37.41, -42.01, -46.07 23, -7.32, -14.29, -20.86, -27, -32.67, -37.85, -42.53, -46.68 23.5, -7.38, -14.42, -21.07, -27.27, -33.02, -38.28, -43.03, -47.25 24, -7.45, -14.55, -21.26, -27.54, -33.35, -38.68, -43.5, -47.8 24.5, -7.51, -14.68, -21.45, -27.79, -33.66, -39.06, -43.95, -48.31 25, -7.57, -14.8, -21.63, -28.03, -33.97, -39.42, -44.38, -48.81 26, -7.57, -14.8, -21.63, -28.03, -33.97, -39.42, -44.38, -48.81 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Touring Tires } 225/60 R18 #Library : Tire: Aligning Moment #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireMz107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz107.par #BlueLink0 Tire: Aligning Moment`225/60 R18` Touring Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy107.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`225/60 R18`Touring Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.5, 276.28, 542.17, 796.11, 1037.22, 1264.9, 1478.75, 1678.46, 1863.81 1, 543.78, 1067.29, 1567.45, 2042.53, 2491.36, 2913.12, 3307.21, 3673.19 1.5, 794.63, 1560.03, 2291.71, 2987.17, 3644.68, 4263.02, 4841.27, 5378.78 2, 1022.61, 2008.24, 2951.2, 3848.24, 4697.14, 5496.28, 6244.46, 6940.76 2.5, 1223.67, 2403.99, 3534.24, 4610.54, 5630.23, 6591.31, 7492.28, 8331.97 3, 1396.06, 2743.8, 4035.64, 5267.18, 6435.36, 7537.86, 8572.88, 9539 3.5, 1540.13, 3028.22, 4456.04, 5818.77, 7113, 8336.12, 9486.09, 10561.24 4, 1657.77, 3260.87, 4800.56, 6271.72, 7670.65, 8994.49, 10240.97, 11408.22 4.5, 1751.86, 3447.27, 5077.17, 6636.17, 8120.35, 9526.68, 10852.66, 12096.26 5, 1825.68, 3593.81, 5295.1, 6923.97, 8476.36, 9949.04, 11339.39, 12645.19 5.5, 1882.54, 3706.94, 5463.74, 7147.24, 8753.26, 10278.46, 11720.06, 13075.75 6, 1925.52, 3792.65, 5591.84, 7317.32, 8964.81, 10530.87, 12012.67, 13407.74 6.5, 1957.31, 3856.21, 5687.13, 7444.25, 9123.23, 10720.57, 12233.34, 13659.03 7, 1980.19, 3902.12, 5756.22, 7536.65, 9239.02, 10859.81, 12396.02, 13845.08 7.5, 1996.04, 3934.07, 5804.56, 7601.65, 9320.93, 10958.85, 12512.39, 13978.92 8, 2006.38, 3955.09, 5836.61, 7645.08, 9376.12, 11026.13, 12592.07, 14071.29 8.5, 2012.44, 3967.57, 5855.92, 7671.64, 9410.35, 11068.44, 12642.86, 14130.95 9, 2015.19, 3973.45, 5865.35, 7685.08, 9428.24, 11091.25, 12671.03, 14164.92 9.5, 2015.4, 3974.24, 5867.15, 7688.35, 9433.46, 11098.89, 12681.58, 14178.84 10, 2013.65, 3971.12, 5863.1, 7683.82, 9428.92, 11094.83, 12678.48, 14177.19 10.5, 2010.43, 3965.04, 5854.58, 7673.31, 9416.9, 11081.77, 12664.87, 14163.51 11, 2006.09, 3956.73, 5842.69, 7658.29, 9399.2, 11061.86, 12643.23, 14140.62 11.5, 2000.94, 3946.76, 5828.3, 7639.9, 9377.24, 11036.8, 12615.52, 14110.74 12, 1995.19, 3935.59, 5812.08, 7619.02, 9352.14, 11007.91, 12583.3, 14075.63 12.5, 1989.02, 3923.55, 5794.54, 7596.36, 9324.76, 10976.24, 12547.76, 14036.68 13, 1982.57, 3910.94, 5776.1, 7572.47, 9295.8, 10942.61, 12509.88, 13994.97 13.5, 1975.94, 3897.96, 5757.09, 7547.77, 9265.79, 10907.67, 12470.41, 13951.37 14, 1969.22, 3884.77, 5737.75, 7522.61, 9235.15, 10871.92, 12429.93, 13906.55 14.5, 1962.46, 3871.51, 5718.27, 7497.23, 9204.21, 10835.75, 12388.91, 13861.05 15, 1955.73, 3858.28, 5698.81, 7471.85, 9173.21, 10799.49, 12347.71, 13815.27 15.5, 1949.05, 3845.15, 5679.48, 7446.61, 9142.37, 10763.35, 12306.61, 13769.55 16, 1942.46, 3832.17, 5660.38, 7421.64, 9111.82, 10727.53, 12265.82, 13724.13 16.5, 1935.97, 3819.4, 5641.55, 7397.02, 9081.68, 10692.16, 12225.52, 13679.2 17, 1929.6, 3806.86, 5623.06, 7372.82, 9052.04, 10657.35, 12185.83, 13634.92 17.5, 1923.37, 3794.57, 5604.94, 7349.1, 9022.96, 10623.17, 12146.83, 13591.38 18, 1917.28, 3782.56, 5587.21, 7325.88, 8994.48, 10589.68, 12108.6, 13548.67 18.5, 1911.33, 3770.83, 5569.89, 7303.18, 8966.64, 10556.93, 12071.18, 13506.85 19, 1905.53, 3759.38, 5552.99, 7281.02, 8939.44, 10524.92, 12034.6, 13465.95 19.5, 1899.87, 3748.23, 5536.51, 7259.41, 8912.91, 10493.68, 11998.88, 13425.99 20, 1894.37, 3737.36, 5520.45, 7238.35, 8887.04, 10463.21, 11964.03, 13386.99 20.5, 1889.01, 3726.78, 5504.81, 7217.83, 8861.82, 10433.51, 11930.05, 13348.95 21, 1883.79, 3716.48, 5489.59, 7197.84, 8837.27, 10404.57, 11896.93, 13311.86 21.5, 1878.72, 3706.46, 5474.77, 7178.39, 8813.35, 10376.38, 11864.66, 13275.71 22, 1873.78, 3696.71, 5460.34, 7159.45, 8790.07, 10348.93, 11833.23, 13240.49 22.5, 1868.98, 3687.23, 5446.31, 7141.02, 8767.4, 10322.2, 11802.62, 13206.18 23, 1864.31, 3677.99, 5432.65, 7123.08, 8745.34, 10296.17, 11772.8, 13172.75 23.5, 1859.76, 3669.01, 5419.36, 7105.62, 8723.86, 10270.83, 11743.76, 13140.19 24, 1855.34, 3660.27, 5406.42, 7088.63, 8702.94, 10246.15, 11715.48, 13108.47 24.5, 1851.04, 3651.76, 5393.83, 7072.08, 8682.58, 10222.12, 11687.93, 13077.57 25, 1846.85, 3643.48, 5381.57, 7055.96, 8662.75, 10198.71, 11661.1, 13047.47 26, 1846.85, 3643.48, 5381.57, 7055.96, 8662.75, 10198.71, 11661.1, 13047.47 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Touring Tires } 225/60 R18 #Library : Tire: Lateral Force #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireFy107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy107.par #BlueLink1 Tire: Lateral Force`225/60 R18` Touring Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx107.par`08-02-2011`16:42:28 #FullDataName Tire: Longitudinal Force`225/60 R18`Touring Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 1961.33, 3922.66, 5883.99, 7845.32, 9806.65, 11767.98, 13729.31, 15690.64 0.02, 862.81, 1783.13, 2762.04, 3794.59, 4873.05, 5988.03, 7129.14, 8285.48 0.04, 1405.11, 2856.38, 4345.65, 5859.21, 7381.77, 8898.09, 10393.74, 11855.5 0.06, 1683.96, 3384.43, 5089.04, 6782.93, 8451.6, 10081.79, 11661.81, 13181.59 0.08, 1827.85, 3649.23, 5451.02, 7219.83, 8943.43, 10611.08, 12213.62, 13743.29 0.1, 1906.98, 3792.03, 5642.2, 7445.59, 9191.77, 10871.81, 12478.17, 14004.57 0.12, 1953.08, 3873.7, 5749.19, 7568.78, 9323.31, 11005.08, 12607.67, 14125.76 0.14, 1980.9, 3921.81, 5810.31, 7636.48, 9392.07, 11070.27, 12665.46, 14173.03 0.16, 1997.79, 3949.97, 5844.33, 7671.56, 9424.12, 11095.9, 12681.88, 14178.04 0.18, 2007.75, 3965.55, 5861.32, 7686.27, 9433.43, 11097.23, 12673.18, 14157.7 0.2, 2013.13, 3972.81, 5867.14, 7687.73, 9428.09, 11083.11, 12648.74, 14121.81 0.22, 2015.35, 3974.42, 5865.42, 7680.34, 9413.11, 11059, 12614.36, 14076.35 0.24, 2015.35, 3972.07, 5858.5, 7666.95, 9391.71, 11028.42, 12573.74, 14025.16 0.26, 2013.76, 3966.92, 5847.96, 7649.47, 9366.06, 10993.69, 12529.34, 13970.72 0.28, 2011.02, 3959.8, 5834.91, 7629.22, 9337.64, 10956.43, 12482.8, 13914.72 0.3, 2007.45, 3951.26, 5820.11, 7607.14, 9307.51, 10917.73, 12435.27, 13858.28 0.32, 2003.28, 3941.72, 5804.15, 7583.9, 9276.39, 10878.38, 12387.52, 13802.18 0.34, 1998.68, 3931.51, 5787.42, 7559.98, 9244.83, 10838.92, 12340.11, 13746.92 0.36, 1993.78, 3920.84, 5770.24, 7535.74, 9213.2, 10799.74, 12293.41, 13692.85 0.38, 1988.68, 3909.89, 5752.83, 7511.45, 9181.77, 10761.12, 12247.67, 13640.2 0.4, 1983.44, 3898.79, 5735.37, 7487.29, 9150.75, 10723.23, 12203.05, 13589.1 0.42, 1978.13, 3887.65, 5717.98, 7463.4, 9120.27, 10686.22, 12159.68, 13539.63 0.44, 1972.79, 3876.53, 5700.76, 7439.89, 9090.44, 10650.16, 12117.59, 13491.82 0.46, 1967.46, 3865.5, 5683.77, 7416.82, 9061.31, 10615.11, 12076.84, 13445.67 0.48, 1962.16, 3854.6, 5667.07, 7394.26, 9032.94, 10581.08, 12037.42, 13401.17 0.5, 1956.92, 3843.87, 5650.7, 7372.23, 9005.34, 10548.1, 11999.32, 13358.28 0.52, 1951.74, 3833.32, 5634.68, 7350.75, 8978.52, 10516.16, 11962.53, 13316.96 0.54, 1946.64, 3822.97, 5619.03, 7329.84, 8952.5, 10485.24, 11927, 13277.16 0.56, 1941.64, 3812.84, 5603.75, 7309.5, 8927.25, 10455.32, 11892.7, 13238.82 0.58, 1936.72, 3802.94, 5588.86, 7289.72, 8902.77, 10426.39, 11859.61, 13201.89 0.6, 1931.91, 3793.26, 5574.36, 7270.51, 8879.05, 10398.4, 11827.66, 13166.31 0.62, 1927.2, 3783.82, 5560.24, 7251.85, 8856.06, 10371.34, 11796.82, 13132.02 0.64, 1922.59, 3774.61, 5546.5, 7233.73, 8833.78, 10345.16, 11767.05, 13098.97 0.66, 1918.09, 3765.62, 5533.13, 7216.15, 8812.19, 10319.85, 11738.3, 13067.1 0.68, 1913.69, 3756.87, 5520.13, 7199.08, 8791.28, 10295.36, 11710.53, 13036.36 0.7, 1909.4, 3748.34, 5507.49, 7182.5, 8771.01, 10271.67, 11683.7, 13006.7 0.72, 1905.21, 3740.03, 5495.19, 7166.42, 8751.37, 10248.74, 11657.77, 12978.07 0.74, 1901.12, 3731.93, 5483.24, 7150.8, 8732.33, 10226.54, 11632.7, 12950.42 0.76, 1897.13, 3724.05, 5471.61, 7135.64, 8713.87, 10205.05, 11608.46, 12923.72 0.78, 1893.24, 3716.37, 5460.31, 7120.91, 8695.97, 10184.23, 11585, 12897.9 0.8, 1889.45, 3708.9, 5449.31, 7106.61, 8678.6, 10164.06, 11562.3, 12872.95 0.82, 1885.74, 3701.61, 5438.62, 7092.72, 8661.76, 10144.52, 11540.33, 12848.81 0.84, 1882.13, 3694.52, 5428.22, 7079.23, 8645.4, 10125.56, 11519.04, 12825.45 0.86, 1878.61, 3687.6, 5418.09, 7066.11, 8629.53, 10107.19, 11498.41, 12802.83 0.88, 1875.18, 3680.87, 5408.24, 7053.36, 8614.12, 10089.36, 11478.42, 12780.93 0.9, 1871.82, 3674.31, 5398.66, 7040.96, 8599.14, 10072.05, 11459.04, 12759.71 0.92, 1868.55, 3667.91, 5389.32, 7028.9, 8584.6, 10055.26, 11440.24, 12739.14 0.94, 1865.36, 3661.68, 5380.23, 7017.17, 8570.46, 10038.95, 11421.99, 12719.2 0.96, 1862.25, 3655.6, 5371.38, 7005.76, 8556.71, 10023.1, 11404.28, 12699.85 0.98, 1859.21, 3649.67, 5362.76, 6994.65, 8543.34, 10007.7, 11387.08, 12681.07 1, 1856.24, 3643.89, 5354.35, 6983.83, 8530.34, 9992.73, 11370.37, 12662.85 1.02, 1856.24, 3643.89, 5354.35, 6983.83, 8530.34, 9992.73, 11370.37, 12662.85 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Touring Tires } 225/60 R18 #Library : Tire: Longitudinal Force #DataSet : 225/60 R18 #Category: Touring Tires #FileID : TireFx107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:28 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx107.par #BlueLink2 Tire: Longitudinal Force`225/60 R18` Touring Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff107.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`225/60 R18`Touring Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 784.532, -2.7453 1569.064, -6.7216 2353.596, -11.0497 3138.128, -15.5865 3922.66, -20.2695 4707.192, -25.0638 5491.724, -29.9472 6276.256, -34.9047 7060.788, -39.925 7845.32, -45 8629.852, -50.1231 9414.384, -55.2891 10198.916, -60.4937 10983.448, -65.7334 11767.98, -71.0051 12552.512, -76.3065 13337.044, -81.6351 14121.576, -86.9892 14906.108, -92.3669 15690.64, -97.767 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Touring Tires } 225/60 R18 #Library : Tire: Camber Thrust Coefficient #DataSet : 225/60 R18 #Category: Touring Tires #FileID : CamStiff107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff107.par #BlueLink3 Tire: Camber Thrust Coefficient`225/60 R18` Touring Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Touring Tires } 225/60 R18 #Library : Tire #DataSet : 225/60 R18 #Category: Touring Tires #FileID : Tire109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire109_note.txt 800 kg rated load EXIT_NOTEFILE Tires\Tire\Tire109_note.txt EXIT_PARSFILE Tires\Tire\Tire109.par #BlueLink9 Tire`225/60 R18` Touring Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`225/60 R18` Touring Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp112.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Rear Comp.`CS E-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.797 *R_SPRING_R 0.797 *R_DAMPER_L 0.797 *R_DAMPER_R 0.797 *CT_FX_L -6.3e-6 *CT_FX_R -6.3e-6 *CS_FY_L -8.3e-6 *CS_FY_R -8.3e-6 *CS_MZ_L -1.2e-4 *CS_MZ_R -1.2e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L -3.3e-5 *CI_FY_R -3.3e-5 *CI_MZ_L -5e-5 *CI_MZ_R -5e-5 *C_LONG_L 3.6e-5 *C_LONG_R 3.6e-5 *C_LAT_L 9.4e-5 *C_LAT_R 9.4e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.797 *R_JOUNCE_R 0.797 *R_REBOUND_L 0.797 *R_REBOUND_R 0.797 #BlueLink1 Suspension: Shock Absorber`Big Car Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx103.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 344 MX_AUX_COEFFICIENT 344 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 344 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 344 N-m/deg #Category: #FileID : AuxMx103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx103.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 344 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+70 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 68, 0 69, 0 70, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -70, -10000 -69, 0 -68, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +70 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +70 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.3e-5 CI_MZ_COEFFICIENT -5e-5 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 ENTER_PARSFILE Suspensions\Springs\Spring110.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`46 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 46 FS_EXT_COEFFICIENT 46 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 3.0 SPRING_EXT_BETA 3.0 *SCALAR 46 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 46 N/mm #Library : Suspension: Spring #DataSet : 46 N/mm #Category: #FileID : Spring110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring110.par #BlueLink0 Suspension: Spring`46 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big Car Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.797 CMP_DAMP_COEFFICIENT 0.797 CT_FX_COEFFICIENT -6.3e-6 CS_FY_COEFFICIENT -8.3e-6 CS_MZ_COEFFICIENT -1.2e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT -3.3e-5 CI_MZ_COEFFICIENT -5e-5 C_LONG_COEFFICIENT 3.6e-5 C_LAT_COEFFICIENT 9.4e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.797 CMP_RSTOP_COEFFICIENT 0.797 #BlueLink3 Suspension: Spring`46 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS E-Class } E-Class, Sedan - Rear Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : E-Class, Sedan - Rear Comp. #Category: CS E-Class #FileID : SuspCmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp112_note.txt Rear spring rate chosen for a rear ride frequency of 1.4 Hz and a rear corner weight of 380 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp112_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp112.par #BlueLink17 Suspension: Independent Compliance, Springs, and Dampers`E-Class, Sedan - Rear Comp.` CS E-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin110.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`E-Class, Sedan - Rear Suspension`CS E-Class iside 1 L_TRACK 1600 Y_CL_SUSP 0 M_US 90 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L 0.1 *TOE_R 0.1 *CAMBER_L 0 *CAMBER_R 0 R_US_STR 0.1 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive102.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive`5-Link Rear #RingCtrl0 CONSTANT *SCALAR 0 SUSP_DIVE_CONSTANT 0 #RadioCtrl0 0 SUSP_DIVE_AXLE_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { 5-Link Rear } Rear 5-Link - No Dive #Library : Suspension: Dive Angle (Caster Change) #DataSet : Rear 5-Link - No Dive #Category: 5-Link Rear #FileID : Dive102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table EXIT_PARSFILE Suspensions\Dive\Dive102.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX102.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement`5-Link Rear #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, 2.6892 -60, 1.76827 -50, 1.01123 -40, 0.426265 -30, 0.022328 -20, -0.190752 -10, -0.202151 0, 0 10, 0.428603 20, 1.09748 30, 2.02114 40, 3.21439 50, 4.69179 60, 6.46687 70, 8.5513 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, 2.6892 -60, 1.76827 -50, 1.01123 -40, 0.426265 -30, 0.022328 -20, -0.190752 -10, -0.202151 0, 0 10, 0.428603 20, 1.09748 30, 2.02114 40, 3.21439 50, 4.69179 60, 6.46687 70, 8.5513 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { 5-Link Rear } Rear 5-Link - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Rear 5-Link - Longitudinal Movement #Category: 5-Link Rear #FileID : SusX102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement EXIT_PARSFILE Suspensions\Longitudinal\SusX102.par #BlueLink1 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber102.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Rear 5-Link - Camber Change`5-Link Rear #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.66479 -60, 1.43877 -50, 1.21143 -40, 0.981031 -30, 0.746032 -20, 0.505036 -10, 0.25676 0, 0 10, -0.266403 20, -0.543604 30, -0.832791 40, -1.13524 50, -1.45237 60, -1.78583 70, -2.13754 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { 5-Link Rear } Rear 5-Link - Camber Change #Library : Suspension: Camber Angle #DataSet : Rear 5-Link - Camber Change #Category: 5-Link Rear #FileID : Camber102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber102_note.txt Generic 5-Link rear Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber102_note.txt EXIT_PARSFILE Suspensions\Camber\Camber102.par #BlueLink2 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat102.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Rear 5-Link - Lateral Movement`5-Link Rear #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 5.34878 -60, 3.82136 -50, 2.55534 -40, 1.54581 -30, 0.788587 -20, 0.280222 -10, 0.018009 0, 0 10, 0.22505 20, 0.692872 30, 1.40412 40, 2.36046 50, 3.56474 60, 5.02106 70, 6.73495 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 5.34878 -60, 3.82136 -50, 2.55534 -40, 1.54581 -30, 0.788587 -20, 0.280222 -10, 0.018009 0, 0 10, 0.22505 20, 0.692872 30, 1.40412 40, 2.36046 50, 3.56474 60, 5.02106 70, 6.73495 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { 5-Link Rear } Rear 5-Link - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Rear 5-Link - Lateral Movement #Category: 5-Link Rear #FileID : SusLat102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat102_note.txt Generic 5-Link rear Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat102_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat102.par #BlueLink3 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe102.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Rear 5-Link - Toe Change`5-Link Rear #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, -1.02057 -60, -0.828098 -50, -0.65623 -40, -0.501756 -30, -0.361641 -20, -0.233037 -10, -0.113294 0, 0 10, 0.108974 20, 0.215401 30, 0.320605 40, 0.425353 50, 0.529714 60, 0.632927 70, 0.733253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { 5-Link Rear } Rear 5-Link - Toe Change #Library : Suspension: Toe Angle #DataSet : Rear 5-Link - Toe Change #Category: 5-Link Rear #FileID : Toe102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe102_note.txt Generic 5-Link Rear Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe102_note.txt EXIT_PARSFILE Suspensions\Toe\Toe102.par #BlueLink4 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.1 A_CAMBER 0 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Rear 5-Link - No Dive` 5-Link Rear` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Rear 5-Link - Longitudinal Movement` 5-Link Rear` , Right wheel X #BlueLink7 Suspension: Camber Angle`Rear 5-Link - Camber Change` 5-Link Rear` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Rear 5-Link - Lateral Movement` 5-Link Rear` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Rear 5-Link - Toe Change` 5-Link Rear` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE 0.1 A_CAMBER 0 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS E-Class } E-Class, Sedan - Rear Suspension #Library : Suspension: Independent System Kinematics #DataSet : E-Class, Sedan - Rear Suspension #Category: CS E-Class #FileID : IndKin110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin110_note.txt Generic 5-Link rear suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin110_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin110.par #BlueLink20 Suspension: Independent System Kinematics`E-Class, Sedan - Rear Suspension` CS E-Class` , Rear kinematics * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`225/60 R18` Touring Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`225/60 R18` Touring Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass106.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`E-Class, Sedan Sprung Mass`CS E-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 3050 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 4250 H_H 500 H_CG_SU 530 LX_AXLE 3050 LX_CG_SU 1400 M_SU 1650 IXX_SU 928.1 IYY_SU 2788.5 IZZ_SU 3234.0 IXZ_SU 0 RX_SGUI 0.750 RY_SGUI 1.300 RZ_SGUI 1.400 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1480 Y_LENGTH 1880 *HWC_LF 320 *HWC_RF 320 *HWC_LR 300 *HWC_RR 300 H_WC 300 iside 2 H_WC 300 iaxle 1 iside 1 H_WC 320 iside 2 H_WC 320 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS E-Class } E-Class, Sedan Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : E-Class, Sedan Sprung Mass #Category: CS E-Class #FileID : SprMass106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass106.par #BlueLink0 Vehicle: Sprung Mass`E-Class, Sedan Sprung Mass` CS E-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero105.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`E-Class, Sedan Aero`CS E-Class #CheckBox0 0 X_REF_AERO -1525 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 3050 AREA_AERO 2.8 D_AIR 1.206 ENTER_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FX_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.45 -160, -0.45 -90, 0 -20, 0.325 0, 0.3 20, 0.325 90, 0 160, -0.45 180, -0.45 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fx (Drag) Coefficient; Drag Coefficient = 0.30 #Library : Aerodynamics: Fx (Drag) Coefficient #DataSet : Drag Coefficient = 0.30 #Category: #FileID : AirCFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Drag vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt A nominal drag coefficent of 0.3 is typical of contemporary mid-size sedans, such as Honda Accord, Toyota Camry, and Ford Fusion. The drag coefficient typically increases a few percent as the vehicle develops an aerodynamic sidelsip angle, peaking around 20 degrees. Drag reduces as sidelip increases because the component of the airspeed in the vehicle X direction reduces. EXIT_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force ENTER_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FY_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.5 0, 0 90, 0.5 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fy (Side Force) Coefficient; Side Force Coefficient = 0.5 at 90 deg #Library : Aerodynamics: Fy (Side Force) Coefficient #DataSet : Side Force Coefficient = 0.5 at 90 deg #Category: #FileID : AirCFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aero side force vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt The side force coefficient is typically larger then the drag coefficent, because the width of the vehiicle is less than the length, contirbuting to drag in the lateral direction. Also, the calculation of the coefficient is based on the projected frontal area of the car, while the side force is developed against the larger side area. EXIT_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force ENTER_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par`08-03-2011`08:02:01 #FullDataName Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FZ_AERO_SHAPING_TABLE SPLINE_FLAT -180, 0.4 -135, 0.45 -90, 0.35 -20, 0.185 0, 0.18 20, 0.185 90, 0.35 135, 0.45 180, 0.4 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fz (Lift) Coefficient; Lift Coefficient = 0.18 #Library : Aerodynamics: Fz (Lift) Coefficient #DataSet : Lift Coefficient = 0.18 #Category: #FileID : AirCFz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:01 #VehCode Lift vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt Nearly all passenger cars develop a small positive lift force at highway speeeds. EXIT_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force ENTER_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par`08-02-2011`16:43:55 #FullDataName Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MX_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.3 0, 0 90, 0.3 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mx (Roll Moment) Coefficient; Roll Moment Coefficient = 0.3 at 90 deg #Library : Aerodynamics: Mx (Roll Moment) Coefficient #DataSet : Roll Moment Coefficient = 0.3 at 90 deg #Category: #FileID : AirCMx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Aero Mx vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment ENTER_PARSFILE Aerodynamics\Aero_My\AirCMy104.par`08-03-2011`08:02:56 #FullDataName Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 MY_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.25 -160, -0.25 -90, 0 -20, 0.17 0, 0.15 20, 0.17 90, 0 160, -0.25 180, -0.25 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: My (Pitch Moment) Coefficient; Pitch Moment Coefficient = -0.15 #Library : Aerodynamics: My (Pitch Moment) Coefficient #DataSet : Pitch Moment Coefficient = -0.15 #Category: #FileID : AirCMy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:56 #VehCode Aero My vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_My\AirCMy104.par #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment ENTER_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par`08-03-2011`08:03:05 #FullDataName Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MZ_AERO_SHAPING_TABLE SPLINE -180, 0 -90, 0.05 0, 0 90, -0.05 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mz (Yaw Moment) Coefficient; Yaw Moment Coefficent = 0.05 at 90 deg #Library : Aerodynamics: Mz (Yaw Moment) Coefficient #DataSet : Yaw Moment Coefficent = 0.05 at 90 deg #Category: #FileID : AirCMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:03:05 #VehCode Aero Mz vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS E-Class } E-Class, Sedan Aero #Library : Aerodynamics: Basic #DataSet : E-Class, Sedan Aero #Category: CS E-Class #FileID : Aero105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero105_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero105_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero105.par #BlueLink1 Aerodynamics: Basic`E-Class, Sedan Aero` CS E-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh105.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`E-Class, Sedan`E-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 3048 OBJ_Y_LENGTH 1880 OBJ_Z_LENGTH 1480 *DZ_V 0 *LAT_WC 1600 *LAT_WC_2 1600 *HWC 375 *WHEEL_RATIO 1.1 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X 0 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_OFFSET_X -3.048 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.35625 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.1 SET_SCALE_Y 1.1 SET_SCALE_Z 1.1 SET_ANGLE_X 180 SET_OFFSET_X -3.048 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.35625 WRITE_ADD_REFERENCE_FRAME_SHADOW ENTER_PARSFILE Animator\STL\AniSTL104.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Vehicle Shadow Shape`Vehicle Shadow #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\vehicle_shadows\shadow.obj #ENDMYellow SET_COLOR 0.125 0.125 0.125 X_REF_LENGTH 2690 Y_REF_LENGTH 1900 Z_REF_LENGTH 1220 *TRANSPARENCY 0.8 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.8 show_front on show_back off #MiscYellow0 tranclucent_fix on #ENDMYellow #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Vehicle Shadow } Vehicle Shadow Shape #Library : Animator: Shape File Link #DataSet : Vehicle Shadow Shape #Category: Vehicle Shadow #FileID : AniSTL104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL104.par #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup111.par`08-02-2011`16:43:38 #FullDataName Animator: Shape Assembly`E-Class, Sedan`CS E-Class *COLOR .36 .117 .117 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.25 *X_REF_LENGTH 2711 *Y_REF_LENGTH 1725 *Z_REF_LENGTH 1400 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 0 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL128.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Body`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\body.obj #ENDMYellow SET_COLOR 0 0 .6 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Body #Library : Animator: Shape File Link #DataSet : European Sedan: Body #Category: CS European Sedan #FileID : AniSTL128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL128.par #BlueLink0 Animator: Shape File Link`European Sedan: Body` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL129.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Details`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\details.obj #ENDMYellow SET_COLOR 0.753 0.753 0.753 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Details #Library : Animator: Shape File Link #DataSet : European Sedan: Details #Category: CS European Sedan #FileID : AniSTL129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL129.par #BlueLink1 Animator: Shape File Link`European Sedan: Details` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL130.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Windows`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\windows.obj #ENDMYellow SET_COLOR 0 0 0 *SPECULAR 1 *TRANSPARENCY 0.7 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 0.7 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Windows #Library : Animator: Shape File Link #DataSet : European Sedan: Windows #Category: CS European Sedan #FileID : AniSTL130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL130.par #BlueLink2 Animator: Shape File Link`European Sedan: Windows` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL131.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Interior Trim`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\interior_trim.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Interior Trim #Library : Animator: Shape File Link #DataSet : European Sedan: Interior Trim #Category: CS European Sedan #FileID : AniSTL131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL131.par #BlueLink3 Animator: Shape File Link`European Sedan: Interior Trim` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL132.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Steering Wheel`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\steering_wheel.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Steering Wheel #Library : Animator: Shape File Link #DataSet : European Sedan: Steering Wheel #Category: CS European Sedan #FileID : AniSTL132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL132.par #BlueLink4 Animator: Shape File Link`European Sedan: Steering Wheel` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL133.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Seats`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\seats.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Seats #Library : Animator: Shape File Link #DataSet : European Sedan: Seats #Category: CS European Sedan #FileID : AniSTL133 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL133.par #BlueLink5 Animator: Shape File Link`European Sedan: Seats` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 ENTER_PARSFILE Animator\STL\AniSTL134.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Driver`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\driver\driver.obj #ENDMYellow SET_COLOR 0.69 0.69 0.69 *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Driver #Library : Animator: Shape File Link #DataSet : European Sedan: Driver #Category: CS European Sedan #FileID : AniSTL134 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL134.par #BlueLink13 Animator: Shape File Link`European Sedan: Driver` CS European Sedan` , Shape File set_lighting on set_offset_x 0 set_offset_y 0 set_offset_z 0.25 x_ref_length 2711 y_ref_length 1725 z_ref_length 1400 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS E-Class } E-Class, Sedan #Library : Animator: Shape Assembly #DataSet : E-Class, Sedan #Category: CS E-Class #FileID : StlGroup111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:38 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup111.par #BlueLink1 Animator: Shape Assembly`E-Class, Sedan` CS E-Class` , Vehicle body ENTER_PARSFILE Animator\Sound\Set\SndSet105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Gasoline Engine Vehicle`General Vehicle Sounds ENTER_PARSFILE Animator\Sound\Sample\SndSmp110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power Off`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_0.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod124.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_brake_torque -50; ! maximum engine braking torque define_output v_mod2 = if_gt_0_then(m_engout, 0, pow(m_engout/max_brake_torque, 0.5)); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod2 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod2 ANI_v_mod2 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod124.par #BlueLink0 Animator: Sound Modifier`Power Off Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod125.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 4000 SOUNDMOD_INPUT_HIGH 8000 SOUNDMOD_INPUT_MAX 12000 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod125 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod125.par #BlueLink1 Animator: Sound Modifier`Power Off Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 ENTER_PARSFILE Animator\Sound\Modifier\SndMod126.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Frequency with RPM`Gas Engine Sound Modifiers #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Frequency with RPM #Library : Animator: Sound Modifier #DataSet : Frequency with RPM #Category: Gas Engine Sound Modifiers #FileID : SndMod126 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt This modifier is based on a recording of a 4 cyl engine at 3500 RPM EXIT_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod126.par #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power Off #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power Off #Category: Gas Engine Sounds #FileID : SndSmp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt This sound set uses a sample recorded at closed throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp110.par #BlueLink0 Animator: Sound Sample`4 Cyl. - Power Off` Gas Engine Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power On`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_1.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod127.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_torque 265 define_output v_mod1 = if_gt_0_then(m_engout, pow(m_engout/max_torque, 0.5), 0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod1 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod1 ANI_v_mod1 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod127 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt This modifer is to be applied to power-on conditions, i.e, when the engine torque is positive. EXIT_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod127.par #BlueLink0 Animator: Sound Modifier`Power On Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod128.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod128.par #BlueLink1 Animator: Sound Modifier`Power On Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power On #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power On #Category: Gas Engine Sounds #FileID : SndSmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt This sound set uses a sample recorded at wide open throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp111.par #BlueLink1 Animator: Sound Sample`4 Cyl. - Power On` Gas Engine Sounds` , Sample 2 ENTER_PARSFILE Animator\Sound\Sample\SndSmp105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wind Noise`Wind Noise ADD_3D_SOUND Animator\Audio\Environment\Wind_1_Mono.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 0.3 SOUND_VOL_MIN 0.01 SOUND_VOL_MAX 9.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 9.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod122.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_parameter air_speed_ref 50; units = km/h; define_output v_mod3 = pow(vAir/air_speed_ref, 3.0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod3 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_v_mod3 ANI_v_mod3 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Loudness: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod122.par #BlueLink0 Animator: Sound Modifier`Loudness: Speed Effect` Wind Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod123.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Frequency: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_output v_mod4 = pow(vAir/air_speed_ref, 0.5); #ENDMYellow #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod4 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_v_mod4 ANI_v_mod4 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Frequency: Speed Effect #Library : Animator: Sound Modifier #DataSet : Frequency: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod123.par #BlueLink1 Animator: Sound Modifier`Frequency: Speed Effect` Wind Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Wind Noise } Wind Noise #Library : Animator: Sound Sample #DataSet : Wind Noise #Category: Wind Noise #FileID : SndSmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp105.par #BlueLink2 Animator: Sound Sample`Wind Noise` Wind Noise` , Sample 3 LOG_ENTRY Used Dataset: Animator: Sound Set; { General Vehicle Sounds } Gasoline Engine Vehicle #Library : Animator: Sound Set #DataSet : Gasoline Engine Vehicle #Category: General Vehicle Sounds #FileID : SndSet105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set ENTRY_NOTEFILE Animator\Sound\Set\SndSet105_note.txt The sound samples are based on a 4 cylinder engine. The frequency can be scaled for a different number of cylinders by setting the ncyls parameter here. EXIT_NOTEFILE Animator\Sound\Set\SndSet105_note.txt EXIT_PARSFILE Animator\Sound\Set\SndSet105.par #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL151.par`08-02-2011`16:43:41 #FullDataName Animator: Shape File Link`European Sedan: Brake Lights (E-Class)`CS European Sedan #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\european_sedan\brakes_on.obj #ENDMYellow SET_COLOR 1 .8 .8 SET_SCALE_X 1 SET_SCALE_Y 1.005 SET_SCALE_Z 1 SET_OFFSET_X -0.02 SET_OFFSET_Y 0 SET_OFFSET_Z 0.25 X_REF_LENGTH 2711 Y_REF_LENGTH 1725 Z_REF_LENGTH 1400 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS European Sedan } European Sedan: Brake Lights (E-Class) #Library : Animator: Shape File Link #DataSet : European Sedan: Brake Lights (E-Class) #Category: CS European Sedan #FileID : AniSTL151 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:41 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL151.par #BlueLink3 Animator: Shape File Link`European Sedan: Brake Lights (E-Class)` CS European Sedan` , Brake lights WRITE_REFERENCE_FRAME_SIZE ENTER_PARSFILE Animator\Cameras\Camera101.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Vehicle Pictures`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 1 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 230 SET_ELEVATION 6 SET_DISTANCE 12 *SET_LOOKPOINT_X 1 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 230 *SET_ELEVATION 6 *SET_DISTANCE 12 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Vehicle Pictures #Library : Animator: Camera Setup #DataSet : Vehicle Pictures #Category: Shape Preview #FileID : Camera101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera ENTRY_NOTEFILE Animator\Cameras\Camera101_note.txt Pause the animation at the very start and center the vehicle in the animator to take a picture for the Animator: Vehicle screen. EXIT_NOTEFILE Animator\Cameras\Camera101_note.txt EXIT_PARSFILE Animator\Cameras\Camera101.par #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera ENTER_PARSFILE Animator\STL\AniSTL114.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Blurred Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\blurred_tire\blurred_tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Blurred Tire #Library : Animator: Shape File Link #DataSet : Blurred Tire #Category: Tires #FileID : AniSTL114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL114.par #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { E-Class Vehicles } E-Class, Sedan #Library : Animator: Vehicles and Sensor Targets #DataSet : E-Class, Sedan #Category: E-Class Vehicles #FileID : AniVeh105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh105_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh105_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh105.par #BlueLink2 Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` , Vehicle animator data R_REAR_DRIVE_SC 1 PMAX_SC 200 ENTER_PARSFILE Powertrain\4wd\4WD103.par`08-02-2011`16:42:55 #FullDataName Powertrain: 4-Wheel Drive`250 kW, 7-spd., 2.65 Ratio` OPT_PT 3 OPT_ENGINE_PITCH_REACTION(1) 0 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 OPT_DIFF_INTERNAL(3) 1 #RingCtrl5 1 #RingCtrl6 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 #CheckBox1 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(1) 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine112.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`250 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.38 TC_THR_REL 0.02 TC_THR_APP 0.06 #CheckBox0 1 OPT_THROTTLE_DELAY 1 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 41.13, 126.46, 168.44, 171.86, 173.81, 174.77, 175.1, 175.18, 175.23, 175.18 633, 49.35, 154.32, 232.06, 247.82, 250.35, 251.38, 251.74, 251.77, 251.77, 251.77 750, 0, 145.21, 245.96, 268.1, 274.08, 276.25, 277.05, 277.12, 277.1, 277.07 1107, -16.45, 117.35, 288.44, 330.1, 346.63, 352.29, 354.4, 354.59, 354.55, 354.4 1463, -24.68, 78.29, 278.01, 345.45, 367.46, 377.44, 382.32, 383.45, 384.2, 391.51 1820, -27.97, 42.77, 246.75, 351.59, 388.29, 402.59, 410.23, 412.31, 413.85, 424.41 2177, -33.51, 16.45, 195.49, 338.42, 394.8, 427.7, 432.64, 437.57, 442.51, 453.42 2533, -42.07, -10.64, 135.08, 302.54, 398.09, 443.64, 455.67, 463.99, 468.83, 477.05 2890, -50.08, -25.19, 93.73, 255.06, 387.36, 448.48, 473.93, 480.34, 490.21, 498.44 3247, -57.14, -36.65, 62.58, 203.53, 371.29, 444.15, 477.05, 490.21, 500.08, 509.95 3603, -64.08, -46.7, 39.02, 160.4, 334.05, 430.99, 478.7, 493.5, 505.02, 514.89 3960, -71.06, -56.01, 19.61, 126.98, 289.7, 413.12, 473.76, 491.86, 503.37, 509.95 4317, -78.44, -65.43, 0.46, 95.46, 249.64, 394.29, 465.54, 481.99, 493.5, 503.27 4673, -86.11, -74.79, -16.57, 68.44, 207.81, 366.08, 452.38, 468.83, 485.28, 493.5 5030, -94.28, -84.03, -31.71, 44.85, 170.57, 330.59, 435.93, 452.38, 468.83, 477.05 5387, -102.47, -93.46, -45.75, 24, 138.78, 293.42, 410.15, 426.06, 448.04, 452.77 5743, -111.65, -103.3, -59.35, 4.69, 109.99, 254.69, 367.91, 393, 404.78, 409.44 6100, -121.65, -113.67, -72.91, -13.57, 83.71, 217.11, 322.13, 345.48, 356.46, 360.66 6500, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25, -133.25 6700, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89, -134.89 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 250 kW Engine #Library : Powertrain: Engine #DataSet : 250 kW Engine #Category: CS Engine Torque Curves #FileID : Engine112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine112.par #BlueLink0 Powertrain: Engine`250 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC104.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 250 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.009121 0.1, 0.009121 0.2, 0.009121 0.3, 0.009121 0.4, 0.00912 0.5, 0.009112 0.6, 0.009066 0.7, 0.008864 0.8, 0.008142 0.9, 0.005941 0.95, 0.00366 0.99, 0.000872 1.01, -0.000872 1.05, -0.00366 1.1, -0.005941 1.2, -0.008142 1.3, -0.008864 1.4, -0.009066 1.5, -0.009112 1.6, -0.00912 1.7, -0.009121 1.8, -0.009121 1.9, -0.009121 2, -0.009121 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 250 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 250 kW Engine #Category: CS Torque Converters #FileID : TC104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC104.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 250 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans104.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`7-Speed Transmission` #RingCtrl0 7 NGEARS 7 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.42 R_GEAR_TR(1) 4.38 R_GEAR_TR(2) 2.86 R_GEAR_TR(3) 1.92 R_GEAR_TR(4) 1.37 R_GEAR_TR(5) 1.00 R_GEAR_TR(6) 0.82 R_GEAR_TR(7) 0.70 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 ITR(7) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_F(7) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 R_EFF_TR_R(7) 0.99 T_SHIFT 0.35 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift113.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 1-2 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 629 0.2, 629 0.8, 1233 1, 1233 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 503 0.4, 503 0.8, 925 1, 925 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 1-2 Shift #Category: 7-speed #FileID : Shift113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift113.par #BlueLink0 Powertrain: Shift Schedule`7-speed, 1-2 Shift` 7-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift114.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 2-3 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 938 0.2, 938 0.8, 1888 1, 1888 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 750 0.4, 750 0.8, 1416 1, 1416 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 2-3 Shift #Category: 7-speed #FileID : Shift114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift114.par #BlueLink1 Powertrain: Shift Schedule`7-speed, 2-3 Shift` 7-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift115.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 3-4 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1314 0.2, 1314 0.8, 2813 1, 2813 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1051 0.4, 1051 0.8, 2109 1, 2109 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 3-4 Shift #Category: 7-speed #FileID : Shift115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift115.par #BlueLink2 Powertrain: Shift Schedule`7-speed, 3-4 Shift` 7-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift116.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 4-5 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 3942 1, 3942 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 2956 1, 2956 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 4-5 Shift #Category: 7-speed #FileID : Shift116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift116.par #BlueLink3 Powertrain: Shift Schedule`7-speed, 4-5 Shift` 7-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift117.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 5-6 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2195 0.2, 2195 0.8, 5400 1, 5400 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1756 0.4, 1756 0.8, 4050 1, 4050 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 5-6 Shift #Category: 7-speed #FileID : Shift117 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift117.par #BlueLink4 Powertrain: Shift Schedule`7-speed, 5-6 Shift` 7-speed` , Shift schedule igear 6 ENTER_PARSFILE Powertrain\Shift\Shift118.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`7-speed, 6-7 Shift`7-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2571 0.2, 2571 0.8, 6585 1, 6585 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2057 0.4, 2057 0.8, 4939 1, 4939 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 7-speed } 7-speed, 6-7 Shift #Library : Powertrain: Shift Schedule #DataSet : 7-speed, 6-7 Shift #Category: 7-speed #FileID : Shift118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift118.par #BlueLink5 Powertrain: Shift Schedule`7-speed, 6-7 Shift` 7-speed` , Shift schedule igear 7 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 7-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 7-Speed Transmission #Category: #FileID : Trans104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans104.par #BlueLink10 Powertrain: Transmission (18 Gears or CVT)`7-Speed Transmission` ` , Transmission (Extended) IDIFF 3 ENTER_PARSFILE Powertrain\Centerdiff\XC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transfer Case`Full Time Viscous 50/50` #CheckBox0 0 LOCKED_XC_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_XC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_XC 1.00 R_EFF_F_XC 0.99 R_EFF_R_XC 0.99 R_REAR_XC 0.5 LOCKED_XC_DAMP 0.8 LOCKED_XC_K 80 R_GEAR_DIFF 1.00 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 R_REAR_BIAS 0.5 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 LOG_ENTRY Used Dataset: Powertrain: Transfer Case; Full Time Viscous 50/50 #Library : Powertrain: Transfer Case #DataSet : Full Time Viscous 50/50 #Category: #FileID : XC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transfer case EXIT_PARSFILE Powertrain\Centerdiff\XC101.par #BlueLink3 Powertrain: Transfer Case`Full Time Viscous 50/50` ` , Transfer case IDIFF 1 ENTER_PARSFILE Powertrain\Frontdiff\F_Diff102.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front Differential`Viscous - Gear Ratio 2.65`CS Front Differentials #CheckBox0 0 LOCKED_FD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_FD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_FD 2.65 R_EFF_F_FD 0.99 R_EFF_R_FD 0.99 LOCKED_FD_DAMP 1 LOCKED_FD_K 100 IDS_F 0.013 IHS_LF 0.009 IHS_RF 0.009 R_GEAR_DIFF 2.65 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 1 LOCKED_DIFF_K 100 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Front Differential; { CS Front Differentials } Viscous - Gear Ratio 2.65 #Library : Powertrain: Front Differential #DataSet : Viscous - Gear Ratio 2.65 #Category: CS Front Differentials #FileID : F_Diff102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Front differential EXIT_PARSFILE Powertrain\Frontdiff\F_Diff102.par #BlueLink4 Powertrain: Front Differential`Viscous - Gear Ratio 2.65` CS Front Differentials` , Differential front IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff101.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Viscous - Gear Ratio 2.65`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_RD_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_RD 2.65 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 R_GEAR_DIFF 2.65 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Viscous - Gear Ratio 2.65 #Library : Powertrain: Rear Differential #DataSet : Viscous - Gear Ratio 2.65 #Category: CS Rear Differentials #FileID : R_Diff101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff101.par #BlueLink5 Powertrain: Rear Differential`Viscous - Gear Ratio 2.65` CS Rear Differentials` , Differential rear LOG_ENTRY Used Dataset: Powertrain: 4-Wheel Drive; 250 kW, 7-spd., 2.65 Ratio #Library : Powertrain: 4-Wheel Drive #DataSet : 250 kW, 7-spd., 2.65 Ratio #Category: #FileID : 4WD103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:55 #VehCode 4WD ENTRY_NOTEFILE Powertrain\4wd\4WD103_note.txt Generic 250 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 250 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\4wd\4WD103_note.txt EXIT_PARSFILE Powertrain\4wd\4WD103.par #BlueLink5 Powertrain: 4-Wheel Drive`250 kW, 7-spd., 2.65 Ratio` ` , All-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W111.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`E-Class, Sedan w/ ABS`CS E-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 OFF_F_SGUI 0.15 OFF_R_SGUI 0.15 ON_F_SGUI 0.1 ON_R_SGUI 0.1 V_F_SGUI 3 V_R_SGUI 3 #RingCtrl0 2 #RingCtrl1 2 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq107.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`350 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 350 MY_BRAKE_COEFFICIENT 350 LOG_ENTRY Used Dataset: Brakes: Torque; 350 N-m/MPa #Library : Brakes: Torque #DataSet : 350 N-m/MPa #Category: #FileID : BrkTrq107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq107.par #BlueLink0 Brakes: Torque`350 N-m/MPa` ` , Left front ENTER_PARSFILE Brakes\Proportioning\BrkProp101.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity Gain` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1 PBK_DL_COEFFICIENT 1 LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity Gain #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity Gain #Category: #FileID : BrkProp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve EXIT_PARSFILE Brakes\Proportioning\BrkProp101.par #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.1 ABS_VMIN 3 iside 2 #BlueLink1 Brakes: Torque`350 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq104.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`150 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 150 MY_BRAKE_COEFFICIENT 150 LOG_ENTRY Used Dataset: Brakes: Torque; 150 N-m/MPa #Library : Brakes: Torque #DataSet : 150 N-m/MPa #Category: #FileID : BrkTrq104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq104.par #BlueLink2 Brakes: Torque`150 N-m/MPa` ` , Left rear #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 2 ABS_SLIP_OFF 0.15 ABS_SLIP_ON 0.1 ABS_VMIN 3 iside 2 #BlueLink3 Brakes: Torque`150 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS E-Class } E-Class, Sedan w/ ABS #Library : Brakes: Four-Wheel System #DataSet : E-Class, Sedan w/ ABS #Category: CS E-Class #FileID : Brk4W111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W111.par #BlueLink6 Brakes: Four-Wheel System`E-Class, Sedan w/ ABS` CS E-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2106.par`08-02-2011`16:42:43 #FullDataName Steering`E-Class, Sedan: Power R&P`CS E-Class *I_COL 0.02 *I_GEAR_IN 0.0001 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 39.5 *L2_LKPO 0 *R1_LKPO 39.5 *R2_LKPO 0 *L1_AKPI 8.0 *L2_AKPI 0 *R1_AKPI 8.0 *R2_AKPI 0 *L1_ACAST 3.5 *L2_ACAST 0 *R1_ACAST 3.5 *R2_ACAST 0 *L1_XKPO -1.0 *L2_XKPO 0 *R1_XKPO -1.0 *R2_XKPO 0 *D_RACK_F 4 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 3 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 1 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.0001 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iside 2 L_KPO 39.5 A_KPI 8.0 A_CASTER 3.5 X_KPO -1.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 1 RACK_TRAVEL_COEFFICIENT 0.1 ENTER_PARSFILE Steering\Compliance\StrCmp101.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`No Steer Compliance` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 STEER_COMP_CONSTANT 0 LOG_ENTRY Used Dataset: Steering System: Compliance; No Steer Compliance #Library : Steering System: Compliance #DataSet : No Steer Compliance #Category: #FileID : StrCmp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp101.par #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 1 ENTER_PARSFILE Steering\Rack_Kinematics\RackKin113.par`08-02-2011`16:42:41 #FullDataName Steering System: Rack kinematics`E-Class, Sedan Rack Kinematics`CS E-Class #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 RACK_TRAVEL_TABLE SPLINE -916.4942656, -86.36 -867.4138828, -83.03846154 -824.4560495, -79.96296296 -786.3359267, -77.10714286 -752.1486273, -74.44827586 -721.227932, -71.96666667 -693.0665246, -69.64516129 -667.2677336, -67.46875 -643.5147167, -65.42424242 -621.549914, -63.5 -601.160854, -61.68571429 -582.1700533, -59.97222222 -564.4276481, -58.35135135 -547.8059016, -56.81578947 -532.1950333, -55.35897436 -517.5, -53.975 -503.6379761, -52.65853659 -490.5363551, -51.4047619 -478.1311476, -50.20930233 -466.3656834, -49.06818182 -455.1895493, -47.97777778 -444.557715, -46.93478261 -434.4298052, -45.93617021 -424.7694916, -44.97916667 -415.5439804, -44.06122449 -406.7235787, -43.18 0, 0 406.7235787, 43.18 415.5439804, 44.06122449 424.7694916, 44.97916667 434.4298052, 45.93617021 444.557715, 46.93478261 455.1895493, 47.97777778 466.3656834, 49.06818182 478.1311476, 50.20930233 490.5363551, 51.4047619 503.6379761, 52.65853659 517.5, 53.975 532.1950333, 55.35897436 547.8059016, 56.81578947 564.4276481, 58.35135135 582.1700533, 59.97222222 601.160854, 61.68571429 621.549914, 63.5 643.5147167, 65.42424242 667.2677336, 67.46875 693.0665246, 69.64516129 721.227932, 71.96666667 752.1486273, 74.44827586 786.3359267, 77.10714286 824.4560495, 79.96296296 867.4138828, 83.03846154 916.4942656, 86.36 ENDTABLE LOG_ENTRY Used Dataset: Steering System: Rack kinematics; { CS E-Class } E-Class, Sedan Rack Kinematics #Library : Steering System: Rack kinematics #DataSet : E-Class, Sedan Rack Kinematics #Category: CS E-Class #FileID : RackKin113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:41 #VehCode Steering rack EXIT_PARSFILE Steering\Rack_Kinematics\RackKin113.par #BlueLink4 Steering System: Rack kinematics`E-Class, Sedan Rack Kinematics` CS E-Class` , Rack input to output: front D_RACK 4 TBAR 2 ENTER_PARSFILE Steering\KinematicsRack2\RkKinAx119.par`08-02-2011`16:42:42 #FullDataName Steering System: Kinematics for 2 Wheels (Rack & Pinion)`E-Class, Sedan Wheel Kinematics`CS E-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 RACK_KIN_TABLE SPLINE -86.36, -64.00924761 -83.03846154, -60.39496988 -79.96296296, -57.20021687 -77.10714286, -54.34703994 -74.44827586, -51.77840772 -71.96666667, -49.45080212 -69.64516129, -47.32999144 -67.46875, -45.38842777 -65.42424242, -43.60354705 -63.5, -41.95660533 -61.68571429, -40.43185156 -59.97222222, -39.01592124 -58.35135135, -37.69738095 -56.81578947, -36.46637887 -55.35897436, -35.31437211 -53.975, -34.23391082 -52.65853659, -33.21846512 -51.4047619, -32.26228482 -50.20930233, -31.3602847 -49.06818182, -30.5079499 -47.97777778, -29.70125727 -46.93478261, -28.93660959 -45.93617021, -28.21078022 -44.97916667, -27.52086625 -44.06122449, -26.86424867 -43.18, -26.23855826 0, 0 43.18, 21.3843292 44.06122449, 21.8085708 44.97916667, 22.25095273 45.93617021, 22.71274374 46.93478261, 23.19534249 47.97777778, 23.70029582 49.06818182, 24.22932041 50.20930233, 24.78432852 51.4047619, 25.367459 52.65853659, 25.98111474 53.975, 26.62800831 55.35897436, 27.31121822 56.81578947, 28.03425875 58.35135135, 28.80116776 59.97222222, 29.61661825 61.68571429, 30.48606232 63.5, 31.41591936 65.42424242, 32.41382662 67.46875, 33.48897913 69.64516129, 34.65260127 71.96666667, 35.91861787 74.44827586, 37.30463871 77.10714286, 38.83345523 79.96296296, 40.53541768 83.03846154, 42.45242008 86.36, 44.6450584 ENDTABLE iside 1 #DiagramOne1 RACK_KIN_TABLE SPLINE -86.36, -44.6450584 -83.03846154, -42.45242008 -79.96296296, -40.53541768 -77.10714286, -38.83345523 -74.44827586, -37.30463871 -71.96666667, -35.91861787 -69.64516129, -34.65260127 -67.46875, -33.48897913 -65.42424242, -32.41382662 -63.5, -31.41591936 -61.68571429, -30.48606232 -59.97222222, -29.61661825 -58.35135135, -28.80116776 -56.81578947, -28.03425875 -55.35897436, -27.31121822 -53.975, -26.62800831 -52.65853659, -25.98111474 -51.4047619, -25.367459 -50.20930233, -24.78432852 -49.06818182, -24.22932041 -47.97777778, -23.70029582 -46.93478261, -23.19534249 -45.93617021, -22.71274374 -44.97916667, -22.25095273 -44.06122449, -21.8085708 -43.18, -21.3843292 0, 0 43.18, 26.23855826 44.06122449, 26.86424867 44.97916667, 27.52086625 45.93617021, 28.21078022 46.93478261, 28.93660959 47.97777778, 29.70125727 49.06818182, 30.5079499 50.20930233, 31.3602847 51.4047619, 32.26228482 52.65853659, 33.21846512 53.975, 34.23391082 55.35897436, 35.31437211 56.81578947, 36.46637887 58.35135135, 37.69738095 59.97222222, 39.01592124 61.68571429, 40.43185156 63.5, 41.95660533 65.42424242, 43.60354705 67.46875, 45.38842777 69.64516129, 47.32999144 71.96666667, 49.45080212 74.44827586, 51.77840772 77.10714286, 54.34703994 79.96296296, 57.20021687 83.03846154, 60.39496988 86.36, 64.00924761 ENDTABLE #RadioCtrl0 0 #RadioCtrl1 0 *SCALAR 0.45 *SCALAR2 0.45 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Rack & Pinion); { CS E-Class } E-Class, Sedan Wheel Kinematics #Library : Steering System: Kinematics for 2 Wheels (Rack & Pinion) #DataSet : E-Class, Sedan Wheel Kinematics #Category: CS E-Class #FileID : RkKinAx119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:42 #VehCode Steer kinematics EXIT_PARSFILE Steering\KinematicsRack2\RkKinAx119.par #BlueLink10 Steering System: Kinematics for 2 Wheels (Rack & Pinion)`E-Class, Sedan Wheel Kinematics` CS E-Class` , Rack to front wheels ENTER_PARSFILE Steering\Str_FBoost\FBoost102.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` #RingCtrl0 CARPET #RadioCtrl0 1 TC_BOOST 0.08 F_BOOST_MAX 2500 *3D_XLabel Vehicle speed (kph) *3D_YLabel Torsion bar torque (N-m) *3D_ZLabel Power assist force (N) #DiagramTwo0 *3D_DATA 6, 63 ! columns x rows F_BOOST_R_CARPET 0, 0, 20, 50, 80, 120, 200 -16, -2500, -2500, -2500, -2500, -2500, -2500 -15, -2500, -2500, -2500, -2500, -2500, -2500 -14.5, -2500, -2500, -2500, -2500, -2500, -2500 -14, -2500, -2500, -2500, -2500, -2500, -2500 -13.5, -2500, -2500, -2500, -2500, -2500, -2500 -13, -2500, -2500, -2500, -2500, -2500, -2500 -12.5, -2500, -2500, -2500, -2500, -2500, -2500 -12, -2500, -2500, -2500, -2500, -2500, -2500 -11.5, -2500, -2500, -2500, -2500, -2266.8, -2141.32 -11, -2500, -2420, -2427.94, -2280.85, -1736.13, -1500.51 -10.5, -2500, -2205, -2063.12, -1815.93, -1313.29, -1034.22 -10, -2500, -2000, -1739.25, -1429.79, -980, -700 -9.5, -2500, -1805, -1453.43, -1112.03, -720.39, -464.39 -9, -2500, -1620, -1202.85, -853.22, -520.81, -301.33 -8.5, -2500, -1445, -984.76, -644.8, -369.61, -190.74 -8, -2500, -1280, -796.49, -479.09, -256.9, -117.44 -7.5, -2500, -1125, -635.44, -349.2, -174.42, -70.08 -7, -2500, -980, -499.12, -249.03, -115.3, -40.35 -6.5, -2500, -845, -385.09, -173.2, -73.91, -22.31 -6, -2500, -720, -291, -117.01, -45.72, -11.76 -5.5, -2500, -605, -214.6, -76.39, -27.13, -5.86 -5, -2500, -500, -153.73, -47.89, -15.31, -2.73 -4.5, -2278.13, -405, -106.32, -28.58, -8.14, -1.18 -4, -1600, -320, -70.4, -16.05, -4.01, -0.46 -3.5, -1071.88, -245, -44.12, -8.34, -1.8, -0.16 -3, -675, -180, -25.72, -3.92, -0.71, -0.05 -2.5, -390.63, -125, -13.59, -1.6, -0.24, -0.01 -2, -200, -80, -6.22, -0.54, -0.06, 0 -1.5, -84.38, -45, -2.27, -0.13, -0.01, 0 -1, -25, -20, -0.55, -0.02, 0, 0 -0.5, -3.13, -5, -0.05, 0, 0, 0 0, 0, 0, 0, 0, 0, 0 0.5, 3.13, 5, 0.05, 0, 0, 0 1, 25, 20, 0.55, 0.02, 0, 0 1.5, 84.38, 45, 2.27, 0.13, 0.01, 0 2, 200, 80, 6.22, 0.54, 0.06, 0 2.5, 390.63, 125, 13.59, 1.6, 0.24, 0.01 3, 675, 180, 25.72, 3.92, 0.71, 0.05 3.5, 1071.88, 245, 44.12, 8.34, 1.8, 0.16 4, 1600, 320, 70.4, 16.05, 4.01, 0.46 4.5, 2278.13, 405, 106.32, 28.58, 8.14, 1.18 5, 2500, 500, 153.73, 47.89, 15.31, 2.73 5.5, 2500, 605, 214.6, 76.39, 27.13, 5.86 6, 2500, 720, 291, 117.01, 45.72, 11.76 6.5, 2500, 845, 385.09, 173.2, 73.91, 22.31 7, 2500, 980, 499.12, 249.03, 115.3, 40.35 7.5, 2500, 1125, 635.44, 349.2, 174.42, 70.08 8, 2500, 1280, 796.49, 479.09, 256.9, 117.44 8.5, 2500, 1445, 984.76, 644.8, 369.61, 190.74 9, 2500, 1620, 1202.85, 853.22, 520.81, 301.33 9.5, 2500, 1805, 1453.43, 1112.03, 720.39, 464.39 10, 2500, 2000, 1739.25, 1429.79, 980, 700 10.5, 2500, 2205, 2063.12, 1815.93, 1313.29, 1034.22 11, 2500, 2420, 2427.94, 2280.85, 1736.13, 1500.51 11.5, 2500, 2500, 2500, 2500, 2266.8, 2141.32 12, 2500, 2500, 2500, 2500, 2500, 2500 12.5, 2500, 2500, 2500, 2500, 2500, 2500 13, 2500, 2500, 2500, 2500, 2500, 2500 13.5, 2500, 2500, 2500, 2500, 2500, 2500 14, 2500, 2500, 2500, 2500, 2500, 2500 14.5, 2500, 2500, 2500, 2500, 2500, 2500 15, 2500, 2500, 2500, 2500, 2500, 2500 16, 2500, 2500, 2500, 2500, 2500, 2500 ENDTABLE LOG_ENTRY Used Dataset: Steering: Power Assist Force; Symetrical, Speed Sensitive High Boost Curve #Library : Steering: Power Assist Force #DataSet : Symetrical, Speed Sensitive High Boost Curve #Category: #FileID : FBoost102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist force EXIT_PARSFILE Steering\Str_FBoost\FBoost102.par #BlueLink19 Steering: Power Assist Force`Symetrical, Speed Sensitive High Boost Curve` ` , Front boost force ENTER_PARSFILE Steering\Compliance\StrCmp104.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`E-Class, Sedan - Steering Comp.`CS E-Class #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1.7738e-07 STEER_COMP_COEFFICIENT 1.7738e-07 LOG_ENTRY Used Dataset: Steering System: Compliance; { CS E-Class } E-Class, Sedan - Steering Comp. #Library : Steering System: Compliance #DataSet : E-Class, Sedan - Steering Comp. #Category: CS E-Class #FileID : StrCmp104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp104.par #BlueLink13 Steering System: Compliance`E-Class, Sedan - Steering Comp.` CS E-Class` , Front compliance ENTER_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par`08-02-2011`16:42:40 #FullDataName Steering: Parking Torque for 2 Wheels`Zero` #RingCtrl0 CONSTANT #RingCtrl1 CONSTANT #RadioCtrl0 0 #RadioCtrl1 0 *A_MZ_BETA_R 0.1 *A_MZ_BETA_L 0.1 *SCALAR 0 *SCALAR2 0 iside 2 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 iside 1 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 LOG_ENTRY Used Dataset: Steering: Parking Torque for 2 Wheels; Zero #Library : Steering: Parking Torque for 2 Wheels #DataSet : Zero #Category: #FileID : TqPkAx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Parking Torque EXIT_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS E-Class } E-Class, Sedan: Power R&P #Library : Steering #DataSet : E-Class, Sedan: Power R&P #Category: CS E-Class #FileID : StrSys2106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2106_note.txt Steering for a vehicle with Wheelbase = 3050 mm Front Track = 1600 mm EXIT_NOTEFILE Steering\System2\StrSys2106_note.txt EXIT_PARSFILE Steering\System2\StrSys2106.par #BlueLink7 Steering`E-Class, Sedan: Power R&P` CS E-Class` , Steering system *IMAGE_LINK Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS E-Class } E-Class, Sedan #Library : Vehicle: Assembly #DataSet : E-Class, Sedan #Category: CS E-Class #FileID : Vehicle123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:24 #VehCode Ind_Ind ENTRY_NOTEFILE Vehicles\Assembly\Vehicle123_note.txt Generic E-Class Sedan (Full-Size) with SLA front and 5-Link rear suspension. E-Class type vehicles include Audi A6, BMW 5-Series, Mercedes Benz E350, Lexus GS, Cadillac DTS, Chrysler 300C. EXIT_NOTEFILE Vehicles\Assembly\Vehicle123_note.txt EXIT_PARSFILE Vehicles\Assembly\Vehicle123.par #BlueLink2 Vehicle: Assembly`E-Class, Sedan` CS E-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc161.par`08-30-2019`17:18:33 #FullDataName Procedures`SpeedTrackingCtrl_LongLane`BOOK_MPC_Procedures #CheckBox0 1 OPT_INIT_CONFIG 1 #CheckBox1 1 OPT_INIT_ROAD 1 #CheckBox2 1 OPT_INIT_SPEED 1 #CheckBox3 1 #RingCtrl0 0 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 *SPEED 72 TSTOP 50 TSTART 0 SSTART 0 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 1 OPT_DIRECTION 1 Opt_SC 0 SPEED 72 SV_VXS 72 ENTER_PARSFILE Control\Driver\Driver105.par`08-02-2011`16:43:30 #FullDataName Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview`Constant Position #RingCtrl0 0 #RingCtrl1 CONSTANT LTARG_CONSTANT 0 #RadioCtrl0 0 AV_SW_MAX_DM 1200 TLAG_DM 0 A_SW_MAX_DM 720 *TPREV 1.5 *SCALAR 0 VLOW_DRIVER 10 #CheckBox0 0 OPT_DRIVER_MODEL 1 #CheckBox1 0 CREATE_PATH_OBJ off TPREV_CONSTANT 1.5 LOG_ENTRY Used Dataset: Control: Steering by the Closed-loop Driver Model; { Constant Position } No Offset, 1.5 sec. Preview #Library : Control: Steering by the Closed-loop Driver Model #DataSet : No Offset, 1.5 sec. Preview #Category: Constant Position #FileID : Driver105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:30 #VehCode Driver path follower EXIT_PARSFILE Control\Driver\Driver105.par #BlueLink27 Control: Steering by the Closed-loop Driver Model`No Offset, 1.5 sec. Preview` Constant Position` , Steering ENTER_PARSFILE Control\Braking\ConBrk101.par`08-02-2011`16:43:32 #FullDataName Control: Braking (Open Loop)`No Open-Loop Braking Pressure` #RingCtrl0 CONSTANT #RadioCtrl0 0 OPT_VMIN -1 *SCALAR 0 PBK_CON_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Braking (Open Loop); No Open-Loop Braking Pressure #Library : Control: Braking (Open Loop) #DataSet : No Open-Loop Braking Pressure #Category: #FileID : ConBrk101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:32 #VehCode Brake control EXIT_PARSFILE Control\Braking\ConBrk101.par #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Throttle\Throttle102.par`08-02-2011`16:43:27 #FullDataName Control: Throttle (Open Loop)`No Open-Loop Throttle` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 THROTTLE_ENGINE_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Throttle (Open Loop); No Open-Loop Throttle #Library : Control: Throttle (Open Loop) #DataSet : No Open-Loop Throttle #Category: #FileID : Throttle102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:27 #VehCode Open-loop throttle control EXIT_PARSFILE Control\Throttle\Throttle102.par #BlueLink29 Control: Throttle (Open Loop)`No Open-Loop Throttle` ` , Throttle ENTER_PARSFILE Control\Gear_at\GearAT101.par`08-02-2011`16:43:31 #FullDataName Control: Shifting (Closed Loop)`AT All Gears` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR NGEARS MODE_TRANS_CONSTANT NGEARS LOG_ENTRY Used Dataset: Control: Shifting (Closed Loop); AT All Gears #Library : Control: Shifting (Closed Loop) #DataSet : AT All Gears #Category: #FileID : GearAT101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:31 #VehCode Closed-loop shift control ENTRY_NOTEFILE Control\Gear_at\GearAT101_note.txt NGEARS is the internal symbol for the number of gears in a transmission. By setting the Mode to NGEARS, CarSim is automatically told to use all of the transmission gears. EXIT_NOTEFILE Control\Gear_at\GearAT101_note.txt EXIT_PARSFILE Control\Gear_at\GearAT101.par #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow ENTER_PARSFILE Roads\3D_Road\Road102.par`08-02-2011`16:43:22 #FullDataName Road: 3D Surface (All Properties)`1200 m One Lane`Straight OPT_ROAD 1 iroad 1 ! obsolete March 2011 idz_road 1 RR_SURF 1 DZ_SHADOW 0.005 L_CAMERA_FRONT 0.5 L_CAMERA_REAR 0.5 ENTER_PARSFILE Roads\Center_XY\RoadXY101.par`08-02-2011`16:43:06 #FullDataName Road: X-Y Coordinates of Centerline`Straight` SPATH 0 #CheckBox0 0 OPT_ROAD_LOOP 0 #RadioCtrl0 0 OPT_ROAD 1 #DiagramOne0 YIN_TABLE 0, 0, 0 100, 0, 100 ENDTABLE LOG_ENTRY Used Dataset: Road: X-Y Coordinates of Centerline; Straight #Library : Road: X-Y Coordinates of Centerline #DataSet : Straight #Category: #FileID : RoadXY101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:06 #VehCode Horizontal (X-Y) table EXIT_PARSFILE Roads\Center_XY\RoadXY101.par #BlueLink0 Road: X-Y Coordinates of Centerline`Straight` ` , Centerline geometry ENTER_PARSFILE Roads\Center_Z\RoadZ101.par`08-02-2011`16:43:13 #FullDataName Road: Centerline Elevation`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_ZS_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Centerline Elevation; Flat #Library : Road: Centerline Elevation #DataSet : Flat #Category: #FileID : RoadZ101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Centerline elevation: Z vs S EXIT_PARSFILE Roads\Center_Z\RoadZ101.par #BlueLink1 Road: Centerline Elevation`Flat` ` , Centerline elevation ENTER_PARSFILE Roads\dZ_Map\RdElMap101.par`08-02-2011`16:43:11 #FullDataName Road: Off-Center Elevation Map, S-L Grid`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_DZ_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Off-Center Elevation Map, S-L Grid; Flat #Library : Road: Off-Center Elevation Map, S-L Grid #DataSet : Flat #Category: #FileID : RdElMap101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:11 #VehCode dZ via S-L grid EXIT_PARSFILE Roads\dZ_Map\RdElMap101.par #BlueLink2 Road: Off-Center Elevation Map, S-L Grid`Flat` ` , Off-center elevation 1 ENTER_PARSFILE Roads\Friction\RdFric101.par`08-02-2011`16:43:12 #FullDataName Road: Friction Map, S-L Grid`0.85`Constant Mu OPT_ROAD 1 #RingCtrl0 CONSTANT MU_ROAD_CONSTANT 0.85 #RadioCtrl0 0 *SCALAR 0.85 LOG_ENTRY Used Dataset: Road: Friction Map, S-L Grid; { Constant Mu } 0.85 #Library : Road: Friction Map, S-L Grid #DataSet : 0.85 #Category: Constant Mu #FileID : RdFric101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:12 #VehCode Mu via S-L grid EXIT_PARSFILE Roads\Friction\RdFric101.par #BlueLink3 Road: Friction Map, S-L Grid`0.85` Constant Mu` , Friction ENTER_PARSFILE Roads\Shapes\RdShp102.par`08-02-2011`16:43:14 #FullDataName Road: Animator Surface Shapes`1200 m Road + 200 m Light Grass (One Lane)`Roads NLANES 5 OPTTHRESHOLD 1 #MiscYellow0 # 0.878 0.878 0.878, Road (One Lane), 0.2, 60, 1, -4, m, 4, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 60, 1, 4, m, 7.1, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 60, 3.1, -7.1, m, -100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 60, 3.1, 7.1, m, 100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 60, -0.969, -4, m, -7.1, m, , , -100, 1200, 5, , , #ENDMYellow #CheckBox0 0 MIRROR 0 COLOR(1) 0.878 0.878 0.878 MATERIAL(1) Road (One Lane) SPECULAR(1) 0.2 SCALE(1) 60 LTILES(1) 1 LIN(1) -4 LINUNITS(1) m LOUT(1) 4 LOUTUNITS(1) m SSTART(1) -100 SSTOP(1) 1200 SINT(1) 5 COLOR(2) 0.878 0.878 0.878 MATERIAL(2) Road Transition (Light) SPECULAR(2) 0.1 SCALE(2) 60 LTILES(2) 1 LIN(2) 4 LINUNITS(2) m LOUT(2) 7.1 LOUTUNITS(2) m SSTART(2) -100 SSTOP(2) 1200 SINT(2) 5 COLOR(3) 0.878 0.878 0.878 MATERIAL(3) Grass (Light) SPECULAR(3) 0.1 SCALE(3) 60 LTILES(3) 3.1 LIN(3) -7.1 LINUNITS(3) m LOUT(3) -100 LOUTUNITS(3) m SSTART(3) -100 SSTOP(3) 1200 SINT(3) 5 COLOR(4) 0.878 0.878 0.878 MATERIAL(4) Grass (Light) SPECULAR(4) 0.1 SCALE(4) 60 LTILES(4) 3.1 LIN(4) 7.1 LINUNITS(4) m LOUT(4) 100 LOUTUNITS(4) m SSTART(4) -100 SSTOP(4) 1200 SINT(4) 5 COLOR(5) 0.878 0.878 0.878 MATERIAL(5) Road Transition (Light) SPECULAR(5) 0.1 SCALE(5) 60 LTILES(5) -0.969 LIN(5) -4 LINUNITS(5) m LOUT(5) -7.1 LOUTUNITS(5) m SSTART(5) -100 SSTOP(5) 1200 SINT(5) 5 MTL_FILE Roads\materials\road.mtl LOG_ENTRY Used Dataset: Road: Animator Surface Shapes; { Roads } 1200 m Road + 200 m Light Grass (One Lane) #Library : Road: Animator Surface Shapes #DataSet : 1200 m Road + 200 m Light Grass (One Lane) #Category: Roads #FileID : RdShp102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:14 #VehCode Road shapes EXIT_PARSFILE Roads\Shapes\RdShp102.par #BlueLink4 Road: Animator Surface Shapes`1200 m Road + 200 m Light Grass (One Lane)` Roads` , Road shape definitions add_reference_frame road_stuff_1 reference_frame_ghosts off ENTER_PARSFILE Animator\Groups\Group101.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Partly Cloudy Sky`Skies ENTER_PARSFILE Animator\Frames\Frame104.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Front Point w/o Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Front Point w/o Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camF SET_Y_NAME Y_camF SET_Z_NAME Z_camF WRT_X_camF ANI_X_camF WRT_Y_camF ANI_Y_camF WRT_Z_camF ANI_Z_camF LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Front Point w/o Yaw #Library : Animator: Reference Frame #DataSet : Camera Front Point w/o Yaw #Category: Road Tracking #FileID : Frame104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame104.par #BlueLink0 Animator: Reference Frame`Camera Front Point w/o Yaw` Road Tracking` , Animator data ENTER_PARSFILE Animator\STL\AniSTL115.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Partly Cloudy Sky`Skies #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\Slightly_Cloudy_Sky\sky_road_course.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0 SMOOTH_MAX_ANGLE 30 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 1 set_fogging off #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Skies } Partly Cloudy Sky #Library : Animator: Shape File Link #DataSet : Partly Cloudy Sky #Category: Skies #FileID : AniSTL115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL115.par #BlueLink1 Animator: Shape File Link`Partly Cloudy Sky` Skies` , Animator data ENTER_PARSFILE Animator\STL\AniSTL116.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Complex Land Bowl for Light Grass`Terrain #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\landbowls\complex_land_for_light_grass.obj #ENDMYellow SET_COLOR .8 .8 .8 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 1 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Terrain } Complex Land Bowl for Light Grass #Library : Animator: Shape File Link #DataSet : Complex Land Bowl for Light Grass #Category: Terrain #FileID : AniSTL116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL116.par #BlueLink2 Animator: Shape File Link`Complex Land Bowl for Light Grass` Terrain` , Animator data #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { Skies } Partly Cloudy Sky #Library : Animator: Group #DataSet : Partly Cloudy Sky #Category: Skies #FileID : Group101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group EXIT_PARSFILE Animator\Groups\Group101.par #BlueLink6 Animator: Group`Partly Cloudy Sky` Skies` , Misc. animator set add_reference_frame road_stuff_2 reference_frame_ghosts off add_reference_frame road_stuff_3 reference_frame_ghosts off add_reference_frame road_stuff_4 reference_frame_ghosts off iroad 2 ! obsolete March 2011 idz_road 2 ENTER_PARSFILE Animator\Cameras\Camera105.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 1 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw ENTER_PARSFILE Animator\Frames\Frame105.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Rear Point w/ Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Rear Point w/ Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camR SET_Y_NAME Y_camR SET_Z_NAME Z_camR SET_YAW_NAME Yaw_CamR WRT_X_camR ANI_X_camR WRT_Y_camR ANI_Y_camR WRT_Z_camR ANI_Z_camR WRT_Yaw_CamR ANI_Yaw_CamR LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Rear Point w/ Yaw #Library : Animator: Reference Frame #DataSet : Camera Rear Point w/ Yaw #Category: Road Tracking #FileID : Frame105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame105.par #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 5 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 5 SET_DISTANCE 49 *SET_LOOKPOINT_X 5 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 5 *SET_DISTANCE 49 GHOST_COUNT 0 *LIGHT_X -1000 *LIGHT_Y -1000 *LIGHT_Z 10000 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 30 SUN_POSITION -1000 -1000 10000 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } Rear View , Road Ref. (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View , Road Ref. (Frt. Facing) #Category: Road Reference #FileID : Camera105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera105.par #BlueLink5 Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)` Road Reference` , Camera ENTER_PARSFILE Roads\3D_Road\Road102.ani`07-20-2011`03:07:16 add_reference_frame The Road reference_frame_ghosts off add_obj Roads\3D_Road\Road102_1.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.2 0.2 0.2 add_obj Roads\3D_Road\Road102_2.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_3.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_4.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road102_5.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 EXIT_PARSFILE Roads\3D_Road\Road102.ani LOG_ENTRY Used Dataset: Road: 3D Surface (All Properties); { Straight } 1200 m One Lane #Library : Road: 3D Surface (All Properties) #DataSet : 1200 m One Lane #Category: Straight #FileID : Road102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:22 #VehCode 3D road EXIT_PARSFILE Roads\3D_Road\Road102.par #BlueLink0 Road: 3D Surface (All Properties)`1200 m One Lane` Straight` , Misc. ENTER_PARSFILE Plot\Setup\Plot109.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Longitudinal Speed`Vehicle Motion ENTER_PARSFILE Plot\Transform\PlotTfm101.par`08-02-2011`16:43:01 #FullDataName Plot: Data Transform`No Filter` #RingCtrl0 None FILTER None LOG_ENTRY Used Dataset: Plot: Data Transform; No Filter #Library : Plot: Data Transform #DataSet : No Filter #Category: #FileID : PlotTfm101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:01 #VehCode Plot data transform EXIT_PARSFILE Plot\Transform\PlotTfm101.par #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) ENTER_PARSFILE Plot\Format\PlotFmt101.par`08-02-2011`16:43:00 #FullDataName Plot: Format`Default Plot Settings` #RingCtrl0 Axes AXES Axes #RingCtrl1 Noframe FRAME Noframe #RingCtrl2 NoGrid GRID NoGrid #RingCtrl3 FileTitle LEGENDFILE FileTitle #RingCtrl4 RigidBodyName LEGENDDATA_1 RigidBodyName #RingCtrl5 AutoLocation LEGENDLOCATION AutoLocation #RingCtrl6 Regular TITLEFONTSTYLE Regular #RingCtrl7 Regular LEGENDFONTSTYLE Regular #RingCtrl8 Regular LABELFONTSTYLE Regular #RingCtrl9 Regular TICLABELFONTSTYLE Regular #RingCtrl10 0 TITLELOCATION 0 LEGENDPERCENT 40 TITLEFONTSIZE 14 LEGENDFONTSIZE 12 LABELFONTSIZE 14 TICLABELFONTSIZE 12 TITLEFONTNAME Arial LEGENDFONTNAME Arial LABELFONTNAME Arial TICLABELFONTNAME Arial SYMBOLS 10,1,2,3,4,5,6,7,8,9,10,4,1,2,3,4,5,6,7,8 LINESTYL 1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1 COLORS 8,2,3,7,4,0,6,14,8,9,10,11,12,13,14,6,1,2,0,4 LOG_ENTRY Used Dataset: Plot: Format; Default Plot Settings #Library : Plot: Format #DataSet : Default Plot Settings #Category: #FileID : PlotFmt101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot format EXIT_PARSFILE Plot\Format\PlotFmt101.par #MiscYellow0 PLOTCHANNELS Vx, Time PLOTCHANNELS VxTarget, Time PLOTCHANNELS Vx_2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Longitudinal Speed LOG_ENTRY Used Dataset: Plot: Setup; { Vehicle Motion } Longitudinal Speed #Library : Plot: Setup #DataSet : Longitudinal Speed #Category: Vehicle Motion #FileID : Plot109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot109.par #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot ENTER_PARSFILE Plot\Setup\Plot118.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Throttle: Control Input`Controls: Driver #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Throttle, Time PLOTCHANNELS Thr_Eng, Time #ENDMYellow YAXISLABEL Throttle - #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Throttle: Control Input LOG_ENTRY Used Dataset: Plot: Setup; { Controls: Driver } Throttle: Control Input #Library : Plot: Setup #DataSet : Throttle: Control Input #Category: Controls: Driver #FileID : Plot118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup ENTRY_NOTEFILE Plot\Setup\Plot118_note.txt The variable "Throttle" is the sum of any throttle control calculated by the CarSim closed loop speed controller and any specified open-loop throttle. The source of open-loop throttle command may be from internal tables, VS commmands, or external sources like Simulink or the API. By using the sum of these 2 command sources you can implement things like driver aids for active safety that augment actions taken by the driver. When switching between open loop and closed loop control, take care that no unintended open loop control is "left over" by supplying a data set that sets the open loop component to zero. The variable "Thr_Eng" is the value of "Throttle", optionally modified by the application of a time constant to simulate the transient delay in changes in engine torque. EXIT_NOTEFILE Plot\Setup\Plot118_note.txt EXIT_PARSFILE Plot\Setup\Plot118.par #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot ENTER_PARSFILE Plot\Setup\Plot203.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Wheel Cylinder Pressures`Braking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS PbkCh_L1, Time PLOTCHANNELS PbkCh_R1, Time PLOTCHANNELS PbkCh_L2, Time PLOTCHANNELS PbkCh_R2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Wheel Cylinder Pressures LOG_ENTRY Used Dataset: Plot: Setup; { Braking } Wheel Cylinder Pressures #Library : Plot: Setup #DataSet : Wheel Cylinder Pressures #Category: Braking #FileID : Plot203 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot203.par #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot ENTER_PARSFILE Plot\Setup\Plot141.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Y vs. X -- Trajectory`Tracking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Yo, Xo PLOTCHANNELS Y_Design, X_Design PLOTCHANNELS Y_Target, X_Target PLOTCHANNELS Yo_2, Xo_2 #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Y vs. X -- Trajectory LOG_ENTRY Used Dataset: Plot: Setup; { Tracking } Y vs. X -- Trajectory #Library : Plot: Setup #DataSet : Y vs. X -- Trajectory #Category: Tracking #FileID : Plot141 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot141.par #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } SpeedTrackingCtrl_LongLane #Library : Procedures #DataSet : SpeedTrackingCtrl_LongLane #Category: BOOK_MPC_Procedures #FileID : Proc161 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-30-2019 17:18:33 #VehCode Procedure EXIT_PARSFILE Procedures\Proc161.par #BlueLink28 Procedures`SpeedTrackingCtrl_LongLane` BOOK_MPC_Procedures` , Procedure *IMAGE_LINK Animator: Vehicles and Sensor Targets`E-Class, Sedan` E-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter3_SpeedTrackingControl_MPC_du CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter3_SpeedTrackingControl_MPC_du LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter3_SpeedTrackingControl_MPC_du #Library : CarSim Run Control #DataSet : Chapter3_SpeedTrackingControl_MPC_du #Category: BOOK_MPC_Examples #FileID : Run283 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-30-2019 23:15:43 #VehCode Run EXIT_PARSFILE Runs\Run283.par END ================================================ FILE: Chapter-3/chap3_MPC_SpeedCtrl_du/LEO_MPC_SpeedCtrl_du.mdl ================================================ Model { Name "LEO_MPC_SpeedCtrl_du" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.49" NumModelReferences 0 NumTestPointedSignals 0 } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 1 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 2 $ClassName "Simulink.WindowInfo" IsActive [1] Location [2335.0, 242.0, 970.0, 740.0] Object { $PropName "ModelBrowserInfo" $ObjectID 3 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 4 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 5 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [920.0, 563.0] ZoomFactor [1.5] Offset [-53.066666666666663, 144.53333333333327] } } } Created "Fri Dec 16 13:40:57 2016" Creator "admin" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Fri Aug 30 23:23:13 2019" RTWModifiedTimeStamp 489108177 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "disabled" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 6 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "LEO_MPC_ACC" overrideMode_ [0.0] Array { Type "Cell" Dimension 1 Cell "LEO_MPC_ACC" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell [] PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 7 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 8 Version "1.13.1" StartTime "0.0" StopTime "50" AbsTol "auto" FixedStep "auto" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 9 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "Dataset" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 10 Version "1.13.1" Array { Type "Cell" Dimension 8 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" Cell "UseSpecifiedMinMax" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 128 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 11 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "EnableAllAsError" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "none" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 12 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 13 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 14 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 15 Version "1.13.1" Array { Type "Cell" Dimension 15 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" Cell "PortableWordSizes" Cell "GenerateWebview" Cell "GenerateCodeMetricsReport" Cell "GenerateCodeReplacementReport" Cell "GenerateErtSFunction" Cell "CreateSILPILBlock" Cell "CodeExecutionProfiling" Cell "CodeProfilingSaveOptions" Cell "CodeProfilingInstrumentation" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 23 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "InsertPolySpaceComments" Cell "SFDataObjDesc" Cell "MATLABFcnDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InternalIdentifier" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "CustomSymbolStrUtil" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 15 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "GenerateAllocFcn" Cell "PurelyIntegerCode" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "SupportNonInlinedSFcns" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns on CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface off GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 18 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 260, 130, 1340, 770 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 7 } Object { $PropName "DataTransfer" $ObjectID 19 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType Memory X0 "0" InheritSampleTime off LinearizeMemory off LinearizeAsDelay off StateMustResolveToSignalObject off RTWStateStorageClass "Auto" } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "LEO_MPC_SpeedCtrl_du" Location [2335, 242, 3305, 982] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "150" ReportName "simulink-default.rpt" SIDHighWatermark "15" Block { BlockType Reference Name "CarSim S-Function" SID "14" Ports [1, 1] Position [235, 204, 335, 266] ZOrder 33 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i" SIMFILE "LEO_MPC_SpeedCtrl_du.sim" } Block { BlockType Demux Name "Demux" SID "12" Ports [1, 2] Position [90, 250, 95, 310] ZOrder 21 BlockMirror on BackgroundColor "black" ShowName off Outputs "[2 4]" } Block { BlockType Memory Name "Memory1" SID "9" Position [170, 219, 180, 251] ZOrder 9 ShowName off } Block { BlockType S-Function Name "S-Function" SID "10" Ports [1, 1] Position [190, 334, 360, 386] ZOrder 13 BlockMirror on FunctionName "Main_MPC_SpeedCtrl_du" EnableBusSupport off } Block { BlockType Terminator Name "Terminator" SID "13" Position [25, 280, 60, 310] ZOrder 32 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace1" SID "11" Ports [1] Position [25, 345, 85, 375] ZOrder 20 BlockMirror on VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 17 SrcBlock "S-Function" SrcPort 1 Points [-41, 0] Branch { ZOrder 48 Points [0, -80] DstBlock "Demux" DstPort 1 } Branch { ZOrder 47 DstBlock "To Workspace1" DstPort 1 } } Line { ZOrder 25 SrcBlock "Demux" SrcPort 1 Points [-9, 0; 0, -30] DstBlock "Memory1" DstPort 1 } Line { ZOrder 26 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Line { ZOrder 41 SrcBlock "CarSim S-Function" SrcPort 1 Points [83, 0; 0, 125] DstBlock "S-Function" DstPort 1 } Line { ZOrder 53 SrcBlock "Memory1" SrcPort 1 DstBlock "CarSim S-Function" DstPort 1 } } } ================================================ FILE: Chapter-3/chap3_MPC_SpeedCtrl_du/MPC_Speed_Controller_CVXGEN.m ================================================ function [vars, status] = MPC_Speed_Controller_CVXGEN(kesi, SpeedProfile, MPCParameters) % Input: % Kesi = [Vh, Ah]' % SpeedProfile: cell(30,1),IJοٶȡ % MPCParameters MPCز % % Output: % status.converged: 1-converge, 0-nonconverge % vars.u_0, vars.u{i}: optimized acceleration % vars.x{i}: predicted states % % min J = Q*[Vh(k)-SpeedProfile]^2+R*[ah.des(k)]^2+S*[ah.des(k)-ah.des(k-1)]^2 % s.t. kesi(k+1) = A*kesi(k)*B*u(k) %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %---------------------------------------------------------------% %****Step(1): longitudinal vehilce model-one step delay******************% Ts = MPCParameters.Ts; % 50ms tao = 0.2; %ϵͳʱ0.2 for simulation and 0.5 for real-vehicle test A = [1 Ts; 0 1-Ts/tao]; B = [0; Ts/tao]; %------Or Թʱʱ˶ԱʾΪһ˫ϵͳ % A = [1 Ts; % 0 1]; % B = [0; Ts]; %****Step(2): MPC formulation;CVXGEN solver *****************************% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations settings.resid_tol = 1e-1; settings.eps = 1e1; params.x_0 = kesi; params.ahm = kesi(2); % params.vref = SpeedProfile; % params.An = A; params.Bn = B; params.C = [1, 0]; params.Q = MPCParameters.Q; %100 params.R = MPCParameters.R; %0.1 params.S = MPCParameters.S; %0.1 params.dumax = MPCParameters.dumax; params.umax = MPCParameters.umax; params.umin = MPCParameters.umin; [vars, status] = csolve_CC(params, settings); end ================================================ FILE: Chapter-3/chap3_MPC_SpeedCtrl_du/Main_MPC_SpeedCtrl_du.m ================================================ function [sys,x0,str,ts] =Main_MPC_SpeedCtrl_du(t,x,u,flag) %***************************************************************% % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 2; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 6; %S sizes.NumInputs = 2; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global MPCParameters; MPCParameters.Np = 30;% predictive horizon MPCParameters.Nc = 30;% control horizon MPCParameters.Nx = 2; %number of state variables MPCParameters.Nu = 1; %number of control inputs MPCParameters.Ny = 1; %number of output variables MPCParameters.Ts = 0.05; %Set the sample time MPCParameters.Q = 100; % cost weight factor MPCParameters.R = 1; % cost weight factor MPCParameters.S = 1; % cost weight factor MPCParameters.qp_solver = 2; %0: default, quadprog; 1:qpOASES; 2:CVXGEN MPCParameters.refspeedT = 1; %0: default, step speed profile; %1:sine-wave speed profile MPCParameters.umin = -5.0; % the min of deceleration MPCParameters.umax = 3.5; % the max of acceleration MPCParameters.dumin = -5.0; % minimum limits of jerk MPCParameters.dumax = 5.0; % maximum limits of jerk global WarmStart; WarmStart = zeros(MPCParameters.Np,1); % End of mdlInitializeSizes %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== function sys = mdlUpdates(t,x,u) % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== function sys = mdlOutputs(t,x,u) global InitialGapflag; global MPCParameters; global WarmStart; Vx = 0; a_x = 0; a_des = 0; t_Start = tic; % ʼʱ if InitialGapflag < 2 % get rid of the first two inputs InitialGapflag = InitialGapflag + 1;% else InitialGapflag = InitialGapflag + 1; %***********Step (1). Update vehicle states *************************% Vx = u(1)/3.6; %ٶȣλkm/h-->m/s a_x = u(2)*9.8; %ٶȣλg's-->m/s2 kesi = [Vx; a_x]; %³״̬ %********Step(2): Generate reference speed profile *******************% switch MPCParameters.refspeedT, case 0 % default, step speed profile %----趨ʽٶ----------------------% SpeedProfile = func_ConstantSpeed(InitialGapflag, MPCParameters); case 1 % sine-wave speed profile %----sine waveʽ ٶ--------------% SpeedProfile = func_SineSpeed(InitialGapflag,MPCParameters); otherwise % Unexpected flags % error(['unexpected speed-profile:',num2str(MPCParameters.refspeedT)]); % Error handling end % end of switch %****Step(3): update longitudinal vehilce model with inertial delay***% Ts = MPCParameters.Ts; % 50ms StateSpaceModel.A = [1 Ts; 0 1]; StateSpaceModel.B = [0; 1]; StateSpaceModel.C = [1, 0]; %****Step(4): MPC formulation;********************% %Update Theta and PHI for future states prediction [PHI, THETA] = func_Update_PHI_THETA(StateSpaceModel, MPCParameters); %Update H and f for cost function J [H, f, g] = func_Update_H_f(kesi, SpeedProfile, PHI, THETA, MPCParameters); %****Step(5): Call qp-solver********************% switch MPCParameters.qp_solver, case 0 % default qp-solver: quadprog [A, b, Aeq, beq, lb, ub] = func_Constraints_du_quadprog(MPCParameters, a_x); options = optimset('Display','off', ... 'TolFun', 1e-8, ... 'MaxIter', 2000, ... 'Algorithm', 'active-set', ... 'FinDiffType', 'forward', ... 'RelLineSrchBnd', [], ... 'RelLineSrchBndDuration', 1, ... 'TolConSQP', 1e-8); warning off all % close the warnings during computation U0 = WarmStart; [U, FVAL, EXITFLAG] = quadprog(H, g, A, b, Aeq, beq, lb, ub, U0, options); % WarmStart = shiftHorizon(U); % Prepare restart, nominal close loop if (1 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; fprintf('MPC solver not converged!\n'); end a_des = U(1); case 1 % qpOASES [A, lb, ub, lbA, ubA] = func_Constraints_du_qpOASES(MPCParameters, a_x); options = qpOASES_options('default', ... 'printLevel', 0); %=======================USE QP==================% [U, FVAL, EXITFLAG, iter, lambda] = qpOASES(H, g, A, lb, ub, lbA, ubA, options); % %=======================USE SQP==================% % try % H=sparse(H); % A=sparse(A); % catch % fprintf('qpOASES Error reported\n'); % end % if (qpOASES_hotstart_flag) % [qpOASES_QP, U, FVAL, EXITFLAG, iter, lambda] = qpOASES_sequence('i', H, g, A, lb, ub, lbA, ubA, options); % qpOASES_hotstart_flag = 1; % else % [U, FVAL, EXITFLAG, iter, lambda] = qpOASES_sequence('m', qpOASES_QP, H, g, A, lb, ub, lbA, ubA, options); % % end if (0 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; fprintf('MPC solver: qpOASES not converged!\n'); end a_des = U(1); case 2 % CVXGEN %--Licenseƣ鲻ṩCVXGENsolver߿ [vars, status] = MPC_Speed_Controller_CVXGEN(kesi, SpeedProfile, MPCParameters); if (1 == status.converged) %if optimization succeeded. a_des = vars.u_0; else a_des = 0; fprintf('MPC solver not converged!\n'); end otherwise % Unexpected flags % error(['unexpected qp-solver, Sol_method=',num2str(flag)]); % Error handling end % end of switch end % end of if Initialflag < 1 % %****Step(6): ļٶThrottleBrake;********************% [Throttle, Brake] = func_AccelerationTrackingController(a_des); t_Elapsed = toc( t_Start ); %computation time sys = [Throttle; Brake;t_Elapsed; Vx; a_x; a_des]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== function [Vref] = func_SineSpeed(Index, MPCParameters) %ʽٶ %****Sine wave parameters T = 50; %ٶߵڣunit: s freq = 1/T; %ٶߵƵʣunit: Hz Amplit = 10;%ٶߵķֵ offst = 20; %ٶߵƫ Ts = MPCParameters.Ts; %ʱ=0.05unit: s Np = MPCParameters.Np; % Ԥʱ30 Vref = cell(Np,1); t0 = Index*Ts; for i = 1:1:Np t = t0 + i*Ts; Vref{i,1} = Amplit*sin(2*pi*freq*t) + offst; end % end %EoF function [Vref] = func_ConstantSpeed(InitialGapflag, MPCParameters) % ɽʽٶ Ts = MPCParameters.Ts; %ʱ=0.05unit: s Np = MPCParameters.Np; % Ԥʱ30 Vref = cell(Np,1); % Զݵʽ if InitialGapflag < 400 Vset = 10; else if InitialGapflag < 800 Vset = 10; else if InitialGapflag < 1500 Vset = 20; else Vset = 5; end end end for i = 1:1:Np Vref{i,1} = Vset; end % end %EoF function [Throttle, Brake] = func_AccelerationTrackingController(ahopt) % λٶתΪſƶѹ K_brake = 0.3; K_throttle = 0.1; %0.05; Brake_Sat = 15; Throttle_Sat = 1; if ahopt < 0 % Brake control Brake = K_brake * ahopt; if Brake > Brake_Sat Brake = Brake_Sat; end Throttle = 0; else % throttle control Brake = 0; Throttle = K_throttle *ahopt; if Throttle > Throttle_Sat Throttle = Throttle_Sat; end if Throttle < 0 Throttle = 0; end end % end %EoF function u0 = shiftHorizon(u) %shift control horizon u0 = [u(:,2:size(u,2)), u(:,size(u,2))]; % size(u,2)) function [PHI, THETA] = func_Update_PHI_THETA(StateSpaceModel, MPCParameters) %***************************************************************% % Ԥʽ Y(t)=PHI*kesi(t)+THETA*DU(t) % Y(t) = [Eta(t+1|t) Eta(t+2|t) Eta(t+3|t) ... Eta(t+Np|t)]' %***************************************************************% Np = MPCParameters.Np; Nc = MPCParameters.Nc; Nx = MPCParameters.Nx; Ny = MPCParameters.Ny; Nu = MPCParameters.Nu; A = StateSpaceModel.A; B = StateSpaceModel.B; C = StateSpaceModel.C; PHI_cell=cell(Np,1); %PHI=[CA CA^2 CA^3 ... CA^Np]' THETA_cell=cell(Np,Nc); %THETA for j=1:1:Np PHI_cell{j,1}=C*A^j; % demision:Ny* Nx for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; % demision:Ny*Nu else THETA_cell{j,k}=zeros(Ny,Nu); end end end PHI=cell2mat(PHI_cell); % size(PHI)=[(Ny*Np) * Nx] THETA=cell2mat(THETA_cell);% size(THETA)=[Ny*Np Nu*Nc] % end %EoF function[H, f, g] = func_Update_H_f(kesi, SpeedProfile, PHI, THETA, MPCParameters) %***************************************************************% % trajectory planning %***************************************************************% Np = MPCParameters.Np; Nc = MPCParameters.Nc; Q = MPCParameters.Q; R = MPCParameters.R; Qq = kron(eye(Np),Q); % Q = [Np*Nx] * [Np*Nx] Rr = kron(eye(Nc),R); % R = [Nc*Nu] * [Nc*Nu] Vref = cell2mat(SpeedProfile); error = PHI * kesi; %[(Nx*Np) * 1] H = THETA'*Qq*THETA + Rr; f = (error' - Vref')*Qq*THETA; g = f'; % end %EoF function [A, b, Aeq, beq, lb, ub] = func_Constraints_du_quadprog(MPCParameters, um) %************************************************************************% % generate the constraints of the vehicle % %************************************************************************% Np = MPCParameters.Np; Nc = Np; dumax = MPCParameters.dumax; umin = MPCParameters.umin; umax = MPCParameters.umax; Umin = kron(ones(Nc,1),umin); Umax = kron(ones(Nc,1),umax); Ut = kron(ones(Nc,1),um); %----(1) A*x<=b----------% A_t=zeros(Nc,Nc); for p=1:1:Nc for q=1:1:Nc if p >= q A_t(p,q)=1; else A_t(p,q)=0; end end end A_cell=cell(2,1); A_cell{1,1} = A_t; % A_cell{2,1} = -A_t; A=cell2mat(A_cell); % b_cell=cell(2, 1); b_cell{1,1} = Umax - Ut; % b_cell{2,1} = -Umin + Ut; b=cell2mat(b_cell); % %----(2) Aeq*x=beq----------% Aeq = []; beq = []; %----(3) lb== q A_t(p,q)=1; else A_t(p,q)=0; end end end ubA = Umax - Ut; % lbA = Umin - Ut; %---- lb= 1 ) && ( ischar( varargin{nargin} ) ) ) error('ERROR (qpOASES_options): Options must be specified in pairs!'); end switch ( varargin{1} ) case 'default' options = qpOASES_default_options(); case 'reliable' options = qpOASES_reliable_options(); case {'MPC','mpc','fast'} options = qpOASES_MPC_options(); otherwise error( ['ERROR (qpOASES_options): Only the following option schemes are defined: ''default'', ''reliable'', ''MPC''!'] ); end firstIsStructOrScheme = 1; end else error('ERROR (qpOASES_options): First argument needs to be a string or an options struct!'); end end end % set options to user-defined values for i=(1+firstIsStructOrScheme):2:nargin argName = varargin{i}; argValue = varargin{i+1}; if ( ( isempty( argName ) ) || ( ~ischar( argName ) ) ) error('ERROR (qpOASES_options): Argmument no. %d has to be a non-empty string!',i ); end if ( ( ischar(argValue) ) || ( ~isscalar( argValue ) ) ) error('ERROR (qpOASES_options): Argmument no. %d has to be a scalar constant!',i+1 ); end if ( ~isfield( options,argName ) ) error('ERROR (qpOASES_options): Argmument no. %d is an invalid option!',i ); end eval( ['options.',argName,' = ',num2str(argValue),';'] ); end end function [ options ] = qpOASES_default_options( ) % setup options struct with default values options = struct( 'maxIter', -1, ... 'maxCpuTime', -1, ... 'printLevel', 1, ... ... 'enableRamping', 1, ... 'enableFarBounds', 1, ... 'enableFlippingBounds', 1, ... 'enableRegularisation', 0, ... 'enableFullLITests', 0, ... 'enableNZCTests', 1, ... 'enableDriftCorrection', 1, ... 'enableCholeskyRefactorisation', 0, ... 'enableEqualities', 0, ... ... 'terminationTolerance', 5.0e6*eps, ... 'boundTolerance', 1.0e6*eps, ... 'boundRelaxation', 1.0e4, ... 'epsNum', -1.0e3*eps, ... 'epsDen', 1.0e3*eps, ... 'maxPrimalJump', 1.0e8, ... 'maxDualJump', 1.0e8, ... ... 'initialRamping', 0.5, ... 'finalRamping', 1.0, ... 'initialFarBounds', 1.0e6, ... 'growFarBounds', 1.0e3, ... 'initialStatusBounds', -1, ... 'epsFlipping', 1.0e3*eps, ... 'numRegularisationSteps', 0, ... 'epsRegularisation', 1.0e3*eps, ... 'numRefinementSteps', 1, ... 'epsIterRef', 1.0e2*eps, ... 'epsLITests', 1.0e5*eps, ... 'epsNZCTests', 3.1e3*eps ); end function [ options ] = qpOASES_reliable_options( ) % setup options struct with values for most reliable QP solution options = qpOASES_default_options( ); options.enableFullLITests = 1; options.enableCholeskyRefactorisation = 1; options.numRefinementSteps = 2; end function [ options ] = qpOASES_MPC_options( ) % setup options struct with values for most reliable QP solution options = qpOASES_default_options( ); options.enableRamping = 0; options.enableFarBounds = 1; options.enableFlippingBounds = 0; options.enableRegularisation = 1; options.enableNZCTests = 0; options.enableDriftCorrection = 0; options.enableEqualities = 1; options.terminationTolerance = 1.0e9*eps; options.initialStatusBounds = 0; options.numRegularisationSteps = 1; options.numRefinementSteps = 0; end ================================================ FILE: Chapter-3/chapter3_4_2.m ================================================ function [sys,x0,str,ts] =Main_MPC_SpeedCtrl(t,x,u,flag) % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 2; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 6; %S sizes.NumInputs = 2; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global MPCParameters; MPCParameters.Np = 30;% predictive horizon MPCParameters.Nc = 30;% control horizon MPCParameters.Nx = 2; %number of state variables MPCParameters.Nu = 1; %number of control inputs MPCParameters.Ny = 1; %number of output variables MPCParameters.Ts = 0.05; %Set the sample time MPCParameters.Q = 100; % cost weight factor MPCParameters.R = 0.1; % cost weight factor MPCParameters.S = 0.1; % cost weight factor MPCParameters.qp_solver = 0; %0: default, quadprog; 1:qpOASES MPCParameters.refspeedT = 1; %0: default, step speed profile; %1:sine-wave speed profile MPCParameters.umin = -5.0; % the min of deceleration MPCParameters.umax = 3.5; % the max of acceleration MPCParameters.dumin = -5.0; % minimum limits of jerk MPCParameters.dumax = 5.0; % maximum limits of jerk global WarmStart; WarmStart = zeros(MPCParameters.Np,1); % End of mdlInitializeSizes %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== function sys = mdlUpdates(t,x,u) % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== function sys = mdlOutputs(t,x,u) global InitialGapflag; global MPCParameters; global WarmStart; Vx = 0; a_x = 0; a_des = 0; t_Start = tic; % ʼʱ if InitialGapflag < 2 % get rid of the first two inputs InitialGapflag = InitialGapflag + 1;% delay else InitialGapflag = InitialGapflag + 1; %***********Step (1). Update vehicle states *************************% Vx = u(1)/3.6; %ٶȣλkm/h-->m/s a_x = u(2)*9.8; %ٶȣλg's-->m/s2 kesi = [Vx; a_x]; %³״̬ %********Step(2): Generate reference speed profile *******************% switch MPCParameters.refspeedT, case 0 % default, step speed profile %----趨ʽٶ----------------------% SpeedProfile = func_ConstantSpeed(InitialGapflag, MPCParameters); case 1 % sine-wave speed profile %----sine waveʽ ٶ--------------% SpeedProfile = func_SineSpeed(InitialGapflag,MPCParameters); otherwise % Unexpected flags % error(['unexpected speed-profile:',num2str(MPCParameters.refspeedT)]); % Error handling end % end of switch %****Step(3): update longitudinal vehilce model with inertial delay**8% Ts = MPCParameters.Ts; % 50ms tao = 0.2; %ϵͳʱ0.2 for simulation StateSpaceModel.A = [1 Ts; 0 1-Ts/tao]; StateSpaceModel.B = [0; Ts/tao]; StateSpaceModel.C = [1, 0]; %****Step(4): MPC formulation;********************% %Update Theta and PHI for future states prediction [PHI, THETA] = func_Update_PHI_THETA(StateSpaceModel, MPCParameters); %Update H and f for cost function J [H, f, g] = func_Update_H_f(kesi, SpeedProfile, PHI, THETA, MPCParameters); %****Step(5): Call qp-solver********************% switch MPCParameters.qp_solver, case 0 % default qp-solver: quadprog [A, b, Aeq, beq, lb, ub] = func_Constraints_u_quadprog(MPCParameters); options = optimset('Display','off', ... 'TolFun', 1e-8, ... 'MaxIter', 2000, ... 'Algorithm', 'active-set', ... 'FinDiffType', 'forward', ... 'RelLineSrchBnd', [], ... 'RelLineSrchBndDuration', 1, ... 'TolConSQP', 1e-8); warning off all % close the warnings during computation U0 = WarmStart; [U, FVAL, EXITFLAG] = quadprog(H, g, A, b, Aeq, beq, lb, ub, U0, options); % WarmStart = shiftHorizon(U); % Prepare restart, nominal close loop if (1 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; fprintf('MPC solver not converged!\n'); end a_des = U(1); case 1 % qpOASES [A, lb, ub, lbA, ubA] = func_Constraints_u_qpOASES(MPCParameters); options = qpOASES_options('default', ... 'printLevel', 0); %=======================USE QP==================% [U, FVAL, EXITFLAG, iter, lambda] = qpOASES(H, g, A, lb, ub, lbA, ubA, options); % %=======================USE SQP==================% % try % H=sparse(H); % A=sparse(A); % catch % fprintf('qpOASES Error reported\n'); % end % if (qpOASES_hotstart_flag) % [qpOASES_QP, U, FVAL, EXITFLAG, iter, lambda] = qpOASES_sequence('i', H, g, A, lb, ub, lbA, ubA, options); % qpOASES_hotstart_flag = 1; % else % [U, FVAL, EXITFLAG, iter, lambda] = qpOASES_sequence('m', qpOASES_QP, H, g, A, lb, ub, lbA, ubA, options); % % end if (0 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; fprintf('MPC solver: qpOASES not converged!\n'); end a_des = U(1); otherwise % Unexpected flags % error(['unexpected qp-solver, Sol_method=',num2str(flag)]); % Error handling end % end of switch end % end of if Initialflag < 1 % %****Step(6): ļٶThrottleBrake;********************% [Throttle, Brake] = func_AccelerationTrackingController(a_des); t_Elapsed = toc( t_Start ); %computation time sys = [Throttle; Brake;t_Elapsed; Vx; a_x; a_des]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== function [Vref] = func_SineSpeed(Index, MPCParameters) %ʽٶ %****Sine wave parameters T = 50; %ٶߵڣunit: s freq = 1/T; %ٶߵƵʣunit: Hz Amplit = 10;%ٶߵķֵ offst = 20; %ٶߵƫ Ts = MPCParameters.Ts; %ʱ=0.05unit: s Np = MPCParameters.Np; % Ԥʱ30 Vref = cell(Np,1); t0 = Index*Ts; for i = 1:1:Np t = t0 + i*Ts; Vref{i,1} = Amplit*sin(2*pi*freq*t) + offst; end % end %EoF function [Vref] = func_ConstantSpeed(InitialGapflag, MPCParameters) % ɽʽٶ Ts = MPCParameters.Ts; %ʱ=0.05unit: s Np = MPCParameters.Np; % Ԥʱ30 Vref = cell(Np,1); % Զݵʽ if InitialGapflag < 400 Vset = 10; else if InitialGapflag < 800 Vset = 10; else if InitialGapflag < 1500 Vset = 20; else Vset = 5; end end end for i = 1:1:Np Vref{i,1} = Vset; end % end %EoF function [Throttle, Brake] = func_AccelerationTrackingController(ahopt) % λٶתΪſƶѹ K_brake = 0.3; K_throttle = 0.1; %0.05; Brake_Sat = 15; Throttle_Sat = 1; if ahopt < 0 % Brake control Brake = K_brake * ahopt; if Brake > Brake_Sat Brake = Brake_Sat; end Throttle = 0; else % throttle control Brake = 0; Throttle = K_throttle *ahopt; if Throttle > Throttle_Sat Throttle = Throttle_Sat; end if Throttle < 0 Throttle = 0; end end % end %EoF function u0 = shiftHorizon(u) %shift control horizon u0 = [u(:,2:size(u,2)), u(:,size(u,2))]; % size(u,2)) function [PHI, THETA] = func_Update_PHI_THETA(StateSpaceModel, MPCParameters) %***************************************************************% % Ԥʽ Y(t)=PHI*kesi(t)+THETA*DU(t) % Y(t) = [Eta(t+1|t) Eta(t+2|t) Eta(t+3|t) ... Eta(t+Np|t)]' %***************************************************************% Np = MPCParameters.Np; Nc = MPCParameters.Nc; Nx = MPCParameters.Nx; Ny = MPCParameters.Ny; Nu = MPCParameters.Nu; A = StateSpaceModel.A; B = StateSpaceModel.B; C = StateSpaceModel.C; PHI_cell=cell(Np,1); %PHI=[CA CA^2 CA^3 ... CA^Np]' THETA_cell=cell(Np,Nc); %THETA for j=1:1:Np PHI_cell{j,1}=C*A^j; % demision:Ny* Nx for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; % demision:Ny*Nu else THETA_cell{j,k}=zeros(Ny,Nu); end end end PHI=cell2mat(PHI_cell); % size(PHI)=[(Ny*Np) * Nx] THETA=cell2mat(THETA_cell);% size(THETA)=[Ny*Np Nu*Nc] % end %EoF function[H, f, g] = func_Update_H_f(kesi, SpeedProfile, PHI, THETA, MPCParameters) %***************************************************************% % trajectory planning %***************************************************************% Np = MPCParameters.Np; Nc = MPCParameters.Nc; Q = MPCParameters.Q; R = MPCParameters.R; Qq = kron(eye(Np),Q); % Q = [Np*Nx] * [Np*Nx] Rr = kron(eye(Nc),R); % R = [Nc*Nu] * [Nc*Nu] Vref = cell2mat(SpeedProfile); error = PHI * kesi; %[(Nx*Np) * 1] H = THETA'*Qq*THETA + Rr; f = (error' - Vref')*Qq*THETA; g = f'; % end %EoF function [A, b, Aeq, beq, lb, ub] = func_Constraints_u_quadprog(MPCParameters) %************************************************************************% % generate the constraints of the vehicle % %************************************************************************% Np = MPCParameters.Np; Nc = Np; umin = MPCParameters.umin; umax = MPCParameters.umax; A = []; b = []; Aeq = []; beq = []; %----(3) lb=" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Tue Sep 03 17:34:36 2019" RTWModifiedTimeStamp 489432700 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines on ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip on BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 6 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "mpc_doubleint_for_speedctrl" Array { Type "Cell" Dimension 1 Cell "mpc_doubleint_for_speedctrl" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "oneshot" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect off ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 7 Version "1.13.1" Array { Type "Handle" Dimension 8 Simulink.SolverCC { $ObjectID 8 Version "1.13.1" StartTime "0.0" StopTime "5" AbsTol "auto" FixedStep "auto" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "SingleTasking" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 9 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints off MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "sigsOut" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 10 Version "1.13.1" Array { Type "Cell" Dimension 4 Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "NoFixptDivByZeroProtection" Cell "OptimizeModelRefInitCode" PropName "DisabledProps" } BlockReduction on BooleanDataType off ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero on NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 11 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "none" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "TryResolveAllWithWarning" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "none" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "warning" MultiTaskCondExecSysMsg "none" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "none" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 12 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown on ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 13 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 14 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 15 Version "1.13.1" Array { Type "Cell" Dimension 1 Cell "IncludeHyperlinkInReport" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime on GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "IgnoreCustomStorageClasses" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 14 Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 280, 124, 1160, 754 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 7 } Object { $PropName "DataTransfer" $ObjectID 18 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Constant Value "1" VectorParams1D on SamplingMode "Sample based" OutMin "[]" OutMax "[]" OutDataTypeStr "Inherit: Inherit from 'Constant value'" LockScale off SampleTime "inf" FramePeriod "inf" PreserveConstantTs off } Block { BlockType Integrator ExternalReset "none" InitialConditionSource "internal" InitialCondition "0" LimitOutput off UpperSaturationLimit "inf" LowerSaturationLimit "-inf" ShowSaturationPort off ShowStatePort off AbsoluteTolerance "auto" IgnoreLimit off ZeroCross on ContinuousStateAttributes "''" } Block { BlockType Mux Inputs "4" DisplayOption "none" UseBusObject off BusObject "BusObject" NonVirtualBus off } Block { BlockType Scope ModelBased off TickLabels "OneTimeTick" ZoomMode "on" Grid "on" TimeRange "auto" YMin "-5" YMax "5" SaveToWorkspace off SaveName "ScopeData" DataFormat "Array" LimitDataPoints on MaxDataPoints "5000" Decimation "1" SampleInput off SampleTime "-1" } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "mpc_doubleint_for_speedctrl" Location [887, 191, 1802, 970] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "usletter" PaperUnits "inches" TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" ReportName "simulink-default.rpt" SIDHighWatermark "15" Block { BlockType Constant Name "Constant" SID "1" Position [40, 140, 60, 160] ZOrder -1 Value "r" } Block { BlockType Scope Name "Input" SID "2" Ports [1] Position [325, 170, 355, 200] ZOrder -2 Floating off Location [775, 112, 1539, 316] Open off NumInputPorts "1" ZoomMode "yonly" List { ListType AxesTitles axes1 "%" } List { ListType ScopeGraphics FigureColor "[0.5 0.5 0.5]" AxesColor "[0 0 0]" AxesTickColor "[1 1 1]" LineColors "[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]" LineStyles "-|-|-|-|-|-" LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } ShowLegends off TimeRange "6" YMin "-1" YMax "1" DataFormat "Structure" SampleTime "0" } Block { BlockType Integrator Name "Integrator 1" SID "3" Ports [1, 1] Position [330, 115, 360, 145] ZOrder -3 InitialCondition "x01" UpperSaturationLimit "Inf" LowerSaturationLimit "-Inf" } Block { BlockType Integrator Name "Integrator 2" SID "4" Ports [1, 1] Position [395, 115, 425, 145] ZOrder -4 InitialCondition "x02" UpperSaturationLimit "Inf" LowerSaturationLimit "-Inf" } Block { BlockType Reference Name "MPC Controller" SID "5" Ports [2, 1] Position [160, 81, 275, 174] ZOrder -5 LibraryVersion "1.1223" SourceBlock "mpclib/MPC Controller" SourceType "MPC" ContentPreviewEnabled off mpcobj "mpc_controller" x0 "[]" md_inport off mv_inport off lims_inport off switch_inport off ywt_inport off duwt_inport off rhoeps_inport off cost_outport off return_sequence off return_qpstatus off is_multiple "0" enable_value "0" n_mv "1" n_mo "1" n_md "0" n_ts "0.1" is_designfromscratch "0" BlockDataType "double" SampleTimeInherited off ref_from_ws off ref_signal_name "[]" ref_preview on md_from_ws off md_signal_name "[]" md_preview on from_project off project_file "MPCtask.mat" } Block { BlockType Mux Name "Mux" SID "6" Ports [2, 1] Position [550, 267, 555, 303] ZOrder -6 ShowName off Inputs "2" DisplayOption "bar" } Block { BlockType Scope Name "Outputs/References" SID "7" Ports [1] Position [595, 270, 625, 300] ZOrder -7 Floating off Location [784, 260, 1535, 729] Open off NumInputPorts "1" List { ListType AxesTitles axes1 "%" } List { ListType ScopeGraphics FigureColor "[0.5 0.5 0.5]" AxesColor "[0 0 0]" AxesTickColor "[1 1 1]" LineColors "[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]" LineStyles "-|-|-|-|-|-" LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } ShowLegends off TimeRange "5" YMin "0" YMax "1.5" DataFormat "Structure" SampleTime "0" } Block { BlockType ToWorkspace Name "To Workspace" SID "8" Ports [1] Position [560, 115, 620, 145] ZOrder -8 VariableName "y" MaxDataPoints "Inf" SampleTime "-1" } Block { BlockType ToWorkspace Name "To Workspace1" SID "9" Ports [1] Position [315, 230, 375, 260] ZOrder -9 VariableName "u" MaxDataPoints "Inf" SampleTime "-1" } Line { ZOrder 1 SrcBlock "MPC Controller" SrcPort 1 Points [10, 0] Branch { ZOrder 2 DstBlock "Integrator 1" DstPort 1 } Branch { ZOrder 3 Points [0, 55] Branch { ZOrder 4 DstBlock "Input" DstPort 1 } Branch { ZOrder 5 Points [0, 60] DstBlock "To Workspace1" DstPort 1 } } } Line { ZOrder 6 SrcBlock "Integrator 2" SrcPort 1 Points [84, 0] Branch { ZOrder 27 Points [0, 145] DstBlock "Mux" DstPort 1 } Branch { ZOrder 26 Points [0, -111; -387, 0; 0, 86] DstBlock "MPC Controller" DstPort 1 } Branch { ZOrder 7 DstBlock "To Workspace" DstPort 1 } } Line { ZOrder 10 SrcBlock "Mux" SrcPort 1 DstBlock "Outputs/References" DstPort 1 } Line { ZOrder 11 SrcBlock "Constant" SrcPort 1 Points [65, 0] Branch { ZOrder 12 DstBlock "MPC Controller" DstPort 2 } Branch { ZOrder 13 Points [0, 145] DstBlock "Mux" DstPort 2 } } Line { ZOrder 14 SrcBlock "Integrator 1" SrcPort 1 DstBlock "Integrator 2" DstPort 1 } Annotation { SID "11" Name "u(t)" Position [303, 116, 326, 134] AutoSize on WordWrap off ZOrder -1 FontName "Arial" FontSize 14 } Annotation { SID "12" Name "y(t)" Position [473, 116, 495, 134] AutoSize on WordWrap off ZOrder -2 FontName "Arial" FontSize 14 } Annotation { SID "13" Name "r(t)" Position [98, 136, 118, 154] AutoSize on WordWrap off ZOrder -3 FontName "Arial" FontSize 14 } Annotation { SID "14" Name "Copyright 1990-2012 The MathWorks, Inc." Position [114, 330, 300, 345] AutoSize on WordWrap off ZOrder -4 } } } # Finite State Machines # # Stateflow Version 7.6 (R2013a) dated Aug 8 2013, 23:20:01 # # Stateflow { machine { id 1 name "mpc_doubleint_for_speedctrl" created "29-Dec-2010 09:22:52" isLibrary 0 firstTarget 2 sfVersion 76014001.0016 } target { id 2 name "sfun" description "Default Simulink S-Function Target." machine 1 linkNode [1 0 0] } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/mpcdoubleint_for_speed_control.m ================================================ %% Control of a Single-Input-Single-Output Plant % This example shows how to control a double integrator plant under input % saturation in Simulink(R). % Copyright 1990-2012 The MathWorks, Inc. % $Revision: 1.1.4.12 $ $Date: 2012/12/20 17:33:53 $ %% MPC Controller Setup % Create MPC controller in the workspace. Ts = .1; % Sampling time p = 20; % Prediction horizon m = 3; % Control horizon % mpc_controller = mpc(tf(1,[1 0 0]),Ts,p,m); % MPC object % x_dot = Ax+Bu % y = Cx +Du A=[0 1; 0 0]; B=[0; 1]; C = [1 0]; D = [0]; mpc_controller = mpc(ss(A,B,C,D),Ts,p,m); % MPC object mpc_controller.MV=struct('Min',-1,'Max',1); % Input saturation constraints %% MPC Simulation Using Simulink(R) % The example uses Simulink(R). if ~mpcchecktoolboxinstalled('simulink') disp('Simulink(R) is required to run this example.') return end %% % Setup simulation parameters. x01=0; % Initial state: First integrator x02=0; % Initial state: Second integrator Tstop=5; % Simulation time r=2; % Set point %% % Run simulation. open_system('mpc_doubleint_for_speedctrl'); % Open Simulink(R) Model sim('mpc_doubleint_for_speedctrl',Tstop); % Start Simulation ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/mpc_doubleint_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpc_doubleint_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/mpc_doubleint_sfun.c ================================================ /* Include files */ #include "mpc_doubleint_sfun.h" #include "mpc_doubleint_sfun_debug_macros.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpc_doubleintMachineNumber_; real_T _sfTime_; /* Function Declarations */ /* Function Definitions */ void mpc_doubleint_initializer(void) { } void mpc_doubleint_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpc_doubleint_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { return 0; } unsigned int sf_mpc_doubleint_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>1 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"machine")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1052687041U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(1023940012U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(826374761U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2381960207U); } else if (!strcmp(commandName,"exportedFcn")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0U); } else if (!strcmp(commandName,"makefile")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2473893966U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(226489362U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(347409728U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1342070581U); } else if (nrhs==3 && !strcmp(commandName,"chart")) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[2]); switch (chartFileNumber) { default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else if (!strcmp(commandName,"target")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3031367619U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(4001028638U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3978939492U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(838979348U); } else { return 0; } } else { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1719576754U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2213199236U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(1638559939U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(726424547U); } return 1; #else return 0; #endif } unsigned int sf_mpc_doubleint_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_doubleint_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_doubleint_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpc_doubleint_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpc_doubleint_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpc_doubleintMachineNumber_ = sf_debug_initialize_machine(debugInstance, "mpc_doubleint","sfun",0,0,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance, _mpc_doubleintMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance, _mpc_doubleintMachineNumber_,0); } void mpc_doubleint_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpc_doubleint_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpc_doubleint", "mpc_doubleint"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpc_doubleint_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/mpc_doubleint_sfun.h ================================================ #ifndef __mpc_doubleint_sfun_h__ #define __mpc_doubleint_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpc_doubleintMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpc_doubleint_initializer(void); extern void mpc_doubleint_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpc_doubleint_optimization_info(void); extern void unload_mpc_doubleint_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/mpc_doubleint_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpc_doubleint TARGET = sfun CHART_SRCS = MACHINE_SRC = mpc_doubleint_sfun.c MACHINE_REG = mpc_doubleint_sfun_registry.c MAKEFILE = mpc_doubleint_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpc_doubleint_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = "E:\2019-˼ʻģԤ\3\chapter3 \slprj\_sfprj\mpc_doubleint\mpclib\sfun\src\mpclib_sfun.lib" BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- MEX_FILE_NAME_WO_EXT = $(MACHINE)_$(TARGET) MEX_FILE_NAME = $(MEX_FILE_NAME_WO_EXT).mexw64 MEX_FILE_CSF = all : $(MEX_FILE_NAME) $(MEX_FILE_CSF) TMWLIB = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmx.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmex.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmat.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libfixedpoint.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libut.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwmathutil.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libemlrt.lib" "C:\Program Files\MATLAB\R2013b\lib\win64\libippmwipt.lib" $(MEX_FILE_NAME) : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) $(LDFLAGS) /OUT:$(MEX_FILE_NAME) /map:"$(MEX_FILE_NAME_WO_EXT).map"\ $(USER_LIBS) $(SFCLIB) $(AUX_LNK_OBJS)\ $(TMWLIB) $(LINK_MACHINE_LIBS) $(DSP_LIBS) $(BLAS_LIBS) $(THIRD_PARTY_LIBS)\ @$(OBJLIST_FILE) mt -outputresource:"$(MEX_FILE_NAME);2" -manifest "$(MEX_FILE_NAME).manifest" @echo ### Created $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/mpc_doubleint_sfun.mexw64.manifest ================================================ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/mpc_doubleint_sfun.mol ================================================ mpc_doubleint_sfun.obj mpc_doubleint_sfun_registry.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/mpc_doubleint_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpc_doubleintMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpc_doubleintMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/mpc_doubleint_sfun_registry.c ================================================ #include "mpc_doubleint_sfun.h" #include "sfcdebug.h" struct SfDebugInstanceStruct; struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct = NULL; #define PROCESS_MEX_SFUNCTION_CMD_LINE_CALL unsigned int sf_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); if (sf_mpc_doubleint_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mpclib_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; return 0; } unsigned int sf_process_autoinheritance_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_doubleint") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_doubleint_autoinheritance_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_autoinheritance_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_third_party_uses_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_doubleint") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_doubleint_third_party_uses_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_third_party_uses_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_updateBuildInfo_args_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_doubleint") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_doubleint_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_eml_resolved_functions_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 3) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_doubleint") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpc_doubleint_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpclib_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } return 0; } unsigned int sf_mex_unlock_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_mex_unlock")) return 0; while (mexIsLocked()) { mexUnlock(); } return(1); } extern unsigned int sf_debug_api(struct SfDebugInstanceStruct* debugInstance, int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); static unsigned int sf_debug_api_wrapper( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { return sf_debug_api(sfGlobalDebugInstanceStruct, nlhs, plhs, nrhs, prhs); } static unsigned int ProcessMexSfunctionCmdLineCall(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[]) { if (sf_debug_api_wrapper(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mex_unlock_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_autoinheritance_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_third_party_uses_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_updateBuildInfo_args_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_eml_resolved_functions_info_call(nlhs,plhs,nrhs,prhs)) return 1; mexErrMsgTxt("Unsuccessful command."); return 0; } static unsigned int sfGlobalMdlStartCallCounts = 0; unsigned int sf_machine_global_initializer_called(void) { return(sfGlobalMdlStartCallCounts > 0); } extern unsigned int sf_mpc_doubleint_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); extern unsigned int sf_mpclib_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); unsigned int sf_machine_global_method_dispatcher(SimStruct *simstructPtr, const char *machineName, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (!strcmp(machineName,"mpc_doubleint")) { return(sf_mpc_doubleint_method_dispatcher(simstructPtr,chartFileNumber, specsCksum,method,data)); } if (!strcmp(machineName,"mpclib")) { return(sf_mpclib_method_dispatcher(simstructPtr,chartFileNumber,specsCksum, method,data)); } return 0; } extern void mpc_doubleint_terminator(void); extern void mpclib_terminator(void); void sf_machine_global_terminator(void) { sfGlobalMdlStartCallCounts--; if (sfGlobalMdlStartCallCounts == 0) { mpc_doubleint_terminator(); mpclib_terminator(); sf_debug_terminate(sfGlobalDebugInstanceStruct); sfGlobalDebugInstanceStruct = NULL; } return; } extern void mpc_doubleint_initializer(void); extern void mpclib_initializer(void); extern void mpc_doubleint_register_exported_symbols(SimStruct* S); extern void mpclib_register_exported_symbols(SimStruct* S); extern void mpc_doubleint_debug_initialize(struct SfDebugInstanceStruct*); extern void mpclib_debug_initialize(struct SfDebugInstanceStruct*); void sf_register_machine_exported_symbols(SimStruct* S) { mpc_doubleint_register_exported_symbols(S); mpclib_register_exported_symbols(S); } bool callCustomFcn(char initFlag) { return false; } void sf_machine_global_initializer(SimStruct* S) { bool simModeIsRTWGen = sim_mode_is_rtw_gen(S); sfGlobalMdlStartCallCounts++; if (sfGlobalMdlStartCallCounts == 1) { if (simModeIsRTWGen) { sf_register_machine_exported_symbols(S); } sfGlobalDebugInstanceStruct = sf_debug_create_debug_instance_struct(); if (!simModeIsRTWGen) { mpc_doubleint_debug_initialize(sfGlobalDebugInstanceStruct); } mpc_doubleint_initializer(); if (!simModeIsRTWGen) { mpclib_debug_initialize(sfGlobalDebugInstanceStruct); } mpclib_initializer(); } return; } #define PROCESS_MEX_SFUNCTION_EVERY_CALL unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]); #include "simulink.c" /* MEX-file interface mechanism */ static void sf_machine_load_sfunction_ptrs(SimStruct *S) { ssSetmdlInitializeSampleTimes(S,__mdlInitializeSampleTimes); ssSetmdlInitializeConditions(S,__mdlInitializeConditions); ssSetmdlOutputs(S,__mdlOutputs); ssSetmdlTerminate(S,__mdlTerminate); ssSetmdlRTW(S,__mdlRTW); ssSetmdlSetWorkWidths(S,__mdlSetWorkWidths); #if defined(MDL_HASSIMULATIONCONTEXTIO) ssSetmdlSimulationContextIO(S,__mdlSimulationContextIO); #endif #if defined(MDL_START) ssSetmdlStart(S,__mdlStart); #endif #if defined(RTW_GENERATED_ENABLE) ssSetRTWGeneratedEnable(S,__mdlEnable); #endif #if defined(RTW_GENERATED_DISABLE) ssSetRTWGeneratedDisable(S,__mdlDisable); #endif #if defined(MDL_ENABLE) ssSetmdlEnable(S,__mdlEnable); #endif #if defined(MDL_DISABLE) ssSetmdlDisable(S,__mdlDisable); #endif #if defined(MDL_SIM_STATUS_CHANGE) ssSetmdlSimStatusChange(S,__mdlSimStatusChange); #endif #if defined(MDL_EXT_MODE_EXEC) ssSetmdlExtModeExec(S,__mdlExtModeExec); #endif #if defined(MDL_UPDATE) ssSetmdlUpdate(S,__mdlUpdate); #endif #if defined(MDL_PROCESS_PARAMETERS) ssSetmdlProcessParameters(S,__mdlProcessParameters); #endif #if defined(MDL_ZERO_CROSSINGS) ssSetmdlZeroCrossings(S,__mdlZeroCrossings); #endif #if defined(MDL_DERIVATIVES) ssSetmdlDerivatives(S,__mdlDerivatives); #endif } unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]) { if (nlhs < 0) { SimStruct *S = (SimStruct *)plhs[_LHS_SS]; int_T flag = (int_T)(*(real_T*)mxGetPr(prhs[_RHS_FLAG])); if (flag == SS_CALL_MDL_SET_WORK_WIDTHS) { sf_machine_load_sfunction_ptrs(S); } } return 0; } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/_self/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/c3_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c3_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c3_b_p (20.0) #define c3_b_nu (1.0) #define c3_b_isQP (TRUE) #define c3_b_ny (1.0) #define c3_b_degrees (4.0) #define c3_b_uoff (0.0) #define c3_b_yoff (0.0) #define c3_b_maxiter (120.0) #define c3_b_nxQP (2.0) #define c3_b_openloopflag (FALSE) #define c3_b_lims_inport (0.0) #define c3_b_no_umin (1.0) #define c3_b_no_umax (1.0) #define c3_b_no_ymin (1.0) #define c3_b_no_ymax (1.0) #define c3_b_switch_inport (0.0) #define c3_b_no_switch (1.0) #define c3_b_enable_value (0.0) #define c3_b_return_cost (0.0) #define c3_b_return_sequence (0.0) #define c3_b_no_ywt (1.0) #define c3_b_no_duwt (1.0) #define c3_b_no_rhoeps (1.0) #define c3_b_Wy (0.0) #define c3_b_Wdu (0.0) #define c3_b_Jm (0.0) #define c3_b_SuJm (0.0) #define c3_b_I2JmWuI2Jm (0.0) #define c3_b_Su1 (0.0) #define c3_b_I1WuI2Jm (0.0) #define c3_b_Sx (0.0) #define c3_b_Hv (0.0) #define c3_b_Wu (0.0) #define c3_b_I1 (0.0) /* Variable Declarations */ /* Variable Definitions */ static const char * c3_debug_family_names[71] = { "DataType", "isQP", "nu", "ny", "degrees", "Hinv", "Kx", "Ku1", "Kut", "Kr", "Kv", "Mlim", "Mx", "Mu1", "Mv", "z_degrees", "utarget", "p", "uoff", "yoff", "maxiter", "nxQP", "openloopflag", "lims_inport", "no_umin", "no_umax", "no_ymin", "no_ymax", "switch_inport", "no_switch", "enable_value", "return_cost", "H", "return_sequence", "blocking_moves", "Linv", "Ac", "no_ywt", "no_duwt", "no_rhoeps", "Wy", "Wdu", "Jm", "SuJm", "I2JmWuI2Jm", "Su1", "I1WuI2Jm", "Sx", "Hv", "Wu", "I1", "nargin", "nargout", "rseq", "vseq", "x", "old_u", "iA", "umin", "umax", "ymin", "ymax", "switch_in", "ywt", "duwt", "rhoeps", "u", "cost", "useq", "status", "iAout" }; /* Function Declarations */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st); static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber); static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static real_T c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier); static real_T c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[20]); static void c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[20]); static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[10]); static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[10]); static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static int32_T c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static boolean_T c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[16]); static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]); static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]); static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]); static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[63]); static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]); static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[12]); static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[126]); static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[4]); static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[20]); static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[24]); static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static uint8_T c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier); static uint8_T c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { chartInstance->c3_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c3_is_active_c3_mpclib = 0U; } static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_d0; real_T c3_d1; real_T c3_d2; real_T c3_d3; real_T c3_dv0[16]; int32_T c3_i0; real_T c3_dv1[6]; int32_T c3_i1; real_T c3_dv2[3]; int32_T c3_i2; real_T c3_dv3[60]; int32_T c3_i3; real_T c3_dv4[60]; int32_T c3_i4; real_T c3_dv5[63]; int32_T c3_i5; real_T c3_dv6[6]; int32_T c3_i6; real_T c3_dv7[12]; int32_T c3_i7; real_T c3_dv8[6]; int32_T c3_i8; real_T c3_dv9[126]; int32_T c3_i9; real_T c3_dv10[4]; int32_T c3_i10; real_T c3_dv11[20]; int32_T c3_i11; real_T c3_d4; real_T c3_d5; real_T c3_d6; real_T c3_d7; real_T c3_d8; real_T c3_d9; real_T c3_d10; real_T c3_d11; real_T c3_d12; real_T c3_d13; real_T c3_d14; real_T c3_d15; real_T c3_d16; real_T c3_d17; real_T c3_d18; real_T c3_dv12[16]; int32_T c3_i12; real_T c3_d19; real_T c3_dv13[20]; int32_T c3_i13; real_T c3_dv14[16]; int32_T c3_i14; real_T c3_dv15[24]; int32_T c3_i15; real_T c3_d20; real_T c3_d21; real_T c3_d22; real_T c3_d23; real_T c3_d24; real_T c3_d25; real_T c3_d26; real_T c3_d27; real_T c3_d28; real_T c3_d29; real_T c3_d30; real_T c3_d31; real_T c3_d32; real_T c3_d33; sf_set_error_prefix_string( "Error evaluating data 'isQP' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 27, 0), &c3_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_isQP = (c3_d0 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nu' in the parent workspace.\n"); sf_mex_import_named("nu", sf_mex_get_sfun_param(chartInstance->S, 38, 0), &c3_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nu = c3_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 40, 0), &c3_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_ny = c3_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'degrees' in the parent workspace.\n"); sf_mex_import_named("degrees", sf_mex_get_sfun_param(chartInstance->S, 25, 0), &c3_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_degrees = c3_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hinv' in the parent workspace.\n"); sf_mex_import_named("Hinv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), c3_dv0, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i0 = 0; c3_i0 < 16; c3_i0++) { chartInstance->c3_Hinv[c3_i0] = c3_dv0[c3_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kx' in the parent workspace.\n"); sf_mex_import_named("Kx", sf_mex_get_sfun_param(chartInstance->S, 12, 0), c3_dv1, 0, 0, 0U, 1, 0U, 2, 2, 3); for (c3_i1 = 0; c3_i1 < 6; c3_i1++) { chartInstance->c3_Kx[c3_i1] = c3_dv1[c3_i1]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ku1' in the parent workspace.\n"); sf_mex_import_named("Ku1", sf_mex_get_sfun_param(chartInstance->S, 9, 0), c3_dv2, 0, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i2 = 0; c3_i2 < 3; c3_i2++) { chartInstance->c3_Ku1[c3_i2] = c3_dv2[c3_i2]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kut' in the parent workspace.\n"); sf_mex_import_named("Kut", sf_mex_get_sfun_param(chartInstance->S, 10, 0), c3_dv3, 0, 0, 0U, 1, 0U, 2, 20, 3); for (c3_i3 = 0; c3_i3 < 60; c3_i3++) { chartInstance->c3_Kut[c3_i3] = c3_dv3[c3_i3]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kr' in the parent workspace.\n"); sf_mex_import_named("Kr", sf_mex_get_sfun_param(chartInstance->S, 8, 0), c3_dv4, 0, 0, 0U, 1, 0U, 2, 20, 3); for (c3_i4 = 0; c3_i4 < 60; c3_i4++) { chartInstance->c3_Kr[c3_i4] = c3_dv4[c3_i4]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kv' in the parent workspace.\n"); sf_mex_import_named("Kv", sf_mex_get_sfun_param(chartInstance->S, 11, 0), c3_dv5, 0, 0, 0U, 1, 0U, 2, 21, 3); for (c3_i5 = 0; c3_i5 < 63; c3_i5++) { chartInstance->c3_Kv[c3_i5] = c3_dv5[c3_i5]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mlim' in the parent workspace.\n"); sf_mex_import_named("Mlim", sf_mex_get_sfun_param(chartInstance->S, 14, 0), c3_dv6, 0, 0, 0U, 1, 0U, 1, 6); for (c3_i6 = 0; c3_i6 < 6; c3_i6++) { chartInstance->c3_Mlim[c3_i6] = c3_dv6[c3_i6]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mx' in the parent workspace.\n"); sf_mex_import_named("Mx", sf_mex_get_sfun_param(chartInstance->S, 17, 0), c3_dv7, 0, 0, 0U, 1, 0U, 2, 6, 2); for (c3_i7 = 0; c3_i7 < 12; c3_i7++) { chartInstance->c3_Mx[c3_i7] = c3_dv7[c3_i7]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mu1' in the parent workspace.\n"); sf_mex_import_named("Mu1", sf_mex_get_sfun_param(chartInstance->S, 15, 0), c3_dv8, 0, 0, 0U, 1, 0U, 1, 6); for (c3_i8 = 0; c3_i8 < 6; c3_i8++) { chartInstance->c3_Mu1[c3_i8] = c3_dv8[c3_i8]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mv' in the parent workspace.\n"); sf_mex_import_named("Mv", sf_mex_get_sfun_param(chartInstance->S, 16, 0), c3_dv9, 0, 0, 0U, 1, 0U, 2, 6, 21); for (c3_i9 = 0; c3_i9 < 126; c3_i9++) { chartInstance->c3_Mv[c3_i9] = c3_dv9[c3_i9]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'z_degrees' in the parent workspace.\n"); sf_mex_import_named("z_degrees", sf_mex_get_sfun_param(chartInstance->S, 49, 0), c3_dv10, 0, 0, 0U, 1, 0U, 1, 4); for (c3_i10 = 0; c3_i10 < 4; c3_i10++) { chartInstance->c3_z_degrees[c3_i10] = c3_dv10[c3_i10]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'utarget' in the parent workspace.\n"); sf_mex_import_named("utarget", sf_mex_get_sfun_param(chartInstance->S, 47, 0), c3_dv11, 0, 0, 0U, 1, 0U, 1, 20); for (c3_i11 = 0; c3_i11 < 20; c3_i11++) { chartInstance->c3_utarget[c3_i11] = c3_dv11[c3_i11]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 42, 0), &c3_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_p = c3_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'uoff' in the parent workspace.\n"); sf_mex_import_named("uoff", sf_mex_get_sfun_param(chartInstance->S, 46, 0), &c3_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_uoff = c3_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 48, 0), &c3_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_yoff = c3_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'maxiter' in the parent workspace.\n"); sf_mex_import_named("maxiter", sf_mex_get_sfun_param(chartInstance->S, 29, 0), &c3_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_maxiter = c3_d7; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nxQP' in the parent workspace.\n"); sf_mex_import_named("nxQP", sf_mex_get_sfun_param(chartInstance->S, 39, 0), &c3_d8, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nxQP = c3_d8; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 41, 0), &c3_d9, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_openloopflag = (c3_d9 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'lims_inport' in the parent workspace.\n"); sf_mex_import_named("lims_inport", sf_mex_get_sfun_param(chartInstance->S, 28, 0), &c3_d10, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_lims_inport = c3_d10; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umin' in the parent workspace.\n"); sf_mex_import_named("no_umin", sf_mex_get_sfun_param(chartInstance->S, 34, 0), &c3_d11, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umin = c3_d11; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umax' in the parent workspace.\n"); sf_mex_import_named("no_umax", sf_mex_get_sfun_param(chartInstance->S, 33, 0), &c3_d12, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umax = c3_d12; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymin' in the parent workspace.\n"); sf_mex_import_named("no_ymin", sf_mex_get_sfun_param(chartInstance->S, 36, 0), &c3_d13, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymin = c3_d13; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymax' in the parent workspace.\n"); sf_mex_import_named("no_ymax", sf_mex_get_sfun_param(chartInstance->S, 35, 0), &c3_d14, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymax = c3_d14; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'switch_inport' in the parent workspace.\n"); sf_mex_import_named("switch_inport", sf_mex_get_sfun_param(chartInstance->S, 45, 0), &c3_d15, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_switch_inport = c3_d15; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_switch' in the parent workspace.\n"); sf_mex_import_named("no_switch", sf_mex_get_sfun_param(chartInstance->S, 32, 0), &c3_d16, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_switch = c3_d16; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'enable_value' in the parent workspace.\n"); sf_mex_import_named("enable_value", sf_mex_get_sfun_param(chartInstance->S, 26, 0), &c3_d17, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_enable_value = c3_d17; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_cost' in the parent workspace.\n"); sf_mex_import_named("return_cost", sf_mex_get_sfun_param(chartInstance->S, 43, 0), &c3_d18, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_cost = c3_d18; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'H' in the parent workspace.\n"); sf_mex_import_named("H", sf_mex_get_sfun_param(chartInstance->S, 1, 0), c3_dv12, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i12 = 0; c3_i12 < 16; c3_i12++) { chartInstance->c3_H[c3_i12] = c3_dv12[c3_i12]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_sequence' in the parent workspace.\n"); sf_mex_import_named("return_sequence", sf_mex_get_sfun_param(chartInstance->S, 44, 0), &c3_d19, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_sequence = c3_d19; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'blocking_moves' in the parent workspace.\n"); sf_mex_import_named("blocking_moves", sf_mex_get_sfun_param(chartInstance->S, 24, 0), c3_dv13, 0, 0, 0U, 1, 0U, 2, 1, 20); for (c3_i13 = 0; c3_i13 < 20; c3_i13++) { chartInstance->c3_blocking_moves[c3_i13] = c3_dv13[c3_i13]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Linv' in the parent workspace.\n"); sf_mex_import_named("Linv", sf_mex_get_sfun_param(chartInstance->S, 13, 0), c3_dv14, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i14 = 0; c3_i14 < 16; c3_i14++) { chartInstance->c3_Linv[c3_i14] = c3_dv14[c3_i14]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ac' in the parent workspace.\n"); sf_mex_import_named("Ac", sf_mex_get_sfun_param(chartInstance->S, 0, 0), c3_dv15, 0, 0, 0U, 1, 0U, 2, 6, 4); for (c3_i15 = 0; c3_i15 < 24; c3_i15++) { chartInstance->c3_Ac[c3_i15] = c3_dv15[c3_i15]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ywt' in the parent workspace.\n"); sf_mex_import_named("no_ywt", sf_mex_get_sfun_param(chartInstance->S, 37, 0), &c3_d20, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ywt = c3_d20; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_duwt' in the parent workspace.\n"); sf_mex_import_named("no_duwt", sf_mex_get_sfun_param(chartInstance->S, 30, 0), &c3_d21, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_duwt = c3_d21; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_rhoeps' in the parent workspace.\n"); sf_mex_import_named("no_rhoeps", sf_mex_get_sfun_param(chartInstance->S, 31, 0), &c3_d22, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_rhoeps = c3_d22; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wy' in the parent workspace.\n"); sf_mex_import_named("Wy", sf_mex_get_sfun_param(chartInstance->S, 23, 0), &c3_d23, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wy = c3_d23; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wdu' in the parent workspace.\n"); sf_mex_import_named("Wdu", sf_mex_get_sfun_param(chartInstance->S, 21, 0), &c3_d24, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wdu = c3_d24; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Jm' in the parent workspace.\n"); sf_mex_import_named("Jm", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c3_d25, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Jm = c3_d25; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'SuJm' in the parent workspace.\n"); sf_mex_import_named("SuJm", sf_mex_get_sfun_param(chartInstance->S, 19, 0), &c3_d26, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_SuJm = c3_d26; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I2JmWuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I2JmWuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c3_d27, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I2JmWuI2Jm = c3_d27; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Su1' in the parent workspace.\n"); sf_mex_import_named("Su1", sf_mex_get_sfun_param(chartInstance->S, 18, 0), &c3_d28, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Su1 = c3_d28; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1WuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I1WuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c3_d29, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1WuI2Jm = c3_d29; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Sx' in the parent workspace.\n"); sf_mex_import_named("Sx", sf_mex_get_sfun_param(chartInstance->S, 20, 0), &c3_d30, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Sx = c3_d30; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hv' in the parent workspace.\n"); sf_mex_import_named("Hv", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c3_d31, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Hv = c3_d31; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wu' in the parent workspace.\n"); sf_mex_import_named("Wu", sf_mex_get_sfun_param(chartInstance->S, 22, 0), &c3_d32, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wu = c3_d32; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1' in the parent workspace.\n"); sf_mex_import_named("I1", sf_mex_get_sfun_param(chartInstance->S, 4, 0), &c3_d33, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1 = c3_d33; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { const mxArray *c3_st; const mxArray *c3_y = NULL; real_T c3_hoistedGlobal; real_T c3_u; const mxArray *c3_b_y = NULL; int32_T c3_i16; boolean_T c3_b_u[10]; const mxArray *c3_c_y = NULL; real_T c3_b_hoistedGlobal; real_T c3_c_u; const mxArray *c3_d_y = NULL; real_T c3_c_hoistedGlobal; real_T c3_d_u; const mxArray *c3_e_y = NULL; int32_T c3_i17; real_T c3_e_u[20]; const mxArray *c3_f_y = NULL; uint8_T c3_d_hoistedGlobal; uint8_T c3_f_u; const mxArray *c3_g_y = NULL; real_T *c3_cost; real_T *c3_status; real_T *c3_g_u; real_T (*c3_useq)[20]; boolean_T (*c3_iAout)[10]; c3_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_g_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_st = NULL; c3_st = NULL; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_createcellarray(6), FALSE); c3_hoistedGlobal = *c3_cost; c3_u = c3_hoistedGlobal; c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 0, c3_b_y); for (c3_i16 = 0; c3_i16 < 10; c3_i16++) { c3_b_u[c3_i16] = (*c3_iAout)[c3_i16]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_b_u, 11, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_setcell(c3_y, 1, c3_c_y); c3_b_hoistedGlobal = *c3_status; c3_c_u = c3_b_hoistedGlobal; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_c_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 2, c3_d_y); c3_c_hoistedGlobal = *c3_g_u; c3_d_u = c3_c_hoistedGlobal; c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", &c3_d_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 3, c3_e_y); for (c3_i17 = 0; c3_i17 < 20; c3_i17++) { c3_e_u[c3_i17] = (*c3_useq)[c3_i17]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 1, 20), FALSE); sf_mex_setcell(c3_y, 4, c3_f_y); c3_d_hoistedGlobal = chartInstance->c3_is_active_c3_mpclib; c3_f_u = c3_d_hoistedGlobal; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_f_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 5, c3_g_y); sf_mex_assign(&c3_st, c3_y, FALSE); return c3_st; } static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st) { const mxArray *c3_u; boolean_T c3_bv0[10]; int32_T c3_i18; real_T c3_dv16[20]; int32_T c3_i19; real_T *c3_cost; real_T *c3_status; real_T *c3_b_u; boolean_T (*c3_iAout)[10]; real_T (*c3_useq)[20]; c3_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_b_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c3_doneDoubleBufferReInit = TRUE; c3_u = sf_mex_dup(c3_st); *c3_cost = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 0)), "cost"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 1)), "iAout", c3_bv0); for (c3_i18 = 0; c3_i18 < 10; c3_i18++) { (*c3_iAout)[c3_i18] = c3_bv0[c3_i18]; } *c3_status = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 2)), "status"); *c3_b_u = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 3)), "u"); c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 4)), "useq", c3_dv16); for (c3_i19 = 0; c3_i19 < 20; c3_i19++) { (*c3_useq)[c3_i19] = c3_dv16[c3_i19]; } chartInstance->c3_is_active_c3_mpclib = c3_t_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 5)), "is_active_c3_mpclib"); sf_mex_destroy(&c3_u); c3_update_debugger_state_c3_mpclib(chartInstance); sf_mex_destroy(&c3_st); } static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { int32_T c3_i20; int32_T c3_i21; int32_T c3_i22; int32_T c3_i23; int32_T c3_i24; int32_T c3_i25; int32_T c3_i26; int32_T c3_i27; int32_T c3_i28; int32_T c3_i29; int32_T c3_i30; int32_T c3_i31; int32_T c3_i32; int32_T c3_i33; int32_T c3_i34; int32_T c3_i35; int32_T c3_i36; int32_T c3_i37; int32_T c3_i38; int32_T c3_i39; int32_T c3_i40; int32_T c3_i41; real_T *c3_old_u; real_T *c3_umin; real_T *c3_umax; real_T *c3_ymin; real_T *c3_ymax; real_T *c3_switch_in; real_T *c3_ywt; real_T *c3_duwt; real_T *c3_rhoeps; real_T *c3_u; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[10]; real_T (*c3_useq)[20]; boolean_T (*c3_iA)[10]; real_T (*c3_x)[2]; real_T (*c3_vseq)[21]; real_T (*c3_rseq)[20]; c3_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[10])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[21])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[20])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 0U, chartInstance->c3_sfEvent); for (c3_i20 = 0; c3_i20 < 20; c3_i20++) { _SFD_DATA_RANGE_CHECK((*c3_rseq)[c3_i20], 0U); } for (c3_i21 = 0; c3_i21 < 21; c3_i21++) { _SFD_DATA_RANGE_CHECK((*c3_vseq)[c3_i21], 1U); } for (c3_i22 = 0; c3_i22 < 2; c3_i22++) { _SFD_DATA_RANGE_CHECK((*c3_x)[c3_i22], 2U); } _SFD_DATA_RANGE_CHECK(*c3_old_u, 3U); for (c3_i23 = 0; c3_i23 < 10; c3_i23++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iA)[c3_i23], 4U); } _SFD_DATA_RANGE_CHECK(*c3_umin, 5U); _SFD_DATA_RANGE_CHECK(*c3_umax, 6U); _SFD_DATA_RANGE_CHECK(*c3_ymin, 7U); _SFD_DATA_RANGE_CHECK(*c3_ymax, 8U); _SFD_DATA_RANGE_CHECK(*c3_switch_in, 9U); _SFD_DATA_RANGE_CHECK(*c3_ywt, 10U); _SFD_DATA_RANGE_CHECK(*c3_duwt, 11U); _SFD_DATA_RANGE_CHECK(*c3_rhoeps, 12U); _SFD_DATA_RANGE_CHECK(*c3_u, 13U); _SFD_DATA_RANGE_CHECK(*c3_cost, 14U); for (c3_i24 = 0; c3_i24 < 20; c3_i24++) { _SFD_DATA_RANGE_CHECK((*c3_useq)[c3_i24], 15U); } _SFD_DATA_RANGE_CHECK(*c3_status, 16U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_isQP, 17U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nu, 18U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_ny, 19U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_degrees, 20U); for (c3_i25 = 0; c3_i25 < 16; c3_i25++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hinv[c3_i25], 21U); } for (c3_i26 = 0; c3_i26 < 6; c3_i26++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kx[c3_i26], 22U); } for (c3_i27 = 0; c3_i27 < 3; c3_i27++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ku1[c3_i27], 23U); } for (c3_i28 = 0; c3_i28 < 60; c3_i28++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kut[c3_i28], 24U); } for (c3_i29 = 0; c3_i29 < 60; c3_i29++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kr[c3_i29], 25U); } for (c3_i30 = 0; c3_i30 < 63; c3_i30++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kv[c3_i30], 26U); } for (c3_i31 = 0; c3_i31 < 6; c3_i31++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mlim[c3_i31], 27U); } for (c3_i32 = 0; c3_i32 < 12; c3_i32++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mx[c3_i32], 28U); } for (c3_i33 = 0; c3_i33 < 6; c3_i33++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mu1[c3_i33], 29U); } for (c3_i34 = 0; c3_i34 < 126; c3_i34++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mv[c3_i34], 30U); } for (c3_i35 = 0; c3_i35 < 4; c3_i35++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_z_degrees[c3_i35], 31U); } for (c3_i36 = 0; c3_i36 < 20; c3_i36++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_utarget[c3_i36], 32U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_p, 33U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_uoff, 34U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_yoff, 35U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_maxiter, 36U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nxQP, 37U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_openloopflag, 38U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_lims_inport, 39U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umin, 40U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umax, 41U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymin, 42U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymax, 43U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_switch_inport, 44U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_switch, 45U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_enable_value, 46U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_cost, 47U); for (c3_i37 = 0; c3_i37 < 16; c3_i37++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_H[c3_i37], 48U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_sequence, 49U); for (c3_i38 = 0; c3_i38 < 20; c3_i38++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_blocking_moves[c3_i38], 50U); } for (c3_i39 = 0; c3_i39 < 16; c3_i39++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Linv[c3_i39], 51U); } for (c3_i40 = 0; c3_i40 < 24; c3_i40++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ac[c3_i40], 52U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ywt, 53U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_duwt, 54U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_rhoeps, 55U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wy, 56U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wdu, 57U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Jm, 58U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_SuJm, 59U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I2JmWuI2Jm, 60U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Su1, 61U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1WuI2Jm, 62U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Sx, 63U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hv, 64U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wu, 65U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1, 66U); for (c3_i41 = 0; c3_i41 < 10; c3_i41++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iAout)[c3_i41], 67U); } chartInstance->c3_sfEvent = CALL_EVENT; c3_chartstep_c3_mpclib(chartInstance); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_hoistedGlobal; real_T c3_b_hoistedGlobal; real_T c3_c_hoistedGlobal; real_T c3_d_hoistedGlobal; real_T c3_e_hoistedGlobal; real_T c3_f_hoistedGlobal; real_T c3_g_hoistedGlobal; real_T c3_h_hoistedGlobal; real_T c3_i_hoistedGlobal; int32_T c3_i42; real_T c3_rseq[20]; int32_T c3_i43; real_T c3_vseq[21]; int32_T c3_i44; real_T c3_x[2]; real_T c3_old_u; int32_T c3_i45; boolean_T c3_iA[10]; real_T c3_umin; real_T c3_umax; real_T c3_ymin; real_T c3_ymax; real_T c3_switch_in; real_T c3_ywt; real_T c3_duwt; real_T c3_rhoeps; uint32_T c3_debug_family_var_map[71]; char_T c3_DataType[6]; boolean_T c3_c_isQP; real_T c3_c_nu; real_T c3_c_ny; real_T c3_c_degrees; real_T c3_c_Hinv[16]; real_T c3_c_Kx[6]; real_T c3_c_Ku1[3]; real_T c3_c_Kut[60]; real_T c3_c_Kr[60]; real_T c3_c_Kv[63]; real_T c3_c_Mlim[6]; real_T c3_c_Mx[12]; real_T c3_c_Mu1[6]; real_T c3_c_Mv[126]; real_T c3_c_z_degrees[4]; real_T c3_c_utarget[20]; real_T c3_c_p; real_T c3_c_uoff; real_T c3_c_yoff; real_T c3_c_maxiter; real_T c3_c_nxQP; boolean_T c3_c_openloopflag; real_T c3_c_lims_inport; real_T c3_c_no_umin; real_T c3_c_no_umax; real_T c3_c_no_ymin; real_T c3_c_no_ymax; real_T c3_c_switch_inport; real_T c3_c_no_switch; real_T c3_c_enable_value; real_T c3_c_return_cost; real_T c3_c_H[16]; real_T c3_c_return_sequence; real_T c3_c_blocking_moves[20]; real_T c3_c_Linv[16]; real_T c3_c_Ac[24]; real_T c3_c_no_ywt; real_T c3_c_no_duwt; real_T c3_c_no_rhoeps; real_T c3_c_Wy; real_T c3_c_Wdu; real_T c3_c_Jm; real_T c3_c_SuJm; real_T c3_c_I2JmWuI2Jm; real_T c3_c_Su1; real_T c3_c_I1WuI2Jm; real_T c3_c_Sx; real_T c3_c_Hv; real_T c3_c_Wu; real_T c3_c_I1; real_T c3_nargin = 63.0; real_T c3_nargout = 5.0; real_T c3_u; real_T c3_cost; real_T c3_useq[20]; real_T c3_status; boolean_T c3_iAout[10]; int32_T c3_i46; static real_T c3_d_Ac[24] = { -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -0.0, -1.0, -1.0, -0.0, 1.0, 1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i47; static real_T c3_d_Linv[16] = { 0.23520200811439571, -4.8978830782919456, 0.73799858039642308, 0.0, 0.0, 5.5567121987275856, -5.9375612767978332, 0.0, 0.0, 0.0, 5.8281111841008046, 0.0, 0.0, 0.0, 0.0, 0.003162277660168379 }; int32_T c3_i48; static real_T c3_d_blocking_moves[20] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i49; static real_T c3_d_H[16] = { 18.076650000000004, 15.9334, 13.943625000000003, 0.0, 15.9334, 14.07665, 12.323400000000001, 0.0, 13.943625000000003, 12.323400000000001, 10.818625000000003, 0.0, 0.0, 0.0, 0.0, 100000.0 }; int32_T c3_i50; int32_T c3_i51; int32_T c3_i52; int32_T c3_i53; static real_T c3_d_Mu1[6] = { -1.0, -1.0, -1.0, 1.0, 1.0, 1.0 }; int32_T c3_i54; int32_T c3_i55; int32_T c3_i56; int32_T c3_i57; static real_T c3_d_Kr[60] = { -0.005000000000000001, -0.020000000000000004, -0.045000000000000012, -0.080000000000000016, -0.12500000000000003, -0.18000000000000005, -0.24500000000000005, -0.32000000000000006, -0.40500000000000008, -0.50000000000000011, -0.60500000000000009, -0.72000000000000008, -0.84500000000000008, -0.98000000000000009, -1.125, -1.28, -1.445, -1.62, -1.8050000000000002, -2.0, -0.0, -0.005000000000000001, -0.020000000000000004, -0.045000000000000012, -0.080000000000000016, -0.12500000000000003, -0.18000000000000005, -0.24500000000000005, -0.32000000000000006, -0.40500000000000008, -0.50000000000000011, -0.60500000000000009, -0.72000000000000008, -0.84500000000000008, -0.98000000000000009, -1.125, -1.28, -1.445, -1.62, -1.8050000000000002, -0.0, -0.0, -0.005000000000000001, -0.020000000000000004, -0.045000000000000012, -0.080000000000000016, -0.12500000000000003, -0.18000000000000005, -0.24500000000000005, -0.32000000000000006, -0.40500000000000008, -0.50000000000000011, -0.60500000000000009, -0.72000000000000008, -0.84500000000000008, -0.98000000000000009, -1.125, -1.28, -1.445, -1.62 }; int32_T c3_i58; int32_T c3_i59; static real_T c3_d_Ku1[3] = { 18.066650000000003, 15.933400000000002, 13.943625 }; int32_T c3_i60; static real_T c3_d_Kx[6] = { 14.350000000000001, 22.050000000000004, 12.350000000000001, 19.285000000000004, 10.545000000000002, 16.729500000000005 }; int32_T c3_i61; static real_T c3_d_Hinv[16] = { 24.589220537906762, -31.598038442379849, 4.3011377802589106, 0.0, -31.598038442379849, 66.131684375217077, -34.604767283589304, 0.0, 4.3011377802589106, -34.604767283589304, 33.966879974240882, 0.0, 0.0, 0.0, 0.0, 9.9999999999999974E-6 }; int32_T c3_i62; static char_T c3_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c3_i63; int32_T c3_i64; int32_T c3_i65; real_T c3_b_u[20]; const mxArray *c3_y = NULL; int32_T c3_i66; real_T c3_c_u[21]; const mxArray *c3_b_y = NULL; real_T c3_d_u; const mxArray *c3_c_y = NULL; real_T c3_e_u; const mxArray *c3_d_y = NULL; real_T c3_f_u; const mxArray *c3_e_y = NULL; real_T c3_g_u; const mxArray *c3_f_y = NULL; real_T c3_h_u; const mxArray *c3_g_y = NULL; int32_T c3_i67; real_T c3_i_u[2]; const mxArray *c3_h_y = NULL; real_T c3_j_u; const mxArray *c3_i_y = NULL; int32_T c3_i68; boolean_T c3_k_u[10]; const mxArray *c3_j_y = NULL; boolean_T c3_l_u; const mxArray *c3_k_y = NULL; real_T c3_m_u; const mxArray *c3_l_y = NULL; real_T c3_n_u; const mxArray *c3_m_y = NULL; real_T c3_o_u; const mxArray *c3_n_y = NULL; int32_T c3_i69; real_T c3_p_u[16]; const mxArray *c3_o_y = NULL; int32_T c3_i70; real_T c3_q_u[6]; const mxArray *c3_p_y = NULL; int32_T c3_i71; real_T c3_r_u[3]; const mxArray *c3_q_y = NULL; int32_T c3_i72; real_T c3_s_u[60]; const mxArray *c3_r_y = NULL; int32_T c3_i73; real_T c3_t_u[60]; const mxArray *c3_s_y = NULL; int32_T c3_i74; real_T c3_u_u[63]; const mxArray *c3_t_y = NULL; int32_T c3_i75; real_T c3_v_u[6]; const mxArray *c3_u_y = NULL; int32_T c3_i76; real_T c3_w_u[12]; const mxArray *c3_v_y = NULL; int32_T c3_i77; real_T c3_x_u[6]; const mxArray *c3_w_y = NULL; int32_T c3_i78; real_T c3_y_u[126]; const mxArray *c3_x_y = NULL; int32_T c3_i79; real_T c3_ab_u[4]; const mxArray *c3_y_y = NULL; int32_T c3_i80; real_T c3_bb_u[20]; const mxArray *c3_ab_y = NULL; real_T c3_cb_u; const mxArray *c3_bb_y = NULL; real_T c3_db_u; const mxArray *c3_cb_y = NULL; real_T c3_eb_u; const mxArray *c3_db_y = NULL; real_T c3_fb_u; const mxArray *c3_eb_y = NULL; real_T c3_gb_u; const mxArray *c3_fb_y = NULL; boolean_T c3_hb_u; const mxArray *c3_gb_y = NULL; real_T c3_ib_u; const mxArray *c3_hb_y = NULL; real_T c3_jb_u; const mxArray *c3_ib_y = NULL; real_T c3_kb_u; const mxArray *c3_jb_y = NULL; real_T c3_lb_u; const mxArray *c3_kb_y = NULL; real_T c3_mb_u; const mxArray *c3_lb_y = NULL; real_T c3_nb_u; const mxArray *c3_mb_y = NULL; real_T c3_ob_u; const mxArray *c3_nb_y = NULL; real_T c3_pb_u; const mxArray *c3_ob_y = NULL; real_T c3_qb_u; const mxArray *c3_pb_y = NULL; int32_T c3_i81; real_T c3_rb_u[16]; const mxArray *c3_qb_y = NULL; real_T c3_sb_u; const mxArray *c3_rb_y = NULL; int32_T c3_i82; real_T c3_tb_u[20]; const mxArray *c3_sb_y = NULL; int32_T c3_i83; real_T c3_ub_u[16]; const mxArray *c3_tb_y = NULL; int32_T c3_i84; real_T c3_vb_u[24]; const mxArray *c3_ub_y = NULL; real_T c3_wb_u; const mxArray *c3_vb_y = NULL; real_T c3_xb_u; const mxArray *c3_wb_y = NULL; real_T c3_yb_u; const mxArray *c3_xb_y = NULL; real_T c3_ac_u; const mxArray *c3_yb_y = NULL; real_T c3_bc_u; const mxArray *c3_ac_y = NULL; real_T c3_cc_u; const mxArray *c3_bc_y = NULL; real_T c3_dc_u; const mxArray *c3_cc_y = NULL; real_T c3_ec_u; const mxArray *c3_dc_y = NULL; real_T c3_fc_u; const mxArray *c3_ec_y = NULL; real_T c3_gc_u; const mxArray *c3_fc_y = NULL; real_T c3_hc_u; const mxArray *c3_gc_y = NULL; real_T c3_ic_u; const mxArray *c3_hc_y = NULL; real_T c3_jc_u; const mxArray *c3_ic_y = NULL; real_T c3_kc_u; const mxArray *c3_jc_y = NULL; real_T c3_lc_u; const mxArray *c3_kc_y = NULL; real_T c3_mc_u; const mxArray *c3_lc_y = NULL; real_T c3_nc_u; const mxArray *c3_mc_y = NULL; const mxArray *c3_b_iAout = NULL; const mxArray *c3_b_status = NULL; const mxArray *c3_b_useq = NULL; const mxArray *c3_b_cost = NULL; const mxArray *c3_oc_u = NULL; real_T c3_dv17[20]; int32_T c3_i85; boolean_T c3_bv1[10]; int32_T c3_i86; int32_T c3_i87; int32_T c3_i88; real_T *c3_b_old_u; real_T *c3_b_umin; real_T *c3_b_umax; real_T *c3_b_ymin; real_T *c3_b_ymax; real_T *c3_b_switch_in; real_T *c3_b_ywt; real_T *c3_b_duwt; real_T *c3_b_rhoeps; real_T *c3_pc_u; real_T *c3_c_cost; real_T *c3_c_status; real_T (*c3_c_useq)[20]; boolean_T (*c3_c_iAout)[10]; boolean_T (*c3_b_iA)[10]; real_T (*c3_b_x)[2]; real_T (*c3_b_vseq)[21]; real_T (*c3_b_rseq)[20]; c3_c_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_c_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_c_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_c_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_pc_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_b_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_b_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_b_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_b_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_b_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_b_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_b_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_b_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_b_iA = (boolean_T (*)[10])ssGetInputPortSignal(chartInstance->S, 4); c3_b_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_b_x = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 2); c3_b_vseq = (real_T (*)[21])ssGetInputPortSignal(chartInstance->S, 1); c3_b_rseq = (real_T (*)[20])ssGetInputPortSignal(chartInstance->S, 0); _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); c3_hoistedGlobal = *c3_b_old_u; c3_b_hoistedGlobal = *c3_b_umin; c3_c_hoistedGlobal = *c3_b_umax; c3_d_hoistedGlobal = *c3_b_ymin; c3_e_hoistedGlobal = *c3_b_ymax; c3_f_hoistedGlobal = *c3_b_switch_in; c3_g_hoistedGlobal = *c3_b_ywt; c3_h_hoistedGlobal = *c3_b_duwt; c3_i_hoistedGlobal = *c3_b_rhoeps; for (c3_i42 = 0; c3_i42 < 20; c3_i42++) { c3_rseq[c3_i42] = (*c3_b_rseq)[c3_i42]; } for (c3_i43 = 0; c3_i43 < 21; c3_i43++) { c3_vseq[c3_i43] = (*c3_b_vseq)[c3_i43]; } for (c3_i44 = 0; c3_i44 < 2; c3_i44++) { c3_x[c3_i44] = (*c3_b_x)[c3_i44]; } c3_old_u = c3_hoistedGlobal; for (c3_i45 = 0; c3_i45 < 10; c3_i45++) { c3_iA[c3_i45] = (*c3_b_iA)[c3_i45]; } c3_umin = c3_b_hoistedGlobal; c3_umax = c3_c_hoistedGlobal; c3_ymin = c3_d_hoistedGlobal; c3_ymax = c3_e_hoistedGlobal; c3_switch_in = c3_f_hoistedGlobal; c3_ywt = c3_g_hoistedGlobal; c3_duwt = c3_h_hoistedGlobal; c3_rhoeps = c3_i_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 71U, 71U, c3_debug_family_names, c3_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c3_DataType, 0U, c3_r_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_isQP, 1U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nu, 2U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_ny, 3U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_degrees, 4U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Hinv, 5U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kx, 6U, c3_q_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ku1, 7U, c3_p_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kut, 8U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kr, 9U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kv, 10U, c3_n_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mlim, 11U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mx, 12U, c3_m_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mu1, 13U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mv, 14U, c3_k_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_z_degrees, 15U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_utarget, 16U, c3_c_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_p, 17U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_uoff, 18U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_yoff, 19U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_maxiter, 20U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nxQP, 21U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_openloopflag, 22U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_lims_inport, 23U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umin, 24U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umax, 25U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymin, 26U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymax, 27U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_switch_inport, 28U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_switch, 29U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_enable_value, 30U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_cost, 31U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_H, 32U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_sequence, 33U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_blocking_moves, 34U, c3_h_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Linv, 35U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ac, 36U, c3_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ywt, 37U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_duwt, 38U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_rhoeps, 39U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wy, 40U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wdu, 41U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Jm, 42U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_SuJm, 43U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I2JmWuI2Jm, 44U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Su1, 45U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1WuI2Jm, 46U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Sx, 47U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Hv, 48U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wu, 49U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1, 50U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargin, 51U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargout, 52U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c3_rseq, 53U, c3_c_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_vseq, 54U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_x, 55U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_old_u, 56U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_iA, 57U, c3_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_umin, 58U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_umax, 59U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ymin, 60U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ymax, 61U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_switch_in, 62U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ywt, 63U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_duwt, 64U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_rhoeps, 65U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_u, 66U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_cost, 67U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_useq, 68U, c3_c_sf_marshallOut, c3_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_status, 69U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_iAout, 70U, c3_sf_marshallOut, c3_sf_marshallIn); c3_c_I1 = c3_b_I1; c3_c_Wu = c3_b_Wu; c3_c_Hv = c3_b_Hv; c3_c_Sx = c3_b_Sx; c3_c_I1WuI2Jm = c3_b_I1WuI2Jm; c3_c_Su1 = c3_b_Su1; c3_c_I2JmWuI2Jm = c3_b_I2JmWuI2Jm; c3_c_SuJm = c3_b_SuJm; c3_c_Jm = c3_b_Jm; c3_c_Wdu = c3_b_Wdu; c3_c_Wy = c3_b_Wy; c3_c_no_rhoeps = c3_b_no_rhoeps; c3_c_no_duwt = c3_b_no_duwt; c3_c_no_ywt = c3_b_no_ywt; for (c3_i46 = 0; c3_i46 < 24; c3_i46++) { c3_c_Ac[c3_i46] = c3_d_Ac[c3_i46]; } for (c3_i47 = 0; c3_i47 < 16; c3_i47++) { c3_c_Linv[c3_i47] = c3_d_Linv[c3_i47]; } for (c3_i48 = 0; c3_i48 < 20; c3_i48++) { c3_c_blocking_moves[c3_i48] = c3_d_blocking_moves[c3_i48]; } c3_c_return_sequence = c3_b_return_sequence; for (c3_i49 = 0; c3_i49 < 16; c3_i49++) { c3_c_H[c3_i49] = c3_d_H[c3_i49]; } c3_c_return_cost = c3_b_return_cost; c3_c_enable_value = c3_b_enable_value; c3_c_no_switch = c3_b_no_switch; c3_c_switch_inport = c3_b_switch_inport; c3_c_no_ymax = c3_b_no_ymax; c3_c_no_ymin = c3_b_no_ymin; c3_c_no_umax = c3_b_no_umax; c3_c_no_umin = c3_b_no_umin; c3_c_lims_inport = c3_b_lims_inport; c3_c_openloopflag = c3_b_openloopflag; c3_c_nxQP = c3_b_nxQP; c3_c_maxiter = c3_b_maxiter; c3_c_yoff = c3_b_yoff; c3_c_uoff = c3_b_uoff; c3_c_p = c3_b_p; for (c3_i50 = 0; c3_i50 < 20; c3_i50++) { c3_c_utarget[c3_i50] = 0.0; } for (c3_i51 = 0; c3_i51 < 4; c3_i51++) { c3_c_z_degrees[c3_i51] = 0.0; } for (c3_i52 = 0; c3_i52 < 126; c3_i52++) { c3_c_Mv[c3_i52] = 0.0; } for (c3_i53 = 0; c3_i53 < 6; c3_i53++) { c3_c_Mu1[c3_i53] = c3_d_Mu1[c3_i53]; } for (c3_i54 = 0; c3_i54 < 12; c3_i54++) { c3_c_Mx[c3_i54] = 0.0; } for (c3_i55 = 0; c3_i55 < 6; c3_i55++) { c3_c_Mlim[c3_i55] = 1.0; } for (c3_i56 = 0; c3_i56 < 63; c3_i56++) { c3_c_Kv[c3_i56] = 0.0; } for (c3_i57 = 0; c3_i57 < 60; c3_i57++) { c3_c_Kr[c3_i57] = c3_d_Kr[c3_i57]; } for (c3_i58 = 0; c3_i58 < 60; c3_i58++) { c3_c_Kut[c3_i58] = 0.0; } for (c3_i59 = 0; c3_i59 < 3; c3_i59++) { c3_c_Ku1[c3_i59] = c3_d_Ku1[c3_i59]; } for (c3_i60 = 0; c3_i60 < 6; c3_i60++) { c3_c_Kx[c3_i60] = c3_d_Kx[c3_i60]; } for (c3_i61 = 0; c3_i61 < 16; c3_i61++) { c3_c_Hinv[c3_i61] = c3_d_Hinv[c3_i61]; } c3_c_degrees = c3_b_degrees; c3_c_ny = c3_b_ny; c3_c_nu = c3_b_nu; c3_c_isQP = c3_b_isQP; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 8); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 9); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 10); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 12); for (c3_i62 = 0; c3_i62 < 6; c3_i62++) { c3_DataType[c3_i62] = c3_cv0[c3_i62]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 13); c3_u = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 14); c3_cost = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 15); for (c3_i63 = 0; c3_i63 < 20; c3_i63++) { c3_useq[c3_i63] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 16); c3_status = 1.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 17); for (c3_i64 = 0; c3_i64 < 10; c3_i64++) { c3_iAout[c3_i64] = FALSE; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 18); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 19); for (c3_i65 = 0; c3_i65 < 20; c3_i65++) { c3_b_u[c3_i65] = c3_rseq[c3_i65]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_b_u, 0, 0U, 1U, 0U, 1, 20), FALSE); for (c3_i66 = 0; c3_i66 < 21; c3_i66++) { c3_c_u[c3_i66] = c3_vseq[c3_i66]; } c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", c3_c_u, 0, 0U, 1U, 0U, 1, 21), FALSE); c3_d_u = c3_umin; c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", &c3_d_u, 0, 0U, 0U, 0U, 0), FALSE); c3_e_u = c3_umax; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_e_u, 0, 0U, 0U, 0U, 0), FALSE); c3_f_u = c3_ymin; c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", &c3_f_u, 0, 0U, 0U, 0U, 0), FALSE); c3_g_u = c3_ymax; c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", &c3_g_u, 0, 0U, 0U, 0U, 0), FALSE); c3_h_u = c3_switch_in; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_h_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i67 = 0; c3_i67 < 2; c3_i67++) { c3_i_u[c3_i67] = c3_x[c3_i67]; } c3_h_y = NULL; sf_mex_assign(&c3_h_y, sf_mex_create("y", c3_i_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c3_j_u = c3_old_u; c3_i_y = NULL; sf_mex_assign(&c3_i_y, sf_mex_create("y", &c3_j_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i68 = 0; c3_i68 < 10; c3_i68++) { c3_k_u[c3_i68] = c3_iA[c3_i68]; } c3_j_y = NULL; sf_mex_assign(&c3_j_y, sf_mex_create("y", c3_k_u, 11, 0U, 1U, 0U, 1, 10), FALSE); c3_l_u = c3_b_isQP; c3_k_y = NULL; sf_mex_assign(&c3_k_y, sf_mex_create("y", &c3_l_u, 11, 0U, 0U, 0U, 0), FALSE); c3_m_u = c3_b_nu; c3_l_y = NULL; sf_mex_assign(&c3_l_y, sf_mex_create("y", &c3_m_u, 0, 0U, 0U, 0U, 0), FALSE); c3_n_u = c3_b_ny; c3_m_y = NULL; sf_mex_assign(&c3_m_y, sf_mex_create("y", &c3_n_u, 0, 0U, 0U, 0U, 0), FALSE); c3_o_u = c3_b_degrees; c3_n_y = NULL; sf_mex_assign(&c3_n_y, sf_mex_create("y", &c3_o_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i69 = 0; c3_i69 < 16; c3_i69++) { c3_p_u[c3_i69] = c3_d_Hinv[c3_i69]; } c3_o_y = NULL; sf_mex_assign(&c3_o_y, sf_mex_create("y", c3_p_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); for (c3_i70 = 0; c3_i70 < 6; c3_i70++) { c3_q_u[c3_i70] = c3_d_Kx[c3_i70]; } c3_p_y = NULL; sf_mex_assign(&c3_p_y, sf_mex_create("y", c3_q_u, 0, 0U, 1U, 0U, 2, 2, 3), FALSE); for (c3_i71 = 0; c3_i71 < 3; c3_i71++) { c3_r_u[c3_i71] = c3_d_Ku1[c3_i71]; } c3_q_y = NULL; sf_mex_assign(&c3_q_y, sf_mex_create("y", c3_r_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); for (c3_i72 = 0; c3_i72 < 60; c3_i72++) { c3_s_u[c3_i72] = 0.0; } c3_r_y = NULL; sf_mex_assign(&c3_r_y, sf_mex_create("y", c3_s_u, 0, 0U, 1U, 0U, 2, 20, 3), FALSE); for (c3_i73 = 0; c3_i73 < 60; c3_i73++) { c3_t_u[c3_i73] = c3_d_Kr[c3_i73]; } c3_s_y = NULL; sf_mex_assign(&c3_s_y, sf_mex_create("y", c3_t_u, 0, 0U, 1U, 0U, 2, 20, 3), FALSE); for (c3_i74 = 0; c3_i74 < 63; c3_i74++) { c3_u_u[c3_i74] = 0.0; } c3_t_y = NULL; sf_mex_assign(&c3_t_y, sf_mex_create("y", c3_u_u, 0, 0U, 1U, 0U, 2, 21, 3), FALSE); for (c3_i75 = 0; c3_i75 < 6; c3_i75++) { c3_v_u[c3_i75] = 1.0; } c3_u_y = NULL; sf_mex_assign(&c3_u_y, sf_mex_create("y", c3_v_u, 0, 0U, 1U, 0U, 1, 6), FALSE); for (c3_i76 = 0; c3_i76 < 12; c3_i76++) { c3_w_u[c3_i76] = 0.0; } c3_v_y = NULL; sf_mex_assign(&c3_v_y, sf_mex_create("y", c3_w_u, 0, 0U, 1U, 0U, 2, 6, 2), FALSE); for (c3_i77 = 0; c3_i77 < 6; c3_i77++) { c3_x_u[c3_i77] = c3_d_Mu1[c3_i77]; } c3_w_y = NULL; sf_mex_assign(&c3_w_y, sf_mex_create("y", c3_x_u, 0, 0U, 1U, 0U, 1, 6), FALSE); for (c3_i78 = 0; c3_i78 < 126; c3_i78++) { c3_y_u[c3_i78] = 0.0; } c3_x_y = NULL; sf_mex_assign(&c3_x_y, sf_mex_create("y", c3_y_u, 0, 0U, 1U, 0U, 2, 6, 21), FALSE); for (c3_i79 = 0; c3_i79 < 4; c3_i79++) { c3_ab_u[c3_i79] = 0.0; } c3_y_y = NULL; sf_mex_assign(&c3_y_y, sf_mex_create("y", c3_ab_u, 0, 0U, 1U, 0U, 1, 4), FALSE); for (c3_i80 = 0; c3_i80 < 20; c3_i80++) { c3_bb_u[c3_i80] = 0.0; } c3_ab_y = NULL; sf_mex_assign(&c3_ab_y, sf_mex_create("y", c3_bb_u, 0, 0U, 1U, 0U, 1, 20), FALSE); c3_cb_u = c3_b_p; c3_bb_y = NULL; sf_mex_assign(&c3_bb_y, sf_mex_create("y", &c3_cb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_db_u = c3_b_uoff; c3_cb_y = NULL; sf_mex_assign(&c3_cb_y, sf_mex_create("y", &c3_db_u, 0, 0U, 0U, 0U, 0), FALSE); c3_eb_u = c3_b_yoff; c3_db_y = NULL; sf_mex_assign(&c3_db_y, sf_mex_create("y", &c3_eb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fb_u = c3_b_maxiter; c3_eb_y = NULL; sf_mex_assign(&c3_eb_y, sf_mex_create("y", &c3_fb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gb_u = c3_b_nxQP; c3_fb_y = NULL; sf_mex_assign(&c3_fb_y, sf_mex_create("y", &c3_gb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hb_u = c3_b_openloopflag; c3_gb_y = NULL; sf_mex_assign(&c3_gb_y, sf_mex_create("y", &c3_hb_u, 11, 0U, 0U, 0U, 0), FALSE); c3_ib_u = c3_b_lims_inport; c3_hb_y = NULL; sf_mex_assign(&c3_hb_y, sf_mex_create("y", &c3_ib_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jb_u = c3_b_no_umin; c3_ib_y = NULL; sf_mex_assign(&c3_ib_y, sf_mex_create("y", &c3_jb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kb_u = c3_b_no_umax; c3_jb_y = NULL; sf_mex_assign(&c3_jb_y, sf_mex_create("y", &c3_kb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lb_u = c3_b_no_ymin; c3_kb_y = NULL; sf_mex_assign(&c3_kb_y, sf_mex_create("y", &c3_lb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mb_u = c3_b_no_ymax; c3_lb_y = NULL; sf_mex_assign(&c3_lb_y, sf_mex_create("y", &c3_mb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nb_u = c3_b_switch_inport; c3_mb_y = NULL; sf_mex_assign(&c3_mb_y, sf_mex_create("y", &c3_nb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ob_u = c3_b_no_switch; c3_nb_y = NULL; sf_mex_assign(&c3_nb_y, sf_mex_create("y", &c3_ob_u, 0, 0U, 0U, 0U, 0), FALSE); c3_pb_u = c3_b_enable_value; c3_ob_y = NULL; sf_mex_assign(&c3_ob_y, sf_mex_create("y", &c3_pb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_qb_u = c3_b_return_cost; c3_pb_y = NULL; sf_mex_assign(&c3_pb_y, sf_mex_create("y", &c3_qb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i81 = 0; c3_i81 < 16; c3_i81++) { c3_rb_u[c3_i81] = c3_d_H[c3_i81]; } c3_qb_y = NULL; sf_mex_assign(&c3_qb_y, sf_mex_create("y", c3_rb_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); c3_sb_u = c3_b_return_sequence; c3_rb_y = NULL; sf_mex_assign(&c3_rb_y, sf_mex_create("y", &c3_sb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i82 = 0; c3_i82 < 20; c3_i82++) { c3_tb_u[c3_i82] = c3_d_blocking_moves[c3_i82]; } c3_sb_y = NULL; sf_mex_assign(&c3_sb_y, sf_mex_create("y", c3_tb_u, 0, 0U, 1U, 0U, 2, 1, 20), FALSE); for (c3_i83 = 0; c3_i83 < 16; c3_i83++) { c3_ub_u[c3_i83] = c3_d_Linv[c3_i83]; } c3_tb_y = NULL; sf_mex_assign(&c3_tb_y, sf_mex_create("y", c3_ub_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); for (c3_i84 = 0; c3_i84 < 24; c3_i84++) { c3_vb_u[c3_i84] = c3_d_Ac[c3_i84]; } c3_ub_y = NULL; sf_mex_assign(&c3_ub_y, sf_mex_create("y", c3_vb_u, 0, 0U, 1U, 0U, 2, 6, 4), FALSE); c3_wb_u = c3_ywt; c3_vb_y = NULL; sf_mex_assign(&c3_vb_y, sf_mex_create("y", &c3_wb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_xb_u = c3_duwt; c3_wb_y = NULL; sf_mex_assign(&c3_wb_y, sf_mex_create("y", &c3_xb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_yb_u = c3_rhoeps; c3_xb_y = NULL; sf_mex_assign(&c3_xb_y, sf_mex_create("y", &c3_yb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ac_u = c3_b_no_ywt; c3_yb_y = NULL; sf_mex_assign(&c3_yb_y, sf_mex_create("y", &c3_ac_u, 0, 0U, 0U, 0U, 0), FALSE); c3_bc_u = c3_b_no_duwt; c3_ac_y = NULL; sf_mex_assign(&c3_ac_y, sf_mex_create("y", &c3_bc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_cc_u = c3_b_no_rhoeps; c3_bc_y = NULL; sf_mex_assign(&c3_bc_y, sf_mex_create("y", &c3_cc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_dc_u = c3_b_Wy; c3_cc_y = NULL; sf_mex_assign(&c3_cc_y, sf_mex_create("y", &c3_dc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ec_u = c3_b_Wdu; c3_dc_y = NULL; sf_mex_assign(&c3_dc_y, sf_mex_create("y", &c3_ec_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fc_u = c3_b_Jm; c3_ec_y = NULL; sf_mex_assign(&c3_ec_y, sf_mex_create("y", &c3_fc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gc_u = c3_b_SuJm; c3_fc_y = NULL; sf_mex_assign(&c3_fc_y, sf_mex_create("y", &c3_gc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hc_u = c3_b_I2JmWuI2Jm; c3_gc_y = NULL; sf_mex_assign(&c3_gc_y, sf_mex_create("y", &c3_hc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ic_u = c3_b_Su1; c3_hc_y = NULL; sf_mex_assign(&c3_hc_y, sf_mex_create("y", &c3_ic_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jc_u = c3_b_I1WuI2Jm; c3_ic_y = NULL; sf_mex_assign(&c3_ic_y, sf_mex_create("y", &c3_jc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kc_u = c3_b_Sx; c3_jc_y = NULL; sf_mex_assign(&c3_jc_y, sf_mex_create("y", &c3_kc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lc_u = c3_b_Hv; c3_kc_y = NULL; sf_mex_assign(&c3_kc_y, sf_mex_create("y", &c3_lc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mc_u = c3_b_Wu; c3_lc_y = NULL; sf_mex_assign(&c3_lc_y, sf_mex_create("y", &c3_mc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nc_u = c3_b_I1; c3_mc_y = NULL; sf_mex_assign(&c3_mc_y, sf_mex_create("y", &c3_nc_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_optimizer_double_mex", 5U, 63U, 14, c3_y, 14, c3_b_y, 14, c3_c_y, 14, c3_d_y, 14, c3_e_y, 14, c3_f_y, 14, c3_g_y, 14, c3_h_y, 14, c3_i_y, 14, c3_j_y, 14, c3_k_y, 14, c3_l_y, 14, c3_m_y, 14, c3_n_y, 14, c3_o_y, 14, c3_p_y, 14, c3_q_y, 14, c3_r_y, 14, c3_s_y, 14, c3_t_y, 14, c3_u_y, 14, c3_v_y, 14, c3_w_y, 14, c3_x_y, 14, c3_y_y, 14, c3_ab_y, 14, c3_bb_y, 14, c3_cb_y, 14, c3_db_y, 14, c3_eb_y, 14, c3_fb_y, 14, c3_gb_y, 14, c3_hb_y, 14, c3_ib_y, 14, c3_jb_y, 14, c3_kb_y, 14, c3_lb_y, 14, c3_mb_y, 14, c3_nb_y, 14, c3_ob_y, 14, c3_pb_y, 14, c3_qb_y, 14, c3_rb_y, 14, c3_sb_y, 14, c3_tb_y, 14, c3_ub_y, 14, c3_vb_y, 14, c3_wb_y, 14, c3_xb_y, 14, c3_yb_y, 14, c3_ac_y, 14, c3_bc_y, 14, c3_cc_y, 14, c3_dc_y, 14, c3_ec_y, 14, c3_fc_y, 14, c3_gc_y, 14, c3_hc_y, 14, c3_ic_y, 14, c3_jc_y, 14, c3_kc_y, 14, c3_lc_y, 14, c3_mc_y, &c3_oc_u, &c3_b_cost, &c3_b_useq, &c3_b_status, &c3_b_iAout); c3_u = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_oc_u), "u"); c3_cost = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_cost), "cost"); c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_useq), "useq", c3_dv17); for (c3_i85 = 0; c3_i85 < 20; c3_i85++) { c3_useq[c3_i85] = c3_dv17[c3_i85]; } c3_status = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_status), "status"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_iAout), "iAout", c3_bv1); for (c3_i86 = 0; c3_i86 < 10; c3_i86++) { c3_iAout[c3_i86] = c3_bv1[c3_i86]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, -31); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c3_oc_u); sf_mex_destroy(&c3_b_cost); sf_mex_destroy(&c3_b_useq); sf_mex_destroy(&c3_b_status); sf_mex_destroy(&c3_b_iAout); *c3_pc_u = c3_u; *c3_c_cost = c3_cost; for (c3_i87 = 0; c3_i87 < 20; c3_i87++) { (*c3_c_useq)[c3_i87] = c3_useq[c3_i87]; } *c3_c_status = c3_status; for (c3_i88 = 0; c3_i88 < 10; c3_i88++) { (*c3_c_iAout)[c3_i88] = c3_iAout[c3_i88]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); } static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber) { } static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i89; boolean_T c3_b_inData[10]; int32_T c3_i90; boolean_T c3_u[10]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i89 = 0; c3_i89 < 10; c3_i89++) { c3_b_inData[c3_i89] = (*(boolean_T (*)[10])c3_inData)[c3_i89]; } for (c3_i90 = 0; c3_i90 < 10; c3_i90++) { c3_u[c3_i90] = c3_b_inData[c3_i90]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 11, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_iAout; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y[10]; int32_T c3_i91; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_iAout = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); for (c3_i91 = 0; c3_i91 < 10; c3_i91++) { (*(boolean_T (*)[10])c3_outData)[c3_i91] = c3_y[c3_i91]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; real_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(real_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_u; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_u = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId); sf_mex_destroy(&c3_u); *(real_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i92; real_T c3_b_inData[20]; int32_T c3_i93; real_T c3_u[20]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i92 = 0; c3_i92 < 20; c3_i92++) { c3_b_inData[c3_i92] = (*(real_T (*)[20])c3_inData)[c3_i92]; } for (c3_i93 = 0; c3_i93 < 20; c3_i93++) { c3_u[c3_i93] = c3_b_inData[c3_i93]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 20), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_useq; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[20]; int32_T c3_i94; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_useq = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); for (c3_i94 = 0; c3_i94 < 20; c3_i94++) { (*(real_T (*)[20])c3_outData)[c3_i94] = c3_y[c3_i94]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i95; real_T c3_b_inData[2]; int32_T c3_i96; real_T c3_u[2]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i95 = 0; c3_i95 < 2; c3_i95++) { c3_b_inData[c3_i95] = (*(real_T (*)[2])c3_inData)[c3_i95]; } for (c3_i96 = 0; c3_i96 < 2; c3_i96++) { c3_u[c3_i96] = c3_b_inData[c3_i96]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i97; real_T c3_b_inData[21]; int32_T c3_i98; real_T c3_u[21]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i97 = 0; c3_i97 < 21; c3_i97++) { c3_b_inData[c3_i97] = (*(real_T (*)[21])c3_inData)[c3_i97]; } for (c3_i98 = 0; c3_i98 < 21; c3_i98++) { c3_u[c3_i98] = c3_b_inData[c3_i98]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 21), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i99; int32_T c3_i100; int32_T c3_i101; real_T c3_b_inData[24]; int32_T c3_i102; int32_T c3_i103; int32_T c3_i104; real_T c3_u[24]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i99 = 0; for (c3_i100 = 0; c3_i100 < 4; c3_i100++) { for (c3_i101 = 0; c3_i101 < 6; c3_i101++) { c3_b_inData[c3_i101 + c3_i99] = (*(real_T (*)[24])c3_inData)[c3_i101 + c3_i99]; } c3_i99 += 6; } c3_i102 = 0; for (c3_i103 = 0; c3_i103 < 4; c3_i103++) { for (c3_i104 = 0; c3_i104 < 6; c3_i104++) { c3_u[c3_i104 + c3_i102] = c3_b_inData[c3_i104 + c3_i102]; } c3_i102 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i105; int32_T c3_i106; int32_T c3_i107; real_T c3_b_inData[16]; int32_T c3_i108; int32_T c3_i109; int32_T c3_i110; real_T c3_u[16]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i105 = 0; for (c3_i106 = 0; c3_i106 < 4; c3_i106++) { for (c3_i107 = 0; c3_i107 < 4; c3_i107++) { c3_b_inData[c3_i107 + c3_i105] = (*(real_T (*)[16])c3_inData)[c3_i107 + c3_i105]; } c3_i105 += 4; } c3_i108 = 0; for (c3_i109 = 0; c3_i109 < 4; c3_i109++) { for (c3_i110 = 0; c3_i110 < 4; c3_i110++) { c3_u[c3_i110 + c3_i108] = c3_b_inData[c3_i110 + c3_i108]; } c3_i108 += 4; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i111; real_T c3_b_inData[20]; int32_T c3_i112; real_T c3_u[20]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i111 = 0; c3_i111 < 20; c3_i111++) { c3_b_inData[c3_i111] = (*(real_T (*)[20])c3_inData)[c3_i111]; } for (c3_i112 = 0; c3_i112 < 20; c3_i112++) { c3_u[c3_i112] = c3_b_inData[c3_i112]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 20), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; boolean_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(boolean_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i113; real_T c3_b_inData[4]; int32_T c3_i114; real_T c3_u[4]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i113 = 0; c3_i113 < 4; c3_i113++) { c3_b_inData[c3_i113] = (*(real_T (*)[4])c3_inData)[c3_i113]; } for (c3_i114 = 0; c3_i114 < 4; c3_i114++) { c3_u[c3_i114] = c3_b_inData[c3_i114]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i115; int32_T c3_i116; int32_T c3_i117; real_T c3_b_inData[126]; int32_T c3_i118; int32_T c3_i119; int32_T c3_i120; real_T c3_u[126]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i115 = 0; for (c3_i116 = 0; c3_i116 < 21; c3_i116++) { for (c3_i117 = 0; c3_i117 < 6; c3_i117++) { c3_b_inData[c3_i117 + c3_i115] = (*(real_T (*)[126])c3_inData)[c3_i117 + c3_i115]; } c3_i115 += 6; } c3_i118 = 0; for (c3_i119 = 0; c3_i119 < 21; c3_i119++) { for (c3_i120 = 0; c3_i120 < 6; c3_i120++) { c3_u[c3_i120 + c3_i118] = c3_b_inData[c3_i120 + c3_i118]; } c3_i118 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 21), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i121; real_T c3_b_inData[6]; int32_T c3_i122; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i121 = 0; c3_i121 < 6; c3_i121++) { c3_b_inData[c3_i121] = (*(real_T (*)[6])c3_inData)[c3_i121]; } for (c3_i122 = 0; c3_i122 < 6; c3_i122++) { c3_u[c3_i122] = c3_b_inData[c3_i122]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i123; int32_T c3_i124; int32_T c3_i125; real_T c3_b_inData[12]; int32_T c3_i126; int32_T c3_i127; int32_T c3_i128; real_T c3_u[12]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i123 = 0; for (c3_i124 = 0; c3_i124 < 2; c3_i124++) { for (c3_i125 = 0; c3_i125 < 6; c3_i125++) { c3_b_inData[c3_i125 + c3_i123] = (*(real_T (*)[12])c3_inData)[c3_i125 + c3_i123]; } c3_i123 += 6; } c3_i126 = 0; for (c3_i127 = 0; c3_i127 < 2; c3_i127++) { for (c3_i128 = 0; c3_i128 < 6; c3_i128++) { c3_u[c3_i128 + c3_i126] = c3_b_inData[c3_i128 + c3_i126]; } c3_i126 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 2), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i129; int32_T c3_i130; int32_T c3_i131; real_T c3_b_inData[63]; int32_T c3_i132; int32_T c3_i133; int32_T c3_i134; real_T c3_u[63]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i129 = 0; for (c3_i130 = 0; c3_i130 < 3; c3_i130++) { for (c3_i131 = 0; c3_i131 < 21; c3_i131++) { c3_b_inData[c3_i131 + c3_i129] = (*(real_T (*)[63])c3_inData)[c3_i131 + c3_i129]; } c3_i129 += 21; } c3_i132 = 0; for (c3_i133 = 0; c3_i133 < 3; c3_i133++) { for (c3_i134 = 0; c3_i134 < 21; c3_i134++) { c3_u[c3_i134 + c3_i132] = c3_b_inData[c3_i134 + c3_i132]; } c3_i132 += 21; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 21, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i135; int32_T c3_i136; int32_T c3_i137; real_T c3_b_inData[60]; int32_T c3_i138; int32_T c3_i139; int32_T c3_i140; real_T c3_u[60]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i135 = 0; for (c3_i136 = 0; c3_i136 < 3; c3_i136++) { for (c3_i137 = 0; c3_i137 < 20; c3_i137++) { c3_b_inData[c3_i137 + c3_i135] = (*(real_T (*)[60])c3_inData)[c3_i137 + c3_i135]; } c3_i135 += 20; } c3_i138 = 0; for (c3_i139 = 0; c3_i139 < 3; c3_i139++) { for (c3_i140 = 0; c3_i140 < 20; c3_i140++) { c3_u[c3_i140 + c3_i138] = c3_b_inData[c3_i140 + c3_i138]; } c3_i138 += 20; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 20, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i141; real_T c3_b_inData[3]; int32_T c3_i142; real_T c3_u[3]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i141 = 0; c3_i141 < 3; c3_i141++) { c3_b_inData[c3_i141] = (*(real_T (*)[3])c3_inData)[c3_i141]; } for (c3_i142 = 0; c3_i142 < 3; c3_i142++) { c3_u[c3_i142] = c3_b_inData[c3_i142]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i143; int32_T c3_i144; int32_T c3_i145; real_T c3_b_inData[6]; int32_T c3_i146; int32_T c3_i147; int32_T c3_i148; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i143 = 0; for (c3_i144 = 0; c3_i144 < 3; c3_i144++) { for (c3_i145 = 0; c3_i145 < 2; c3_i145++) { c3_b_inData[c3_i145 + c3_i143] = (*(real_T (*)[6])c3_inData)[c3_i145 + c3_i143]; } c3_i143 += 2; } c3_i146 = 0; for (c3_i147 = 0; c3_i147 < 3; c3_i147++) { for (c3_i148 = 0; c3_i148 < 2; c3_i148++) { c3_u[c3_i148 + c3_i146] = c3_b_inData[c3_i148 + c3_i146]; } c3_i146 += 2; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 2, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i149; char_T c3_b_inData[6]; int32_T c3_i150; char_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i149 = 0; c3_i149 < 6; c3_i149++) { c3_b_inData[c3_i149] = (*(char_T (*)[6])c3_inData)[c3_i149]; } for (c3_i150 = 0; c3_i150 < 6; c3_i150++) { c3_u[c3_i150] = c3_b_inData[c3_i150]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c3_nameCaptureInfo = NULL; c3_nameCaptureInfo = NULL; sf_mex_assign(&c3_nameCaptureInfo, sf_mex_create("nameCaptureInfo", NULL, 0, 0U, 1U, 0U, 2, 0, 1), FALSE); return c3_nameCaptureInfo; } static real_T c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier) { real_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId); sf_mex_destroy(&c3_u); return c3_y; } static real_T c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { real_T c3_y; real_T c3_d34; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_d34, 1, 0, 0U, 0, 0U, 0); c3_y = c3_d34; sf_mex_destroy(&c3_u); return c3_y; } static void c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[20]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); } static void c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[20]) { real_T c3_dv18[20]; int32_T c3_i151; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv18, 1, 0, 0U, 1, 0U, 1, 20); for (c3_i151 = 0; c3_i151 < 20; c3_i151++) { c3_y[c3_i151] = c3_dv18[c3_i151]; } sf_mex_destroy(&c3_u); } static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[10]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); } static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[10]) { boolean_T c3_bv2[10]; int32_T c3_i152; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_bv2, 1, 11, 0U, 1, 0U, 1, 10); for (c3_i152 = 0; c3_i152 < 10; c3_i152++) { c3_y[c3_i152] = c3_bv2[c3_i152]; } sf_mex_destroy(&c3_u); } static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(int32_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static int32_T c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { int32_T c3_y; int32_T c3_i153; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_i153, 1, 6, 0U, 0, 0U, 0); c3_y = c3_i153; sf_mex_destroy(&c3_u); return c3_y; } static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_b_sfEvent; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; int32_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_b_sfEvent = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_sfEvent), &c3_thisId); sf_mex_destroy(&c3_b_sfEvent); *(int32_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static boolean_T c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { boolean_T c3_y; boolean_T c3_b0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_b0, 1, 11, 0U, 0, 0U, 0); c3_y = c3_b0; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_isQP; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_isQP = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_isQP), &c3_thisId); sf_mex_destroy(&c3_c_isQP); *(boolean_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static void c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[16]) { real_T c3_dv19[16]; int32_T c3_i154; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv19, 1, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i154 = 0; c3_i154 < 16; c3_i154++) { c3_y[c3_i154] = c3_dv19[c3_i154]; } sf_mex_destroy(&c3_u); } static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Hinv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[16]; int32_T c3_i155; int32_T c3_i156; int32_T c3_i157; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Hinv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Hinv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Hinv); c3_i155 = 0; for (c3_i156 = 0; c3_i156 < 4; c3_i156++) { for (c3_i157 = 0; c3_i157 < 4; c3_i157++) { (*(real_T (*)[16])c3_outData)[c3_i157 + c3_i155] = c3_y[c3_i157 + c3_i155]; } c3_i155 += 4; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]) { real_T c3_dv20[6]; int32_T c3_i158; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv20, 1, 0, 0U, 1, 0U, 2, 2, 3); for (c3_i158 = 0; c3_i158 < 6; c3_i158++) { c3_y[c3_i158] = c3_dv20[c3_i158]; } sf_mex_destroy(&c3_u); } static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[6]; int32_T c3_i159; int32_T c3_i160; int32_T c3_i161; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_j_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kx); c3_i159 = 0; for (c3_i160 = 0; c3_i160 < 3; c3_i160++) { for (c3_i161 = 0; c3_i161 < 2; c3_i161++) { (*(real_T (*)[6])c3_outData)[c3_i161 + c3_i159] = c3_y[c3_i161 + c3_i159]; } c3_i159 += 2; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]) { real_T c3_dv21[3]; int32_T c3_i162; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv21, 1, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i162 = 0; c3_i162 < 3; c3_i162++) { c3_y[c3_i162] = c3_dv21[c3_i162]; } sf_mex_destroy(&c3_u); } static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ku1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[3]; int32_T c3_i163; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ku1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_k_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ku1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ku1); for (c3_i163 = 0; c3_i163 < 3; c3_i163++) { (*(real_T (*)[3])c3_outData)[c3_i163] = c3_y[c3_i163]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]) { real_T c3_dv22[60]; int32_T c3_i164; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv22, 1, 0, 0U, 1, 0U, 2, 20, 3); for (c3_i164 = 0; c3_i164 < 60; c3_i164++) { c3_y[c3_i164] = c3_dv22[c3_i164]; } sf_mex_destroy(&c3_u); } static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kut; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[60]; int32_T c3_i165; int32_T c3_i166; int32_T c3_i167; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kut = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_l_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kut), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kut); c3_i165 = 0; for (c3_i166 = 0; c3_i166 < 3; c3_i166++) { for (c3_i167 = 0; c3_i167 < 20; c3_i167++) { (*(real_T (*)[60])c3_outData)[c3_i167 + c3_i165] = c3_y[c3_i167 + c3_i165]; } c3_i165 += 20; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[63]) { real_T c3_dv23[63]; int32_T c3_i168; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv23, 1, 0, 0U, 1, 0U, 2, 21, 3); for (c3_i168 = 0; c3_i168 < 63; c3_i168++) { c3_y[c3_i168] = c3_dv23[c3_i168]; } sf_mex_destroy(&c3_u); } static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[63]; int32_T c3_i169; int32_T c3_i170; int32_T c3_i171; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_m_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kv); c3_i169 = 0; for (c3_i170 = 0; c3_i170 < 3; c3_i170++) { for (c3_i171 = 0; c3_i171 < 21; c3_i171++) { (*(real_T (*)[63])c3_outData)[c3_i171 + c3_i169] = c3_y[c3_i171 + c3_i169]; } c3_i169 += 21; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]) { real_T c3_dv24[6]; int32_T c3_i172; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv24, 1, 0, 0U, 1, 0U, 1, 6); for (c3_i172 = 0; c3_i172 < 6; c3_i172++) { c3_y[c3_i172] = c3_dv24[c3_i172]; } sf_mex_destroy(&c3_u); } static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mlim; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[6]; int32_T c3_i173; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mlim = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_n_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mlim), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mlim); for (c3_i173 = 0; c3_i173 < 6; c3_i173++) { (*(real_T (*)[6])c3_outData)[c3_i173] = c3_y[c3_i173]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[12]) { real_T c3_dv25[12]; int32_T c3_i174; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv25, 1, 0, 0U, 1, 0U, 2, 6, 2); for (c3_i174 = 0; c3_i174 < 12; c3_i174++) { c3_y[c3_i174] = c3_dv25[c3_i174]; } sf_mex_destroy(&c3_u); } static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[12]; int32_T c3_i175; int32_T c3_i176; int32_T c3_i177; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_o_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mx); c3_i175 = 0; for (c3_i176 = 0; c3_i176 < 2; c3_i176++) { for (c3_i177 = 0; c3_i177 < 6; c3_i177++) { (*(real_T (*)[12])c3_outData)[c3_i177 + c3_i175] = c3_y[c3_i177 + c3_i175]; } c3_i175 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[126]) { real_T c3_dv26[126]; int32_T c3_i178; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv26, 1, 0, 0U, 1, 0U, 2, 6, 21); for (c3_i178 = 0; c3_i178 < 126; c3_i178++) { c3_y[c3_i178] = c3_dv26[c3_i178]; } sf_mex_destroy(&c3_u); } static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[126]; int32_T c3_i179; int32_T c3_i180; int32_T c3_i181; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_p_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mv); c3_i179 = 0; for (c3_i180 = 0; c3_i180 < 21; c3_i180++) { for (c3_i181 = 0; c3_i181 < 6; c3_i181++) { (*(real_T (*)[126])c3_outData)[c3_i181 + c3_i179] = c3_y[c3_i181 + c3_i179]; } c3_i179 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[4]) { real_T c3_dv27[4]; int32_T c3_i182; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv27, 1, 0, 0U, 1, 0U, 1, 4); for (c3_i182 = 0; c3_i182 < 4; c3_i182++) { c3_y[c3_i182] = c3_dv27[c3_i182]; } sf_mex_destroy(&c3_u); } static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_z_degrees; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[4]; int32_T c3_i183; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_z_degrees = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_q_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_z_degrees), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_z_degrees); for (c3_i183 = 0; c3_i183 < 4; c3_i183++) { (*(real_T (*)[4])c3_outData)[c3_i183] = c3_y[c3_i183]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[20]) { real_T c3_dv28[20]; int32_T c3_i184; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv28, 1, 0, 0U, 1, 0U, 2, 1, 20); for (c3_i184 = 0; c3_i184 < 20; c3_i184++) { c3_y[c3_i184] = c3_dv28[c3_i184]; } sf_mex_destroy(&c3_u); } static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_blocking_moves; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[20]; int32_T c3_i185; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_blocking_moves = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_r_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_blocking_moves), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_blocking_moves); for (c3_i185 = 0; c3_i185 < 20; c3_i185++) { (*(real_T (*)[20])c3_outData)[c3_i185] = c3_y[c3_i185]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[24]) { real_T c3_dv29[24]; int32_T c3_i186; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv29, 1, 0, 0U, 1, 0U, 2, 6, 4); for (c3_i186 = 0; c3_i186 < 24; c3_i186++) { c3_y[c3_i186] = c3_dv29[c3_i186]; } sf_mex_destroy(&c3_u); } static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ac; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[24]; int32_T c3_i187; int32_T c3_i188; int32_T c3_i189; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ac = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_s_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ac), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ac); c3_i187 = 0; for (c3_i188 = 0; c3_i188 < 4; c3_i188++) { for (c3_i189 = 0; c3_i189 < 6; c3_i189++) { (*(real_T (*)[24])c3_outData)[c3_i189 + c3_i187] = c3_y[c3_i189 + c3_i187]; } c3_i187 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static uint8_T c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier) { uint8_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_u_emlrt_marshallIn(chartInstance, sf_mex_dup (c3_b_is_active_c3_mpclib), &c3_thisId); sf_mex_destroy(&c3_b_is_active_c3_mpclib); return c3_y; } static uint8_T c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { uint8_T c3_y; uint8_T c3_u0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_u0, 1, 3, 0U, 0, 0U, 0); c3_y = c3_u0; sf_mex_destroy(&c3_u); return c3_y; } static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c3_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2008884449U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3349456191U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3383499532U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(154235383U); } mxArray *sf_c3_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("uZDKFWLB82ra0oNDUcAsCG"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,13,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(21); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,50,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(4); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(3); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(3); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(3); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(21); pr[1] = (double)(3); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(3); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,13,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,13,"type",mxType); } mxSetField(mxData,13,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,14,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,14,"type",mxType); } mxSetField(mxData,14,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,15,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,15,"type",mxType); } mxSetField(mxData,15,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(21); mxSetField(mxData,16,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,16,"type",mxType); } mxSetField(mxData,16,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(2); mxSetField(mxData,17,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,17,"type",mxType); } mxSetField(mxData,17,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,18,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,18,"type",mxType); } mxSetField(mxData,18,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,19,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,19,"type",mxType); } mxSetField(mxData,19,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,20,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,20,"type",mxType); } mxSetField(mxData,20,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,21,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,21,"type",mxType); } mxSetField(mxData,21,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,22,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,22,"type",mxType); } mxSetField(mxData,22,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,23,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,23,"type",mxType); } mxSetField(mxData,23,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(20); mxSetField(mxData,24,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,24,"type",mxType); } mxSetField(mxData,24,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,25,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,25,"type",mxType); } mxSetField(mxData,25,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,26,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,26,"type",mxType); } mxSetField(mxData,26,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,27,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,27,"type",mxType); } mxSetField(mxData,27,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,28,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,28,"type",mxType); } mxSetField(mxData,28,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,29,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,29,"type",mxType); } mxSetField(mxData,29,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,30,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,30,"type",mxType); } mxSetField(mxData,30,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,31,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,31,"type",mxType); } mxSetField(mxData,31,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,32,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,32,"type",mxType); } mxSetField(mxData,32,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,33,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,33,"type",mxType); } mxSetField(mxData,33,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,34,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,34,"type",mxType); } mxSetField(mxData,34,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,35,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,35,"type",mxType); } mxSetField(mxData,35,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,36,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,36,"type",mxType); } mxSetField(mxData,36,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,37,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,37,"type",mxType); } mxSetField(mxData,37,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,38,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,38,"type",mxType); } mxSetField(mxData,38,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,39,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,39,"type",mxType); } mxSetField(mxData,39,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,40,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,40,"type",mxType); } mxSetField(mxData,40,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,41,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,41,"type",mxType); } mxSetField(mxData,41,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,42,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,42,"type",mxType); } mxSetField(mxData,42,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,43,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,43,"type",mxType); } mxSetField(mxData,43,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,44,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,44,"type",mxType); } mxSetField(mxData,44,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,45,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,45,"type",mxType); } mxSetField(mxData,45,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,46,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,46,"type",mxType); } mxSetField(mxData,46,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(1); mxSetField(mxData,47,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,47,"type",mxType); } mxSetField(mxData,47,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,48,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,48,"type",mxType); } mxSetField(mxData,48,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(1); mxSetField(mxData,49,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,49,"type",mxType); } mxSetField(mxData,49,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,5,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c3_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c3_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x6'type','srcId','name','auxInfo'{{M[1],M[20],T\"cost\",},{M[1],M[145],T\"iAout\",},{M[1],M[126],T\"status\",},{M[1],M[19],T\"u\",},{M[1],M[21],T\"useq\",},{M[8],M[0],T\"is_active_c3_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 6, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c3_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 3, 1, 1, 68, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,1,1,0,"rseq"); _SFD_SET_DATA_PROPS(1,1,1,0,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"x"); _SFD_SET_DATA_PROPS(3,1,1,0,"old_u"); _SFD_SET_DATA_PROPS(4,1,1,0,"iA"); _SFD_SET_DATA_PROPS(5,1,1,0,"umin"); _SFD_SET_DATA_PROPS(6,1,1,0,"umax"); _SFD_SET_DATA_PROPS(7,1,1,0,"ymin"); _SFD_SET_DATA_PROPS(8,1,1,0,"ymax"); _SFD_SET_DATA_PROPS(9,1,1,0,"switch_in"); _SFD_SET_DATA_PROPS(10,1,1,0,"ywt"); _SFD_SET_DATA_PROPS(11,1,1,0,"duwt"); _SFD_SET_DATA_PROPS(12,1,1,0,"rhoeps"); _SFD_SET_DATA_PROPS(13,2,0,1,"u"); _SFD_SET_DATA_PROPS(14,2,0,1,"cost"); _SFD_SET_DATA_PROPS(15,2,0,1,"useq"); _SFD_SET_DATA_PROPS(16,2,0,1,"status"); _SFD_SET_DATA_PROPS(17,10,0,0,"isQP"); _SFD_SET_DATA_PROPS(18,10,0,0,"nu"); _SFD_SET_DATA_PROPS(19,10,0,0,"ny"); _SFD_SET_DATA_PROPS(20,10,0,0,"degrees"); _SFD_SET_DATA_PROPS(21,10,0,0,"Hinv"); _SFD_SET_DATA_PROPS(22,10,0,0,"Kx"); _SFD_SET_DATA_PROPS(23,10,0,0,"Ku1"); _SFD_SET_DATA_PROPS(24,10,0,0,"Kut"); _SFD_SET_DATA_PROPS(25,10,0,0,"Kr"); _SFD_SET_DATA_PROPS(26,10,0,0,"Kv"); _SFD_SET_DATA_PROPS(27,10,0,0,"Mlim"); _SFD_SET_DATA_PROPS(28,10,0,0,"Mx"); _SFD_SET_DATA_PROPS(29,10,0,0,"Mu1"); _SFD_SET_DATA_PROPS(30,10,0,0,"Mv"); _SFD_SET_DATA_PROPS(31,10,0,0,"z_degrees"); _SFD_SET_DATA_PROPS(32,10,0,0,"utarget"); _SFD_SET_DATA_PROPS(33,10,0,0,"p"); _SFD_SET_DATA_PROPS(34,10,0,0,"uoff"); _SFD_SET_DATA_PROPS(35,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(36,10,0,0,"maxiter"); _SFD_SET_DATA_PROPS(37,10,0,0,"nxQP"); _SFD_SET_DATA_PROPS(38,10,0,0,"openloopflag"); _SFD_SET_DATA_PROPS(39,10,0,0,"lims_inport"); _SFD_SET_DATA_PROPS(40,10,0,0,"no_umin"); _SFD_SET_DATA_PROPS(41,10,0,0,"no_umax"); _SFD_SET_DATA_PROPS(42,10,0,0,"no_ymin"); _SFD_SET_DATA_PROPS(43,10,0,0,"no_ymax"); _SFD_SET_DATA_PROPS(44,10,0,0,"switch_inport"); _SFD_SET_DATA_PROPS(45,10,0,0,"no_switch"); _SFD_SET_DATA_PROPS(46,10,0,0,"enable_value"); _SFD_SET_DATA_PROPS(47,10,0,0,"return_cost"); _SFD_SET_DATA_PROPS(48,10,0,0,"H"); _SFD_SET_DATA_PROPS(49,10,0,0,"return_sequence"); _SFD_SET_DATA_PROPS(50,10,0,0,"blocking_moves"); _SFD_SET_DATA_PROPS(51,10,0,0,"Linv"); _SFD_SET_DATA_PROPS(52,10,0,0,"Ac"); _SFD_SET_DATA_PROPS(53,10,0,0,"no_ywt"); _SFD_SET_DATA_PROPS(54,10,0,0,"no_duwt"); _SFD_SET_DATA_PROPS(55,10,0,0,"no_rhoeps"); _SFD_SET_DATA_PROPS(56,10,0,0,"Wy"); _SFD_SET_DATA_PROPS(57,10,0,0,"Wdu"); _SFD_SET_DATA_PROPS(58,10,0,0,"Jm"); _SFD_SET_DATA_PROPS(59,10,0,0,"SuJm"); _SFD_SET_DATA_PROPS(60,10,0,0,"I2JmWuI2Jm"); _SFD_SET_DATA_PROPS(61,10,0,0,"Su1"); _SFD_SET_DATA_PROPS(62,10,0,0,"I1WuI2Jm"); _SFD_SET_DATA_PROPS(63,10,0,0,"Sx"); _SFD_SET_DATA_PROPS(64,10,0,0,"Hv"); _SFD_SET_DATA_PROPS(65,10,0,0,"Wu"); _SFD_SET_DATA_PROPS(66,10,0,0,"I1"); _SFD_SET_DATA_PROPS(67,2,0,1,"iAout"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,2551); _SFD_CV_INIT_EML_IF(0,1,0,648,679,2012,2550); _SFD_CV_INIT_EML_IF(0,1,1,966,987,1495,2010); { unsigned int dimVector[1]; dimVector[0]= 20; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 21; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(4,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(12,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(13,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(14,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 20; _SFD_SET_DATA_COMPILED_PROPS(15,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(16,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(17,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType)c3_e_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(18,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(19,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(20,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(21,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 2; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(22,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_q_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(23,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_p_sf_marshallOut,(MexInFcnForType) c3_h_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 20; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(24,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 20; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(25,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 21; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(26,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_n_sf_marshallOut,(MexInFcnForType) c3_j_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(27,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 2; _SFD_SET_DATA_COMPILED_PROPS(28,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_m_sf_marshallOut,(MexInFcnForType) c3_l_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(29,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 21; _SFD_SET_DATA_COMPILED_PROPS(30,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_k_sf_marshallOut,(MexInFcnForType) c3_m_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 4; _SFD_SET_DATA_COMPILED_PROPS(31,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_n_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 20; _SFD_SET_DATA_COMPILED_PROPS(32,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(33,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(34,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(35,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(36,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(37,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(38,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType)c3_e_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(39,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(40,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(41,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(42,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(43,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(44,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(45,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(46,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(47,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(48,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(49,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 20; _SFD_SET_DATA_COMPILED_PROPS(50,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_h_sf_marshallOut,(MexInFcnForType) c3_o_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(51,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(52,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_f_sf_marshallOut,(MexInFcnForType) c3_p_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(53,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(54,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(55,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(56,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(57,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(58,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(59,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(60,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(61,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(62,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(63,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(64,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(65,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(66,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(67,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType) c3_sf_marshallIn); } { real_T *c3_old_u; real_T *c3_umin; real_T *c3_umax; real_T *c3_ymin; real_T *c3_ymax; real_T *c3_switch_in; real_T *c3_ywt; real_T *c3_duwt; real_T *c3_rhoeps; real_T *c3_u; real_T *c3_cost; real_T *c3_status; real_T (*c3_rseq)[20]; real_T (*c3_vseq)[21]; real_T (*c3_x)[2]; boolean_T (*c3_iA)[10]; real_T (*c3_useq)[20]; boolean_T (*c3_iAout)[10]; c3_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[10])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[21])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[20])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SET_DATA_VALUE_PTR(0U, *c3_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c3_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c3_x); _SFD_SET_DATA_VALUE_PTR(3U, c3_old_u); _SFD_SET_DATA_VALUE_PTR(4U, *c3_iA); _SFD_SET_DATA_VALUE_PTR(5U, c3_umin); _SFD_SET_DATA_VALUE_PTR(6U, c3_umax); _SFD_SET_DATA_VALUE_PTR(7U, c3_ymin); _SFD_SET_DATA_VALUE_PTR(8U, c3_ymax); _SFD_SET_DATA_VALUE_PTR(9U, c3_switch_in); _SFD_SET_DATA_VALUE_PTR(10U, c3_ywt); _SFD_SET_DATA_VALUE_PTR(11U, c3_duwt); _SFD_SET_DATA_VALUE_PTR(12U, c3_rhoeps); _SFD_SET_DATA_VALUE_PTR(13U, c3_u); _SFD_SET_DATA_VALUE_PTR(14U, c3_cost); _SFD_SET_DATA_VALUE_PTR(15U, *c3_useq); _SFD_SET_DATA_VALUE_PTR(16U, c3_status); _SFD_SET_DATA_VALUE_PTR(17U, &chartInstance->c3_isQP); _SFD_SET_DATA_VALUE_PTR(18U, &chartInstance->c3_nu); _SFD_SET_DATA_VALUE_PTR(19U, &chartInstance->c3_ny); _SFD_SET_DATA_VALUE_PTR(20U, &chartInstance->c3_degrees); _SFD_SET_DATA_VALUE_PTR(21U, chartInstance->c3_Hinv); _SFD_SET_DATA_VALUE_PTR(22U, chartInstance->c3_Kx); _SFD_SET_DATA_VALUE_PTR(23U, chartInstance->c3_Ku1); _SFD_SET_DATA_VALUE_PTR(24U, chartInstance->c3_Kut); _SFD_SET_DATA_VALUE_PTR(25U, chartInstance->c3_Kr); _SFD_SET_DATA_VALUE_PTR(26U, chartInstance->c3_Kv); _SFD_SET_DATA_VALUE_PTR(27U, chartInstance->c3_Mlim); _SFD_SET_DATA_VALUE_PTR(28U, chartInstance->c3_Mx); _SFD_SET_DATA_VALUE_PTR(29U, chartInstance->c3_Mu1); _SFD_SET_DATA_VALUE_PTR(30U, chartInstance->c3_Mv); _SFD_SET_DATA_VALUE_PTR(31U, chartInstance->c3_z_degrees); _SFD_SET_DATA_VALUE_PTR(32U, chartInstance->c3_utarget); _SFD_SET_DATA_VALUE_PTR(33U, &chartInstance->c3_p); _SFD_SET_DATA_VALUE_PTR(34U, &chartInstance->c3_uoff); _SFD_SET_DATA_VALUE_PTR(35U, &chartInstance->c3_yoff); _SFD_SET_DATA_VALUE_PTR(36U, &chartInstance->c3_maxiter); _SFD_SET_DATA_VALUE_PTR(37U, &chartInstance->c3_nxQP); _SFD_SET_DATA_VALUE_PTR(38U, &chartInstance->c3_openloopflag); _SFD_SET_DATA_VALUE_PTR(39U, &chartInstance->c3_lims_inport); _SFD_SET_DATA_VALUE_PTR(40U, &chartInstance->c3_no_umin); _SFD_SET_DATA_VALUE_PTR(41U, &chartInstance->c3_no_umax); _SFD_SET_DATA_VALUE_PTR(42U, &chartInstance->c3_no_ymin); _SFD_SET_DATA_VALUE_PTR(43U, &chartInstance->c3_no_ymax); _SFD_SET_DATA_VALUE_PTR(44U, &chartInstance->c3_switch_inport); _SFD_SET_DATA_VALUE_PTR(45U, &chartInstance->c3_no_switch); _SFD_SET_DATA_VALUE_PTR(46U, &chartInstance->c3_enable_value); _SFD_SET_DATA_VALUE_PTR(47U, &chartInstance->c3_return_cost); _SFD_SET_DATA_VALUE_PTR(48U, chartInstance->c3_H); _SFD_SET_DATA_VALUE_PTR(49U, &chartInstance->c3_return_sequence); _SFD_SET_DATA_VALUE_PTR(50U, chartInstance->c3_blocking_moves); _SFD_SET_DATA_VALUE_PTR(51U, chartInstance->c3_Linv); _SFD_SET_DATA_VALUE_PTR(52U, chartInstance->c3_Ac); _SFD_SET_DATA_VALUE_PTR(53U, &chartInstance->c3_no_ywt); _SFD_SET_DATA_VALUE_PTR(54U, &chartInstance->c3_no_duwt); _SFD_SET_DATA_VALUE_PTR(55U, &chartInstance->c3_no_rhoeps); _SFD_SET_DATA_VALUE_PTR(56U, &chartInstance->c3_Wy); _SFD_SET_DATA_VALUE_PTR(57U, &chartInstance->c3_Wdu); _SFD_SET_DATA_VALUE_PTR(58U, &chartInstance->c3_Jm); _SFD_SET_DATA_VALUE_PTR(59U, &chartInstance->c3_SuJm); _SFD_SET_DATA_VALUE_PTR(60U, &chartInstance->c3_I2JmWuI2Jm); _SFD_SET_DATA_VALUE_PTR(61U, &chartInstance->c3_Su1); _SFD_SET_DATA_VALUE_PTR(62U, &chartInstance->c3_I1WuI2Jm); _SFD_SET_DATA_VALUE_PTR(63U, &chartInstance->c3_Sx); _SFD_SET_DATA_VALUE_PTR(64U, &chartInstance->c3_Hv); _SFD_SET_DATA_VALUE_PTR(65U, &chartInstance->c3_Wu); _SFD_SET_DATA_VALUE_PTR(66U, &chartInstance->c3_I1); _SFD_SET_DATA_VALUE_PTR(67U, *c3_iAout); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "T7oeNP5jU5Ide0wJqxRvND"; } static void sf_opaque_initialize_c3_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); initialize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c3_mpclib(void *chartInstanceVar) { enable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c3_mpclib(void *chartInstanceVar) { disable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c3_mpclib(void *chartInstanceVar) { sf_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c3_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c3_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c3_mpclib(S); } static void sf_opaque_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c3_mpclib(S, st); } static void sf_opaque_terminate_c3_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c3_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c3_mpclib(SimStruct *S) { /* Actual parameters from chart: Ac H Hinv Hv I1 I1WuI2Jm I2JmWuI2Jm Jm Kr Ku1 Kut Kv Kx Linv Mlim Mu1 Mv Mx Su1 SuJm Sx Wdu Wu Wy blocking_moves degrees enable_value isQP lims_inport maxiter no_duwt no_rhoeps no_switch no_umax no_umin no_ymax no_ymin no_ywt nu nxQP ny openloopflag p return_cost return_sequence switch_inport uoff utarget yoff z_degrees */ const char_T *rtParamNames[] = { "Ac", "H", "Hinv", "Hv", "I1", "I1WuI2Jm", "I2JmWuI2Jm", "Jm", "Kr", "Ku1", "Kut", "Kv", "Kx", "Linv", "Mlim", "Mu1", "Mv", "Mx", "Su1", "SuJm", "Sx", "Wdu", "Wu", "Wy", "blocking_moves", "degrees", "enable_value", "isQP", "lims_inport", "maxiter", "no_duwt", "no_rhoeps", "no_switch", "no_umax", "no_umin", "no_ymax", "no_ymin", "no_ywt", "nu", "nxQP", "ny", "openloopflag", "p", "return_cost", "return_sequence", "switch_inport", "uoff", "utarget", "yoff", "z_degrees" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for Ac*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for H*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for Hinv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for Hv*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for I1*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_DOUBLE); /* registration for I1WuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for I2JmWuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for Jm*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); /* registration for Kr*/ ssRegDlgParamAsRunTimeParam(S, 8, 8, rtParamNames[8], SS_DOUBLE); /* registration for Ku1*/ ssRegDlgParamAsRunTimeParam(S, 9, 9, rtParamNames[9], SS_DOUBLE); /* registration for Kut*/ ssRegDlgParamAsRunTimeParam(S, 10, 10, rtParamNames[10], SS_DOUBLE); /* registration for Kv*/ ssRegDlgParamAsRunTimeParam(S, 11, 11, rtParamNames[11], SS_DOUBLE); /* registration for Kx*/ ssRegDlgParamAsRunTimeParam(S, 12, 12, rtParamNames[12], SS_DOUBLE); /* registration for Linv*/ ssRegDlgParamAsRunTimeParam(S, 13, 13, rtParamNames[13], SS_DOUBLE); /* registration for Mlim*/ ssRegDlgParamAsRunTimeParam(S, 14, 14, rtParamNames[14], SS_DOUBLE); /* registration for Mu1*/ ssRegDlgParamAsRunTimeParam(S, 15, 15, rtParamNames[15], SS_DOUBLE); /* registration for Mv*/ ssRegDlgParamAsRunTimeParam(S, 16, 16, rtParamNames[16], SS_DOUBLE); /* registration for Mx*/ ssRegDlgParamAsRunTimeParam(S, 17, 17, rtParamNames[17], SS_DOUBLE); /* registration for Su1*/ ssRegDlgParamAsRunTimeParam(S, 18, 18, rtParamNames[18], SS_DOUBLE); /* registration for SuJm*/ ssRegDlgParamAsRunTimeParam(S, 19, 19, rtParamNames[19], SS_DOUBLE); /* registration for Sx*/ ssRegDlgParamAsRunTimeParam(S, 20, 20, rtParamNames[20], SS_DOUBLE); /* registration for Wdu*/ ssRegDlgParamAsRunTimeParam(S, 21, 21, rtParamNames[21], SS_DOUBLE); /* registration for Wu*/ ssRegDlgParamAsRunTimeParam(S, 22, 22, rtParamNames[22], SS_DOUBLE); /* registration for Wy*/ ssRegDlgParamAsRunTimeParam(S, 23, 23, rtParamNames[23], SS_DOUBLE); /* registration for blocking_moves*/ ssRegDlgParamAsRunTimeParam(S, 24, 24, rtParamNames[24], SS_DOUBLE); /* registration for degrees*/ ssRegDlgParamAsRunTimeParam(S, 25, 25, rtParamNames[25], SS_DOUBLE); /* registration for enable_value*/ ssRegDlgParamAsRunTimeParam(S, 26, 26, rtParamNames[26], SS_DOUBLE); /* registration for isQP*/ ssRegDlgParamAsRunTimeParam(S, 27, 27, rtParamNames[27], SS_BOOLEAN); /* registration for lims_inport*/ ssRegDlgParamAsRunTimeParam(S, 28, 28, rtParamNames[28], SS_DOUBLE); /* registration for maxiter*/ ssRegDlgParamAsRunTimeParam(S, 29, 29, rtParamNames[29], SS_DOUBLE); /* registration for no_duwt*/ ssRegDlgParamAsRunTimeParam(S, 30, 30, rtParamNames[30], SS_DOUBLE); /* registration for no_rhoeps*/ ssRegDlgParamAsRunTimeParam(S, 31, 31, rtParamNames[31], SS_DOUBLE); /* registration for no_switch*/ ssRegDlgParamAsRunTimeParam(S, 32, 32, rtParamNames[32], SS_DOUBLE); /* registration for no_umax*/ ssRegDlgParamAsRunTimeParam(S, 33, 33, rtParamNames[33], SS_DOUBLE); /* registration for no_umin*/ ssRegDlgParamAsRunTimeParam(S, 34, 34, rtParamNames[34], SS_DOUBLE); /* registration for no_ymax*/ ssRegDlgParamAsRunTimeParam(S, 35, 35, rtParamNames[35], SS_DOUBLE); /* registration for no_ymin*/ ssRegDlgParamAsRunTimeParam(S, 36, 36, rtParamNames[36], SS_DOUBLE); /* registration for no_ywt*/ ssRegDlgParamAsRunTimeParam(S, 37, 37, rtParamNames[37], SS_DOUBLE); /* registration for nu*/ ssRegDlgParamAsRunTimeParam(S, 38, 38, rtParamNames[38], SS_DOUBLE); /* registration for nxQP*/ ssRegDlgParamAsRunTimeParam(S, 39, 39, rtParamNames[39], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 40, 40, rtParamNames[40], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 41, 41, rtParamNames[41], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 42, 42, rtParamNames[42], SS_DOUBLE); /* registration for return_cost*/ ssRegDlgParamAsRunTimeParam(S, 43, 43, rtParamNames[43], SS_DOUBLE); /* registration for return_sequence*/ ssRegDlgParamAsRunTimeParam(S, 44, 44, rtParamNames[44], SS_DOUBLE); /* registration for switch_inport*/ ssRegDlgParamAsRunTimeParam(S, 45, 45, rtParamNames[45], SS_DOUBLE); /* registration for uoff*/ ssRegDlgParamAsRunTimeParam(S, 46, 46, rtParamNames[46], SS_DOUBLE); /* registration for utarget*/ ssRegDlgParamAsRunTimeParam(S, 47, 47, rtParamNames[47], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 48, 48, rtParamNames[48], SS_DOUBLE); /* registration for z_degrees*/ ssRegDlgParamAsRunTimeParam(S, 49, 49, rtParamNames[49], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 3); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,3,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,3, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,3); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 2, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 3, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 4, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 5, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 6, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 7, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 8, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 9, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 10, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 11, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 12, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,3,13); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,3,5); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=5; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 13; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,3); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(3697607324U)); ssSetChecksum1(S,(3163451633U)); ssSetChecksum2(S,(3010755970U)); ssSetChecksum3(S,(753621111U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c3_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c3_mpclib(SimStruct *S) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)utMalloc(sizeof (SFc3_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc3_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c3_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c3_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c3_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c3_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c3_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c3_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c3_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c3_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c3_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c3_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c3_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c3_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c3_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c3_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c3_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/c3_mpclib.h ================================================ #ifndef __c3_mpclib_h__ #define __c3_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc3_mpclibInstanceStruct #define typedef_SFc3_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c3_sfEvent; boolean_T c3_isStable; boolean_T c3_doneDoubleBufferReInit; uint8_T c3_is_active_c3_mpclib; boolean_T c3_isQP; real_T c3_nu; real_T c3_ny; real_T c3_degrees; real_T c3_Hinv[16]; real_T c3_Kx[6]; real_T c3_Ku1[3]; real_T c3_Kut[60]; real_T c3_Kr[60]; real_T c3_Kv[63]; real_T c3_Mlim[6]; real_T c3_Mx[12]; real_T c3_Mu1[6]; real_T c3_Mv[126]; real_T c3_z_degrees[4]; real_T c3_utarget[20]; real_T c3_p; real_T c3_uoff; real_T c3_yoff; real_T c3_maxiter; real_T c3_nxQP; boolean_T c3_openloopflag; real_T c3_lims_inport; real_T c3_no_umin; real_T c3_no_umax; real_T c3_no_ymin; real_T c3_no_ymax; real_T c3_switch_inport; real_T c3_no_switch; real_T c3_enable_value; real_T c3_return_cost; real_T c3_H[16]; real_T c3_return_sequence; real_T c3_blocking_moves[20]; real_T c3_Linv[16]; real_T c3_Ac[24]; real_T c3_no_ywt; real_T c3_no_duwt; real_T c3_no_rhoeps; real_T c3_Wy; real_T c3_Wdu; real_T c3_Jm; real_T c3_SuJm; real_T c3_I2JmWuI2Jm; real_T c3_Su1; real_T c3_I1WuI2Jm; real_T c3_Sx; real_T c3_Hv; real_T c3_Wu; real_T c3_I1; } SFc3_mpclibInstanceStruct; #endif /*typedef_SFc3_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); extern void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/c4_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c4_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c4_b_p (20.0) #define c4_b_ny (1.0) #define c4_b_nv (1.0) #define c4_b_yoff (0.0) #define c4_b_voff (0.0) #define c4_b_no_md (1.0) #define c4_b_no_ref (0.0) #define c4_b_openloopflag (FALSE) /* Variable Declarations */ /* Variable Definitions */ static const char * c4_debug_family_names[16] = { "DataType", "nv", "ny", "p", "yoff", "voff", "no_md", "no_ref", "openloopflag", "nargin", "nargout", "ref", "md", "rseq", "vseq", "v" }; /* Function Declarations */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st); static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber); static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_info_helper(const mxArray **c4_info); static const mxArray *c4_emlrt_marshallOut(char * c4_u); static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u); static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[20]); static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[20]); static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[21]); static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[21]); static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier); static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static boolean_T c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static uint8_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier); static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { chartInstance->c4_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c4_is_active_c4_mpclib = 0U; } static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { real_T c4_d0; real_T c4_d1; real_T c4_d2; real_T c4_d3; real_T c4_d4; real_T c4_d5; real_T c4_d6; real_T c4_d7; sf_set_error_prefix_string( "Error evaluating data 'nv' in the parent workspace.\n"); sf_mex_import_named("nv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), &c4_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_nv = c4_d0; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c4_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_ny = c4_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c4_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_p = c4_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c4_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_yoff = c4_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'voff' in the parent workspace.\n"); sf_mex_import_named("voff", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c4_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_voff = c4_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_md' in the parent workspace.\n"); sf_mex_import_named("no_md", sf_mex_get_sfun_param(chartInstance->S, 0, 0), &c4_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_md = c4_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ref' in the parent workspace.\n"); sf_mex_import_named("no_ref", sf_mex_get_sfun_param(chartInstance->S, 1, 0), &c4_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_ref = c4_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 4, 0), &c4_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_openloopflag = (c4_d7 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { const mxArray *c4_st; const mxArray *c4_y = NULL; int32_T c4_i0; real_T c4_u[20]; const mxArray *c4_b_y = NULL; real_T c4_hoistedGlobal; real_T c4_b_u; const mxArray *c4_c_y = NULL; int32_T c4_i1; real_T c4_c_u[21]; const mxArray *c4_d_y = NULL; uint8_T c4_b_hoistedGlobal; uint8_T c4_d_u; const mxArray *c4_e_y = NULL; real_T *c4_v; real_T (*c4_vseq)[21]; real_T (*c4_rseq)[20]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[21])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 1); c4_st = NULL; c4_st = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_createcellarray(4), FALSE); for (c4_i0 = 0; c4_i0 < 20; c4_i0++) { c4_u[c4_i0] = (*c4_rseq)[c4_i0]; } c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 20), FALSE); sf_mex_setcell(c4_y, 0, c4_b_y); c4_hoistedGlobal = *c4_v; c4_b_u = c4_hoistedGlobal; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 1, c4_c_y); for (c4_i1 = 0; c4_i1 < 21; c4_i1++) { c4_c_u[c4_i1] = (*c4_vseq)[c4_i1]; } c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", c4_c_u, 0, 0U, 1U, 0U, 1, 21), FALSE); sf_mex_setcell(c4_y, 2, c4_d_y); c4_b_hoistedGlobal = chartInstance->c4_is_active_c4_mpclib; c4_d_u = c4_b_hoistedGlobal; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_d_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 3, c4_e_y); sf_mex_assign(&c4_st, c4_y, FALSE); return c4_st; } static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st) { const mxArray *c4_u; real_T c4_dv0[20]; int32_T c4_i2; real_T c4_dv1[21]; int32_T c4_i3; real_T *c4_v; real_T (*c4_rseq)[20]; real_T (*c4_vseq)[21]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[21])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c4_doneDoubleBufferReInit = TRUE; c4_u = sf_mex_dup(c4_st); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 0)), "rseq", c4_dv0); for (c4_i2 = 0; c4_i2 < 20; c4_i2++) { (*c4_rseq)[c4_i2] = c4_dv0[c4_i2]; } *c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 1)), "v"); c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 2)), "vseq", c4_dv1); for (c4_i3 = 0; c4_i3 < 21; c4_i3++) { (*c4_vseq)[c4_i3] = c4_dv1[c4_i3]; } chartInstance->c4_is_active_c4_mpclib = c4_i_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 3)), "is_active_c4_mpclib"); sf_mex_destroy(&c4_u); c4_update_debugger_state_c4_mpclib(chartInstance); sf_mex_destroy(&c4_st); } static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { int32_T c4_i4; int32_T c4_i5; real_T c4_hoistedGlobal; real_T c4_b_hoistedGlobal; real_T c4_ref; real_T c4_md; uint32_T c4_debug_family_var_map[16]; char_T c4_DataType[6]; real_T c4_c_nv; real_T c4_c_ny; real_T c4_c_p; real_T c4_c_yoff; real_T c4_c_voff; real_T c4_c_no_md; real_T c4_c_no_ref; boolean_T c4_c_openloopflag; real_T c4_nargin = 10.0; real_T c4_nargout = 3.0; real_T c4_rseq[20]; real_T c4_vseq[21]; real_T c4_v; int32_T c4_i6; static char_T c4_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c4_i7; int32_T c4_i8; real_T c4_u; const mxArray *c4_y = NULL; real_T c4_b_u; const mxArray *c4_b_y = NULL; real_T c4_c_u; const mxArray *c4_c_y = NULL; real_T c4_d_u; const mxArray *c4_d_y = NULL; real_T c4_e_u; const mxArray *c4_e_y = NULL; real_T c4_f_u; const mxArray *c4_f_y = NULL; real_T c4_g_u; const mxArray *c4_g_y = NULL; real_T c4_h_u; const mxArray *c4_h_y = NULL; real_T c4_i_u; const mxArray *c4_i_y = NULL; boolean_T c4_j_u; const mxArray *c4_j_y = NULL; const mxArray *c4_b_v = NULL; const mxArray *c4_b_vseq = NULL; const mxArray *c4_b_rseq = NULL; real_T c4_dv2[20]; int32_T c4_i9; real_T c4_dv3[21]; int32_T c4_i10; int32_T c4_i11; int32_T c4_i12; real_T *c4_b_ref; real_T *c4_b_md; real_T *c4_c_v; real_T (*c4_c_rseq)[20]; real_T (*c4_c_vseq)[21]; c4_c_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_b_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_b_ref = (real_T *)ssGetInputPortSignal(chartInstance->S, 0); c4_c_vseq = (real_T (*)[21])ssGetOutputPortSignal(chartInstance->S, 2); c4_c_rseq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 1U, chartInstance->c4_sfEvent); for (c4_i4 = 0; c4_i4 < 20; c4_i4++) { _SFD_DATA_RANGE_CHECK((*c4_c_rseq)[c4_i4], 0U); } for (c4_i5 = 0; c4_i5 < 21; c4_i5++) { _SFD_DATA_RANGE_CHECK((*c4_c_vseq)[c4_i5], 1U); } _SFD_DATA_RANGE_CHECK(*c4_b_ref, 2U); _SFD_DATA_RANGE_CHECK(*c4_b_md, 3U); _SFD_DATA_RANGE_CHECK(*c4_c_v, 4U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_nv, 5U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_ny, 6U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_p, 7U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_yoff, 8U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_voff, 9U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_md, 10U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_ref, 11U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c4_openloopflag, 12U); chartInstance->c4_sfEvent = CALL_EVENT; _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); c4_hoistedGlobal = *c4_b_ref; c4_b_hoistedGlobal = *c4_b_md; c4_ref = c4_hoistedGlobal; c4_md = c4_b_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 16U, 16U, c4_debug_family_names, c4_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c4_DataType, 0U, c4_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_nv, 1U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_ny, 2U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_p, 3U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_yoff, 4U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_voff, 5U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_md, 6U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_ref, 7U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_openloopflag, 8U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargin, 9U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargout, 10U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_ref, 11U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_md, 12U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_rseq, 13U, c4_c_sf_marshallOut, c4_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_vseq, 14U, c4_b_sf_marshallOut, c4_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_v, 15U, c4_sf_marshallOut, c4_sf_marshallIn); c4_c_openloopflag = c4_b_openloopflag; c4_c_no_ref = c4_b_no_ref; c4_c_no_md = c4_b_no_md; c4_c_voff = c4_b_voff; c4_c_yoff = c4_b_yoff; c4_c_p = c4_b_p; c4_c_ny = c4_b_ny; c4_c_nv = c4_b_nv; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 3); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 4); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 5); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 7); for (c4_i6 = 0; c4_i6 < 6; c4_i6++) { c4_DataType[c4_i6] = c4_cv0[c4_i6]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 8); for (c4_i7 = 0; c4_i7 < 20; c4_i7++) { c4_rseq[c4_i7] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 9); for (c4_i8 = 0; c4_i8 < 21; c4_i8++) { c4_vseq[c4_i8] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 10); c4_v = 0.0; _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 11); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 12); c4_u = c4_ref; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); c4_b_u = c4_md; c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); c4_c_u = c4_b_nv; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_c_u, 0, 0U, 0U, 0U, 0), FALSE); c4_d_u = c4_b_ny; c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", &c4_d_u, 0, 0U, 0U, 0U, 0), FALSE); c4_e_u = c4_b_p; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_e_u, 0, 0U, 0U, 0U, 0), FALSE); c4_f_u = c4_b_yoff; c4_f_y = NULL; sf_mex_assign(&c4_f_y, sf_mex_create("y", &c4_f_u, 0, 0U, 0U, 0U, 0), FALSE); c4_g_u = c4_b_voff; c4_g_y = NULL; sf_mex_assign(&c4_g_y, sf_mex_create("y", &c4_g_u, 0, 0U, 0U, 0U, 0), FALSE); c4_h_u = c4_b_no_md; c4_h_y = NULL; sf_mex_assign(&c4_h_y, sf_mex_create("y", &c4_h_u, 0, 0U, 0U, 0U, 0), FALSE); c4_i_u = c4_b_no_ref; c4_i_y = NULL; sf_mex_assign(&c4_i_y, sf_mex_create("y", &c4_i_u, 0, 0U, 0U, 0U, 0), FALSE); c4_j_u = c4_b_openloopflag; c4_j_y = NULL; sf_mex_assign(&c4_j_y, sf_mex_create("y", &c4_j_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_refmd_double_mex", 3U, 10U, 14, c4_y, 14, c4_b_y, 14, c4_c_y, 14, c4_d_y, 14, c4_e_y, 14, c4_f_y, 14, c4_g_y, 14, c4_h_y, 14, c4_i_y, 14, c4_j_y, &c4_b_rseq, &c4_b_vseq, &c4_b_v); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_rseq), "rseq", c4_dv2); for (c4_i9 = 0; c4_i9 < 20; c4_i9++) { c4_rseq[c4_i9] = c4_dv2[c4_i9]; } c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_vseq), "vseq", c4_dv3); for (c4_i10 = 0; c4_i10 < 21; c4_i10++) { c4_vseq[c4_i10] = c4_dv3[c4_i10]; } c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_v), "v"); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, -18); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c4_b_rseq); sf_mex_destroy(&c4_b_vseq); sf_mex_destroy(&c4_b_v); for (c4_i11 = 0; c4_i11 < 20; c4_i11++) { (*c4_c_rseq)[c4_i11] = c4_rseq[c4_i11]; } for (c4_i12 = 0; c4_i12 < 21; c4_i12++) { (*c4_c_vseq)[c4_i12] = c4_vseq[c4_i12]; } *c4_c_v = c4_v; _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber) { } static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; real_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(real_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_v; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_v = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); *(real_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i13; real_T c4_b_inData[21]; int32_T c4_i14; real_T c4_u[21]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i13 = 0; c4_i13 < 21; c4_i13++) { c4_b_inData[c4_i13] = (*(real_T (*)[21])c4_inData)[c4_i13]; } for (c4_i14 = 0; c4_i14 < 21; c4_i14++) { c4_u[c4_i14] = c4_b_inData[c4_i14]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 21), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_vseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[21]; int32_T c4_i15; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_vseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); for (c4_i15 = 0; c4_i15 < 21; c4_i15++) { (*(real_T (*)[21])c4_outData)[c4_i15] = c4_y[c4_i15]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i16; real_T c4_b_inData[20]; int32_T c4_i17; real_T c4_u[20]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i16 = 0; c4_i16 < 20; c4_i16++) { c4_b_inData[c4_i16] = (*(real_T (*)[20])c4_inData)[c4_i16]; } for (c4_i17 = 0; c4_i17 < 20; c4_i17++) { c4_u[c4_i17] = c4_b_inData[c4_i17]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 20), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_rseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[20]; int32_T c4_i18; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_rseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); for (c4_i18 = 0; c4_i18 < 20; c4_i18++) { (*(real_T (*)[20])c4_outData)[c4_i18] = c4_y[c4_i18]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; boolean_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(boolean_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i19; char_T c4_b_inData[6]; int32_T c4_i20; char_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i19 = 0; c4_i19 < 6; c4_i19++) { c4_b_inData[c4_i19] = (*(char_T (*)[6])c4_inData)[c4_i19]; } for (c4_i20 = 0; c4_i20 < 6; c4_i20++) { c4_u[c4_i20] = c4_b_inData[c4_i20]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c4_nameCaptureInfo = NULL; c4_nameCaptureInfo = NULL; sf_mex_assign(&c4_nameCaptureInfo, sf_mex_createstruct("structure", 2, 2, 1), FALSE); c4_info_helper(&c4_nameCaptureInfo); sf_mex_emlrtNameCapturePostProcessR2012a(&c4_nameCaptureInfo); return c4_nameCaptureInfo; } static void c4_info_helper(const mxArray **c4_info) { const mxArray *c4_rhs0 = NULL; const mxArray *c4_lhs0 = NULL; const mxArray *c4_rhs1 = NULL; const mxArray *c4_lhs1 = NULL; sf_mex_addfield(*c4_info, c4_emlrt_marshallOut(""), "context", "context", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("mtimes"), "name", "name", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m"), "resolved", "resolved", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363688678U), "fileTimeLo", "fileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 0); sf_mex_assign(&c4_rhs0, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs0, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs0), "rhs", "rhs", 0); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs0), "lhs", "lhs", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m!common_checks"), "context", "context", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "coder.internal.isBuiltInNumeric"), "name", "name", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[IXE]$matlabroot$/toolbox/shared/coder/coder/+coder/+internal/isBuiltInNumeric.m"), "resolved", "resolved", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363689356U), "fileTimeLo", "fileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 1); sf_mex_assign(&c4_rhs1, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs1, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs1), "rhs", "rhs", 1); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs1), "lhs", "lhs", 1); sf_mex_destroy(&c4_rhs0); sf_mex_destroy(&c4_lhs0); sf_mex_destroy(&c4_rhs1); sf_mex_destroy(&c4_lhs1); } static const mxArray *c4_emlrt_marshallOut(char * c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 15, 0U, 0U, 0U, 2, 1, strlen (c4_u)), FALSE); return c4_y; } static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 7, 0U, 0U, 0U, 0), FALSE); return c4_y; } static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[20]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); } static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[20]) { real_T c4_dv4[20]; int32_T c4_i21; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv4, 1, 0, 0U, 1, 0U, 1, 20); for (c4_i21 = 0; c4_i21 < 20; c4_i21++) { c4_y[c4_i21] = c4_dv4[c4_i21]; } sf_mex_destroy(&c4_u); } static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[21]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); } static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[21]) { real_T c4_dv5[21]; int32_T c4_i22; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv5, 1, 0, 0U, 1, 0U, 1, 21); for (c4_i22 = 0; c4_i22 < 21; c4_i22++) { c4_y[c4_i22] = c4_dv5[c4_i22]; } sf_mex_destroy(&c4_u); } static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier) { real_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); return c4_y; } static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { real_T c4_y; real_T c4_d8; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_d8, 1, 0, 0U, 0, 0U, 0); c4_y = c4_d8; sf_mex_destroy(&c4_u); return c4_y; } static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(int32_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { int32_T c4_y; int32_T c4_i23; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_i23, 1, 6, 0U, 0, 0U, 0); c4_y = c4_i23; sf_mex_destroy(&c4_u); return c4_y; } static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_b_sfEvent; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; int32_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_b_sfEvent = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_sfEvent), &c4_thisId); sf_mex_destroy(&c4_b_sfEvent); *(int32_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static boolean_T c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { boolean_T c4_y; boolean_T c4_b0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_b0, 1, 11, 0U, 0, 0U, 0); c4_y = c4_b0; sf_mex_destroy(&c4_u); return c4_y; } static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_openloopflag; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; boolean_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_openloopflag = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_openloopflag), &c4_thisId); sf_mex_destroy(&c4_c_openloopflag); *(boolean_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static uint8_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier) { uint8_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_j_emlrt_marshallIn(chartInstance, sf_mex_dup (c4_b_is_active_c4_mpclib), &c4_thisId); sf_mex_destroy(&c4_b_is_active_c4_mpclib); return c4_y; } static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { uint8_T c4_y; uint8_T c4_u0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_u0, 1, 3, 0U, 0, 0U, 0); c4_y = c4_u0; sf_mex_destroy(&c4_u); return c4_y; } static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c4_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3270233154U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(1563808691U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(718734131U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(371247434U); } mxArray *sf_c4_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("2HNWbd5KcYTrI0VNgAqzxF"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,2,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,8,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,3,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(21); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c4_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c4_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x4'type','srcId','name','auxInfo'{{M[1],M[21],T\"rseq\",},{M[1],M[19],T\"v\",},{M[1],M[20],T\"vseq\",},{M[8],M[0],T\"is_active_c4_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 4, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c4_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 4, 1, 1, 13, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,2,0,1,"rseq"); _SFD_SET_DATA_PROPS(1,2,0,1,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"ref"); _SFD_SET_DATA_PROPS(3,1,1,0,"md"); _SFD_SET_DATA_PROPS(4,2,0,1,"v"); _SFD_SET_DATA_PROPS(5,10,0,0,"nv"); _SFD_SET_DATA_PROPS(6,10,0,0,"ny"); _SFD_SET_DATA_PROPS(7,10,0,0,"p"); _SFD_SET_DATA_PROPS(8,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(9,10,0,0,"voff"); _SFD_SET_DATA_PROPS(10,10,0,0,"no_md"); _SFD_SET_DATA_PROPS(11,10,0,0,"no_ref"); _SFD_SET_DATA_PROPS(12,10,0,0,"openloopflag"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,856); _SFD_CV_INIT_EML_IF(0,1,0,194,225,703,855); _SFD_CV_INIT_EML_IF(0,1,1,447,467,577,702); { unsigned int dimVector[1]; dimVector[0]= 20; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_c_sf_marshallOut,(MexInFcnForType) c4_c_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 21; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_b_sf_marshallOut,(MexInFcnForType) c4_b_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(4,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(12,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_e_sf_marshallIn); { real_T *c4_ref; real_T *c4_md; real_T *c4_v; real_T (*c4_rseq)[20]; real_T (*c4_vseq)[21]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_ref = (real_T *)ssGetInputPortSignal(chartInstance->S, 0); c4_vseq = (real_T (*)[21])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SET_DATA_VALUE_PTR(0U, *c4_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c4_vseq); _SFD_SET_DATA_VALUE_PTR(2U, c4_ref); _SFD_SET_DATA_VALUE_PTR(3U, c4_md); _SFD_SET_DATA_VALUE_PTR(4U, c4_v); _SFD_SET_DATA_VALUE_PTR(5U, &chartInstance->c4_nv); _SFD_SET_DATA_VALUE_PTR(6U, &chartInstance->c4_ny); _SFD_SET_DATA_VALUE_PTR(7U, &chartInstance->c4_p); _SFD_SET_DATA_VALUE_PTR(8U, &chartInstance->c4_yoff); _SFD_SET_DATA_VALUE_PTR(9U, &chartInstance->c4_voff); _SFD_SET_DATA_VALUE_PTR(10U, &chartInstance->c4_no_md); _SFD_SET_DATA_VALUE_PTR(11U, &chartInstance->c4_no_ref); _SFD_SET_DATA_VALUE_PTR(12U, &chartInstance->c4_openloopflag); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "3RFiiaQWqqM0bZLXITcoK"; } static void sf_opaque_initialize_c4_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); initialize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c4_mpclib(void *chartInstanceVar) { enable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c4_mpclib(void *chartInstanceVar) { disable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c4_mpclib(void *chartInstanceVar) { sf_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c4_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c4_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c4_mpclib(S); } static void sf_opaque_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c4_mpclib(S, st); } static void sf_opaque_terminate_c4_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c4_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c4_mpclib(SimStruct *S) { /* Actual parameters from chart: no_md no_ref nv ny openloopflag p voff yoff */ const char_T *rtParamNames[] = { "no_md", "no_ref", "nv", "ny", "openloopflag", "p", "voff", "yoff" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for no_md*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for no_ref*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for nv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for voff*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 4); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,4,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,4, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,4); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,4,2); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,4,3); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=3; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 2; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,4); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(3664384646U)); ssSetChecksum1(S,(3453141569U)); ssSetChecksum2(S,(3009631007U)); ssSetChecksum3(S,(1767285725U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c4_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c4_mpclib(SimStruct *S) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)utMalloc(sizeof (SFc4_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc4_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c4_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c4_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c4_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c4_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c4_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c4_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c4_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c4_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c4_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c4_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c4_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c4_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c4_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c4_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c4_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/c4_mpclib.h ================================================ #ifndef __c4_mpclib_h__ #define __c4_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc4_mpclibInstanceStruct #define typedef_SFc4_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c4_sfEvent; boolean_T c4_isStable; boolean_T c4_doneDoubleBufferReInit; uint8_T c4_is_active_c4_mpclib; real_T c4_nv; real_T c4_ny; real_T c4_p; real_T c4_yoff; real_T c4_voff; real_T c4_no_md; real_T c4_no_ref; boolean_T c4_openloopflag; } SFc4_mpclibInstanceStruct; #endif /*typedef_SFc4_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); extern void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/mpclib_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpclib_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/mpclib_sfun.c ================================================ /* Include files */ #include "mpclib_sfun.h" #include "mpclib_sfun_debug_macros.h" #include "c3_mpclib.h" #include "c4_mpclib.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpclibMachineNumber_; /* Function Declarations */ /* Function Definitions */ void mpclib_initializer(void) { } void mpclib_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpclib_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (chartFileNumber==3) { c3_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } if (chartFileNumber==4) { c4_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } return 0; } unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>2 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"library")) { char machineName[100]; mxGetString(prhs[2], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (!strcmp(machineName,"mpclib")) { if (nrhs==3) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3549040148U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(67502094U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(728751800U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(456768330U); } else if (nrhs==4) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[3]); switch (chartFileNumber) { case 3: { extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); sf_c3_mpclib_get_check_sum(plhs); break; } case 4: { extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); sf_c4_mpclib_get_check_sum(plhs); break; } default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else { return 0; } } else { return 0; } } else { return 0; } } else { return 0; } return 1; #else return 0; #endif } unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(aiChksum, "uZDKFWLB82ra0oNDUcAsCG") == 0) { extern mxArray *sf_c3_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c3_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } case 4: { if (strcmp(aiChksum, "2HNWbd5KcYTrI0VNgAqzxF") == 0) { extern mxArray *sf_c4_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c4_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c3_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } case 4: { extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c4_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "T7oeNP5jU5Ide0wJqxRvND") == 0) { extern mxArray *sf_c3_mpclib_third_party_uses_info(void); plhs[0] = sf_c3_mpclib_third_party_uses_info(); break; } } case 4: { if (strcmp(tpChksum, "3RFiiaQWqqM0bZLXITcoK") == 0) { extern mxArray *sf_c4_mpclib_third_party_uses_info(void); plhs[0] = sf_c4_mpclib_third_party_uses_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "T7oeNP5jU5Ide0wJqxRvND") == 0) { extern mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c3_mpclib_updateBuildInfo_args_info(); break; } } case 4: { if (strcmp(tpChksum, "3RFiiaQWqqM0bZLXITcoK") == 0) { extern mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c4_mpclib_updateBuildInfo_args_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpclib_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpclibMachineNumber_ = sf_debug_initialize_machine(debugInstance,"mpclib", "sfun",1,2,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance,_mpclibMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance,_mpclibMachineNumber_,0); } void mpclib_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpclib", "mpc_doubleint"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/mpclib_sfun.h ================================================ #ifndef __mpclib_sfun_h__ #define __mpclib_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpclibMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpclib_initializer(void); extern void mpclib_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpclib_optimization_info(void); extern void unload_mpclib_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/mpclib_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpclib TARGET = sfun CHART_SRCS = c3_mpclib.c c4_mpclib.c MACHINE_SRC = mpclib_sfun.c MACHINE_REG = MAKEFILE = mpclib_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpclib_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- $(MACHINE)_$(TARGET).lib : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) -lib /OUT:$(MACHINE)_$(TARGET).lib @$(OBJLIST_FILE) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Created Stateflow library $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/mpclib_sfun.mol ================================================ mpclib_sfun.obj c3_mpclib.obj c4_mpclib.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/mpclib_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpclibMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint/mpclib/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/mpc_doubleint_for_speedctrl_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpc_doubleint_for_speedctrl_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/mpc_doubleint_for_speedctrl_sfun.c ================================================ /* Include files */ #include "mpc_doubleint_for_speedctrl_sfun.h" #include "mpc_doubleint_for_speedctrl_sfun_debug_macros.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpc_doubleint_for_speedctrlMachineNumber_; real_T _sfTime_; /* Function Declarations */ /* Function Definitions */ void mpc_doubleint_for_speedctrl_initializer(void) { } void mpc_doubleint_for_speedctrl_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpc_doubleint_for_speedctrl_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { return 0; } unsigned int sf_mpc_doubleint_for_speedctrl_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>1 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"machine")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(4223205232U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2998453430U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(4235227007U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1394788929U); } else if (!strcmp(commandName,"exportedFcn")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0U); } else if (!strcmp(commandName,"makefile")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1299703318U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2205269942U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2275987658U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2561835547U); } else if (nrhs==3 && !strcmp(commandName,"chart")) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[2]); switch (chartFileNumber) { default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else if (!strcmp(commandName,"target")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3031367619U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(4001028638U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3978939492U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(838979348U); } else { return 0; } } else { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1698189916U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3638029164U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(226784526U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2701917911U); } return 1; #else return 0; #endif } unsigned int sf_mpc_doubleint_for_speedctrl_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_doubleint_for_speedctrl_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_doubleint_for_speedctrl_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpc_doubleint_for_speedctrl_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpc_doubleint_for_speedctrl_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpc_doubleint_for_speedctrlMachineNumber_ = sf_debug_initialize_machine (debugInstance,"mpc_doubleint_for_speedctrl","sfun",0,0,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance, _mpc_doubleint_for_speedctrlMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance, _mpc_doubleint_for_speedctrlMachineNumber_,0); } void mpc_doubleint_for_speedctrl_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpc_doubleint_for_speedctrl_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info( "mpc_doubleint_for_speedctrl", "mpc_doubleint_for_speedctrl"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpc_doubleint_for_speedctrl_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/mpc_doubleint_for_speedctrl_sfun.h ================================================ #ifndef __mpc_doubleint_for_speedctrl_sfun_h__ #define __mpc_doubleint_for_speedctrl_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpc_doubleint_for_speedctrlMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpc_doubleint_for_speedctrl_initializer(void); extern void mpc_doubleint_for_speedctrl_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpc_doubleint_for_speedctrl_optimization_info(void); extern void unload_mpc_doubleint_for_speedctrl_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/mpc_doubleint_for_speedctrl_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpc_doubleint_for_speedctrl TARGET = sfun CHART_SRCS = MACHINE_SRC = mpc_doubleint_for_speedctrl_sfun.c MACHINE_REG = mpc_doubleint_for_speedctrl_sfun_registry.c MAKEFILE = mpc_doubleint_for_speedctrl_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpc_doubleint_for_speedctrl_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = "E:\2019-˼ʻģԤ\3\chapter3 \slprj\_sfprj\mpc_doubleint_for_speedctrl\mpclib\sfun\src\mpclib_sfun.lib" BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- MEX_FILE_NAME_WO_EXT = $(MACHINE)_$(TARGET) MEX_FILE_NAME = $(MEX_FILE_NAME_WO_EXT).mexw64 MEX_FILE_CSF = all : $(MEX_FILE_NAME) $(MEX_FILE_CSF) TMWLIB = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmx.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmex.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmat.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libfixedpoint.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libut.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwmathutil.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libemlrt.lib" "C:\Program Files\MATLAB\R2013b\lib\win64\libippmwipt.lib" $(MEX_FILE_NAME) : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) $(LDFLAGS) /OUT:$(MEX_FILE_NAME) /map:"$(MEX_FILE_NAME_WO_EXT).map"\ $(USER_LIBS) $(SFCLIB) $(AUX_LNK_OBJS)\ $(TMWLIB) $(LINK_MACHINE_LIBS) $(DSP_LIBS) $(BLAS_LIBS) $(THIRD_PARTY_LIBS)\ @$(OBJLIST_FILE) mt -outputresource:"$(MEX_FILE_NAME);2" -manifest "$(MEX_FILE_NAME).manifest" @echo ### Created $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/mpc_doubleint_for_speedctrl_sfun.mexw64.manifest ================================================ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/mpc_doubleint_for_speedctrl_sfun.mol ================================================ mpc_doubleint_for_speedctrl_sfun.obj mpc_doubleint_for_speedctrl_sfun_registry.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/mpc_doubleint_for_speedctrl_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpc_doubleint_for_speedctrlMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpc_doubleint_for_speedctrlMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/mpc_doubleint_for_speedctrl_sfun_registry.c ================================================ #include "mpc_doubleint_for_speedctrl_sfun.h" #include "sfcdebug.h" struct SfDebugInstanceStruct; struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct = NULL; #define PROCESS_MEX_SFUNCTION_CMD_LINE_CALL unsigned int sf_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_for_speedctrl_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); if (sf_mpc_doubleint_for_speedctrl_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mpclib_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; return 0; } unsigned int sf_process_autoinheritance_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_for_speedctrl_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_doubleint_for_speedctrl") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_doubleint_for_speedctrl_autoinheritance_info(nlhs,plhs,3, newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_autoinheritance_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_third_party_uses_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_for_speedctrl_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_doubleint_for_speedctrl") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_doubleint_for_speedctrl_third_party_uses_info(nlhs,plhs,3, newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_third_party_uses_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_updateBuildInfo_args_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_for_speedctrl_updateBuildInfo_args_info ( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_doubleint_for_speedctrl") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_doubleint_for_speedctrl_updateBuildInfo_args_info(nlhs,plhs,3, newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_eml_resolved_functions_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_doubleint_for_speedctrl_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 3) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_doubleint_for_speedctrl") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpc_doubleint_for_speedctrl_get_eml_resolved_functions_info(nlhs, plhs,2,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpclib_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } return 0; } unsigned int sf_mex_unlock_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_mex_unlock")) return 0; while (mexIsLocked()) { mexUnlock(); } return(1); } extern unsigned int sf_debug_api(struct SfDebugInstanceStruct* debugInstance, int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); static unsigned int sf_debug_api_wrapper( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { return sf_debug_api(sfGlobalDebugInstanceStruct, nlhs, plhs, nrhs, prhs); } static unsigned int ProcessMexSfunctionCmdLineCall(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[]) { if (sf_debug_api_wrapper(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mex_unlock_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_autoinheritance_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_third_party_uses_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_updateBuildInfo_args_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_eml_resolved_functions_info_call(nlhs,plhs,nrhs,prhs)) return 1; mexErrMsgTxt("Unsuccessful command."); return 0; } static unsigned int sfGlobalMdlStartCallCounts = 0; unsigned int sf_machine_global_initializer_called(void) { return(sfGlobalMdlStartCallCounts > 0); } extern unsigned int sf_mpc_doubleint_for_speedctrl_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); extern unsigned int sf_mpclib_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); unsigned int sf_machine_global_method_dispatcher(SimStruct *simstructPtr, const char *machineName, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (!strcmp(machineName,"mpc_doubleint_for_speedctrl")) { return(sf_mpc_doubleint_for_speedctrl_method_dispatcher(simstructPtr, chartFileNumber,specsCksum,method,data)); } if (!strcmp(machineName,"mpclib")) { return(sf_mpclib_method_dispatcher(simstructPtr,chartFileNumber,specsCksum, method,data)); } return 0; } extern void mpc_doubleint_for_speedctrl_terminator(void); extern void mpclib_terminator(void); void sf_machine_global_terminator(void) { sfGlobalMdlStartCallCounts--; if (sfGlobalMdlStartCallCounts == 0) { mpc_doubleint_for_speedctrl_terminator(); mpclib_terminator(); sf_debug_terminate(sfGlobalDebugInstanceStruct); sfGlobalDebugInstanceStruct = NULL; } return; } extern void mpc_doubleint_for_speedctrl_initializer(void); extern void mpclib_initializer(void); extern void mpc_doubleint_for_speedctrl_register_exported_symbols(SimStruct* S); extern void mpclib_register_exported_symbols(SimStruct* S); extern void mpc_doubleint_for_speedctrl_debug_initialize(struct SfDebugInstanceStruct*); extern void mpclib_debug_initialize(struct SfDebugInstanceStruct*); void sf_register_machine_exported_symbols(SimStruct* S) { mpc_doubleint_for_speedctrl_register_exported_symbols(S); mpclib_register_exported_symbols(S); } bool callCustomFcn(char initFlag) { return false; } void sf_machine_global_initializer(SimStruct* S) { bool simModeIsRTWGen = sim_mode_is_rtw_gen(S); sfGlobalMdlStartCallCounts++; if (sfGlobalMdlStartCallCounts == 1) { if (simModeIsRTWGen) { sf_register_machine_exported_symbols(S); } sfGlobalDebugInstanceStruct = sf_debug_create_debug_instance_struct(); if (!simModeIsRTWGen) { mpc_doubleint_for_speedctrl_debug_initialize(sfGlobalDebugInstanceStruct); } mpc_doubleint_for_speedctrl_initializer(); if (!simModeIsRTWGen) { mpclib_debug_initialize(sfGlobalDebugInstanceStruct); } mpclib_initializer(); } return; } #define PROCESS_MEX_SFUNCTION_EVERY_CALL unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]); #include "simulink.c" /* MEX-file interface mechanism */ static void sf_machine_load_sfunction_ptrs(SimStruct *S) { ssSetmdlInitializeSampleTimes(S,__mdlInitializeSampleTimes); ssSetmdlInitializeConditions(S,__mdlInitializeConditions); ssSetmdlOutputs(S,__mdlOutputs); ssSetmdlTerminate(S,__mdlTerminate); ssSetmdlRTW(S,__mdlRTW); ssSetmdlSetWorkWidths(S,__mdlSetWorkWidths); #if defined(MDL_HASSIMULATIONCONTEXTIO) ssSetmdlSimulationContextIO(S,__mdlSimulationContextIO); #endif #if defined(MDL_START) ssSetmdlStart(S,__mdlStart); #endif #if defined(RTW_GENERATED_ENABLE) ssSetRTWGeneratedEnable(S,__mdlEnable); #endif #if defined(RTW_GENERATED_DISABLE) ssSetRTWGeneratedDisable(S,__mdlDisable); #endif #if defined(MDL_ENABLE) ssSetmdlEnable(S,__mdlEnable); #endif #if defined(MDL_DISABLE) ssSetmdlDisable(S,__mdlDisable); #endif #if defined(MDL_SIM_STATUS_CHANGE) ssSetmdlSimStatusChange(S,__mdlSimStatusChange); #endif #if defined(MDL_EXT_MODE_EXEC) ssSetmdlExtModeExec(S,__mdlExtModeExec); #endif #if defined(MDL_UPDATE) ssSetmdlUpdate(S,__mdlUpdate); #endif #if defined(MDL_PROCESS_PARAMETERS) ssSetmdlProcessParameters(S,__mdlProcessParameters); #endif #if defined(MDL_ZERO_CROSSINGS) ssSetmdlZeroCrossings(S,__mdlZeroCrossings); #endif #if defined(MDL_DERIVATIVES) ssSetmdlDerivatives(S,__mdlDerivatives); #endif } unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]) { if (nlhs < 0) { SimStruct *S = (SimStruct *)plhs[_LHS_SS]; int_T flag = (int_T)(*(real_T*)mxGetPr(prhs[_RHS_FLAG])); if (flag == SS_CALL_MDL_SET_WORK_WIDTHS) { sf_machine_load_sfunction_ptrs(S); } } return 0; } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/_self/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/c3_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c3_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c3_b_p (20.0) #define c3_b_nu (1.0) #define c3_b_isQP (TRUE) #define c3_b_ny (1.0) #define c3_b_degrees (4.0) #define c3_b_uoff (0.0) #define c3_b_yoff (0.0) #define c3_b_maxiter (120.0) #define c3_b_nxQP (2.0) #define c3_b_openloopflag (FALSE) #define c3_b_lims_inport (0.0) #define c3_b_no_umin (1.0) #define c3_b_no_umax (1.0) #define c3_b_no_ymin (1.0) #define c3_b_no_ymax (1.0) #define c3_b_switch_inport (0.0) #define c3_b_no_switch (1.0) #define c3_b_enable_value (0.0) #define c3_b_return_cost (0.0) #define c3_b_return_sequence (0.0) #define c3_b_no_ywt (1.0) #define c3_b_no_duwt (1.0) #define c3_b_no_rhoeps (1.0) #define c3_b_Wy (0.0) #define c3_b_Wdu (0.0) #define c3_b_Jm (0.0) #define c3_b_SuJm (0.0) #define c3_b_I2JmWuI2Jm (0.0) #define c3_b_Su1 (0.0) #define c3_b_I1WuI2Jm (0.0) #define c3_b_Sx (0.0) #define c3_b_Hv (0.0) #define c3_b_Wu (0.0) #define c3_b_I1 (0.0) /* Variable Declarations */ /* Variable Definitions */ static const char * c3_debug_family_names[71] = { "DataType", "isQP", "nu", "ny", "degrees", "Hinv", "Kx", "Ku1", "Kut", "Kr", "Kv", "Mlim", "Mx", "Mu1", "Mv", "z_degrees", "utarget", "p", "uoff", "yoff", "maxiter", "nxQP", "openloopflag", "lims_inport", "no_umin", "no_umax", "no_ymin", "no_ymax", "switch_inport", "no_switch", "enable_value", "return_cost", "H", "return_sequence", "blocking_moves", "Linv", "Ac", "no_ywt", "no_duwt", "no_rhoeps", "Wy", "Wdu", "Jm", "SuJm", "I2JmWuI2Jm", "Su1", "I1WuI2Jm", "Sx", "Hv", "Wu", "I1", "nargin", "nargout", "rseq", "vseq", "x", "old_u", "iA", "umin", "umax", "ymin", "ymax", "switch_in", "ywt", "duwt", "rhoeps", "u", "cost", "useq", "status", "iAout" }; /* Function Declarations */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st); static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber); static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static real_T c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier); static real_T c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[20]); static void c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[20]); static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[10]); static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[10]); static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static int32_T c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static boolean_T c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[16]); static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]); static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]); static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]); static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[63]); static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]); static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[12]); static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[126]); static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[4]); static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[20]); static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[24]); static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static uint8_T c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier); static uint8_T c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { chartInstance->c3_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c3_is_active_c3_mpclib = 0U; } static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_d0; real_T c3_d1; real_T c3_d2; real_T c3_d3; real_T c3_dv0[16]; int32_T c3_i0; real_T c3_dv1[6]; int32_T c3_i1; real_T c3_dv2[3]; int32_T c3_i2; real_T c3_dv3[60]; int32_T c3_i3; real_T c3_dv4[60]; int32_T c3_i4; real_T c3_dv5[63]; int32_T c3_i5; real_T c3_dv6[6]; int32_T c3_i6; real_T c3_dv7[12]; int32_T c3_i7; real_T c3_dv8[6]; int32_T c3_i8; real_T c3_dv9[126]; int32_T c3_i9; real_T c3_dv10[4]; int32_T c3_i10; real_T c3_dv11[20]; int32_T c3_i11; real_T c3_d4; real_T c3_d5; real_T c3_d6; real_T c3_d7; real_T c3_d8; real_T c3_d9; real_T c3_d10; real_T c3_d11; real_T c3_d12; real_T c3_d13; real_T c3_d14; real_T c3_d15; real_T c3_d16; real_T c3_d17; real_T c3_d18; real_T c3_dv12[16]; int32_T c3_i12; real_T c3_d19; real_T c3_dv13[20]; int32_T c3_i13; real_T c3_dv14[16]; int32_T c3_i14; real_T c3_dv15[24]; int32_T c3_i15; real_T c3_d20; real_T c3_d21; real_T c3_d22; real_T c3_d23; real_T c3_d24; real_T c3_d25; real_T c3_d26; real_T c3_d27; real_T c3_d28; real_T c3_d29; real_T c3_d30; real_T c3_d31; real_T c3_d32; real_T c3_d33; sf_set_error_prefix_string( "Error evaluating data 'isQP' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 27, 0), &c3_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_isQP = (c3_d0 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nu' in the parent workspace.\n"); sf_mex_import_named("nu", sf_mex_get_sfun_param(chartInstance->S, 38, 0), &c3_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nu = c3_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 40, 0), &c3_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_ny = c3_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'degrees' in the parent workspace.\n"); sf_mex_import_named("degrees", sf_mex_get_sfun_param(chartInstance->S, 25, 0), &c3_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_degrees = c3_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hinv' in the parent workspace.\n"); sf_mex_import_named("Hinv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), c3_dv0, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i0 = 0; c3_i0 < 16; c3_i0++) { chartInstance->c3_Hinv[c3_i0] = c3_dv0[c3_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kx' in the parent workspace.\n"); sf_mex_import_named("Kx", sf_mex_get_sfun_param(chartInstance->S, 12, 0), c3_dv1, 0, 0, 0U, 1, 0U, 2, 2, 3); for (c3_i1 = 0; c3_i1 < 6; c3_i1++) { chartInstance->c3_Kx[c3_i1] = c3_dv1[c3_i1]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ku1' in the parent workspace.\n"); sf_mex_import_named("Ku1", sf_mex_get_sfun_param(chartInstance->S, 9, 0), c3_dv2, 0, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i2 = 0; c3_i2 < 3; c3_i2++) { chartInstance->c3_Ku1[c3_i2] = c3_dv2[c3_i2]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kut' in the parent workspace.\n"); sf_mex_import_named("Kut", sf_mex_get_sfun_param(chartInstance->S, 10, 0), c3_dv3, 0, 0, 0U, 1, 0U, 2, 20, 3); for (c3_i3 = 0; c3_i3 < 60; c3_i3++) { chartInstance->c3_Kut[c3_i3] = c3_dv3[c3_i3]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kr' in the parent workspace.\n"); sf_mex_import_named("Kr", sf_mex_get_sfun_param(chartInstance->S, 8, 0), c3_dv4, 0, 0, 0U, 1, 0U, 2, 20, 3); for (c3_i4 = 0; c3_i4 < 60; c3_i4++) { chartInstance->c3_Kr[c3_i4] = c3_dv4[c3_i4]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kv' in the parent workspace.\n"); sf_mex_import_named("Kv", sf_mex_get_sfun_param(chartInstance->S, 11, 0), c3_dv5, 0, 0, 0U, 1, 0U, 2, 21, 3); for (c3_i5 = 0; c3_i5 < 63; c3_i5++) { chartInstance->c3_Kv[c3_i5] = c3_dv5[c3_i5]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mlim' in the parent workspace.\n"); sf_mex_import_named("Mlim", sf_mex_get_sfun_param(chartInstance->S, 14, 0), c3_dv6, 0, 0, 0U, 1, 0U, 1, 6); for (c3_i6 = 0; c3_i6 < 6; c3_i6++) { chartInstance->c3_Mlim[c3_i6] = c3_dv6[c3_i6]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mx' in the parent workspace.\n"); sf_mex_import_named("Mx", sf_mex_get_sfun_param(chartInstance->S, 17, 0), c3_dv7, 0, 0, 0U, 1, 0U, 2, 6, 2); for (c3_i7 = 0; c3_i7 < 12; c3_i7++) { chartInstance->c3_Mx[c3_i7] = c3_dv7[c3_i7]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mu1' in the parent workspace.\n"); sf_mex_import_named("Mu1", sf_mex_get_sfun_param(chartInstance->S, 15, 0), c3_dv8, 0, 0, 0U, 1, 0U, 1, 6); for (c3_i8 = 0; c3_i8 < 6; c3_i8++) { chartInstance->c3_Mu1[c3_i8] = c3_dv8[c3_i8]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mv' in the parent workspace.\n"); sf_mex_import_named("Mv", sf_mex_get_sfun_param(chartInstance->S, 16, 0), c3_dv9, 0, 0, 0U, 1, 0U, 2, 6, 21); for (c3_i9 = 0; c3_i9 < 126; c3_i9++) { chartInstance->c3_Mv[c3_i9] = c3_dv9[c3_i9]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'z_degrees' in the parent workspace.\n"); sf_mex_import_named("z_degrees", sf_mex_get_sfun_param(chartInstance->S, 49, 0), c3_dv10, 0, 0, 0U, 1, 0U, 1, 4); for (c3_i10 = 0; c3_i10 < 4; c3_i10++) { chartInstance->c3_z_degrees[c3_i10] = c3_dv10[c3_i10]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'utarget' in the parent workspace.\n"); sf_mex_import_named("utarget", sf_mex_get_sfun_param(chartInstance->S, 47, 0), c3_dv11, 0, 0, 0U, 1, 0U, 1, 20); for (c3_i11 = 0; c3_i11 < 20; c3_i11++) { chartInstance->c3_utarget[c3_i11] = c3_dv11[c3_i11]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 42, 0), &c3_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_p = c3_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'uoff' in the parent workspace.\n"); sf_mex_import_named("uoff", sf_mex_get_sfun_param(chartInstance->S, 46, 0), &c3_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_uoff = c3_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 48, 0), &c3_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_yoff = c3_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'maxiter' in the parent workspace.\n"); sf_mex_import_named("maxiter", sf_mex_get_sfun_param(chartInstance->S, 29, 0), &c3_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_maxiter = c3_d7; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nxQP' in the parent workspace.\n"); sf_mex_import_named("nxQP", sf_mex_get_sfun_param(chartInstance->S, 39, 0), &c3_d8, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nxQP = c3_d8; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 41, 0), &c3_d9, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_openloopflag = (c3_d9 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'lims_inport' in the parent workspace.\n"); sf_mex_import_named("lims_inport", sf_mex_get_sfun_param(chartInstance->S, 28, 0), &c3_d10, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_lims_inport = c3_d10; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umin' in the parent workspace.\n"); sf_mex_import_named("no_umin", sf_mex_get_sfun_param(chartInstance->S, 34, 0), &c3_d11, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umin = c3_d11; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umax' in the parent workspace.\n"); sf_mex_import_named("no_umax", sf_mex_get_sfun_param(chartInstance->S, 33, 0), &c3_d12, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umax = c3_d12; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymin' in the parent workspace.\n"); sf_mex_import_named("no_ymin", sf_mex_get_sfun_param(chartInstance->S, 36, 0), &c3_d13, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymin = c3_d13; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymax' in the parent workspace.\n"); sf_mex_import_named("no_ymax", sf_mex_get_sfun_param(chartInstance->S, 35, 0), &c3_d14, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymax = c3_d14; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'switch_inport' in the parent workspace.\n"); sf_mex_import_named("switch_inport", sf_mex_get_sfun_param(chartInstance->S, 45, 0), &c3_d15, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_switch_inport = c3_d15; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_switch' in the parent workspace.\n"); sf_mex_import_named("no_switch", sf_mex_get_sfun_param(chartInstance->S, 32, 0), &c3_d16, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_switch = c3_d16; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'enable_value' in the parent workspace.\n"); sf_mex_import_named("enable_value", sf_mex_get_sfun_param(chartInstance->S, 26, 0), &c3_d17, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_enable_value = c3_d17; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_cost' in the parent workspace.\n"); sf_mex_import_named("return_cost", sf_mex_get_sfun_param(chartInstance->S, 43, 0), &c3_d18, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_cost = c3_d18; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'H' in the parent workspace.\n"); sf_mex_import_named("H", sf_mex_get_sfun_param(chartInstance->S, 1, 0), c3_dv12, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i12 = 0; c3_i12 < 16; c3_i12++) { chartInstance->c3_H[c3_i12] = c3_dv12[c3_i12]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_sequence' in the parent workspace.\n"); sf_mex_import_named("return_sequence", sf_mex_get_sfun_param(chartInstance->S, 44, 0), &c3_d19, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_sequence = c3_d19; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'blocking_moves' in the parent workspace.\n"); sf_mex_import_named("blocking_moves", sf_mex_get_sfun_param(chartInstance->S, 24, 0), c3_dv13, 0, 0, 0U, 1, 0U, 2, 1, 20); for (c3_i13 = 0; c3_i13 < 20; c3_i13++) { chartInstance->c3_blocking_moves[c3_i13] = c3_dv13[c3_i13]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Linv' in the parent workspace.\n"); sf_mex_import_named("Linv", sf_mex_get_sfun_param(chartInstance->S, 13, 0), c3_dv14, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i14 = 0; c3_i14 < 16; c3_i14++) { chartInstance->c3_Linv[c3_i14] = c3_dv14[c3_i14]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ac' in the parent workspace.\n"); sf_mex_import_named("Ac", sf_mex_get_sfun_param(chartInstance->S, 0, 0), c3_dv15, 0, 0, 0U, 1, 0U, 2, 6, 4); for (c3_i15 = 0; c3_i15 < 24; c3_i15++) { chartInstance->c3_Ac[c3_i15] = c3_dv15[c3_i15]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ywt' in the parent workspace.\n"); sf_mex_import_named("no_ywt", sf_mex_get_sfun_param(chartInstance->S, 37, 0), &c3_d20, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ywt = c3_d20; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_duwt' in the parent workspace.\n"); sf_mex_import_named("no_duwt", sf_mex_get_sfun_param(chartInstance->S, 30, 0), &c3_d21, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_duwt = c3_d21; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_rhoeps' in the parent workspace.\n"); sf_mex_import_named("no_rhoeps", sf_mex_get_sfun_param(chartInstance->S, 31, 0), &c3_d22, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_rhoeps = c3_d22; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wy' in the parent workspace.\n"); sf_mex_import_named("Wy", sf_mex_get_sfun_param(chartInstance->S, 23, 0), &c3_d23, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wy = c3_d23; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wdu' in the parent workspace.\n"); sf_mex_import_named("Wdu", sf_mex_get_sfun_param(chartInstance->S, 21, 0), &c3_d24, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wdu = c3_d24; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Jm' in the parent workspace.\n"); sf_mex_import_named("Jm", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c3_d25, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Jm = c3_d25; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'SuJm' in the parent workspace.\n"); sf_mex_import_named("SuJm", sf_mex_get_sfun_param(chartInstance->S, 19, 0), &c3_d26, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_SuJm = c3_d26; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I2JmWuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I2JmWuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c3_d27, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I2JmWuI2Jm = c3_d27; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Su1' in the parent workspace.\n"); sf_mex_import_named("Su1", sf_mex_get_sfun_param(chartInstance->S, 18, 0), &c3_d28, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Su1 = c3_d28; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1WuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I1WuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c3_d29, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1WuI2Jm = c3_d29; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Sx' in the parent workspace.\n"); sf_mex_import_named("Sx", sf_mex_get_sfun_param(chartInstance->S, 20, 0), &c3_d30, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Sx = c3_d30; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hv' in the parent workspace.\n"); sf_mex_import_named("Hv", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c3_d31, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Hv = c3_d31; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wu' in the parent workspace.\n"); sf_mex_import_named("Wu", sf_mex_get_sfun_param(chartInstance->S, 22, 0), &c3_d32, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wu = c3_d32; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1' in the parent workspace.\n"); sf_mex_import_named("I1", sf_mex_get_sfun_param(chartInstance->S, 4, 0), &c3_d33, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1 = c3_d33; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { const mxArray *c3_st; const mxArray *c3_y = NULL; real_T c3_hoistedGlobal; real_T c3_u; const mxArray *c3_b_y = NULL; int32_T c3_i16; boolean_T c3_b_u[10]; const mxArray *c3_c_y = NULL; real_T c3_b_hoistedGlobal; real_T c3_c_u; const mxArray *c3_d_y = NULL; real_T c3_c_hoistedGlobal; real_T c3_d_u; const mxArray *c3_e_y = NULL; int32_T c3_i17; real_T c3_e_u[20]; const mxArray *c3_f_y = NULL; uint8_T c3_d_hoistedGlobal; uint8_T c3_f_u; const mxArray *c3_g_y = NULL; real_T *c3_cost; real_T *c3_status; real_T *c3_g_u; real_T (*c3_useq)[20]; boolean_T (*c3_iAout)[10]; c3_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_g_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_st = NULL; c3_st = NULL; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_createcellarray(6), FALSE); c3_hoistedGlobal = *c3_cost; c3_u = c3_hoistedGlobal; c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 0, c3_b_y); for (c3_i16 = 0; c3_i16 < 10; c3_i16++) { c3_b_u[c3_i16] = (*c3_iAout)[c3_i16]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_b_u, 11, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_setcell(c3_y, 1, c3_c_y); c3_b_hoistedGlobal = *c3_status; c3_c_u = c3_b_hoistedGlobal; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_c_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 2, c3_d_y); c3_c_hoistedGlobal = *c3_g_u; c3_d_u = c3_c_hoistedGlobal; c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", &c3_d_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 3, c3_e_y); for (c3_i17 = 0; c3_i17 < 20; c3_i17++) { c3_e_u[c3_i17] = (*c3_useq)[c3_i17]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 1, 20), FALSE); sf_mex_setcell(c3_y, 4, c3_f_y); c3_d_hoistedGlobal = chartInstance->c3_is_active_c3_mpclib; c3_f_u = c3_d_hoistedGlobal; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_f_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 5, c3_g_y); sf_mex_assign(&c3_st, c3_y, FALSE); return c3_st; } static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st) { const mxArray *c3_u; boolean_T c3_bv0[10]; int32_T c3_i18; real_T c3_dv16[20]; int32_T c3_i19; real_T *c3_cost; real_T *c3_status; real_T *c3_b_u; boolean_T (*c3_iAout)[10]; real_T (*c3_useq)[20]; c3_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_b_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c3_doneDoubleBufferReInit = TRUE; c3_u = sf_mex_dup(c3_st); *c3_cost = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 0)), "cost"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 1)), "iAout", c3_bv0); for (c3_i18 = 0; c3_i18 < 10; c3_i18++) { (*c3_iAout)[c3_i18] = c3_bv0[c3_i18]; } *c3_status = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 2)), "status"); *c3_b_u = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 3)), "u"); c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 4)), "useq", c3_dv16); for (c3_i19 = 0; c3_i19 < 20; c3_i19++) { (*c3_useq)[c3_i19] = c3_dv16[c3_i19]; } chartInstance->c3_is_active_c3_mpclib = c3_t_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 5)), "is_active_c3_mpclib"); sf_mex_destroy(&c3_u); c3_update_debugger_state_c3_mpclib(chartInstance); sf_mex_destroy(&c3_st); } static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { int32_T c3_i20; int32_T c3_i21; int32_T c3_i22; int32_T c3_i23; int32_T c3_i24; int32_T c3_i25; int32_T c3_i26; int32_T c3_i27; int32_T c3_i28; int32_T c3_i29; int32_T c3_i30; int32_T c3_i31; int32_T c3_i32; int32_T c3_i33; int32_T c3_i34; int32_T c3_i35; int32_T c3_i36; int32_T c3_i37; int32_T c3_i38; int32_T c3_i39; int32_T c3_i40; int32_T c3_i41; real_T *c3_old_u; real_T *c3_umin; real_T *c3_umax; real_T *c3_ymin; real_T *c3_ymax; real_T *c3_switch_in; real_T *c3_ywt; real_T *c3_duwt; real_T *c3_rhoeps; real_T *c3_u; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[10]; real_T (*c3_useq)[20]; boolean_T (*c3_iA)[10]; real_T (*c3_x)[2]; real_T (*c3_vseq)[21]; real_T (*c3_rseq)[20]; c3_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[10])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[21])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[20])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 0U, chartInstance->c3_sfEvent); for (c3_i20 = 0; c3_i20 < 20; c3_i20++) { _SFD_DATA_RANGE_CHECK((*c3_rseq)[c3_i20], 0U); } for (c3_i21 = 0; c3_i21 < 21; c3_i21++) { _SFD_DATA_RANGE_CHECK((*c3_vseq)[c3_i21], 1U); } for (c3_i22 = 0; c3_i22 < 2; c3_i22++) { _SFD_DATA_RANGE_CHECK((*c3_x)[c3_i22], 2U); } _SFD_DATA_RANGE_CHECK(*c3_old_u, 3U); for (c3_i23 = 0; c3_i23 < 10; c3_i23++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iA)[c3_i23], 4U); } _SFD_DATA_RANGE_CHECK(*c3_umin, 5U); _SFD_DATA_RANGE_CHECK(*c3_umax, 6U); _SFD_DATA_RANGE_CHECK(*c3_ymin, 7U); _SFD_DATA_RANGE_CHECK(*c3_ymax, 8U); _SFD_DATA_RANGE_CHECK(*c3_switch_in, 9U); _SFD_DATA_RANGE_CHECK(*c3_ywt, 10U); _SFD_DATA_RANGE_CHECK(*c3_duwt, 11U); _SFD_DATA_RANGE_CHECK(*c3_rhoeps, 12U); _SFD_DATA_RANGE_CHECK(*c3_u, 13U); _SFD_DATA_RANGE_CHECK(*c3_cost, 14U); for (c3_i24 = 0; c3_i24 < 20; c3_i24++) { _SFD_DATA_RANGE_CHECK((*c3_useq)[c3_i24], 15U); } _SFD_DATA_RANGE_CHECK(*c3_status, 16U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_isQP, 17U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nu, 18U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_ny, 19U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_degrees, 20U); for (c3_i25 = 0; c3_i25 < 16; c3_i25++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hinv[c3_i25], 21U); } for (c3_i26 = 0; c3_i26 < 6; c3_i26++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kx[c3_i26], 22U); } for (c3_i27 = 0; c3_i27 < 3; c3_i27++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ku1[c3_i27], 23U); } for (c3_i28 = 0; c3_i28 < 60; c3_i28++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kut[c3_i28], 24U); } for (c3_i29 = 0; c3_i29 < 60; c3_i29++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kr[c3_i29], 25U); } for (c3_i30 = 0; c3_i30 < 63; c3_i30++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kv[c3_i30], 26U); } for (c3_i31 = 0; c3_i31 < 6; c3_i31++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mlim[c3_i31], 27U); } for (c3_i32 = 0; c3_i32 < 12; c3_i32++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mx[c3_i32], 28U); } for (c3_i33 = 0; c3_i33 < 6; c3_i33++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mu1[c3_i33], 29U); } for (c3_i34 = 0; c3_i34 < 126; c3_i34++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mv[c3_i34], 30U); } for (c3_i35 = 0; c3_i35 < 4; c3_i35++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_z_degrees[c3_i35], 31U); } for (c3_i36 = 0; c3_i36 < 20; c3_i36++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_utarget[c3_i36], 32U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_p, 33U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_uoff, 34U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_yoff, 35U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_maxiter, 36U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nxQP, 37U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_openloopflag, 38U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_lims_inport, 39U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umin, 40U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umax, 41U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymin, 42U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymax, 43U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_switch_inport, 44U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_switch, 45U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_enable_value, 46U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_cost, 47U); for (c3_i37 = 0; c3_i37 < 16; c3_i37++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_H[c3_i37], 48U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_sequence, 49U); for (c3_i38 = 0; c3_i38 < 20; c3_i38++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_blocking_moves[c3_i38], 50U); } for (c3_i39 = 0; c3_i39 < 16; c3_i39++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Linv[c3_i39], 51U); } for (c3_i40 = 0; c3_i40 < 24; c3_i40++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ac[c3_i40], 52U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ywt, 53U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_duwt, 54U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_rhoeps, 55U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wy, 56U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wdu, 57U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Jm, 58U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_SuJm, 59U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I2JmWuI2Jm, 60U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Su1, 61U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1WuI2Jm, 62U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Sx, 63U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hv, 64U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wu, 65U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1, 66U); for (c3_i41 = 0; c3_i41 < 10; c3_i41++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iAout)[c3_i41], 67U); } chartInstance->c3_sfEvent = CALL_EVENT; c3_chartstep_c3_mpclib(chartInstance); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_hoistedGlobal; real_T c3_b_hoistedGlobal; real_T c3_c_hoistedGlobal; real_T c3_d_hoistedGlobal; real_T c3_e_hoistedGlobal; real_T c3_f_hoistedGlobal; real_T c3_g_hoistedGlobal; real_T c3_h_hoistedGlobal; real_T c3_i_hoistedGlobal; int32_T c3_i42; real_T c3_rseq[20]; int32_T c3_i43; real_T c3_vseq[21]; int32_T c3_i44; real_T c3_x[2]; real_T c3_old_u; int32_T c3_i45; boolean_T c3_iA[10]; real_T c3_umin; real_T c3_umax; real_T c3_ymin; real_T c3_ymax; real_T c3_switch_in; real_T c3_ywt; real_T c3_duwt; real_T c3_rhoeps; uint32_T c3_debug_family_var_map[71]; char_T c3_DataType[6]; boolean_T c3_c_isQP; real_T c3_c_nu; real_T c3_c_ny; real_T c3_c_degrees; real_T c3_c_Hinv[16]; real_T c3_c_Kx[6]; real_T c3_c_Ku1[3]; real_T c3_c_Kut[60]; real_T c3_c_Kr[60]; real_T c3_c_Kv[63]; real_T c3_c_Mlim[6]; real_T c3_c_Mx[12]; real_T c3_c_Mu1[6]; real_T c3_c_Mv[126]; real_T c3_c_z_degrees[4]; real_T c3_c_utarget[20]; real_T c3_c_p; real_T c3_c_uoff; real_T c3_c_yoff; real_T c3_c_maxiter; real_T c3_c_nxQP; boolean_T c3_c_openloopflag; real_T c3_c_lims_inport; real_T c3_c_no_umin; real_T c3_c_no_umax; real_T c3_c_no_ymin; real_T c3_c_no_ymax; real_T c3_c_switch_inport; real_T c3_c_no_switch; real_T c3_c_enable_value; real_T c3_c_return_cost; real_T c3_c_H[16]; real_T c3_c_return_sequence; real_T c3_c_blocking_moves[20]; real_T c3_c_Linv[16]; real_T c3_c_Ac[24]; real_T c3_c_no_ywt; real_T c3_c_no_duwt; real_T c3_c_no_rhoeps; real_T c3_c_Wy; real_T c3_c_Wdu; real_T c3_c_Jm; real_T c3_c_SuJm; real_T c3_c_I2JmWuI2Jm; real_T c3_c_Su1; real_T c3_c_I1WuI2Jm; real_T c3_c_Sx; real_T c3_c_Hv; real_T c3_c_Wu; real_T c3_c_I1; real_T c3_nargin = 63.0; real_T c3_nargout = 5.0; real_T c3_u; real_T c3_cost; real_T c3_useq[20]; real_T c3_status; boolean_T c3_iAout[10]; int32_T c3_i46; static real_T c3_d_Ac[24] = { -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -0.0, -1.0, -1.0, -0.0, 1.0, 1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i47; static real_T c3_d_Linv[16] = { 0.23520200811439571, -4.8978830782919456, 0.73799858039642308, 0.0, 0.0, 5.5567121987275856, -5.9375612767978332, 0.0, 0.0, 0.0, 5.8281111841008046, 0.0, 0.0, 0.0, 0.0, 0.003162277660168379 }; int32_T c3_i48; static real_T c3_d_blocking_moves[20] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i49; static real_T c3_d_H[16] = { 18.076650000000004, 15.9334, 13.943625000000003, 0.0, 15.9334, 14.07665, 12.323400000000001, 0.0, 13.943625000000003, 12.323400000000001, 10.818625000000003, 0.0, 0.0, 0.0, 0.0, 100000.0 }; int32_T c3_i50; int32_T c3_i51; int32_T c3_i52; int32_T c3_i53; static real_T c3_d_Mu1[6] = { -1.0, -1.0, -1.0, 1.0, 1.0, 1.0 }; int32_T c3_i54; int32_T c3_i55; int32_T c3_i56; int32_T c3_i57; static real_T c3_d_Kr[60] = { -0.005000000000000001, -0.020000000000000004, -0.045000000000000012, -0.080000000000000016, -0.12500000000000003, -0.18000000000000005, -0.24500000000000005, -0.32000000000000006, -0.40500000000000008, -0.50000000000000011, -0.60500000000000009, -0.72000000000000008, -0.84500000000000008, -0.98000000000000009, -1.125, -1.28, -1.445, -1.62, -1.8050000000000002, -2.0, -0.0, -0.005000000000000001, -0.020000000000000004, -0.045000000000000012, -0.080000000000000016, -0.12500000000000003, -0.18000000000000005, -0.24500000000000005, -0.32000000000000006, -0.40500000000000008, -0.50000000000000011, -0.60500000000000009, -0.72000000000000008, -0.84500000000000008, -0.98000000000000009, -1.125, -1.28, -1.445, -1.62, -1.8050000000000002, -0.0, -0.0, -0.005000000000000001, -0.020000000000000004, -0.045000000000000012, -0.080000000000000016, -0.12500000000000003, -0.18000000000000005, -0.24500000000000005, -0.32000000000000006, -0.40500000000000008, -0.50000000000000011, -0.60500000000000009, -0.72000000000000008, -0.84500000000000008, -0.98000000000000009, -1.125, -1.28, -1.445, -1.62 }; int32_T c3_i58; int32_T c3_i59; static real_T c3_d_Ku1[3] = { 18.066650000000003, 15.933400000000002, 13.943625 }; int32_T c3_i60; static real_T c3_d_Kx[6] = { 14.350000000000001, 22.050000000000004, 12.350000000000001, 19.285000000000004, 10.545000000000002, 16.729500000000005 }; int32_T c3_i61; static real_T c3_d_Hinv[16] = { 24.589220537906762, -31.598038442379849, 4.3011377802589106, 0.0, -31.598038442379849, 66.131684375217077, -34.604767283589304, 0.0, 4.3011377802589106, -34.604767283589304, 33.966879974240882, 0.0, 0.0, 0.0, 0.0, 9.9999999999999974E-6 }; int32_T c3_i62; static char_T c3_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c3_i63; int32_T c3_i64; int32_T c3_i65; real_T c3_b_u[20]; const mxArray *c3_y = NULL; int32_T c3_i66; real_T c3_c_u[21]; const mxArray *c3_b_y = NULL; real_T c3_d_u; const mxArray *c3_c_y = NULL; real_T c3_e_u; const mxArray *c3_d_y = NULL; real_T c3_f_u; const mxArray *c3_e_y = NULL; real_T c3_g_u; const mxArray *c3_f_y = NULL; real_T c3_h_u; const mxArray *c3_g_y = NULL; int32_T c3_i67; real_T c3_i_u[2]; const mxArray *c3_h_y = NULL; real_T c3_j_u; const mxArray *c3_i_y = NULL; int32_T c3_i68; boolean_T c3_k_u[10]; const mxArray *c3_j_y = NULL; boolean_T c3_l_u; const mxArray *c3_k_y = NULL; real_T c3_m_u; const mxArray *c3_l_y = NULL; real_T c3_n_u; const mxArray *c3_m_y = NULL; real_T c3_o_u; const mxArray *c3_n_y = NULL; int32_T c3_i69; real_T c3_p_u[16]; const mxArray *c3_o_y = NULL; int32_T c3_i70; real_T c3_q_u[6]; const mxArray *c3_p_y = NULL; int32_T c3_i71; real_T c3_r_u[3]; const mxArray *c3_q_y = NULL; int32_T c3_i72; real_T c3_s_u[60]; const mxArray *c3_r_y = NULL; int32_T c3_i73; real_T c3_t_u[60]; const mxArray *c3_s_y = NULL; int32_T c3_i74; real_T c3_u_u[63]; const mxArray *c3_t_y = NULL; int32_T c3_i75; real_T c3_v_u[6]; const mxArray *c3_u_y = NULL; int32_T c3_i76; real_T c3_w_u[12]; const mxArray *c3_v_y = NULL; int32_T c3_i77; real_T c3_x_u[6]; const mxArray *c3_w_y = NULL; int32_T c3_i78; real_T c3_y_u[126]; const mxArray *c3_x_y = NULL; int32_T c3_i79; real_T c3_ab_u[4]; const mxArray *c3_y_y = NULL; int32_T c3_i80; real_T c3_bb_u[20]; const mxArray *c3_ab_y = NULL; real_T c3_cb_u; const mxArray *c3_bb_y = NULL; real_T c3_db_u; const mxArray *c3_cb_y = NULL; real_T c3_eb_u; const mxArray *c3_db_y = NULL; real_T c3_fb_u; const mxArray *c3_eb_y = NULL; real_T c3_gb_u; const mxArray *c3_fb_y = NULL; boolean_T c3_hb_u; const mxArray *c3_gb_y = NULL; real_T c3_ib_u; const mxArray *c3_hb_y = NULL; real_T c3_jb_u; const mxArray *c3_ib_y = NULL; real_T c3_kb_u; const mxArray *c3_jb_y = NULL; real_T c3_lb_u; const mxArray *c3_kb_y = NULL; real_T c3_mb_u; const mxArray *c3_lb_y = NULL; real_T c3_nb_u; const mxArray *c3_mb_y = NULL; real_T c3_ob_u; const mxArray *c3_nb_y = NULL; real_T c3_pb_u; const mxArray *c3_ob_y = NULL; real_T c3_qb_u; const mxArray *c3_pb_y = NULL; int32_T c3_i81; real_T c3_rb_u[16]; const mxArray *c3_qb_y = NULL; real_T c3_sb_u; const mxArray *c3_rb_y = NULL; int32_T c3_i82; real_T c3_tb_u[20]; const mxArray *c3_sb_y = NULL; int32_T c3_i83; real_T c3_ub_u[16]; const mxArray *c3_tb_y = NULL; int32_T c3_i84; real_T c3_vb_u[24]; const mxArray *c3_ub_y = NULL; real_T c3_wb_u; const mxArray *c3_vb_y = NULL; real_T c3_xb_u; const mxArray *c3_wb_y = NULL; real_T c3_yb_u; const mxArray *c3_xb_y = NULL; real_T c3_ac_u; const mxArray *c3_yb_y = NULL; real_T c3_bc_u; const mxArray *c3_ac_y = NULL; real_T c3_cc_u; const mxArray *c3_bc_y = NULL; real_T c3_dc_u; const mxArray *c3_cc_y = NULL; real_T c3_ec_u; const mxArray *c3_dc_y = NULL; real_T c3_fc_u; const mxArray *c3_ec_y = NULL; real_T c3_gc_u; const mxArray *c3_fc_y = NULL; real_T c3_hc_u; const mxArray *c3_gc_y = NULL; real_T c3_ic_u; const mxArray *c3_hc_y = NULL; real_T c3_jc_u; const mxArray *c3_ic_y = NULL; real_T c3_kc_u; const mxArray *c3_jc_y = NULL; real_T c3_lc_u; const mxArray *c3_kc_y = NULL; real_T c3_mc_u; const mxArray *c3_lc_y = NULL; real_T c3_nc_u; const mxArray *c3_mc_y = NULL; const mxArray *c3_b_iAout = NULL; const mxArray *c3_b_status = NULL; const mxArray *c3_b_useq = NULL; const mxArray *c3_b_cost = NULL; const mxArray *c3_oc_u = NULL; real_T c3_dv17[20]; int32_T c3_i85; boolean_T c3_bv1[10]; int32_T c3_i86; int32_T c3_i87; int32_T c3_i88; real_T *c3_b_old_u; real_T *c3_b_umin; real_T *c3_b_umax; real_T *c3_b_ymin; real_T *c3_b_ymax; real_T *c3_b_switch_in; real_T *c3_b_ywt; real_T *c3_b_duwt; real_T *c3_b_rhoeps; real_T *c3_pc_u; real_T *c3_c_cost; real_T *c3_c_status; real_T (*c3_c_useq)[20]; boolean_T (*c3_c_iAout)[10]; boolean_T (*c3_b_iA)[10]; real_T (*c3_b_x)[2]; real_T (*c3_b_vseq)[21]; real_T (*c3_b_rseq)[20]; c3_c_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_c_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_c_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_c_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_pc_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_b_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_b_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_b_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_b_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_b_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_b_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_b_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_b_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_b_iA = (boolean_T (*)[10])ssGetInputPortSignal(chartInstance->S, 4); c3_b_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_b_x = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 2); c3_b_vseq = (real_T (*)[21])ssGetInputPortSignal(chartInstance->S, 1); c3_b_rseq = (real_T (*)[20])ssGetInputPortSignal(chartInstance->S, 0); _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); c3_hoistedGlobal = *c3_b_old_u; c3_b_hoistedGlobal = *c3_b_umin; c3_c_hoistedGlobal = *c3_b_umax; c3_d_hoistedGlobal = *c3_b_ymin; c3_e_hoistedGlobal = *c3_b_ymax; c3_f_hoistedGlobal = *c3_b_switch_in; c3_g_hoistedGlobal = *c3_b_ywt; c3_h_hoistedGlobal = *c3_b_duwt; c3_i_hoistedGlobal = *c3_b_rhoeps; for (c3_i42 = 0; c3_i42 < 20; c3_i42++) { c3_rseq[c3_i42] = (*c3_b_rseq)[c3_i42]; } for (c3_i43 = 0; c3_i43 < 21; c3_i43++) { c3_vseq[c3_i43] = (*c3_b_vseq)[c3_i43]; } for (c3_i44 = 0; c3_i44 < 2; c3_i44++) { c3_x[c3_i44] = (*c3_b_x)[c3_i44]; } c3_old_u = c3_hoistedGlobal; for (c3_i45 = 0; c3_i45 < 10; c3_i45++) { c3_iA[c3_i45] = (*c3_b_iA)[c3_i45]; } c3_umin = c3_b_hoistedGlobal; c3_umax = c3_c_hoistedGlobal; c3_ymin = c3_d_hoistedGlobal; c3_ymax = c3_e_hoistedGlobal; c3_switch_in = c3_f_hoistedGlobal; c3_ywt = c3_g_hoistedGlobal; c3_duwt = c3_h_hoistedGlobal; c3_rhoeps = c3_i_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 71U, 71U, c3_debug_family_names, c3_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c3_DataType, 0U, c3_r_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_isQP, 1U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nu, 2U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_ny, 3U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_degrees, 4U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Hinv, 5U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kx, 6U, c3_q_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ku1, 7U, c3_p_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kut, 8U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kr, 9U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kv, 10U, c3_n_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mlim, 11U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mx, 12U, c3_m_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mu1, 13U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mv, 14U, c3_k_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_z_degrees, 15U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_utarget, 16U, c3_c_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_p, 17U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_uoff, 18U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_yoff, 19U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_maxiter, 20U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nxQP, 21U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_openloopflag, 22U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_lims_inport, 23U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umin, 24U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umax, 25U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymin, 26U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymax, 27U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_switch_inport, 28U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_switch, 29U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_enable_value, 30U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_cost, 31U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_H, 32U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_sequence, 33U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_blocking_moves, 34U, c3_h_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Linv, 35U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ac, 36U, c3_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ywt, 37U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_duwt, 38U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_rhoeps, 39U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wy, 40U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wdu, 41U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Jm, 42U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_SuJm, 43U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I2JmWuI2Jm, 44U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Su1, 45U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1WuI2Jm, 46U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Sx, 47U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Hv, 48U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wu, 49U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1, 50U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargin, 51U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargout, 52U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c3_rseq, 53U, c3_c_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_vseq, 54U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_x, 55U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_old_u, 56U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_iA, 57U, c3_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_umin, 58U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_umax, 59U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ymin, 60U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ymax, 61U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_switch_in, 62U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ywt, 63U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_duwt, 64U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_rhoeps, 65U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_u, 66U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_cost, 67U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_useq, 68U, c3_c_sf_marshallOut, c3_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_status, 69U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_iAout, 70U, c3_sf_marshallOut, c3_sf_marshallIn); c3_c_I1 = c3_b_I1; c3_c_Wu = c3_b_Wu; c3_c_Hv = c3_b_Hv; c3_c_Sx = c3_b_Sx; c3_c_I1WuI2Jm = c3_b_I1WuI2Jm; c3_c_Su1 = c3_b_Su1; c3_c_I2JmWuI2Jm = c3_b_I2JmWuI2Jm; c3_c_SuJm = c3_b_SuJm; c3_c_Jm = c3_b_Jm; c3_c_Wdu = c3_b_Wdu; c3_c_Wy = c3_b_Wy; c3_c_no_rhoeps = c3_b_no_rhoeps; c3_c_no_duwt = c3_b_no_duwt; c3_c_no_ywt = c3_b_no_ywt; for (c3_i46 = 0; c3_i46 < 24; c3_i46++) { c3_c_Ac[c3_i46] = c3_d_Ac[c3_i46]; } for (c3_i47 = 0; c3_i47 < 16; c3_i47++) { c3_c_Linv[c3_i47] = c3_d_Linv[c3_i47]; } for (c3_i48 = 0; c3_i48 < 20; c3_i48++) { c3_c_blocking_moves[c3_i48] = c3_d_blocking_moves[c3_i48]; } c3_c_return_sequence = c3_b_return_sequence; for (c3_i49 = 0; c3_i49 < 16; c3_i49++) { c3_c_H[c3_i49] = c3_d_H[c3_i49]; } c3_c_return_cost = c3_b_return_cost; c3_c_enable_value = c3_b_enable_value; c3_c_no_switch = c3_b_no_switch; c3_c_switch_inport = c3_b_switch_inport; c3_c_no_ymax = c3_b_no_ymax; c3_c_no_ymin = c3_b_no_ymin; c3_c_no_umax = c3_b_no_umax; c3_c_no_umin = c3_b_no_umin; c3_c_lims_inport = c3_b_lims_inport; c3_c_openloopflag = c3_b_openloopflag; c3_c_nxQP = c3_b_nxQP; c3_c_maxiter = c3_b_maxiter; c3_c_yoff = c3_b_yoff; c3_c_uoff = c3_b_uoff; c3_c_p = c3_b_p; for (c3_i50 = 0; c3_i50 < 20; c3_i50++) { c3_c_utarget[c3_i50] = 0.0; } for (c3_i51 = 0; c3_i51 < 4; c3_i51++) { c3_c_z_degrees[c3_i51] = 0.0; } for (c3_i52 = 0; c3_i52 < 126; c3_i52++) { c3_c_Mv[c3_i52] = 0.0; } for (c3_i53 = 0; c3_i53 < 6; c3_i53++) { c3_c_Mu1[c3_i53] = c3_d_Mu1[c3_i53]; } for (c3_i54 = 0; c3_i54 < 12; c3_i54++) { c3_c_Mx[c3_i54] = 0.0; } for (c3_i55 = 0; c3_i55 < 6; c3_i55++) { c3_c_Mlim[c3_i55] = 1.0; } for (c3_i56 = 0; c3_i56 < 63; c3_i56++) { c3_c_Kv[c3_i56] = 0.0; } for (c3_i57 = 0; c3_i57 < 60; c3_i57++) { c3_c_Kr[c3_i57] = c3_d_Kr[c3_i57]; } for (c3_i58 = 0; c3_i58 < 60; c3_i58++) { c3_c_Kut[c3_i58] = 0.0; } for (c3_i59 = 0; c3_i59 < 3; c3_i59++) { c3_c_Ku1[c3_i59] = c3_d_Ku1[c3_i59]; } for (c3_i60 = 0; c3_i60 < 6; c3_i60++) { c3_c_Kx[c3_i60] = c3_d_Kx[c3_i60]; } for (c3_i61 = 0; c3_i61 < 16; c3_i61++) { c3_c_Hinv[c3_i61] = c3_d_Hinv[c3_i61]; } c3_c_degrees = c3_b_degrees; c3_c_ny = c3_b_ny; c3_c_nu = c3_b_nu; c3_c_isQP = c3_b_isQP; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 8); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 9); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 10); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 12); for (c3_i62 = 0; c3_i62 < 6; c3_i62++) { c3_DataType[c3_i62] = c3_cv0[c3_i62]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 13); c3_u = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 14); c3_cost = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 15); for (c3_i63 = 0; c3_i63 < 20; c3_i63++) { c3_useq[c3_i63] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 16); c3_status = 1.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 17); for (c3_i64 = 0; c3_i64 < 10; c3_i64++) { c3_iAout[c3_i64] = FALSE; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 18); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 19); for (c3_i65 = 0; c3_i65 < 20; c3_i65++) { c3_b_u[c3_i65] = c3_rseq[c3_i65]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_b_u, 0, 0U, 1U, 0U, 1, 20), FALSE); for (c3_i66 = 0; c3_i66 < 21; c3_i66++) { c3_c_u[c3_i66] = c3_vseq[c3_i66]; } c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", c3_c_u, 0, 0U, 1U, 0U, 1, 21), FALSE); c3_d_u = c3_umin; c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", &c3_d_u, 0, 0U, 0U, 0U, 0), FALSE); c3_e_u = c3_umax; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_e_u, 0, 0U, 0U, 0U, 0), FALSE); c3_f_u = c3_ymin; c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", &c3_f_u, 0, 0U, 0U, 0U, 0), FALSE); c3_g_u = c3_ymax; c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", &c3_g_u, 0, 0U, 0U, 0U, 0), FALSE); c3_h_u = c3_switch_in; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_h_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i67 = 0; c3_i67 < 2; c3_i67++) { c3_i_u[c3_i67] = c3_x[c3_i67]; } c3_h_y = NULL; sf_mex_assign(&c3_h_y, sf_mex_create("y", c3_i_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c3_j_u = c3_old_u; c3_i_y = NULL; sf_mex_assign(&c3_i_y, sf_mex_create("y", &c3_j_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i68 = 0; c3_i68 < 10; c3_i68++) { c3_k_u[c3_i68] = c3_iA[c3_i68]; } c3_j_y = NULL; sf_mex_assign(&c3_j_y, sf_mex_create("y", c3_k_u, 11, 0U, 1U, 0U, 1, 10), FALSE); c3_l_u = c3_b_isQP; c3_k_y = NULL; sf_mex_assign(&c3_k_y, sf_mex_create("y", &c3_l_u, 11, 0U, 0U, 0U, 0), FALSE); c3_m_u = c3_b_nu; c3_l_y = NULL; sf_mex_assign(&c3_l_y, sf_mex_create("y", &c3_m_u, 0, 0U, 0U, 0U, 0), FALSE); c3_n_u = c3_b_ny; c3_m_y = NULL; sf_mex_assign(&c3_m_y, sf_mex_create("y", &c3_n_u, 0, 0U, 0U, 0U, 0), FALSE); c3_o_u = c3_b_degrees; c3_n_y = NULL; sf_mex_assign(&c3_n_y, sf_mex_create("y", &c3_o_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i69 = 0; c3_i69 < 16; c3_i69++) { c3_p_u[c3_i69] = c3_d_Hinv[c3_i69]; } c3_o_y = NULL; sf_mex_assign(&c3_o_y, sf_mex_create("y", c3_p_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); for (c3_i70 = 0; c3_i70 < 6; c3_i70++) { c3_q_u[c3_i70] = c3_d_Kx[c3_i70]; } c3_p_y = NULL; sf_mex_assign(&c3_p_y, sf_mex_create("y", c3_q_u, 0, 0U, 1U, 0U, 2, 2, 3), FALSE); for (c3_i71 = 0; c3_i71 < 3; c3_i71++) { c3_r_u[c3_i71] = c3_d_Ku1[c3_i71]; } c3_q_y = NULL; sf_mex_assign(&c3_q_y, sf_mex_create("y", c3_r_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); for (c3_i72 = 0; c3_i72 < 60; c3_i72++) { c3_s_u[c3_i72] = 0.0; } c3_r_y = NULL; sf_mex_assign(&c3_r_y, sf_mex_create("y", c3_s_u, 0, 0U, 1U, 0U, 2, 20, 3), FALSE); for (c3_i73 = 0; c3_i73 < 60; c3_i73++) { c3_t_u[c3_i73] = c3_d_Kr[c3_i73]; } c3_s_y = NULL; sf_mex_assign(&c3_s_y, sf_mex_create("y", c3_t_u, 0, 0U, 1U, 0U, 2, 20, 3), FALSE); for (c3_i74 = 0; c3_i74 < 63; c3_i74++) { c3_u_u[c3_i74] = 0.0; } c3_t_y = NULL; sf_mex_assign(&c3_t_y, sf_mex_create("y", c3_u_u, 0, 0U, 1U, 0U, 2, 21, 3), FALSE); for (c3_i75 = 0; c3_i75 < 6; c3_i75++) { c3_v_u[c3_i75] = 1.0; } c3_u_y = NULL; sf_mex_assign(&c3_u_y, sf_mex_create("y", c3_v_u, 0, 0U, 1U, 0U, 1, 6), FALSE); for (c3_i76 = 0; c3_i76 < 12; c3_i76++) { c3_w_u[c3_i76] = 0.0; } c3_v_y = NULL; sf_mex_assign(&c3_v_y, sf_mex_create("y", c3_w_u, 0, 0U, 1U, 0U, 2, 6, 2), FALSE); for (c3_i77 = 0; c3_i77 < 6; c3_i77++) { c3_x_u[c3_i77] = c3_d_Mu1[c3_i77]; } c3_w_y = NULL; sf_mex_assign(&c3_w_y, sf_mex_create("y", c3_x_u, 0, 0U, 1U, 0U, 1, 6), FALSE); for (c3_i78 = 0; c3_i78 < 126; c3_i78++) { c3_y_u[c3_i78] = 0.0; } c3_x_y = NULL; sf_mex_assign(&c3_x_y, sf_mex_create("y", c3_y_u, 0, 0U, 1U, 0U, 2, 6, 21), FALSE); for (c3_i79 = 0; c3_i79 < 4; c3_i79++) { c3_ab_u[c3_i79] = 0.0; } c3_y_y = NULL; sf_mex_assign(&c3_y_y, sf_mex_create("y", c3_ab_u, 0, 0U, 1U, 0U, 1, 4), FALSE); for (c3_i80 = 0; c3_i80 < 20; c3_i80++) { c3_bb_u[c3_i80] = 0.0; } c3_ab_y = NULL; sf_mex_assign(&c3_ab_y, sf_mex_create("y", c3_bb_u, 0, 0U, 1U, 0U, 1, 20), FALSE); c3_cb_u = c3_b_p; c3_bb_y = NULL; sf_mex_assign(&c3_bb_y, sf_mex_create("y", &c3_cb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_db_u = c3_b_uoff; c3_cb_y = NULL; sf_mex_assign(&c3_cb_y, sf_mex_create("y", &c3_db_u, 0, 0U, 0U, 0U, 0), FALSE); c3_eb_u = c3_b_yoff; c3_db_y = NULL; sf_mex_assign(&c3_db_y, sf_mex_create("y", &c3_eb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fb_u = c3_b_maxiter; c3_eb_y = NULL; sf_mex_assign(&c3_eb_y, sf_mex_create("y", &c3_fb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gb_u = c3_b_nxQP; c3_fb_y = NULL; sf_mex_assign(&c3_fb_y, sf_mex_create("y", &c3_gb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hb_u = c3_b_openloopflag; c3_gb_y = NULL; sf_mex_assign(&c3_gb_y, sf_mex_create("y", &c3_hb_u, 11, 0U, 0U, 0U, 0), FALSE); c3_ib_u = c3_b_lims_inport; c3_hb_y = NULL; sf_mex_assign(&c3_hb_y, sf_mex_create("y", &c3_ib_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jb_u = c3_b_no_umin; c3_ib_y = NULL; sf_mex_assign(&c3_ib_y, sf_mex_create("y", &c3_jb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kb_u = c3_b_no_umax; c3_jb_y = NULL; sf_mex_assign(&c3_jb_y, sf_mex_create("y", &c3_kb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lb_u = c3_b_no_ymin; c3_kb_y = NULL; sf_mex_assign(&c3_kb_y, sf_mex_create("y", &c3_lb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mb_u = c3_b_no_ymax; c3_lb_y = NULL; sf_mex_assign(&c3_lb_y, sf_mex_create("y", &c3_mb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nb_u = c3_b_switch_inport; c3_mb_y = NULL; sf_mex_assign(&c3_mb_y, sf_mex_create("y", &c3_nb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ob_u = c3_b_no_switch; c3_nb_y = NULL; sf_mex_assign(&c3_nb_y, sf_mex_create("y", &c3_ob_u, 0, 0U, 0U, 0U, 0), FALSE); c3_pb_u = c3_b_enable_value; c3_ob_y = NULL; sf_mex_assign(&c3_ob_y, sf_mex_create("y", &c3_pb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_qb_u = c3_b_return_cost; c3_pb_y = NULL; sf_mex_assign(&c3_pb_y, sf_mex_create("y", &c3_qb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i81 = 0; c3_i81 < 16; c3_i81++) { c3_rb_u[c3_i81] = c3_d_H[c3_i81]; } c3_qb_y = NULL; sf_mex_assign(&c3_qb_y, sf_mex_create("y", c3_rb_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); c3_sb_u = c3_b_return_sequence; c3_rb_y = NULL; sf_mex_assign(&c3_rb_y, sf_mex_create("y", &c3_sb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i82 = 0; c3_i82 < 20; c3_i82++) { c3_tb_u[c3_i82] = c3_d_blocking_moves[c3_i82]; } c3_sb_y = NULL; sf_mex_assign(&c3_sb_y, sf_mex_create("y", c3_tb_u, 0, 0U, 1U, 0U, 2, 1, 20), FALSE); for (c3_i83 = 0; c3_i83 < 16; c3_i83++) { c3_ub_u[c3_i83] = c3_d_Linv[c3_i83]; } c3_tb_y = NULL; sf_mex_assign(&c3_tb_y, sf_mex_create("y", c3_ub_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); for (c3_i84 = 0; c3_i84 < 24; c3_i84++) { c3_vb_u[c3_i84] = c3_d_Ac[c3_i84]; } c3_ub_y = NULL; sf_mex_assign(&c3_ub_y, sf_mex_create("y", c3_vb_u, 0, 0U, 1U, 0U, 2, 6, 4), FALSE); c3_wb_u = c3_ywt; c3_vb_y = NULL; sf_mex_assign(&c3_vb_y, sf_mex_create("y", &c3_wb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_xb_u = c3_duwt; c3_wb_y = NULL; sf_mex_assign(&c3_wb_y, sf_mex_create("y", &c3_xb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_yb_u = c3_rhoeps; c3_xb_y = NULL; sf_mex_assign(&c3_xb_y, sf_mex_create("y", &c3_yb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ac_u = c3_b_no_ywt; c3_yb_y = NULL; sf_mex_assign(&c3_yb_y, sf_mex_create("y", &c3_ac_u, 0, 0U, 0U, 0U, 0), FALSE); c3_bc_u = c3_b_no_duwt; c3_ac_y = NULL; sf_mex_assign(&c3_ac_y, sf_mex_create("y", &c3_bc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_cc_u = c3_b_no_rhoeps; c3_bc_y = NULL; sf_mex_assign(&c3_bc_y, sf_mex_create("y", &c3_cc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_dc_u = c3_b_Wy; c3_cc_y = NULL; sf_mex_assign(&c3_cc_y, sf_mex_create("y", &c3_dc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ec_u = c3_b_Wdu; c3_dc_y = NULL; sf_mex_assign(&c3_dc_y, sf_mex_create("y", &c3_ec_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fc_u = c3_b_Jm; c3_ec_y = NULL; sf_mex_assign(&c3_ec_y, sf_mex_create("y", &c3_fc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gc_u = c3_b_SuJm; c3_fc_y = NULL; sf_mex_assign(&c3_fc_y, sf_mex_create("y", &c3_gc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hc_u = c3_b_I2JmWuI2Jm; c3_gc_y = NULL; sf_mex_assign(&c3_gc_y, sf_mex_create("y", &c3_hc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ic_u = c3_b_Su1; c3_hc_y = NULL; sf_mex_assign(&c3_hc_y, sf_mex_create("y", &c3_ic_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jc_u = c3_b_I1WuI2Jm; c3_ic_y = NULL; sf_mex_assign(&c3_ic_y, sf_mex_create("y", &c3_jc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kc_u = c3_b_Sx; c3_jc_y = NULL; sf_mex_assign(&c3_jc_y, sf_mex_create("y", &c3_kc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lc_u = c3_b_Hv; c3_kc_y = NULL; sf_mex_assign(&c3_kc_y, sf_mex_create("y", &c3_lc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mc_u = c3_b_Wu; c3_lc_y = NULL; sf_mex_assign(&c3_lc_y, sf_mex_create("y", &c3_mc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nc_u = c3_b_I1; c3_mc_y = NULL; sf_mex_assign(&c3_mc_y, sf_mex_create("y", &c3_nc_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_optimizer_double_mex", 5U, 63U, 14, c3_y, 14, c3_b_y, 14, c3_c_y, 14, c3_d_y, 14, c3_e_y, 14, c3_f_y, 14, c3_g_y, 14, c3_h_y, 14, c3_i_y, 14, c3_j_y, 14, c3_k_y, 14, c3_l_y, 14, c3_m_y, 14, c3_n_y, 14, c3_o_y, 14, c3_p_y, 14, c3_q_y, 14, c3_r_y, 14, c3_s_y, 14, c3_t_y, 14, c3_u_y, 14, c3_v_y, 14, c3_w_y, 14, c3_x_y, 14, c3_y_y, 14, c3_ab_y, 14, c3_bb_y, 14, c3_cb_y, 14, c3_db_y, 14, c3_eb_y, 14, c3_fb_y, 14, c3_gb_y, 14, c3_hb_y, 14, c3_ib_y, 14, c3_jb_y, 14, c3_kb_y, 14, c3_lb_y, 14, c3_mb_y, 14, c3_nb_y, 14, c3_ob_y, 14, c3_pb_y, 14, c3_qb_y, 14, c3_rb_y, 14, c3_sb_y, 14, c3_tb_y, 14, c3_ub_y, 14, c3_vb_y, 14, c3_wb_y, 14, c3_xb_y, 14, c3_yb_y, 14, c3_ac_y, 14, c3_bc_y, 14, c3_cc_y, 14, c3_dc_y, 14, c3_ec_y, 14, c3_fc_y, 14, c3_gc_y, 14, c3_hc_y, 14, c3_ic_y, 14, c3_jc_y, 14, c3_kc_y, 14, c3_lc_y, 14, c3_mc_y, &c3_oc_u, &c3_b_cost, &c3_b_useq, &c3_b_status, &c3_b_iAout); c3_u = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_oc_u), "u"); c3_cost = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_cost), "cost"); c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_useq), "useq", c3_dv17); for (c3_i85 = 0; c3_i85 < 20; c3_i85++) { c3_useq[c3_i85] = c3_dv17[c3_i85]; } c3_status = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_status), "status"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_iAout), "iAout", c3_bv1); for (c3_i86 = 0; c3_i86 < 10; c3_i86++) { c3_iAout[c3_i86] = c3_bv1[c3_i86]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, -31); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c3_oc_u); sf_mex_destroy(&c3_b_cost); sf_mex_destroy(&c3_b_useq); sf_mex_destroy(&c3_b_status); sf_mex_destroy(&c3_b_iAout); *c3_pc_u = c3_u; *c3_c_cost = c3_cost; for (c3_i87 = 0; c3_i87 < 20; c3_i87++) { (*c3_c_useq)[c3_i87] = c3_useq[c3_i87]; } *c3_c_status = c3_status; for (c3_i88 = 0; c3_i88 < 10; c3_i88++) { (*c3_c_iAout)[c3_i88] = c3_iAout[c3_i88]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); } static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber) { } static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i89; boolean_T c3_b_inData[10]; int32_T c3_i90; boolean_T c3_u[10]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i89 = 0; c3_i89 < 10; c3_i89++) { c3_b_inData[c3_i89] = (*(boolean_T (*)[10])c3_inData)[c3_i89]; } for (c3_i90 = 0; c3_i90 < 10; c3_i90++) { c3_u[c3_i90] = c3_b_inData[c3_i90]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 11, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_iAout; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y[10]; int32_T c3_i91; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_iAout = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); for (c3_i91 = 0; c3_i91 < 10; c3_i91++) { (*(boolean_T (*)[10])c3_outData)[c3_i91] = c3_y[c3_i91]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; real_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(real_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_u; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_u = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId); sf_mex_destroy(&c3_u); *(real_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i92; real_T c3_b_inData[20]; int32_T c3_i93; real_T c3_u[20]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i92 = 0; c3_i92 < 20; c3_i92++) { c3_b_inData[c3_i92] = (*(real_T (*)[20])c3_inData)[c3_i92]; } for (c3_i93 = 0; c3_i93 < 20; c3_i93++) { c3_u[c3_i93] = c3_b_inData[c3_i93]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 20), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_useq; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[20]; int32_T c3_i94; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_useq = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); for (c3_i94 = 0; c3_i94 < 20; c3_i94++) { (*(real_T (*)[20])c3_outData)[c3_i94] = c3_y[c3_i94]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i95; real_T c3_b_inData[2]; int32_T c3_i96; real_T c3_u[2]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i95 = 0; c3_i95 < 2; c3_i95++) { c3_b_inData[c3_i95] = (*(real_T (*)[2])c3_inData)[c3_i95]; } for (c3_i96 = 0; c3_i96 < 2; c3_i96++) { c3_u[c3_i96] = c3_b_inData[c3_i96]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i97; real_T c3_b_inData[21]; int32_T c3_i98; real_T c3_u[21]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i97 = 0; c3_i97 < 21; c3_i97++) { c3_b_inData[c3_i97] = (*(real_T (*)[21])c3_inData)[c3_i97]; } for (c3_i98 = 0; c3_i98 < 21; c3_i98++) { c3_u[c3_i98] = c3_b_inData[c3_i98]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 21), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i99; int32_T c3_i100; int32_T c3_i101; real_T c3_b_inData[24]; int32_T c3_i102; int32_T c3_i103; int32_T c3_i104; real_T c3_u[24]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i99 = 0; for (c3_i100 = 0; c3_i100 < 4; c3_i100++) { for (c3_i101 = 0; c3_i101 < 6; c3_i101++) { c3_b_inData[c3_i101 + c3_i99] = (*(real_T (*)[24])c3_inData)[c3_i101 + c3_i99]; } c3_i99 += 6; } c3_i102 = 0; for (c3_i103 = 0; c3_i103 < 4; c3_i103++) { for (c3_i104 = 0; c3_i104 < 6; c3_i104++) { c3_u[c3_i104 + c3_i102] = c3_b_inData[c3_i104 + c3_i102]; } c3_i102 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i105; int32_T c3_i106; int32_T c3_i107; real_T c3_b_inData[16]; int32_T c3_i108; int32_T c3_i109; int32_T c3_i110; real_T c3_u[16]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i105 = 0; for (c3_i106 = 0; c3_i106 < 4; c3_i106++) { for (c3_i107 = 0; c3_i107 < 4; c3_i107++) { c3_b_inData[c3_i107 + c3_i105] = (*(real_T (*)[16])c3_inData)[c3_i107 + c3_i105]; } c3_i105 += 4; } c3_i108 = 0; for (c3_i109 = 0; c3_i109 < 4; c3_i109++) { for (c3_i110 = 0; c3_i110 < 4; c3_i110++) { c3_u[c3_i110 + c3_i108] = c3_b_inData[c3_i110 + c3_i108]; } c3_i108 += 4; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i111; real_T c3_b_inData[20]; int32_T c3_i112; real_T c3_u[20]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i111 = 0; c3_i111 < 20; c3_i111++) { c3_b_inData[c3_i111] = (*(real_T (*)[20])c3_inData)[c3_i111]; } for (c3_i112 = 0; c3_i112 < 20; c3_i112++) { c3_u[c3_i112] = c3_b_inData[c3_i112]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 20), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; boolean_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(boolean_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i113; real_T c3_b_inData[4]; int32_T c3_i114; real_T c3_u[4]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i113 = 0; c3_i113 < 4; c3_i113++) { c3_b_inData[c3_i113] = (*(real_T (*)[4])c3_inData)[c3_i113]; } for (c3_i114 = 0; c3_i114 < 4; c3_i114++) { c3_u[c3_i114] = c3_b_inData[c3_i114]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i115; int32_T c3_i116; int32_T c3_i117; real_T c3_b_inData[126]; int32_T c3_i118; int32_T c3_i119; int32_T c3_i120; real_T c3_u[126]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i115 = 0; for (c3_i116 = 0; c3_i116 < 21; c3_i116++) { for (c3_i117 = 0; c3_i117 < 6; c3_i117++) { c3_b_inData[c3_i117 + c3_i115] = (*(real_T (*)[126])c3_inData)[c3_i117 + c3_i115]; } c3_i115 += 6; } c3_i118 = 0; for (c3_i119 = 0; c3_i119 < 21; c3_i119++) { for (c3_i120 = 0; c3_i120 < 6; c3_i120++) { c3_u[c3_i120 + c3_i118] = c3_b_inData[c3_i120 + c3_i118]; } c3_i118 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 21), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i121; real_T c3_b_inData[6]; int32_T c3_i122; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i121 = 0; c3_i121 < 6; c3_i121++) { c3_b_inData[c3_i121] = (*(real_T (*)[6])c3_inData)[c3_i121]; } for (c3_i122 = 0; c3_i122 < 6; c3_i122++) { c3_u[c3_i122] = c3_b_inData[c3_i122]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i123; int32_T c3_i124; int32_T c3_i125; real_T c3_b_inData[12]; int32_T c3_i126; int32_T c3_i127; int32_T c3_i128; real_T c3_u[12]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i123 = 0; for (c3_i124 = 0; c3_i124 < 2; c3_i124++) { for (c3_i125 = 0; c3_i125 < 6; c3_i125++) { c3_b_inData[c3_i125 + c3_i123] = (*(real_T (*)[12])c3_inData)[c3_i125 + c3_i123]; } c3_i123 += 6; } c3_i126 = 0; for (c3_i127 = 0; c3_i127 < 2; c3_i127++) { for (c3_i128 = 0; c3_i128 < 6; c3_i128++) { c3_u[c3_i128 + c3_i126] = c3_b_inData[c3_i128 + c3_i126]; } c3_i126 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 2), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i129; int32_T c3_i130; int32_T c3_i131; real_T c3_b_inData[63]; int32_T c3_i132; int32_T c3_i133; int32_T c3_i134; real_T c3_u[63]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i129 = 0; for (c3_i130 = 0; c3_i130 < 3; c3_i130++) { for (c3_i131 = 0; c3_i131 < 21; c3_i131++) { c3_b_inData[c3_i131 + c3_i129] = (*(real_T (*)[63])c3_inData)[c3_i131 + c3_i129]; } c3_i129 += 21; } c3_i132 = 0; for (c3_i133 = 0; c3_i133 < 3; c3_i133++) { for (c3_i134 = 0; c3_i134 < 21; c3_i134++) { c3_u[c3_i134 + c3_i132] = c3_b_inData[c3_i134 + c3_i132]; } c3_i132 += 21; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 21, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i135; int32_T c3_i136; int32_T c3_i137; real_T c3_b_inData[60]; int32_T c3_i138; int32_T c3_i139; int32_T c3_i140; real_T c3_u[60]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i135 = 0; for (c3_i136 = 0; c3_i136 < 3; c3_i136++) { for (c3_i137 = 0; c3_i137 < 20; c3_i137++) { c3_b_inData[c3_i137 + c3_i135] = (*(real_T (*)[60])c3_inData)[c3_i137 + c3_i135]; } c3_i135 += 20; } c3_i138 = 0; for (c3_i139 = 0; c3_i139 < 3; c3_i139++) { for (c3_i140 = 0; c3_i140 < 20; c3_i140++) { c3_u[c3_i140 + c3_i138] = c3_b_inData[c3_i140 + c3_i138]; } c3_i138 += 20; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 20, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i141; real_T c3_b_inData[3]; int32_T c3_i142; real_T c3_u[3]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i141 = 0; c3_i141 < 3; c3_i141++) { c3_b_inData[c3_i141] = (*(real_T (*)[3])c3_inData)[c3_i141]; } for (c3_i142 = 0; c3_i142 < 3; c3_i142++) { c3_u[c3_i142] = c3_b_inData[c3_i142]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i143; int32_T c3_i144; int32_T c3_i145; real_T c3_b_inData[6]; int32_T c3_i146; int32_T c3_i147; int32_T c3_i148; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i143 = 0; for (c3_i144 = 0; c3_i144 < 3; c3_i144++) { for (c3_i145 = 0; c3_i145 < 2; c3_i145++) { c3_b_inData[c3_i145 + c3_i143] = (*(real_T (*)[6])c3_inData)[c3_i145 + c3_i143]; } c3_i143 += 2; } c3_i146 = 0; for (c3_i147 = 0; c3_i147 < 3; c3_i147++) { for (c3_i148 = 0; c3_i148 < 2; c3_i148++) { c3_u[c3_i148 + c3_i146] = c3_b_inData[c3_i148 + c3_i146]; } c3_i146 += 2; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 2, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i149; char_T c3_b_inData[6]; int32_T c3_i150; char_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i149 = 0; c3_i149 < 6; c3_i149++) { c3_b_inData[c3_i149] = (*(char_T (*)[6])c3_inData)[c3_i149]; } for (c3_i150 = 0; c3_i150 < 6; c3_i150++) { c3_u[c3_i150] = c3_b_inData[c3_i150]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c3_nameCaptureInfo = NULL; c3_nameCaptureInfo = NULL; sf_mex_assign(&c3_nameCaptureInfo, sf_mex_create("nameCaptureInfo", NULL, 0, 0U, 1U, 0U, 2, 0, 1), FALSE); return c3_nameCaptureInfo; } static real_T c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier) { real_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId); sf_mex_destroy(&c3_u); return c3_y; } static real_T c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { real_T c3_y; real_T c3_d34; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_d34, 1, 0, 0U, 0, 0U, 0); c3_y = c3_d34; sf_mex_destroy(&c3_u); return c3_y; } static void c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[20]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); } static void c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[20]) { real_T c3_dv18[20]; int32_T c3_i151; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv18, 1, 0, 0U, 1, 0U, 1, 20); for (c3_i151 = 0; c3_i151 < 20; c3_i151++) { c3_y[c3_i151] = c3_dv18[c3_i151]; } sf_mex_destroy(&c3_u); } static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[10]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); } static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[10]) { boolean_T c3_bv2[10]; int32_T c3_i152; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_bv2, 1, 11, 0U, 1, 0U, 1, 10); for (c3_i152 = 0; c3_i152 < 10; c3_i152++) { c3_y[c3_i152] = c3_bv2[c3_i152]; } sf_mex_destroy(&c3_u); } static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(int32_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static int32_T c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { int32_T c3_y; int32_T c3_i153; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_i153, 1, 6, 0U, 0, 0U, 0); c3_y = c3_i153; sf_mex_destroy(&c3_u); return c3_y; } static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_b_sfEvent; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; int32_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_b_sfEvent = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_sfEvent), &c3_thisId); sf_mex_destroy(&c3_b_sfEvent); *(int32_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static boolean_T c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { boolean_T c3_y; boolean_T c3_b0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_b0, 1, 11, 0U, 0, 0U, 0); c3_y = c3_b0; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_isQP; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_isQP = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_isQP), &c3_thisId); sf_mex_destroy(&c3_c_isQP); *(boolean_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static void c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[16]) { real_T c3_dv19[16]; int32_T c3_i154; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv19, 1, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i154 = 0; c3_i154 < 16; c3_i154++) { c3_y[c3_i154] = c3_dv19[c3_i154]; } sf_mex_destroy(&c3_u); } static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Hinv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[16]; int32_T c3_i155; int32_T c3_i156; int32_T c3_i157; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Hinv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Hinv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Hinv); c3_i155 = 0; for (c3_i156 = 0; c3_i156 < 4; c3_i156++) { for (c3_i157 = 0; c3_i157 < 4; c3_i157++) { (*(real_T (*)[16])c3_outData)[c3_i157 + c3_i155] = c3_y[c3_i157 + c3_i155]; } c3_i155 += 4; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]) { real_T c3_dv20[6]; int32_T c3_i158; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv20, 1, 0, 0U, 1, 0U, 2, 2, 3); for (c3_i158 = 0; c3_i158 < 6; c3_i158++) { c3_y[c3_i158] = c3_dv20[c3_i158]; } sf_mex_destroy(&c3_u); } static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[6]; int32_T c3_i159; int32_T c3_i160; int32_T c3_i161; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_j_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kx); c3_i159 = 0; for (c3_i160 = 0; c3_i160 < 3; c3_i160++) { for (c3_i161 = 0; c3_i161 < 2; c3_i161++) { (*(real_T (*)[6])c3_outData)[c3_i161 + c3_i159] = c3_y[c3_i161 + c3_i159]; } c3_i159 += 2; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]) { real_T c3_dv21[3]; int32_T c3_i162; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv21, 1, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i162 = 0; c3_i162 < 3; c3_i162++) { c3_y[c3_i162] = c3_dv21[c3_i162]; } sf_mex_destroy(&c3_u); } static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ku1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[3]; int32_T c3_i163; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ku1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_k_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ku1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ku1); for (c3_i163 = 0; c3_i163 < 3; c3_i163++) { (*(real_T (*)[3])c3_outData)[c3_i163] = c3_y[c3_i163]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]) { real_T c3_dv22[60]; int32_T c3_i164; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv22, 1, 0, 0U, 1, 0U, 2, 20, 3); for (c3_i164 = 0; c3_i164 < 60; c3_i164++) { c3_y[c3_i164] = c3_dv22[c3_i164]; } sf_mex_destroy(&c3_u); } static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kut; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[60]; int32_T c3_i165; int32_T c3_i166; int32_T c3_i167; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kut = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_l_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kut), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kut); c3_i165 = 0; for (c3_i166 = 0; c3_i166 < 3; c3_i166++) { for (c3_i167 = 0; c3_i167 < 20; c3_i167++) { (*(real_T (*)[60])c3_outData)[c3_i167 + c3_i165] = c3_y[c3_i167 + c3_i165]; } c3_i165 += 20; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[63]) { real_T c3_dv23[63]; int32_T c3_i168; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv23, 1, 0, 0U, 1, 0U, 2, 21, 3); for (c3_i168 = 0; c3_i168 < 63; c3_i168++) { c3_y[c3_i168] = c3_dv23[c3_i168]; } sf_mex_destroy(&c3_u); } static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[63]; int32_T c3_i169; int32_T c3_i170; int32_T c3_i171; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_m_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kv); c3_i169 = 0; for (c3_i170 = 0; c3_i170 < 3; c3_i170++) { for (c3_i171 = 0; c3_i171 < 21; c3_i171++) { (*(real_T (*)[63])c3_outData)[c3_i171 + c3_i169] = c3_y[c3_i171 + c3_i169]; } c3_i169 += 21; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]) { real_T c3_dv24[6]; int32_T c3_i172; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv24, 1, 0, 0U, 1, 0U, 1, 6); for (c3_i172 = 0; c3_i172 < 6; c3_i172++) { c3_y[c3_i172] = c3_dv24[c3_i172]; } sf_mex_destroy(&c3_u); } static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mlim; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[6]; int32_T c3_i173; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mlim = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_n_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mlim), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mlim); for (c3_i173 = 0; c3_i173 < 6; c3_i173++) { (*(real_T (*)[6])c3_outData)[c3_i173] = c3_y[c3_i173]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[12]) { real_T c3_dv25[12]; int32_T c3_i174; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv25, 1, 0, 0U, 1, 0U, 2, 6, 2); for (c3_i174 = 0; c3_i174 < 12; c3_i174++) { c3_y[c3_i174] = c3_dv25[c3_i174]; } sf_mex_destroy(&c3_u); } static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[12]; int32_T c3_i175; int32_T c3_i176; int32_T c3_i177; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_o_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mx); c3_i175 = 0; for (c3_i176 = 0; c3_i176 < 2; c3_i176++) { for (c3_i177 = 0; c3_i177 < 6; c3_i177++) { (*(real_T (*)[12])c3_outData)[c3_i177 + c3_i175] = c3_y[c3_i177 + c3_i175]; } c3_i175 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[126]) { real_T c3_dv26[126]; int32_T c3_i178; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv26, 1, 0, 0U, 1, 0U, 2, 6, 21); for (c3_i178 = 0; c3_i178 < 126; c3_i178++) { c3_y[c3_i178] = c3_dv26[c3_i178]; } sf_mex_destroy(&c3_u); } static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[126]; int32_T c3_i179; int32_T c3_i180; int32_T c3_i181; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_p_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mv); c3_i179 = 0; for (c3_i180 = 0; c3_i180 < 21; c3_i180++) { for (c3_i181 = 0; c3_i181 < 6; c3_i181++) { (*(real_T (*)[126])c3_outData)[c3_i181 + c3_i179] = c3_y[c3_i181 + c3_i179]; } c3_i179 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[4]) { real_T c3_dv27[4]; int32_T c3_i182; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv27, 1, 0, 0U, 1, 0U, 1, 4); for (c3_i182 = 0; c3_i182 < 4; c3_i182++) { c3_y[c3_i182] = c3_dv27[c3_i182]; } sf_mex_destroy(&c3_u); } static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_z_degrees; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[4]; int32_T c3_i183; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_z_degrees = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_q_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_z_degrees), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_z_degrees); for (c3_i183 = 0; c3_i183 < 4; c3_i183++) { (*(real_T (*)[4])c3_outData)[c3_i183] = c3_y[c3_i183]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[20]) { real_T c3_dv28[20]; int32_T c3_i184; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv28, 1, 0, 0U, 1, 0U, 2, 1, 20); for (c3_i184 = 0; c3_i184 < 20; c3_i184++) { c3_y[c3_i184] = c3_dv28[c3_i184]; } sf_mex_destroy(&c3_u); } static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_blocking_moves; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[20]; int32_T c3_i185; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_blocking_moves = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_r_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_blocking_moves), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_blocking_moves); for (c3_i185 = 0; c3_i185 < 20; c3_i185++) { (*(real_T (*)[20])c3_outData)[c3_i185] = c3_y[c3_i185]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[24]) { real_T c3_dv29[24]; int32_T c3_i186; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv29, 1, 0, 0U, 1, 0U, 2, 6, 4); for (c3_i186 = 0; c3_i186 < 24; c3_i186++) { c3_y[c3_i186] = c3_dv29[c3_i186]; } sf_mex_destroy(&c3_u); } static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ac; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[24]; int32_T c3_i187; int32_T c3_i188; int32_T c3_i189; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ac = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_s_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ac), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ac); c3_i187 = 0; for (c3_i188 = 0; c3_i188 < 4; c3_i188++) { for (c3_i189 = 0; c3_i189 < 6; c3_i189++) { (*(real_T (*)[24])c3_outData)[c3_i189 + c3_i187] = c3_y[c3_i189 + c3_i187]; } c3_i187 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static uint8_T c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier) { uint8_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_u_emlrt_marshallIn(chartInstance, sf_mex_dup (c3_b_is_active_c3_mpclib), &c3_thisId); sf_mex_destroy(&c3_b_is_active_c3_mpclib); return c3_y; } static uint8_T c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { uint8_T c3_y; uint8_T c3_u0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_u0, 1, 3, 0U, 0, 0U, 0); c3_y = c3_u0; sf_mex_destroy(&c3_u); return c3_y; } static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c3_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2008884449U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3349456191U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3383499532U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(154235383U); } mxArray *sf_c3_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("uZDKFWLB82ra0oNDUcAsCG"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,13,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(21); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,50,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(4); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(3); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(3); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(3); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(21); pr[1] = (double)(3); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(3); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,13,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,13,"type",mxType); } mxSetField(mxData,13,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,14,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,14,"type",mxType); } mxSetField(mxData,14,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,15,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,15,"type",mxType); } mxSetField(mxData,15,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(21); mxSetField(mxData,16,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,16,"type",mxType); } mxSetField(mxData,16,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(2); mxSetField(mxData,17,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,17,"type",mxType); } mxSetField(mxData,17,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,18,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,18,"type",mxType); } mxSetField(mxData,18,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,19,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,19,"type",mxType); } mxSetField(mxData,19,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,20,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,20,"type",mxType); } mxSetField(mxData,20,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,21,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,21,"type",mxType); } mxSetField(mxData,21,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,22,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,22,"type",mxType); } mxSetField(mxData,22,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,23,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,23,"type",mxType); } mxSetField(mxData,23,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(20); mxSetField(mxData,24,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,24,"type",mxType); } mxSetField(mxData,24,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,25,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,25,"type",mxType); } mxSetField(mxData,25,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,26,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,26,"type",mxType); } mxSetField(mxData,26,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,27,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,27,"type",mxType); } mxSetField(mxData,27,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,28,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,28,"type",mxType); } mxSetField(mxData,28,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,29,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,29,"type",mxType); } mxSetField(mxData,29,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,30,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,30,"type",mxType); } mxSetField(mxData,30,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,31,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,31,"type",mxType); } mxSetField(mxData,31,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,32,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,32,"type",mxType); } mxSetField(mxData,32,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,33,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,33,"type",mxType); } mxSetField(mxData,33,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,34,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,34,"type",mxType); } mxSetField(mxData,34,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,35,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,35,"type",mxType); } mxSetField(mxData,35,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,36,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,36,"type",mxType); } mxSetField(mxData,36,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,37,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,37,"type",mxType); } mxSetField(mxData,37,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,38,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,38,"type",mxType); } mxSetField(mxData,38,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,39,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,39,"type",mxType); } mxSetField(mxData,39,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,40,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,40,"type",mxType); } mxSetField(mxData,40,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,41,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,41,"type",mxType); } mxSetField(mxData,41,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,42,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,42,"type",mxType); } mxSetField(mxData,42,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,43,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,43,"type",mxType); } mxSetField(mxData,43,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,44,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,44,"type",mxType); } mxSetField(mxData,44,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,45,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,45,"type",mxType); } mxSetField(mxData,45,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,46,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,46,"type",mxType); } mxSetField(mxData,46,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(1); mxSetField(mxData,47,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,47,"type",mxType); } mxSetField(mxData,47,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,48,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,48,"type",mxType); } mxSetField(mxData,48,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(1); mxSetField(mxData,49,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,49,"type",mxType); } mxSetField(mxData,49,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,5,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c3_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c3_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x6'type','srcId','name','auxInfo'{{M[1],M[20],T\"cost\",},{M[1],M[145],T\"iAout\",},{M[1],M[126],T\"status\",},{M[1],M[19],T\"u\",},{M[1],M[21],T\"useq\",},{M[8],M[0],T\"is_active_c3_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 6, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c3_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 3, 1, 1, 68, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,1,1,0,"rseq"); _SFD_SET_DATA_PROPS(1,1,1,0,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"x"); _SFD_SET_DATA_PROPS(3,1,1,0,"old_u"); _SFD_SET_DATA_PROPS(4,1,1,0,"iA"); _SFD_SET_DATA_PROPS(5,1,1,0,"umin"); _SFD_SET_DATA_PROPS(6,1,1,0,"umax"); _SFD_SET_DATA_PROPS(7,1,1,0,"ymin"); _SFD_SET_DATA_PROPS(8,1,1,0,"ymax"); _SFD_SET_DATA_PROPS(9,1,1,0,"switch_in"); _SFD_SET_DATA_PROPS(10,1,1,0,"ywt"); _SFD_SET_DATA_PROPS(11,1,1,0,"duwt"); _SFD_SET_DATA_PROPS(12,1,1,0,"rhoeps"); _SFD_SET_DATA_PROPS(13,2,0,1,"u"); _SFD_SET_DATA_PROPS(14,2,0,1,"cost"); _SFD_SET_DATA_PROPS(15,2,0,1,"useq"); _SFD_SET_DATA_PROPS(16,2,0,1,"status"); _SFD_SET_DATA_PROPS(17,10,0,0,"isQP"); _SFD_SET_DATA_PROPS(18,10,0,0,"nu"); _SFD_SET_DATA_PROPS(19,10,0,0,"ny"); _SFD_SET_DATA_PROPS(20,10,0,0,"degrees"); _SFD_SET_DATA_PROPS(21,10,0,0,"Hinv"); _SFD_SET_DATA_PROPS(22,10,0,0,"Kx"); _SFD_SET_DATA_PROPS(23,10,0,0,"Ku1"); _SFD_SET_DATA_PROPS(24,10,0,0,"Kut"); _SFD_SET_DATA_PROPS(25,10,0,0,"Kr"); _SFD_SET_DATA_PROPS(26,10,0,0,"Kv"); _SFD_SET_DATA_PROPS(27,10,0,0,"Mlim"); _SFD_SET_DATA_PROPS(28,10,0,0,"Mx"); _SFD_SET_DATA_PROPS(29,10,0,0,"Mu1"); _SFD_SET_DATA_PROPS(30,10,0,0,"Mv"); _SFD_SET_DATA_PROPS(31,10,0,0,"z_degrees"); _SFD_SET_DATA_PROPS(32,10,0,0,"utarget"); _SFD_SET_DATA_PROPS(33,10,0,0,"p"); _SFD_SET_DATA_PROPS(34,10,0,0,"uoff"); _SFD_SET_DATA_PROPS(35,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(36,10,0,0,"maxiter"); _SFD_SET_DATA_PROPS(37,10,0,0,"nxQP"); _SFD_SET_DATA_PROPS(38,10,0,0,"openloopflag"); _SFD_SET_DATA_PROPS(39,10,0,0,"lims_inport"); _SFD_SET_DATA_PROPS(40,10,0,0,"no_umin"); _SFD_SET_DATA_PROPS(41,10,0,0,"no_umax"); _SFD_SET_DATA_PROPS(42,10,0,0,"no_ymin"); _SFD_SET_DATA_PROPS(43,10,0,0,"no_ymax"); _SFD_SET_DATA_PROPS(44,10,0,0,"switch_inport"); _SFD_SET_DATA_PROPS(45,10,0,0,"no_switch"); _SFD_SET_DATA_PROPS(46,10,0,0,"enable_value"); _SFD_SET_DATA_PROPS(47,10,0,0,"return_cost"); _SFD_SET_DATA_PROPS(48,10,0,0,"H"); _SFD_SET_DATA_PROPS(49,10,0,0,"return_sequence"); _SFD_SET_DATA_PROPS(50,10,0,0,"blocking_moves"); _SFD_SET_DATA_PROPS(51,10,0,0,"Linv"); _SFD_SET_DATA_PROPS(52,10,0,0,"Ac"); _SFD_SET_DATA_PROPS(53,10,0,0,"no_ywt"); _SFD_SET_DATA_PROPS(54,10,0,0,"no_duwt"); _SFD_SET_DATA_PROPS(55,10,0,0,"no_rhoeps"); _SFD_SET_DATA_PROPS(56,10,0,0,"Wy"); _SFD_SET_DATA_PROPS(57,10,0,0,"Wdu"); _SFD_SET_DATA_PROPS(58,10,0,0,"Jm"); _SFD_SET_DATA_PROPS(59,10,0,0,"SuJm"); _SFD_SET_DATA_PROPS(60,10,0,0,"I2JmWuI2Jm"); _SFD_SET_DATA_PROPS(61,10,0,0,"Su1"); _SFD_SET_DATA_PROPS(62,10,0,0,"I1WuI2Jm"); _SFD_SET_DATA_PROPS(63,10,0,0,"Sx"); _SFD_SET_DATA_PROPS(64,10,0,0,"Hv"); _SFD_SET_DATA_PROPS(65,10,0,0,"Wu"); _SFD_SET_DATA_PROPS(66,10,0,0,"I1"); _SFD_SET_DATA_PROPS(67,2,0,1,"iAout"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,2551); _SFD_CV_INIT_EML_IF(0,1,0,648,679,2012,2550); _SFD_CV_INIT_EML_IF(0,1,1,966,987,1495,2010); { unsigned int dimVector[1]; dimVector[0]= 20; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 21; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(4,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(12,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(13,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(14,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 20; _SFD_SET_DATA_COMPILED_PROPS(15,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(16,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(17,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType)c3_e_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(18,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(19,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(20,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(21,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 2; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(22,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_q_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(23,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_p_sf_marshallOut,(MexInFcnForType) c3_h_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 20; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(24,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 20; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(25,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 21; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(26,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_n_sf_marshallOut,(MexInFcnForType) c3_j_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(27,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 2; _SFD_SET_DATA_COMPILED_PROPS(28,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_m_sf_marshallOut,(MexInFcnForType) c3_l_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(29,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 21; _SFD_SET_DATA_COMPILED_PROPS(30,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_k_sf_marshallOut,(MexInFcnForType) c3_m_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 4; _SFD_SET_DATA_COMPILED_PROPS(31,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_n_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 20; _SFD_SET_DATA_COMPILED_PROPS(32,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(33,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(34,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(35,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(36,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(37,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(38,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType)c3_e_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(39,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(40,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(41,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(42,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(43,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(44,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(45,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(46,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(47,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(48,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(49,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 20; _SFD_SET_DATA_COMPILED_PROPS(50,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_h_sf_marshallOut,(MexInFcnForType) c3_o_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(51,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(52,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_f_sf_marshallOut,(MexInFcnForType) c3_p_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(53,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(54,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(55,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(56,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(57,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(58,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(59,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(60,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(61,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(62,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(63,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(64,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(65,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(66,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(67,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType) c3_sf_marshallIn); } { real_T *c3_old_u; real_T *c3_umin; real_T *c3_umax; real_T *c3_ymin; real_T *c3_ymax; real_T *c3_switch_in; real_T *c3_ywt; real_T *c3_duwt; real_T *c3_rhoeps; real_T *c3_u; real_T *c3_cost; real_T *c3_status; real_T (*c3_rseq)[20]; real_T (*c3_vseq)[21]; real_T (*c3_x)[2]; boolean_T (*c3_iA)[10]; real_T (*c3_useq)[20]; boolean_T (*c3_iAout)[10]; c3_iAout = (boolean_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[10])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[21])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[20])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SET_DATA_VALUE_PTR(0U, *c3_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c3_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c3_x); _SFD_SET_DATA_VALUE_PTR(3U, c3_old_u); _SFD_SET_DATA_VALUE_PTR(4U, *c3_iA); _SFD_SET_DATA_VALUE_PTR(5U, c3_umin); _SFD_SET_DATA_VALUE_PTR(6U, c3_umax); _SFD_SET_DATA_VALUE_PTR(7U, c3_ymin); _SFD_SET_DATA_VALUE_PTR(8U, c3_ymax); _SFD_SET_DATA_VALUE_PTR(9U, c3_switch_in); _SFD_SET_DATA_VALUE_PTR(10U, c3_ywt); _SFD_SET_DATA_VALUE_PTR(11U, c3_duwt); _SFD_SET_DATA_VALUE_PTR(12U, c3_rhoeps); _SFD_SET_DATA_VALUE_PTR(13U, c3_u); _SFD_SET_DATA_VALUE_PTR(14U, c3_cost); _SFD_SET_DATA_VALUE_PTR(15U, *c3_useq); _SFD_SET_DATA_VALUE_PTR(16U, c3_status); _SFD_SET_DATA_VALUE_PTR(17U, &chartInstance->c3_isQP); _SFD_SET_DATA_VALUE_PTR(18U, &chartInstance->c3_nu); _SFD_SET_DATA_VALUE_PTR(19U, &chartInstance->c3_ny); _SFD_SET_DATA_VALUE_PTR(20U, &chartInstance->c3_degrees); _SFD_SET_DATA_VALUE_PTR(21U, chartInstance->c3_Hinv); _SFD_SET_DATA_VALUE_PTR(22U, chartInstance->c3_Kx); _SFD_SET_DATA_VALUE_PTR(23U, chartInstance->c3_Ku1); _SFD_SET_DATA_VALUE_PTR(24U, chartInstance->c3_Kut); _SFD_SET_DATA_VALUE_PTR(25U, chartInstance->c3_Kr); _SFD_SET_DATA_VALUE_PTR(26U, chartInstance->c3_Kv); _SFD_SET_DATA_VALUE_PTR(27U, chartInstance->c3_Mlim); _SFD_SET_DATA_VALUE_PTR(28U, chartInstance->c3_Mx); _SFD_SET_DATA_VALUE_PTR(29U, chartInstance->c3_Mu1); _SFD_SET_DATA_VALUE_PTR(30U, chartInstance->c3_Mv); _SFD_SET_DATA_VALUE_PTR(31U, chartInstance->c3_z_degrees); _SFD_SET_DATA_VALUE_PTR(32U, chartInstance->c3_utarget); _SFD_SET_DATA_VALUE_PTR(33U, &chartInstance->c3_p); _SFD_SET_DATA_VALUE_PTR(34U, &chartInstance->c3_uoff); _SFD_SET_DATA_VALUE_PTR(35U, &chartInstance->c3_yoff); _SFD_SET_DATA_VALUE_PTR(36U, &chartInstance->c3_maxiter); _SFD_SET_DATA_VALUE_PTR(37U, &chartInstance->c3_nxQP); _SFD_SET_DATA_VALUE_PTR(38U, &chartInstance->c3_openloopflag); _SFD_SET_DATA_VALUE_PTR(39U, &chartInstance->c3_lims_inport); _SFD_SET_DATA_VALUE_PTR(40U, &chartInstance->c3_no_umin); _SFD_SET_DATA_VALUE_PTR(41U, &chartInstance->c3_no_umax); _SFD_SET_DATA_VALUE_PTR(42U, &chartInstance->c3_no_ymin); _SFD_SET_DATA_VALUE_PTR(43U, &chartInstance->c3_no_ymax); _SFD_SET_DATA_VALUE_PTR(44U, &chartInstance->c3_switch_inport); _SFD_SET_DATA_VALUE_PTR(45U, &chartInstance->c3_no_switch); _SFD_SET_DATA_VALUE_PTR(46U, &chartInstance->c3_enable_value); _SFD_SET_DATA_VALUE_PTR(47U, &chartInstance->c3_return_cost); _SFD_SET_DATA_VALUE_PTR(48U, chartInstance->c3_H); _SFD_SET_DATA_VALUE_PTR(49U, &chartInstance->c3_return_sequence); _SFD_SET_DATA_VALUE_PTR(50U, chartInstance->c3_blocking_moves); _SFD_SET_DATA_VALUE_PTR(51U, chartInstance->c3_Linv); _SFD_SET_DATA_VALUE_PTR(52U, chartInstance->c3_Ac); _SFD_SET_DATA_VALUE_PTR(53U, &chartInstance->c3_no_ywt); _SFD_SET_DATA_VALUE_PTR(54U, &chartInstance->c3_no_duwt); _SFD_SET_DATA_VALUE_PTR(55U, &chartInstance->c3_no_rhoeps); _SFD_SET_DATA_VALUE_PTR(56U, &chartInstance->c3_Wy); _SFD_SET_DATA_VALUE_PTR(57U, &chartInstance->c3_Wdu); _SFD_SET_DATA_VALUE_PTR(58U, &chartInstance->c3_Jm); _SFD_SET_DATA_VALUE_PTR(59U, &chartInstance->c3_SuJm); _SFD_SET_DATA_VALUE_PTR(60U, &chartInstance->c3_I2JmWuI2Jm); _SFD_SET_DATA_VALUE_PTR(61U, &chartInstance->c3_Su1); _SFD_SET_DATA_VALUE_PTR(62U, &chartInstance->c3_I1WuI2Jm); _SFD_SET_DATA_VALUE_PTR(63U, &chartInstance->c3_Sx); _SFD_SET_DATA_VALUE_PTR(64U, &chartInstance->c3_Hv); _SFD_SET_DATA_VALUE_PTR(65U, &chartInstance->c3_Wu); _SFD_SET_DATA_VALUE_PTR(66U, &chartInstance->c3_I1); _SFD_SET_DATA_VALUE_PTR(67U, *c3_iAout); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "T7oeNP5jU5Ide0wJqxRvND"; } static void sf_opaque_initialize_c3_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); initialize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c3_mpclib(void *chartInstanceVar) { enable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c3_mpclib(void *chartInstanceVar) { disable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c3_mpclib(void *chartInstanceVar) { sf_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c3_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c3_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c3_mpclib(S); } static void sf_opaque_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c3_mpclib(S, st); } static void sf_opaque_terminate_c3_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c3_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c3_mpclib(SimStruct *S) { /* Actual parameters from chart: Ac H Hinv Hv I1 I1WuI2Jm I2JmWuI2Jm Jm Kr Ku1 Kut Kv Kx Linv Mlim Mu1 Mv Mx Su1 SuJm Sx Wdu Wu Wy blocking_moves degrees enable_value isQP lims_inport maxiter no_duwt no_rhoeps no_switch no_umax no_umin no_ymax no_ymin no_ywt nu nxQP ny openloopflag p return_cost return_sequence switch_inport uoff utarget yoff z_degrees */ const char_T *rtParamNames[] = { "Ac", "H", "Hinv", "Hv", "I1", "I1WuI2Jm", "I2JmWuI2Jm", "Jm", "Kr", "Ku1", "Kut", "Kv", "Kx", "Linv", "Mlim", "Mu1", "Mv", "Mx", "Su1", "SuJm", "Sx", "Wdu", "Wu", "Wy", "blocking_moves", "degrees", "enable_value", "isQP", "lims_inport", "maxiter", "no_duwt", "no_rhoeps", "no_switch", "no_umax", "no_umin", "no_ymax", "no_ymin", "no_ywt", "nu", "nxQP", "ny", "openloopflag", "p", "return_cost", "return_sequence", "switch_inport", "uoff", "utarget", "yoff", "z_degrees" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for Ac*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for H*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for Hinv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for Hv*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for I1*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_DOUBLE); /* registration for I1WuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for I2JmWuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for Jm*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); /* registration for Kr*/ ssRegDlgParamAsRunTimeParam(S, 8, 8, rtParamNames[8], SS_DOUBLE); /* registration for Ku1*/ ssRegDlgParamAsRunTimeParam(S, 9, 9, rtParamNames[9], SS_DOUBLE); /* registration for Kut*/ ssRegDlgParamAsRunTimeParam(S, 10, 10, rtParamNames[10], SS_DOUBLE); /* registration for Kv*/ ssRegDlgParamAsRunTimeParam(S, 11, 11, rtParamNames[11], SS_DOUBLE); /* registration for Kx*/ ssRegDlgParamAsRunTimeParam(S, 12, 12, rtParamNames[12], SS_DOUBLE); /* registration for Linv*/ ssRegDlgParamAsRunTimeParam(S, 13, 13, rtParamNames[13], SS_DOUBLE); /* registration for Mlim*/ ssRegDlgParamAsRunTimeParam(S, 14, 14, rtParamNames[14], SS_DOUBLE); /* registration for Mu1*/ ssRegDlgParamAsRunTimeParam(S, 15, 15, rtParamNames[15], SS_DOUBLE); /* registration for Mv*/ ssRegDlgParamAsRunTimeParam(S, 16, 16, rtParamNames[16], SS_DOUBLE); /* registration for Mx*/ ssRegDlgParamAsRunTimeParam(S, 17, 17, rtParamNames[17], SS_DOUBLE); /* registration for Su1*/ ssRegDlgParamAsRunTimeParam(S, 18, 18, rtParamNames[18], SS_DOUBLE); /* registration for SuJm*/ ssRegDlgParamAsRunTimeParam(S, 19, 19, rtParamNames[19], SS_DOUBLE); /* registration for Sx*/ ssRegDlgParamAsRunTimeParam(S, 20, 20, rtParamNames[20], SS_DOUBLE); /* registration for Wdu*/ ssRegDlgParamAsRunTimeParam(S, 21, 21, rtParamNames[21], SS_DOUBLE); /* registration for Wu*/ ssRegDlgParamAsRunTimeParam(S, 22, 22, rtParamNames[22], SS_DOUBLE); /* registration for Wy*/ ssRegDlgParamAsRunTimeParam(S, 23, 23, rtParamNames[23], SS_DOUBLE); /* registration for blocking_moves*/ ssRegDlgParamAsRunTimeParam(S, 24, 24, rtParamNames[24], SS_DOUBLE); /* registration for degrees*/ ssRegDlgParamAsRunTimeParam(S, 25, 25, rtParamNames[25], SS_DOUBLE); /* registration for enable_value*/ ssRegDlgParamAsRunTimeParam(S, 26, 26, rtParamNames[26], SS_DOUBLE); /* registration for isQP*/ ssRegDlgParamAsRunTimeParam(S, 27, 27, rtParamNames[27], SS_BOOLEAN); /* registration for lims_inport*/ ssRegDlgParamAsRunTimeParam(S, 28, 28, rtParamNames[28], SS_DOUBLE); /* registration for maxiter*/ ssRegDlgParamAsRunTimeParam(S, 29, 29, rtParamNames[29], SS_DOUBLE); /* registration for no_duwt*/ ssRegDlgParamAsRunTimeParam(S, 30, 30, rtParamNames[30], SS_DOUBLE); /* registration for no_rhoeps*/ ssRegDlgParamAsRunTimeParam(S, 31, 31, rtParamNames[31], SS_DOUBLE); /* registration for no_switch*/ ssRegDlgParamAsRunTimeParam(S, 32, 32, rtParamNames[32], SS_DOUBLE); /* registration for no_umax*/ ssRegDlgParamAsRunTimeParam(S, 33, 33, rtParamNames[33], SS_DOUBLE); /* registration for no_umin*/ ssRegDlgParamAsRunTimeParam(S, 34, 34, rtParamNames[34], SS_DOUBLE); /* registration for no_ymax*/ ssRegDlgParamAsRunTimeParam(S, 35, 35, rtParamNames[35], SS_DOUBLE); /* registration for no_ymin*/ ssRegDlgParamAsRunTimeParam(S, 36, 36, rtParamNames[36], SS_DOUBLE); /* registration for no_ywt*/ ssRegDlgParamAsRunTimeParam(S, 37, 37, rtParamNames[37], SS_DOUBLE); /* registration for nu*/ ssRegDlgParamAsRunTimeParam(S, 38, 38, rtParamNames[38], SS_DOUBLE); /* registration for nxQP*/ ssRegDlgParamAsRunTimeParam(S, 39, 39, rtParamNames[39], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 40, 40, rtParamNames[40], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 41, 41, rtParamNames[41], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 42, 42, rtParamNames[42], SS_DOUBLE); /* registration for return_cost*/ ssRegDlgParamAsRunTimeParam(S, 43, 43, rtParamNames[43], SS_DOUBLE); /* registration for return_sequence*/ ssRegDlgParamAsRunTimeParam(S, 44, 44, rtParamNames[44], SS_DOUBLE); /* registration for switch_inport*/ ssRegDlgParamAsRunTimeParam(S, 45, 45, rtParamNames[45], SS_DOUBLE); /* registration for uoff*/ ssRegDlgParamAsRunTimeParam(S, 46, 46, rtParamNames[46], SS_DOUBLE); /* registration for utarget*/ ssRegDlgParamAsRunTimeParam(S, 47, 47, rtParamNames[47], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 48, 48, rtParamNames[48], SS_DOUBLE); /* registration for z_degrees*/ ssRegDlgParamAsRunTimeParam(S, 49, 49, rtParamNames[49], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 3); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,3,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,3, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,3); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 2, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 3, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 4, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 5, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 6, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 7, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 8, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 9, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 10, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 11, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 12, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,3,13); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,3,5); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=5; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 13; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,3); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(3697607324U)); ssSetChecksum1(S,(3163451633U)); ssSetChecksum2(S,(3010755970U)); ssSetChecksum3(S,(753621111U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c3_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c3_mpclib(SimStruct *S) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)utMalloc(sizeof (SFc3_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc3_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c3_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c3_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c3_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c3_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c3_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c3_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c3_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c3_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c3_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c3_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c3_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c3_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c3_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c3_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c3_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/c3_mpclib.h ================================================ #ifndef __c3_mpclib_h__ #define __c3_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc3_mpclibInstanceStruct #define typedef_SFc3_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c3_sfEvent; boolean_T c3_isStable; boolean_T c3_doneDoubleBufferReInit; uint8_T c3_is_active_c3_mpclib; boolean_T c3_isQP; real_T c3_nu; real_T c3_ny; real_T c3_degrees; real_T c3_Hinv[16]; real_T c3_Kx[6]; real_T c3_Ku1[3]; real_T c3_Kut[60]; real_T c3_Kr[60]; real_T c3_Kv[63]; real_T c3_Mlim[6]; real_T c3_Mx[12]; real_T c3_Mu1[6]; real_T c3_Mv[126]; real_T c3_z_degrees[4]; real_T c3_utarget[20]; real_T c3_p; real_T c3_uoff; real_T c3_yoff; real_T c3_maxiter; real_T c3_nxQP; boolean_T c3_openloopflag; real_T c3_lims_inport; real_T c3_no_umin; real_T c3_no_umax; real_T c3_no_ymin; real_T c3_no_ymax; real_T c3_switch_inport; real_T c3_no_switch; real_T c3_enable_value; real_T c3_return_cost; real_T c3_H[16]; real_T c3_return_sequence; real_T c3_blocking_moves[20]; real_T c3_Linv[16]; real_T c3_Ac[24]; real_T c3_no_ywt; real_T c3_no_duwt; real_T c3_no_rhoeps; real_T c3_Wy; real_T c3_Wdu; real_T c3_Jm; real_T c3_SuJm; real_T c3_I2JmWuI2Jm; real_T c3_Su1; real_T c3_I1WuI2Jm; real_T c3_Sx; real_T c3_Hv; real_T c3_Wu; real_T c3_I1; } SFc3_mpclibInstanceStruct; #endif /*typedef_SFc3_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); extern void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/c4_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c4_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c4_b_p (20.0) #define c4_b_ny (1.0) #define c4_b_nv (1.0) #define c4_b_yoff (0.0) #define c4_b_voff (0.0) #define c4_b_no_md (1.0) #define c4_b_no_ref (0.0) #define c4_b_openloopflag (FALSE) /* Variable Declarations */ /* Variable Definitions */ static const char * c4_debug_family_names[16] = { "DataType", "nv", "ny", "p", "yoff", "voff", "no_md", "no_ref", "openloopflag", "nargin", "nargout", "ref", "md", "rseq", "vseq", "v" }; /* Function Declarations */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st); static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber); static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_info_helper(const mxArray **c4_info); static const mxArray *c4_emlrt_marshallOut(char * c4_u); static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u); static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[20]); static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[20]); static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[21]); static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[21]); static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier); static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static boolean_T c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static uint8_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier); static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { chartInstance->c4_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c4_is_active_c4_mpclib = 0U; } static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { real_T c4_d0; real_T c4_d1; real_T c4_d2; real_T c4_d3; real_T c4_d4; real_T c4_d5; real_T c4_d6; real_T c4_d7; sf_set_error_prefix_string( "Error evaluating data 'nv' in the parent workspace.\n"); sf_mex_import_named("nv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), &c4_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_nv = c4_d0; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c4_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_ny = c4_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c4_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_p = c4_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c4_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_yoff = c4_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'voff' in the parent workspace.\n"); sf_mex_import_named("voff", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c4_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_voff = c4_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_md' in the parent workspace.\n"); sf_mex_import_named("no_md", sf_mex_get_sfun_param(chartInstance->S, 0, 0), &c4_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_md = c4_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ref' in the parent workspace.\n"); sf_mex_import_named("no_ref", sf_mex_get_sfun_param(chartInstance->S, 1, 0), &c4_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_ref = c4_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 4, 0), &c4_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_openloopflag = (c4_d7 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { const mxArray *c4_st; const mxArray *c4_y = NULL; int32_T c4_i0; real_T c4_u[20]; const mxArray *c4_b_y = NULL; real_T c4_hoistedGlobal; real_T c4_b_u; const mxArray *c4_c_y = NULL; int32_T c4_i1; real_T c4_c_u[21]; const mxArray *c4_d_y = NULL; uint8_T c4_b_hoistedGlobal; uint8_T c4_d_u; const mxArray *c4_e_y = NULL; real_T *c4_v; real_T (*c4_vseq)[21]; real_T (*c4_rseq)[20]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[21])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 1); c4_st = NULL; c4_st = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_createcellarray(4), FALSE); for (c4_i0 = 0; c4_i0 < 20; c4_i0++) { c4_u[c4_i0] = (*c4_rseq)[c4_i0]; } c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 20), FALSE); sf_mex_setcell(c4_y, 0, c4_b_y); c4_hoistedGlobal = *c4_v; c4_b_u = c4_hoistedGlobal; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 1, c4_c_y); for (c4_i1 = 0; c4_i1 < 21; c4_i1++) { c4_c_u[c4_i1] = (*c4_vseq)[c4_i1]; } c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", c4_c_u, 0, 0U, 1U, 0U, 1, 21), FALSE); sf_mex_setcell(c4_y, 2, c4_d_y); c4_b_hoistedGlobal = chartInstance->c4_is_active_c4_mpclib; c4_d_u = c4_b_hoistedGlobal; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_d_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 3, c4_e_y); sf_mex_assign(&c4_st, c4_y, FALSE); return c4_st; } static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st) { const mxArray *c4_u; real_T c4_dv0[20]; int32_T c4_i2; real_T c4_dv1[21]; int32_T c4_i3; real_T *c4_v; real_T (*c4_rseq)[20]; real_T (*c4_vseq)[21]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[21])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c4_doneDoubleBufferReInit = TRUE; c4_u = sf_mex_dup(c4_st); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 0)), "rseq", c4_dv0); for (c4_i2 = 0; c4_i2 < 20; c4_i2++) { (*c4_rseq)[c4_i2] = c4_dv0[c4_i2]; } *c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 1)), "v"); c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 2)), "vseq", c4_dv1); for (c4_i3 = 0; c4_i3 < 21; c4_i3++) { (*c4_vseq)[c4_i3] = c4_dv1[c4_i3]; } chartInstance->c4_is_active_c4_mpclib = c4_i_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 3)), "is_active_c4_mpclib"); sf_mex_destroy(&c4_u); c4_update_debugger_state_c4_mpclib(chartInstance); sf_mex_destroy(&c4_st); } static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { int32_T c4_i4; int32_T c4_i5; real_T c4_hoistedGlobal; real_T c4_b_hoistedGlobal; real_T c4_ref; real_T c4_md; uint32_T c4_debug_family_var_map[16]; char_T c4_DataType[6]; real_T c4_c_nv; real_T c4_c_ny; real_T c4_c_p; real_T c4_c_yoff; real_T c4_c_voff; real_T c4_c_no_md; real_T c4_c_no_ref; boolean_T c4_c_openloopflag; real_T c4_nargin = 10.0; real_T c4_nargout = 3.0; real_T c4_rseq[20]; real_T c4_vseq[21]; real_T c4_v; int32_T c4_i6; static char_T c4_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c4_i7; int32_T c4_i8; real_T c4_u; const mxArray *c4_y = NULL; real_T c4_b_u; const mxArray *c4_b_y = NULL; real_T c4_c_u; const mxArray *c4_c_y = NULL; real_T c4_d_u; const mxArray *c4_d_y = NULL; real_T c4_e_u; const mxArray *c4_e_y = NULL; real_T c4_f_u; const mxArray *c4_f_y = NULL; real_T c4_g_u; const mxArray *c4_g_y = NULL; real_T c4_h_u; const mxArray *c4_h_y = NULL; real_T c4_i_u; const mxArray *c4_i_y = NULL; boolean_T c4_j_u; const mxArray *c4_j_y = NULL; const mxArray *c4_b_v = NULL; const mxArray *c4_b_vseq = NULL; const mxArray *c4_b_rseq = NULL; real_T c4_dv2[20]; int32_T c4_i9; real_T c4_dv3[21]; int32_T c4_i10; int32_T c4_i11; int32_T c4_i12; real_T *c4_b_ref; real_T *c4_b_md; real_T *c4_c_v; real_T (*c4_c_rseq)[20]; real_T (*c4_c_vseq)[21]; c4_c_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_b_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_b_ref = (real_T *)ssGetInputPortSignal(chartInstance->S, 0); c4_c_vseq = (real_T (*)[21])ssGetOutputPortSignal(chartInstance->S, 2); c4_c_rseq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 1U, chartInstance->c4_sfEvent); for (c4_i4 = 0; c4_i4 < 20; c4_i4++) { _SFD_DATA_RANGE_CHECK((*c4_c_rseq)[c4_i4], 0U); } for (c4_i5 = 0; c4_i5 < 21; c4_i5++) { _SFD_DATA_RANGE_CHECK((*c4_c_vseq)[c4_i5], 1U); } _SFD_DATA_RANGE_CHECK(*c4_b_ref, 2U); _SFD_DATA_RANGE_CHECK(*c4_b_md, 3U); _SFD_DATA_RANGE_CHECK(*c4_c_v, 4U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_nv, 5U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_ny, 6U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_p, 7U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_yoff, 8U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_voff, 9U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_md, 10U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_ref, 11U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c4_openloopflag, 12U); chartInstance->c4_sfEvent = CALL_EVENT; _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); c4_hoistedGlobal = *c4_b_ref; c4_b_hoistedGlobal = *c4_b_md; c4_ref = c4_hoistedGlobal; c4_md = c4_b_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 16U, 16U, c4_debug_family_names, c4_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c4_DataType, 0U, c4_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_nv, 1U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_ny, 2U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_p, 3U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_yoff, 4U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_voff, 5U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_md, 6U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_ref, 7U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_openloopflag, 8U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargin, 9U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargout, 10U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_ref, 11U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_md, 12U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_rseq, 13U, c4_c_sf_marshallOut, c4_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_vseq, 14U, c4_b_sf_marshallOut, c4_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_v, 15U, c4_sf_marshallOut, c4_sf_marshallIn); c4_c_openloopflag = c4_b_openloopflag; c4_c_no_ref = c4_b_no_ref; c4_c_no_md = c4_b_no_md; c4_c_voff = c4_b_voff; c4_c_yoff = c4_b_yoff; c4_c_p = c4_b_p; c4_c_ny = c4_b_ny; c4_c_nv = c4_b_nv; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 3); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 4); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 5); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 7); for (c4_i6 = 0; c4_i6 < 6; c4_i6++) { c4_DataType[c4_i6] = c4_cv0[c4_i6]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 8); for (c4_i7 = 0; c4_i7 < 20; c4_i7++) { c4_rseq[c4_i7] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 9); for (c4_i8 = 0; c4_i8 < 21; c4_i8++) { c4_vseq[c4_i8] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 10); c4_v = 0.0; _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 11); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 12); c4_u = c4_ref; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); c4_b_u = c4_md; c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); c4_c_u = c4_b_nv; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_c_u, 0, 0U, 0U, 0U, 0), FALSE); c4_d_u = c4_b_ny; c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", &c4_d_u, 0, 0U, 0U, 0U, 0), FALSE); c4_e_u = c4_b_p; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_e_u, 0, 0U, 0U, 0U, 0), FALSE); c4_f_u = c4_b_yoff; c4_f_y = NULL; sf_mex_assign(&c4_f_y, sf_mex_create("y", &c4_f_u, 0, 0U, 0U, 0U, 0), FALSE); c4_g_u = c4_b_voff; c4_g_y = NULL; sf_mex_assign(&c4_g_y, sf_mex_create("y", &c4_g_u, 0, 0U, 0U, 0U, 0), FALSE); c4_h_u = c4_b_no_md; c4_h_y = NULL; sf_mex_assign(&c4_h_y, sf_mex_create("y", &c4_h_u, 0, 0U, 0U, 0U, 0), FALSE); c4_i_u = c4_b_no_ref; c4_i_y = NULL; sf_mex_assign(&c4_i_y, sf_mex_create("y", &c4_i_u, 0, 0U, 0U, 0U, 0), FALSE); c4_j_u = c4_b_openloopflag; c4_j_y = NULL; sf_mex_assign(&c4_j_y, sf_mex_create("y", &c4_j_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_refmd_double_mex", 3U, 10U, 14, c4_y, 14, c4_b_y, 14, c4_c_y, 14, c4_d_y, 14, c4_e_y, 14, c4_f_y, 14, c4_g_y, 14, c4_h_y, 14, c4_i_y, 14, c4_j_y, &c4_b_rseq, &c4_b_vseq, &c4_b_v); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_rseq), "rseq", c4_dv2); for (c4_i9 = 0; c4_i9 < 20; c4_i9++) { c4_rseq[c4_i9] = c4_dv2[c4_i9]; } c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_vseq), "vseq", c4_dv3); for (c4_i10 = 0; c4_i10 < 21; c4_i10++) { c4_vseq[c4_i10] = c4_dv3[c4_i10]; } c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_v), "v"); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, -18); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c4_b_rseq); sf_mex_destroy(&c4_b_vseq); sf_mex_destroy(&c4_b_v); for (c4_i11 = 0; c4_i11 < 20; c4_i11++) { (*c4_c_rseq)[c4_i11] = c4_rseq[c4_i11]; } for (c4_i12 = 0; c4_i12 < 21; c4_i12++) { (*c4_c_vseq)[c4_i12] = c4_vseq[c4_i12]; } *c4_c_v = c4_v; _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber) { } static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; real_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(real_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_v; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_v = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); *(real_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i13; real_T c4_b_inData[21]; int32_T c4_i14; real_T c4_u[21]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i13 = 0; c4_i13 < 21; c4_i13++) { c4_b_inData[c4_i13] = (*(real_T (*)[21])c4_inData)[c4_i13]; } for (c4_i14 = 0; c4_i14 < 21; c4_i14++) { c4_u[c4_i14] = c4_b_inData[c4_i14]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 21), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_vseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[21]; int32_T c4_i15; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_vseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); for (c4_i15 = 0; c4_i15 < 21; c4_i15++) { (*(real_T (*)[21])c4_outData)[c4_i15] = c4_y[c4_i15]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i16; real_T c4_b_inData[20]; int32_T c4_i17; real_T c4_u[20]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i16 = 0; c4_i16 < 20; c4_i16++) { c4_b_inData[c4_i16] = (*(real_T (*)[20])c4_inData)[c4_i16]; } for (c4_i17 = 0; c4_i17 < 20; c4_i17++) { c4_u[c4_i17] = c4_b_inData[c4_i17]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 20), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_rseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[20]; int32_T c4_i18; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_rseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); for (c4_i18 = 0; c4_i18 < 20; c4_i18++) { (*(real_T (*)[20])c4_outData)[c4_i18] = c4_y[c4_i18]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; boolean_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(boolean_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i19; char_T c4_b_inData[6]; int32_T c4_i20; char_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i19 = 0; c4_i19 < 6; c4_i19++) { c4_b_inData[c4_i19] = (*(char_T (*)[6])c4_inData)[c4_i19]; } for (c4_i20 = 0; c4_i20 < 6; c4_i20++) { c4_u[c4_i20] = c4_b_inData[c4_i20]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c4_nameCaptureInfo = NULL; c4_nameCaptureInfo = NULL; sf_mex_assign(&c4_nameCaptureInfo, sf_mex_createstruct("structure", 2, 2, 1), FALSE); c4_info_helper(&c4_nameCaptureInfo); sf_mex_emlrtNameCapturePostProcessR2012a(&c4_nameCaptureInfo); return c4_nameCaptureInfo; } static void c4_info_helper(const mxArray **c4_info) { const mxArray *c4_rhs0 = NULL; const mxArray *c4_lhs0 = NULL; const mxArray *c4_rhs1 = NULL; const mxArray *c4_lhs1 = NULL; sf_mex_addfield(*c4_info, c4_emlrt_marshallOut(""), "context", "context", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("mtimes"), "name", "name", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m"), "resolved", "resolved", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363688678U), "fileTimeLo", "fileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 0); sf_mex_assign(&c4_rhs0, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs0, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs0), "rhs", "rhs", 0); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs0), "lhs", "lhs", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m!common_checks"), "context", "context", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "coder.internal.isBuiltInNumeric"), "name", "name", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[IXE]$matlabroot$/toolbox/shared/coder/coder/+coder/+internal/isBuiltInNumeric.m"), "resolved", "resolved", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363689356U), "fileTimeLo", "fileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 1); sf_mex_assign(&c4_rhs1, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs1, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs1), "rhs", "rhs", 1); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs1), "lhs", "lhs", 1); sf_mex_destroy(&c4_rhs0); sf_mex_destroy(&c4_lhs0); sf_mex_destroy(&c4_rhs1); sf_mex_destroy(&c4_lhs1); } static const mxArray *c4_emlrt_marshallOut(char * c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 15, 0U, 0U, 0U, 2, 1, strlen (c4_u)), FALSE); return c4_y; } static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 7, 0U, 0U, 0U, 0), FALSE); return c4_y; } static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[20]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); } static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[20]) { real_T c4_dv4[20]; int32_T c4_i21; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv4, 1, 0, 0U, 1, 0U, 1, 20); for (c4_i21 = 0; c4_i21 < 20; c4_i21++) { c4_y[c4_i21] = c4_dv4[c4_i21]; } sf_mex_destroy(&c4_u); } static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[21]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); } static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[21]) { real_T c4_dv5[21]; int32_T c4_i22; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv5, 1, 0, 0U, 1, 0U, 1, 21); for (c4_i22 = 0; c4_i22 < 21; c4_i22++) { c4_y[c4_i22] = c4_dv5[c4_i22]; } sf_mex_destroy(&c4_u); } static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier) { real_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); return c4_y; } static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { real_T c4_y; real_T c4_d8; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_d8, 1, 0, 0U, 0, 0U, 0); c4_y = c4_d8; sf_mex_destroy(&c4_u); return c4_y; } static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(int32_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { int32_T c4_y; int32_T c4_i23; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_i23, 1, 6, 0U, 0, 0U, 0); c4_y = c4_i23; sf_mex_destroy(&c4_u); return c4_y; } static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_b_sfEvent; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; int32_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_b_sfEvent = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_sfEvent), &c4_thisId); sf_mex_destroy(&c4_b_sfEvent); *(int32_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static boolean_T c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { boolean_T c4_y; boolean_T c4_b0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_b0, 1, 11, 0U, 0, 0U, 0); c4_y = c4_b0; sf_mex_destroy(&c4_u); return c4_y; } static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_openloopflag; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; boolean_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_openloopflag = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_openloopflag), &c4_thisId); sf_mex_destroy(&c4_c_openloopflag); *(boolean_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static uint8_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier) { uint8_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_j_emlrt_marshallIn(chartInstance, sf_mex_dup (c4_b_is_active_c4_mpclib), &c4_thisId); sf_mex_destroy(&c4_b_is_active_c4_mpclib); return c4_y; } static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { uint8_T c4_y; uint8_T c4_u0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_u0, 1, 3, 0U, 0, 0U, 0); c4_y = c4_u0; sf_mex_destroy(&c4_u); return c4_y; } static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c4_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3270233154U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(1563808691U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(718734131U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(371247434U); } mxArray *sf_c4_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("2HNWbd5KcYTrI0VNgAqzxF"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,2,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,8,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,3,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(20); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(21); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c4_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c4_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x4'type','srcId','name','auxInfo'{{M[1],M[21],T\"rseq\",},{M[1],M[19],T\"v\",},{M[1],M[20],T\"vseq\",},{M[8],M[0],T\"is_active_c4_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 4, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c4_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 4, 1, 1, 13, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,2,0,1,"rseq"); _SFD_SET_DATA_PROPS(1,2,0,1,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"ref"); _SFD_SET_DATA_PROPS(3,1,1,0,"md"); _SFD_SET_DATA_PROPS(4,2,0,1,"v"); _SFD_SET_DATA_PROPS(5,10,0,0,"nv"); _SFD_SET_DATA_PROPS(6,10,0,0,"ny"); _SFD_SET_DATA_PROPS(7,10,0,0,"p"); _SFD_SET_DATA_PROPS(8,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(9,10,0,0,"voff"); _SFD_SET_DATA_PROPS(10,10,0,0,"no_md"); _SFD_SET_DATA_PROPS(11,10,0,0,"no_ref"); _SFD_SET_DATA_PROPS(12,10,0,0,"openloopflag"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,856); _SFD_CV_INIT_EML_IF(0,1,0,194,225,703,855); _SFD_CV_INIT_EML_IF(0,1,1,447,467,577,702); { unsigned int dimVector[1]; dimVector[0]= 20; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_c_sf_marshallOut,(MexInFcnForType) c4_c_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 21; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_b_sf_marshallOut,(MexInFcnForType) c4_b_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(4,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(12,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_e_sf_marshallIn); { real_T *c4_ref; real_T *c4_md; real_T *c4_v; real_T (*c4_rseq)[20]; real_T (*c4_vseq)[21]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_ref = (real_T *)ssGetInputPortSignal(chartInstance->S, 0); c4_vseq = (real_T (*)[21])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[20])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SET_DATA_VALUE_PTR(0U, *c4_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c4_vseq); _SFD_SET_DATA_VALUE_PTR(2U, c4_ref); _SFD_SET_DATA_VALUE_PTR(3U, c4_md); _SFD_SET_DATA_VALUE_PTR(4U, c4_v); _SFD_SET_DATA_VALUE_PTR(5U, &chartInstance->c4_nv); _SFD_SET_DATA_VALUE_PTR(6U, &chartInstance->c4_ny); _SFD_SET_DATA_VALUE_PTR(7U, &chartInstance->c4_p); _SFD_SET_DATA_VALUE_PTR(8U, &chartInstance->c4_yoff); _SFD_SET_DATA_VALUE_PTR(9U, &chartInstance->c4_voff); _SFD_SET_DATA_VALUE_PTR(10U, &chartInstance->c4_no_md); _SFD_SET_DATA_VALUE_PTR(11U, &chartInstance->c4_no_ref); _SFD_SET_DATA_VALUE_PTR(12U, &chartInstance->c4_openloopflag); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "3RFiiaQWqqM0bZLXITcoK"; } static void sf_opaque_initialize_c4_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); initialize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c4_mpclib(void *chartInstanceVar) { enable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c4_mpclib(void *chartInstanceVar) { disable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c4_mpclib(void *chartInstanceVar) { sf_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c4_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c4_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c4_mpclib(S); } static void sf_opaque_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c4_mpclib(S, st); } static void sf_opaque_terminate_c4_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c4_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c4_mpclib(SimStruct *S) { /* Actual parameters from chart: no_md no_ref nv ny openloopflag p voff yoff */ const char_T *rtParamNames[] = { "no_md", "no_ref", "nv", "ny", "openloopflag", "p", "voff", "yoff" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for no_md*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for no_ref*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for nv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for voff*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 4); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,4,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,4, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,4); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,4,2); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,4,3); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=3; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 2; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,4); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(3664384646U)); ssSetChecksum1(S,(3453141569U)); ssSetChecksum2(S,(3009631007U)); ssSetChecksum3(S,(1767285725U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c4_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c4_mpclib(SimStruct *S) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)utMalloc(sizeof (SFc4_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc4_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c4_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c4_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c4_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c4_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c4_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c4_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c4_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c4_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c4_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c4_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c4_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c4_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c4_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c4_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c4_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/c4_mpclib.h ================================================ #ifndef __c4_mpclib_h__ #define __c4_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc4_mpclibInstanceStruct #define typedef_SFc4_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c4_sfEvent; boolean_T c4_isStable; boolean_T c4_doneDoubleBufferReInit; uint8_T c4_is_active_c4_mpclib; real_T c4_nv; real_T c4_ny; real_T c4_p; real_T c4_yoff; real_T c4_voff; real_T c4_no_md; real_T c4_no_ref; boolean_T c4_openloopflag; } SFc4_mpclibInstanceStruct; #endif /*typedef_SFc4_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); extern void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/mpclib_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpclib_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/mpclib_sfun.c ================================================ /* Include files */ #include "mpclib_sfun.h" #include "mpclib_sfun_debug_macros.h" #include "c3_mpclib.h" #include "c4_mpclib.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpclibMachineNumber_; /* Function Declarations */ /* Function Definitions */ void mpclib_initializer(void) { } void mpclib_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpclib_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (chartFileNumber==3) { c3_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } if (chartFileNumber==4) { c4_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } return 0; } unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>2 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"library")) { char machineName[100]; mxGetString(prhs[2], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (!strcmp(machineName,"mpclib")) { if (nrhs==3) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3549040148U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(67502094U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(728751800U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(456768330U); } else if (nrhs==4) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[3]); switch (chartFileNumber) { case 3: { extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); sf_c3_mpclib_get_check_sum(plhs); break; } case 4: { extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); sf_c4_mpclib_get_check_sum(plhs); break; } default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else { return 0; } } else { return 0; } } else { return 0; } } else { return 0; } return 1; #else return 0; #endif } unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(aiChksum, "uZDKFWLB82ra0oNDUcAsCG") == 0) { extern mxArray *sf_c3_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c3_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } case 4: { if (strcmp(aiChksum, "2HNWbd5KcYTrI0VNgAqzxF") == 0) { extern mxArray *sf_c4_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c4_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c3_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } case 4: { extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c4_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "T7oeNP5jU5Ide0wJqxRvND") == 0) { extern mxArray *sf_c3_mpclib_third_party_uses_info(void); plhs[0] = sf_c3_mpclib_third_party_uses_info(); break; } } case 4: { if (strcmp(tpChksum, "3RFiiaQWqqM0bZLXITcoK") == 0) { extern mxArray *sf_c4_mpclib_third_party_uses_info(void); plhs[0] = sf_c4_mpclib_third_party_uses_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "T7oeNP5jU5Ide0wJqxRvND") == 0) { extern mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c3_mpclib_updateBuildInfo_args_info(); break; } } case 4: { if (strcmp(tpChksum, "3RFiiaQWqqM0bZLXITcoK") == 0) { extern mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c4_mpclib_updateBuildInfo_args_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpclib_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpclibMachineNumber_ = sf_debug_initialize_machine(debugInstance,"mpclib", "sfun",1,2,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance,_mpclibMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance,_mpclibMachineNumber_,0); } void mpclib_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpclib", "mpc_doubleint_for_speedctrl"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/mpclib_sfun.h ================================================ #ifndef __mpclib_sfun_h__ #define __mpclib_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpclibMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpclib_initializer(void); extern void mpclib_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpclib_optimization_info(void); extern void unload_mpclib_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/mpclib_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpclib TARGET = sfun CHART_SRCS = c3_mpclib.c c4_mpclib.c MACHINE_SRC = mpclib_sfun.c MACHINE_REG = MAKEFILE = mpclib_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpclib_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- $(MACHINE)_$(TARGET).lib : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) -lib /OUT:$(MACHINE)_$(TARGET).lib @$(OBJLIST_FILE) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Created Stateflow library $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/mpclib_sfun.mol ================================================ mpclib_sfun.obj c3_mpclib.obj c4_mpclib.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/mpclib_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpclibMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_doubleint_for_speedctrl/mpclib/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/mpc_miso_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpc_miso_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/mpc_miso_sfun.c ================================================ /* Include files */ #include "mpc_miso_sfun.h" #include "mpc_miso_sfun_debug_macros.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpc_misoMachineNumber_; real_T _sfTime_; /* Function Declarations */ /* Function Definitions */ void mpc_miso_initializer(void) { } void mpc_miso_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpc_miso_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { return 0; } unsigned int sf_mpc_miso_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>1 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"machine")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(342216079U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2248950689U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3110232936U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2173514424U); } else if (!strcmp(commandName,"exportedFcn")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0U); } else if (!strcmp(commandName,"makefile")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3266390878U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(1925791385U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2063469511U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2521551538U); } else if (nrhs==3 && !strcmp(commandName,"chart")) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[2]); switch (chartFileNumber) { default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else if (!strcmp(commandName,"target")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3031367619U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(4001028638U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3978939492U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(838979348U); } else { return 0; } } else { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2574898159U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3992086488U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2209760471U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(221268175U); } return 1; #else return 0; #endif } unsigned int sf_mpc_miso_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_miso_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_miso_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpc_miso_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpc_miso_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpc_misoMachineNumber_ = sf_debug_initialize_machine(debugInstance,"mpc_miso", "sfun",0,0,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance,_mpc_misoMachineNumber_,0, 0); sf_debug_set_machine_data_thresholds(debugInstance,_mpc_misoMachineNumber_,0); } void mpc_miso_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpc_miso_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpc_miso", "mpc_miso"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpc_miso_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/mpc_miso_sfun.h ================================================ #ifndef __mpc_miso_sfun_h__ #define __mpc_miso_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpc_misoMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpc_miso_initializer(void); extern void mpc_miso_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpc_miso_optimization_info(void); extern void unload_mpc_miso_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/mpc_miso_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpc_miso TARGET = sfun CHART_SRCS = MACHINE_SRC = mpc_miso_sfun.c MACHINE_REG = mpc_miso_sfun_registry.c MAKEFILE = mpc_miso_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpc_miso_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = "E:\2019-˼ʻģԤ\3\chapter3 \slprj\_sfprj\mpc_miso\mpclib\sfun\src\mpclib_sfun.lib" BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- MEX_FILE_NAME_WO_EXT = $(MACHINE)_$(TARGET) MEX_FILE_NAME = $(MEX_FILE_NAME_WO_EXT).mexw64 MEX_FILE_CSF = all : $(MEX_FILE_NAME) $(MEX_FILE_CSF) TMWLIB = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmx.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmex.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmat.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libfixedpoint.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libut.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwmathutil.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libemlrt.lib" "C:\Program Files\MATLAB\R2013b\lib\win64\libippmwipt.lib" $(MEX_FILE_NAME) : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) $(LDFLAGS) /OUT:$(MEX_FILE_NAME) /map:"$(MEX_FILE_NAME_WO_EXT).map"\ $(USER_LIBS) $(SFCLIB) $(AUX_LNK_OBJS)\ $(TMWLIB) $(LINK_MACHINE_LIBS) $(DSP_LIBS) $(BLAS_LIBS) $(THIRD_PARTY_LIBS)\ @$(OBJLIST_FILE) mt -outputresource:"$(MEX_FILE_NAME);2" -manifest "$(MEX_FILE_NAME).manifest" @echo ### Created $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/mpc_miso_sfun.mexw64.manifest ================================================ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/mpc_miso_sfun.mol ================================================ mpc_miso_sfun.obj mpc_miso_sfun_registry.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/mpc_miso_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpc_misoMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpc_misoMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/mpc_miso_sfun_registry.c ================================================ #include "mpc_miso_sfun.h" #include "sfcdebug.h" struct SfDebugInstanceStruct; struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct = NULL; #define PROCESS_MEX_SFUNCTION_CMD_LINE_CALL unsigned int sf_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_miso_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); if (sf_mpc_miso_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mpclib_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; return 0; } unsigned int sf_process_autoinheritance_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_miso_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_miso") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_miso_autoinheritance_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_autoinheritance_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_third_party_uses_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_miso_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_miso") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_miso_third_party_uses_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_third_party_uses_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_updateBuildInfo_args_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_miso_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_miso") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_miso_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_eml_resolved_functions_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_miso_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 3) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_miso") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpc_miso_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpclib_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } return 0; } unsigned int sf_mex_unlock_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_mex_unlock")) return 0; while (mexIsLocked()) { mexUnlock(); } return(1); } extern unsigned int sf_debug_api(struct SfDebugInstanceStruct* debugInstance, int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); static unsigned int sf_debug_api_wrapper( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { return sf_debug_api(sfGlobalDebugInstanceStruct, nlhs, plhs, nrhs, prhs); } static unsigned int ProcessMexSfunctionCmdLineCall(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[]) { if (sf_debug_api_wrapper(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mex_unlock_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_autoinheritance_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_third_party_uses_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_updateBuildInfo_args_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_eml_resolved_functions_info_call(nlhs,plhs,nrhs,prhs)) return 1; mexErrMsgTxt("Unsuccessful command."); return 0; } static unsigned int sfGlobalMdlStartCallCounts = 0; unsigned int sf_machine_global_initializer_called(void) { return(sfGlobalMdlStartCallCounts > 0); } extern unsigned int sf_mpc_miso_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); extern unsigned int sf_mpclib_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); unsigned int sf_machine_global_method_dispatcher(SimStruct *simstructPtr, const char *machineName, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (!strcmp(machineName,"mpc_miso")) { return(sf_mpc_miso_method_dispatcher(simstructPtr,chartFileNumber,specsCksum, method,data)); } if (!strcmp(machineName,"mpclib")) { return(sf_mpclib_method_dispatcher(simstructPtr,chartFileNumber,specsCksum, method,data)); } return 0; } extern void mpc_miso_terminator(void); extern void mpclib_terminator(void); void sf_machine_global_terminator(void) { sfGlobalMdlStartCallCounts--; if (sfGlobalMdlStartCallCounts == 0) { mpc_miso_terminator(); mpclib_terminator(); sf_debug_terminate(sfGlobalDebugInstanceStruct); sfGlobalDebugInstanceStruct = NULL; } return; } extern void mpc_miso_initializer(void); extern void mpclib_initializer(void); extern void mpc_miso_register_exported_symbols(SimStruct* S); extern void mpclib_register_exported_symbols(SimStruct* S); extern void mpc_miso_debug_initialize(struct SfDebugInstanceStruct*); extern void mpclib_debug_initialize(struct SfDebugInstanceStruct*); void sf_register_machine_exported_symbols(SimStruct* S) { mpc_miso_register_exported_symbols(S); mpclib_register_exported_symbols(S); } bool callCustomFcn(char initFlag) { return false; } void sf_machine_global_initializer(SimStruct* S) { bool simModeIsRTWGen = sim_mode_is_rtw_gen(S); sfGlobalMdlStartCallCounts++; if (sfGlobalMdlStartCallCounts == 1) { if (simModeIsRTWGen) { sf_register_machine_exported_symbols(S); } sfGlobalDebugInstanceStruct = sf_debug_create_debug_instance_struct(); if (!simModeIsRTWGen) { mpc_miso_debug_initialize(sfGlobalDebugInstanceStruct); } mpc_miso_initializer(); if (!simModeIsRTWGen) { mpclib_debug_initialize(sfGlobalDebugInstanceStruct); } mpclib_initializer(); } return; } #define PROCESS_MEX_SFUNCTION_EVERY_CALL unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]); #include "simulink.c" /* MEX-file interface mechanism */ static void sf_machine_load_sfunction_ptrs(SimStruct *S) { ssSetmdlInitializeSampleTimes(S,__mdlInitializeSampleTimes); ssSetmdlInitializeConditions(S,__mdlInitializeConditions); ssSetmdlOutputs(S,__mdlOutputs); ssSetmdlTerminate(S,__mdlTerminate); ssSetmdlRTW(S,__mdlRTW); ssSetmdlSetWorkWidths(S,__mdlSetWorkWidths); #if defined(MDL_HASSIMULATIONCONTEXTIO) ssSetmdlSimulationContextIO(S,__mdlSimulationContextIO); #endif #if defined(MDL_START) ssSetmdlStart(S,__mdlStart); #endif #if defined(RTW_GENERATED_ENABLE) ssSetRTWGeneratedEnable(S,__mdlEnable); #endif #if defined(RTW_GENERATED_DISABLE) ssSetRTWGeneratedDisable(S,__mdlDisable); #endif #if defined(MDL_ENABLE) ssSetmdlEnable(S,__mdlEnable); #endif #if defined(MDL_DISABLE) ssSetmdlDisable(S,__mdlDisable); #endif #if defined(MDL_SIM_STATUS_CHANGE) ssSetmdlSimStatusChange(S,__mdlSimStatusChange); #endif #if defined(MDL_EXT_MODE_EXEC) ssSetmdlExtModeExec(S,__mdlExtModeExec); #endif #if defined(MDL_UPDATE) ssSetmdlUpdate(S,__mdlUpdate); #endif #if defined(MDL_PROCESS_PARAMETERS) ssSetmdlProcessParameters(S,__mdlProcessParameters); #endif #if defined(MDL_ZERO_CROSSINGS) ssSetmdlZeroCrossings(S,__mdlZeroCrossings); #endif #if defined(MDL_DERIVATIVES) ssSetmdlDerivatives(S,__mdlDerivatives); #endif } unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]) { if (nlhs < 0) { SimStruct *S = (SimStruct *)plhs[_LHS_SS]; int_T flag = (int_T)(*(real_T*)mxGetPr(prhs[_RHS_FLAG])); if (flag == SS_CALL_MDL_SET_WORK_WIDTHS) { sf_machine_load_sfunction_ptrs(S); } } return 0; } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/_self/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/c3_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c3_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c3_b_p (10.0) #define c3_b_nu (1.0) #define c3_b_isQP (TRUE) #define c3_b_ny (1.0) #define c3_b_degrees (4.0) #define c3_b_uoff (0.0) #define c3_b_yoff (0.0) #define c3_b_maxiter (120.0) #define c3_b_nxQP (6.0) #define c3_b_openloopflag (FALSE) #define c3_b_lims_inport (0.0) #define c3_b_no_umin (1.0) #define c3_b_no_umax (1.0) #define c3_b_no_ymin (1.0) #define c3_b_no_ymax (1.0) #define c3_b_switch_inport (0.0) #define c3_b_no_switch (1.0) #define c3_b_enable_value (0.0) #define c3_b_return_cost (0.0) #define c3_b_return_sequence (0.0) #define c3_b_no_ywt (1.0) #define c3_b_no_duwt (1.0) #define c3_b_no_rhoeps (1.0) #define c3_b_Wy (0.0) #define c3_b_Wdu (0.0) #define c3_b_Jm (0.0) #define c3_b_SuJm (0.0) #define c3_b_I2JmWuI2Jm (0.0) #define c3_b_Su1 (0.0) #define c3_b_I1WuI2Jm (0.0) #define c3_b_Sx (0.0) #define c3_b_Hv (0.0) #define c3_b_Wu (0.0) #define c3_b_I1 (0.0) /* Variable Declarations */ /* Variable Definitions */ static const char * c3_debug_family_names[71] = { "DataType", "isQP", "nu", "ny", "degrees", "Hinv", "Kx", "Ku1", "Kut", "Kr", "Kv", "Mlim", "Mx", "Mu1", "Mv", "z_degrees", "utarget", "p", "uoff", "yoff", "maxiter", "nxQP", "openloopflag", "lims_inport", "no_umin", "no_umax", "no_ymin", "no_ymax", "switch_inport", "no_switch", "enable_value", "return_cost", "H", "return_sequence", "blocking_moves", "Linv", "Ac", "no_ywt", "no_duwt", "no_rhoeps", "Wy", "Wdu", "Jm", "SuJm", "I2JmWuI2Jm", "Su1", "I1WuI2Jm", "Sx", "Hv", "Wu", "I1", "nargin", "nargout", "rseq", "vseq", "x", "old_u", "iA", "umin", "umax", "ymin", "ymax", "switch_in", "ywt", "duwt", "rhoeps", "u", "cost", "useq", "status", "iAout" }; /* Function Declarations */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st); static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber); static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static real_T c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier); static real_T c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[10]); static void c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[10]); static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[16]); static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[16]); static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static int32_T c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static boolean_T c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[16]); static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]); static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]); static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[30]); static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[66]); static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[12]); static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[72]); static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[264]); static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[4]); static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[10]); static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[48]); static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static uint8_T c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier); static uint8_T c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { chartInstance->c3_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c3_is_active_c3_mpclib = 0U; } static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_d0; real_T c3_d1; real_T c3_d2; real_T c3_d3; real_T c3_dv0[16]; int32_T c3_i0; real_T c3_dv1[18]; int32_T c3_i1; real_T c3_dv2[3]; int32_T c3_i2; real_T c3_dv3[30]; int32_T c3_i3; real_T c3_dv4[30]; int32_T c3_i4; real_T c3_dv5[66]; int32_T c3_i5; real_T c3_dv6[12]; int32_T c3_i6; real_T c3_dv7[72]; int32_T c3_i7; real_T c3_dv8[12]; int32_T c3_i8; real_T c3_dv9[264]; int32_T c3_i9; real_T c3_dv10[4]; int32_T c3_i10; real_T c3_dv11[10]; int32_T c3_i11; real_T c3_d4; real_T c3_d5; real_T c3_d6; real_T c3_d7; real_T c3_d8; real_T c3_d9; real_T c3_d10; real_T c3_d11; real_T c3_d12; real_T c3_d13; real_T c3_d14; real_T c3_d15; real_T c3_d16; real_T c3_d17; real_T c3_d18; real_T c3_dv12[16]; int32_T c3_i12; real_T c3_d19; real_T c3_dv13[10]; int32_T c3_i13; real_T c3_dv14[16]; int32_T c3_i14; real_T c3_dv15[48]; int32_T c3_i15; real_T c3_d20; real_T c3_d21; real_T c3_d22; real_T c3_d23; real_T c3_d24; real_T c3_d25; real_T c3_d26; real_T c3_d27; real_T c3_d28; real_T c3_d29; real_T c3_d30; real_T c3_d31; real_T c3_d32; real_T c3_d33; sf_set_error_prefix_string( "Error evaluating data 'isQP' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 27, 0), &c3_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_isQP = (c3_d0 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nu' in the parent workspace.\n"); sf_mex_import_named("nu", sf_mex_get_sfun_param(chartInstance->S, 38, 0), &c3_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nu = c3_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 40, 0), &c3_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_ny = c3_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'degrees' in the parent workspace.\n"); sf_mex_import_named("degrees", sf_mex_get_sfun_param(chartInstance->S, 25, 0), &c3_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_degrees = c3_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hinv' in the parent workspace.\n"); sf_mex_import_named("Hinv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), c3_dv0, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i0 = 0; c3_i0 < 16; c3_i0++) { chartInstance->c3_Hinv[c3_i0] = c3_dv0[c3_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kx' in the parent workspace.\n"); sf_mex_import_named("Kx", sf_mex_get_sfun_param(chartInstance->S, 12, 0), c3_dv1, 0, 0, 0U, 1, 0U, 2, 6, 3); for (c3_i1 = 0; c3_i1 < 18; c3_i1++) { chartInstance->c3_Kx[c3_i1] = c3_dv1[c3_i1]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ku1' in the parent workspace.\n"); sf_mex_import_named("Ku1", sf_mex_get_sfun_param(chartInstance->S, 9, 0), c3_dv2, 0, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i2 = 0; c3_i2 < 3; c3_i2++) { chartInstance->c3_Ku1[c3_i2] = c3_dv2[c3_i2]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kut' in the parent workspace.\n"); sf_mex_import_named("Kut", sf_mex_get_sfun_param(chartInstance->S, 10, 0), c3_dv3, 0, 0, 0U, 1, 0U, 2, 10, 3); for (c3_i3 = 0; c3_i3 < 30; c3_i3++) { chartInstance->c3_Kut[c3_i3] = c3_dv3[c3_i3]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kr' in the parent workspace.\n"); sf_mex_import_named("Kr", sf_mex_get_sfun_param(chartInstance->S, 8, 0), c3_dv4, 0, 0, 0U, 1, 0U, 2, 10, 3); for (c3_i4 = 0; c3_i4 < 30; c3_i4++) { chartInstance->c3_Kr[c3_i4] = c3_dv4[c3_i4]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kv' in the parent workspace.\n"); sf_mex_import_named("Kv", sf_mex_get_sfun_param(chartInstance->S, 11, 0), c3_dv5, 0, 0, 0U, 1, 0U, 2, 22, 3); for (c3_i5 = 0; c3_i5 < 66; c3_i5++) { chartInstance->c3_Kv[c3_i5] = c3_dv5[c3_i5]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mlim' in the parent workspace.\n"); sf_mex_import_named("Mlim", sf_mex_get_sfun_param(chartInstance->S, 14, 0), c3_dv6, 0, 0, 0U, 1, 0U, 1, 12); for (c3_i6 = 0; c3_i6 < 12; c3_i6++) { chartInstance->c3_Mlim[c3_i6] = c3_dv6[c3_i6]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mx' in the parent workspace.\n"); sf_mex_import_named("Mx", sf_mex_get_sfun_param(chartInstance->S, 17, 0), c3_dv7, 0, 0, 0U, 1, 0U, 2, 12, 6); for (c3_i7 = 0; c3_i7 < 72; c3_i7++) { chartInstance->c3_Mx[c3_i7] = c3_dv7[c3_i7]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mu1' in the parent workspace.\n"); sf_mex_import_named("Mu1", sf_mex_get_sfun_param(chartInstance->S, 15, 0), c3_dv8, 0, 0, 0U, 1, 0U, 1, 12); for (c3_i8 = 0; c3_i8 < 12; c3_i8++) { chartInstance->c3_Mu1[c3_i8] = c3_dv8[c3_i8]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mv' in the parent workspace.\n"); sf_mex_import_named("Mv", sf_mex_get_sfun_param(chartInstance->S, 16, 0), c3_dv9, 0, 0, 0U, 1, 0U, 2, 12, 22); for (c3_i9 = 0; c3_i9 < 264; c3_i9++) { chartInstance->c3_Mv[c3_i9] = c3_dv9[c3_i9]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'z_degrees' in the parent workspace.\n"); sf_mex_import_named("z_degrees", sf_mex_get_sfun_param(chartInstance->S, 49, 0), c3_dv10, 0, 0, 0U, 1, 0U, 1, 4); for (c3_i10 = 0; c3_i10 < 4; c3_i10++) { chartInstance->c3_z_degrees[c3_i10] = c3_dv10[c3_i10]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'utarget' in the parent workspace.\n"); sf_mex_import_named("utarget", sf_mex_get_sfun_param(chartInstance->S, 47, 0), c3_dv11, 0, 0, 0U, 1, 0U, 1, 10); for (c3_i11 = 0; c3_i11 < 10; c3_i11++) { chartInstance->c3_utarget[c3_i11] = c3_dv11[c3_i11]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 42, 0), &c3_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_p = c3_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'uoff' in the parent workspace.\n"); sf_mex_import_named("uoff", sf_mex_get_sfun_param(chartInstance->S, 46, 0), &c3_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_uoff = c3_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 48, 0), &c3_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_yoff = c3_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'maxiter' in the parent workspace.\n"); sf_mex_import_named("maxiter", sf_mex_get_sfun_param(chartInstance->S, 29, 0), &c3_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_maxiter = c3_d7; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nxQP' in the parent workspace.\n"); sf_mex_import_named("nxQP", sf_mex_get_sfun_param(chartInstance->S, 39, 0), &c3_d8, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nxQP = c3_d8; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 41, 0), &c3_d9, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_openloopflag = (c3_d9 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'lims_inport' in the parent workspace.\n"); sf_mex_import_named("lims_inport", sf_mex_get_sfun_param(chartInstance->S, 28, 0), &c3_d10, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_lims_inport = c3_d10; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umin' in the parent workspace.\n"); sf_mex_import_named("no_umin", sf_mex_get_sfun_param(chartInstance->S, 34, 0), &c3_d11, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umin = c3_d11; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umax' in the parent workspace.\n"); sf_mex_import_named("no_umax", sf_mex_get_sfun_param(chartInstance->S, 33, 0), &c3_d12, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umax = c3_d12; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymin' in the parent workspace.\n"); sf_mex_import_named("no_ymin", sf_mex_get_sfun_param(chartInstance->S, 36, 0), &c3_d13, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymin = c3_d13; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymax' in the parent workspace.\n"); sf_mex_import_named("no_ymax", sf_mex_get_sfun_param(chartInstance->S, 35, 0), &c3_d14, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymax = c3_d14; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'switch_inport' in the parent workspace.\n"); sf_mex_import_named("switch_inport", sf_mex_get_sfun_param(chartInstance->S, 45, 0), &c3_d15, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_switch_inport = c3_d15; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_switch' in the parent workspace.\n"); sf_mex_import_named("no_switch", sf_mex_get_sfun_param(chartInstance->S, 32, 0), &c3_d16, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_switch = c3_d16; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'enable_value' in the parent workspace.\n"); sf_mex_import_named("enable_value", sf_mex_get_sfun_param(chartInstance->S, 26, 0), &c3_d17, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_enable_value = c3_d17; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_cost' in the parent workspace.\n"); sf_mex_import_named("return_cost", sf_mex_get_sfun_param(chartInstance->S, 43, 0), &c3_d18, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_cost = c3_d18; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'H' in the parent workspace.\n"); sf_mex_import_named("H", sf_mex_get_sfun_param(chartInstance->S, 1, 0), c3_dv12, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i12 = 0; c3_i12 < 16; c3_i12++) { chartInstance->c3_H[c3_i12] = c3_dv12[c3_i12]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_sequence' in the parent workspace.\n"); sf_mex_import_named("return_sequence", sf_mex_get_sfun_param(chartInstance->S, 44, 0), &c3_d19, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_sequence = c3_d19; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'blocking_moves' in the parent workspace.\n"); sf_mex_import_named("blocking_moves", sf_mex_get_sfun_param(chartInstance->S, 24, 0), c3_dv13, 0, 0, 0U, 1, 0U, 2, 1, 10); for (c3_i13 = 0; c3_i13 < 10; c3_i13++) { chartInstance->c3_blocking_moves[c3_i13] = c3_dv13[c3_i13]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Linv' in the parent workspace.\n"); sf_mex_import_named("Linv", sf_mex_get_sfun_param(chartInstance->S, 13, 0), c3_dv14, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i14 = 0; c3_i14 < 16; c3_i14++) { chartInstance->c3_Linv[c3_i14] = c3_dv14[c3_i14]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ac' in the parent workspace.\n"); sf_mex_import_named("Ac", sf_mex_get_sfun_param(chartInstance->S, 0, 0), c3_dv15, 0, 0, 0U, 1, 0U, 2, 12, 4); for (c3_i15 = 0; c3_i15 < 48; c3_i15++) { chartInstance->c3_Ac[c3_i15] = c3_dv15[c3_i15]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ywt' in the parent workspace.\n"); sf_mex_import_named("no_ywt", sf_mex_get_sfun_param(chartInstance->S, 37, 0), &c3_d20, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ywt = c3_d20; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_duwt' in the parent workspace.\n"); sf_mex_import_named("no_duwt", sf_mex_get_sfun_param(chartInstance->S, 30, 0), &c3_d21, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_duwt = c3_d21; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_rhoeps' in the parent workspace.\n"); sf_mex_import_named("no_rhoeps", sf_mex_get_sfun_param(chartInstance->S, 31, 0), &c3_d22, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_rhoeps = c3_d22; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wy' in the parent workspace.\n"); sf_mex_import_named("Wy", sf_mex_get_sfun_param(chartInstance->S, 23, 0), &c3_d23, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wy = c3_d23; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wdu' in the parent workspace.\n"); sf_mex_import_named("Wdu", sf_mex_get_sfun_param(chartInstance->S, 21, 0), &c3_d24, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wdu = c3_d24; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Jm' in the parent workspace.\n"); sf_mex_import_named("Jm", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c3_d25, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Jm = c3_d25; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'SuJm' in the parent workspace.\n"); sf_mex_import_named("SuJm", sf_mex_get_sfun_param(chartInstance->S, 19, 0), &c3_d26, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_SuJm = c3_d26; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I2JmWuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I2JmWuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c3_d27, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I2JmWuI2Jm = c3_d27; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Su1' in the parent workspace.\n"); sf_mex_import_named("Su1", sf_mex_get_sfun_param(chartInstance->S, 18, 0), &c3_d28, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Su1 = c3_d28; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1WuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I1WuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c3_d29, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1WuI2Jm = c3_d29; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Sx' in the parent workspace.\n"); sf_mex_import_named("Sx", sf_mex_get_sfun_param(chartInstance->S, 20, 0), &c3_d30, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Sx = c3_d30; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hv' in the parent workspace.\n"); sf_mex_import_named("Hv", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c3_d31, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Hv = c3_d31; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wu' in the parent workspace.\n"); sf_mex_import_named("Wu", sf_mex_get_sfun_param(chartInstance->S, 22, 0), &c3_d32, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wu = c3_d32; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1' in the parent workspace.\n"); sf_mex_import_named("I1", sf_mex_get_sfun_param(chartInstance->S, 4, 0), &c3_d33, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1 = c3_d33; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { const mxArray *c3_st; const mxArray *c3_y = NULL; real_T c3_hoistedGlobal; real_T c3_u; const mxArray *c3_b_y = NULL; int32_T c3_i16; boolean_T c3_b_u[16]; const mxArray *c3_c_y = NULL; real_T c3_b_hoistedGlobal; real_T c3_c_u; const mxArray *c3_d_y = NULL; real_T c3_c_hoistedGlobal; real_T c3_d_u; const mxArray *c3_e_y = NULL; int32_T c3_i17; real_T c3_e_u[10]; const mxArray *c3_f_y = NULL; uint8_T c3_d_hoistedGlobal; uint8_T c3_f_u; const mxArray *c3_g_y = NULL; real_T *c3_cost; real_T *c3_status; real_T *c3_g_u; real_T (*c3_useq)[10]; boolean_T (*c3_iAout)[16]; c3_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_g_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_st = NULL; c3_st = NULL; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_createcellarray(6), FALSE); c3_hoistedGlobal = *c3_cost; c3_u = c3_hoistedGlobal; c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 0, c3_b_y); for (c3_i16 = 0; c3_i16 < 16; c3_i16++) { c3_b_u[c3_i16] = (*c3_iAout)[c3_i16]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_b_u, 11, 0U, 1U, 0U, 1, 16), FALSE); sf_mex_setcell(c3_y, 1, c3_c_y); c3_b_hoistedGlobal = *c3_status; c3_c_u = c3_b_hoistedGlobal; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_c_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 2, c3_d_y); c3_c_hoistedGlobal = *c3_g_u; c3_d_u = c3_c_hoistedGlobal; c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", &c3_d_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 3, c3_e_y); for (c3_i17 = 0; c3_i17 < 10; c3_i17++) { c3_e_u[c3_i17] = (*c3_useq)[c3_i17]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_setcell(c3_y, 4, c3_f_y); c3_d_hoistedGlobal = chartInstance->c3_is_active_c3_mpclib; c3_f_u = c3_d_hoistedGlobal; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_f_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 5, c3_g_y); sf_mex_assign(&c3_st, c3_y, FALSE); return c3_st; } static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st) { const mxArray *c3_u; boolean_T c3_bv0[16]; int32_T c3_i18; real_T c3_dv16[10]; int32_T c3_i19; real_T *c3_cost; real_T *c3_status; real_T *c3_b_u; boolean_T (*c3_iAout)[16]; real_T (*c3_useq)[10]; c3_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_b_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c3_doneDoubleBufferReInit = TRUE; c3_u = sf_mex_dup(c3_st); *c3_cost = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 0)), "cost"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 1)), "iAout", c3_bv0); for (c3_i18 = 0; c3_i18 < 16; c3_i18++) { (*c3_iAout)[c3_i18] = c3_bv0[c3_i18]; } *c3_status = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 2)), "status"); *c3_b_u = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 3)), "u"); c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 4)), "useq", c3_dv16); for (c3_i19 = 0; c3_i19 < 10; c3_i19++) { (*c3_useq)[c3_i19] = c3_dv16[c3_i19]; } chartInstance->c3_is_active_c3_mpclib = c3_t_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 5)), "is_active_c3_mpclib"); sf_mex_destroy(&c3_u); c3_update_debugger_state_c3_mpclib(chartInstance); sf_mex_destroy(&c3_st); } static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { int32_T c3_i20; int32_T c3_i21; int32_T c3_i22; int32_T c3_i23; int32_T c3_i24; int32_T c3_i25; int32_T c3_i26; int32_T c3_i27; int32_T c3_i28; int32_T c3_i29; int32_T c3_i30; int32_T c3_i31; int32_T c3_i32; int32_T c3_i33; int32_T c3_i34; int32_T c3_i35; int32_T c3_i36; int32_T c3_i37; int32_T c3_i38; int32_T c3_i39; int32_T c3_i40; int32_T c3_i41; real_T *c3_old_u; real_T *c3_umin; real_T *c3_umax; real_T *c3_ymin; real_T *c3_ymax; real_T *c3_switch_in; real_T *c3_ywt; real_T *c3_duwt; real_T *c3_rhoeps; real_T *c3_u; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[16]; real_T (*c3_useq)[10]; boolean_T (*c3_iA)[16]; real_T (*c3_x)[6]; real_T (*c3_vseq)[22]; real_T (*c3_rseq)[10]; c3_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[16])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[22])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 0U, chartInstance->c3_sfEvent); for (c3_i20 = 0; c3_i20 < 10; c3_i20++) { _SFD_DATA_RANGE_CHECK((*c3_rseq)[c3_i20], 0U); } for (c3_i21 = 0; c3_i21 < 22; c3_i21++) { _SFD_DATA_RANGE_CHECK((*c3_vseq)[c3_i21], 1U); } for (c3_i22 = 0; c3_i22 < 6; c3_i22++) { _SFD_DATA_RANGE_CHECK((*c3_x)[c3_i22], 2U); } _SFD_DATA_RANGE_CHECK(*c3_old_u, 3U); for (c3_i23 = 0; c3_i23 < 16; c3_i23++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iA)[c3_i23], 4U); } _SFD_DATA_RANGE_CHECK(*c3_umin, 5U); _SFD_DATA_RANGE_CHECK(*c3_umax, 6U); _SFD_DATA_RANGE_CHECK(*c3_ymin, 7U); _SFD_DATA_RANGE_CHECK(*c3_ymax, 8U); _SFD_DATA_RANGE_CHECK(*c3_switch_in, 9U); _SFD_DATA_RANGE_CHECK(*c3_ywt, 10U); _SFD_DATA_RANGE_CHECK(*c3_duwt, 11U); _SFD_DATA_RANGE_CHECK(*c3_rhoeps, 12U); _SFD_DATA_RANGE_CHECK(*c3_u, 13U); _SFD_DATA_RANGE_CHECK(*c3_cost, 14U); for (c3_i24 = 0; c3_i24 < 10; c3_i24++) { _SFD_DATA_RANGE_CHECK((*c3_useq)[c3_i24], 15U); } _SFD_DATA_RANGE_CHECK(*c3_status, 16U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_isQP, 17U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nu, 18U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_ny, 19U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_degrees, 20U); for (c3_i25 = 0; c3_i25 < 16; c3_i25++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hinv[c3_i25], 21U); } for (c3_i26 = 0; c3_i26 < 18; c3_i26++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kx[c3_i26], 22U); } for (c3_i27 = 0; c3_i27 < 3; c3_i27++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ku1[c3_i27], 23U); } for (c3_i28 = 0; c3_i28 < 30; c3_i28++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kut[c3_i28], 24U); } for (c3_i29 = 0; c3_i29 < 30; c3_i29++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kr[c3_i29], 25U); } for (c3_i30 = 0; c3_i30 < 66; c3_i30++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kv[c3_i30], 26U); } for (c3_i31 = 0; c3_i31 < 12; c3_i31++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mlim[c3_i31], 27U); } for (c3_i32 = 0; c3_i32 < 72; c3_i32++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mx[c3_i32], 28U); } for (c3_i33 = 0; c3_i33 < 12; c3_i33++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mu1[c3_i33], 29U); } for (c3_i34 = 0; c3_i34 < 264; c3_i34++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mv[c3_i34], 30U); } for (c3_i35 = 0; c3_i35 < 4; c3_i35++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_z_degrees[c3_i35], 31U); } for (c3_i36 = 0; c3_i36 < 10; c3_i36++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_utarget[c3_i36], 32U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_p, 33U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_uoff, 34U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_yoff, 35U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_maxiter, 36U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nxQP, 37U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_openloopflag, 38U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_lims_inport, 39U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umin, 40U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umax, 41U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymin, 42U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymax, 43U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_switch_inport, 44U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_switch, 45U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_enable_value, 46U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_cost, 47U); for (c3_i37 = 0; c3_i37 < 16; c3_i37++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_H[c3_i37], 48U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_sequence, 49U); for (c3_i38 = 0; c3_i38 < 10; c3_i38++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_blocking_moves[c3_i38], 50U); } for (c3_i39 = 0; c3_i39 < 16; c3_i39++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Linv[c3_i39], 51U); } for (c3_i40 = 0; c3_i40 < 48; c3_i40++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ac[c3_i40], 52U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ywt, 53U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_duwt, 54U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_rhoeps, 55U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wy, 56U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wdu, 57U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Jm, 58U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_SuJm, 59U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I2JmWuI2Jm, 60U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Su1, 61U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1WuI2Jm, 62U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Sx, 63U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hv, 64U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wu, 65U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1, 66U); for (c3_i41 = 0; c3_i41 < 16; c3_i41++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iAout)[c3_i41], 67U); } chartInstance->c3_sfEvent = CALL_EVENT; c3_chartstep_c3_mpclib(chartInstance); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_hoistedGlobal; real_T c3_b_hoistedGlobal; real_T c3_c_hoistedGlobal; real_T c3_d_hoistedGlobal; real_T c3_e_hoistedGlobal; real_T c3_f_hoistedGlobal; real_T c3_g_hoistedGlobal; real_T c3_h_hoistedGlobal; real_T c3_i_hoistedGlobal; int32_T c3_i42; real_T c3_rseq[10]; int32_T c3_i43; real_T c3_vseq[22]; int32_T c3_i44; real_T c3_x[6]; real_T c3_old_u; int32_T c3_i45; boolean_T c3_iA[16]; real_T c3_umin; real_T c3_umax; real_T c3_ymin; real_T c3_ymax; real_T c3_switch_in; real_T c3_ywt; real_T c3_duwt; real_T c3_rhoeps; uint32_T c3_debug_family_var_map[71]; char_T c3_DataType[6]; boolean_T c3_c_isQP; real_T c3_c_nu; real_T c3_c_ny; real_T c3_c_degrees; real_T c3_c_Hinv[16]; real_T c3_c_Kx[18]; real_T c3_c_Ku1[3]; real_T c3_c_Kut[30]; real_T c3_c_Kr[30]; real_T c3_c_Kv[66]; real_T c3_c_Mlim[12]; real_T c3_c_Mx[72]; real_T c3_c_Mu1[12]; real_T c3_c_Mv[264]; real_T c3_c_z_degrees[4]; real_T c3_c_utarget[10]; real_T c3_c_p; real_T c3_c_uoff; real_T c3_c_yoff; real_T c3_c_maxiter; real_T c3_c_nxQP; boolean_T c3_c_openloopflag; real_T c3_c_lims_inport; real_T c3_c_no_umin; real_T c3_c_no_umax; real_T c3_c_no_ymin; real_T c3_c_no_ymax; real_T c3_c_switch_inport; real_T c3_c_no_switch; real_T c3_c_enable_value; real_T c3_c_return_cost; real_T c3_c_H[16]; real_T c3_c_return_sequence; real_T c3_c_blocking_moves[10]; real_T c3_c_Linv[16]; real_T c3_c_Ac[48]; real_T c3_c_no_ywt; real_T c3_c_no_duwt; real_T c3_c_no_rhoeps; real_T c3_c_Wy; real_T c3_c_Wdu; real_T c3_c_Jm; real_T c3_c_SuJm; real_T c3_c_I2JmWuI2Jm; real_T c3_c_Su1; real_T c3_c_I1WuI2Jm; real_T c3_c_Sx; real_T c3_c_Hv; real_T c3_c_Wu; real_T c3_c_I1; real_T c3_nargin = 63.0; real_T c3_nargout = 5.0; real_T c3_u; real_T c3_cost; real_T c3_useq[10]; real_T c3_status; boolean_T c3_iAout[16]; int32_T c3_i46; static real_T c3_d_Ac[48] = { -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -0.0, -0.0, 1.0, 0.0, 0.0, -0.0, -1.0, -1.0, -0.0, 1.0, 1.0, -0.0, -1.0, -0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, -0.0, -0.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i47; static real_T c3_d_Linv[16] = { 0.51974439223902236, -4.306353246390362, 1.1284975779708617, 0.0, 0.0, 5.2205360009677628, -6.048029706156492, 0.0, 0.0, 0.0, 5.8880509063979112, 0.0, 0.0, 0.0, 0.0, 0.003162277660168379 }; int32_T c3_i48; static real_T c3_d_blocking_moves[10] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i49; static real_T c3_d_H[16] = { 3.7018632844769384, 3.0536195842429539, 2.4270914829834132, 0.0, 3.0536195842429539, 2.5555835300633993, 2.039765449119149, 0.0, 2.4270914829834132, 2.039765449119149, 1.65885635386588, 0.0, 0.0, 0.0, 0.0, 100000.0 }; int32_T c3_i50; int32_T c3_i51; int32_T c3_i52; int32_T c3_i53; static real_T c3_d_Mu1[12] = { -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i54; int32_T c3_i55; static real_T c3_d_Mlim[12] = { 1.0, 1.0, 1.0, -0.0, -0.0, -0.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 }; int32_T c3_i56; static real_T c3_d_Kv[66] = { 0.26736837970709137, 0.0, 0.32229457105274556, 0.0, 0.37728034262429605, 0.0, 0.42571191063003594, 0.0, 0.46085233835973016, 0.0, 0.47588717697705607, 0.0, 0.46391962602376158, 0.0, 0.41790933514016426, 0.0, 0.33054926033068066, 0.0, 0.19407493146633339, 0.0, 0.0, 0.0, 0.19263752904770431, 0.0, 0.23528800930402588, 0.0, 0.28311151815964147, 0.0, 0.32942205374752287, 0.0, 0.36725766459511905, 0.0, 0.38945616102650948, 0.0, 0.3886836890601677, 0.0, 0.35740904536088708, 0.0, 0.28781701814528815, 0.0, 0.17165414553769179, 0.0, 0.0, 0.0, 0.1344874068232263, 0.0, 0.16426328963169748, 0.0, 0.20063163502061809, 0.0, 0.24078212702205604, 0.0, 0.27772081866083542, 0.0, 0.30410963345995157, 0.0, 0.31232698162563166, 0.0, 0.29447789660530493, 0.0, 0.24234583062185322, 0.0, 0.14727849030025625, 0.0, 0.0, 0.0 }; int32_T c3_i57; static real_T c3_d_Kr[30] = { -0.019285691839586231, -0.073942779826314489, -0.158531631414913, -0.26699470212862925, -0.39294515083296416, -0.52994048260316207, -0.67173226244228346, -0.81248470328568922, -0.94695679742928063, -1.0706445509194631, -0.0, -0.019285691839586231, -0.073942779826314489, -0.158531631414913, -0.26699470212862925, -0.39294515083296416, -0.52994048260316207, -0.67173226244228346, -0.81248470328568922, -0.94695679742928063, -0.0, -0.0, -0.019285691839586231, -0.073942779826314489, -0.158531631414913, -0.26699470212862925, -0.39294515083296416, -0.52994048260316207, -0.67173226244228346, -0.81248470328568922 }; int32_T c3_i58; int32_T c3_i59; static real_T c3_d_Ku1[3] = { 3.6918632844769381, 3.0536195842429539, 2.4270914829834132 }; int32_T c3_i60; static real_T c3_d_Kx[18] = { 3.1781195864761429, 1.2515954682453385, 1.2076108804103902, 3.1934696343190287, 0.82921546575328442, 34.492606244312782, 2.5122844733027141, 0.81919461755986145, 0.87007736781826428, 2.4776463305060781, 0.397945982950211, 28.415057120144649, 1.9029522509058372, 0.4987659213901236, 0.6074332946021106, 1.8377425348665839, 0.11708234027836006, 22.483001745862371 }; int32_T c3_i61; static real_T c3_d_Hinv[16] = { 20.088319299446823, -29.306659030558706, 6.6446511868391793, 0.0, -29.306659030558706, 63.83265946395187, -35.611106793256226, 0.0, 6.6446511868391793, -35.611106793256226, 34.669143476333261, 0.0, 0.0, 0.0, 0.0, 9.9999999999999974E-6 }; int32_T c3_i62; static char_T c3_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c3_i63; int32_T c3_i64; int32_T c3_i65; real_T c3_b_u[10]; const mxArray *c3_y = NULL; int32_T c3_i66; real_T c3_c_u[22]; const mxArray *c3_b_y = NULL; real_T c3_d_u; const mxArray *c3_c_y = NULL; real_T c3_e_u; const mxArray *c3_d_y = NULL; real_T c3_f_u; const mxArray *c3_e_y = NULL; real_T c3_g_u; const mxArray *c3_f_y = NULL; real_T c3_h_u; const mxArray *c3_g_y = NULL; int32_T c3_i67; real_T c3_i_u[6]; const mxArray *c3_h_y = NULL; real_T c3_j_u; const mxArray *c3_i_y = NULL; int32_T c3_i68; boolean_T c3_k_u[16]; const mxArray *c3_j_y = NULL; boolean_T c3_l_u; const mxArray *c3_k_y = NULL; real_T c3_m_u; const mxArray *c3_l_y = NULL; real_T c3_n_u; const mxArray *c3_m_y = NULL; real_T c3_o_u; const mxArray *c3_n_y = NULL; int32_T c3_i69; real_T c3_p_u[16]; const mxArray *c3_o_y = NULL; int32_T c3_i70; real_T c3_q_u[18]; const mxArray *c3_p_y = NULL; int32_T c3_i71; real_T c3_r_u[3]; const mxArray *c3_q_y = NULL; int32_T c3_i72; real_T c3_s_u[30]; const mxArray *c3_r_y = NULL; int32_T c3_i73; real_T c3_t_u[30]; const mxArray *c3_s_y = NULL; int32_T c3_i74; real_T c3_u_u[66]; const mxArray *c3_t_y = NULL; int32_T c3_i75; real_T c3_v_u[12]; const mxArray *c3_u_y = NULL; int32_T c3_i76; real_T c3_w_u[72]; const mxArray *c3_v_y = NULL; int32_T c3_i77; real_T c3_x_u[12]; const mxArray *c3_w_y = NULL; int32_T c3_i78; real_T c3_y_u[264]; const mxArray *c3_x_y = NULL; int32_T c3_i79; real_T c3_ab_u[4]; const mxArray *c3_y_y = NULL; int32_T c3_i80; real_T c3_bb_u[10]; const mxArray *c3_ab_y = NULL; real_T c3_cb_u; const mxArray *c3_bb_y = NULL; real_T c3_db_u; const mxArray *c3_cb_y = NULL; real_T c3_eb_u; const mxArray *c3_db_y = NULL; real_T c3_fb_u; const mxArray *c3_eb_y = NULL; real_T c3_gb_u; const mxArray *c3_fb_y = NULL; boolean_T c3_hb_u; const mxArray *c3_gb_y = NULL; real_T c3_ib_u; const mxArray *c3_hb_y = NULL; real_T c3_jb_u; const mxArray *c3_ib_y = NULL; real_T c3_kb_u; const mxArray *c3_jb_y = NULL; real_T c3_lb_u; const mxArray *c3_kb_y = NULL; real_T c3_mb_u; const mxArray *c3_lb_y = NULL; real_T c3_nb_u; const mxArray *c3_mb_y = NULL; real_T c3_ob_u; const mxArray *c3_nb_y = NULL; real_T c3_pb_u; const mxArray *c3_ob_y = NULL; real_T c3_qb_u; const mxArray *c3_pb_y = NULL; int32_T c3_i81; real_T c3_rb_u[16]; const mxArray *c3_qb_y = NULL; real_T c3_sb_u; const mxArray *c3_rb_y = NULL; int32_T c3_i82; real_T c3_tb_u[10]; const mxArray *c3_sb_y = NULL; int32_T c3_i83; real_T c3_ub_u[16]; const mxArray *c3_tb_y = NULL; int32_T c3_i84; real_T c3_vb_u[48]; const mxArray *c3_ub_y = NULL; real_T c3_wb_u; const mxArray *c3_vb_y = NULL; real_T c3_xb_u; const mxArray *c3_wb_y = NULL; real_T c3_yb_u; const mxArray *c3_xb_y = NULL; real_T c3_ac_u; const mxArray *c3_yb_y = NULL; real_T c3_bc_u; const mxArray *c3_ac_y = NULL; real_T c3_cc_u; const mxArray *c3_bc_y = NULL; real_T c3_dc_u; const mxArray *c3_cc_y = NULL; real_T c3_ec_u; const mxArray *c3_dc_y = NULL; real_T c3_fc_u; const mxArray *c3_ec_y = NULL; real_T c3_gc_u; const mxArray *c3_fc_y = NULL; real_T c3_hc_u; const mxArray *c3_gc_y = NULL; real_T c3_ic_u; const mxArray *c3_hc_y = NULL; real_T c3_jc_u; const mxArray *c3_ic_y = NULL; real_T c3_kc_u; const mxArray *c3_jc_y = NULL; real_T c3_lc_u; const mxArray *c3_kc_y = NULL; real_T c3_mc_u; const mxArray *c3_lc_y = NULL; real_T c3_nc_u; const mxArray *c3_mc_y = NULL; const mxArray *c3_b_iAout = NULL; const mxArray *c3_b_status = NULL; const mxArray *c3_b_useq = NULL; const mxArray *c3_b_cost = NULL; const mxArray *c3_oc_u = NULL; real_T c3_dv17[10]; int32_T c3_i85; boolean_T c3_bv1[16]; int32_T c3_i86; int32_T c3_i87; int32_T c3_i88; real_T *c3_b_old_u; real_T *c3_b_umin; real_T *c3_b_umax; real_T *c3_b_ymin; real_T *c3_b_ymax; real_T *c3_b_switch_in; real_T *c3_b_ywt; real_T *c3_b_duwt; real_T *c3_b_rhoeps; real_T *c3_pc_u; real_T *c3_c_cost; real_T *c3_c_status; real_T (*c3_c_useq)[10]; boolean_T (*c3_c_iAout)[16]; boolean_T (*c3_b_iA)[16]; real_T (*c3_b_x)[6]; real_T (*c3_b_vseq)[22]; real_T (*c3_b_rseq)[10]; c3_c_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_c_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_c_useq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 3); c3_c_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_pc_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_b_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_b_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_b_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_b_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_b_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_b_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_b_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_b_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_b_iA = (boolean_T (*)[16])ssGetInputPortSignal(chartInstance->S, 4); c3_b_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_b_x = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 2); c3_b_vseq = (real_T (*)[22])ssGetInputPortSignal(chartInstance->S, 1); c3_b_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); c3_hoistedGlobal = *c3_b_old_u; c3_b_hoistedGlobal = *c3_b_umin; c3_c_hoistedGlobal = *c3_b_umax; c3_d_hoistedGlobal = *c3_b_ymin; c3_e_hoistedGlobal = *c3_b_ymax; c3_f_hoistedGlobal = *c3_b_switch_in; c3_g_hoistedGlobal = *c3_b_ywt; c3_h_hoistedGlobal = *c3_b_duwt; c3_i_hoistedGlobal = *c3_b_rhoeps; for (c3_i42 = 0; c3_i42 < 10; c3_i42++) { c3_rseq[c3_i42] = (*c3_b_rseq)[c3_i42]; } for (c3_i43 = 0; c3_i43 < 22; c3_i43++) { c3_vseq[c3_i43] = (*c3_b_vseq)[c3_i43]; } for (c3_i44 = 0; c3_i44 < 6; c3_i44++) { c3_x[c3_i44] = (*c3_b_x)[c3_i44]; } c3_old_u = c3_hoistedGlobal; for (c3_i45 = 0; c3_i45 < 16; c3_i45++) { c3_iA[c3_i45] = (*c3_b_iA)[c3_i45]; } c3_umin = c3_b_hoistedGlobal; c3_umax = c3_c_hoistedGlobal; c3_ymin = c3_d_hoistedGlobal; c3_ymax = c3_e_hoistedGlobal; c3_switch_in = c3_f_hoistedGlobal; c3_ywt = c3_g_hoistedGlobal; c3_duwt = c3_h_hoistedGlobal; c3_rhoeps = c3_i_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 71U, 71U, c3_debug_family_names, c3_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c3_DataType, 0U, c3_r_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_isQP, 1U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nu, 2U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_ny, 3U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_degrees, 4U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Hinv, 5U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kx, 6U, c3_q_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ku1, 7U, c3_p_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kut, 8U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kr, 9U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kv, 10U, c3_n_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mlim, 11U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mx, 12U, c3_m_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mu1, 13U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mv, 14U, c3_k_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_z_degrees, 15U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_utarget, 16U, c3_c_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_p, 17U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_uoff, 18U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_yoff, 19U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_maxiter, 20U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nxQP, 21U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_openloopflag, 22U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_lims_inport, 23U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umin, 24U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umax, 25U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymin, 26U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymax, 27U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_switch_inport, 28U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_switch, 29U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_enable_value, 30U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_cost, 31U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_H, 32U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_sequence, 33U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_blocking_moves, 34U, c3_h_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Linv, 35U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ac, 36U, c3_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ywt, 37U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_duwt, 38U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_rhoeps, 39U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wy, 40U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wdu, 41U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Jm, 42U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_SuJm, 43U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I2JmWuI2Jm, 44U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Su1, 45U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1WuI2Jm, 46U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Sx, 47U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Hv, 48U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wu, 49U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1, 50U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargin, 51U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargout, 52U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c3_rseq, 53U, c3_c_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_vseq, 54U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_x, 55U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_old_u, 56U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_iA, 57U, c3_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_umin, 58U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_umax, 59U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ymin, 60U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ymax, 61U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_switch_in, 62U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ywt, 63U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_duwt, 64U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_rhoeps, 65U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_u, 66U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_cost, 67U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_useq, 68U, c3_c_sf_marshallOut, c3_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_status, 69U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_iAout, 70U, c3_sf_marshallOut, c3_sf_marshallIn); c3_c_I1 = c3_b_I1; c3_c_Wu = c3_b_Wu; c3_c_Hv = c3_b_Hv; c3_c_Sx = c3_b_Sx; c3_c_I1WuI2Jm = c3_b_I1WuI2Jm; c3_c_Su1 = c3_b_Su1; c3_c_I2JmWuI2Jm = c3_b_I2JmWuI2Jm; c3_c_SuJm = c3_b_SuJm; c3_c_Jm = c3_b_Jm; c3_c_Wdu = c3_b_Wdu; c3_c_Wy = c3_b_Wy; c3_c_no_rhoeps = c3_b_no_rhoeps; c3_c_no_duwt = c3_b_no_duwt; c3_c_no_ywt = c3_b_no_ywt; for (c3_i46 = 0; c3_i46 < 48; c3_i46++) { c3_c_Ac[c3_i46] = c3_d_Ac[c3_i46]; } for (c3_i47 = 0; c3_i47 < 16; c3_i47++) { c3_c_Linv[c3_i47] = c3_d_Linv[c3_i47]; } for (c3_i48 = 0; c3_i48 < 10; c3_i48++) { c3_c_blocking_moves[c3_i48] = c3_d_blocking_moves[c3_i48]; } c3_c_return_sequence = c3_b_return_sequence; for (c3_i49 = 0; c3_i49 < 16; c3_i49++) { c3_c_H[c3_i49] = c3_d_H[c3_i49]; } c3_c_return_cost = c3_b_return_cost; c3_c_enable_value = c3_b_enable_value; c3_c_no_switch = c3_b_no_switch; c3_c_switch_inport = c3_b_switch_inport; c3_c_no_ymax = c3_b_no_ymax; c3_c_no_ymin = c3_b_no_ymin; c3_c_no_umax = c3_b_no_umax; c3_c_no_umin = c3_b_no_umin; c3_c_lims_inport = c3_b_lims_inport; c3_c_openloopflag = c3_b_openloopflag; c3_c_nxQP = c3_b_nxQP; c3_c_maxiter = c3_b_maxiter; c3_c_yoff = c3_b_yoff; c3_c_uoff = c3_b_uoff; c3_c_p = c3_b_p; for (c3_i50 = 0; c3_i50 < 10; c3_i50++) { c3_c_utarget[c3_i50] = 0.0; } for (c3_i51 = 0; c3_i51 < 4; c3_i51++) { c3_c_z_degrees[c3_i51] = 0.0; } for (c3_i52 = 0; c3_i52 < 264; c3_i52++) { c3_c_Mv[c3_i52] = 0.0; } for (c3_i53 = 0; c3_i53 < 12; c3_i53++) { c3_c_Mu1[c3_i53] = c3_d_Mu1[c3_i53]; } for (c3_i54 = 0; c3_i54 < 72; c3_i54++) { c3_c_Mx[c3_i54] = 0.0; } for (c3_i55 = 0; c3_i55 < 12; c3_i55++) { c3_c_Mlim[c3_i55] = c3_d_Mlim[c3_i55]; } for (c3_i56 = 0; c3_i56 < 66; c3_i56++) { c3_c_Kv[c3_i56] = c3_d_Kv[c3_i56]; } for (c3_i57 = 0; c3_i57 < 30; c3_i57++) { c3_c_Kr[c3_i57] = c3_d_Kr[c3_i57]; } for (c3_i58 = 0; c3_i58 < 30; c3_i58++) { c3_c_Kut[c3_i58] = 0.0; } for (c3_i59 = 0; c3_i59 < 3; c3_i59++) { c3_c_Ku1[c3_i59] = c3_d_Ku1[c3_i59]; } for (c3_i60 = 0; c3_i60 < 18; c3_i60++) { c3_c_Kx[c3_i60] = c3_d_Kx[c3_i60]; } for (c3_i61 = 0; c3_i61 < 16; c3_i61++) { c3_c_Hinv[c3_i61] = c3_d_Hinv[c3_i61]; } c3_c_degrees = c3_b_degrees; c3_c_ny = c3_b_ny; c3_c_nu = c3_b_nu; c3_c_isQP = c3_b_isQP; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 8); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 9); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 10); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 12); for (c3_i62 = 0; c3_i62 < 6; c3_i62++) { c3_DataType[c3_i62] = c3_cv0[c3_i62]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 13); c3_u = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 14); c3_cost = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 15); for (c3_i63 = 0; c3_i63 < 10; c3_i63++) { c3_useq[c3_i63] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 16); c3_status = 1.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 17); for (c3_i64 = 0; c3_i64 < 16; c3_i64++) { c3_iAout[c3_i64] = FALSE; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 18); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 19); for (c3_i65 = 0; c3_i65 < 10; c3_i65++) { c3_b_u[c3_i65] = c3_rseq[c3_i65]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_b_u, 0, 0U, 1U, 0U, 1, 10), FALSE); for (c3_i66 = 0; c3_i66 < 22; c3_i66++) { c3_c_u[c3_i66] = c3_vseq[c3_i66]; } c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", c3_c_u, 0, 0U, 1U, 0U, 1, 22), FALSE); c3_d_u = c3_umin; c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", &c3_d_u, 0, 0U, 0U, 0U, 0), FALSE); c3_e_u = c3_umax; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_e_u, 0, 0U, 0U, 0U, 0), FALSE); c3_f_u = c3_ymin; c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", &c3_f_u, 0, 0U, 0U, 0U, 0), FALSE); c3_g_u = c3_ymax; c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", &c3_g_u, 0, 0U, 0U, 0U, 0), FALSE); c3_h_u = c3_switch_in; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_h_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i67 = 0; c3_i67 < 6; c3_i67++) { c3_i_u[c3_i67] = c3_x[c3_i67]; } c3_h_y = NULL; sf_mex_assign(&c3_h_y, sf_mex_create("y", c3_i_u, 0, 0U, 1U, 0U, 1, 6), FALSE); c3_j_u = c3_old_u; c3_i_y = NULL; sf_mex_assign(&c3_i_y, sf_mex_create("y", &c3_j_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i68 = 0; c3_i68 < 16; c3_i68++) { c3_k_u[c3_i68] = c3_iA[c3_i68]; } c3_j_y = NULL; sf_mex_assign(&c3_j_y, sf_mex_create("y", c3_k_u, 11, 0U, 1U, 0U, 1, 16), FALSE); c3_l_u = c3_b_isQP; c3_k_y = NULL; sf_mex_assign(&c3_k_y, sf_mex_create("y", &c3_l_u, 11, 0U, 0U, 0U, 0), FALSE); c3_m_u = c3_b_nu; c3_l_y = NULL; sf_mex_assign(&c3_l_y, sf_mex_create("y", &c3_m_u, 0, 0U, 0U, 0U, 0), FALSE); c3_n_u = c3_b_ny; c3_m_y = NULL; sf_mex_assign(&c3_m_y, sf_mex_create("y", &c3_n_u, 0, 0U, 0U, 0U, 0), FALSE); c3_o_u = c3_b_degrees; c3_n_y = NULL; sf_mex_assign(&c3_n_y, sf_mex_create("y", &c3_o_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i69 = 0; c3_i69 < 16; c3_i69++) { c3_p_u[c3_i69] = c3_d_Hinv[c3_i69]; } c3_o_y = NULL; sf_mex_assign(&c3_o_y, sf_mex_create("y", c3_p_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); for (c3_i70 = 0; c3_i70 < 18; c3_i70++) { c3_q_u[c3_i70] = c3_d_Kx[c3_i70]; } c3_p_y = NULL; sf_mex_assign(&c3_p_y, sf_mex_create("y", c3_q_u, 0, 0U, 1U, 0U, 2, 6, 3), FALSE); for (c3_i71 = 0; c3_i71 < 3; c3_i71++) { c3_r_u[c3_i71] = c3_d_Ku1[c3_i71]; } c3_q_y = NULL; sf_mex_assign(&c3_q_y, sf_mex_create("y", c3_r_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); for (c3_i72 = 0; c3_i72 < 30; c3_i72++) { c3_s_u[c3_i72] = 0.0; } c3_r_y = NULL; sf_mex_assign(&c3_r_y, sf_mex_create("y", c3_s_u, 0, 0U, 1U, 0U, 2, 10, 3), FALSE); for (c3_i73 = 0; c3_i73 < 30; c3_i73++) { c3_t_u[c3_i73] = c3_d_Kr[c3_i73]; } c3_s_y = NULL; sf_mex_assign(&c3_s_y, sf_mex_create("y", c3_t_u, 0, 0U, 1U, 0U, 2, 10, 3), FALSE); for (c3_i74 = 0; c3_i74 < 66; c3_i74++) { c3_u_u[c3_i74] = c3_d_Kv[c3_i74]; } c3_t_y = NULL; sf_mex_assign(&c3_t_y, sf_mex_create("y", c3_u_u, 0, 0U, 1U, 0U, 2, 22, 3), FALSE); for (c3_i75 = 0; c3_i75 < 12; c3_i75++) { c3_v_u[c3_i75] = c3_d_Mlim[c3_i75]; } c3_u_y = NULL; sf_mex_assign(&c3_u_y, sf_mex_create("y", c3_v_u, 0, 0U, 1U, 0U, 1, 12), FALSE); for (c3_i76 = 0; c3_i76 < 72; c3_i76++) { c3_w_u[c3_i76] = 0.0; } c3_v_y = NULL; sf_mex_assign(&c3_v_y, sf_mex_create("y", c3_w_u, 0, 0U, 1U, 0U, 2, 12, 6), FALSE); for (c3_i77 = 0; c3_i77 < 12; c3_i77++) { c3_x_u[c3_i77] = c3_d_Mu1[c3_i77]; } c3_w_y = NULL; sf_mex_assign(&c3_w_y, sf_mex_create("y", c3_x_u, 0, 0U, 1U, 0U, 1, 12), FALSE); for (c3_i78 = 0; c3_i78 < 264; c3_i78++) { c3_y_u[c3_i78] = 0.0; } c3_x_y = NULL; sf_mex_assign(&c3_x_y, sf_mex_create("y", c3_y_u, 0, 0U, 1U, 0U, 2, 12, 22), FALSE); for (c3_i79 = 0; c3_i79 < 4; c3_i79++) { c3_ab_u[c3_i79] = 0.0; } c3_y_y = NULL; sf_mex_assign(&c3_y_y, sf_mex_create("y", c3_ab_u, 0, 0U, 1U, 0U, 1, 4), FALSE); for (c3_i80 = 0; c3_i80 < 10; c3_i80++) { c3_bb_u[c3_i80] = 0.0; } c3_ab_y = NULL; sf_mex_assign(&c3_ab_y, sf_mex_create("y", c3_bb_u, 0, 0U, 1U, 0U, 1, 10), FALSE); c3_cb_u = c3_b_p; c3_bb_y = NULL; sf_mex_assign(&c3_bb_y, sf_mex_create("y", &c3_cb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_db_u = c3_b_uoff; c3_cb_y = NULL; sf_mex_assign(&c3_cb_y, sf_mex_create("y", &c3_db_u, 0, 0U, 0U, 0U, 0), FALSE); c3_eb_u = c3_b_yoff; c3_db_y = NULL; sf_mex_assign(&c3_db_y, sf_mex_create("y", &c3_eb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fb_u = c3_b_maxiter; c3_eb_y = NULL; sf_mex_assign(&c3_eb_y, sf_mex_create("y", &c3_fb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gb_u = c3_b_nxQP; c3_fb_y = NULL; sf_mex_assign(&c3_fb_y, sf_mex_create("y", &c3_gb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hb_u = c3_b_openloopflag; c3_gb_y = NULL; sf_mex_assign(&c3_gb_y, sf_mex_create("y", &c3_hb_u, 11, 0U, 0U, 0U, 0), FALSE); c3_ib_u = c3_b_lims_inport; c3_hb_y = NULL; sf_mex_assign(&c3_hb_y, sf_mex_create("y", &c3_ib_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jb_u = c3_b_no_umin; c3_ib_y = NULL; sf_mex_assign(&c3_ib_y, sf_mex_create("y", &c3_jb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kb_u = c3_b_no_umax; c3_jb_y = NULL; sf_mex_assign(&c3_jb_y, sf_mex_create("y", &c3_kb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lb_u = c3_b_no_ymin; c3_kb_y = NULL; sf_mex_assign(&c3_kb_y, sf_mex_create("y", &c3_lb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mb_u = c3_b_no_ymax; c3_lb_y = NULL; sf_mex_assign(&c3_lb_y, sf_mex_create("y", &c3_mb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nb_u = c3_b_switch_inport; c3_mb_y = NULL; sf_mex_assign(&c3_mb_y, sf_mex_create("y", &c3_nb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ob_u = c3_b_no_switch; c3_nb_y = NULL; sf_mex_assign(&c3_nb_y, sf_mex_create("y", &c3_ob_u, 0, 0U, 0U, 0U, 0), FALSE); c3_pb_u = c3_b_enable_value; c3_ob_y = NULL; sf_mex_assign(&c3_ob_y, sf_mex_create("y", &c3_pb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_qb_u = c3_b_return_cost; c3_pb_y = NULL; sf_mex_assign(&c3_pb_y, sf_mex_create("y", &c3_qb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i81 = 0; c3_i81 < 16; c3_i81++) { c3_rb_u[c3_i81] = c3_d_H[c3_i81]; } c3_qb_y = NULL; sf_mex_assign(&c3_qb_y, sf_mex_create("y", c3_rb_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); c3_sb_u = c3_b_return_sequence; c3_rb_y = NULL; sf_mex_assign(&c3_rb_y, sf_mex_create("y", &c3_sb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i82 = 0; c3_i82 < 10; c3_i82++) { c3_tb_u[c3_i82] = c3_d_blocking_moves[c3_i82]; } c3_sb_y = NULL; sf_mex_assign(&c3_sb_y, sf_mex_create("y", c3_tb_u, 0, 0U, 1U, 0U, 2, 1, 10), FALSE); for (c3_i83 = 0; c3_i83 < 16; c3_i83++) { c3_ub_u[c3_i83] = c3_d_Linv[c3_i83]; } c3_tb_y = NULL; sf_mex_assign(&c3_tb_y, sf_mex_create("y", c3_ub_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); for (c3_i84 = 0; c3_i84 < 48; c3_i84++) { c3_vb_u[c3_i84] = c3_d_Ac[c3_i84]; } c3_ub_y = NULL; sf_mex_assign(&c3_ub_y, sf_mex_create("y", c3_vb_u, 0, 0U, 1U, 0U, 2, 12, 4), FALSE); c3_wb_u = c3_ywt; c3_vb_y = NULL; sf_mex_assign(&c3_vb_y, sf_mex_create("y", &c3_wb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_xb_u = c3_duwt; c3_wb_y = NULL; sf_mex_assign(&c3_wb_y, sf_mex_create("y", &c3_xb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_yb_u = c3_rhoeps; c3_xb_y = NULL; sf_mex_assign(&c3_xb_y, sf_mex_create("y", &c3_yb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ac_u = c3_b_no_ywt; c3_yb_y = NULL; sf_mex_assign(&c3_yb_y, sf_mex_create("y", &c3_ac_u, 0, 0U, 0U, 0U, 0), FALSE); c3_bc_u = c3_b_no_duwt; c3_ac_y = NULL; sf_mex_assign(&c3_ac_y, sf_mex_create("y", &c3_bc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_cc_u = c3_b_no_rhoeps; c3_bc_y = NULL; sf_mex_assign(&c3_bc_y, sf_mex_create("y", &c3_cc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_dc_u = c3_b_Wy; c3_cc_y = NULL; sf_mex_assign(&c3_cc_y, sf_mex_create("y", &c3_dc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ec_u = c3_b_Wdu; c3_dc_y = NULL; sf_mex_assign(&c3_dc_y, sf_mex_create("y", &c3_ec_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fc_u = c3_b_Jm; c3_ec_y = NULL; sf_mex_assign(&c3_ec_y, sf_mex_create("y", &c3_fc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gc_u = c3_b_SuJm; c3_fc_y = NULL; sf_mex_assign(&c3_fc_y, sf_mex_create("y", &c3_gc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hc_u = c3_b_I2JmWuI2Jm; c3_gc_y = NULL; sf_mex_assign(&c3_gc_y, sf_mex_create("y", &c3_hc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ic_u = c3_b_Su1; c3_hc_y = NULL; sf_mex_assign(&c3_hc_y, sf_mex_create("y", &c3_ic_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jc_u = c3_b_I1WuI2Jm; c3_ic_y = NULL; sf_mex_assign(&c3_ic_y, sf_mex_create("y", &c3_jc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kc_u = c3_b_Sx; c3_jc_y = NULL; sf_mex_assign(&c3_jc_y, sf_mex_create("y", &c3_kc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lc_u = c3_b_Hv; c3_kc_y = NULL; sf_mex_assign(&c3_kc_y, sf_mex_create("y", &c3_lc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mc_u = c3_b_Wu; c3_lc_y = NULL; sf_mex_assign(&c3_lc_y, sf_mex_create("y", &c3_mc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nc_u = c3_b_I1; c3_mc_y = NULL; sf_mex_assign(&c3_mc_y, sf_mex_create("y", &c3_nc_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_optimizer_double_mex", 5U, 63U, 14, c3_y, 14, c3_b_y, 14, c3_c_y, 14, c3_d_y, 14, c3_e_y, 14, c3_f_y, 14, c3_g_y, 14, c3_h_y, 14, c3_i_y, 14, c3_j_y, 14, c3_k_y, 14, c3_l_y, 14, c3_m_y, 14, c3_n_y, 14, c3_o_y, 14, c3_p_y, 14, c3_q_y, 14, c3_r_y, 14, c3_s_y, 14, c3_t_y, 14, c3_u_y, 14, c3_v_y, 14, c3_w_y, 14, c3_x_y, 14, c3_y_y, 14, c3_ab_y, 14, c3_bb_y, 14, c3_cb_y, 14, c3_db_y, 14, c3_eb_y, 14, c3_fb_y, 14, c3_gb_y, 14, c3_hb_y, 14, c3_ib_y, 14, c3_jb_y, 14, c3_kb_y, 14, c3_lb_y, 14, c3_mb_y, 14, c3_nb_y, 14, c3_ob_y, 14, c3_pb_y, 14, c3_qb_y, 14, c3_rb_y, 14, c3_sb_y, 14, c3_tb_y, 14, c3_ub_y, 14, c3_vb_y, 14, c3_wb_y, 14, c3_xb_y, 14, c3_yb_y, 14, c3_ac_y, 14, c3_bc_y, 14, c3_cc_y, 14, c3_dc_y, 14, c3_ec_y, 14, c3_fc_y, 14, c3_gc_y, 14, c3_hc_y, 14, c3_ic_y, 14, c3_jc_y, 14, c3_kc_y, 14, c3_lc_y, 14, c3_mc_y, &c3_oc_u, &c3_b_cost, &c3_b_useq, &c3_b_status, &c3_b_iAout); c3_u = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_oc_u), "u"); c3_cost = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_cost), "cost"); c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_useq), "useq", c3_dv17); for (c3_i85 = 0; c3_i85 < 10; c3_i85++) { c3_useq[c3_i85] = c3_dv17[c3_i85]; } c3_status = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_status), "status"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_iAout), "iAout", c3_bv1); for (c3_i86 = 0; c3_i86 < 16; c3_i86++) { c3_iAout[c3_i86] = c3_bv1[c3_i86]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, -31); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c3_oc_u); sf_mex_destroy(&c3_b_cost); sf_mex_destroy(&c3_b_useq); sf_mex_destroy(&c3_b_status); sf_mex_destroy(&c3_b_iAout); *c3_pc_u = c3_u; *c3_c_cost = c3_cost; for (c3_i87 = 0; c3_i87 < 10; c3_i87++) { (*c3_c_useq)[c3_i87] = c3_useq[c3_i87]; } *c3_c_status = c3_status; for (c3_i88 = 0; c3_i88 < 16; c3_i88++) { (*c3_c_iAout)[c3_i88] = c3_iAout[c3_i88]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); } static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber) { } static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i89; boolean_T c3_b_inData[16]; int32_T c3_i90; boolean_T c3_u[16]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i89 = 0; c3_i89 < 16; c3_i89++) { c3_b_inData[c3_i89] = (*(boolean_T (*)[16])c3_inData)[c3_i89]; } for (c3_i90 = 0; c3_i90 < 16; c3_i90++) { c3_u[c3_i90] = c3_b_inData[c3_i90]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 11, 0U, 1U, 0U, 1, 16), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_iAout; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y[16]; int32_T c3_i91; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_iAout = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); for (c3_i91 = 0; c3_i91 < 16; c3_i91++) { (*(boolean_T (*)[16])c3_outData)[c3_i91] = c3_y[c3_i91]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; real_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(real_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_u; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_u = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId); sf_mex_destroy(&c3_u); *(real_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i92; real_T c3_b_inData[10]; int32_T c3_i93; real_T c3_u[10]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i92 = 0; c3_i92 < 10; c3_i92++) { c3_b_inData[c3_i92] = (*(real_T (*)[10])c3_inData)[c3_i92]; } for (c3_i93 = 0; c3_i93 < 10; c3_i93++) { c3_u[c3_i93] = c3_b_inData[c3_i93]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_useq; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[10]; int32_T c3_i94; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_useq = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); for (c3_i94 = 0; c3_i94 < 10; c3_i94++) { (*(real_T (*)[10])c3_outData)[c3_i94] = c3_y[c3_i94]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i95; real_T c3_b_inData[6]; int32_T c3_i96; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i95 = 0; c3_i95 < 6; c3_i95++) { c3_b_inData[c3_i95] = (*(real_T (*)[6])c3_inData)[c3_i95]; } for (c3_i96 = 0; c3_i96 < 6; c3_i96++) { c3_u[c3_i96] = c3_b_inData[c3_i96]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i97; real_T c3_b_inData[22]; int32_T c3_i98; real_T c3_u[22]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i97 = 0; c3_i97 < 22; c3_i97++) { c3_b_inData[c3_i97] = (*(real_T (*)[22])c3_inData)[c3_i97]; } for (c3_i98 = 0; c3_i98 < 22; c3_i98++) { c3_u[c3_i98] = c3_b_inData[c3_i98]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 22), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i99; int32_T c3_i100; int32_T c3_i101; real_T c3_b_inData[48]; int32_T c3_i102; int32_T c3_i103; int32_T c3_i104; real_T c3_u[48]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i99 = 0; for (c3_i100 = 0; c3_i100 < 4; c3_i100++) { for (c3_i101 = 0; c3_i101 < 12; c3_i101++) { c3_b_inData[c3_i101 + c3_i99] = (*(real_T (*)[48])c3_inData)[c3_i101 + c3_i99]; } c3_i99 += 12; } c3_i102 = 0; for (c3_i103 = 0; c3_i103 < 4; c3_i103++) { for (c3_i104 = 0; c3_i104 < 12; c3_i104++) { c3_u[c3_i104 + c3_i102] = c3_b_inData[c3_i104 + c3_i102]; } c3_i102 += 12; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 12, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i105; int32_T c3_i106; int32_T c3_i107; real_T c3_b_inData[16]; int32_T c3_i108; int32_T c3_i109; int32_T c3_i110; real_T c3_u[16]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i105 = 0; for (c3_i106 = 0; c3_i106 < 4; c3_i106++) { for (c3_i107 = 0; c3_i107 < 4; c3_i107++) { c3_b_inData[c3_i107 + c3_i105] = (*(real_T (*)[16])c3_inData)[c3_i107 + c3_i105]; } c3_i105 += 4; } c3_i108 = 0; for (c3_i109 = 0; c3_i109 < 4; c3_i109++) { for (c3_i110 = 0; c3_i110 < 4; c3_i110++) { c3_u[c3_i110 + c3_i108] = c3_b_inData[c3_i110 + c3_i108]; } c3_i108 += 4; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i111; real_T c3_b_inData[10]; int32_T c3_i112; real_T c3_u[10]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i111 = 0; c3_i111 < 10; c3_i111++) { c3_b_inData[c3_i111] = (*(real_T (*)[10])c3_inData)[c3_i111]; } for (c3_i112 = 0; c3_i112 < 10; c3_i112++) { c3_u[c3_i112] = c3_b_inData[c3_i112]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 10), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; boolean_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(boolean_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i113; real_T c3_b_inData[4]; int32_T c3_i114; real_T c3_u[4]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i113 = 0; c3_i113 < 4; c3_i113++) { c3_b_inData[c3_i113] = (*(real_T (*)[4])c3_inData)[c3_i113]; } for (c3_i114 = 0; c3_i114 < 4; c3_i114++) { c3_u[c3_i114] = c3_b_inData[c3_i114]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i115; int32_T c3_i116; int32_T c3_i117; real_T c3_b_inData[264]; int32_T c3_i118; int32_T c3_i119; int32_T c3_i120; real_T c3_u[264]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i115 = 0; for (c3_i116 = 0; c3_i116 < 22; c3_i116++) { for (c3_i117 = 0; c3_i117 < 12; c3_i117++) { c3_b_inData[c3_i117 + c3_i115] = (*(real_T (*)[264])c3_inData)[c3_i117 + c3_i115]; } c3_i115 += 12; } c3_i118 = 0; for (c3_i119 = 0; c3_i119 < 22; c3_i119++) { for (c3_i120 = 0; c3_i120 < 12; c3_i120++) { c3_u[c3_i120 + c3_i118] = c3_b_inData[c3_i120 + c3_i118]; } c3_i118 += 12; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 12, 22), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i121; real_T c3_b_inData[12]; int32_T c3_i122; real_T c3_u[12]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i121 = 0; c3_i121 < 12; c3_i121++) { c3_b_inData[c3_i121] = (*(real_T (*)[12])c3_inData)[c3_i121]; } for (c3_i122 = 0; c3_i122 < 12; c3_i122++) { c3_u[c3_i122] = c3_b_inData[c3_i122]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 12), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i123; int32_T c3_i124; int32_T c3_i125; real_T c3_b_inData[72]; int32_T c3_i126; int32_T c3_i127; int32_T c3_i128; real_T c3_u[72]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i123 = 0; for (c3_i124 = 0; c3_i124 < 6; c3_i124++) { for (c3_i125 = 0; c3_i125 < 12; c3_i125++) { c3_b_inData[c3_i125 + c3_i123] = (*(real_T (*)[72])c3_inData)[c3_i125 + c3_i123]; } c3_i123 += 12; } c3_i126 = 0; for (c3_i127 = 0; c3_i127 < 6; c3_i127++) { for (c3_i128 = 0; c3_i128 < 12; c3_i128++) { c3_u[c3_i128 + c3_i126] = c3_b_inData[c3_i128 + c3_i126]; } c3_i126 += 12; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 12, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i129; int32_T c3_i130; int32_T c3_i131; real_T c3_b_inData[66]; int32_T c3_i132; int32_T c3_i133; int32_T c3_i134; real_T c3_u[66]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i129 = 0; for (c3_i130 = 0; c3_i130 < 3; c3_i130++) { for (c3_i131 = 0; c3_i131 < 22; c3_i131++) { c3_b_inData[c3_i131 + c3_i129] = (*(real_T (*)[66])c3_inData)[c3_i131 + c3_i129]; } c3_i129 += 22; } c3_i132 = 0; for (c3_i133 = 0; c3_i133 < 3; c3_i133++) { for (c3_i134 = 0; c3_i134 < 22; c3_i134++) { c3_u[c3_i134 + c3_i132] = c3_b_inData[c3_i134 + c3_i132]; } c3_i132 += 22; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 22, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i135; int32_T c3_i136; int32_T c3_i137; real_T c3_b_inData[30]; int32_T c3_i138; int32_T c3_i139; int32_T c3_i140; real_T c3_u[30]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i135 = 0; for (c3_i136 = 0; c3_i136 < 3; c3_i136++) { for (c3_i137 = 0; c3_i137 < 10; c3_i137++) { c3_b_inData[c3_i137 + c3_i135] = (*(real_T (*)[30])c3_inData)[c3_i137 + c3_i135]; } c3_i135 += 10; } c3_i138 = 0; for (c3_i139 = 0; c3_i139 < 3; c3_i139++) { for (c3_i140 = 0; c3_i140 < 10; c3_i140++) { c3_u[c3_i140 + c3_i138] = c3_b_inData[c3_i140 + c3_i138]; } c3_i138 += 10; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 10, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i141; real_T c3_b_inData[3]; int32_T c3_i142; real_T c3_u[3]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i141 = 0; c3_i141 < 3; c3_i141++) { c3_b_inData[c3_i141] = (*(real_T (*)[3])c3_inData)[c3_i141]; } for (c3_i142 = 0; c3_i142 < 3; c3_i142++) { c3_u[c3_i142] = c3_b_inData[c3_i142]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i143; int32_T c3_i144; int32_T c3_i145; real_T c3_b_inData[18]; int32_T c3_i146; int32_T c3_i147; int32_T c3_i148; real_T c3_u[18]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i143 = 0; for (c3_i144 = 0; c3_i144 < 3; c3_i144++) { for (c3_i145 = 0; c3_i145 < 6; c3_i145++) { c3_b_inData[c3_i145 + c3_i143] = (*(real_T (*)[18])c3_inData)[c3_i145 + c3_i143]; } c3_i143 += 6; } c3_i146 = 0; for (c3_i147 = 0; c3_i147 < 3; c3_i147++) { for (c3_i148 = 0; c3_i148 < 6; c3_i148++) { c3_u[c3_i148 + c3_i146] = c3_b_inData[c3_i148 + c3_i146]; } c3_i146 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i149; char_T c3_b_inData[6]; int32_T c3_i150; char_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i149 = 0; c3_i149 < 6; c3_i149++) { c3_b_inData[c3_i149] = (*(char_T (*)[6])c3_inData)[c3_i149]; } for (c3_i150 = 0; c3_i150 < 6; c3_i150++) { c3_u[c3_i150] = c3_b_inData[c3_i150]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c3_nameCaptureInfo = NULL; c3_nameCaptureInfo = NULL; sf_mex_assign(&c3_nameCaptureInfo, sf_mex_create("nameCaptureInfo", NULL, 0, 0U, 1U, 0U, 2, 0, 1), FALSE); return c3_nameCaptureInfo; } static real_T c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier) { real_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId); sf_mex_destroy(&c3_u); return c3_y; } static real_T c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { real_T c3_y; real_T c3_d34; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_d34, 1, 0, 0U, 0, 0U, 0); c3_y = c3_d34; sf_mex_destroy(&c3_u); return c3_y; } static void c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[10]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); } static void c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[10]) { real_T c3_dv18[10]; int32_T c3_i151; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv18, 1, 0, 0U, 1, 0U, 1, 10); for (c3_i151 = 0; c3_i151 < 10; c3_i151++) { c3_y[c3_i151] = c3_dv18[c3_i151]; } sf_mex_destroy(&c3_u); } static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[16]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); } static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[16]) { boolean_T c3_bv2[16]; int32_T c3_i152; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_bv2, 1, 11, 0U, 1, 0U, 1, 16); for (c3_i152 = 0; c3_i152 < 16; c3_i152++) { c3_y[c3_i152] = c3_bv2[c3_i152]; } sf_mex_destroy(&c3_u); } static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(int32_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static int32_T c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { int32_T c3_y; int32_T c3_i153; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_i153, 1, 6, 0U, 0, 0U, 0); c3_y = c3_i153; sf_mex_destroy(&c3_u); return c3_y; } static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_b_sfEvent; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; int32_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_b_sfEvent = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_sfEvent), &c3_thisId); sf_mex_destroy(&c3_b_sfEvent); *(int32_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static boolean_T c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { boolean_T c3_y; boolean_T c3_b0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_b0, 1, 11, 0U, 0, 0U, 0); c3_y = c3_b0; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_isQP; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_isQP = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_isQP), &c3_thisId); sf_mex_destroy(&c3_c_isQP); *(boolean_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static void c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[16]) { real_T c3_dv19[16]; int32_T c3_i154; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv19, 1, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i154 = 0; c3_i154 < 16; c3_i154++) { c3_y[c3_i154] = c3_dv19[c3_i154]; } sf_mex_destroy(&c3_u); } static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Hinv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[16]; int32_T c3_i155; int32_T c3_i156; int32_T c3_i157; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Hinv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Hinv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Hinv); c3_i155 = 0; for (c3_i156 = 0; c3_i156 < 4; c3_i156++) { for (c3_i157 = 0; c3_i157 < 4; c3_i157++) { (*(real_T (*)[16])c3_outData)[c3_i157 + c3_i155] = c3_y[c3_i157 + c3_i155]; } c3_i155 += 4; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]) { real_T c3_dv20[18]; int32_T c3_i158; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv20, 1, 0, 0U, 1, 0U, 2, 6, 3); for (c3_i158 = 0; c3_i158 < 18; c3_i158++) { c3_y[c3_i158] = c3_dv20[c3_i158]; } sf_mex_destroy(&c3_u); } static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[18]; int32_T c3_i159; int32_T c3_i160; int32_T c3_i161; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_j_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kx); c3_i159 = 0; for (c3_i160 = 0; c3_i160 < 3; c3_i160++) { for (c3_i161 = 0; c3_i161 < 6; c3_i161++) { (*(real_T (*)[18])c3_outData)[c3_i161 + c3_i159] = c3_y[c3_i161 + c3_i159]; } c3_i159 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]) { real_T c3_dv21[3]; int32_T c3_i162; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv21, 1, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i162 = 0; c3_i162 < 3; c3_i162++) { c3_y[c3_i162] = c3_dv21[c3_i162]; } sf_mex_destroy(&c3_u); } static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ku1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[3]; int32_T c3_i163; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ku1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_k_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ku1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ku1); for (c3_i163 = 0; c3_i163 < 3; c3_i163++) { (*(real_T (*)[3])c3_outData)[c3_i163] = c3_y[c3_i163]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[30]) { real_T c3_dv22[30]; int32_T c3_i164; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv22, 1, 0, 0U, 1, 0U, 2, 10, 3); for (c3_i164 = 0; c3_i164 < 30; c3_i164++) { c3_y[c3_i164] = c3_dv22[c3_i164]; } sf_mex_destroy(&c3_u); } static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kut; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[30]; int32_T c3_i165; int32_T c3_i166; int32_T c3_i167; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kut = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_l_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kut), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kut); c3_i165 = 0; for (c3_i166 = 0; c3_i166 < 3; c3_i166++) { for (c3_i167 = 0; c3_i167 < 10; c3_i167++) { (*(real_T (*)[30])c3_outData)[c3_i167 + c3_i165] = c3_y[c3_i167 + c3_i165]; } c3_i165 += 10; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[66]) { real_T c3_dv23[66]; int32_T c3_i168; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv23, 1, 0, 0U, 1, 0U, 2, 22, 3); for (c3_i168 = 0; c3_i168 < 66; c3_i168++) { c3_y[c3_i168] = c3_dv23[c3_i168]; } sf_mex_destroy(&c3_u); } static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[66]; int32_T c3_i169; int32_T c3_i170; int32_T c3_i171; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_m_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kv); c3_i169 = 0; for (c3_i170 = 0; c3_i170 < 3; c3_i170++) { for (c3_i171 = 0; c3_i171 < 22; c3_i171++) { (*(real_T (*)[66])c3_outData)[c3_i171 + c3_i169] = c3_y[c3_i171 + c3_i169]; } c3_i169 += 22; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[12]) { real_T c3_dv24[12]; int32_T c3_i172; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv24, 1, 0, 0U, 1, 0U, 1, 12); for (c3_i172 = 0; c3_i172 < 12; c3_i172++) { c3_y[c3_i172] = c3_dv24[c3_i172]; } sf_mex_destroy(&c3_u); } static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mlim; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[12]; int32_T c3_i173; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mlim = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_n_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mlim), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mlim); for (c3_i173 = 0; c3_i173 < 12; c3_i173++) { (*(real_T (*)[12])c3_outData)[c3_i173] = c3_y[c3_i173]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[72]) { real_T c3_dv25[72]; int32_T c3_i174; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv25, 1, 0, 0U, 1, 0U, 2, 12, 6); for (c3_i174 = 0; c3_i174 < 72; c3_i174++) { c3_y[c3_i174] = c3_dv25[c3_i174]; } sf_mex_destroy(&c3_u); } static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[72]; int32_T c3_i175; int32_T c3_i176; int32_T c3_i177; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_o_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mx); c3_i175 = 0; for (c3_i176 = 0; c3_i176 < 6; c3_i176++) { for (c3_i177 = 0; c3_i177 < 12; c3_i177++) { (*(real_T (*)[72])c3_outData)[c3_i177 + c3_i175] = c3_y[c3_i177 + c3_i175]; } c3_i175 += 12; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[264]) { real_T c3_dv26[264]; int32_T c3_i178; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv26, 1, 0, 0U, 1, 0U, 2, 12, 22); for (c3_i178 = 0; c3_i178 < 264; c3_i178++) { c3_y[c3_i178] = c3_dv26[c3_i178]; } sf_mex_destroy(&c3_u); } static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[264]; int32_T c3_i179; int32_T c3_i180; int32_T c3_i181; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_p_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mv); c3_i179 = 0; for (c3_i180 = 0; c3_i180 < 22; c3_i180++) { for (c3_i181 = 0; c3_i181 < 12; c3_i181++) { (*(real_T (*)[264])c3_outData)[c3_i181 + c3_i179] = c3_y[c3_i181 + c3_i179]; } c3_i179 += 12; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[4]) { real_T c3_dv27[4]; int32_T c3_i182; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv27, 1, 0, 0U, 1, 0U, 1, 4); for (c3_i182 = 0; c3_i182 < 4; c3_i182++) { c3_y[c3_i182] = c3_dv27[c3_i182]; } sf_mex_destroy(&c3_u); } static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_z_degrees; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[4]; int32_T c3_i183; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_z_degrees = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_q_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_z_degrees), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_z_degrees); for (c3_i183 = 0; c3_i183 < 4; c3_i183++) { (*(real_T (*)[4])c3_outData)[c3_i183] = c3_y[c3_i183]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[10]) { real_T c3_dv28[10]; int32_T c3_i184; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv28, 1, 0, 0U, 1, 0U, 2, 1, 10); for (c3_i184 = 0; c3_i184 < 10; c3_i184++) { c3_y[c3_i184] = c3_dv28[c3_i184]; } sf_mex_destroy(&c3_u); } static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_blocking_moves; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[10]; int32_T c3_i185; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_blocking_moves = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_r_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_blocking_moves), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_blocking_moves); for (c3_i185 = 0; c3_i185 < 10; c3_i185++) { (*(real_T (*)[10])c3_outData)[c3_i185] = c3_y[c3_i185]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[48]) { real_T c3_dv29[48]; int32_T c3_i186; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv29, 1, 0, 0U, 1, 0U, 2, 12, 4); for (c3_i186 = 0; c3_i186 < 48; c3_i186++) { c3_y[c3_i186] = c3_dv29[c3_i186]; } sf_mex_destroy(&c3_u); } static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ac; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[48]; int32_T c3_i187; int32_T c3_i188; int32_T c3_i189; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ac = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_s_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ac), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ac); c3_i187 = 0; for (c3_i188 = 0; c3_i188 < 4; c3_i188++) { for (c3_i189 = 0; c3_i189 < 12; c3_i189++) { (*(real_T (*)[48])c3_outData)[c3_i189 + c3_i187] = c3_y[c3_i189 + c3_i187]; } c3_i187 += 12; } sf_mex_destroy(&c3_mxArrayInData); } static uint8_T c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier) { uint8_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_u_emlrt_marshallIn(chartInstance, sf_mex_dup (c3_b_is_active_c3_mpclib), &c3_thisId); sf_mex_destroy(&c3_b_is_active_c3_mpclib); return c3_y; } static uint8_T c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { uint8_T c3_y; uint8_T c3_u0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_u0, 1, 3, 0U, 0, 0U, 0); c3_y = c3_u0; sf_mex_destroy(&c3_u); return c3_y; } static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c3_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(246230727U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3387120738U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(981461402U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(860506974U); } mxArray *sf_c3_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("K8wxaBjamtyqnvKwti3efD"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,13,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(22); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(16); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,50,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(4); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(3); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(3); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(3); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(22); pr[1] = (double)(3); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(3); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,13,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,13,"type",mxType); } mxSetField(mxData,13,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(1); mxSetField(mxData,14,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,14,"type",mxType); } mxSetField(mxData,14,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(1); mxSetField(mxData,15,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,15,"type",mxType); } mxSetField(mxData,15,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(22); mxSetField(mxData,16,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,16,"type",mxType); } mxSetField(mxData,16,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(6); mxSetField(mxData,17,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,17,"type",mxType); } mxSetField(mxData,17,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,18,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,18,"type",mxType); } mxSetField(mxData,18,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,19,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,19,"type",mxType); } mxSetField(mxData,19,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,20,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,20,"type",mxType); } mxSetField(mxData,20,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,21,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,21,"type",mxType); } mxSetField(mxData,21,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,22,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,22,"type",mxType); } mxSetField(mxData,22,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,23,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,23,"type",mxType); } mxSetField(mxData,23,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(10); mxSetField(mxData,24,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,24,"type",mxType); } mxSetField(mxData,24,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,25,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,25,"type",mxType); } mxSetField(mxData,25,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,26,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,26,"type",mxType); } mxSetField(mxData,26,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,27,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,27,"type",mxType); } mxSetField(mxData,27,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,28,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,28,"type",mxType); } mxSetField(mxData,28,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,29,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,29,"type",mxType); } mxSetField(mxData,29,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,30,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,30,"type",mxType); } mxSetField(mxData,30,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,31,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,31,"type",mxType); } mxSetField(mxData,31,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,32,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,32,"type",mxType); } mxSetField(mxData,32,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,33,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,33,"type",mxType); } mxSetField(mxData,33,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,34,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,34,"type",mxType); } mxSetField(mxData,34,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,35,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,35,"type",mxType); } mxSetField(mxData,35,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,36,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,36,"type",mxType); } mxSetField(mxData,36,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,37,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,37,"type",mxType); } mxSetField(mxData,37,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,38,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,38,"type",mxType); } mxSetField(mxData,38,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,39,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,39,"type",mxType); } mxSetField(mxData,39,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,40,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,40,"type",mxType); } mxSetField(mxData,40,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,41,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,41,"type",mxType); } mxSetField(mxData,41,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,42,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,42,"type",mxType); } mxSetField(mxData,42,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,43,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,43,"type",mxType); } mxSetField(mxData,43,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,44,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,44,"type",mxType); } mxSetField(mxData,44,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,45,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,45,"type",mxType); } mxSetField(mxData,45,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,46,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,46,"type",mxType); } mxSetField(mxData,46,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,47,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,47,"type",mxType); } mxSetField(mxData,47,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,48,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,48,"type",mxType); } mxSetField(mxData,48,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(1); mxSetField(mxData,49,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,49,"type",mxType); } mxSetField(mxData,49,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,5,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(16); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c3_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c3_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x6'type','srcId','name','auxInfo'{{M[1],M[20],T\"cost\",},{M[1],M[145],T\"iAout\",},{M[1],M[126],T\"status\",},{M[1],M[19],T\"u\",},{M[1],M[21],T\"useq\",},{M[8],M[0],T\"is_active_c3_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 6, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c3_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 3, 1, 1, 68, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,1,1,0,"rseq"); _SFD_SET_DATA_PROPS(1,1,1,0,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"x"); _SFD_SET_DATA_PROPS(3,1,1,0,"old_u"); _SFD_SET_DATA_PROPS(4,1,1,0,"iA"); _SFD_SET_DATA_PROPS(5,1,1,0,"umin"); _SFD_SET_DATA_PROPS(6,1,1,0,"umax"); _SFD_SET_DATA_PROPS(7,1,1,0,"ymin"); _SFD_SET_DATA_PROPS(8,1,1,0,"ymax"); _SFD_SET_DATA_PROPS(9,1,1,0,"switch_in"); _SFD_SET_DATA_PROPS(10,1,1,0,"ywt"); _SFD_SET_DATA_PROPS(11,1,1,0,"duwt"); _SFD_SET_DATA_PROPS(12,1,1,0,"rhoeps"); _SFD_SET_DATA_PROPS(13,2,0,1,"u"); _SFD_SET_DATA_PROPS(14,2,0,1,"cost"); _SFD_SET_DATA_PROPS(15,2,0,1,"useq"); _SFD_SET_DATA_PROPS(16,2,0,1,"status"); _SFD_SET_DATA_PROPS(17,10,0,0,"isQP"); _SFD_SET_DATA_PROPS(18,10,0,0,"nu"); _SFD_SET_DATA_PROPS(19,10,0,0,"ny"); _SFD_SET_DATA_PROPS(20,10,0,0,"degrees"); _SFD_SET_DATA_PROPS(21,10,0,0,"Hinv"); _SFD_SET_DATA_PROPS(22,10,0,0,"Kx"); _SFD_SET_DATA_PROPS(23,10,0,0,"Ku1"); _SFD_SET_DATA_PROPS(24,10,0,0,"Kut"); _SFD_SET_DATA_PROPS(25,10,0,0,"Kr"); _SFD_SET_DATA_PROPS(26,10,0,0,"Kv"); _SFD_SET_DATA_PROPS(27,10,0,0,"Mlim"); _SFD_SET_DATA_PROPS(28,10,0,0,"Mx"); _SFD_SET_DATA_PROPS(29,10,0,0,"Mu1"); _SFD_SET_DATA_PROPS(30,10,0,0,"Mv"); _SFD_SET_DATA_PROPS(31,10,0,0,"z_degrees"); _SFD_SET_DATA_PROPS(32,10,0,0,"utarget"); _SFD_SET_DATA_PROPS(33,10,0,0,"p"); _SFD_SET_DATA_PROPS(34,10,0,0,"uoff"); _SFD_SET_DATA_PROPS(35,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(36,10,0,0,"maxiter"); _SFD_SET_DATA_PROPS(37,10,0,0,"nxQP"); _SFD_SET_DATA_PROPS(38,10,0,0,"openloopflag"); _SFD_SET_DATA_PROPS(39,10,0,0,"lims_inport"); _SFD_SET_DATA_PROPS(40,10,0,0,"no_umin"); _SFD_SET_DATA_PROPS(41,10,0,0,"no_umax"); _SFD_SET_DATA_PROPS(42,10,0,0,"no_ymin"); _SFD_SET_DATA_PROPS(43,10,0,0,"no_ymax"); _SFD_SET_DATA_PROPS(44,10,0,0,"switch_inport"); _SFD_SET_DATA_PROPS(45,10,0,0,"no_switch"); _SFD_SET_DATA_PROPS(46,10,0,0,"enable_value"); _SFD_SET_DATA_PROPS(47,10,0,0,"return_cost"); _SFD_SET_DATA_PROPS(48,10,0,0,"H"); _SFD_SET_DATA_PROPS(49,10,0,0,"return_sequence"); _SFD_SET_DATA_PROPS(50,10,0,0,"blocking_moves"); _SFD_SET_DATA_PROPS(51,10,0,0,"Linv"); _SFD_SET_DATA_PROPS(52,10,0,0,"Ac"); _SFD_SET_DATA_PROPS(53,10,0,0,"no_ywt"); _SFD_SET_DATA_PROPS(54,10,0,0,"no_duwt"); _SFD_SET_DATA_PROPS(55,10,0,0,"no_rhoeps"); _SFD_SET_DATA_PROPS(56,10,0,0,"Wy"); _SFD_SET_DATA_PROPS(57,10,0,0,"Wdu"); _SFD_SET_DATA_PROPS(58,10,0,0,"Jm"); _SFD_SET_DATA_PROPS(59,10,0,0,"SuJm"); _SFD_SET_DATA_PROPS(60,10,0,0,"I2JmWuI2Jm"); _SFD_SET_DATA_PROPS(61,10,0,0,"Su1"); _SFD_SET_DATA_PROPS(62,10,0,0,"I1WuI2Jm"); _SFD_SET_DATA_PROPS(63,10,0,0,"Sx"); _SFD_SET_DATA_PROPS(64,10,0,0,"Hv"); _SFD_SET_DATA_PROPS(65,10,0,0,"Wu"); _SFD_SET_DATA_PROPS(66,10,0,0,"I1"); _SFD_SET_DATA_PROPS(67,2,0,1,"iAout"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,2551); _SFD_CV_INIT_EML_IF(0,1,0,648,679,2012,2550); _SFD_CV_INIT_EML_IF(0,1,1,966,987,1495,2010); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 22; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 16; _SFD_SET_DATA_COMPILED_PROPS(4,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(12,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(13,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(14,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(15,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(16,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(17,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType)c3_e_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(18,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(19,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(20,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(21,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(22,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_q_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(23,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_p_sf_marshallOut,(MexInFcnForType) c3_h_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 10; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(24,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 10; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(25,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 22; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(26,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_n_sf_marshallOut,(MexInFcnForType) c3_j_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 12; _SFD_SET_DATA_COMPILED_PROPS(27,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 12; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(28,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_m_sf_marshallOut,(MexInFcnForType) c3_l_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 12; _SFD_SET_DATA_COMPILED_PROPS(29,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 12; dimVector[1]= 22; _SFD_SET_DATA_COMPILED_PROPS(30,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_k_sf_marshallOut,(MexInFcnForType) c3_m_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 4; _SFD_SET_DATA_COMPILED_PROPS(31,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_n_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(32,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(33,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(34,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(35,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(36,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(37,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(38,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType)c3_e_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(39,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(40,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(41,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(42,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(43,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(44,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(45,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(46,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(47,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(48,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(49,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 10; _SFD_SET_DATA_COMPILED_PROPS(50,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_h_sf_marshallOut,(MexInFcnForType) c3_o_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(51,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 12; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(52,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_f_sf_marshallOut,(MexInFcnForType) c3_p_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(53,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(54,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(55,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(56,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(57,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(58,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(59,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(60,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(61,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(62,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(63,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(64,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(65,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(66,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 16; _SFD_SET_DATA_COMPILED_PROPS(67,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType) c3_sf_marshallIn); } { real_T *c3_old_u; real_T *c3_umin; real_T *c3_umax; real_T *c3_ymin; real_T *c3_ymax; real_T *c3_switch_in; real_T *c3_ywt; real_T *c3_duwt; real_T *c3_rhoeps; real_T *c3_u; real_T *c3_cost; real_T *c3_status; real_T (*c3_rseq)[10]; real_T (*c3_vseq)[22]; real_T (*c3_x)[6]; boolean_T (*c3_iA)[16]; real_T (*c3_useq)[10]; boolean_T (*c3_iAout)[16]; c3_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[16])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[22])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SET_DATA_VALUE_PTR(0U, *c3_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c3_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c3_x); _SFD_SET_DATA_VALUE_PTR(3U, c3_old_u); _SFD_SET_DATA_VALUE_PTR(4U, *c3_iA); _SFD_SET_DATA_VALUE_PTR(5U, c3_umin); _SFD_SET_DATA_VALUE_PTR(6U, c3_umax); _SFD_SET_DATA_VALUE_PTR(7U, c3_ymin); _SFD_SET_DATA_VALUE_PTR(8U, c3_ymax); _SFD_SET_DATA_VALUE_PTR(9U, c3_switch_in); _SFD_SET_DATA_VALUE_PTR(10U, c3_ywt); _SFD_SET_DATA_VALUE_PTR(11U, c3_duwt); _SFD_SET_DATA_VALUE_PTR(12U, c3_rhoeps); _SFD_SET_DATA_VALUE_PTR(13U, c3_u); _SFD_SET_DATA_VALUE_PTR(14U, c3_cost); _SFD_SET_DATA_VALUE_PTR(15U, *c3_useq); _SFD_SET_DATA_VALUE_PTR(16U, c3_status); _SFD_SET_DATA_VALUE_PTR(17U, &chartInstance->c3_isQP); _SFD_SET_DATA_VALUE_PTR(18U, &chartInstance->c3_nu); _SFD_SET_DATA_VALUE_PTR(19U, &chartInstance->c3_ny); _SFD_SET_DATA_VALUE_PTR(20U, &chartInstance->c3_degrees); _SFD_SET_DATA_VALUE_PTR(21U, chartInstance->c3_Hinv); _SFD_SET_DATA_VALUE_PTR(22U, chartInstance->c3_Kx); _SFD_SET_DATA_VALUE_PTR(23U, chartInstance->c3_Ku1); _SFD_SET_DATA_VALUE_PTR(24U, chartInstance->c3_Kut); _SFD_SET_DATA_VALUE_PTR(25U, chartInstance->c3_Kr); _SFD_SET_DATA_VALUE_PTR(26U, chartInstance->c3_Kv); _SFD_SET_DATA_VALUE_PTR(27U, chartInstance->c3_Mlim); _SFD_SET_DATA_VALUE_PTR(28U, chartInstance->c3_Mx); _SFD_SET_DATA_VALUE_PTR(29U, chartInstance->c3_Mu1); _SFD_SET_DATA_VALUE_PTR(30U, chartInstance->c3_Mv); _SFD_SET_DATA_VALUE_PTR(31U, chartInstance->c3_z_degrees); _SFD_SET_DATA_VALUE_PTR(32U, chartInstance->c3_utarget); _SFD_SET_DATA_VALUE_PTR(33U, &chartInstance->c3_p); _SFD_SET_DATA_VALUE_PTR(34U, &chartInstance->c3_uoff); _SFD_SET_DATA_VALUE_PTR(35U, &chartInstance->c3_yoff); _SFD_SET_DATA_VALUE_PTR(36U, &chartInstance->c3_maxiter); _SFD_SET_DATA_VALUE_PTR(37U, &chartInstance->c3_nxQP); _SFD_SET_DATA_VALUE_PTR(38U, &chartInstance->c3_openloopflag); _SFD_SET_DATA_VALUE_PTR(39U, &chartInstance->c3_lims_inport); _SFD_SET_DATA_VALUE_PTR(40U, &chartInstance->c3_no_umin); _SFD_SET_DATA_VALUE_PTR(41U, &chartInstance->c3_no_umax); _SFD_SET_DATA_VALUE_PTR(42U, &chartInstance->c3_no_ymin); _SFD_SET_DATA_VALUE_PTR(43U, &chartInstance->c3_no_ymax); _SFD_SET_DATA_VALUE_PTR(44U, &chartInstance->c3_switch_inport); _SFD_SET_DATA_VALUE_PTR(45U, &chartInstance->c3_no_switch); _SFD_SET_DATA_VALUE_PTR(46U, &chartInstance->c3_enable_value); _SFD_SET_DATA_VALUE_PTR(47U, &chartInstance->c3_return_cost); _SFD_SET_DATA_VALUE_PTR(48U, chartInstance->c3_H); _SFD_SET_DATA_VALUE_PTR(49U, &chartInstance->c3_return_sequence); _SFD_SET_DATA_VALUE_PTR(50U, chartInstance->c3_blocking_moves); _SFD_SET_DATA_VALUE_PTR(51U, chartInstance->c3_Linv); _SFD_SET_DATA_VALUE_PTR(52U, chartInstance->c3_Ac); _SFD_SET_DATA_VALUE_PTR(53U, &chartInstance->c3_no_ywt); _SFD_SET_DATA_VALUE_PTR(54U, &chartInstance->c3_no_duwt); _SFD_SET_DATA_VALUE_PTR(55U, &chartInstance->c3_no_rhoeps); _SFD_SET_DATA_VALUE_PTR(56U, &chartInstance->c3_Wy); _SFD_SET_DATA_VALUE_PTR(57U, &chartInstance->c3_Wdu); _SFD_SET_DATA_VALUE_PTR(58U, &chartInstance->c3_Jm); _SFD_SET_DATA_VALUE_PTR(59U, &chartInstance->c3_SuJm); _SFD_SET_DATA_VALUE_PTR(60U, &chartInstance->c3_I2JmWuI2Jm); _SFD_SET_DATA_VALUE_PTR(61U, &chartInstance->c3_Su1); _SFD_SET_DATA_VALUE_PTR(62U, &chartInstance->c3_I1WuI2Jm); _SFD_SET_DATA_VALUE_PTR(63U, &chartInstance->c3_Sx); _SFD_SET_DATA_VALUE_PTR(64U, &chartInstance->c3_Hv); _SFD_SET_DATA_VALUE_PTR(65U, &chartInstance->c3_Wu); _SFD_SET_DATA_VALUE_PTR(66U, &chartInstance->c3_I1); _SFD_SET_DATA_VALUE_PTR(67U, *c3_iAout); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "o0M1hEmlLN4wqMqd3iZhdE"; } static void sf_opaque_initialize_c3_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); initialize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c3_mpclib(void *chartInstanceVar) { enable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c3_mpclib(void *chartInstanceVar) { disable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c3_mpclib(void *chartInstanceVar) { sf_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c3_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c3_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c3_mpclib(S); } static void sf_opaque_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c3_mpclib(S, st); } static void sf_opaque_terminate_c3_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c3_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c3_mpclib(SimStruct *S) { /* Actual parameters from chart: Ac H Hinv Hv I1 I1WuI2Jm I2JmWuI2Jm Jm Kr Ku1 Kut Kv Kx Linv Mlim Mu1 Mv Mx Su1 SuJm Sx Wdu Wu Wy blocking_moves degrees enable_value isQP lims_inport maxiter no_duwt no_rhoeps no_switch no_umax no_umin no_ymax no_ymin no_ywt nu nxQP ny openloopflag p return_cost return_sequence switch_inport uoff utarget yoff z_degrees */ const char_T *rtParamNames[] = { "Ac", "H", "Hinv", "Hv", "I1", "I1WuI2Jm", "I2JmWuI2Jm", "Jm", "Kr", "Ku1", "Kut", "Kv", "Kx", "Linv", "Mlim", "Mu1", "Mv", "Mx", "Su1", "SuJm", "Sx", "Wdu", "Wu", "Wy", "blocking_moves", "degrees", "enable_value", "isQP", "lims_inport", "maxiter", "no_duwt", "no_rhoeps", "no_switch", "no_umax", "no_umin", "no_ymax", "no_ymin", "no_ywt", "nu", "nxQP", "ny", "openloopflag", "p", "return_cost", "return_sequence", "switch_inport", "uoff", "utarget", "yoff", "z_degrees" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for Ac*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for H*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for Hinv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for Hv*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for I1*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_DOUBLE); /* registration for I1WuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for I2JmWuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for Jm*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); /* registration for Kr*/ ssRegDlgParamAsRunTimeParam(S, 8, 8, rtParamNames[8], SS_DOUBLE); /* registration for Ku1*/ ssRegDlgParamAsRunTimeParam(S, 9, 9, rtParamNames[9], SS_DOUBLE); /* registration for Kut*/ ssRegDlgParamAsRunTimeParam(S, 10, 10, rtParamNames[10], SS_DOUBLE); /* registration for Kv*/ ssRegDlgParamAsRunTimeParam(S, 11, 11, rtParamNames[11], SS_DOUBLE); /* registration for Kx*/ ssRegDlgParamAsRunTimeParam(S, 12, 12, rtParamNames[12], SS_DOUBLE); /* registration for Linv*/ ssRegDlgParamAsRunTimeParam(S, 13, 13, rtParamNames[13], SS_DOUBLE); /* registration for Mlim*/ ssRegDlgParamAsRunTimeParam(S, 14, 14, rtParamNames[14], SS_DOUBLE); /* registration for Mu1*/ ssRegDlgParamAsRunTimeParam(S, 15, 15, rtParamNames[15], SS_DOUBLE); /* registration for Mv*/ ssRegDlgParamAsRunTimeParam(S, 16, 16, rtParamNames[16], SS_DOUBLE); /* registration for Mx*/ ssRegDlgParamAsRunTimeParam(S, 17, 17, rtParamNames[17], SS_DOUBLE); /* registration for Su1*/ ssRegDlgParamAsRunTimeParam(S, 18, 18, rtParamNames[18], SS_DOUBLE); /* registration for SuJm*/ ssRegDlgParamAsRunTimeParam(S, 19, 19, rtParamNames[19], SS_DOUBLE); /* registration for Sx*/ ssRegDlgParamAsRunTimeParam(S, 20, 20, rtParamNames[20], SS_DOUBLE); /* registration for Wdu*/ ssRegDlgParamAsRunTimeParam(S, 21, 21, rtParamNames[21], SS_DOUBLE); /* registration for Wu*/ ssRegDlgParamAsRunTimeParam(S, 22, 22, rtParamNames[22], SS_DOUBLE); /* registration for Wy*/ ssRegDlgParamAsRunTimeParam(S, 23, 23, rtParamNames[23], SS_DOUBLE); /* registration for blocking_moves*/ ssRegDlgParamAsRunTimeParam(S, 24, 24, rtParamNames[24], SS_DOUBLE); /* registration for degrees*/ ssRegDlgParamAsRunTimeParam(S, 25, 25, rtParamNames[25], SS_DOUBLE); /* registration for enable_value*/ ssRegDlgParamAsRunTimeParam(S, 26, 26, rtParamNames[26], SS_DOUBLE); /* registration for isQP*/ ssRegDlgParamAsRunTimeParam(S, 27, 27, rtParamNames[27], SS_BOOLEAN); /* registration for lims_inport*/ ssRegDlgParamAsRunTimeParam(S, 28, 28, rtParamNames[28], SS_DOUBLE); /* registration for maxiter*/ ssRegDlgParamAsRunTimeParam(S, 29, 29, rtParamNames[29], SS_DOUBLE); /* registration for no_duwt*/ ssRegDlgParamAsRunTimeParam(S, 30, 30, rtParamNames[30], SS_DOUBLE); /* registration for no_rhoeps*/ ssRegDlgParamAsRunTimeParam(S, 31, 31, rtParamNames[31], SS_DOUBLE); /* registration for no_switch*/ ssRegDlgParamAsRunTimeParam(S, 32, 32, rtParamNames[32], SS_DOUBLE); /* registration for no_umax*/ ssRegDlgParamAsRunTimeParam(S, 33, 33, rtParamNames[33], SS_DOUBLE); /* registration for no_umin*/ ssRegDlgParamAsRunTimeParam(S, 34, 34, rtParamNames[34], SS_DOUBLE); /* registration for no_ymax*/ ssRegDlgParamAsRunTimeParam(S, 35, 35, rtParamNames[35], SS_DOUBLE); /* registration for no_ymin*/ ssRegDlgParamAsRunTimeParam(S, 36, 36, rtParamNames[36], SS_DOUBLE); /* registration for no_ywt*/ ssRegDlgParamAsRunTimeParam(S, 37, 37, rtParamNames[37], SS_DOUBLE); /* registration for nu*/ ssRegDlgParamAsRunTimeParam(S, 38, 38, rtParamNames[38], SS_DOUBLE); /* registration for nxQP*/ ssRegDlgParamAsRunTimeParam(S, 39, 39, rtParamNames[39], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 40, 40, rtParamNames[40], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 41, 41, rtParamNames[41], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 42, 42, rtParamNames[42], SS_DOUBLE); /* registration for return_cost*/ ssRegDlgParamAsRunTimeParam(S, 43, 43, rtParamNames[43], SS_DOUBLE); /* registration for return_sequence*/ ssRegDlgParamAsRunTimeParam(S, 44, 44, rtParamNames[44], SS_DOUBLE); /* registration for switch_inport*/ ssRegDlgParamAsRunTimeParam(S, 45, 45, rtParamNames[45], SS_DOUBLE); /* registration for uoff*/ ssRegDlgParamAsRunTimeParam(S, 46, 46, rtParamNames[46], SS_DOUBLE); /* registration for utarget*/ ssRegDlgParamAsRunTimeParam(S, 47, 47, rtParamNames[47], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 48, 48, rtParamNames[48], SS_DOUBLE); /* registration for z_degrees*/ ssRegDlgParamAsRunTimeParam(S, 49, 49, rtParamNames[49], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 3); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,3,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,3, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,3); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 2, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 3, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 4, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 5, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 6, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 7, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 8, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 9, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 10, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 11, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 12, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,3,13); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,3,5); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=5; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 13; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,3); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(1798046702U)); ssSetChecksum1(S,(436890030U)); ssSetChecksum2(S,(1950775435U)); ssSetChecksum3(S,(2111874986U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c3_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c3_mpclib(SimStruct *S) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)utMalloc(sizeof (SFc3_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc3_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c3_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c3_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c3_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c3_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c3_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c3_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c3_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c3_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c3_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c3_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c3_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c3_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c3_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c3_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c3_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/c3_mpclib.h ================================================ #ifndef __c3_mpclib_h__ #define __c3_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc3_mpclibInstanceStruct #define typedef_SFc3_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c3_sfEvent; boolean_T c3_isStable; boolean_T c3_doneDoubleBufferReInit; uint8_T c3_is_active_c3_mpclib; boolean_T c3_isQP; real_T c3_nu; real_T c3_ny; real_T c3_degrees; real_T c3_Hinv[16]; real_T c3_Kx[18]; real_T c3_Ku1[3]; real_T c3_Kut[30]; real_T c3_Kr[30]; real_T c3_Kv[66]; real_T c3_Mlim[12]; real_T c3_Mx[72]; real_T c3_Mu1[12]; real_T c3_Mv[264]; real_T c3_z_degrees[4]; real_T c3_utarget[10]; real_T c3_p; real_T c3_uoff; real_T c3_yoff; real_T c3_maxiter; real_T c3_nxQP; boolean_T c3_openloopflag; real_T c3_lims_inport; real_T c3_no_umin; real_T c3_no_umax; real_T c3_no_ymin; real_T c3_no_ymax; real_T c3_switch_inport; real_T c3_no_switch; real_T c3_enable_value; real_T c3_return_cost; real_T c3_H[16]; real_T c3_return_sequence; real_T c3_blocking_moves[10]; real_T c3_Linv[16]; real_T c3_Ac[48]; real_T c3_no_ywt; real_T c3_no_duwt; real_T c3_no_rhoeps; real_T c3_Wy; real_T c3_Wdu; real_T c3_Jm; real_T c3_SuJm; real_T c3_I2JmWuI2Jm; real_T c3_Su1; real_T c3_I1WuI2Jm; real_T c3_Sx; real_T c3_Hv; real_T c3_Wu; real_T c3_I1; } SFc3_mpclibInstanceStruct; #endif /*typedef_SFc3_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); extern void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/c4_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c4_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c4_b_p (10.0) #define c4_b_ny (1.0) #define c4_b_nv (2.0) #define c4_b_yoff (0.0) #define c4_b_voff (0.0) #define c4_b_no_md (0.0) #define c4_b_no_ref (0.0) #define c4_b_openloopflag (FALSE) /* Variable Declarations */ /* Variable Definitions */ static const char * c4_debug_family_names[16] = { "DataType", "nv", "ny", "p", "yoff", "voff", "no_md", "no_ref", "openloopflag", "nargin", "nargout", "ref", "md", "rseq", "vseq", "v" }; /* Function Declarations */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st); static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber); static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static real_T c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_info_helper(const mxArray **c4_info); static const mxArray *c4_emlrt_marshallOut(char * c4_u); static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u); static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[10]); static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[10]); static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[22]); static void c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[22]); static void c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier, real_T c4_y[2]); static void c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]); static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static int32_T c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier); static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { chartInstance->c4_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c4_is_active_c4_mpclib = 0U; } static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { real_T c4_d0; real_T c4_d1; real_T c4_d2; real_T c4_d3; real_T c4_d4; real_T c4_d5; real_T c4_d6; real_T c4_d7; sf_set_error_prefix_string( "Error evaluating data 'nv' in the parent workspace.\n"); sf_mex_import_named("nv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), &c4_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_nv = c4_d0; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c4_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_ny = c4_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c4_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_p = c4_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c4_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_yoff = c4_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'voff' in the parent workspace.\n"); sf_mex_import_named("voff", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c4_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_voff = c4_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_md' in the parent workspace.\n"); sf_mex_import_named("no_md", sf_mex_get_sfun_param(chartInstance->S, 0, 0), &c4_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_md = c4_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ref' in the parent workspace.\n"); sf_mex_import_named("no_ref", sf_mex_get_sfun_param(chartInstance->S, 1, 0), &c4_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_ref = c4_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 4, 0), &c4_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_openloopflag = (c4_d7 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { const mxArray *c4_st; const mxArray *c4_y = NULL; int32_T c4_i0; real_T c4_u[10]; const mxArray *c4_b_y = NULL; int32_T c4_i1; real_T c4_b_u[2]; const mxArray *c4_c_y = NULL; int32_T c4_i2; real_T c4_c_u[22]; const mxArray *c4_d_y = NULL; uint8_T c4_hoistedGlobal; uint8_T c4_d_u; const mxArray *c4_e_y = NULL; real_T (*c4_vseq)[22]; real_T (*c4_v)[2]; real_T (*c4_rseq)[10]; c4_v = (real_T (*)[2])ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[22])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); c4_st = NULL; c4_st = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_createcellarray(4), FALSE); for (c4_i0 = 0; c4_i0 < 10; c4_i0++) { c4_u[c4_i0] = (*c4_rseq)[c4_i0]; } c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_setcell(c4_y, 0, c4_b_y); for (c4_i1 = 0; c4_i1 < 2; c4_i1++) { c4_b_u[c4_i1] = (*c4_v)[c4_i1]; } c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", c4_b_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_setcell(c4_y, 1, c4_c_y); for (c4_i2 = 0; c4_i2 < 22; c4_i2++) { c4_c_u[c4_i2] = (*c4_vseq)[c4_i2]; } c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", c4_c_u, 0, 0U, 1U, 0U, 1, 22), FALSE); sf_mex_setcell(c4_y, 2, c4_d_y); c4_hoistedGlobal = chartInstance->c4_is_active_c4_mpclib; c4_d_u = c4_hoistedGlobal; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_d_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 3, c4_e_y); sf_mex_assign(&c4_st, c4_y, FALSE); return c4_st; } static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st) { const mxArray *c4_u; real_T c4_dv0[10]; int32_T c4_i3; real_T c4_dv1[2]; int32_T c4_i4; real_T c4_dv2[22]; int32_T c4_i5; real_T (*c4_rseq)[10]; real_T (*c4_v)[2]; real_T (*c4_vseq)[22]; c4_v = (real_T (*)[2])ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[22])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c4_doneDoubleBufferReInit = TRUE; c4_u = sf_mex_dup(c4_st); c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 0)), "rseq", c4_dv0); for (c4_i3 = 0; c4_i3 < 10; c4_i3++) { (*c4_rseq)[c4_i3] = c4_dv0[c4_i3]; } c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 1)), "v", c4_dv1); for (c4_i4 = 0; c4_i4 < 2; c4_i4++) { (*c4_v)[c4_i4] = c4_dv1[c4_i4]; } c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 2)), "vseq", c4_dv2); for (c4_i5 = 0; c4_i5 < 22; c4_i5++) { (*c4_vseq)[c4_i5] = c4_dv2[c4_i5]; } chartInstance->c4_is_active_c4_mpclib = c4_j_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 3)), "is_active_c4_mpclib"); sf_mex_destroy(&c4_u); c4_update_debugger_state_c4_mpclib(chartInstance); sf_mex_destroy(&c4_st); } static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { int32_T c4_i6; int32_T c4_i7; int32_T c4_i8; real_T c4_hoistedGlobal; real_T c4_b_hoistedGlobal; real_T c4_ref; real_T c4_md; uint32_T c4_debug_family_var_map[16]; char_T c4_DataType[6]; real_T c4_c_nv; real_T c4_c_ny; real_T c4_c_p; real_T c4_c_yoff; real_T c4_c_voff; real_T c4_c_no_md; real_T c4_c_no_ref; boolean_T c4_c_openloopflag; real_T c4_nargin = 10.0; real_T c4_nargout = 3.0; real_T c4_rseq[10]; real_T c4_vseq[22]; real_T c4_v[2]; int32_T c4_i9; static char_T c4_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c4_i10; int32_T c4_i11; int32_T c4_i12; real_T c4_u; const mxArray *c4_y = NULL; real_T c4_b_u; const mxArray *c4_b_y = NULL; real_T c4_c_u; const mxArray *c4_c_y = NULL; real_T c4_d_u; const mxArray *c4_d_y = NULL; real_T c4_e_u; const mxArray *c4_e_y = NULL; real_T c4_f_u; const mxArray *c4_f_y = NULL; real_T c4_g_u; const mxArray *c4_g_y = NULL; real_T c4_h_u; const mxArray *c4_h_y = NULL; real_T c4_i_u; const mxArray *c4_i_y = NULL; boolean_T c4_j_u; const mxArray *c4_j_y = NULL; const mxArray *c4_b_v = NULL; const mxArray *c4_b_vseq = NULL; const mxArray *c4_b_rseq = NULL; real_T c4_dv3[10]; int32_T c4_i13; real_T c4_dv4[22]; int32_T c4_i14; real_T c4_dv5[2]; int32_T c4_i15; int32_T c4_i16; int32_T c4_i17; int32_T c4_i18; real_T *c4_b_ref; real_T *c4_b_md; real_T (*c4_c_rseq)[10]; real_T (*c4_c_vseq)[22]; real_T (*c4_c_v)[2]; c4_c_v = (real_T (*)[2])ssGetOutputPortSignal(chartInstance->S, 3); c4_b_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_b_ref = (real_T *)ssGetInputPortSignal(chartInstance->S, 0); c4_c_vseq = (real_T (*)[22])ssGetOutputPortSignal(chartInstance->S, 2); c4_c_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 1U, chartInstance->c4_sfEvent); for (c4_i6 = 0; c4_i6 < 10; c4_i6++) { _SFD_DATA_RANGE_CHECK((*c4_c_rseq)[c4_i6], 0U); } for (c4_i7 = 0; c4_i7 < 22; c4_i7++) { _SFD_DATA_RANGE_CHECK((*c4_c_vseq)[c4_i7], 1U); } _SFD_DATA_RANGE_CHECK(*c4_b_ref, 2U); _SFD_DATA_RANGE_CHECK(*c4_b_md, 3U); for (c4_i8 = 0; c4_i8 < 2; c4_i8++) { _SFD_DATA_RANGE_CHECK((*c4_c_v)[c4_i8], 4U); } _SFD_DATA_RANGE_CHECK(chartInstance->c4_nv, 5U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_ny, 6U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_p, 7U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_yoff, 8U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_voff, 9U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_md, 10U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_ref, 11U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c4_openloopflag, 12U); chartInstance->c4_sfEvent = CALL_EVENT; _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); c4_hoistedGlobal = *c4_b_ref; c4_b_hoistedGlobal = *c4_b_md; c4_ref = c4_hoistedGlobal; c4_md = c4_b_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 16U, 16U, c4_debug_family_names, c4_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c4_DataType, 0U, c4_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_nv, 1U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_ny, 2U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_p, 3U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_yoff, 4U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_voff, 5U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_md, 6U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_ref, 7U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_openloopflag, 8U, c4_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargin, 9U, c4_d_sf_marshallOut, c4_d_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargout, 10U, c4_d_sf_marshallOut, c4_d_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_ref, 11U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_md, 12U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_rseq, 13U, c4_c_sf_marshallOut, c4_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_vseq, 14U, c4_b_sf_marshallOut, c4_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_v, 15U, c4_sf_marshallOut, c4_sf_marshallIn); c4_c_openloopflag = c4_b_openloopflag; c4_c_no_ref = c4_b_no_ref; c4_c_no_md = c4_b_no_md; c4_c_voff = c4_b_voff; c4_c_yoff = c4_b_yoff; c4_c_p = c4_b_p; c4_c_ny = c4_b_ny; c4_c_nv = c4_b_nv; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 3); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 4); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 5); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 7); for (c4_i9 = 0; c4_i9 < 6; c4_i9++) { c4_DataType[c4_i9] = c4_cv0[c4_i9]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 8); for (c4_i10 = 0; c4_i10 < 10; c4_i10++) { c4_rseq[c4_i10] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 9); for (c4_i11 = 0; c4_i11 < 22; c4_i11++) { c4_vseq[c4_i11] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 10); for (c4_i12 = 0; c4_i12 < 2; c4_i12++) { c4_v[c4_i12] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 11); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 12); c4_u = c4_ref; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); c4_b_u = c4_md; c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); c4_c_u = c4_b_nv; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_c_u, 0, 0U, 0U, 0U, 0), FALSE); c4_d_u = c4_b_ny; c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", &c4_d_u, 0, 0U, 0U, 0U, 0), FALSE); c4_e_u = c4_b_p; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_e_u, 0, 0U, 0U, 0U, 0), FALSE); c4_f_u = c4_b_yoff; c4_f_y = NULL; sf_mex_assign(&c4_f_y, sf_mex_create("y", &c4_f_u, 0, 0U, 0U, 0U, 0), FALSE); c4_g_u = c4_b_voff; c4_g_y = NULL; sf_mex_assign(&c4_g_y, sf_mex_create("y", &c4_g_u, 0, 0U, 0U, 0U, 0), FALSE); c4_h_u = c4_b_no_md; c4_h_y = NULL; sf_mex_assign(&c4_h_y, sf_mex_create("y", &c4_h_u, 0, 0U, 0U, 0U, 0), FALSE); c4_i_u = c4_b_no_ref; c4_i_y = NULL; sf_mex_assign(&c4_i_y, sf_mex_create("y", &c4_i_u, 0, 0U, 0U, 0U, 0), FALSE); c4_j_u = c4_b_openloopflag; c4_j_y = NULL; sf_mex_assign(&c4_j_y, sf_mex_create("y", &c4_j_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_refmd_double_mex", 3U, 10U, 14, c4_y, 14, c4_b_y, 14, c4_c_y, 14, c4_d_y, 14, c4_e_y, 14, c4_f_y, 14, c4_g_y, 14, c4_h_y, 14, c4_i_y, 14, c4_j_y, &c4_b_rseq, &c4_b_vseq, &c4_b_v); c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_rseq), "rseq", c4_dv3); for (c4_i13 = 0; c4_i13 < 10; c4_i13++) { c4_rseq[c4_i13] = c4_dv3[c4_i13]; } c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_vseq), "vseq", c4_dv4); for (c4_i14 = 0; c4_i14 < 22; c4_i14++) { c4_vseq[c4_i14] = c4_dv4[c4_i14]; } c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_v), "v", c4_dv5); for (c4_i15 = 0; c4_i15 < 2; c4_i15++) { c4_v[c4_i15] = c4_dv5[c4_i15]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, -18); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c4_b_rseq); sf_mex_destroy(&c4_b_vseq); sf_mex_destroy(&c4_b_v); for (c4_i16 = 0; c4_i16 < 10; c4_i16++) { (*c4_c_rseq)[c4_i16] = c4_rseq[c4_i16]; } for (c4_i17 = 0; c4_i17 < 22; c4_i17++) { (*c4_c_vseq)[c4_i17] = c4_vseq[c4_i17]; } for (c4_i18 = 0; c4_i18 < 2; c4_i18++) { (*c4_c_v)[c4_i18] = c4_v[c4_i18]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber) { } static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i19; real_T c4_b_inData[2]; int32_T c4_i20; real_T c4_u[2]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i19 = 0; c4_i19 < 2; c4_i19++) { c4_b_inData[c4_i19] = (*(real_T (*)[2])c4_inData)[c4_i19]; } for (c4_i20 = 0; c4_i20 < 2; c4_i20++) { c4_u[c4_i20] = c4_b_inData[c4_i20]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_v; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[2]; int32_T c4_i21; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_v = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId, c4_y); sf_mex_destroy(&c4_v); for (c4_i21 = 0; c4_i21 < 2; c4_i21++) { (*(real_T (*)[2])c4_outData)[c4_i21] = c4_y[c4_i21]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i22; real_T c4_b_inData[22]; int32_T c4_i23; real_T c4_u[22]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i22 = 0; c4_i22 < 22; c4_i22++) { c4_b_inData[c4_i22] = (*(real_T (*)[22])c4_inData)[c4_i22]; } for (c4_i23 = 0; c4_i23 < 22; c4_i23++) { c4_u[c4_i23] = c4_b_inData[c4_i23]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 22), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_vseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[22]; int32_T c4_i24; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_vseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); for (c4_i24 = 0; c4_i24 < 22; c4_i24++) { (*(real_T (*)[22])c4_outData)[c4_i24] = c4_y[c4_i24]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i25; real_T c4_b_inData[10]; int32_T c4_i26; real_T c4_u[10]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i25 = 0; c4_i25 < 10; c4_i25++) { c4_b_inData[c4_i25] = (*(real_T (*)[10])c4_inData)[c4_i25]; } for (c4_i26 = 0; c4_i26 < 10; c4_i26++) { c4_u[c4_i26] = c4_b_inData[c4_i26]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_rseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[10]; int32_T c4_i27; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_rseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); for (c4_i27 = 0; c4_i27 < 10; c4_i27++) { (*(real_T (*)[10])c4_outData)[c4_i27] = c4_y[c4_i27]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; real_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(real_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static real_T c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { real_T c4_y; real_T c4_d8; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_d8, 1, 0, 0U, 0, 0U, 0); c4_y = c4_d8; sf_mex_destroy(&c4_u); return c4_y; } static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_nargout; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_nargout = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_nargout), &c4_thisId); sf_mex_destroy(&c4_nargout); *(real_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; boolean_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(boolean_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i28; char_T c4_b_inData[6]; int32_T c4_i29; char_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i28 = 0; c4_i28 < 6; c4_i28++) { c4_b_inData[c4_i28] = (*(char_T (*)[6])c4_inData)[c4_i28]; } for (c4_i29 = 0; c4_i29 < 6; c4_i29++) { c4_u[c4_i29] = c4_b_inData[c4_i29]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c4_nameCaptureInfo = NULL; c4_nameCaptureInfo = NULL; sf_mex_assign(&c4_nameCaptureInfo, sf_mex_createstruct("structure", 2, 2, 1), FALSE); c4_info_helper(&c4_nameCaptureInfo); sf_mex_emlrtNameCapturePostProcessR2012a(&c4_nameCaptureInfo); return c4_nameCaptureInfo; } static void c4_info_helper(const mxArray **c4_info) { const mxArray *c4_rhs0 = NULL; const mxArray *c4_lhs0 = NULL; const mxArray *c4_rhs1 = NULL; const mxArray *c4_lhs1 = NULL; sf_mex_addfield(*c4_info, c4_emlrt_marshallOut(""), "context", "context", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("mtimes"), "name", "name", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m"), "resolved", "resolved", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363688678U), "fileTimeLo", "fileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 0); sf_mex_assign(&c4_rhs0, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs0, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs0), "rhs", "rhs", 0); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs0), "lhs", "lhs", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m!common_checks"), "context", "context", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "coder.internal.isBuiltInNumeric"), "name", "name", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[IXE]$matlabroot$/toolbox/shared/coder/coder/+coder/+internal/isBuiltInNumeric.m"), "resolved", "resolved", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363689356U), "fileTimeLo", "fileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 1); sf_mex_assign(&c4_rhs1, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs1, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs1), "rhs", "rhs", 1); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs1), "lhs", "lhs", 1); sf_mex_destroy(&c4_rhs0); sf_mex_destroy(&c4_lhs0); sf_mex_destroy(&c4_rhs1); sf_mex_destroy(&c4_lhs1); } static const mxArray *c4_emlrt_marshallOut(char * c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 15, 0U, 0U, 0U, 2, 1, strlen (c4_u)), FALSE); return c4_y; } static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 7, 0U, 0U, 0U, 0), FALSE); return c4_y; } static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[10]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); } static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[10]) { real_T c4_dv6[10]; int32_T c4_i30; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv6, 1, 0, 0U, 1, 0U, 1, 10); for (c4_i30 = 0; c4_i30 < 10; c4_i30++) { c4_y[c4_i30] = c4_dv6[c4_i30]; } sf_mex_destroy(&c4_u); } static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[22]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); } static void c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[22]) { real_T c4_dv7[22]; int32_T c4_i31; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv7, 1, 0, 0U, 1, 0U, 1, 22); for (c4_i31 = 0; c4_i31 < 22; c4_i31++) { c4_y[c4_i31] = c4_dv7[c4_i31]; } sf_mex_destroy(&c4_u); } static void c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier, real_T c4_y[2]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId, c4_y); sf_mex_destroy(&c4_v); } static void c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]) { real_T c4_dv8[2]; int32_T c4_i32; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv8, 1, 0, 0U, 1, 0U, 1, 2); for (c4_i32 = 0; c4_i32 < 2; c4_i32++) { c4_y[c4_i32] = c4_dv8[c4_i32]; } sf_mex_destroy(&c4_u); } static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(int32_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static int32_T c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { int32_T c4_y; int32_T c4_i33; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_i33, 1, 6, 0U, 0, 0U, 0); c4_y = c4_i33; sf_mex_destroy(&c4_u); return c4_y; } static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_b_sfEvent; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; int32_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_b_sfEvent = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_sfEvent), &c4_thisId); sf_mex_destroy(&c4_b_sfEvent); *(int32_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { boolean_T c4_y; boolean_T c4_b0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_b0, 1, 11, 0U, 0, 0U, 0); c4_y = c4_b0; sf_mex_destroy(&c4_u); return c4_y; } static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_openloopflag; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; boolean_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_openloopflag = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_openloopflag), &c4_thisId); sf_mex_destroy(&c4_c_openloopflag); *(boolean_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier) { uint8_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_k_emlrt_marshallIn(chartInstance, sf_mex_dup (c4_b_is_active_c4_mpclib), &c4_thisId); sf_mex_destroy(&c4_b_is_active_c4_mpclib); return c4_y; } static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { uint8_T c4_y; uint8_T c4_u0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_u0, 1, 3, 0U, 0, 0U, 0); c4_y = c4_u0; sf_mex_destroy(&c4_u); return c4_y; } static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c4_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1220731787U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3834945342U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(419509243U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3998385105U); } mxArray *sf_c4_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("cvpcgBd8lFaroy8z35qPTH"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,2,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,8,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,3,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(22); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c4_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c4_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x4'type','srcId','name','auxInfo'{{M[1],M[21],T\"rseq\",},{M[1],M[19],T\"v\",},{M[1],M[20],T\"vseq\",},{M[8],M[0],T\"is_active_c4_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 4, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c4_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 4, 1, 1, 13, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,2,0,1,"rseq"); _SFD_SET_DATA_PROPS(1,2,0,1,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"ref"); _SFD_SET_DATA_PROPS(3,1,1,0,"md"); _SFD_SET_DATA_PROPS(4,2,0,1,"v"); _SFD_SET_DATA_PROPS(5,10,0,0,"nv"); _SFD_SET_DATA_PROPS(6,10,0,0,"ny"); _SFD_SET_DATA_PROPS(7,10,0,0,"p"); _SFD_SET_DATA_PROPS(8,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(9,10,0,0,"voff"); _SFD_SET_DATA_PROPS(10,10,0,0,"no_md"); _SFD_SET_DATA_PROPS(11,10,0,0,"no_ref"); _SFD_SET_DATA_PROPS(12,10,0,0,"openloopflag"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,856); _SFD_CV_INIT_EML_IF(0,1,0,194,225,703,855); _SFD_CV_INIT_EML_IF(0,1,1,447,467,577,702); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_c_sf_marshallOut,(MexInFcnForType) c4_c_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 22; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_b_sf_marshallOut,(MexInFcnForType) c4_b_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(4,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_sf_marshallOut,(MexInFcnForType) c4_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(12,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_e_sf_marshallOut,(MexInFcnForType)c4_f_sf_marshallIn); { real_T *c4_ref; real_T *c4_md; real_T (*c4_rseq)[10]; real_T (*c4_vseq)[22]; real_T (*c4_v)[2]; c4_v = (real_T (*)[2])ssGetOutputPortSignal(chartInstance->S, 3); c4_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_ref = (real_T *)ssGetInputPortSignal(chartInstance->S, 0); c4_vseq = (real_T (*)[22])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SET_DATA_VALUE_PTR(0U, *c4_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c4_vseq); _SFD_SET_DATA_VALUE_PTR(2U, c4_ref); _SFD_SET_DATA_VALUE_PTR(3U, c4_md); _SFD_SET_DATA_VALUE_PTR(4U, *c4_v); _SFD_SET_DATA_VALUE_PTR(5U, &chartInstance->c4_nv); _SFD_SET_DATA_VALUE_PTR(6U, &chartInstance->c4_ny); _SFD_SET_DATA_VALUE_PTR(7U, &chartInstance->c4_p); _SFD_SET_DATA_VALUE_PTR(8U, &chartInstance->c4_yoff); _SFD_SET_DATA_VALUE_PTR(9U, &chartInstance->c4_voff); _SFD_SET_DATA_VALUE_PTR(10U, &chartInstance->c4_no_md); _SFD_SET_DATA_VALUE_PTR(11U, &chartInstance->c4_no_ref); _SFD_SET_DATA_VALUE_PTR(12U, &chartInstance->c4_openloopflag); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "GD8JDlchWKMURaoIGLPbgC"; } static void sf_opaque_initialize_c4_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); initialize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c4_mpclib(void *chartInstanceVar) { enable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c4_mpclib(void *chartInstanceVar) { disable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c4_mpclib(void *chartInstanceVar) { sf_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c4_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c4_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c4_mpclib(S); } static void sf_opaque_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c4_mpclib(S, st); } static void sf_opaque_terminate_c4_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c4_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c4_mpclib(SimStruct *S) { /* Actual parameters from chart: no_md no_ref nv ny openloopflag p voff yoff */ const char_T *rtParamNames[] = { "no_md", "no_ref", "nv", "ny", "openloopflag", "p", "voff", "yoff" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for no_md*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for no_ref*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for nv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for voff*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 4); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,4,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,4, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,4); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,4,2); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,4,3); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=3; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 2; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,4); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(1190664269U)); ssSetChecksum1(S,(1166611586U)); ssSetChecksum2(S,(3158918617U)); ssSetChecksum3(S,(259070073U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c4_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c4_mpclib(SimStruct *S) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)utMalloc(sizeof (SFc4_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc4_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c4_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c4_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c4_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c4_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c4_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c4_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c4_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c4_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c4_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c4_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c4_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c4_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c4_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c4_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c4_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/c4_mpclib.h ================================================ #ifndef __c4_mpclib_h__ #define __c4_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc4_mpclibInstanceStruct #define typedef_SFc4_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c4_sfEvent; boolean_T c4_isStable; boolean_T c4_doneDoubleBufferReInit; uint8_T c4_is_active_c4_mpclib; real_T c4_nv; real_T c4_ny; real_T c4_p; real_T c4_yoff; real_T c4_voff; real_T c4_no_md; real_T c4_no_ref; boolean_T c4_openloopflag; } SFc4_mpclibInstanceStruct; #endif /*typedef_SFc4_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); extern void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/mpclib_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpclib_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/mpclib_sfun.c ================================================ /* Include files */ #include "mpclib_sfun.h" #include "mpclib_sfun_debug_macros.h" #include "c3_mpclib.h" #include "c4_mpclib.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpclibMachineNumber_; /* Function Declarations */ /* Function Definitions */ void mpclib_initializer(void) { } void mpclib_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpclib_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (chartFileNumber==3) { c3_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } if (chartFileNumber==4) { c4_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } return 0; } unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>2 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"library")) { char machineName[100]; mxGetString(prhs[2], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (!strcmp(machineName,"mpclib")) { if (nrhs==3) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1579262872U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2134056235U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2199968077U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1649811663U); } else if (nrhs==4) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[3]); switch (chartFileNumber) { case 3: { extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); sf_c3_mpclib_get_check_sum(plhs); break; } case 4: { extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); sf_c4_mpclib_get_check_sum(plhs); break; } default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else { return 0; } } else { return 0; } } else { return 0; } } else { return 0; } return 1; #else return 0; #endif } unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(aiChksum, "K8wxaBjamtyqnvKwti3efD") == 0) { extern mxArray *sf_c3_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c3_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } case 4: { if (strcmp(aiChksum, "cvpcgBd8lFaroy8z35qPTH") == 0) { extern mxArray *sf_c4_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c4_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c3_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } case 4: { extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c4_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "o0M1hEmlLN4wqMqd3iZhdE") == 0) { extern mxArray *sf_c3_mpclib_third_party_uses_info(void); plhs[0] = sf_c3_mpclib_third_party_uses_info(); break; } } case 4: { if (strcmp(tpChksum, "GD8JDlchWKMURaoIGLPbgC") == 0) { extern mxArray *sf_c4_mpclib_third_party_uses_info(void); plhs[0] = sf_c4_mpclib_third_party_uses_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "o0M1hEmlLN4wqMqd3iZhdE") == 0) { extern mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c3_mpclib_updateBuildInfo_args_info(); break; } } case 4: { if (strcmp(tpChksum, "GD8JDlchWKMURaoIGLPbgC") == 0) { extern mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c4_mpclib_updateBuildInfo_args_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpclib_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpclibMachineNumber_ = sf_debug_initialize_machine(debugInstance,"mpclib", "sfun",1,2,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance,_mpclibMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance,_mpclibMachineNumber_,0); } void mpclib_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpclib", "mpc_miso"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/mpclib_sfun.h ================================================ #ifndef __mpclib_sfun_h__ #define __mpclib_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpclibMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpclib_initializer(void); extern void mpclib_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpclib_optimization_info(void); extern void unload_mpclib_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/mpclib_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpclib TARGET = sfun CHART_SRCS = c3_mpclib.c c4_mpclib.c MACHINE_SRC = mpclib_sfun.c MACHINE_REG = MAKEFILE = mpclib_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpclib_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- $(MACHINE)_$(TARGET).lib : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) -lib /OUT:$(MACHINE)_$(TARGET).lib @$(OBJLIST_FILE) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Created Stateflow library $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/mpclib_sfun.mol ================================================ mpclib_sfun.obj c3_mpclib.obj c4_mpclib.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/mpclib_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpclibMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_miso/mpclib/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/mpc_misonoise_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpc_misonoise_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/mpc_misonoise_sfun.c ================================================ /* Include files */ #include "mpc_misonoise_sfun.h" #include "mpc_misonoise_sfun_debug_macros.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpc_misonoiseMachineNumber_; real_T _sfTime_; /* Function Declarations */ /* Function Definitions */ void mpc_misonoise_initializer(void) { } void mpc_misonoise_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpc_misonoise_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { return 0; } unsigned int sf_mpc_misonoise_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>1 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"machine")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(96904281U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3635612654U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3782476457U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1009753451U); } else if (!strcmp(commandName,"exportedFcn")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0U); } else if (!strcmp(commandName,"makefile")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(4097033892U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2958989449U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2071990696U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(189482725U); } else if (nrhs==3 && !strcmp(commandName,"chart")) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[2]); switch (chartFileNumber) { default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else if (!strcmp(commandName,"target")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3031367619U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(4001028638U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3978939492U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(838979348U); } else { return 0; } } else { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1362349678U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2900748458U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3093618719U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2690152989U); } return 1; #else return 0; #endif } unsigned int sf_mpc_misonoise_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_misonoise_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_misonoise_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpc_misonoise_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpc_misonoise_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpc_misonoiseMachineNumber_ = sf_debug_initialize_machine(debugInstance, "mpc_misonoise","sfun",0,0,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance, _mpc_misonoiseMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance, _mpc_misonoiseMachineNumber_,0); } void mpc_misonoise_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpc_misonoise_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpc_misonoise", "mpc_misonoise"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpc_misonoise_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/mpc_misonoise_sfun.h ================================================ #ifndef __mpc_misonoise_sfun_h__ #define __mpc_misonoise_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpc_misonoiseMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpc_misonoise_initializer(void); extern void mpc_misonoise_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpc_misonoise_optimization_info(void); extern void unload_mpc_misonoise_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/mpc_misonoise_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpc_misonoise TARGET = sfun CHART_SRCS = MACHINE_SRC = mpc_misonoise_sfun.c MACHINE_REG = mpc_misonoise_sfun_registry.c MAKEFILE = mpc_misonoise_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpc_misonoise_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = "E:\2019-˼ʻģԤ\3\chapter3 \slprj\_sfprj\mpc_misonoise\mpclib\sfun\src\mpclib_sfun.lib" BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- MEX_FILE_NAME_WO_EXT = $(MACHINE)_$(TARGET) MEX_FILE_NAME = $(MEX_FILE_NAME_WO_EXT).mexw64 MEX_FILE_CSF = all : $(MEX_FILE_NAME) $(MEX_FILE_CSF) TMWLIB = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmx.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmex.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmat.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libfixedpoint.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libut.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwmathutil.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libemlrt.lib" "C:\Program Files\MATLAB\R2013b\lib\win64\libippmwipt.lib" $(MEX_FILE_NAME) : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) $(LDFLAGS) /OUT:$(MEX_FILE_NAME) /map:"$(MEX_FILE_NAME_WO_EXT).map"\ $(USER_LIBS) $(SFCLIB) $(AUX_LNK_OBJS)\ $(TMWLIB) $(LINK_MACHINE_LIBS) $(DSP_LIBS) $(BLAS_LIBS) $(THIRD_PARTY_LIBS)\ @$(OBJLIST_FILE) mt -outputresource:"$(MEX_FILE_NAME);2" -manifest "$(MEX_FILE_NAME).manifest" @echo ### Created $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/mpc_misonoise_sfun.mexw64.manifest ================================================ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/mpc_misonoise_sfun.mol ================================================ mpc_misonoise_sfun.obj mpc_misonoise_sfun_registry.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/mpc_misonoise_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpc_misonoiseMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpc_misonoiseMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/mpc_misonoise_sfun_registry.c ================================================ #include "mpc_misonoise_sfun.h" #include "sfcdebug.h" struct SfDebugInstanceStruct; struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct = NULL; #define PROCESS_MEX_SFUNCTION_CMD_LINE_CALL unsigned int sf_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_misonoise_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); if (sf_mpc_misonoise_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mpclib_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; return 0; } unsigned int sf_process_autoinheritance_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_misonoise_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_misonoise") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_misonoise_autoinheritance_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_autoinheritance_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_third_party_uses_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_misonoise_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_misonoise") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_misonoise_third_party_uses_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_third_party_uses_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_updateBuildInfo_args_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_misonoise_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_misonoise") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_misonoise_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_eml_resolved_functions_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_misonoise_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 3) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_misonoise") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpc_misonoise_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpclib_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } return 0; } unsigned int sf_mex_unlock_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_mex_unlock")) return 0; while (mexIsLocked()) { mexUnlock(); } return(1); } extern unsigned int sf_debug_api(struct SfDebugInstanceStruct* debugInstance, int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); static unsigned int sf_debug_api_wrapper( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { return sf_debug_api(sfGlobalDebugInstanceStruct, nlhs, plhs, nrhs, prhs); } static unsigned int ProcessMexSfunctionCmdLineCall(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[]) { if (sf_debug_api_wrapper(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mex_unlock_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_autoinheritance_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_third_party_uses_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_updateBuildInfo_args_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_eml_resolved_functions_info_call(nlhs,plhs,nrhs,prhs)) return 1; mexErrMsgTxt("Unsuccessful command."); return 0; } static unsigned int sfGlobalMdlStartCallCounts = 0; unsigned int sf_machine_global_initializer_called(void) { return(sfGlobalMdlStartCallCounts > 0); } extern unsigned int sf_mpc_misonoise_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); extern unsigned int sf_mpclib_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); unsigned int sf_machine_global_method_dispatcher(SimStruct *simstructPtr, const char *machineName, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (!strcmp(machineName,"mpc_misonoise")) { return(sf_mpc_misonoise_method_dispatcher(simstructPtr,chartFileNumber, specsCksum,method,data)); } if (!strcmp(machineName,"mpclib")) { return(sf_mpclib_method_dispatcher(simstructPtr,chartFileNumber,specsCksum, method,data)); } return 0; } extern void mpc_misonoise_terminator(void); extern void mpclib_terminator(void); void sf_machine_global_terminator(void) { sfGlobalMdlStartCallCounts--; if (sfGlobalMdlStartCallCounts == 0) { mpc_misonoise_terminator(); mpclib_terminator(); sf_debug_terminate(sfGlobalDebugInstanceStruct); sfGlobalDebugInstanceStruct = NULL; } return; } extern void mpc_misonoise_initializer(void); extern void mpclib_initializer(void); extern void mpc_misonoise_register_exported_symbols(SimStruct* S); extern void mpclib_register_exported_symbols(SimStruct* S); extern void mpc_misonoise_debug_initialize(struct SfDebugInstanceStruct*); extern void mpclib_debug_initialize(struct SfDebugInstanceStruct*); void sf_register_machine_exported_symbols(SimStruct* S) { mpc_misonoise_register_exported_symbols(S); mpclib_register_exported_symbols(S); } bool callCustomFcn(char initFlag) { return false; } void sf_machine_global_initializer(SimStruct* S) { bool simModeIsRTWGen = sim_mode_is_rtw_gen(S); sfGlobalMdlStartCallCounts++; if (sfGlobalMdlStartCallCounts == 1) { if (simModeIsRTWGen) { sf_register_machine_exported_symbols(S); } sfGlobalDebugInstanceStruct = sf_debug_create_debug_instance_struct(); if (!simModeIsRTWGen) { mpc_misonoise_debug_initialize(sfGlobalDebugInstanceStruct); } mpc_misonoise_initializer(); if (!simModeIsRTWGen) { mpclib_debug_initialize(sfGlobalDebugInstanceStruct); } mpclib_initializer(); } return; } #define PROCESS_MEX_SFUNCTION_EVERY_CALL unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]); #include "simulink.c" /* MEX-file interface mechanism */ static void sf_machine_load_sfunction_ptrs(SimStruct *S) { ssSetmdlInitializeSampleTimes(S,__mdlInitializeSampleTimes); ssSetmdlInitializeConditions(S,__mdlInitializeConditions); ssSetmdlOutputs(S,__mdlOutputs); ssSetmdlTerminate(S,__mdlTerminate); ssSetmdlRTW(S,__mdlRTW); ssSetmdlSetWorkWidths(S,__mdlSetWorkWidths); #if defined(MDL_HASSIMULATIONCONTEXTIO) ssSetmdlSimulationContextIO(S,__mdlSimulationContextIO); #endif #if defined(MDL_START) ssSetmdlStart(S,__mdlStart); #endif #if defined(RTW_GENERATED_ENABLE) ssSetRTWGeneratedEnable(S,__mdlEnable); #endif #if defined(RTW_GENERATED_DISABLE) ssSetRTWGeneratedDisable(S,__mdlDisable); #endif #if defined(MDL_ENABLE) ssSetmdlEnable(S,__mdlEnable); #endif #if defined(MDL_DISABLE) ssSetmdlDisable(S,__mdlDisable); #endif #if defined(MDL_SIM_STATUS_CHANGE) ssSetmdlSimStatusChange(S,__mdlSimStatusChange); #endif #if defined(MDL_EXT_MODE_EXEC) ssSetmdlExtModeExec(S,__mdlExtModeExec); #endif #if defined(MDL_UPDATE) ssSetmdlUpdate(S,__mdlUpdate); #endif #if defined(MDL_PROCESS_PARAMETERS) ssSetmdlProcessParameters(S,__mdlProcessParameters); #endif #if defined(MDL_ZERO_CROSSINGS) ssSetmdlZeroCrossings(S,__mdlZeroCrossings); #endif #if defined(MDL_DERIVATIVES) ssSetmdlDerivatives(S,__mdlDerivatives); #endif } unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]) { if (nlhs < 0) { SimStruct *S = (SimStruct *)plhs[_LHS_SS]; int_T flag = (int_T)(*(real_T*)mxGetPr(prhs[_RHS_FLAG])); if (flag == SS_CALL_MDL_SET_WORK_WIDTHS) { sf_machine_load_sfunction_ptrs(S); } } return 0; } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/_self/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/c3_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c3_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c3_b_p (40.0) #define c3_b_nu (1.0) #define c3_b_isQP (TRUE) #define c3_b_ny (1.0) #define c3_b_degrees (4.0) #define c3_b_uoff (0.0) #define c3_b_yoff (0.0) #define c3_b_maxiter (120.0) #define c3_b_nxQP (6.0) #define c3_b_openloopflag (FALSE) #define c3_b_lims_inport (0.0) #define c3_b_no_umin (1.0) #define c3_b_no_umax (1.0) #define c3_b_no_ymin (1.0) #define c3_b_no_ymax (1.0) #define c3_b_switch_inport (0.0) #define c3_b_no_switch (1.0) #define c3_b_enable_value (0.0) #define c3_b_return_cost (0.0) #define c3_b_return_sequence (0.0) #define c3_b_no_ywt (1.0) #define c3_b_no_duwt (1.0) #define c3_b_no_rhoeps (1.0) #define c3_b_Wy (0.0) #define c3_b_Wdu (0.0) #define c3_b_Jm (0.0) #define c3_b_SuJm (0.0) #define c3_b_I2JmWuI2Jm (0.0) #define c3_b_Su1 (0.0) #define c3_b_I1WuI2Jm (0.0) #define c3_b_Sx (0.0) #define c3_b_Hv (0.0) #define c3_b_Wu (0.0) #define c3_b_I1 (0.0) /* Variable Declarations */ /* Variable Definitions */ static const char * c3_debug_family_names[71] = { "DataType", "isQP", "nu", "ny", "degrees", "Hinv", "Kx", "Ku1", "Kut", "Kr", "Kv", "Mlim", "Mx", "Mu1", "Mv", "z_degrees", "utarget", "p", "uoff", "yoff", "maxiter", "nxQP", "openloopflag", "lims_inport", "no_umin", "no_umax", "no_ymin", "no_ymax", "switch_inport", "no_switch", "enable_value", "return_cost", "H", "return_sequence", "blocking_moves", "Linv", "Ac", "no_ywt", "no_duwt", "no_rhoeps", "Wy", "Wdu", "Jm", "SuJm", "I2JmWuI2Jm", "Su1", "I1WuI2Jm", "Sx", "Hv", "Wu", "I1", "nargin", "nargout", "rseq", "vseq", "x", "old_u", "iA", "umin", "umax", "ymin", "ymax", "switch_in", "ywt", "duwt", "rhoeps", "u", "cost", "useq", "status", "iAout" }; /* Function Declarations */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st); static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber); static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static real_T c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier); static real_T c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[40]); static void c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[40]); static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[16]); static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[16]); static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static int32_T c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static boolean_T c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[16]); static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]); static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]); static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[120]); static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[246]); static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[12]); static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[72]); static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[984]); static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[4]); static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[40]); static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[48]); static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static uint8_T c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier); static uint8_T c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { chartInstance->c3_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c3_is_active_c3_mpclib = 0U; } static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_d0; real_T c3_d1; real_T c3_d2; real_T c3_d3; real_T c3_dv0[16]; int32_T c3_i0; real_T c3_dv1[18]; int32_T c3_i1; real_T c3_dv2[3]; int32_T c3_i2; real_T c3_dv3[120]; int32_T c3_i3; real_T c3_dv4[120]; int32_T c3_i4; real_T c3_dv5[246]; int32_T c3_i5; real_T c3_dv6[12]; int32_T c3_i6; real_T c3_dv7[72]; int32_T c3_i7; real_T c3_dv8[12]; int32_T c3_i8; real_T c3_dv9[984]; int32_T c3_i9; real_T c3_dv10[4]; int32_T c3_i10; real_T c3_dv11[40]; int32_T c3_i11; real_T c3_d4; real_T c3_d5; real_T c3_d6; real_T c3_d7; real_T c3_d8; real_T c3_d9; real_T c3_d10; real_T c3_d11; real_T c3_d12; real_T c3_d13; real_T c3_d14; real_T c3_d15; real_T c3_d16; real_T c3_d17; real_T c3_d18; real_T c3_dv12[16]; int32_T c3_i12; real_T c3_d19; real_T c3_dv13[40]; int32_T c3_i13; real_T c3_dv14[16]; int32_T c3_i14; real_T c3_dv15[48]; int32_T c3_i15; real_T c3_d20; real_T c3_d21; real_T c3_d22; real_T c3_d23; real_T c3_d24; real_T c3_d25; real_T c3_d26; real_T c3_d27; real_T c3_d28; real_T c3_d29; real_T c3_d30; real_T c3_d31; real_T c3_d32; real_T c3_d33; sf_set_error_prefix_string( "Error evaluating data 'isQP' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 27, 0), &c3_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_isQP = (c3_d0 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nu' in the parent workspace.\n"); sf_mex_import_named("nu", sf_mex_get_sfun_param(chartInstance->S, 38, 0), &c3_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nu = c3_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 40, 0), &c3_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_ny = c3_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'degrees' in the parent workspace.\n"); sf_mex_import_named("degrees", sf_mex_get_sfun_param(chartInstance->S, 25, 0), &c3_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_degrees = c3_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hinv' in the parent workspace.\n"); sf_mex_import_named("Hinv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), c3_dv0, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i0 = 0; c3_i0 < 16; c3_i0++) { chartInstance->c3_Hinv[c3_i0] = c3_dv0[c3_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kx' in the parent workspace.\n"); sf_mex_import_named("Kx", sf_mex_get_sfun_param(chartInstance->S, 12, 0), c3_dv1, 0, 0, 0U, 1, 0U, 2, 6, 3); for (c3_i1 = 0; c3_i1 < 18; c3_i1++) { chartInstance->c3_Kx[c3_i1] = c3_dv1[c3_i1]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ku1' in the parent workspace.\n"); sf_mex_import_named("Ku1", sf_mex_get_sfun_param(chartInstance->S, 9, 0), c3_dv2, 0, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i2 = 0; c3_i2 < 3; c3_i2++) { chartInstance->c3_Ku1[c3_i2] = c3_dv2[c3_i2]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kut' in the parent workspace.\n"); sf_mex_import_named("Kut", sf_mex_get_sfun_param(chartInstance->S, 10, 0), c3_dv3, 0, 0, 0U, 1, 0U, 2, 40, 3); for (c3_i3 = 0; c3_i3 < 120; c3_i3++) { chartInstance->c3_Kut[c3_i3] = c3_dv3[c3_i3]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kr' in the parent workspace.\n"); sf_mex_import_named("Kr", sf_mex_get_sfun_param(chartInstance->S, 8, 0), c3_dv4, 0, 0, 0U, 1, 0U, 2, 40, 3); for (c3_i4 = 0; c3_i4 < 120; c3_i4++) { chartInstance->c3_Kr[c3_i4] = c3_dv4[c3_i4]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kv' in the parent workspace.\n"); sf_mex_import_named("Kv", sf_mex_get_sfun_param(chartInstance->S, 11, 0), c3_dv5, 0, 0, 0U, 1, 0U, 2, 82, 3); for (c3_i5 = 0; c3_i5 < 246; c3_i5++) { chartInstance->c3_Kv[c3_i5] = c3_dv5[c3_i5]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mlim' in the parent workspace.\n"); sf_mex_import_named("Mlim", sf_mex_get_sfun_param(chartInstance->S, 14, 0), c3_dv6, 0, 0, 0U, 1, 0U, 1, 12); for (c3_i6 = 0; c3_i6 < 12; c3_i6++) { chartInstance->c3_Mlim[c3_i6] = c3_dv6[c3_i6]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mx' in the parent workspace.\n"); sf_mex_import_named("Mx", sf_mex_get_sfun_param(chartInstance->S, 17, 0), c3_dv7, 0, 0, 0U, 1, 0U, 2, 12, 6); for (c3_i7 = 0; c3_i7 < 72; c3_i7++) { chartInstance->c3_Mx[c3_i7] = c3_dv7[c3_i7]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mu1' in the parent workspace.\n"); sf_mex_import_named("Mu1", sf_mex_get_sfun_param(chartInstance->S, 15, 0), c3_dv8, 0, 0, 0U, 1, 0U, 1, 12); for (c3_i8 = 0; c3_i8 < 12; c3_i8++) { chartInstance->c3_Mu1[c3_i8] = c3_dv8[c3_i8]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mv' in the parent workspace.\n"); sf_mex_import_named("Mv", sf_mex_get_sfun_param(chartInstance->S, 16, 0), c3_dv9, 0, 0, 0U, 1, 0U, 2, 12, 82); for (c3_i9 = 0; c3_i9 < 984; c3_i9++) { chartInstance->c3_Mv[c3_i9] = c3_dv9[c3_i9]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'z_degrees' in the parent workspace.\n"); sf_mex_import_named("z_degrees", sf_mex_get_sfun_param(chartInstance->S, 49, 0), c3_dv10, 0, 0, 0U, 1, 0U, 1, 4); for (c3_i10 = 0; c3_i10 < 4; c3_i10++) { chartInstance->c3_z_degrees[c3_i10] = c3_dv10[c3_i10]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'utarget' in the parent workspace.\n"); sf_mex_import_named("utarget", sf_mex_get_sfun_param(chartInstance->S, 47, 0), c3_dv11, 0, 0, 0U, 1, 0U, 1, 40); for (c3_i11 = 0; c3_i11 < 40; c3_i11++) { chartInstance->c3_utarget[c3_i11] = c3_dv11[c3_i11]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 42, 0), &c3_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_p = c3_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'uoff' in the parent workspace.\n"); sf_mex_import_named("uoff", sf_mex_get_sfun_param(chartInstance->S, 46, 0), &c3_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_uoff = c3_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 48, 0), &c3_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_yoff = c3_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'maxiter' in the parent workspace.\n"); sf_mex_import_named("maxiter", sf_mex_get_sfun_param(chartInstance->S, 29, 0), &c3_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_maxiter = c3_d7; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nxQP' in the parent workspace.\n"); sf_mex_import_named("nxQP", sf_mex_get_sfun_param(chartInstance->S, 39, 0), &c3_d8, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nxQP = c3_d8; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 41, 0), &c3_d9, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_openloopflag = (c3_d9 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'lims_inport' in the parent workspace.\n"); sf_mex_import_named("lims_inport", sf_mex_get_sfun_param(chartInstance->S, 28, 0), &c3_d10, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_lims_inport = c3_d10; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umin' in the parent workspace.\n"); sf_mex_import_named("no_umin", sf_mex_get_sfun_param(chartInstance->S, 34, 0), &c3_d11, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umin = c3_d11; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umax' in the parent workspace.\n"); sf_mex_import_named("no_umax", sf_mex_get_sfun_param(chartInstance->S, 33, 0), &c3_d12, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umax = c3_d12; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymin' in the parent workspace.\n"); sf_mex_import_named("no_ymin", sf_mex_get_sfun_param(chartInstance->S, 36, 0), &c3_d13, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymin = c3_d13; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymax' in the parent workspace.\n"); sf_mex_import_named("no_ymax", sf_mex_get_sfun_param(chartInstance->S, 35, 0), &c3_d14, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymax = c3_d14; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'switch_inport' in the parent workspace.\n"); sf_mex_import_named("switch_inport", sf_mex_get_sfun_param(chartInstance->S, 45, 0), &c3_d15, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_switch_inport = c3_d15; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_switch' in the parent workspace.\n"); sf_mex_import_named("no_switch", sf_mex_get_sfun_param(chartInstance->S, 32, 0), &c3_d16, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_switch = c3_d16; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'enable_value' in the parent workspace.\n"); sf_mex_import_named("enable_value", sf_mex_get_sfun_param(chartInstance->S, 26, 0), &c3_d17, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_enable_value = c3_d17; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_cost' in the parent workspace.\n"); sf_mex_import_named("return_cost", sf_mex_get_sfun_param(chartInstance->S, 43, 0), &c3_d18, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_cost = c3_d18; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'H' in the parent workspace.\n"); sf_mex_import_named("H", sf_mex_get_sfun_param(chartInstance->S, 1, 0), c3_dv12, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i12 = 0; c3_i12 < 16; c3_i12++) { chartInstance->c3_H[c3_i12] = c3_dv12[c3_i12]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_sequence' in the parent workspace.\n"); sf_mex_import_named("return_sequence", sf_mex_get_sfun_param(chartInstance->S, 44, 0), &c3_d19, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_sequence = c3_d19; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'blocking_moves' in the parent workspace.\n"); sf_mex_import_named("blocking_moves", sf_mex_get_sfun_param(chartInstance->S, 24, 0), c3_dv13, 0, 0, 0U, 1, 0U, 2, 1, 40); for (c3_i13 = 0; c3_i13 < 40; c3_i13++) { chartInstance->c3_blocking_moves[c3_i13] = c3_dv13[c3_i13]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Linv' in the parent workspace.\n"); sf_mex_import_named("Linv", sf_mex_get_sfun_param(chartInstance->S, 13, 0), c3_dv14, 0, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i14 = 0; c3_i14 < 16; c3_i14++) { chartInstance->c3_Linv[c3_i14] = c3_dv14[c3_i14]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ac' in the parent workspace.\n"); sf_mex_import_named("Ac", sf_mex_get_sfun_param(chartInstance->S, 0, 0), c3_dv15, 0, 0, 0U, 1, 0U, 2, 12, 4); for (c3_i15 = 0; c3_i15 < 48; c3_i15++) { chartInstance->c3_Ac[c3_i15] = c3_dv15[c3_i15]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ywt' in the parent workspace.\n"); sf_mex_import_named("no_ywt", sf_mex_get_sfun_param(chartInstance->S, 37, 0), &c3_d20, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ywt = c3_d20; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_duwt' in the parent workspace.\n"); sf_mex_import_named("no_duwt", sf_mex_get_sfun_param(chartInstance->S, 30, 0), &c3_d21, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_duwt = c3_d21; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_rhoeps' in the parent workspace.\n"); sf_mex_import_named("no_rhoeps", sf_mex_get_sfun_param(chartInstance->S, 31, 0), &c3_d22, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_rhoeps = c3_d22; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wy' in the parent workspace.\n"); sf_mex_import_named("Wy", sf_mex_get_sfun_param(chartInstance->S, 23, 0), &c3_d23, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wy = c3_d23; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wdu' in the parent workspace.\n"); sf_mex_import_named("Wdu", sf_mex_get_sfun_param(chartInstance->S, 21, 0), &c3_d24, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wdu = c3_d24; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Jm' in the parent workspace.\n"); sf_mex_import_named("Jm", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c3_d25, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Jm = c3_d25; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'SuJm' in the parent workspace.\n"); sf_mex_import_named("SuJm", sf_mex_get_sfun_param(chartInstance->S, 19, 0), &c3_d26, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_SuJm = c3_d26; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I2JmWuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I2JmWuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c3_d27, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I2JmWuI2Jm = c3_d27; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Su1' in the parent workspace.\n"); sf_mex_import_named("Su1", sf_mex_get_sfun_param(chartInstance->S, 18, 0), &c3_d28, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Su1 = c3_d28; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1WuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I1WuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c3_d29, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1WuI2Jm = c3_d29; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Sx' in the parent workspace.\n"); sf_mex_import_named("Sx", sf_mex_get_sfun_param(chartInstance->S, 20, 0), &c3_d30, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Sx = c3_d30; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hv' in the parent workspace.\n"); sf_mex_import_named("Hv", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c3_d31, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Hv = c3_d31; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wu' in the parent workspace.\n"); sf_mex_import_named("Wu", sf_mex_get_sfun_param(chartInstance->S, 22, 0), &c3_d32, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wu = c3_d32; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1' in the parent workspace.\n"); sf_mex_import_named("I1", sf_mex_get_sfun_param(chartInstance->S, 4, 0), &c3_d33, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1 = c3_d33; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { const mxArray *c3_st; const mxArray *c3_y = NULL; real_T c3_hoistedGlobal; real_T c3_u; const mxArray *c3_b_y = NULL; int32_T c3_i16; boolean_T c3_b_u[16]; const mxArray *c3_c_y = NULL; real_T c3_b_hoistedGlobal; real_T c3_c_u; const mxArray *c3_d_y = NULL; real_T c3_c_hoistedGlobal; real_T c3_d_u; const mxArray *c3_e_y = NULL; int32_T c3_i17; real_T c3_e_u[40]; const mxArray *c3_f_y = NULL; uint8_T c3_d_hoistedGlobal; uint8_T c3_f_u; const mxArray *c3_g_y = NULL; real_T *c3_cost; real_T *c3_status; real_T *c3_g_u; real_T (*c3_useq)[40]; boolean_T (*c3_iAout)[16]; c3_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_g_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_st = NULL; c3_st = NULL; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_createcellarray(6), FALSE); c3_hoistedGlobal = *c3_cost; c3_u = c3_hoistedGlobal; c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 0, c3_b_y); for (c3_i16 = 0; c3_i16 < 16; c3_i16++) { c3_b_u[c3_i16] = (*c3_iAout)[c3_i16]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_b_u, 11, 0U, 1U, 0U, 1, 16), FALSE); sf_mex_setcell(c3_y, 1, c3_c_y); c3_b_hoistedGlobal = *c3_status; c3_c_u = c3_b_hoistedGlobal; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_c_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 2, c3_d_y); c3_c_hoistedGlobal = *c3_g_u; c3_d_u = c3_c_hoistedGlobal; c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", &c3_d_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 3, c3_e_y); for (c3_i17 = 0; c3_i17 < 40; c3_i17++) { c3_e_u[c3_i17] = (*c3_useq)[c3_i17]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 1, 40), FALSE); sf_mex_setcell(c3_y, 4, c3_f_y); c3_d_hoistedGlobal = chartInstance->c3_is_active_c3_mpclib; c3_f_u = c3_d_hoistedGlobal; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_f_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 5, c3_g_y); sf_mex_assign(&c3_st, c3_y, FALSE); return c3_st; } static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st) { const mxArray *c3_u; boolean_T c3_bv0[16]; int32_T c3_i18; real_T c3_dv16[40]; int32_T c3_i19; real_T *c3_cost; real_T *c3_status; real_T *c3_b_u; boolean_T (*c3_iAout)[16]; real_T (*c3_useq)[40]; c3_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_b_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c3_doneDoubleBufferReInit = TRUE; c3_u = sf_mex_dup(c3_st); *c3_cost = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 0)), "cost"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 1)), "iAout", c3_bv0); for (c3_i18 = 0; c3_i18 < 16; c3_i18++) { (*c3_iAout)[c3_i18] = c3_bv0[c3_i18]; } *c3_status = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 2)), "status"); *c3_b_u = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 3)), "u"); c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 4)), "useq", c3_dv16); for (c3_i19 = 0; c3_i19 < 40; c3_i19++) { (*c3_useq)[c3_i19] = c3_dv16[c3_i19]; } chartInstance->c3_is_active_c3_mpclib = c3_t_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 5)), "is_active_c3_mpclib"); sf_mex_destroy(&c3_u); c3_update_debugger_state_c3_mpclib(chartInstance); sf_mex_destroy(&c3_st); } static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { int32_T c3_i20; int32_T c3_i21; int32_T c3_i22; int32_T c3_i23; int32_T c3_i24; int32_T c3_i25; int32_T c3_i26; int32_T c3_i27; int32_T c3_i28; int32_T c3_i29; int32_T c3_i30; int32_T c3_i31; int32_T c3_i32; int32_T c3_i33; int32_T c3_i34; int32_T c3_i35; int32_T c3_i36; int32_T c3_i37; int32_T c3_i38; int32_T c3_i39; int32_T c3_i40; int32_T c3_i41; real_T *c3_old_u; real_T *c3_umin; real_T *c3_umax; real_T *c3_ymin; real_T *c3_ymax; real_T *c3_switch_in; real_T *c3_ywt; real_T *c3_duwt; real_T *c3_rhoeps; real_T *c3_u; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[16]; real_T (*c3_useq)[40]; boolean_T (*c3_iA)[16]; real_T (*c3_x)[8]; real_T (*c3_vseq)[82]; real_T (*c3_rseq)[40]; c3_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[16])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[8])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[82])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[40])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 0U, chartInstance->c3_sfEvent); for (c3_i20 = 0; c3_i20 < 40; c3_i20++) { _SFD_DATA_RANGE_CHECK((*c3_rseq)[c3_i20], 0U); } for (c3_i21 = 0; c3_i21 < 82; c3_i21++) { _SFD_DATA_RANGE_CHECK((*c3_vseq)[c3_i21], 1U); } for (c3_i22 = 0; c3_i22 < 8; c3_i22++) { _SFD_DATA_RANGE_CHECK((*c3_x)[c3_i22], 2U); } _SFD_DATA_RANGE_CHECK(*c3_old_u, 3U); for (c3_i23 = 0; c3_i23 < 16; c3_i23++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iA)[c3_i23], 4U); } _SFD_DATA_RANGE_CHECK(*c3_umin, 5U); _SFD_DATA_RANGE_CHECK(*c3_umax, 6U); _SFD_DATA_RANGE_CHECK(*c3_ymin, 7U); _SFD_DATA_RANGE_CHECK(*c3_ymax, 8U); _SFD_DATA_RANGE_CHECK(*c3_switch_in, 9U); _SFD_DATA_RANGE_CHECK(*c3_ywt, 10U); _SFD_DATA_RANGE_CHECK(*c3_duwt, 11U); _SFD_DATA_RANGE_CHECK(*c3_rhoeps, 12U); _SFD_DATA_RANGE_CHECK(*c3_u, 13U); _SFD_DATA_RANGE_CHECK(*c3_cost, 14U); for (c3_i24 = 0; c3_i24 < 40; c3_i24++) { _SFD_DATA_RANGE_CHECK((*c3_useq)[c3_i24], 15U); } _SFD_DATA_RANGE_CHECK(*c3_status, 16U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_isQP, 17U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nu, 18U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_ny, 19U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_degrees, 20U); for (c3_i25 = 0; c3_i25 < 16; c3_i25++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hinv[c3_i25], 21U); } for (c3_i26 = 0; c3_i26 < 18; c3_i26++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kx[c3_i26], 22U); } for (c3_i27 = 0; c3_i27 < 3; c3_i27++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ku1[c3_i27], 23U); } for (c3_i28 = 0; c3_i28 < 120; c3_i28++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kut[c3_i28], 24U); } for (c3_i29 = 0; c3_i29 < 120; c3_i29++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kr[c3_i29], 25U); } for (c3_i30 = 0; c3_i30 < 246; c3_i30++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kv[c3_i30], 26U); } for (c3_i31 = 0; c3_i31 < 12; c3_i31++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mlim[c3_i31], 27U); } for (c3_i32 = 0; c3_i32 < 72; c3_i32++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mx[c3_i32], 28U); } for (c3_i33 = 0; c3_i33 < 12; c3_i33++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mu1[c3_i33], 29U); } for (c3_i34 = 0; c3_i34 < 984; c3_i34++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mv[c3_i34], 30U); } for (c3_i35 = 0; c3_i35 < 4; c3_i35++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_z_degrees[c3_i35], 31U); } for (c3_i36 = 0; c3_i36 < 40; c3_i36++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_utarget[c3_i36], 32U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_p, 33U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_uoff, 34U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_yoff, 35U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_maxiter, 36U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nxQP, 37U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_openloopflag, 38U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_lims_inport, 39U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umin, 40U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umax, 41U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymin, 42U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymax, 43U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_switch_inport, 44U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_switch, 45U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_enable_value, 46U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_cost, 47U); for (c3_i37 = 0; c3_i37 < 16; c3_i37++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_H[c3_i37], 48U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_sequence, 49U); for (c3_i38 = 0; c3_i38 < 40; c3_i38++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_blocking_moves[c3_i38], 50U); } for (c3_i39 = 0; c3_i39 < 16; c3_i39++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Linv[c3_i39], 51U); } for (c3_i40 = 0; c3_i40 < 48; c3_i40++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ac[c3_i40], 52U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ywt, 53U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_duwt, 54U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_rhoeps, 55U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wy, 56U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wdu, 57U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Jm, 58U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_SuJm, 59U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I2JmWuI2Jm, 60U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Su1, 61U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1WuI2Jm, 62U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Sx, 63U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hv, 64U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wu, 65U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1, 66U); for (c3_i41 = 0; c3_i41 < 16; c3_i41++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iAout)[c3_i41], 67U); } chartInstance->c3_sfEvent = CALL_EVENT; c3_chartstep_c3_mpclib(chartInstance); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_hoistedGlobal; real_T c3_b_hoistedGlobal; real_T c3_c_hoistedGlobal; real_T c3_d_hoistedGlobal; real_T c3_e_hoistedGlobal; real_T c3_f_hoistedGlobal; real_T c3_g_hoistedGlobal; real_T c3_h_hoistedGlobal; real_T c3_i_hoistedGlobal; int32_T c3_i42; real_T c3_rseq[40]; int32_T c3_i43; real_T c3_vseq[82]; int32_T c3_i44; real_T c3_x[8]; real_T c3_old_u; int32_T c3_i45; boolean_T c3_iA[16]; real_T c3_umin; real_T c3_umax; real_T c3_ymin; real_T c3_ymax; real_T c3_switch_in; real_T c3_ywt; real_T c3_duwt; real_T c3_rhoeps; uint32_T c3_debug_family_var_map[71]; char_T c3_DataType[6]; boolean_T c3_c_isQP; real_T c3_c_nu; real_T c3_c_ny; real_T c3_c_degrees; real_T c3_c_Hinv[16]; real_T c3_c_Kx[18]; real_T c3_c_Ku1[3]; real_T c3_c_Kut[120]; real_T c3_c_Kr[120]; real_T c3_c_Kv[246]; real_T c3_c_Mlim[12]; real_T c3_c_Mx[72]; real_T c3_c_Mu1[12]; real_T c3_c_Mv[984]; real_T c3_c_z_degrees[4]; real_T c3_c_utarget[40]; real_T c3_c_p; real_T c3_c_uoff; real_T c3_c_yoff; real_T c3_c_maxiter; real_T c3_c_nxQP; boolean_T c3_c_openloopflag; real_T c3_c_lims_inport; real_T c3_c_no_umin; real_T c3_c_no_umax; real_T c3_c_no_ymin; real_T c3_c_no_ymax; real_T c3_c_switch_inport; real_T c3_c_no_switch; real_T c3_c_enable_value; real_T c3_c_return_cost; real_T c3_c_H[16]; real_T c3_c_return_sequence; real_T c3_c_blocking_moves[40]; real_T c3_c_Linv[16]; real_T c3_c_Ac[48]; real_T c3_c_no_ywt; real_T c3_c_no_duwt; real_T c3_c_no_rhoeps; real_T c3_c_Wy; real_T c3_c_Wdu; real_T c3_c_Jm; real_T c3_c_SuJm; real_T c3_c_I2JmWuI2Jm; real_T c3_c_Su1; real_T c3_c_I1WuI2Jm; real_T c3_c_Sx; real_T c3_c_Hv; real_T c3_c_Wu; real_T c3_c_I1; real_T c3_nargin = 63.0; real_T c3_nargout = 5.0; real_T c3_u; real_T c3_cost; real_T c3_useq[40]; real_T c3_status; boolean_T c3_iAout[16]; int32_T c3_i46; static real_T c3_d_Ac[48] = { -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -0.0, -0.0, 1.0, 0.0, 0.0, -0.0, -1.0, -1.0, -0.0, 1.0, 1.0, -0.0, -1.0, -0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, -0.0, -0.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i47; static real_T c3_d_Linv[16] = { 9.5293659672860915, -0.86844807428262549, -0.78546832875962258, 0.0, 0.0, 9.5786883232093754, -0.78330991247066073, 0.0, 0.0, 0.0, 9.61864258443344, 0.0, 0.0, 0.0, 0.0, 0.01 }; int32_T c3_i48; static real_T c3_d_blocking_moves[40] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i49; static real_T c3_d_H[16] = { 0.011012146693774781, 0.00099841202336169253, 0.00098057063784741274, 0.0, 0.00099841202336169253, 0.010989552338308575, 0.00097648355484339843, 0.0, 0.00098057063784741274, 0.00097648355484339833, 0.01096827013212761, 0.0, 0.0, 0.0, 0.0, 10000.0 }; int32_T c3_i50; int32_T c3_i51; int32_T c3_i52; int32_T c3_i53; static real_T c3_d_Mu1[12] = { -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i54; int32_T c3_i55; static real_T c3_d_Mlim[12] = { 1.0, 1.0, 1.0, -0.0, -0.0, -0.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 }; int32_T c3_i56; static real_T c3_d_Kv[246] = { 1.1061255464357791E-5, 0.0, 1.3403500298723072E-5, 0.0, 1.5961793848871613E-5, 0.0, 1.8618295520923505E-5, 0.0, 2.1262603414861315E-5, 0.0, 2.3795223951575392E-5, 0.0, 2.613029505276633E-5, 0.0, 2.8197530057740519E-5, 0.0, 2.9943382129068596E-5, 0.0, 3.1331458350854228E-5, 0.0, 3.23422382323457E-5, 0.0, 3.2972172296135653E-5, 0.0, 3.3232252482381542E-5, 0.0, 3.3146157086390476E-5, 0.0, 3.2748078918912833E-5, 0.0, 3.2080346571307281E-5, 0.0, 3.1190945471580006E-5, 0.0, 3.0131038347453542E-5, 0.0, 2.8952574377077262E-5, 0.0, 2.7706063374386463E-5, 0.0, 2.6438576519314784E-5, 0.0, 2.5192019094474745E-5, 0.0, 2.4001704089489622E-5, 0.0, 2.2895238985743267E-5, 0.0, 2.189172206496517E-5, 0.0, 2.10012296284969E-5, 0.0, 2.0224561898399027E-5, 0.0, 1.9553203311115292E-5, 0.0, 1.8969442505518306E-5, 0.0, 1.8446588527086805E-5, 0.0, 1.7949212478678648E-5, 0.0, 1.7433337792246337E-5, 0.0, 1.6846497112517279E-5, 0.0, 1.6127569007051586E-5, 0.0, 1.5206302781700433E-5, 0.0, 1.4002433923904835E-5, 0.0, 1.2424285358817545E-5, 0.0, 1.0366739923635002E-5, 0.0, 7.7084562715135E-6, 0.0, 4.3081827089326748E-6, 0.0, 0.0, 0.0, 9.054744782028578E-6, 0.0, 1.1059490251206105E-5, 0.0, 1.3401344262510862E-5, 0.0, 1.5959160460295327E-5, 0.0, 1.861507909285312E-5, 0.0, 2.1258674860744726E-5, 0.0, 2.3790425604741809E-5, 0.0, 2.612443433870918E-5, 0.0, 2.8190371765426331E-5, 0.0, 2.9934638971092331E-5, 0.0, 3.1320779433586986E-5, 0.0, 3.232919497334132E-5, 0.0, 3.2956241223612314E-5, 0.0, 3.3212794226461081E-5, 0.0, 3.312239071894024E-5, 0.0, 3.271905061215767E-5, 0.0, 3.2044891317371804E-5, 0.0, 3.1147640326631946E-5, 0.0, 3.0078145323971453E-5, 0.0, 2.888797069230881E-5, 0.0, 2.7627156255622968E-5, 0.0, 2.6342199146818573E-5, 0.0, 2.5074303505883644E-5, 0.0, 2.3857925944906004E-5, 0.0, 2.2719627963385685E-5, 0.0, 2.167723027789429E-5, 0.0, 2.0739248768165822E-5, 0.0, 1.9904577753005476E-5, 0.0, 1.916237379336408E-5, 0.0, 1.849208225456657E-5, 0.0, 1.7863539399938322E-5, 0.0, 1.7237074666636614E-5, 0.0, 1.6563530704428049E-5, 0.0, 1.5784112336388757E-5, 0.0, 1.4829969311260832E-5, 0.0, 1.3621410934273811E-5, 0.0, 1.206664265007239E-5, 0.0, 1.0059904557736209E-5, 0.0, 7.4788786918533082E-6, 0.0, 4.1812145978315121E-6, 0.0, 0.0, 0.0, 7.4119953730823676E-6, 0.0, 9.0530315921532247E-6, 0.0, 1.1057397756367098E-5, 0.0, 1.3398788483543063E-5, 0.0, 1.5956038824814807E-5, 0.0, 1.8611266318667245E-5, 0.0, 2.1254017927837854E-5, 0.0, 2.3784737614044789E-5, 0.0, 2.6117487011183457E-5, 0.0, 2.8181886280424566E-5, 0.0, 2.9924274776306851E-5, 0.0, 3.1308120577489886E-5, 0.0, 3.2313733411589171E-5, 0.0, 3.2937356429442777E-5, 0.0, 3.3189728286775115E-5, 0.0, 3.3094217916588249E-5, 0.0, 3.268464027365985E-5, 0.0, 3.2002862435021337E-5, 0.0, 3.1096306133806688E-5, 0.0, 3.0015445599266768E-5, 0.0, 2.8811389075618626E-5, 0.0, 2.7533619257773209E-5, 0.0, 2.6227952799654856E-5, 0.0, 2.4934762702348156E-5, 0.0, 2.3687490422591875E-5, 0.0, 2.2511457546342738E-5, 0.0, 2.142297035635068E-5, 0.0, 2.042869499870287E-5, 0.0, 1.9525266522426389E-5, 0.0, 1.8699082010133654E-5, 0.0, 1.7926216392695982E-5, 0.0, 1.7172389275500903E-5, 0.0, 1.6392901998346008E-5, 0.0, 1.5532455879014473E-5, 0.0, 1.4524754700759098E-5, 0.0, 1.32917864215927E-5, 0.0, 1.1742670110278372E-5, 0.0, 9.77194342577625E-6, 0.0, 7.2571525960329048E-6, 0.0, 4.0555897153900627E-6, 0.0, 0.0, 0.0 }; int32_T c3_i57; static real_T c3_d_Kr[120] = { -4.8214229598965584E-7, -1.8485694956578623E-6, -3.9632907853728255E-6, -6.6748675532157314E-6, -9.823628770824104E-6, -1.3248512065079052E-5, -1.6793306561057088E-5, -2.0312117582142232E-5, -2.3673919935732017E-5, -2.6766113772986577E-5, -2.9497043036835796E-5, -3.1797479675288924E-5, -3.362111573190241E-5, -3.4944139057282E-5, -3.576399594340853E-5, -3.6097464998909966E-5, -3.5978180883343419E-5, -3.5453754198733706E-5, -3.45826352356192E-5, -3.3430864933338768E-5, -3.206884705071547E-5, -3.0568261987185312E-5, -2.8999225859050864E-5, -2.7427779271678294E-5, -2.5913769684733575E-5, -2.4509170254674673E-5, -2.325685739852128E-5, -2.2189849803001687E-5, -2.1330993837472602E-5, -2.0693064824587758E-5, -2.0279240752577146E-5, -2.0083895014774358E-5, -2.0093647741714021E-5, -2.0288611231668682E-5, -2.0643763759149887E-5, -2.113038742458166E-5, -2.1717509401193969E-5, -2.2373291577333984E-5, -2.3066320784298656E-5, -2.3766760121125513E-5, -0.0, -4.8214229598965584E-7, -1.8485694956578623E-6, -3.9632907853728255E-6, -6.6748675532157314E-6, -9.823628770824104E-6, -1.3248512065079052E-5, -1.6793306561057088E-5, -2.0312117582142232E-5, -2.3673919935732017E-5, -2.6766113772986577E-5, -2.9497043036835796E-5, -3.1797479675288924E-5, -3.362111573190241E-5, -3.4944139057282E-5, -3.576399594340853E-5, -3.6097464998909966E-5, -3.5978180883343419E-5, -3.5453754198733706E-5, -3.45826352356192E-5, -3.3430864933338768E-5, -3.206884705071547E-5, -3.0568261987185312E-5, -2.8999225859050864E-5, -2.7427779271678294E-5, -2.5913769684733575E-5, -2.4509170254674673E-5, -2.325685739852128E-5, -2.2189849803001687E-5, -2.1330993837472602E-5, -2.0693064824587758E-5, -2.0279240752577146E-5, -2.0083895014774358E-5, -2.0093647741714021E-5, -2.0288611231668682E-5, -2.0643763759149887E-5, -2.113038742458166E-5, -2.1717509401193969E-5, -2.2373291577333984E-5, -2.3066320784298656E-5, -0.0, -0.0, -4.8214229598965584E-7, -1.8485694956578623E-6, -3.9632907853728255E-6, -6.6748675532157314E-6, -9.823628770824104E-6, -1.3248512065079052E-5, -1.6793306561057088E-5, -2.0312117582142232E-5, -2.3673919935732017E-5, -2.6766113772986577E-5, -2.9497043036835796E-5, -3.1797479675288924E-5, -3.362111573190241E-5, -3.4944139057282E-5, -3.576399594340853E-5, -3.6097464998909966E-5, -3.5978180883343419E-5, -3.5453754198733706E-5, -3.45826352356192E-5, -3.3430864933338768E-5, -3.206884705071547E-5, -3.0568261987185312E-5, -2.8999225859050864E-5, -2.7427779271678294E-5, -2.5913769684733575E-5, -2.4509170254674673E-5, -2.325685739852128E-5, -2.2189849803001687E-5, -2.1330993837472602E-5, -2.0693064824587758E-5, -2.0279240752577146E-5, -2.0083895014774358E-5, -2.0093647741714021E-5, -2.0288611231668682E-5, -2.0643763759149887E-5, -2.113038742458166E-5, -2.1717509401193969E-5, -2.2373291577333984E-5 }; int32_T c3_i58; int32_T c3_i59; static real_T c3_d_Ku1[3] = { 0.001012146693774779, 0.00099841202336169253, 0.00098057063784741253 }; int32_T c3_i60; static real_T c3_d_Kx[18] = { 5.81380892253297E-5, -7.6992303482020355E-5, 4.9959881061444248E-5, 3.5714303443921009E-5, -8.6318235228568119E-5, 0.00093515439029275926, 3.3816621521332978E-5, -8.7024393190059517E-5, 4.0897163419608722E-5, 1.3987682425195502E-5, -9.162470712811274E-5, 0.00091138763017163367, 1.0459436584984047E-5, -9.2249328460078123E-5, 3.3477430157940007E-5, -5.2608879585477165E-6, -9.1109713903212558E-5, 0.00088832130938733505 }; int32_T c3_i61; static real_T c3_d_Hinv[16] = { 92.179978291680015, -7.7033283005954782, -7.5551391157310706, 0.0, -7.7033283005954782, 92.364844412162427, -7.5343780808991276, 0.0, -7.5551391157310706, -7.5343780808991276, 92.5182851670764, 0.0, 0.0, 0.0, 0.0, 0.0001 }; int32_T c3_i62; static char_T c3_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c3_i63; int32_T c3_i64; int32_T c3_i65; real_T c3_b_u[40]; const mxArray *c3_y = NULL; int32_T c3_i66; real_T c3_c_u[82]; const mxArray *c3_b_y = NULL; real_T c3_d_u; const mxArray *c3_c_y = NULL; real_T c3_e_u; const mxArray *c3_d_y = NULL; real_T c3_f_u; const mxArray *c3_e_y = NULL; real_T c3_g_u; const mxArray *c3_f_y = NULL; real_T c3_h_u; const mxArray *c3_g_y = NULL; int32_T c3_i67; real_T c3_i_u[8]; const mxArray *c3_h_y = NULL; real_T c3_j_u; const mxArray *c3_i_y = NULL; int32_T c3_i68; boolean_T c3_k_u[16]; const mxArray *c3_j_y = NULL; boolean_T c3_l_u; const mxArray *c3_k_y = NULL; real_T c3_m_u; const mxArray *c3_l_y = NULL; real_T c3_n_u; const mxArray *c3_m_y = NULL; real_T c3_o_u; const mxArray *c3_n_y = NULL; int32_T c3_i69; real_T c3_p_u[16]; const mxArray *c3_o_y = NULL; int32_T c3_i70; real_T c3_q_u[18]; const mxArray *c3_p_y = NULL; int32_T c3_i71; real_T c3_r_u[3]; const mxArray *c3_q_y = NULL; int32_T c3_i72; real_T c3_s_u[120]; const mxArray *c3_r_y = NULL; int32_T c3_i73; real_T c3_t_u[120]; const mxArray *c3_s_y = NULL; int32_T c3_i74; real_T c3_u_u[246]; const mxArray *c3_t_y = NULL; int32_T c3_i75; real_T c3_v_u[12]; const mxArray *c3_u_y = NULL; int32_T c3_i76; real_T c3_w_u[72]; const mxArray *c3_v_y = NULL; int32_T c3_i77; real_T c3_x_u[12]; const mxArray *c3_w_y = NULL; int32_T c3_i78; real_T c3_y_u[984]; const mxArray *c3_x_y = NULL; int32_T c3_i79; real_T c3_ab_u[4]; const mxArray *c3_y_y = NULL; int32_T c3_i80; real_T c3_bb_u[40]; const mxArray *c3_ab_y = NULL; real_T c3_cb_u; const mxArray *c3_bb_y = NULL; real_T c3_db_u; const mxArray *c3_cb_y = NULL; real_T c3_eb_u; const mxArray *c3_db_y = NULL; real_T c3_fb_u; const mxArray *c3_eb_y = NULL; real_T c3_gb_u; const mxArray *c3_fb_y = NULL; boolean_T c3_hb_u; const mxArray *c3_gb_y = NULL; real_T c3_ib_u; const mxArray *c3_hb_y = NULL; real_T c3_jb_u; const mxArray *c3_ib_y = NULL; real_T c3_kb_u; const mxArray *c3_jb_y = NULL; real_T c3_lb_u; const mxArray *c3_kb_y = NULL; real_T c3_mb_u; const mxArray *c3_lb_y = NULL; real_T c3_nb_u; const mxArray *c3_mb_y = NULL; real_T c3_ob_u; const mxArray *c3_nb_y = NULL; real_T c3_pb_u; const mxArray *c3_ob_y = NULL; real_T c3_qb_u; const mxArray *c3_pb_y = NULL; int32_T c3_i81; real_T c3_rb_u[16]; const mxArray *c3_qb_y = NULL; real_T c3_sb_u; const mxArray *c3_rb_y = NULL; int32_T c3_i82; real_T c3_tb_u[40]; const mxArray *c3_sb_y = NULL; int32_T c3_i83; real_T c3_ub_u[16]; const mxArray *c3_tb_y = NULL; int32_T c3_i84; real_T c3_vb_u[48]; const mxArray *c3_ub_y = NULL; real_T c3_wb_u; const mxArray *c3_vb_y = NULL; real_T c3_xb_u; const mxArray *c3_wb_y = NULL; real_T c3_yb_u; const mxArray *c3_xb_y = NULL; real_T c3_ac_u; const mxArray *c3_yb_y = NULL; real_T c3_bc_u; const mxArray *c3_ac_y = NULL; real_T c3_cc_u; const mxArray *c3_bc_y = NULL; real_T c3_dc_u; const mxArray *c3_cc_y = NULL; real_T c3_ec_u; const mxArray *c3_dc_y = NULL; real_T c3_fc_u; const mxArray *c3_ec_y = NULL; real_T c3_gc_u; const mxArray *c3_fc_y = NULL; real_T c3_hc_u; const mxArray *c3_gc_y = NULL; real_T c3_ic_u; const mxArray *c3_hc_y = NULL; real_T c3_jc_u; const mxArray *c3_ic_y = NULL; real_T c3_kc_u; const mxArray *c3_jc_y = NULL; real_T c3_lc_u; const mxArray *c3_kc_y = NULL; real_T c3_mc_u; const mxArray *c3_lc_y = NULL; real_T c3_nc_u; const mxArray *c3_mc_y = NULL; const mxArray *c3_b_iAout = NULL; const mxArray *c3_b_status = NULL; const mxArray *c3_b_useq = NULL; const mxArray *c3_b_cost = NULL; const mxArray *c3_oc_u = NULL; real_T c3_dv17[40]; int32_T c3_i85; boolean_T c3_bv1[16]; int32_T c3_i86; int32_T c3_i87; int32_T c3_i88; real_T *c3_b_old_u; real_T *c3_b_umin; real_T *c3_b_umax; real_T *c3_b_ymin; real_T *c3_b_ymax; real_T *c3_b_switch_in; real_T *c3_b_ywt; real_T *c3_b_duwt; real_T *c3_b_rhoeps; real_T *c3_pc_u; real_T *c3_c_cost; real_T *c3_c_status; real_T (*c3_c_useq)[40]; boolean_T (*c3_c_iAout)[16]; boolean_T (*c3_b_iA)[16]; real_T (*c3_b_x)[8]; real_T (*c3_b_vseq)[82]; real_T (*c3_b_rseq)[40]; c3_c_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_c_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_c_useq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 3); c3_c_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_pc_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_b_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_b_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_b_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_b_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_b_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_b_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_b_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_b_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_b_iA = (boolean_T (*)[16])ssGetInputPortSignal(chartInstance->S, 4); c3_b_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_b_x = (real_T (*)[8])ssGetInputPortSignal(chartInstance->S, 2); c3_b_vseq = (real_T (*)[82])ssGetInputPortSignal(chartInstance->S, 1); c3_b_rseq = (real_T (*)[40])ssGetInputPortSignal(chartInstance->S, 0); _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); c3_hoistedGlobal = *c3_b_old_u; c3_b_hoistedGlobal = *c3_b_umin; c3_c_hoistedGlobal = *c3_b_umax; c3_d_hoistedGlobal = *c3_b_ymin; c3_e_hoistedGlobal = *c3_b_ymax; c3_f_hoistedGlobal = *c3_b_switch_in; c3_g_hoistedGlobal = *c3_b_ywt; c3_h_hoistedGlobal = *c3_b_duwt; c3_i_hoistedGlobal = *c3_b_rhoeps; for (c3_i42 = 0; c3_i42 < 40; c3_i42++) { c3_rseq[c3_i42] = (*c3_b_rseq)[c3_i42]; } for (c3_i43 = 0; c3_i43 < 82; c3_i43++) { c3_vseq[c3_i43] = (*c3_b_vseq)[c3_i43]; } for (c3_i44 = 0; c3_i44 < 8; c3_i44++) { c3_x[c3_i44] = (*c3_b_x)[c3_i44]; } c3_old_u = c3_hoistedGlobal; for (c3_i45 = 0; c3_i45 < 16; c3_i45++) { c3_iA[c3_i45] = (*c3_b_iA)[c3_i45]; } c3_umin = c3_b_hoistedGlobal; c3_umax = c3_c_hoistedGlobal; c3_ymin = c3_d_hoistedGlobal; c3_ymax = c3_e_hoistedGlobal; c3_switch_in = c3_f_hoistedGlobal; c3_ywt = c3_g_hoistedGlobal; c3_duwt = c3_h_hoistedGlobal; c3_rhoeps = c3_i_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 71U, 71U, c3_debug_family_names, c3_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c3_DataType, 0U, c3_r_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_isQP, 1U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nu, 2U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_ny, 3U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_degrees, 4U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Hinv, 5U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kx, 6U, c3_q_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ku1, 7U, c3_p_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kut, 8U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kr, 9U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kv, 10U, c3_n_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mlim, 11U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mx, 12U, c3_m_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mu1, 13U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mv, 14U, c3_k_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_z_degrees, 15U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_utarget, 16U, c3_c_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_p, 17U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_uoff, 18U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_yoff, 19U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_maxiter, 20U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nxQP, 21U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_openloopflag, 22U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_lims_inport, 23U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umin, 24U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umax, 25U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymin, 26U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymax, 27U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_switch_inport, 28U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_switch, 29U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_enable_value, 30U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_cost, 31U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_H, 32U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_sequence, 33U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_blocking_moves, 34U, c3_h_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Linv, 35U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ac, 36U, c3_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ywt, 37U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_duwt, 38U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_rhoeps, 39U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wy, 40U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wdu, 41U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Jm, 42U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_SuJm, 43U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I2JmWuI2Jm, 44U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Su1, 45U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1WuI2Jm, 46U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Sx, 47U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Hv, 48U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wu, 49U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1, 50U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargin, 51U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargout, 52U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c3_rseq, 53U, c3_c_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_vseq, 54U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_x, 55U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_old_u, 56U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_iA, 57U, c3_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_umin, 58U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_umax, 59U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ymin, 60U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ymax, 61U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_switch_in, 62U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_ywt, 63U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_duwt, 64U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_rhoeps, 65U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_u, 66U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_cost, 67U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_useq, 68U, c3_c_sf_marshallOut, c3_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_status, 69U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_iAout, 70U, c3_sf_marshallOut, c3_sf_marshallIn); c3_c_I1 = c3_b_I1; c3_c_Wu = c3_b_Wu; c3_c_Hv = c3_b_Hv; c3_c_Sx = c3_b_Sx; c3_c_I1WuI2Jm = c3_b_I1WuI2Jm; c3_c_Su1 = c3_b_Su1; c3_c_I2JmWuI2Jm = c3_b_I2JmWuI2Jm; c3_c_SuJm = c3_b_SuJm; c3_c_Jm = c3_b_Jm; c3_c_Wdu = c3_b_Wdu; c3_c_Wy = c3_b_Wy; c3_c_no_rhoeps = c3_b_no_rhoeps; c3_c_no_duwt = c3_b_no_duwt; c3_c_no_ywt = c3_b_no_ywt; for (c3_i46 = 0; c3_i46 < 48; c3_i46++) { c3_c_Ac[c3_i46] = c3_d_Ac[c3_i46]; } for (c3_i47 = 0; c3_i47 < 16; c3_i47++) { c3_c_Linv[c3_i47] = c3_d_Linv[c3_i47]; } for (c3_i48 = 0; c3_i48 < 40; c3_i48++) { c3_c_blocking_moves[c3_i48] = c3_d_blocking_moves[c3_i48]; } c3_c_return_sequence = c3_b_return_sequence; for (c3_i49 = 0; c3_i49 < 16; c3_i49++) { c3_c_H[c3_i49] = c3_d_H[c3_i49]; } c3_c_return_cost = c3_b_return_cost; c3_c_enable_value = c3_b_enable_value; c3_c_no_switch = c3_b_no_switch; c3_c_switch_inport = c3_b_switch_inport; c3_c_no_ymax = c3_b_no_ymax; c3_c_no_ymin = c3_b_no_ymin; c3_c_no_umax = c3_b_no_umax; c3_c_no_umin = c3_b_no_umin; c3_c_lims_inport = c3_b_lims_inport; c3_c_openloopflag = c3_b_openloopflag; c3_c_nxQP = c3_b_nxQP; c3_c_maxiter = c3_b_maxiter; c3_c_yoff = c3_b_yoff; c3_c_uoff = c3_b_uoff; c3_c_p = c3_b_p; for (c3_i50 = 0; c3_i50 < 40; c3_i50++) { c3_c_utarget[c3_i50] = 0.0; } for (c3_i51 = 0; c3_i51 < 4; c3_i51++) { c3_c_z_degrees[c3_i51] = 0.0; } for (c3_i52 = 0; c3_i52 < 984; c3_i52++) { c3_c_Mv[c3_i52] = 0.0; } for (c3_i53 = 0; c3_i53 < 12; c3_i53++) { c3_c_Mu1[c3_i53] = c3_d_Mu1[c3_i53]; } for (c3_i54 = 0; c3_i54 < 72; c3_i54++) { c3_c_Mx[c3_i54] = 0.0; } for (c3_i55 = 0; c3_i55 < 12; c3_i55++) { c3_c_Mlim[c3_i55] = c3_d_Mlim[c3_i55]; } for (c3_i56 = 0; c3_i56 < 246; c3_i56++) { c3_c_Kv[c3_i56] = c3_d_Kv[c3_i56]; } for (c3_i57 = 0; c3_i57 < 120; c3_i57++) { c3_c_Kr[c3_i57] = c3_d_Kr[c3_i57]; } for (c3_i58 = 0; c3_i58 < 120; c3_i58++) { c3_c_Kut[c3_i58] = 0.0; } for (c3_i59 = 0; c3_i59 < 3; c3_i59++) { c3_c_Ku1[c3_i59] = c3_d_Ku1[c3_i59]; } for (c3_i60 = 0; c3_i60 < 18; c3_i60++) { c3_c_Kx[c3_i60] = c3_d_Kx[c3_i60]; } for (c3_i61 = 0; c3_i61 < 16; c3_i61++) { c3_c_Hinv[c3_i61] = c3_d_Hinv[c3_i61]; } c3_c_degrees = c3_b_degrees; c3_c_ny = c3_b_ny; c3_c_nu = c3_b_nu; c3_c_isQP = c3_b_isQP; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 8); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 9); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 10); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 12); for (c3_i62 = 0; c3_i62 < 6; c3_i62++) { c3_DataType[c3_i62] = c3_cv0[c3_i62]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 13); c3_u = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 14); c3_cost = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 15); for (c3_i63 = 0; c3_i63 < 40; c3_i63++) { c3_useq[c3_i63] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 16); c3_status = 1.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 17); for (c3_i64 = 0; c3_i64 < 16; c3_i64++) { c3_iAout[c3_i64] = FALSE; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 18); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 19); for (c3_i65 = 0; c3_i65 < 40; c3_i65++) { c3_b_u[c3_i65] = c3_rseq[c3_i65]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_b_u, 0, 0U, 1U, 0U, 1, 40), FALSE); for (c3_i66 = 0; c3_i66 < 82; c3_i66++) { c3_c_u[c3_i66] = c3_vseq[c3_i66]; } c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", c3_c_u, 0, 0U, 1U, 0U, 1, 82), FALSE); c3_d_u = c3_umin; c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", &c3_d_u, 0, 0U, 0U, 0U, 0), FALSE); c3_e_u = c3_umax; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_e_u, 0, 0U, 0U, 0U, 0), FALSE); c3_f_u = c3_ymin; c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", &c3_f_u, 0, 0U, 0U, 0U, 0), FALSE); c3_g_u = c3_ymax; c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", &c3_g_u, 0, 0U, 0U, 0U, 0), FALSE); c3_h_u = c3_switch_in; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_h_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i67 = 0; c3_i67 < 8; c3_i67++) { c3_i_u[c3_i67] = c3_x[c3_i67]; } c3_h_y = NULL; sf_mex_assign(&c3_h_y, sf_mex_create("y", c3_i_u, 0, 0U, 1U, 0U, 1, 8), FALSE); c3_j_u = c3_old_u; c3_i_y = NULL; sf_mex_assign(&c3_i_y, sf_mex_create("y", &c3_j_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i68 = 0; c3_i68 < 16; c3_i68++) { c3_k_u[c3_i68] = c3_iA[c3_i68]; } c3_j_y = NULL; sf_mex_assign(&c3_j_y, sf_mex_create("y", c3_k_u, 11, 0U, 1U, 0U, 1, 16), FALSE); c3_l_u = c3_b_isQP; c3_k_y = NULL; sf_mex_assign(&c3_k_y, sf_mex_create("y", &c3_l_u, 11, 0U, 0U, 0U, 0), FALSE); c3_m_u = c3_b_nu; c3_l_y = NULL; sf_mex_assign(&c3_l_y, sf_mex_create("y", &c3_m_u, 0, 0U, 0U, 0U, 0), FALSE); c3_n_u = c3_b_ny; c3_m_y = NULL; sf_mex_assign(&c3_m_y, sf_mex_create("y", &c3_n_u, 0, 0U, 0U, 0U, 0), FALSE); c3_o_u = c3_b_degrees; c3_n_y = NULL; sf_mex_assign(&c3_n_y, sf_mex_create("y", &c3_o_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i69 = 0; c3_i69 < 16; c3_i69++) { c3_p_u[c3_i69] = c3_d_Hinv[c3_i69]; } c3_o_y = NULL; sf_mex_assign(&c3_o_y, sf_mex_create("y", c3_p_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); for (c3_i70 = 0; c3_i70 < 18; c3_i70++) { c3_q_u[c3_i70] = c3_d_Kx[c3_i70]; } c3_p_y = NULL; sf_mex_assign(&c3_p_y, sf_mex_create("y", c3_q_u, 0, 0U, 1U, 0U, 2, 6, 3), FALSE); for (c3_i71 = 0; c3_i71 < 3; c3_i71++) { c3_r_u[c3_i71] = c3_d_Ku1[c3_i71]; } c3_q_y = NULL; sf_mex_assign(&c3_q_y, sf_mex_create("y", c3_r_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); for (c3_i72 = 0; c3_i72 < 120; c3_i72++) { c3_s_u[c3_i72] = 0.0; } c3_r_y = NULL; sf_mex_assign(&c3_r_y, sf_mex_create("y", c3_s_u, 0, 0U, 1U, 0U, 2, 40, 3), FALSE); for (c3_i73 = 0; c3_i73 < 120; c3_i73++) { c3_t_u[c3_i73] = c3_d_Kr[c3_i73]; } c3_s_y = NULL; sf_mex_assign(&c3_s_y, sf_mex_create("y", c3_t_u, 0, 0U, 1U, 0U, 2, 40, 3), FALSE); for (c3_i74 = 0; c3_i74 < 246; c3_i74++) { c3_u_u[c3_i74] = c3_d_Kv[c3_i74]; } c3_t_y = NULL; sf_mex_assign(&c3_t_y, sf_mex_create("y", c3_u_u, 0, 0U, 1U, 0U, 2, 82, 3), FALSE); for (c3_i75 = 0; c3_i75 < 12; c3_i75++) { c3_v_u[c3_i75] = c3_d_Mlim[c3_i75]; } c3_u_y = NULL; sf_mex_assign(&c3_u_y, sf_mex_create("y", c3_v_u, 0, 0U, 1U, 0U, 1, 12), FALSE); for (c3_i76 = 0; c3_i76 < 72; c3_i76++) { c3_w_u[c3_i76] = 0.0; } c3_v_y = NULL; sf_mex_assign(&c3_v_y, sf_mex_create("y", c3_w_u, 0, 0U, 1U, 0U, 2, 12, 6), FALSE); for (c3_i77 = 0; c3_i77 < 12; c3_i77++) { c3_x_u[c3_i77] = c3_d_Mu1[c3_i77]; } c3_w_y = NULL; sf_mex_assign(&c3_w_y, sf_mex_create("y", c3_x_u, 0, 0U, 1U, 0U, 1, 12), FALSE); for (c3_i78 = 0; c3_i78 < 984; c3_i78++) { c3_y_u[c3_i78] = 0.0; } c3_x_y = NULL; sf_mex_assign(&c3_x_y, sf_mex_create("y", c3_y_u, 0, 0U, 1U, 0U, 2, 12, 82), FALSE); for (c3_i79 = 0; c3_i79 < 4; c3_i79++) { c3_ab_u[c3_i79] = 0.0; } c3_y_y = NULL; sf_mex_assign(&c3_y_y, sf_mex_create("y", c3_ab_u, 0, 0U, 1U, 0U, 1, 4), FALSE); for (c3_i80 = 0; c3_i80 < 40; c3_i80++) { c3_bb_u[c3_i80] = 0.0; } c3_ab_y = NULL; sf_mex_assign(&c3_ab_y, sf_mex_create("y", c3_bb_u, 0, 0U, 1U, 0U, 1, 40), FALSE); c3_cb_u = c3_b_p; c3_bb_y = NULL; sf_mex_assign(&c3_bb_y, sf_mex_create("y", &c3_cb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_db_u = c3_b_uoff; c3_cb_y = NULL; sf_mex_assign(&c3_cb_y, sf_mex_create("y", &c3_db_u, 0, 0U, 0U, 0U, 0), FALSE); c3_eb_u = c3_b_yoff; c3_db_y = NULL; sf_mex_assign(&c3_db_y, sf_mex_create("y", &c3_eb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fb_u = c3_b_maxiter; c3_eb_y = NULL; sf_mex_assign(&c3_eb_y, sf_mex_create("y", &c3_fb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gb_u = c3_b_nxQP; c3_fb_y = NULL; sf_mex_assign(&c3_fb_y, sf_mex_create("y", &c3_gb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hb_u = c3_b_openloopflag; c3_gb_y = NULL; sf_mex_assign(&c3_gb_y, sf_mex_create("y", &c3_hb_u, 11, 0U, 0U, 0U, 0), FALSE); c3_ib_u = c3_b_lims_inport; c3_hb_y = NULL; sf_mex_assign(&c3_hb_y, sf_mex_create("y", &c3_ib_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jb_u = c3_b_no_umin; c3_ib_y = NULL; sf_mex_assign(&c3_ib_y, sf_mex_create("y", &c3_jb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kb_u = c3_b_no_umax; c3_jb_y = NULL; sf_mex_assign(&c3_jb_y, sf_mex_create("y", &c3_kb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lb_u = c3_b_no_ymin; c3_kb_y = NULL; sf_mex_assign(&c3_kb_y, sf_mex_create("y", &c3_lb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mb_u = c3_b_no_ymax; c3_lb_y = NULL; sf_mex_assign(&c3_lb_y, sf_mex_create("y", &c3_mb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nb_u = c3_b_switch_inport; c3_mb_y = NULL; sf_mex_assign(&c3_mb_y, sf_mex_create("y", &c3_nb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ob_u = c3_b_no_switch; c3_nb_y = NULL; sf_mex_assign(&c3_nb_y, sf_mex_create("y", &c3_ob_u, 0, 0U, 0U, 0U, 0), FALSE); c3_pb_u = c3_b_enable_value; c3_ob_y = NULL; sf_mex_assign(&c3_ob_y, sf_mex_create("y", &c3_pb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_qb_u = c3_b_return_cost; c3_pb_y = NULL; sf_mex_assign(&c3_pb_y, sf_mex_create("y", &c3_qb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i81 = 0; c3_i81 < 16; c3_i81++) { c3_rb_u[c3_i81] = c3_d_H[c3_i81]; } c3_qb_y = NULL; sf_mex_assign(&c3_qb_y, sf_mex_create("y", c3_rb_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); c3_sb_u = c3_b_return_sequence; c3_rb_y = NULL; sf_mex_assign(&c3_rb_y, sf_mex_create("y", &c3_sb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i82 = 0; c3_i82 < 40; c3_i82++) { c3_tb_u[c3_i82] = c3_d_blocking_moves[c3_i82]; } c3_sb_y = NULL; sf_mex_assign(&c3_sb_y, sf_mex_create("y", c3_tb_u, 0, 0U, 1U, 0U, 2, 1, 40), FALSE); for (c3_i83 = 0; c3_i83 < 16; c3_i83++) { c3_ub_u[c3_i83] = c3_d_Linv[c3_i83]; } c3_tb_y = NULL; sf_mex_assign(&c3_tb_y, sf_mex_create("y", c3_ub_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); for (c3_i84 = 0; c3_i84 < 48; c3_i84++) { c3_vb_u[c3_i84] = c3_d_Ac[c3_i84]; } c3_ub_y = NULL; sf_mex_assign(&c3_ub_y, sf_mex_create("y", c3_vb_u, 0, 0U, 1U, 0U, 2, 12, 4), FALSE); c3_wb_u = c3_ywt; c3_vb_y = NULL; sf_mex_assign(&c3_vb_y, sf_mex_create("y", &c3_wb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_xb_u = c3_duwt; c3_wb_y = NULL; sf_mex_assign(&c3_wb_y, sf_mex_create("y", &c3_xb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_yb_u = c3_rhoeps; c3_xb_y = NULL; sf_mex_assign(&c3_xb_y, sf_mex_create("y", &c3_yb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ac_u = c3_b_no_ywt; c3_yb_y = NULL; sf_mex_assign(&c3_yb_y, sf_mex_create("y", &c3_ac_u, 0, 0U, 0U, 0U, 0), FALSE); c3_bc_u = c3_b_no_duwt; c3_ac_y = NULL; sf_mex_assign(&c3_ac_y, sf_mex_create("y", &c3_bc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_cc_u = c3_b_no_rhoeps; c3_bc_y = NULL; sf_mex_assign(&c3_bc_y, sf_mex_create("y", &c3_cc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_dc_u = c3_b_Wy; c3_cc_y = NULL; sf_mex_assign(&c3_cc_y, sf_mex_create("y", &c3_dc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ec_u = c3_b_Wdu; c3_dc_y = NULL; sf_mex_assign(&c3_dc_y, sf_mex_create("y", &c3_ec_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fc_u = c3_b_Jm; c3_ec_y = NULL; sf_mex_assign(&c3_ec_y, sf_mex_create("y", &c3_fc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gc_u = c3_b_SuJm; c3_fc_y = NULL; sf_mex_assign(&c3_fc_y, sf_mex_create("y", &c3_gc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hc_u = c3_b_I2JmWuI2Jm; c3_gc_y = NULL; sf_mex_assign(&c3_gc_y, sf_mex_create("y", &c3_hc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ic_u = c3_b_Su1; c3_hc_y = NULL; sf_mex_assign(&c3_hc_y, sf_mex_create("y", &c3_ic_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jc_u = c3_b_I1WuI2Jm; c3_ic_y = NULL; sf_mex_assign(&c3_ic_y, sf_mex_create("y", &c3_jc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kc_u = c3_b_Sx; c3_jc_y = NULL; sf_mex_assign(&c3_jc_y, sf_mex_create("y", &c3_kc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lc_u = c3_b_Hv; c3_kc_y = NULL; sf_mex_assign(&c3_kc_y, sf_mex_create("y", &c3_lc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mc_u = c3_b_Wu; c3_lc_y = NULL; sf_mex_assign(&c3_lc_y, sf_mex_create("y", &c3_mc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nc_u = c3_b_I1; c3_mc_y = NULL; sf_mex_assign(&c3_mc_y, sf_mex_create("y", &c3_nc_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_optimizer_double_mex", 5U, 63U, 14, c3_y, 14, c3_b_y, 14, c3_c_y, 14, c3_d_y, 14, c3_e_y, 14, c3_f_y, 14, c3_g_y, 14, c3_h_y, 14, c3_i_y, 14, c3_j_y, 14, c3_k_y, 14, c3_l_y, 14, c3_m_y, 14, c3_n_y, 14, c3_o_y, 14, c3_p_y, 14, c3_q_y, 14, c3_r_y, 14, c3_s_y, 14, c3_t_y, 14, c3_u_y, 14, c3_v_y, 14, c3_w_y, 14, c3_x_y, 14, c3_y_y, 14, c3_ab_y, 14, c3_bb_y, 14, c3_cb_y, 14, c3_db_y, 14, c3_eb_y, 14, c3_fb_y, 14, c3_gb_y, 14, c3_hb_y, 14, c3_ib_y, 14, c3_jb_y, 14, c3_kb_y, 14, c3_lb_y, 14, c3_mb_y, 14, c3_nb_y, 14, c3_ob_y, 14, c3_pb_y, 14, c3_qb_y, 14, c3_rb_y, 14, c3_sb_y, 14, c3_tb_y, 14, c3_ub_y, 14, c3_vb_y, 14, c3_wb_y, 14, c3_xb_y, 14, c3_yb_y, 14, c3_ac_y, 14, c3_bc_y, 14, c3_cc_y, 14, c3_dc_y, 14, c3_ec_y, 14, c3_fc_y, 14, c3_gc_y, 14, c3_hc_y, 14, c3_ic_y, 14, c3_jc_y, 14, c3_kc_y, 14, c3_lc_y, 14, c3_mc_y, &c3_oc_u, &c3_b_cost, &c3_b_useq, &c3_b_status, &c3_b_iAout); c3_u = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_oc_u), "u"); c3_cost = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_cost), "cost"); c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_useq), "useq", c3_dv17); for (c3_i85 = 0; c3_i85 < 40; c3_i85++) { c3_useq[c3_i85] = c3_dv17[c3_i85]; } c3_status = c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_status), "status"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_iAout), "iAout", c3_bv1); for (c3_i86 = 0; c3_i86 < 16; c3_i86++) { c3_iAout[c3_i86] = c3_bv1[c3_i86]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, -31); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c3_oc_u); sf_mex_destroy(&c3_b_cost); sf_mex_destroy(&c3_b_useq); sf_mex_destroy(&c3_b_status); sf_mex_destroy(&c3_b_iAout); *c3_pc_u = c3_u; *c3_c_cost = c3_cost; for (c3_i87 = 0; c3_i87 < 40; c3_i87++) { (*c3_c_useq)[c3_i87] = c3_useq[c3_i87]; } *c3_c_status = c3_status; for (c3_i88 = 0; c3_i88 < 16; c3_i88++) { (*c3_c_iAout)[c3_i88] = c3_iAout[c3_i88]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); } static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber) { } static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i89; boolean_T c3_b_inData[16]; int32_T c3_i90; boolean_T c3_u[16]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i89 = 0; c3_i89 < 16; c3_i89++) { c3_b_inData[c3_i89] = (*(boolean_T (*)[16])c3_inData)[c3_i89]; } for (c3_i90 = 0; c3_i90 < 16; c3_i90++) { c3_u[c3_i90] = c3_b_inData[c3_i90]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 11, 0U, 1U, 0U, 1, 16), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_iAout; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y[16]; int32_T c3_i91; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_iAout = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); for (c3_i91 = 0; c3_i91 < 16; c3_i91++) { (*(boolean_T (*)[16])c3_outData)[c3_i91] = c3_y[c3_i91]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; real_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(real_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_u; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_u = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId); sf_mex_destroy(&c3_u); *(real_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i92; real_T c3_b_inData[40]; int32_T c3_i93; real_T c3_u[40]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i92 = 0; c3_i92 < 40; c3_i92++) { c3_b_inData[c3_i92] = (*(real_T (*)[40])c3_inData)[c3_i92]; } for (c3_i93 = 0; c3_i93 < 40; c3_i93++) { c3_u[c3_i93] = c3_b_inData[c3_i93]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 40), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_useq; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[40]; int32_T c3_i94; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_useq = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); for (c3_i94 = 0; c3_i94 < 40; c3_i94++) { (*(real_T (*)[40])c3_outData)[c3_i94] = c3_y[c3_i94]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i95; real_T c3_b_inData[8]; int32_T c3_i96; real_T c3_u[8]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i95 = 0; c3_i95 < 8; c3_i95++) { c3_b_inData[c3_i95] = (*(real_T (*)[8])c3_inData)[c3_i95]; } for (c3_i96 = 0; c3_i96 < 8; c3_i96++) { c3_u[c3_i96] = c3_b_inData[c3_i96]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 8), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i97; real_T c3_b_inData[82]; int32_T c3_i98; real_T c3_u[82]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i97 = 0; c3_i97 < 82; c3_i97++) { c3_b_inData[c3_i97] = (*(real_T (*)[82])c3_inData)[c3_i97]; } for (c3_i98 = 0; c3_i98 < 82; c3_i98++) { c3_u[c3_i98] = c3_b_inData[c3_i98]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 82), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i99; int32_T c3_i100; int32_T c3_i101; real_T c3_b_inData[48]; int32_T c3_i102; int32_T c3_i103; int32_T c3_i104; real_T c3_u[48]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i99 = 0; for (c3_i100 = 0; c3_i100 < 4; c3_i100++) { for (c3_i101 = 0; c3_i101 < 12; c3_i101++) { c3_b_inData[c3_i101 + c3_i99] = (*(real_T (*)[48])c3_inData)[c3_i101 + c3_i99]; } c3_i99 += 12; } c3_i102 = 0; for (c3_i103 = 0; c3_i103 < 4; c3_i103++) { for (c3_i104 = 0; c3_i104 < 12; c3_i104++) { c3_u[c3_i104 + c3_i102] = c3_b_inData[c3_i104 + c3_i102]; } c3_i102 += 12; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 12, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i105; int32_T c3_i106; int32_T c3_i107; real_T c3_b_inData[16]; int32_T c3_i108; int32_T c3_i109; int32_T c3_i110; real_T c3_u[16]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i105 = 0; for (c3_i106 = 0; c3_i106 < 4; c3_i106++) { for (c3_i107 = 0; c3_i107 < 4; c3_i107++) { c3_b_inData[c3_i107 + c3_i105] = (*(real_T (*)[16])c3_inData)[c3_i107 + c3_i105]; } c3_i105 += 4; } c3_i108 = 0; for (c3_i109 = 0; c3_i109 < 4; c3_i109++) { for (c3_i110 = 0; c3_i110 < 4; c3_i110++) { c3_u[c3_i110 + c3_i108] = c3_b_inData[c3_i110 + c3_i108]; } c3_i108 += 4; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 4, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i111; real_T c3_b_inData[40]; int32_T c3_i112; real_T c3_u[40]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i111 = 0; c3_i111 < 40; c3_i111++) { c3_b_inData[c3_i111] = (*(real_T (*)[40])c3_inData)[c3_i111]; } for (c3_i112 = 0; c3_i112 < 40; c3_i112++) { c3_u[c3_i112] = c3_b_inData[c3_i112]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 40), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; boolean_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(boolean_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i113; real_T c3_b_inData[4]; int32_T c3_i114; real_T c3_u[4]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i113 = 0; c3_i113 < 4; c3_i113++) { c3_b_inData[c3_i113] = (*(real_T (*)[4])c3_inData)[c3_i113]; } for (c3_i114 = 0; c3_i114 < 4; c3_i114++) { c3_u[c3_i114] = c3_b_inData[c3_i114]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 4), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i115; int32_T c3_i116; int32_T c3_i117; real_T c3_b_inData[984]; int32_T c3_i118; int32_T c3_i119; int32_T c3_i120; real_T c3_u[984]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i115 = 0; for (c3_i116 = 0; c3_i116 < 82; c3_i116++) { for (c3_i117 = 0; c3_i117 < 12; c3_i117++) { c3_b_inData[c3_i117 + c3_i115] = (*(real_T (*)[984])c3_inData)[c3_i117 + c3_i115]; } c3_i115 += 12; } c3_i118 = 0; for (c3_i119 = 0; c3_i119 < 82; c3_i119++) { for (c3_i120 = 0; c3_i120 < 12; c3_i120++) { c3_u[c3_i120 + c3_i118] = c3_b_inData[c3_i120 + c3_i118]; } c3_i118 += 12; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 12, 82), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i121; real_T c3_b_inData[12]; int32_T c3_i122; real_T c3_u[12]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i121 = 0; c3_i121 < 12; c3_i121++) { c3_b_inData[c3_i121] = (*(real_T (*)[12])c3_inData)[c3_i121]; } for (c3_i122 = 0; c3_i122 < 12; c3_i122++) { c3_u[c3_i122] = c3_b_inData[c3_i122]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 12), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i123; int32_T c3_i124; int32_T c3_i125; real_T c3_b_inData[72]; int32_T c3_i126; int32_T c3_i127; int32_T c3_i128; real_T c3_u[72]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i123 = 0; for (c3_i124 = 0; c3_i124 < 6; c3_i124++) { for (c3_i125 = 0; c3_i125 < 12; c3_i125++) { c3_b_inData[c3_i125 + c3_i123] = (*(real_T (*)[72])c3_inData)[c3_i125 + c3_i123]; } c3_i123 += 12; } c3_i126 = 0; for (c3_i127 = 0; c3_i127 < 6; c3_i127++) { for (c3_i128 = 0; c3_i128 < 12; c3_i128++) { c3_u[c3_i128 + c3_i126] = c3_b_inData[c3_i128 + c3_i126]; } c3_i126 += 12; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 12, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i129; int32_T c3_i130; int32_T c3_i131; real_T c3_b_inData[246]; int32_T c3_i132; int32_T c3_i133; int32_T c3_i134; real_T c3_u[246]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i129 = 0; for (c3_i130 = 0; c3_i130 < 3; c3_i130++) { for (c3_i131 = 0; c3_i131 < 82; c3_i131++) { c3_b_inData[c3_i131 + c3_i129] = (*(real_T (*)[246])c3_inData)[c3_i131 + c3_i129]; } c3_i129 += 82; } c3_i132 = 0; for (c3_i133 = 0; c3_i133 < 3; c3_i133++) { for (c3_i134 = 0; c3_i134 < 82; c3_i134++) { c3_u[c3_i134 + c3_i132] = c3_b_inData[c3_i134 + c3_i132]; } c3_i132 += 82; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 82, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i135; int32_T c3_i136; int32_T c3_i137; real_T c3_b_inData[120]; int32_T c3_i138; int32_T c3_i139; int32_T c3_i140; real_T c3_u[120]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i135 = 0; for (c3_i136 = 0; c3_i136 < 3; c3_i136++) { for (c3_i137 = 0; c3_i137 < 40; c3_i137++) { c3_b_inData[c3_i137 + c3_i135] = (*(real_T (*)[120])c3_inData)[c3_i137 + c3_i135]; } c3_i135 += 40; } c3_i138 = 0; for (c3_i139 = 0; c3_i139 < 3; c3_i139++) { for (c3_i140 = 0; c3_i140 < 40; c3_i140++) { c3_u[c3_i140 + c3_i138] = c3_b_inData[c3_i140 + c3_i138]; } c3_i138 += 40; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 40, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i141; real_T c3_b_inData[3]; int32_T c3_i142; real_T c3_u[3]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i141 = 0; c3_i141 < 3; c3_i141++) { c3_b_inData[c3_i141] = (*(real_T (*)[3])c3_inData)[c3_i141]; } for (c3_i142 = 0; c3_i142 < 3; c3_i142++) { c3_u[c3_i142] = c3_b_inData[c3_i142]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i143; int32_T c3_i144; int32_T c3_i145; real_T c3_b_inData[18]; int32_T c3_i146; int32_T c3_i147; int32_T c3_i148; real_T c3_u[18]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i143 = 0; for (c3_i144 = 0; c3_i144 < 3; c3_i144++) { for (c3_i145 = 0; c3_i145 < 6; c3_i145++) { c3_b_inData[c3_i145 + c3_i143] = (*(real_T (*)[18])c3_inData)[c3_i145 + c3_i143]; } c3_i143 += 6; } c3_i146 = 0; for (c3_i147 = 0; c3_i147 < 3; c3_i147++) { for (c3_i148 = 0; c3_i148 < 6; c3_i148++) { c3_u[c3_i148 + c3_i146] = c3_b_inData[c3_i148 + c3_i146]; } c3_i146 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i149; char_T c3_b_inData[6]; int32_T c3_i150; char_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i149 = 0; c3_i149 < 6; c3_i149++) { c3_b_inData[c3_i149] = (*(char_T (*)[6])c3_inData)[c3_i149]; } for (c3_i150 = 0; c3_i150 < 6; c3_i150++) { c3_u[c3_i150] = c3_b_inData[c3_i150]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c3_nameCaptureInfo = NULL; c3_nameCaptureInfo = NULL; sf_mex_assign(&c3_nameCaptureInfo, sf_mex_create("nameCaptureInfo", NULL, 0, 0U, 1U, 0U, 2, 0, 1), FALSE); return c3_nameCaptureInfo; } static real_T c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier) { real_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId); sf_mex_destroy(&c3_u); return c3_y; } static real_T c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { real_T c3_y; real_T c3_d34; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_d34, 1, 0, 0U, 0, 0U, 0); c3_y = c3_d34; sf_mex_destroy(&c3_u); return c3_y; } static void c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[40]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); } static void c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[40]) { real_T c3_dv18[40]; int32_T c3_i151; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv18, 1, 0, 0U, 1, 0U, 1, 40); for (c3_i151 = 0; c3_i151 < 40; c3_i151++) { c3_y[c3_i151] = c3_dv18[c3_i151]; } sf_mex_destroy(&c3_u); } static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[16]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); } static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[16]) { boolean_T c3_bv2[16]; int32_T c3_i152; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_bv2, 1, 11, 0U, 1, 0U, 1, 16); for (c3_i152 = 0; c3_i152 < 16; c3_i152++) { c3_y[c3_i152] = c3_bv2[c3_i152]; } sf_mex_destroy(&c3_u); } static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(int32_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static int32_T c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { int32_T c3_y; int32_T c3_i153; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_i153, 1, 6, 0U, 0, 0U, 0); c3_y = c3_i153; sf_mex_destroy(&c3_u); return c3_y; } static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_b_sfEvent; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; int32_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_b_sfEvent = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_sfEvent), &c3_thisId); sf_mex_destroy(&c3_b_sfEvent); *(int32_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static boolean_T c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { boolean_T c3_y; boolean_T c3_b0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_b0, 1, 11, 0U, 0, 0U, 0); c3_y = c3_b0; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_isQP; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_isQP = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_isQP), &c3_thisId); sf_mex_destroy(&c3_c_isQP); *(boolean_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static void c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[16]) { real_T c3_dv19[16]; int32_T c3_i154; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv19, 1, 0, 0U, 1, 0U, 2, 4, 4); for (c3_i154 = 0; c3_i154 < 16; c3_i154++) { c3_y[c3_i154] = c3_dv19[c3_i154]; } sf_mex_destroy(&c3_u); } static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Hinv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[16]; int32_T c3_i155; int32_T c3_i156; int32_T c3_i157; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Hinv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Hinv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Hinv); c3_i155 = 0; for (c3_i156 = 0; c3_i156 < 4; c3_i156++) { for (c3_i157 = 0; c3_i157 < 4; c3_i157++) { (*(real_T (*)[16])c3_outData)[c3_i157 + c3_i155] = c3_y[c3_i157 + c3_i155]; } c3_i155 += 4; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]) { real_T c3_dv20[18]; int32_T c3_i158; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv20, 1, 0, 0U, 1, 0U, 2, 6, 3); for (c3_i158 = 0; c3_i158 < 18; c3_i158++) { c3_y[c3_i158] = c3_dv20[c3_i158]; } sf_mex_destroy(&c3_u); } static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[18]; int32_T c3_i159; int32_T c3_i160; int32_T c3_i161; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_j_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kx); c3_i159 = 0; for (c3_i160 = 0; c3_i160 < 3; c3_i160++) { for (c3_i161 = 0; c3_i161 < 6; c3_i161++) { (*(real_T (*)[18])c3_outData)[c3_i161 + c3_i159] = c3_y[c3_i161 + c3_i159]; } c3_i159 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]) { real_T c3_dv21[3]; int32_T c3_i162; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv21, 1, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i162 = 0; c3_i162 < 3; c3_i162++) { c3_y[c3_i162] = c3_dv21[c3_i162]; } sf_mex_destroy(&c3_u); } static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ku1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[3]; int32_T c3_i163; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ku1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_k_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ku1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ku1); for (c3_i163 = 0; c3_i163 < 3; c3_i163++) { (*(real_T (*)[3])c3_outData)[c3_i163] = c3_y[c3_i163]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[120]) { real_T c3_dv22[120]; int32_T c3_i164; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv22, 1, 0, 0U, 1, 0U, 2, 40, 3); for (c3_i164 = 0; c3_i164 < 120; c3_i164++) { c3_y[c3_i164] = c3_dv22[c3_i164]; } sf_mex_destroy(&c3_u); } static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kut; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[120]; int32_T c3_i165; int32_T c3_i166; int32_T c3_i167; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kut = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_l_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kut), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kut); c3_i165 = 0; for (c3_i166 = 0; c3_i166 < 3; c3_i166++) { for (c3_i167 = 0; c3_i167 < 40; c3_i167++) { (*(real_T (*)[120])c3_outData)[c3_i167 + c3_i165] = c3_y[c3_i167 + c3_i165]; } c3_i165 += 40; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[246]) { real_T c3_dv23[246]; int32_T c3_i168; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv23, 1, 0, 0U, 1, 0U, 2, 82, 3); for (c3_i168 = 0; c3_i168 < 246; c3_i168++) { c3_y[c3_i168] = c3_dv23[c3_i168]; } sf_mex_destroy(&c3_u); } static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[246]; int32_T c3_i169; int32_T c3_i170; int32_T c3_i171; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_m_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kv); c3_i169 = 0; for (c3_i170 = 0; c3_i170 < 3; c3_i170++) { for (c3_i171 = 0; c3_i171 < 82; c3_i171++) { (*(real_T (*)[246])c3_outData)[c3_i171 + c3_i169] = c3_y[c3_i171 + c3_i169]; } c3_i169 += 82; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[12]) { real_T c3_dv24[12]; int32_T c3_i172; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv24, 1, 0, 0U, 1, 0U, 1, 12); for (c3_i172 = 0; c3_i172 < 12; c3_i172++) { c3_y[c3_i172] = c3_dv24[c3_i172]; } sf_mex_destroy(&c3_u); } static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mlim; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[12]; int32_T c3_i173; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mlim = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_n_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mlim), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mlim); for (c3_i173 = 0; c3_i173 < 12; c3_i173++) { (*(real_T (*)[12])c3_outData)[c3_i173] = c3_y[c3_i173]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[72]) { real_T c3_dv25[72]; int32_T c3_i174; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv25, 1, 0, 0U, 1, 0U, 2, 12, 6); for (c3_i174 = 0; c3_i174 < 72; c3_i174++) { c3_y[c3_i174] = c3_dv25[c3_i174]; } sf_mex_destroy(&c3_u); } static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[72]; int32_T c3_i175; int32_T c3_i176; int32_T c3_i177; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_o_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mx); c3_i175 = 0; for (c3_i176 = 0; c3_i176 < 6; c3_i176++) { for (c3_i177 = 0; c3_i177 < 12; c3_i177++) { (*(real_T (*)[72])c3_outData)[c3_i177 + c3_i175] = c3_y[c3_i177 + c3_i175]; } c3_i175 += 12; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[984]) { real_T c3_dv26[984]; int32_T c3_i178; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv26, 1, 0, 0U, 1, 0U, 2, 12, 82); for (c3_i178 = 0; c3_i178 < 984; c3_i178++) { c3_y[c3_i178] = c3_dv26[c3_i178]; } sf_mex_destroy(&c3_u); } static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[984]; int32_T c3_i179; int32_T c3_i180; int32_T c3_i181; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_p_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mv); c3_i179 = 0; for (c3_i180 = 0; c3_i180 < 82; c3_i180++) { for (c3_i181 = 0; c3_i181 < 12; c3_i181++) { (*(real_T (*)[984])c3_outData)[c3_i181 + c3_i179] = c3_y[c3_i181 + c3_i179]; } c3_i179 += 12; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[4]) { real_T c3_dv27[4]; int32_T c3_i182; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv27, 1, 0, 0U, 1, 0U, 1, 4); for (c3_i182 = 0; c3_i182 < 4; c3_i182++) { c3_y[c3_i182] = c3_dv27[c3_i182]; } sf_mex_destroy(&c3_u); } static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_z_degrees; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[4]; int32_T c3_i183; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_z_degrees = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_q_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_z_degrees), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_z_degrees); for (c3_i183 = 0; c3_i183 < 4; c3_i183++) { (*(real_T (*)[4])c3_outData)[c3_i183] = c3_y[c3_i183]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[40]) { real_T c3_dv28[40]; int32_T c3_i184; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv28, 1, 0, 0U, 1, 0U, 2, 1, 40); for (c3_i184 = 0; c3_i184 < 40; c3_i184++) { c3_y[c3_i184] = c3_dv28[c3_i184]; } sf_mex_destroy(&c3_u); } static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_blocking_moves; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[40]; int32_T c3_i185; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_blocking_moves = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_r_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_blocking_moves), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_blocking_moves); for (c3_i185 = 0; c3_i185 < 40; c3_i185++) { (*(real_T (*)[40])c3_outData)[c3_i185] = c3_y[c3_i185]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[48]) { real_T c3_dv29[48]; int32_T c3_i186; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv29, 1, 0, 0U, 1, 0U, 2, 12, 4); for (c3_i186 = 0; c3_i186 < 48; c3_i186++) { c3_y[c3_i186] = c3_dv29[c3_i186]; } sf_mex_destroy(&c3_u); } static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ac; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[48]; int32_T c3_i187; int32_T c3_i188; int32_T c3_i189; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ac = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_s_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ac), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ac); c3_i187 = 0; for (c3_i188 = 0; c3_i188 < 4; c3_i188++) { for (c3_i189 = 0; c3_i189 < 12; c3_i189++) { (*(real_T (*)[48])c3_outData)[c3_i189 + c3_i187] = c3_y[c3_i189 + c3_i187]; } c3_i187 += 12; } sf_mex_destroy(&c3_mxArrayInData); } static uint8_T c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier) { uint8_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_u_emlrt_marshallIn(chartInstance, sf_mex_dup (c3_b_is_active_c3_mpclib), &c3_thisId); sf_mex_destroy(&c3_b_is_active_c3_mpclib); return c3_y; } static uint8_T c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { uint8_T c3_y; uint8_T c3_u0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_u0, 1, 3, 0U, 0, 0U, 0); c3_y = c3_u0; sf_mex_destroy(&c3_u); return c3_y; } static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c3_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1327478418U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3134124955U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(1242351493U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2282091852U); } mxArray *sf_c3_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("SjMXglQ48R19dZW4lA8EQE"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,13,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(40); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(82); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(8); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(16); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,50,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(4); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(40); pr[1] = (double)(3); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(3); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(40); pr[1] = (double)(3); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(82); pr[1] = (double)(3); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(3); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(4); mxSetField(mxData,13,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,13,"type",mxType); } mxSetField(mxData,13,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(1); mxSetField(mxData,14,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,14,"type",mxType); } mxSetField(mxData,14,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(1); mxSetField(mxData,15,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,15,"type",mxType); } mxSetField(mxData,15,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(82); mxSetField(mxData,16,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,16,"type",mxType); } mxSetField(mxData,16,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(12); pr[1] = (double)(6); mxSetField(mxData,17,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,17,"type",mxType); } mxSetField(mxData,17,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,18,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,18,"type",mxType); } mxSetField(mxData,18,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,19,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,19,"type",mxType); } mxSetField(mxData,19,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,20,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,20,"type",mxType); } mxSetField(mxData,20,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,21,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,21,"type",mxType); } mxSetField(mxData,21,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,22,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,22,"type",mxType); } mxSetField(mxData,22,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,23,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,23,"type",mxType); } mxSetField(mxData,23,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(40); mxSetField(mxData,24,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,24,"type",mxType); } mxSetField(mxData,24,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,25,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,25,"type",mxType); } mxSetField(mxData,25,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,26,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,26,"type",mxType); } mxSetField(mxData,26,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,27,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,27,"type",mxType); } mxSetField(mxData,27,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,28,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,28,"type",mxType); } mxSetField(mxData,28,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,29,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,29,"type",mxType); } mxSetField(mxData,29,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,30,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,30,"type",mxType); } mxSetField(mxData,30,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,31,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,31,"type",mxType); } mxSetField(mxData,31,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,32,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,32,"type",mxType); } mxSetField(mxData,32,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,33,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,33,"type",mxType); } mxSetField(mxData,33,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,34,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,34,"type",mxType); } mxSetField(mxData,34,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,35,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,35,"type",mxType); } mxSetField(mxData,35,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,36,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,36,"type",mxType); } mxSetField(mxData,36,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,37,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,37,"type",mxType); } mxSetField(mxData,37,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,38,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,38,"type",mxType); } mxSetField(mxData,38,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,39,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,39,"type",mxType); } mxSetField(mxData,39,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,40,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,40,"type",mxType); } mxSetField(mxData,40,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,41,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,41,"type",mxType); } mxSetField(mxData,41,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,42,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,42,"type",mxType); } mxSetField(mxData,42,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,43,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,43,"type",mxType); } mxSetField(mxData,43,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,44,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,44,"type",mxType); } mxSetField(mxData,44,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,45,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,45,"type",mxType); } mxSetField(mxData,45,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,46,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,46,"type",mxType); } mxSetField(mxData,46,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(40); pr[1] = (double)(1); mxSetField(mxData,47,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,47,"type",mxType); } mxSetField(mxData,47,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,48,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,48,"type",mxType); } mxSetField(mxData,48,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(4); pr[1] = (double)(1); mxSetField(mxData,49,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,49,"type",mxType); } mxSetField(mxData,49,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,5,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(40); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(16); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c3_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c3_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x6'type','srcId','name','auxInfo'{{M[1],M[20],T\"cost\",},{M[1],M[145],T\"iAout\",},{M[1],M[126],T\"status\",},{M[1],M[19],T\"u\",},{M[1],M[21],T\"useq\",},{M[8],M[0],T\"is_active_c3_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 6, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c3_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 3, 1, 1, 68, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,1,1,0,"rseq"); _SFD_SET_DATA_PROPS(1,1,1,0,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"x"); _SFD_SET_DATA_PROPS(3,1,1,0,"old_u"); _SFD_SET_DATA_PROPS(4,1,1,0,"iA"); _SFD_SET_DATA_PROPS(5,1,1,0,"umin"); _SFD_SET_DATA_PROPS(6,1,1,0,"umax"); _SFD_SET_DATA_PROPS(7,1,1,0,"ymin"); _SFD_SET_DATA_PROPS(8,1,1,0,"ymax"); _SFD_SET_DATA_PROPS(9,1,1,0,"switch_in"); _SFD_SET_DATA_PROPS(10,1,1,0,"ywt"); _SFD_SET_DATA_PROPS(11,1,1,0,"duwt"); _SFD_SET_DATA_PROPS(12,1,1,0,"rhoeps"); _SFD_SET_DATA_PROPS(13,2,0,1,"u"); _SFD_SET_DATA_PROPS(14,2,0,1,"cost"); _SFD_SET_DATA_PROPS(15,2,0,1,"useq"); _SFD_SET_DATA_PROPS(16,2,0,1,"status"); _SFD_SET_DATA_PROPS(17,10,0,0,"isQP"); _SFD_SET_DATA_PROPS(18,10,0,0,"nu"); _SFD_SET_DATA_PROPS(19,10,0,0,"ny"); _SFD_SET_DATA_PROPS(20,10,0,0,"degrees"); _SFD_SET_DATA_PROPS(21,10,0,0,"Hinv"); _SFD_SET_DATA_PROPS(22,10,0,0,"Kx"); _SFD_SET_DATA_PROPS(23,10,0,0,"Ku1"); _SFD_SET_DATA_PROPS(24,10,0,0,"Kut"); _SFD_SET_DATA_PROPS(25,10,0,0,"Kr"); _SFD_SET_DATA_PROPS(26,10,0,0,"Kv"); _SFD_SET_DATA_PROPS(27,10,0,0,"Mlim"); _SFD_SET_DATA_PROPS(28,10,0,0,"Mx"); _SFD_SET_DATA_PROPS(29,10,0,0,"Mu1"); _SFD_SET_DATA_PROPS(30,10,0,0,"Mv"); _SFD_SET_DATA_PROPS(31,10,0,0,"z_degrees"); _SFD_SET_DATA_PROPS(32,10,0,0,"utarget"); _SFD_SET_DATA_PROPS(33,10,0,0,"p"); _SFD_SET_DATA_PROPS(34,10,0,0,"uoff"); _SFD_SET_DATA_PROPS(35,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(36,10,0,0,"maxiter"); _SFD_SET_DATA_PROPS(37,10,0,0,"nxQP"); _SFD_SET_DATA_PROPS(38,10,0,0,"openloopflag"); _SFD_SET_DATA_PROPS(39,10,0,0,"lims_inport"); _SFD_SET_DATA_PROPS(40,10,0,0,"no_umin"); _SFD_SET_DATA_PROPS(41,10,0,0,"no_umax"); _SFD_SET_DATA_PROPS(42,10,0,0,"no_ymin"); _SFD_SET_DATA_PROPS(43,10,0,0,"no_ymax"); _SFD_SET_DATA_PROPS(44,10,0,0,"switch_inport"); _SFD_SET_DATA_PROPS(45,10,0,0,"no_switch"); _SFD_SET_DATA_PROPS(46,10,0,0,"enable_value"); _SFD_SET_DATA_PROPS(47,10,0,0,"return_cost"); _SFD_SET_DATA_PROPS(48,10,0,0,"H"); _SFD_SET_DATA_PROPS(49,10,0,0,"return_sequence"); _SFD_SET_DATA_PROPS(50,10,0,0,"blocking_moves"); _SFD_SET_DATA_PROPS(51,10,0,0,"Linv"); _SFD_SET_DATA_PROPS(52,10,0,0,"Ac"); _SFD_SET_DATA_PROPS(53,10,0,0,"no_ywt"); _SFD_SET_DATA_PROPS(54,10,0,0,"no_duwt"); _SFD_SET_DATA_PROPS(55,10,0,0,"no_rhoeps"); _SFD_SET_DATA_PROPS(56,10,0,0,"Wy"); _SFD_SET_DATA_PROPS(57,10,0,0,"Wdu"); _SFD_SET_DATA_PROPS(58,10,0,0,"Jm"); _SFD_SET_DATA_PROPS(59,10,0,0,"SuJm"); _SFD_SET_DATA_PROPS(60,10,0,0,"I2JmWuI2Jm"); _SFD_SET_DATA_PROPS(61,10,0,0,"Su1"); _SFD_SET_DATA_PROPS(62,10,0,0,"I1WuI2Jm"); _SFD_SET_DATA_PROPS(63,10,0,0,"Sx"); _SFD_SET_DATA_PROPS(64,10,0,0,"Hv"); _SFD_SET_DATA_PROPS(65,10,0,0,"Wu"); _SFD_SET_DATA_PROPS(66,10,0,0,"I1"); _SFD_SET_DATA_PROPS(67,2,0,1,"iAout"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,2551); _SFD_CV_INIT_EML_IF(0,1,0,648,679,2012,2550); _SFD_CV_INIT_EML_IF(0,1,1,966,987,1495,2010); { unsigned int dimVector[1]; dimVector[0]= 40; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 82; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 8; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 16; _SFD_SET_DATA_COMPILED_PROPS(4,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(12,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(13,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(14,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 40; _SFD_SET_DATA_COMPILED_PROPS(15,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(16,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(17,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType)c3_e_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(18,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(19,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(20,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(21,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(22,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_q_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(23,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_p_sf_marshallOut,(MexInFcnForType) c3_h_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 40; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(24,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 40; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(25,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 82; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(26,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_n_sf_marshallOut,(MexInFcnForType) c3_j_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 12; _SFD_SET_DATA_COMPILED_PROPS(27,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 12; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(28,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_m_sf_marshallOut,(MexInFcnForType) c3_l_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 12; _SFD_SET_DATA_COMPILED_PROPS(29,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 12; dimVector[1]= 82; _SFD_SET_DATA_COMPILED_PROPS(30,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_k_sf_marshallOut,(MexInFcnForType) c3_m_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 4; _SFD_SET_DATA_COMPILED_PROPS(31,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_n_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 40; _SFD_SET_DATA_COMPILED_PROPS(32,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(33,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(34,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(35,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(36,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(37,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(38,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType)c3_e_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(39,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(40,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(41,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(42,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(43,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(44,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(45,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(46,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(47,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(48,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(49,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 40; _SFD_SET_DATA_COMPILED_PROPS(50,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_h_sf_marshallOut,(MexInFcnForType) c3_o_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 4; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(51,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_f_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 12; dimVector[1]= 4; _SFD_SET_DATA_COMPILED_PROPS(52,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_f_sf_marshallOut,(MexInFcnForType) c3_p_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(53,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(54,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(55,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(56,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(57,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(58,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(59,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(60,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(61,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(62,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(63,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(64,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(65,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(66,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 16; _SFD_SET_DATA_COMPILED_PROPS(67,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType) c3_sf_marshallIn); } { real_T *c3_old_u; real_T *c3_umin; real_T *c3_umax; real_T *c3_ymin; real_T *c3_ymax; real_T *c3_switch_in; real_T *c3_ywt; real_T *c3_duwt; real_T *c3_rhoeps; real_T *c3_u; real_T *c3_cost; real_T *c3_status; real_T (*c3_rseq)[40]; real_T (*c3_vseq)[82]; real_T (*c3_x)[8]; boolean_T (*c3_iA)[16]; real_T (*c3_useq)[40]; boolean_T (*c3_iAout)[16]; c3_iAout = (boolean_T (*)[16])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T *)ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T *)ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T *)ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T *)ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T *)ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T *)ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T *)ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[16])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T *)ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[8])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[82])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[40])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SET_DATA_VALUE_PTR(0U, *c3_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c3_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c3_x); _SFD_SET_DATA_VALUE_PTR(3U, c3_old_u); _SFD_SET_DATA_VALUE_PTR(4U, *c3_iA); _SFD_SET_DATA_VALUE_PTR(5U, c3_umin); _SFD_SET_DATA_VALUE_PTR(6U, c3_umax); _SFD_SET_DATA_VALUE_PTR(7U, c3_ymin); _SFD_SET_DATA_VALUE_PTR(8U, c3_ymax); _SFD_SET_DATA_VALUE_PTR(9U, c3_switch_in); _SFD_SET_DATA_VALUE_PTR(10U, c3_ywt); _SFD_SET_DATA_VALUE_PTR(11U, c3_duwt); _SFD_SET_DATA_VALUE_PTR(12U, c3_rhoeps); _SFD_SET_DATA_VALUE_PTR(13U, c3_u); _SFD_SET_DATA_VALUE_PTR(14U, c3_cost); _SFD_SET_DATA_VALUE_PTR(15U, *c3_useq); _SFD_SET_DATA_VALUE_PTR(16U, c3_status); _SFD_SET_DATA_VALUE_PTR(17U, &chartInstance->c3_isQP); _SFD_SET_DATA_VALUE_PTR(18U, &chartInstance->c3_nu); _SFD_SET_DATA_VALUE_PTR(19U, &chartInstance->c3_ny); _SFD_SET_DATA_VALUE_PTR(20U, &chartInstance->c3_degrees); _SFD_SET_DATA_VALUE_PTR(21U, chartInstance->c3_Hinv); _SFD_SET_DATA_VALUE_PTR(22U, chartInstance->c3_Kx); _SFD_SET_DATA_VALUE_PTR(23U, chartInstance->c3_Ku1); _SFD_SET_DATA_VALUE_PTR(24U, chartInstance->c3_Kut); _SFD_SET_DATA_VALUE_PTR(25U, chartInstance->c3_Kr); _SFD_SET_DATA_VALUE_PTR(26U, chartInstance->c3_Kv); _SFD_SET_DATA_VALUE_PTR(27U, chartInstance->c3_Mlim); _SFD_SET_DATA_VALUE_PTR(28U, chartInstance->c3_Mx); _SFD_SET_DATA_VALUE_PTR(29U, chartInstance->c3_Mu1); _SFD_SET_DATA_VALUE_PTR(30U, chartInstance->c3_Mv); _SFD_SET_DATA_VALUE_PTR(31U, chartInstance->c3_z_degrees); _SFD_SET_DATA_VALUE_PTR(32U, chartInstance->c3_utarget); _SFD_SET_DATA_VALUE_PTR(33U, &chartInstance->c3_p); _SFD_SET_DATA_VALUE_PTR(34U, &chartInstance->c3_uoff); _SFD_SET_DATA_VALUE_PTR(35U, &chartInstance->c3_yoff); _SFD_SET_DATA_VALUE_PTR(36U, &chartInstance->c3_maxiter); _SFD_SET_DATA_VALUE_PTR(37U, &chartInstance->c3_nxQP); _SFD_SET_DATA_VALUE_PTR(38U, &chartInstance->c3_openloopflag); _SFD_SET_DATA_VALUE_PTR(39U, &chartInstance->c3_lims_inport); _SFD_SET_DATA_VALUE_PTR(40U, &chartInstance->c3_no_umin); _SFD_SET_DATA_VALUE_PTR(41U, &chartInstance->c3_no_umax); _SFD_SET_DATA_VALUE_PTR(42U, &chartInstance->c3_no_ymin); _SFD_SET_DATA_VALUE_PTR(43U, &chartInstance->c3_no_ymax); _SFD_SET_DATA_VALUE_PTR(44U, &chartInstance->c3_switch_inport); _SFD_SET_DATA_VALUE_PTR(45U, &chartInstance->c3_no_switch); _SFD_SET_DATA_VALUE_PTR(46U, &chartInstance->c3_enable_value); _SFD_SET_DATA_VALUE_PTR(47U, &chartInstance->c3_return_cost); _SFD_SET_DATA_VALUE_PTR(48U, chartInstance->c3_H); _SFD_SET_DATA_VALUE_PTR(49U, &chartInstance->c3_return_sequence); _SFD_SET_DATA_VALUE_PTR(50U, chartInstance->c3_blocking_moves); _SFD_SET_DATA_VALUE_PTR(51U, chartInstance->c3_Linv); _SFD_SET_DATA_VALUE_PTR(52U, chartInstance->c3_Ac); _SFD_SET_DATA_VALUE_PTR(53U, &chartInstance->c3_no_ywt); _SFD_SET_DATA_VALUE_PTR(54U, &chartInstance->c3_no_duwt); _SFD_SET_DATA_VALUE_PTR(55U, &chartInstance->c3_no_rhoeps); _SFD_SET_DATA_VALUE_PTR(56U, &chartInstance->c3_Wy); _SFD_SET_DATA_VALUE_PTR(57U, &chartInstance->c3_Wdu); _SFD_SET_DATA_VALUE_PTR(58U, &chartInstance->c3_Jm); _SFD_SET_DATA_VALUE_PTR(59U, &chartInstance->c3_SuJm); _SFD_SET_DATA_VALUE_PTR(60U, &chartInstance->c3_I2JmWuI2Jm); _SFD_SET_DATA_VALUE_PTR(61U, &chartInstance->c3_Su1); _SFD_SET_DATA_VALUE_PTR(62U, &chartInstance->c3_I1WuI2Jm); _SFD_SET_DATA_VALUE_PTR(63U, &chartInstance->c3_Sx); _SFD_SET_DATA_VALUE_PTR(64U, &chartInstance->c3_Hv); _SFD_SET_DATA_VALUE_PTR(65U, &chartInstance->c3_Wu); _SFD_SET_DATA_VALUE_PTR(66U, &chartInstance->c3_I1); _SFD_SET_DATA_VALUE_PTR(67U, *c3_iAout); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "BE4GM0nbnhTJ929HHu03ZF"; } static void sf_opaque_initialize_c3_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); initialize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c3_mpclib(void *chartInstanceVar) { enable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c3_mpclib(void *chartInstanceVar) { disable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c3_mpclib(void *chartInstanceVar) { sf_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c3_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c3_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c3_mpclib(S); } static void sf_opaque_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c3_mpclib(S, st); } static void sf_opaque_terminate_c3_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c3_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c3_mpclib(SimStruct *S) { /* Actual parameters from chart: Ac H Hinv Hv I1 I1WuI2Jm I2JmWuI2Jm Jm Kr Ku1 Kut Kv Kx Linv Mlim Mu1 Mv Mx Su1 SuJm Sx Wdu Wu Wy blocking_moves degrees enable_value isQP lims_inport maxiter no_duwt no_rhoeps no_switch no_umax no_umin no_ymax no_ymin no_ywt nu nxQP ny openloopflag p return_cost return_sequence switch_inport uoff utarget yoff z_degrees */ const char_T *rtParamNames[] = { "Ac", "H", "Hinv", "Hv", "I1", "I1WuI2Jm", "I2JmWuI2Jm", "Jm", "Kr", "Ku1", "Kut", "Kv", "Kx", "Linv", "Mlim", "Mu1", "Mv", "Mx", "Su1", "SuJm", "Sx", "Wdu", "Wu", "Wy", "blocking_moves", "degrees", "enable_value", "isQP", "lims_inport", "maxiter", "no_duwt", "no_rhoeps", "no_switch", "no_umax", "no_umin", "no_ymax", "no_ymin", "no_ywt", "nu", "nxQP", "ny", "openloopflag", "p", "return_cost", "return_sequence", "switch_inport", "uoff", "utarget", "yoff", "z_degrees" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for Ac*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for H*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for Hinv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for Hv*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for I1*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_DOUBLE); /* registration for I1WuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for I2JmWuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for Jm*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); /* registration for Kr*/ ssRegDlgParamAsRunTimeParam(S, 8, 8, rtParamNames[8], SS_DOUBLE); /* registration for Ku1*/ ssRegDlgParamAsRunTimeParam(S, 9, 9, rtParamNames[9], SS_DOUBLE); /* registration for Kut*/ ssRegDlgParamAsRunTimeParam(S, 10, 10, rtParamNames[10], SS_DOUBLE); /* registration for Kv*/ ssRegDlgParamAsRunTimeParam(S, 11, 11, rtParamNames[11], SS_DOUBLE); /* registration for Kx*/ ssRegDlgParamAsRunTimeParam(S, 12, 12, rtParamNames[12], SS_DOUBLE); /* registration for Linv*/ ssRegDlgParamAsRunTimeParam(S, 13, 13, rtParamNames[13], SS_DOUBLE); /* registration for Mlim*/ ssRegDlgParamAsRunTimeParam(S, 14, 14, rtParamNames[14], SS_DOUBLE); /* registration for Mu1*/ ssRegDlgParamAsRunTimeParam(S, 15, 15, rtParamNames[15], SS_DOUBLE); /* registration for Mv*/ ssRegDlgParamAsRunTimeParam(S, 16, 16, rtParamNames[16], SS_DOUBLE); /* registration for Mx*/ ssRegDlgParamAsRunTimeParam(S, 17, 17, rtParamNames[17], SS_DOUBLE); /* registration for Su1*/ ssRegDlgParamAsRunTimeParam(S, 18, 18, rtParamNames[18], SS_DOUBLE); /* registration for SuJm*/ ssRegDlgParamAsRunTimeParam(S, 19, 19, rtParamNames[19], SS_DOUBLE); /* registration for Sx*/ ssRegDlgParamAsRunTimeParam(S, 20, 20, rtParamNames[20], SS_DOUBLE); /* registration for Wdu*/ ssRegDlgParamAsRunTimeParam(S, 21, 21, rtParamNames[21], SS_DOUBLE); /* registration for Wu*/ ssRegDlgParamAsRunTimeParam(S, 22, 22, rtParamNames[22], SS_DOUBLE); /* registration for Wy*/ ssRegDlgParamAsRunTimeParam(S, 23, 23, rtParamNames[23], SS_DOUBLE); /* registration for blocking_moves*/ ssRegDlgParamAsRunTimeParam(S, 24, 24, rtParamNames[24], SS_DOUBLE); /* registration for degrees*/ ssRegDlgParamAsRunTimeParam(S, 25, 25, rtParamNames[25], SS_DOUBLE); /* registration for enable_value*/ ssRegDlgParamAsRunTimeParam(S, 26, 26, rtParamNames[26], SS_DOUBLE); /* registration for isQP*/ ssRegDlgParamAsRunTimeParam(S, 27, 27, rtParamNames[27], SS_BOOLEAN); /* registration for lims_inport*/ ssRegDlgParamAsRunTimeParam(S, 28, 28, rtParamNames[28], SS_DOUBLE); /* registration for maxiter*/ ssRegDlgParamAsRunTimeParam(S, 29, 29, rtParamNames[29], SS_DOUBLE); /* registration for no_duwt*/ ssRegDlgParamAsRunTimeParam(S, 30, 30, rtParamNames[30], SS_DOUBLE); /* registration for no_rhoeps*/ ssRegDlgParamAsRunTimeParam(S, 31, 31, rtParamNames[31], SS_DOUBLE); /* registration for no_switch*/ ssRegDlgParamAsRunTimeParam(S, 32, 32, rtParamNames[32], SS_DOUBLE); /* registration for no_umax*/ ssRegDlgParamAsRunTimeParam(S, 33, 33, rtParamNames[33], SS_DOUBLE); /* registration for no_umin*/ ssRegDlgParamAsRunTimeParam(S, 34, 34, rtParamNames[34], SS_DOUBLE); /* registration for no_ymax*/ ssRegDlgParamAsRunTimeParam(S, 35, 35, rtParamNames[35], SS_DOUBLE); /* registration for no_ymin*/ ssRegDlgParamAsRunTimeParam(S, 36, 36, rtParamNames[36], SS_DOUBLE); /* registration for no_ywt*/ ssRegDlgParamAsRunTimeParam(S, 37, 37, rtParamNames[37], SS_DOUBLE); /* registration for nu*/ ssRegDlgParamAsRunTimeParam(S, 38, 38, rtParamNames[38], SS_DOUBLE); /* registration for nxQP*/ ssRegDlgParamAsRunTimeParam(S, 39, 39, rtParamNames[39], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 40, 40, rtParamNames[40], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 41, 41, rtParamNames[41], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 42, 42, rtParamNames[42], SS_DOUBLE); /* registration for return_cost*/ ssRegDlgParamAsRunTimeParam(S, 43, 43, rtParamNames[43], SS_DOUBLE); /* registration for return_sequence*/ ssRegDlgParamAsRunTimeParam(S, 44, 44, rtParamNames[44], SS_DOUBLE); /* registration for switch_inport*/ ssRegDlgParamAsRunTimeParam(S, 45, 45, rtParamNames[45], SS_DOUBLE); /* registration for uoff*/ ssRegDlgParamAsRunTimeParam(S, 46, 46, rtParamNames[46], SS_DOUBLE); /* registration for utarget*/ ssRegDlgParamAsRunTimeParam(S, 47, 47, rtParamNames[47], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 48, 48, rtParamNames[48], SS_DOUBLE); /* registration for z_degrees*/ ssRegDlgParamAsRunTimeParam(S, 49, 49, rtParamNames[49], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 3); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,3,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,3, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,3); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 2, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 3, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 4, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 5, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 6, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 7, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 8, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 9, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 10, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 11, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 12, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,3,13); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,3,5); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=5; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 13; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,3); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(95125335U)); ssSetChecksum1(S,(194292467U)); ssSetChecksum2(S,(922080002U)); ssSetChecksum3(S,(2685617946U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c3_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c3_mpclib(SimStruct *S) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)utMalloc(sizeof (SFc3_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc3_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c3_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c3_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c3_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c3_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c3_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c3_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c3_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c3_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c3_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c3_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c3_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c3_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c3_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c3_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c3_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/c3_mpclib.h ================================================ #ifndef __c3_mpclib_h__ #define __c3_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc3_mpclibInstanceStruct #define typedef_SFc3_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c3_sfEvent; boolean_T c3_isStable; boolean_T c3_doneDoubleBufferReInit; uint8_T c3_is_active_c3_mpclib; boolean_T c3_isQP; real_T c3_nu; real_T c3_ny; real_T c3_degrees; real_T c3_Hinv[16]; real_T c3_Kx[18]; real_T c3_Ku1[3]; real_T c3_Kut[120]; real_T c3_Kr[120]; real_T c3_Kv[246]; real_T c3_Mlim[12]; real_T c3_Mx[72]; real_T c3_Mu1[12]; real_T c3_Mv[984]; real_T c3_z_degrees[4]; real_T c3_utarget[40]; real_T c3_p; real_T c3_uoff; real_T c3_yoff; real_T c3_maxiter; real_T c3_nxQP; boolean_T c3_openloopflag; real_T c3_lims_inport; real_T c3_no_umin; real_T c3_no_umax; real_T c3_no_ymin; real_T c3_no_ymax; real_T c3_switch_inport; real_T c3_no_switch; real_T c3_enable_value; real_T c3_return_cost; real_T c3_H[16]; real_T c3_return_sequence; real_T c3_blocking_moves[40]; real_T c3_Linv[16]; real_T c3_Ac[48]; real_T c3_no_ywt; real_T c3_no_duwt; real_T c3_no_rhoeps; real_T c3_Wy; real_T c3_Wdu; real_T c3_Jm; real_T c3_SuJm; real_T c3_I2JmWuI2Jm; real_T c3_Su1; real_T c3_I1WuI2Jm; real_T c3_Sx; real_T c3_Hv; real_T c3_Wu; real_T c3_I1; } SFc3_mpclibInstanceStruct; #endif /*typedef_SFc3_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); extern void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/c4_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c4_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c4_b_p (40.0) #define c4_b_ny (1.0) #define c4_b_nv (2.0) #define c4_b_yoff (0.0) #define c4_b_voff (0.0) #define c4_b_no_md (0.0) #define c4_b_no_ref (0.0) #define c4_b_openloopflag (FALSE) /* Variable Declarations */ /* Variable Definitions */ static const char * c4_debug_family_names[16] = { "DataType", "nv", "ny", "p", "yoff", "voff", "no_md", "no_ref", "openloopflag", "nargin", "nargout", "ref", "md", "rseq", "vseq", "v" }; /* Function Declarations */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st); static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber); static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static real_T c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_info_helper(const mxArray **c4_info); static const mxArray *c4_emlrt_marshallOut(char * c4_u); static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u); static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[40]); static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[40]); static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[82]); static void c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[82]); static void c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier, real_T c4_y[2]); static void c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]); static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static int32_T c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier); static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { chartInstance->c4_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c4_is_active_c4_mpclib = 0U; } static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { real_T c4_d0; real_T c4_d1; real_T c4_d2; real_T c4_d3; real_T c4_d4; real_T c4_d5; real_T c4_d6; real_T c4_d7; sf_set_error_prefix_string( "Error evaluating data 'nv' in the parent workspace.\n"); sf_mex_import_named("nv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), &c4_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_nv = c4_d0; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c4_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_ny = c4_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c4_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_p = c4_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c4_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_yoff = c4_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'voff' in the parent workspace.\n"); sf_mex_import_named("voff", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c4_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_voff = c4_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_md' in the parent workspace.\n"); sf_mex_import_named("no_md", sf_mex_get_sfun_param(chartInstance->S, 0, 0), &c4_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_md = c4_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ref' in the parent workspace.\n"); sf_mex_import_named("no_ref", sf_mex_get_sfun_param(chartInstance->S, 1, 0), &c4_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_ref = c4_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 4, 0), &c4_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_openloopflag = (c4_d7 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { const mxArray *c4_st; const mxArray *c4_y = NULL; int32_T c4_i0; real_T c4_u[40]; const mxArray *c4_b_y = NULL; int32_T c4_i1; real_T c4_b_u[2]; const mxArray *c4_c_y = NULL; int32_T c4_i2; real_T c4_c_u[82]; const mxArray *c4_d_y = NULL; uint8_T c4_hoistedGlobal; uint8_T c4_d_u; const mxArray *c4_e_y = NULL; real_T (*c4_vseq)[82]; real_T (*c4_v)[2]; real_T (*c4_rseq)[40]; c4_v = (real_T (*)[2])ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[82])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 1); c4_st = NULL; c4_st = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_createcellarray(4), FALSE); for (c4_i0 = 0; c4_i0 < 40; c4_i0++) { c4_u[c4_i0] = (*c4_rseq)[c4_i0]; } c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 40), FALSE); sf_mex_setcell(c4_y, 0, c4_b_y); for (c4_i1 = 0; c4_i1 < 2; c4_i1++) { c4_b_u[c4_i1] = (*c4_v)[c4_i1]; } c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", c4_b_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_setcell(c4_y, 1, c4_c_y); for (c4_i2 = 0; c4_i2 < 82; c4_i2++) { c4_c_u[c4_i2] = (*c4_vseq)[c4_i2]; } c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", c4_c_u, 0, 0U, 1U, 0U, 1, 82), FALSE); sf_mex_setcell(c4_y, 2, c4_d_y); c4_hoistedGlobal = chartInstance->c4_is_active_c4_mpclib; c4_d_u = c4_hoistedGlobal; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_d_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 3, c4_e_y); sf_mex_assign(&c4_st, c4_y, FALSE); return c4_st; } static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st) { const mxArray *c4_u; real_T c4_dv0[40]; int32_T c4_i3; real_T c4_dv1[2]; int32_T c4_i4; real_T c4_dv2[82]; int32_T c4_i5; real_T (*c4_rseq)[40]; real_T (*c4_v)[2]; real_T (*c4_vseq)[82]; c4_v = (real_T (*)[2])ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[82])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c4_doneDoubleBufferReInit = TRUE; c4_u = sf_mex_dup(c4_st); c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 0)), "rseq", c4_dv0); for (c4_i3 = 0; c4_i3 < 40; c4_i3++) { (*c4_rseq)[c4_i3] = c4_dv0[c4_i3]; } c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 1)), "v", c4_dv1); for (c4_i4 = 0; c4_i4 < 2; c4_i4++) { (*c4_v)[c4_i4] = c4_dv1[c4_i4]; } c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 2)), "vseq", c4_dv2); for (c4_i5 = 0; c4_i5 < 82; c4_i5++) { (*c4_vseq)[c4_i5] = c4_dv2[c4_i5]; } chartInstance->c4_is_active_c4_mpclib = c4_j_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 3)), "is_active_c4_mpclib"); sf_mex_destroy(&c4_u); c4_update_debugger_state_c4_mpclib(chartInstance); sf_mex_destroy(&c4_st); } static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { int32_T c4_i6; int32_T c4_i7; int32_T c4_i8; real_T c4_hoistedGlobal; real_T c4_b_hoistedGlobal; real_T c4_ref; real_T c4_md; uint32_T c4_debug_family_var_map[16]; char_T c4_DataType[6]; real_T c4_c_nv; real_T c4_c_ny; real_T c4_c_p; real_T c4_c_yoff; real_T c4_c_voff; real_T c4_c_no_md; real_T c4_c_no_ref; boolean_T c4_c_openloopflag; real_T c4_nargin = 10.0; real_T c4_nargout = 3.0; real_T c4_rseq[40]; real_T c4_vseq[82]; real_T c4_v[2]; int32_T c4_i9; static char_T c4_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c4_i10; int32_T c4_i11; int32_T c4_i12; real_T c4_u; const mxArray *c4_y = NULL; real_T c4_b_u; const mxArray *c4_b_y = NULL; real_T c4_c_u; const mxArray *c4_c_y = NULL; real_T c4_d_u; const mxArray *c4_d_y = NULL; real_T c4_e_u; const mxArray *c4_e_y = NULL; real_T c4_f_u; const mxArray *c4_f_y = NULL; real_T c4_g_u; const mxArray *c4_g_y = NULL; real_T c4_h_u; const mxArray *c4_h_y = NULL; real_T c4_i_u; const mxArray *c4_i_y = NULL; boolean_T c4_j_u; const mxArray *c4_j_y = NULL; const mxArray *c4_b_v = NULL; const mxArray *c4_b_vseq = NULL; const mxArray *c4_b_rseq = NULL; real_T c4_dv3[40]; int32_T c4_i13; real_T c4_dv4[82]; int32_T c4_i14; real_T c4_dv5[2]; int32_T c4_i15; int32_T c4_i16; int32_T c4_i17; int32_T c4_i18; real_T *c4_b_ref; real_T *c4_b_md; real_T (*c4_c_rseq)[40]; real_T (*c4_c_vseq)[82]; real_T (*c4_c_v)[2]; c4_c_v = (real_T (*)[2])ssGetOutputPortSignal(chartInstance->S, 3); c4_b_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_b_ref = (real_T *)ssGetInputPortSignal(chartInstance->S, 0); c4_c_vseq = (real_T (*)[82])ssGetOutputPortSignal(chartInstance->S, 2); c4_c_rseq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 1U, chartInstance->c4_sfEvent); for (c4_i6 = 0; c4_i6 < 40; c4_i6++) { _SFD_DATA_RANGE_CHECK((*c4_c_rseq)[c4_i6], 0U); } for (c4_i7 = 0; c4_i7 < 82; c4_i7++) { _SFD_DATA_RANGE_CHECK((*c4_c_vseq)[c4_i7], 1U); } _SFD_DATA_RANGE_CHECK(*c4_b_ref, 2U); _SFD_DATA_RANGE_CHECK(*c4_b_md, 3U); for (c4_i8 = 0; c4_i8 < 2; c4_i8++) { _SFD_DATA_RANGE_CHECK((*c4_c_v)[c4_i8], 4U); } _SFD_DATA_RANGE_CHECK(chartInstance->c4_nv, 5U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_ny, 6U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_p, 7U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_yoff, 8U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_voff, 9U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_md, 10U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_ref, 11U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c4_openloopflag, 12U); chartInstance->c4_sfEvent = CALL_EVENT; _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); c4_hoistedGlobal = *c4_b_ref; c4_b_hoistedGlobal = *c4_b_md; c4_ref = c4_hoistedGlobal; c4_md = c4_b_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 16U, 16U, c4_debug_family_names, c4_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c4_DataType, 0U, c4_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_nv, 1U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_ny, 2U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_p, 3U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_yoff, 4U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_voff, 5U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_md, 6U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_ref, 7U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_openloopflag, 8U, c4_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargin, 9U, c4_d_sf_marshallOut, c4_d_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargout, 10U, c4_d_sf_marshallOut, c4_d_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_ref, 11U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_md, 12U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_rseq, 13U, c4_c_sf_marshallOut, c4_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_vseq, 14U, c4_b_sf_marshallOut, c4_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_v, 15U, c4_sf_marshallOut, c4_sf_marshallIn); c4_c_openloopflag = c4_b_openloopflag; c4_c_no_ref = c4_b_no_ref; c4_c_no_md = c4_b_no_md; c4_c_voff = c4_b_voff; c4_c_yoff = c4_b_yoff; c4_c_p = c4_b_p; c4_c_ny = c4_b_ny; c4_c_nv = c4_b_nv; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 3); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 4); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 5); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 7); for (c4_i9 = 0; c4_i9 < 6; c4_i9++) { c4_DataType[c4_i9] = c4_cv0[c4_i9]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 8); for (c4_i10 = 0; c4_i10 < 40; c4_i10++) { c4_rseq[c4_i10] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 9); for (c4_i11 = 0; c4_i11 < 82; c4_i11++) { c4_vseq[c4_i11] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 10); for (c4_i12 = 0; c4_i12 < 2; c4_i12++) { c4_v[c4_i12] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 11); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 12); c4_u = c4_ref; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); c4_b_u = c4_md; c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); c4_c_u = c4_b_nv; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_c_u, 0, 0U, 0U, 0U, 0), FALSE); c4_d_u = c4_b_ny; c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", &c4_d_u, 0, 0U, 0U, 0U, 0), FALSE); c4_e_u = c4_b_p; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_e_u, 0, 0U, 0U, 0U, 0), FALSE); c4_f_u = c4_b_yoff; c4_f_y = NULL; sf_mex_assign(&c4_f_y, sf_mex_create("y", &c4_f_u, 0, 0U, 0U, 0U, 0), FALSE); c4_g_u = c4_b_voff; c4_g_y = NULL; sf_mex_assign(&c4_g_y, sf_mex_create("y", &c4_g_u, 0, 0U, 0U, 0U, 0), FALSE); c4_h_u = c4_b_no_md; c4_h_y = NULL; sf_mex_assign(&c4_h_y, sf_mex_create("y", &c4_h_u, 0, 0U, 0U, 0U, 0), FALSE); c4_i_u = c4_b_no_ref; c4_i_y = NULL; sf_mex_assign(&c4_i_y, sf_mex_create("y", &c4_i_u, 0, 0U, 0U, 0U, 0), FALSE); c4_j_u = c4_b_openloopflag; c4_j_y = NULL; sf_mex_assign(&c4_j_y, sf_mex_create("y", &c4_j_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_refmd_double_mex", 3U, 10U, 14, c4_y, 14, c4_b_y, 14, c4_c_y, 14, c4_d_y, 14, c4_e_y, 14, c4_f_y, 14, c4_g_y, 14, c4_h_y, 14, c4_i_y, 14, c4_j_y, &c4_b_rseq, &c4_b_vseq, &c4_b_v); c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_rseq), "rseq", c4_dv3); for (c4_i13 = 0; c4_i13 < 40; c4_i13++) { c4_rseq[c4_i13] = c4_dv3[c4_i13]; } c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_vseq), "vseq", c4_dv4); for (c4_i14 = 0; c4_i14 < 82; c4_i14++) { c4_vseq[c4_i14] = c4_dv4[c4_i14]; } c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_v), "v", c4_dv5); for (c4_i15 = 0; c4_i15 < 2; c4_i15++) { c4_v[c4_i15] = c4_dv5[c4_i15]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, -18); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c4_b_rseq); sf_mex_destroy(&c4_b_vseq); sf_mex_destroy(&c4_b_v); for (c4_i16 = 0; c4_i16 < 40; c4_i16++) { (*c4_c_rseq)[c4_i16] = c4_rseq[c4_i16]; } for (c4_i17 = 0; c4_i17 < 82; c4_i17++) { (*c4_c_vseq)[c4_i17] = c4_vseq[c4_i17]; } for (c4_i18 = 0; c4_i18 < 2; c4_i18++) { (*c4_c_v)[c4_i18] = c4_v[c4_i18]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber) { } static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i19; real_T c4_b_inData[2]; int32_T c4_i20; real_T c4_u[2]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i19 = 0; c4_i19 < 2; c4_i19++) { c4_b_inData[c4_i19] = (*(real_T (*)[2])c4_inData)[c4_i19]; } for (c4_i20 = 0; c4_i20 < 2; c4_i20++) { c4_u[c4_i20] = c4_b_inData[c4_i20]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_v; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[2]; int32_T c4_i21; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_v = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId, c4_y); sf_mex_destroy(&c4_v); for (c4_i21 = 0; c4_i21 < 2; c4_i21++) { (*(real_T (*)[2])c4_outData)[c4_i21] = c4_y[c4_i21]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i22; real_T c4_b_inData[82]; int32_T c4_i23; real_T c4_u[82]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i22 = 0; c4_i22 < 82; c4_i22++) { c4_b_inData[c4_i22] = (*(real_T (*)[82])c4_inData)[c4_i22]; } for (c4_i23 = 0; c4_i23 < 82; c4_i23++) { c4_u[c4_i23] = c4_b_inData[c4_i23]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 82), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_vseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[82]; int32_T c4_i24; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_vseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); for (c4_i24 = 0; c4_i24 < 82; c4_i24++) { (*(real_T (*)[82])c4_outData)[c4_i24] = c4_y[c4_i24]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i25; real_T c4_b_inData[40]; int32_T c4_i26; real_T c4_u[40]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i25 = 0; c4_i25 < 40; c4_i25++) { c4_b_inData[c4_i25] = (*(real_T (*)[40])c4_inData)[c4_i25]; } for (c4_i26 = 0; c4_i26 < 40; c4_i26++) { c4_u[c4_i26] = c4_b_inData[c4_i26]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 40), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_rseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[40]; int32_T c4_i27; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_rseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); for (c4_i27 = 0; c4_i27 < 40; c4_i27++) { (*(real_T (*)[40])c4_outData)[c4_i27] = c4_y[c4_i27]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; real_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(real_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static real_T c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { real_T c4_y; real_T c4_d8; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_d8, 1, 0, 0U, 0, 0U, 0); c4_y = c4_d8; sf_mex_destroy(&c4_u); return c4_y; } static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_nargout; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_nargout = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_nargout), &c4_thisId); sf_mex_destroy(&c4_nargout); *(real_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; boolean_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(boolean_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i28; char_T c4_b_inData[6]; int32_T c4_i29; char_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i28 = 0; c4_i28 < 6; c4_i28++) { c4_b_inData[c4_i28] = (*(char_T (*)[6])c4_inData)[c4_i28]; } for (c4_i29 = 0; c4_i29 < 6; c4_i29++) { c4_u[c4_i29] = c4_b_inData[c4_i29]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c4_nameCaptureInfo = NULL; c4_nameCaptureInfo = NULL; sf_mex_assign(&c4_nameCaptureInfo, sf_mex_createstruct("structure", 2, 2, 1), FALSE); c4_info_helper(&c4_nameCaptureInfo); sf_mex_emlrtNameCapturePostProcessR2012a(&c4_nameCaptureInfo); return c4_nameCaptureInfo; } static void c4_info_helper(const mxArray **c4_info) { const mxArray *c4_rhs0 = NULL; const mxArray *c4_lhs0 = NULL; const mxArray *c4_rhs1 = NULL; const mxArray *c4_lhs1 = NULL; sf_mex_addfield(*c4_info, c4_emlrt_marshallOut(""), "context", "context", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("mtimes"), "name", "name", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m"), "resolved", "resolved", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363688678U), "fileTimeLo", "fileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 0); sf_mex_assign(&c4_rhs0, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs0, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs0), "rhs", "rhs", 0); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs0), "lhs", "lhs", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m!common_checks"), "context", "context", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "coder.internal.isBuiltInNumeric"), "name", "name", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[IXE]$matlabroot$/toolbox/shared/coder/coder/+coder/+internal/isBuiltInNumeric.m"), "resolved", "resolved", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363689356U), "fileTimeLo", "fileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 1); sf_mex_assign(&c4_rhs1, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs1, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs1), "rhs", "rhs", 1); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs1), "lhs", "lhs", 1); sf_mex_destroy(&c4_rhs0); sf_mex_destroy(&c4_lhs0); sf_mex_destroy(&c4_rhs1); sf_mex_destroy(&c4_lhs1); } static const mxArray *c4_emlrt_marshallOut(char * c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 15, 0U, 0U, 0U, 2, 1, strlen (c4_u)), FALSE); return c4_y; } static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 7, 0U, 0U, 0U, 0), FALSE); return c4_y; } static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[40]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); } static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[40]) { real_T c4_dv6[40]; int32_T c4_i30; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv6, 1, 0, 0U, 1, 0U, 1, 40); for (c4_i30 = 0; c4_i30 < 40; c4_i30++) { c4_y[c4_i30] = c4_dv6[c4_i30]; } sf_mex_destroy(&c4_u); } static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[82]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); } static void c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[82]) { real_T c4_dv7[82]; int32_T c4_i31; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv7, 1, 0, 0U, 1, 0U, 1, 82); for (c4_i31 = 0; c4_i31 < 82; c4_i31++) { c4_y[c4_i31] = c4_dv7[c4_i31]; } sf_mex_destroy(&c4_u); } static void c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier, real_T c4_y[2]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId, c4_y); sf_mex_destroy(&c4_v); } static void c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]) { real_T c4_dv8[2]; int32_T c4_i32; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv8, 1, 0, 0U, 1, 0U, 1, 2); for (c4_i32 = 0; c4_i32 < 2; c4_i32++) { c4_y[c4_i32] = c4_dv8[c4_i32]; } sf_mex_destroy(&c4_u); } static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(int32_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static int32_T c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { int32_T c4_y; int32_T c4_i33; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_i33, 1, 6, 0U, 0, 0U, 0); c4_y = c4_i33; sf_mex_destroy(&c4_u); return c4_y; } static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_b_sfEvent; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; int32_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_b_sfEvent = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_sfEvent), &c4_thisId); sf_mex_destroy(&c4_b_sfEvent); *(int32_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { boolean_T c4_y; boolean_T c4_b0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_b0, 1, 11, 0U, 0, 0U, 0); c4_y = c4_b0; sf_mex_destroy(&c4_u); return c4_y; } static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_openloopflag; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; boolean_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_openloopflag = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_openloopflag), &c4_thisId); sf_mex_destroy(&c4_c_openloopflag); *(boolean_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier) { uint8_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_k_emlrt_marshallIn(chartInstance, sf_mex_dup (c4_b_is_active_c4_mpclib), &c4_thisId); sf_mex_destroy(&c4_b_is_active_c4_mpclib); return c4_y; } static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { uint8_T c4_y; uint8_T c4_u0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_u0, 1, 3, 0U, 0, 0U, 0); c4_y = c4_u0; sf_mex_destroy(&c4_u); return c4_y; } static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c4_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(1829581727U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(1425960352U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(4038580172U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1056813094U); } mxArray *sf_c4_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("9pWDNwGkz7jl7hss0o3NXG"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,2,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,8,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,3,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(40); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(82); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c4_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c4_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x4'type','srcId','name','auxInfo'{{M[1],M[21],T\"rseq\",},{M[1],M[19],T\"v\",},{M[1],M[20],T\"vseq\",},{M[8],M[0],T\"is_active_c4_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 4, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c4_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 4, 1, 1, 13, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,2,0,1,"rseq"); _SFD_SET_DATA_PROPS(1,2,0,1,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"ref"); _SFD_SET_DATA_PROPS(3,1,1,0,"md"); _SFD_SET_DATA_PROPS(4,2,0,1,"v"); _SFD_SET_DATA_PROPS(5,10,0,0,"nv"); _SFD_SET_DATA_PROPS(6,10,0,0,"ny"); _SFD_SET_DATA_PROPS(7,10,0,0,"p"); _SFD_SET_DATA_PROPS(8,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(9,10,0,0,"voff"); _SFD_SET_DATA_PROPS(10,10,0,0,"no_md"); _SFD_SET_DATA_PROPS(11,10,0,0,"no_ref"); _SFD_SET_DATA_PROPS(12,10,0,0,"openloopflag"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,856); _SFD_CV_INIT_EML_IF(0,1,0,194,225,703,855); _SFD_CV_INIT_EML_IF(0,1,1,447,467,577,702); { unsigned int dimVector[1]; dimVector[0]= 40; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_c_sf_marshallOut,(MexInFcnForType) c4_c_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 82; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_b_sf_marshallOut,(MexInFcnForType) c4_b_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(4,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_sf_marshallOut,(MexInFcnForType) c4_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)c4_d_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(12,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_e_sf_marshallOut,(MexInFcnForType)c4_f_sf_marshallIn); { real_T *c4_ref; real_T *c4_md; real_T (*c4_rseq)[40]; real_T (*c4_vseq)[82]; real_T (*c4_v)[2]; c4_v = (real_T (*)[2])ssGetOutputPortSignal(chartInstance->S, 3); c4_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_ref = (real_T *)ssGetInputPortSignal(chartInstance->S, 0); c4_vseq = (real_T (*)[82])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[40])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SET_DATA_VALUE_PTR(0U, *c4_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c4_vseq); _SFD_SET_DATA_VALUE_PTR(2U, c4_ref); _SFD_SET_DATA_VALUE_PTR(3U, c4_md); _SFD_SET_DATA_VALUE_PTR(4U, *c4_v); _SFD_SET_DATA_VALUE_PTR(5U, &chartInstance->c4_nv); _SFD_SET_DATA_VALUE_PTR(6U, &chartInstance->c4_ny); _SFD_SET_DATA_VALUE_PTR(7U, &chartInstance->c4_p); _SFD_SET_DATA_VALUE_PTR(8U, &chartInstance->c4_yoff); _SFD_SET_DATA_VALUE_PTR(9U, &chartInstance->c4_voff); _SFD_SET_DATA_VALUE_PTR(10U, &chartInstance->c4_no_md); _SFD_SET_DATA_VALUE_PTR(11U, &chartInstance->c4_no_ref); _SFD_SET_DATA_VALUE_PTR(12U, &chartInstance->c4_openloopflag); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "1DLx4GMDHt9YB7Zv8CsCqC"; } static void sf_opaque_initialize_c4_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); initialize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c4_mpclib(void *chartInstanceVar) { enable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c4_mpclib(void *chartInstanceVar) { disable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c4_mpclib(void *chartInstanceVar) { sf_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c4_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c4_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c4_mpclib(S); } static void sf_opaque_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c4_mpclib(S, st); } static void sf_opaque_terminate_c4_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c4_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c4_mpclib(SimStruct *S) { /* Actual parameters from chart: no_md no_ref nv ny openloopflag p voff yoff */ const char_T *rtParamNames[] = { "no_md", "no_ref", "nv", "ny", "openloopflag", "p", "voff", "yoff" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for no_md*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for no_ref*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for nv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for voff*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 4); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,4,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,4, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,4); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,4,2); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,4,3); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=3; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 2; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,4); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(2587713859U)); ssSetChecksum1(S,(1495648963U)); ssSetChecksum2(S,(4031176922U)); ssSetChecksum3(S,(2459357676U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c4_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c4_mpclib(SimStruct *S) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)utMalloc(sizeof (SFc4_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc4_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c4_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c4_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c4_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c4_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c4_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c4_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c4_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c4_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c4_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c4_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c4_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c4_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c4_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c4_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c4_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/c4_mpclib.h ================================================ #ifndef __c4_mpclib_h__ #define __c4_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc4_mpclibInstanceStruct #define typedef_SFc4_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c4_sfEvent; boolean_T c4_isStable; boolean_T c4_doneDoubleBufferReInit; uint8_T c4_is_active_c4_mpclib; real_T c4_nv; real_T c4_ny; real_T c4_p; real_T c4_yoff; real_T c4_voff; real_T c4_no_md; real_T c4_no_ref; boolean_T c4_openloopflag; } SFc4_mpclibInstanceStruct; #endif /*typedef_SFc4_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); extern void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/mpclib_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpclib_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/mpclib_sfun.c ================================================ /* Include files */ #include "mpclib_sfun.h" #include "mpclib_sfun_debug_macros.h" #include "c3_mpclib.h" #include "c4_mpclib.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpclibMachineNumber_; /* Function Declarations */ /* Function Definitions */ void mpclib_initializer(void) { } void mpclib_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpclib_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (chartFileNumber==3) { c3_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } if (chartFileNumber==4) { c4_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } return 0; } unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>2 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"library")) { char machineName[100]; mxGetString(prhs[2], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (!strcmp(machineName,"mpclib")) { if (nrhs==3) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2614040817U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3880239305U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2342864157U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3641275904U); } else if (nrhs==4) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[3]); switch (chartFileNumber) { case 3: { extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); sf_c3_mpclib_get_check_sum(plhs); break; } case 4: { extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); sf_c4_mpclib_get_check_sum(plhs); break; } default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else { return 0; } } else { return 0; } } else { return 0; } } else { return 0; } return 1; #else return 0; #endif } unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(aiChksum, "SjMXglQ48R19dZW4lA8EQE") == 0) { extern mxArray *sf_c3_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c3_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } case 4: { if (strcmp(aiChksum, "9pWDNwGkz7jl7hss0o3NXG") == 0) { extern mxArray *sf_c4_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c4_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c3_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } case 4: { extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c4_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "BE4GM0nbnhTJ929HHu03ZF") == 0) { extern mxArray *sf_c3_mpclib_third_party_uses_info(void); plhs[0] = sf_c3_mpclib_third_party_uses_info(); break; } } case 4: { if (strcmp(tpChksum, "1DLx4GMDHt9YB7Zv8CsCqC") == 0) { extern mxArray *sf_c4_mpclib_third_party_uses_info(void); plhs[0] = sf_c4_mpclib_third_party_uses_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "BE4GM0nbnhTJ929HHu03ZF") == 0) { extern mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c3_mpclib_updateBuildInfo_args_info(); break; } } case 4: { if (strcmp(tpChksum, "1DLx4GMDHt9YB7Zv8CsCqC") == 0) { extern mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c4_mpclib_updateBuildInfo_args_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpclib_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpclibMachineNumber_ = sf_debug_initialize_machine(debugInstance,"mpclib", "sfun",1,2,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance,_mpclibMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance,_mpclibMachineNumber_,0); } void mpclib_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpclib", "mpc_misonoise"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/mpclib_sfun.h ================================================ #ifndef __mpclib_sfun_h__ #define __mpclib_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpclibMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpclib_initializer(void); extern void mpclib_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpclib_optimization_info(void); extern void unload_mpclib_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/mpclib_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpclib TARGET = sfun CHART_SRCS = c3_mpclib.c c4_mpclib.c MACHINE_SRC = mpclib_sfun.c MACHINE_REG = MAKEFILE = mpclib_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpclib_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- $(MACHINE)_$(TARGET).lib : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) -lib /OUT:$(MACHINE)_$(TARGET).lib @$(OBJLIST_FILE) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Created Stateflow library $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/mpclib_sfun.mol ================================================ mpclib_sfun.obj c3_mpclib.obj c4_mpclib.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/mpclib_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpclibMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_misonoise/mpclib/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/mpc_nonlinear_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpc_nonlinear_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/mpc_nonlinear_sfun.c ================================================ /* Include files */ #include "mpc_nonlinear_sfun.h" #include "mpc_nonlinear_sfun_debug_macros.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpc_nonlinearMachineNumber_; real_T _sfTime_; /* Function Declarations */ /* Function Definitions */ void mpc_nonlinear_initializer(void) { } void mpc_nonlinear_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpc_nonlinear_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { return 0; } unsigned int sf_mpc_nonlinear_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>1 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"machine")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2491844374U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3350410411U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2402956264U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3738917736U); } else if (!strcmp(commandName,"exportedFcn")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0U); } else if (!strcmp(commandName,"makefile")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(830638543U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(4048865250U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2570044568U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3100851563U); } else if (nrhs==3 && !strcmp(commandName,"chart")) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[2]); switch (chartFileNumber) { default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else if (!strcmp(commandName,"target")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3031367619U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(4001028638U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3978939492U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(838979348U); } else { return 0; } } else { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3809486511U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(409198642U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3559760744U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3601546961U); } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpc_nonlinear_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpc_nonlinear_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpc_nonlinearMachineNumber_ = sf_debug_initialize_machine(debugInstance, "mpc_nonlinear","sfun",0,0,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance, _mpc_nonlinearMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance, _mpc_nonlinearMachineNumber_,0); } void mpc_nonlinear_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpc_nonlinear_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpc_nonlinear", "mpc_nonlinear"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpc_nonlinear_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/mpc_nonlinear_sfun.h ================================================ #ifndef __mpc_nonlinear_sfun_h__ #define __mpc_nonlinear_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpc_nonlinearMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpc_nonlinear_initializer(void); extern void mpc_nonlinear_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpc_nonlinear_optimization_info(void); extern void unload_mpc_nonlinear_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/mpc_nonlinear_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpc_nonlinear TARGET = sfun CHART_SRCS = MACHINE_SRC = mpc_nonlinear_sfun.c MACHINE_REG = mpc_nonlinear_sfun_registry.c MAKEFILE = mpc_nonlinear_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpc_nonlinear_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = "E:\2019-˼ʻģԤ\3\chapter3 \slprj\_sfprj\mpc_nonlinear\mpclib\sfun\src\mpclib_sfun.lib" BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- MEX_FILE_NAME_WO_EXT = $(MACHINE)_$(TARGET) MEX_FILE_NAME = $(MEX_FILE_NAME_WO_EXT).mexw64 MEX_FILE_CSF = all : $(MEX_FILE_NAME) $(MEX_FILE_CSF) TMWLIB = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmx.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmex.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmat.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libfixedpoint.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libut.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwmathutil.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libemlrt.lib" "C:\Program Files\MATLAB\R2013b\lib\win64\libippmwipt.lib" $(MEX_FILE_NAME) : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) $(LDFLAGS) /OUT:$(MEX_FILE_NAME) /map:"$(MEX_FILE_NAME_WO_EXT).map"\ $(USER_LIBS) $(SFCLIB) $(AUX_LNK_OBJS)\ $(TMWLIB) $(LINK_MACHINE_LIBS) $(DSP_LIBS) $(BLAS_LIBS) $(THIRD_PARTY_LIBS)\ @$(OBJLIST_FILE) mt -outputresource:"$(MEX_FILE_NAME);2" -manifest "$(MEX_FILE_NAME).manifest" @echo ### Created $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/mpc_nonlinear_sfun.mexw64.manifest ================================================ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/mpc_nonlinear_sfun.mol ================================================ mpc_nonlinear_sfun.obj mpc_nonlinear_sfun_registry.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/mpc_nonlinear_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpc_nonlinearMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpc_nonlinearMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/mpc_nonlinear_sfun_registry.c ================================================ #include "mpc_nonlinear_sfun.h" #include "sfcdebug.h" struct SfDebugInstanceStruct; struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct = NULL; #define PROCESS_MEX_SFUNCTION_CMD_LINE_CALL unsigned int sf_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); if (sf_mpc_nonlinear_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mpclib_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; return 0; } unsigned int sf_process_autoinheritance_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_autoinheritance_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_autoinheritance_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_third_party_uses_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_third_party_uses_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_third_party_uses_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_updateBuildInfo_args_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_eml_resolved_functions_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 3) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpc_nonlinear_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpclib_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } return 0; } unsigned int sf_mex_unlock_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_mex_unlock")) return 0; while (mexIsLocked()) { mexUnlock(); } return(1); } extern unsigned int sf_debug_api(struct SfDebugInstanceStruct* debugInstance, int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); static unsigned int sf_debug_api_wrapper( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { return sf_debug_api(sfGlobalDebugInstanceStruct, nlhs, plhs, nrhs, prhs); } static unsigned int ProcessMexSfunctionCmdLineCall(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[]) { if (sf_debug_api_wrapper(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mex_unlock_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_autoinheritance_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_third_party_uses_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_updateBuildInfo_args_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_eml_resolved_functions_info_call(nlhs,plhs,nrhs,prhs)) return 1; mexErrMsgTxt("Unsuccessful command."); return 0; } static unsigned int sfGlobalMdlStartCallCounts = 0; unsigned int sf_machine_global_initializer_called(void) { return(sfGlobalMdlStartCallCounts > 0); } extern unsigned int sf_mpc_nonlinear_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); extern unsigned int sf_mpclib_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); unsigned int sf_machine_global_method_dispatcher(SimStruct *simstructPtr, const char *machineName, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (!strcmp(machineName,"mpc_nonlinear")) { return(sf_mpc_nonlinear_method_dispatcher(simstructPtr,chartFileNumber, specsCksum,method,data)); } if (!strcmp(machineName,"mpclib")) { return(sf_mpclib_method_dispatcher(simstructPtr,chartFileNumber,specsCksum, method,data)); } return 0; } extern void mpc_nonlinear_terminator(void); extern void mpclib_terminator(void); void sf_machine_global_terminator(void) { sfGlobalMdlStartCallCounts--; if (sfGlobalMdlStartCallCounts == 0) { mpc_nonlinear_terminator(); mpclib_terminator(); sf_debug_terminate(sfGlobalDebugInstanceStruct); sfGlobalDebugInstanceStruct = NULL; } return; } extern void mpc_nonlinear_initializer(void); extern void mpclib_initializer(void); extern void mpc_nonlinear_register_exported_symbols(SimStruct* S); extern void mpclib_register_exported_symbols(SimStruct* S); extern void mpc_nonlinear_debug_initialize(struct SfDebugInstanceStruct*); extern void mpclib_debug_initialize(struct SfDebugInstanceStruct*); void sf_register_machine_exported_symbols(SimStruct* S) { mpc_nonlinear_register_exported_symbols(S); mpclib_register_exported_symbols(S); } bool callCustomFcn(char initFlag) { return false; } void sf_machine_global_initializer(SimStruct* S) { bool simModeIsRTWGen = sim_mode_is_rtw_gen(S); sfGlobalMdlStartCallCounts++; if (sfGlobalMdlStartCallCounts == 1) { if (simModeIsRTWGen) { sf_register_machine_exported_symbols(S); } sfGlobalDebugInstanceStruct = sf_debug_create_debug_instance_struct(); if (!simModeIsRTWGen) { mpc_nonlinear_debug_initialize(sfGlobalDebugInstanceStruct); } mpc_nonlinear_initializer(); if (!simModeIsRTWGen) { mpclib_debug_initialize(sfGlobalDebugInstanceStruct); } mpclib_initializer(); } return; } #define PROCESS_MEX_SFUNCTION_EVERY_CALL unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]); #include "simulink.c" /* MEX-file interface mechanism */ static void sf_machine_load_sfunction_ptrs(SimStruct *S) { ssSetmdlInitializeSampleTimes(S,__mdlInitializeSampleTimes); ssSetmdlInitializeConditions(S,__mdlInitializeConditions); ssSetmdlOutputs(S,__mdlOutputs); ssSetmdlTerminate(S,__mdlTerminate); ssSetmdlRTW(S,__mdlRTW); ssSetmdlSetWorkWidths(S,__mdlSetWorkWidths); #if defined(MDL_HASSIMULATIONCONTEXTIO) ssSetmdlSimulationContextIO(S,__mdlSimulationContextIO); #endif #if defined(MDL_START) ssSetmdlStart(S,__mdlStart); #endif #if defined(RTW_GENERATED_ENABLE) ssSetRTWGeneratedEnable(S,__mdlEnable); #endif #if defined(RTW_GENERATED_DISABLE) ssSetRTWGeneratedDisable(S,__mdlDisable); #endif #if defined(MDL_ENABLE) ssSetmdlEnable(S,__mdlEnable); #endif #if defined(MDL_DISABLE) ssSetmdlDisable(S,__mdlDisable); #endif #if defined(MDL_SIM_STATUS_CHANGE) ssSetmdlSimStatusChange(S,__mdlSimStatusChange); #endif #if defined(MDL_EXT_MODE_EXEC) ssSetmdlExtModeExec(S,__mdlExtModeExec); #endif #if defined(MDL_UPDATE) ssSetmdlUpdate(S,__mdlUpdate); #endif #if defined(MDL_PROCESS_PARAMETERS) ssSetmdlProcessParameters(S,__mdlProcessParameters); #endif #if defined(MDL_ZERO_CROSSINGS) ssSetmdlZeroCrossings(S,__mdlZeroCrossings); #endif #if defined(MDL_DERIVATIVES) ssSetmdlDerivatives(S,__mdlDerivatives); #endif } unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]) { if (nlhs < 0) { SimStruct *S = (SimStruct *)plhs[_LHS_SS]; int_T flag = (int_T)(*(real_T*)mxGetPr(prhs[_RHS_FLAG])); if (flag == SS_CALL_MDL_SET_WORK_WIDTHS) { sf_machine_load_sfunction_ptrs(S); } } return 0; } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/_self/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/c3_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c3_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c3_b_p (5.0) #define c3_b_nu (3.0) #define c3_b_isQP (TRUE) #define c3_b_ny (2.0) #define c3_b_degrees (7.0) #define c3_b_maxiter (120.0) #define c3_b_nxQP (7.0) #define c3_b_openloopflag (FALSE) #define c3_b_lims_inport (0.0) #define c3_b_no_umin (1.0) #define c3_b_no_umax (1.0) #define c3_b_no_ymin (1.0) #define c3_b_no_ymax (1.0) #define c3_b_switch_inport (0.0) #define c3_b_no_switch (1.0) #define c3_b_enable_value (0.0) #define c3_b_return_cost (0.0) #define c3_b_return_sequence (0.0) #define c3_b_no_ywt (1.0) #define c3_b_no_duwt (1.0) #define c3_b_no_rhoeps (1.0) #define c3_b_Wy (0.0) #define c3_b_Wdu (0.0) #define c3_b_Jm (0.0) #define c3_b_SuJm (0.0) #define c3_b_I2JmWuI2Jm (0.0) #define c3_b_Su1 (0.0) #define c3_b_I1WuI2Jm (0.0) #define c3_b_Sx (0.0) #define c3_b_Hv (0.0) #define c3_b_Wu (0.0) #define c3_b_I1 (0.0) /* Variable Declarations */ /* Variable Definitions */ static const char * c3_debug_family_names[71] = { "DataType", "isQP", "nu", "ny", "degrees", "Hinv", "Kx", "Ku1", "Kut", "Kr", "Kv", "Mlim", "Mx", "Mu1", "Mv", "z_degrees", "utarget", "p", "uoff", "yoff", "maxiter", "nxQP", "openloopflag", "lims_inport", "no_umin", "no_umax", "no_ymin", "no_ymax", "switch_inport", "no_switch", "enable_value", "return_cost", "H", "return_sequence", "blocking_moves", "Linv", "Ac", "no_ywt", "no_duwt", "no_rhoeps", "Wy", "Wdu", "Jm", "SuJm", "I2JmWuI2Jm", "Su1", "I1WuI2Jm", "Sx", "Hv", "Wu", "I1", "nargin", "nargout", "rseq", "vseq", "x", "old_u", "iA", "umin", "umax", "ymin", "ymax", "switch_in", "ywt", "duwt", "rhoeps", "u", "cost", "useq", "status", "iAout" }; /* Function Declarations */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st); static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber); static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_t_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_u_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_v_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier, real_T c3_y[3]); static void c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]); static real_T c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_cost, const char_T *c3_identifier); static real_T c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[15]); static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]); static void c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[25]); static void c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[25]); static const mxArray *c3_w_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static int32_T c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static boolean_T c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[49]); static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[42]); static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]); static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[90]); static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]); static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[36]); static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]); static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[126]); static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[54]); static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[108]); static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[7]); static void c3_q_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_v_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]); static void c3_r_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_w_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[2]); static void c3_s_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_x_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[5]); static void c3_t_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static uint8_T c3_y_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier); static uint8_T c3_ab_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { chartInstance->c3_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c3_is_active_c3_mpclib = 0U; } static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_d0; real_T c3_d1; real_T c3_d2; real_T c3_d3; real_T c3_dv0[49]; int32_T c3_i0; real_T c3_dv1[42]; int32_T c3_i1; real_T c3_dv2[18]; int32_T c3_i2; real_T c3_dv3[90]; int32_T c3_i3; real_T c3_dv4[60]; int32_T c3_i4; real_T c3_dv5[36]; int32_T c3_i5; real_T c3_dv6[18]; int32_T c3_i6; real_T c3_dv7[126]; int32_T c3_i7; real_T c3_dv8[54]; int32_T c3_i8; real_T c3_dv9[108]; int32_T c3_i9; real_T c3_dv10[7]; int32_T c3_i10; real_T c3_dv11[15]; int32_T c3_i11; real_T c3_d4; real_T c3_dv12[3]; int32_T c3_i12; real_T c3_dv13[2]; int32_T c3_i13; real_T c3_d5; real_T c3_d6; real_T c3_d7; real_T c3_d8; real_T c3_d9; real_T c3_d10; real_T c3_d11; real_T c3_d12; real_T c3_d13; real_T c3_d14; real_T c3_d15; real_T c3_d16; real_T c3_dv14[49]; int32_T c3_i14; real_T c3_d17; real_T c3_dv15[5]; int32_T c3_i15; real_T c3_dv16[49]; int32_T c3_i16; real_T c3_dv17[126]; int32_T c3_i17; real_T c3_d18; real_T c3_d19; real_T c3_d20; real_T c3_d21; real_T c3_d22; real_T c3_d23; real_T c3_d24; real_T c3_d25; real_T c3_d26; real_T c3_d27; real_T c3_d28; real_T c3_d29; real_T c3_d30; real_T c3_d31; sf_set_error_prefix_string( "Error evaluating data 'isQP' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 27, 0), &c3_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_isQP = (c3_d0 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nu' in the parent workspace.\n"); sf_mex_import_named("nu", sf_mex_get_sfun_param(chartInstance->S, 38, 0), &c3_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nu = c3_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 40, 0), &c3_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_ny = c3_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'degrees' in the parent workspace.\n"); sf_mex_import_named("degrees", sf_mex_get_sfun_param(chartInstance->S, 25, 0), &c3_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_degrees = c3_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hinv' in the parent workspace.\n"); sf_mex_import_named("Hinv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), c3_dv0, 0, 0, 0U, 1, 0U, 2, 7, 7); for (c3_i0 = 0; c3_i0 < 49; c3_i0++) { chartInstance->c3_Hinv[c3_i0] = c3_dv0[c3_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kx' in the parent workspace.\n"); sf_mex_import_named("Kx", sf_mex_get_sfun_param(chartInstance->S, 12, 0), c3_dv1, 0, 0, 0U, 1, 0U, 2, 7, 6); for (c3_i1 = 0; c3_i1 < 42; c3_i1++) { chartInstance->c3_Kx[c3_i1] = c3_dv1[c3_i1]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ku1' in the parent workspace.\n"); sf_mex_import_named("Ku1", sf_mex_get_sfun_param(chartInstance->S, 9, 0), c3_dv2, 0, 0, 0U, 1, 0U, 2, 3, 6); for (c3_i2 = 0; c3_i2 < 18; c3_i2++) { chartInstance->c3_Ku1[c3_i2] = c3_dv2[c3_i2]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kut' in the parent workspace.\n"); sf_mex_import_named("Kut", sf_mex_get_sfun_param(chartInstance->S, 10, 0), c3_dv3, 0, 0, 0U, 1, 0U, 2, 15, 6); for (c3_i3 = 0; c3_i3 < 90; c3_i3++) { chartInstance->c3_Kut[c3_i3] = c3_dv3[c3_i3]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kr' in the parent workspace.\n"); sf_mex_import_named("Kr", sf_mex_get_sfun_param(chartInstance->S, 8, 0), c3_dv4, 0, 0, 0U, 1, 0U, 2, 10, 6); for (c3_i4 = 0; c3_i4 < 60; c3_i4++) { chartInstance->c3_Kr[c3_i4] = c3_dv4[c3_i4]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kv' in the parent workspace.\n"); sf_mex_import_named("Kv", sf_mex_get_sfun_param(chartInstance->S, 11, 0), c3_dv5, 0, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i5 = 0; c3_i5 < 36; c3_i5++) { chartInstance->c3_Kv[c3_i5] = c3_dv5[c3_i5]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mlim' in the parent workspace.\n"); sf_mex_import_named("Mlim", sf_mex_get_sfun_param(chartInstance->S, 14, 0), c3_dv6, 0, 0, 0U, 1, 0U, 1, 18); for (c3_i6 = 0; c3_i6 < 18; c3_i6++) { chartInstance->c3_Mlim[c3_i6] = c3_dv6[c3_i6]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mx' in the parent workspace.\n"); sf_mex_import_named("Mx", sf_mex_get_sfun_param(chartInstance->S, 17, 0), c3_dv7, 0, 0, 0U, 1, 0U, 2, 18, 7); for (c3_i7 = 0; c3_i7 < 126; c3_i7++) { chartInstance->c3_Mx[c3_i7] = c3_dv7[c3_i7]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mu1' in the parent workspace.\n"); sf_mex_import_named("Mu1", sf_mex_get_sfun_param(chartInstance->S, 15, 0), c3_dv8, 0, 0, 0U, 1, 0U, 2, 18, 3); for (c3_i8 = 0; c3_i8 < 54; c3_i8++) { chartInstance->c3_Mu1[c3_i8] = c3_dv8[c3_i8]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mv' in the parent workspace.\n"); sf_mex_import_named("Mv", sf_mex_get_sfun_param(chartInstance->S, 16, 0), c3_dv9, 0, 0, 0U, 1, 0U, 2, 18, 6); for (c3_i9 = 0; c3_i9 < 108; c3_i9++) { chartInstance->c3_Mv[c3_i9] = c3_dv9[c3_i9]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'z_degrees' in the parent workspace.\n"); sf_mex_import_named("z_degrees", sf_mex_get_sfun_param(chartInstance->S, 49, 0), c3_dv10, 0, 0, 0U, 1, 0U, 1, 7); for (c3_i10 = 0; c3_i10 < 7; c3_i10++) { chartInstance->c3_z_degrees[c3_i10] = c3_dv10[c3_i10]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'utarget' in the parent workspace.\n"); sf_mex_import_named("utarget", sf_mex_get_sfun_param(chartInstance->S, 47, 0), c3_dv11, 0, 0, 0U, 1, 0U, 1, 15); for (c3_i11 = 0; c3_i11 < 15; c3_i11++) { chartInstance->c3_utarget[c3_i11] = c3_dv11[c3_i11]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 42, 0), &c3_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_p = c3_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'uoff' in the parent workspace.\n"); sf_mex_import_named("uoff", sf_mex_get_sfun_param(chartInstance->S, 46, 0), c3_dv12, 0, 0, 0U, 1, 0U, 1, 3); for (c3_i12 = 0; c3_i12 < 3; c3_i12++) { chartInstance->c3_uoff[c3_i12] = c3_dv12[c3_i12]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 48, 0), c3_dv13, 0, 0, 0U, 1, 0U, 1, 2); for (c3_i13 = 0; c3_i13 < 2; c3_i13++) { chartInstance->c3_yoff[c3_i13] = c3_dv13[c3_i13]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'maxiter' in the parent workspace.\n"); sf_mex_import_named("maxiter", sf_mex_get_sfun_param(chartInstance->S, 29, 0), &c3_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_maxiter = c3_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nxQP' in the parent workspace.\n"); sf_mex_import_named("nxQP", sf_mex_get_sfun_param(chartInstance->S, 39, 0), &c3_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nxQP = c3_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 41, 0), &c3_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_openloopflag = (c3_d7 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'lims_inport' in the parent workspace.\n"); sf_mex_import_named("lims_inport", sf_mex_get_sfun_param(chartInstance->S, 28, 0), &c3_d8, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_lims_inport = c3_d8; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umin' in the parent workspace.\n"); sf_mex_import_named("no_umin", sf_mex_get_sfun_param(chartInstance->S, 34, 0), &c3_d9, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umin = c3_d9; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umax' in the parent workspace.\n"); sf_mex_import_named("no_umax", sf_mex_get_sfun_param(chartInstance->S, 33, 0), &c3_d10, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umax = c3_d10; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymin' in the parent workspace.\n"); sf_mex_import_named("no_ymin", sf_mex_get_sfun_param(chartInstance->S, 36, 0), &c3_d11, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymin = c3_d11; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymax' in the parent workspace.\n"); sf_mex_import_named("no_ymax", sf_mex_get_sfun_param(chartInstance->S, 35, 0), &c3_d12, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymax = c3_d12; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'switch_inport' in the parent workspace.\n"); sf_mex_import_named("switch_inport", sf_mex_get_sfun_param(chartInstance->S, 45, 0), &c3_d13, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_switch_inport = c3_d13; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_switch' in the parent workspace.\n"); sf_mex_import_named("no_switch", sf_mex_get_sfun_param(chartInstance->S, 32, 0), &c3_d14, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_switch = c3_d14; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'enable_value' in the parent workspace.\n"); sf_mex_import_named("enable_value", sf_mex_get_sfun_param(chartInstance->S, 26, 0), &c3_d15, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_enable_value = c3_d15; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_cost' in the parent workspace.\n"); sf_mex_import_named("return_cost", sf_mex_get_sfun_param(chartInstance->S, 43, 0), &c3_d16, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_cost = c3_d16; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'H' in the parent workspace.\n"); sf_mex_import_named("H", sf_mex_get_sfun_param(chartInstance->S, 1, 0), c3_dv14, 0, 0, 0U, 1, 0U, 2, 7, 7); for (c3_i14 = 0; c3_i14 < 49; c3_i14++) { chartInstance->c3_H[c3_i14] = c3_dv14[c3_i14]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_sequence' in the parent workspace.\n"); sf_mex_import_named("return_sequence", sf_mex_get_sfun_param(chartInstance->S, 44, 0), &c3_d17, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_sequence = c3_d17; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'blocking_moves' in the parent workspace.\n"); sf_mex_import_named("blocking_moves", sf_mex_get_sfun_param(chartInstance->S, 24, 0), c3_dv15, 0, 0, 0U, 1, 0U, 2, 1, 5); for (c3_i15 = 0; c3_i15 < 5; c3_i15++) { chartInstance->c3_blocking_moves[c3_i15] = c3_dv15[c3_i15]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Linv' in the parent workspace.\n"); sf_mex_import_named("Linv", sf_mex_get_sfun_param(chartInstance->S, 13, 0), c3_dv16, 0, 0, 0U, 1, 0U, 2, 7, 7); for (c3_i16 = 0; c3_i16 < 49; c3_i16++) { chartInstance->c3_Linv[c3_i16] = c3_dv16[c3_i16]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ac' in the parent workspace.\n"); sf_mex_import_named("Ac", sf_mex_get_sfun_param(chartInstance->S, 0, 0), c3_dv17, 0, 0, 0U, 1, 0U, 2, 18, 7); for (c3_i17 = 0; c3_i17 < 126; c3_i17++) { chartInstance->c3_Ac[c3_i17] = c3_dv17[c3_i17]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ywt' in the parent workspace.\n"); sf_mex_import_named("no_ywt", sf_mex_get_sfun_param(chartInstance->S, 37, 0), &c3_d18, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ywt = c3_d18; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_duwt' in the parent workspace.\n"); sf_mex_import_named("no_duwt", sf_mex_get_sfun_param(chartInstance->S, 30, 0), &c3_d19, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_duwt = c3_d19; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_rhoeps' in the parent workspace.\n"); sf_mex_import_named("no_rhoeps", sf_mex_get_sfun_param(chartInstance->S, 31, 0), &c3_d20, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_rhoeps = c3_d20; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wy' in the parent workspace.\n"); sf_mex_import_named("Wy", sf_mex_get_sfun_param(chartInstance->S, 23, 0), &c3_d21, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wy = c3_d21; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wdu' in the parent workspace.\n"); sf_mex_import_named("Wdu", sf_mex_get_sfun_param(chartInstance->S, 21, 0), &c3_d22, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wdu = c3_d22; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Jm' in the parent workspace.\n"); sf_mex_import_named("Jm", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c3_d23, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Jm = c3_d23; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'SuJm' in the parent workspace.\n"); sf_mex_import_named("SuJm", sf_mex_get_sfun_param(chartInstance->S, 19, 0), &c3_d24, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_SuJm = c3_d24; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I2JmWuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I2JmWuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c3_d25, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I2JmWuI2Jm = c3_d25; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Su1' in the parent workspace.\n"); sf_mex_import_named("Su1", sf_mex_get_sfun_param(chartInstance->S, 18, 0), &c3_d26, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Su1 = c3_d26; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1WuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I1WuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c3_d27, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1WuI2Jm = c3_d27; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Sx' in the parent workspace.\n"); sf_mex_import_named("Sx", sf_mex_get_sfun_param(chartInstance->S, 20, 0), &c3_d28, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Sx = c3_d28; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hv' in the parent workspace.\n"); sf_mex_import_named("Hv", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c3_d29, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Hv = c3_d29; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wu' in the parent workspace.\n"); sf_mex_import_named("Wu", sf_mex_get_sfun_param(chartInstance->S, 22, 0), &c3_d30, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wu = c3_d30; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1' in the parent workspace.\n"); sf_mex_import_named("I1", sf_mex_get_sfun_param(chartInstance->S, 4, 0), &c3_d31, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1 = c3_d31; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { const mxArray *c3_st; const mxArray *c3_y = NULL; real_T c3_hoistedGlobal; real_T c3_u; const mxArray *c3_b_y = NULL; int32_T c3_i18; boolean_T c3_b_u[25]; const mxArray *c3_c_y = NULL; real_T c3_b_hoistedGlobal; real_T c3_c_u; const mxArray *c3_d_y = NULL; int32_T c3_i19; real_T c3_d_u[3]; const mxArray *c3_e_y = NULL; int32_T c3_i20; real_T c3_e_u[15]; const mxArray *c3_f_y = NULL; uint8_T c3_c_hoistedGlobal; uint8_T c3_f_u; const mxArray *c3_g_y = NULL; real_T *c3_cost; real_T *c3_status; real_T (*c3_useq)[15]; real_T (*c3_g_u)[3]; boolean_T (*c3_iAout)[25]; c3_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_g_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_st = NULL; c3_st = NULL; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_createcellarray(6), FALSE); c3_hoistedGlobal = *c3_cost; c3_u = c3_hoistedGlobal; c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 0, c3_b_y); for (c3_i18 = 0; c3_i18 < 25; c3_i18++) { c3_b_u[c3_i18] = (*c3_iAout)[c3_i18]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_b_u, 11, 0U, 1U, 0U, 1, 25), FALSE); sf_mex_setcell(c3_y, 1, c3_c_y); c3_b_hoistedGlobal = *c3_status; c3_c_u = c3_b_hoistedGlobal; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_c_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 2, c3_d_y); for (c3_i19 = 0; c3_i19 < 3; c3_i19++) { c3_d_u[c3_i19] = (*c3_g_u)[c3_i19]; } c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", c3_d_u, 0, 0U, 1U, 0U, 1, 3), FALSE); sf_mex_setcell(c3_y, 3, c3_e_y); for (c3_i20 = 0; c3_i20 < 15; c3_i20++) { c3_e_u[c3_i20] = (*c3_useq)[c3_i20]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 2, 5, 3), FALSE); sf_mex_setcell(c3_y, 4, c3_f_y); c3_c_hoistedGlobal = chartInstance->c3_is_active_c3_mpclib; c3_f_u = c3_c_hoistedGlobal; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_f_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 5, c3_g_y); sf_mex_assign(&c3_st, c3_y, FALSE); return c3_st; } static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st) { const mxArray *c3_u; boolean_T c3_bv0[25]; int32_T c3_i21; real_T c3_dv18[3]; int32_T c3_i22; real_T c3_dv19[15]; int32_T c3_i23; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[25]; real_T (*c3_b_u)[3]; real_T (*c3_useq)[15]; c3_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_b_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c3_doneDoubleBufferReInit = TRUE; c3_u = sf_mex_dup(c3_st); *c3_cost = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 0)), "cost"); c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 1)), "iAout", c3_bv0); for (c3_i21 = 0; c3_i21 < 25; c3_i21++) { (*c3_iAout)[c3_i21] = c3_bv0[c3_i21]; } *c3_status = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell (c3_u, 2)), "status"); c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 3)), "u", c3_dv18); for (c3_i22 = 0; c3_i22 < 3; c3_i22++) { (*c3_b_u)[c3_i22] = c3_dv18[c3_i22]; } c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 4)), "useq", c3_dv19); for (c3_i23 = 0; c3_i23 < 15; c3_i23++) { (*c3_useq)[c3_i23] = c3_dv19[c3_i23]; } chartInstance->c3_is_active_c3_mpclib = c3_y_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 5)), "is_active_c3_mpclib"); sf_mex_destroy(&c3_u); c3_update_debugger_state_c3_mpclib(chartInstance); sf_mex_destroy(&c3_st); } static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { int32_T c3_i24; int32_T c3_i25; int32_T c3_i26; int32_T c3_i27; int32_T c3_i28; int32_T c3_i29; int32_T c3_i30; int32_T c3_i31; int32_T c3_i32; int32_T c3_i33; int32_T c3_i34; int32_T c3_i35; int32_T c3_i36; int32_T c3_i37; int32_T c3_i38; int32_T c3_i39; int32_T c3_i40; int32_T c3_i41; int32_T c3_i42; int32_T c3_i43; int32_T c3_i44; int32_T c3_i45; int32_T c3_i46; int32_T c3_i47; int32_T c3_i48; int32_T c3_i49; int32_T c3_i50; int32_T c3_i51; int32_T c3_i52; int32_T c3_i53; int32_T c3_i54; int32_T c3_i55; real_T *c3_switch_in; real_T *c3_rhoeps; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[25]; real_T (*c3_useq)[15]; real_T (*c3_u)[3]; real_T (*c3_duwt)[3]; real_T (*c3_ywt)[2]; real_T (*c3_ymax)[2]; real_T (*c3_ymin)[2]; real_T (*c3_umax)[3]; real_T (*c3_umin)[3]; boolean_T (*c3_iA)[25]; real_T (*c3_old_u)[3]; real_T (*c3_x)[7]; real_T (*c3_vseq)[6]; real_T (*c3_rseq)[10]; c3_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[25])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[7])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 0U, chartInstance->c3_sfEvent); for (c3_i24 = 0; c3_i24 < 10; c3_i24++) { _SFD_DATA_RANGE_CHECK((*c3_rseq)[c3_i24], 0U); } for (c3_i25 = 0; c3_i25 < 6; c3_i25++) { _SFD_DATA_RANGE_CHECK((*c3_vseq)[c3_i25], 1U); } for (c3_i26 = 0; c3_i26 < 7; c3_i26++) { _SFD_DATA_RANGE_CHECK((*c3_x)[c3_i26], 2U); } for (c3_i27 = 0; c3_i27 < 3; c3_i27++) { _SFD_DATA_RANGE_CHECK((*c3_old_u)[c3_i27], 3U); } for (c3_i28 = 0; c3_i28 < 25; c3_i28++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iA)[c3_i28], 4U); } for (c3_i29 = 0; c3_i29 < 3; c3_i29++) { _SFD_DATA_RANGE_CHECK((*c3_umin)[c3_i29], 5U); } for (c3_i30 = 0; c3_i30 < 3; c3_i30++) { _SFD_DATA_RANGE_CHECK((*c3_umax)[c3_i30], 6U); } for (c3_i31 = 0; c3_i31 < 2; c3_i31++) { _SFD_DATA_RANGE_CHECK((*c3_ymin)[c3_i31], 7U); } for (c3_i32 = 0; c3_i32 < 2; c3_i32++) { _SFD_DATA_RANGE_CHECK((*c3_ymax)[c3_i32], 8U); } _SFD_DATA_RANGE_CHECK(*c3_switch_in, 9U); for (c3_i33 = 0; c3_i33 < 2; c3_i33++) { _SFD_DATA_RANGE_CHECK((*c3_ywt)[c3_i33], 10U); } for (c3_i34 = 0; c3_i34 < 3; c3_i34++) { _SFD_DATA_RANGE_CHECK((*c3_duwt)[c3_i34], 11U); } _SFD_DATA_RANGE_CHECK(*c3_rhoeps, 12U); for (c3_i35 = 0; c3_i35 < 3; c3_i35++) { _SFD_DATA_RANGE_CHECK((*c3_u)[c3_i35], 13U); } _SFD_DATA_RANGE_CHECK(*c3_cost, 14U); for (c3_i36 = 0; c3_i36 < 15; c3_i36++) { _SFD_DATA_RANGE_CHECK((*c3_useq)[c3_i36], 15U); } _SFD_DATA_RANGE_CHECK(*c3_status, 16U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_isQP, 17U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nu, 18U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_ny, 19U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_degrees, 20U); for (c3_i37 = 0; c3_i37 < 49; c3_i37++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hinv[c3_i37], 21U); } for (c3_i38 = 0; c3_i38 < 42; c3_i38++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kx[c3_i38], 22U); } for (c3_i39 = 0; c3_i39 < 18; c3_i39++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ku1[c3_i39], 23U); } for (c3_i40 = 0; c3_i40 < 90; c3_i40++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kut[c3_i40], 24U); } for (c3_i41 = 0; c3_i41 < 60; c3_i41++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kr[c3_i41], 25U); } for (c3_i42 = 0; c3_i42 < 36; c3_i42++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kv[c3_i42], 26U); } for (c3_i43 = 0; c3_i43 < 18; c3_i43++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mlim[c3_i43], 27U); } for (c3_i44 = 0; c3_i44 < 126; c3_i44++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mx[c3_i44], 28U); } for (c3_i45 = 0; c3_i45 < 54; c3_i45++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mu1[c3_i45], 29U); } for (c3_i46 = 0; c3_i46 < 108; c3_i46++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mv[c3_i46], 30U); } for (c3_i47 = 0; c3_i47 < 7; c3_i47++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_z_degrees[c3_i47], 31U); } for (c3_i48 = 0; c3_i48 < 15; c3_i48++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_utarget[c3_i48], 32U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_p, 33U); for (c3_i49 = 0; c3_i49 < 3; c3_i49++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_uoff[c3_i49], 34U); } for (c3_i50 = 0; c3_i50 < 2; c3_i50++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_yoff[c3_i50], 35U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_maxiter, 36U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nxQP, 37U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_openloopflag, 38U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_lims_inport, 39U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umin, 40U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umax, 41U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymin, 42U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymax, 43U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_switch_inport, 44U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_switch, 45U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_enable_value, 46U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_cost, 47U); for (c3_i51 = 0; c3_i51 < 49; c3_i51++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_H[c3_i51], 48U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_sequence, 49U); for (c3_i52 = 0; c3_i52 < 5; c3_i52++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_blocking_moves[c3_i52], 50U); } for (c3_i53 = 0; c3_i53 < 49; c3_i53++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Linv[c3_i53], 51U); } for (c3_i54 = 0; c3_i54 < 126; c3_i54++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ac[c3_i54], 52U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ywt, 53U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_duwt, 54U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_rhoeps, 55U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wy, 56U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wdu, 57U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Jm, 58U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_SuJm, 59U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I2JmWuI2Jm, 60U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Su1, 61U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1WuI2Jm, 62U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Sx, 63U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hv, 64U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wu, 65U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1, 66U); for (c3_i55 = 0; c3_i55 < 25; c3_i55++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iAout)[c3_i55], 67U); } chartInstance->c3_sfEvent = CALL_EVENT; c3_chartstep_c3_mpclib(chartInstance); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_hoistedGlobal; real_T c3_b_hoistedGlobal; int32_T c3_i56; real_T c3_rseq[10]; int32_T c3_i57; real_T c3_vseq[6]; int32_T c3_i58; real_T c3_x[7]; int32_T c3_i59; real_T c3_old_u[3]; int32_T c3_i60; boolean_T c3_iA[25]; int32_T c3_i61; real_T c3_umin[3]; int32_T c3_i62; real_T c3_umax[3]; int32_T c3_i63; real_T c3_ymin[2]; int32_T c3_i64; real_T c3_ymax[2]; real_T c3_switch_in; int32_T c3_i65; real_T c3_ywt[2]; int32_T c3_i66; real_T c3_duwt[3]; real_T c3_rhoeps; uint32_T c3_debug_family_var_map[71]; char_T c3_DataType[6]; boolean_T c3_c_isQP; real_T c3_c_nu; real_T c3_c_ny; real_T c3_c_degrees; real_T c3_c_Hinv[49]; real_T c3_c_Kx[42]; real_T c3_c_Ku1[18]; real_T c3_c_Kut[90]; real_T c3_c_Kr[60]; real_T c3_c_Kv[36]; real_T c3_c_Mlim[18]; real_T c3_c_Mx[126]; real_T c3_c_Mu1[54]; real_T c3_c_Mv[108]; real_T c3_c_z_degrees[7]; real_T c3_c_utarget[15]; real_T c3_c_p; real_T c3_c_uoff[3]; real_T c3_c_yoff[2]; real_T c3_c_maxiter; real_T c3_c_nxQP; boolean_T c3_c_openloopflag; real_T c3_c_lims_inport; real_T c3_c_no_umin; real_T c3_c_no_umax; real_T c3_c_no_ymin; real_T c3_c_no_ymax; real_T c3_c_switch_inport; real_T c3_c_no_switch; real_T c3_c_enable_value; real_T c3_c_return_cost; real_T c3_c_H[49]; real_T c3_c_return_sequence; real_T c3_c_blocking_moves[5]; real_T c3_c_Linv[49]; real_T c3_c_Ac[126]; real_T c3_c_no_ywt; real_T c3_c_no_duwt; real_T c3_c_no_rhoeps; real_T c3_c_Wy; real_T c3_c_Wdu; real_T c3_c_Jm; real_T c3_c_SuJm; real_T c3_c_I2JmWuI2Jm; real_T c3_c_Su1; real_T c3_c_I1WuI2Jm; real_T c3_c_Sx; real_T c3_c_Hv; real_T c3_c_Wu; real_T c3_c_I1; real_T c3_nargin = 63.0; real_T c3_nargout = 5.0; real_T c3_u[3]; real_T c3_cost; real_T c3_useq[15]; real_T c3_status; boolean_T c3_iAout[25]; int32_T c3_i67; static real_T c3_d_Ac[126] = { -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, -0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.0, -0.0, -0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i68; static real_T c3_d_Linv[49] = { 0.890943967335334, -0.3765340064257745, -0.081968447195651231, -3.5489218669425688, -0.0066855072825415121, 0.10307825269687318, 0.0, 0.0, 0.79076149529618434, -1.4524456148865079, 0.37621263709139358, -2.9239965883035133, 0.4669122777910914, 0.0, 0.0, 0.0, 5.1774615543769276, -0.55386901645657516, -4.1318677662181926, -3.4991992981439579, 0.0, 0.0, 0.0, 0.0, 4.6605654371565022, -0.041083569621348015, -0.15597566320059042, 0.0, 0.0, 0.0, 0.0, 0.0, 5.5702072264245217, -0.95560346771331672, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.8039367573053688, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.003162277660168379 }; int32_T c3_i69; static real_T c3_d_blocking_moves[5] = { 1.0, 1.0, 0.0, 0.0, 0.0 }; int32_T c3_i70; static real_T c3_d_H[49] = { 1.2597930755942788, 0.59987105700346466, 0.188228026070508, 0.93325195233225344, 0.46291238552612662, 0.095028876539678384, 0.0, 0.59987105700346466, 1.8848612022853453, 0.53826162835208624, 0.36860620668000732, 1.3921398940378122, 0.2645877164403112, 0.0, 0.188228026070508, 0.53826162835208624, 0.19128473163107027, 0.12261439624071246, 0.42557379326757072, 0.09364275287343965, 0.0, 0.93325195233225344, 0.36860620668000732, 0.12261439624071246, 0.74150713022437431, 0.29103635087465185, 0.062985445368814619, 0.0, 0.46291238552612662, 1.3921398940378122, 0.42557379326757072, 0.29103635087465185, 1.0813969472131397, 0.21243057759953443, 0.0, 0.095028876539678384, 0.2645877164403112, 0.09364275287343965, 0.062985445368814619, 0.21243057759953443, 0.059149576937758908, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100000.0 }; int32_T c3_i71; int32_T c3_i72; int32_T c3_i73; int32_T c3_i74; int32_T c3_i75; int32_T c3_i76; static real_T c3_d_Mu1[54] = { -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i77; int32_T c3_i78; static real_T c3_d_Mlim[18] = { 3.0, 2.0, 2.0, 3.0, 2.0, 2.0, 3.0, 2.0, 2.0, 3.0, 2.0, 2.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0 }; int32_T c3_i79; int32_T c3_i80; static real_T c3_d_Kr[60] = { -0.18126924692564353, -0.018671577551657329, -0.32967995397095429, -0.069478267418748366, -0.45118836391499728, -0.14501667000509094, -0.55067103589379174, -0.23863046066526389, -0.6321205588412, -0.34454251473540026, -0.0, -0.19879234322843986, -0.0, -0.39123188951446553, -0.0, -0.573089746155531, -0.0, -0.74187890047177918, -0.0, -0.89636167648567255, -0.0, -0.0037930220744868356, -0.0, -0.0286066973859312, -0.0, -0.0905407277861537, -0.0, -0.20029783672802043, -0.0, -0.36350399542963946, -0.0, -0.0, -0.18126924692564353, -0.018671577551657329, -0.32967995397095429, -0.069478267418748366, -0.45118836391499728, -0.14501667000509094, -0.55067103589379174, -0.23863046066526389, -0.0, -0.0, -0.0, -0.19879234322843986, -0.0, -0.39123188951446553, -0.0, -0.573089746155531, -0.0, -0.74187890047177918, -0.0, -0.0, -0.0, -0.0037930220744868356, -0.0, -0.0286066973859312, -0.0, -0.0905407277861537, -0.0, -0.20029783672802043 }; int32_T c3_i81; int32_T c3_i82; static real_T c3_d_Ku1[18] = { 1.2497930755942788, 0.59987105700346466, 0.18822802607050804, 0.59987105700346466, 1.8748612022853453, 0.53826162835208624, 0.188228026070508, 0.53826162835208624, 0.18128473163107026, 0.93325195233225344, 0.36860620668000732, 0.12261439624071246, 0.46291238552612662, 1.3921398940378122, 0.42557379326757072, 0.095028876539678384, 0.2645877164403112, 0.09364275287343965 }; int32_T c3_i83; static real_T c3_d_Kx[42] = { 1.4950071410106682, 0.65738773217961954, 1.0328079237488559, 0.567234842535362, 1.6113851449398879, 2.1449291595465869, 0.81633949037616071, 1.2749901453193779, 2.3252208946601427, 3.7278479094264276, 1.6924216567122496, 5.0863219785039542, 0.0, 2.8013545558558883, 0.35003360229234354, 0.53952675278459827, 0.83522293045637619, 0.52699933031000479, 1.4335001534251903, 0.0, 0.68674227940423171, 0.94816285509076892, 0.37139389963332908, 0.57498774460151314, 0.35923583049728058, 0.98320422379931072, 1.5128086007053869, 0.47179697564076051, 0.92922750853952851, 1.5394509413528972, 2.4178458647026169, 1.3029118393594785, 3.7508458888458702, 0.0, 1.9049928793702156, 0.16955883990592463, 0.24927859671174418, 0.3818888515088727, 0.26533887117500837, 0.70012039644749491, 0.0, 0.3232382839745922 }; int32_T c3_i84; static real_T c3_d_Hinv[49] = { 13.54779407711173, -1.4461662344138515, 1.2081816624479997, -16.555785626563523, -0.13574159670048805, 0.90749441779681306, 0.0, -1.4461662344138515, 11.644201078516016, 2.7193942828192741, 1.800664878672839, -16.733449917983965, 4.110666164882165, 0.0, 1.2081816624479997, 2.7193942828192741, 56.429606000085812, -1.8658009865707068, -19.671512706492752, -30.80672932206674, 0.0, -16.555785626563523, 1.800664878672839, -1.8658009865707068, 21.746886461221475, -0.0797931117587791, -1.3731998744967604, 0.0, -0.13574159670048805, -16.733449917983965, -19.671512706492752, -0.0797931117587791, 31.94038653281768, -8.4130724948097431, 0.0, 0.90749441779681306, 4.110666164882165, -30.80672932206674, -1.3731998744967604, -8.4130724948097431, 77.509302426632573, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.9999999999999974E-6 }; int32_T c3_i85; static char_T c3_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c3_i86; int32_T c3_i87; int32_T c3_i88; int32_T c3_i89; real_T c3_b_u[10]; const mxArray *c3_y = NULL; int32_T c3_i90; real_T c3_c_u[6]; const mxArray *c3_b_y = NULL; int32_T c3_i91; real_T c3_d_u[3]; const mxArray *c3_c_y = NULL; int32_T c3_i92; real_T c3_e_u[3]; const mxArray *c3_d_y = NULL; int32_T c3_i93; real_T c3_f_u[2]; const mxArray *c3_e_y = NULL; int32_T c3_i94; real_T c3_g_u[2]; const mxArray *c3_f_y = NULL; real_T c3_h_u; const mxArray *c3_g_y = NULL; int32_T c3_i95; real_T c3_i_u[7]; const mxArray *c3_h_y = NULL; int32_T c3_i96; real_T c3_j_u[3]; const mxArray *c3_i_y = NULL; int32_T c3_i97; boolean_T c3_k_u[25]; const mxArray *c3_j_y = NULL; boolean_T c3_l_u; const mxArray *c3_k_y = NULL; real_T c3_m_u; const mxArray *c3_l_y = NULL; real_T c3_n_u; const mxArray *c3_m_y = NULL; real_T c3_o_u; const mxArray *c3_n_y = NULL; int32_T c3_i98; real_T c3_p_u[49]; const mxArray *c3_o_y = NULL; int32_T c3_i99; real_T c3_q_u[42]; const mxArray *c3_p_y = NULL; int32_T c3_i100; real_T c3_r_u[18]; const mxArray *c3_q_y = NULL; int32_T c3_i101; real_T c3_s_u[90]; const mxArray *c3_r_y = NULL; int32_T c3_i102; real_T c3_t_u[60]; const mxArray *c3_s_y = NULL; int32_T c3_i103; real_T c3_u_u[36]; const mxArray *c3_t_y = NULL; int32_T c3_i104; real_T c3_v_u[18]; const mxArray *c3_u_y = NULL; int32_T c3_i105; real_T c3_w_u[126]; const mxArray *c3_v_y = NULL; int32_T c3_i106; real_T c3_x_u[54]; const mxArray *c3_w_y = NULL; int32_T c3_i107; real_T c3_y_u[108]; const mxArray *c3_x_y = NULL; int32_T c3_i108; real_T c3_ab_u[7]; const mxArray *c3_y_y = NULL; int32_T c3_i109; real_T c3_bb_u[15]; const mxArray *c3_ab_y = NULL; real_T c3_cb_u; const mxArray *c3_bb_y = NULL; int32_T c3_i110; real_T c3_db_u[3]; const mxArray *c3_cb_y = NULL; int32_T c3_i111; real_T c3_eb_u[2]; const mxArray *c3_db_y = NULL; real_T c3_fb_u; const mxArray *c3_eb_y = NULL; real_T c3_gb_u; const mxArray *c3_fb_y = NULL; boolean_T c3_hb_u; const mxArray *c3_gb_y = NULL; real_T c3_ib_u; const mxArray *c3_hb_y = NULL; real_T c3_jb_u; const mxArray *c3_ib_y = NULL; real_T c3_kb_u; const mxArray *c3_jb_y = NULL; real_T c3_lb_u; const mxArray *c3_kb_y = NULL; real_T c3_mb_u; const mxArray *c3_lb_y = NULL; real_T c3_nb_u; const mxArray *c3_mb_y = NULL; real_T c3_ob_u; const mxArray *c3_nb_y = NULL; real_T c3_pb_u; const mxArray *c3_ob_y = NULL; real_T c3_qb_u; const mxArray *c3_pb_y = NULL; int32_T c3_i112; real_T c3_rb_u[49]; const mxArray *c3_qb_y = NULL; real_T c3_sb_u; const mxArray *c3_rb_y = NULL; int32_T c3_i113; real_T c3_tb_u[5]; const mxArray *c3_sb_y = NULL; int32_T c3_i114; real_T c3_ub_u[49]; const mxArray *c3_tb_y = NULL; int32_T c3_i115; real_T c3_vb_u[126]; const mxArray *c3_ub_y = NULL; int32_T c3_i116; real_T c3_wb_u[2]; const mxArray *c3_vb_y = NULL; int32_T c3_i117; real_T c3_xb_u[3]; const mxArray *c3_wb_y = NULL; real_T c3_yb_u; const mxArray *c3_xb_y = NULL; real_T c3_ac_u; const mxArray *c3_yb_y = NULL; real_T c3_bc_u; const mxArray *c3_ac_y = NULL; real_T c3_cc_u; const mxArray *c3_bc_y = NULL; real_T c3_dc_u; const mxArray *c3_cc_y = NULL; real_T c3_ec_u; const mxArray *c3_dc_y = NULL; real_T c3_fc_u; const mxArray *c3_ec_y = NULL; real_T c3_gc_u; const mxArray *c3_fc_y = NULL; real_T c3_hc_u; const mxArray *c3_gc_y = NULL; real_T c3_ic_u; const mxArray *c3_hc_y = NULL; real_T c3_jc_u; const mxArray *c3_ic_y = NULL; real_T c3_kc_u; const mxArray *c3_jc_y = NULL; real_T c3_lc_u; const mxArray *c3_kc_y = NULL; real_T c3_mc_u; const mxArray *c3_lc_y = NULL; real_T c3_nc_u; const mxArray *c3_mc_y = NULL; const mxArray *c3_b_iAout = NULL; const mxArray *c3_b_status = NULL; const mxArray *c3_b_useq = NULL; const mxArray *c3_b_cost = NULL; const mxArray *c3_oc_u = NULL; real_T c3_dv20[3]; int32_T c3_i118; real_T c3_dv21[15]; int32_T c3_i119; boolean_T c3_bv1[25]; int32_T c3_i120; int32_T c3_i121; int32_T c3_i122; int32_T c3_i123; real_T *c3_b_switch_in; real_T *c3_b_rhoeps; real_T *c3_c_cost; real_T *c3_c_status; real_T (*c3_pc_u)[3]; real_T (*c3_c_useq)[15]; boolean_T (*c3_c_iAout)[25]; real_T (*c3_b_duwt)[3]; real_T (*c3_b_ywt)[2]; real_T (*c3_b_ymax)[2]; real_T (*c3_b_ymin)[2]; real_T (*c3_b_umax)[3]; real_T (*c3_b_umin)[3]; boolean_T (*c3_b_iA)[25]; real_T (*c3_b_old_u)[3]; real_T (*c3_b_x)[7]; real_T (*c3_b_vseq)[6]; real_T (*c3_b_rseq)[10]; c3_c_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_c_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_c_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_c_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_pc_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_b_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_b_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_b_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_b_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_b_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_b_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_b_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_b_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_b_iA = (boolean_T (*)[25])ssGetInputPortSignal(chartInstance->S, 4); c3_b_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_b_x = (real_T (*)[7])ssGetInputPortSignal(chartInstance->S, 2); c3_b_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_b_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); c3_hoistedGlobal = *c3_b_switch_in; c3_b_hoistedGlobal = *c3_b_rhoeps; for (c3_i56 = 0; c3_i56 < 10; c3_i56++) { c3_rseq[c3_i56] = (*c3_b_rseq)[c3_i56]; } for (c3_i57 = 0; c3_i57 < 6; c3_i57++) { c3_vseq[c3_i57] = (*c3_b_vseq)[c3_i57]; } for (c3_i58 = 0; c3_i58 < 7; c3_i58++) { c3_x[c3_i58] = (*c3_b_x)[c3_i58]; } for (c3_i59 = 0; c3_i59 < 3; c3_i59++) { c3_old_u[c3_i59] = (*c3_b_old_u)[c3_i59]; } for (c3_i60 = 0; c3_i60 < 25; c3_i60++) { c3_iA[c3_i60] = (*c3_b_iA)[c3_i60]; } for (c3_i61 = 0; c3_i61 < 3; c3_i61++) { c3_umin[c3_i61] = (*c3_b_umin)[c3_i61]; } for (c3_i62 = 0; c3_i62 < 3; c3_i62++) { c3_umax[c3_i62] = (*c3_b_umax)[c3_i62]; } for (c3_i63 = 0; c3_i63 < 2; c3_i63++) { c3_ymin[c3_i63] = (*c3_b_ymin)[c3_i63]; } for (c3_i64 = 0; c3_i64 < 2; c3_i64++) { c3_ymax[c3_i64] = (*c3_b_ymax)[c3_i64]; } c3_switch_in = c3_hoistedGlobal; for (c3_i65 = 0; c3_i65 < 2; c3_i65++) { c3_ywt[c3_i65] = (*c3_b_ywt)[c3_i65]; } for (c3_i66 = 0; c3_i66 < 3; c3_i66++) { c3_duwt[c3_i66] = (*c3_b_duwt)[c3_i66]; } c3_rhoeps = c3_b_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 71U, 71U, c3_debug_family_names, c3_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c3_DataType, 0U, c3_v_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_isQP, 1U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nu, 2U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_ny, 3U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_degrees, 4U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Hinv, 5U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kx, 6U, c3_u_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ku1, 7U, c3_t_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kut, 8U, c3_s_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kr, 9U, c3_r_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kv, 10U, c3_q_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mlim, 11U, c3_p_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mx, 12U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mu1, 13U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mv, 14U, c3_n_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_z_degrees, 15U, c3_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_utarget, 16U, c3_m_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_p, 17U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_uoff, 18U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_yoff, 19U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_maxiter, 20U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nxQP, 21U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_openloopflag, 22U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_lims_inport, 23U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umin, 24U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umax, 25U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymin, 26U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymax, 27U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_switch_inport, 28U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_switch, 29U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_enable_value, 30U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_cost, 31U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_H, 32U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_sequence, 33U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_blocking_moves, 34U, c3_k_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Linv, 35U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ac, 36U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ywt, 37U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_duwt, 38U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_rhoeps, 39U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wy, 40U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wdu, 41U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Jm, 42U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_SuJm, 43U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I2JmWuI2Jm, 44U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Su1, 45U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1WuI2Jm, 46U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Sx, 47U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Hv, 48U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wu, 49U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1, 50U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargin, 51U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargout, 52U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c3_rseq, 53U, c3_h_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_vseq, 54U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_x, 55U, c3_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_old_u, 56U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_iA, 57U, c3_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_umin, 58U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_umax, 59U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ymin, 60U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ymax, 61U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_switch_in, 62U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ywt, 63U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_duwt, 64U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_rhoeps, 65U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_u, 66U, c3_d_sf_marshallOut, c3_d_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_cost, 67U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_useq, 68U, c3_c_sf_marshallOut, c3_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_status, 69U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_iAout, 70U, c3_sf_marshallOut, c3_sf_marshallIn); c3_c_I1 = c3_b_I1; c3_c_Wu = c3_b_Wu; c3_c_Hv = c3_b_Hv; c3_c_Sx = c3_b_Sx; c3_c_I1WuI2Jm = c3_b_I1WuI2Jm; c3_c_Su1 = c3_b_Su1; c3_c_I2JmWuI2Jm = c3_b_I2JmWuI2Jm; c3_c_SuJm = c3_b_SuJm; c3_c_Jm = c3_b_Jm; c3_c_Wdu = c3_b_Wdu; c3_c_Wy = c3_b_Wy; c3_c_no_rhoeps = c3_b_no_rhoeps; c3_c_no_duwt = c3_b_no_duwt; c3_c_no_ywt = c3_b_no_ywt; for (c3_i67 = 0; c3_i67 < 126; c3_i67++) { c3_c_Ac[c3_i67] = c3_d_Ac[c3_i67]; } for (c3_i68 = 0; c3_i68 < 49; c3_i68++) { c3_c_Linv[c3_i68] = c3_d_Linv[c3_i68]; } for (c3_i69 = 0; c3_i69 < 5; c3_i69++) { c3_c_blocking_moves[c3_i69] = c3_d_blocking_moves[c3_i69]; } c3_c_return_sequence = c3_b_return_sequence; for (c3_i70 = 0; c3_i70 < 49; c3_i70++) { c3_c_H[c3_i70] = c3_d_H[c3_i70]; } c3_c_return_cost = c3_b_return_cost; c3_c_enable_value = c3_b_enable_value; c3_c_no_switch = c3_b_no_switch; c3_c_switch_inport = c3_b_switch_inport; c3_c_no_ymax = c3_b_no_ymax; c3_c_no_ymin = c3_b_no_ymin; c3_c_no_umax = c3_b_no_umax; c3_c_no_umin = c3_b_no_umin; c3_c_lims_inport = c3_b_lims_inport; c3_c_openloopflag = c3_b_openloopflag; c3_c_nxQP = c3_b_nxQP; c3_c_maxiter = c3_b_maxiter; for (c3_i71 = 0; c3_i71 < 2; c3_i71++) { c3_c_yoff[c3_i71] = 0.0; } for (c3_i72 = 0; c3_i72 < 3; c3_i72++) { c3_c_uoff[c3_i72] = 0.0; } c3_c_p = c3_b_p; for (c3_i73 = 0; c3_i73 < 15; c3_i73++) { c3_c_utarget[c3_i73] = 0.0; } for (c3_i74 = 0; c3_i74 < 7; c3_i74++) { c3_c_z_degrees[c3_i74] = 0.0; } for (c3_i75 = 0; c3_i75 < 108; c3_i75++) { c3_c_Mv[c3_i75] = 0.0; } for (c3_i76 = 0; c3_i76 < 54; c3_i76++) { c3_c_Mu1[c3_i76] = c3_d_Mu1[c3_i76]; } for (c3_i77 = 0; c3_i77 < 126; c3_i77++) { c3_c_Mx[c3_i77] = 0.0; } for (c3_i78 = 0; c3_i78 < 18; c3_i78++) { c3_c_Mlim[c3_i78] = c3_d_Mlim[c3_i78]; } for (c3_i79 = 0; c3_i79 < 36; c3_i79++) { c3_c_Kv[c3_i79] = 0.0; } for (c3_i80 = 0; c3_i80 < 60; c3_i80++) { c3_c_Kr[c3_i80] = c3_d_Kr[c3_i80]; } for (c3_i81 = 0; c3_i81 < 90; c3_i81++) { c3_c_Kut[c3_i81] = 0.0; } for (c3_i82 = 0; c3_i82 < 18; c3_i82++) { c3_c_Ku1[c3_i82] = c3_d_Ku1[c3_i82]; } for (c3_i83 = 0; c3_i83 < 42; c3_i83++) { c3_c_Kx[c3_i83] = c3_d_Kx[c3_i83]; } for (c3_i84 = 0; c3_i84 < 49; c3_i84++) { c3_c_Hinv[c3_i84] = c3_d_Hinv[c3_i84]; } c3_c_degrees = c3_b_degrees; c3_c_ny = c3_b_ny; c3_c_nu = c3_b_nu; c3_c_isQP = c3_b_isQP; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 8); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 9); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 10); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 12); for (c3_i85 = 0; c3_i85 < 6; c3_i85++) { c3_DataType[c3_i85] = c3_cv0[c3_i85]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 13); for (c3_i86 = 0; c3_i86 < 3; c3_i86++) { c3_u[c3_i86] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 14); c3_cost = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 15); for (c3_i87 = 0; c3_i87 < 15; c3_i87++) { c3_useq[c3_i87] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 16); c3_status = 1.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 17); for (c3_i88 = 0; c3_i88 < 25; c3_i88++) { c3_iAout[c3_i88] = FALSE; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 18); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 19); for (c3_i89 = 0; c3_i89 < 10; c3_i89++) { c3_b_u[c3_i89] = c3_rseq[c3_i89]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_b_u, 0, 0U, 1U, 0U, 1, 10), FALSE); for (c3_i90 = 0; c3_i90 < 6; c3_i90++) { c3_c_u[c3_i90] = c3_vseq[c3_i90]; } c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", c3_c_u, 0, 0U, 1U, 0U, 1, 6), FALSE); for (c3_i91 = 0; c3_i91 < 3; c3_i91++) { c3_d_u[c3_i91] = c3_umin[c3_i91]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_d_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i92 = 0; c3_i92 < 3; c3_i92++) { c3_e_u[c3_i92] = c3_umax[c3_i92]; } c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i93 = 0; c3_i93 < 2; c3_i93++) { c3_f_u[c3_i93] = c3_ymin[c3_i93]; } c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", c3_f_u, 0, 0U, 1U, 0U, 1, 2), FALSE); for (c3_i94 = 0; c3_i94 < 2; c3_i94++) { c3_g_u[c3_i94] = c3_ymax[c3_i94]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_g_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c3_h_u = c3_switch_in; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_h_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i95 = 0; c3_i95 < 7; c3_i95++) { c3_i_u[c3_i95] = c3_x[c3_i95]; } c3_h_y = NULL; sf_mex_assign(&c3_h_y, sf_mex_create("y", c3_i_u, 0, 0U, 1U, 0U, 1, 7), FALSE); for (c3_i96 = 0; c3_i96 < 3; c3_i96++) { c3_j_u[c3_i96] = c3_old_u[c3_i96]; } c3_i_y = NULL; sf_mex_assign(&c3_i_y, sf_mex_create("y", c3_j_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i97 = 0; c3_i97 < 25; c3_i97++) { c3_k_u[c3_i97] = c3_iA[c3_i97]; } c3_j_y = NULL; sf_mex_assign(&c3_j_y, sf_mex_create("y", c3_k_u, 11, 0U, 1U, 0U, 1, 25), FALSE); c3_l_u = c3_b_isQP; c3_k_y = NULL; sf_mex_assign(&c3_k_y, sf_mex_create("y", &c3_l_u, 11, 0U, 0U, 0U, 0), FALSE); c3_m_u = c3_b_nu; c3_l_y = NULL; sf_mex_assign(&c3_l_y, sf_mex_create("y", &c3_m_u, 0, 0U, 0U, 0U, 0), FALSE); c3_n_u = c3_b_ny; c3_m_y = NULL; sf_mex_assign(&c3_m_y, sf_mex_create("y", &c3_n_u, 0, 0U, 0U, 0U, 0), FALSE); c3_o_u = c3_b_degrees; c3_n_y = NULL; sf_mex_assign(&c3_n_y, sf_mex_create("y", &c3_o_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i98 = 0; c3_i98 < 49; c3_i98++) { c3_p_u[c3_i98] = c3_d_Hinv[c3_i98]; } c3_o_y = NULL; sf_mex_assign(&c3_o_y, sf_mex_create("y", c3_p_u, 0, 0U, 1U, 0U, 2, 7, 7), FALSE); for (c3_i99 = 0; c3_i99 < 42; c3_i99++) { c3_q_u[c3_i99] = c3_d_Kx[c3_i99]; } c3_p_y = NULL; sf_mex_assign(&c3_p_y, sf_mex_create("y", c3_q_u, 0, 0U, 1U, 0U, 2, 7, 6), FALSE); for (c3_i100 = 0; c3_i100 < 18; c3_i100++) { c3_r_u[c3_i100] = c3_d_Ku1[c3_i100]; } c3_q_y = NULL; sf_mex_assign(&c3_q_y, sf_mex_create("y", c3_r_u, 0, 0U, 1U, 0U, 2, 3, 6), FALSE); for (c3_i101 = 0; c3_i101 < 90; c3_i101++) { c3_s_u[c3_i101] = 0.0; } c3_r_y = NULL; sf_mex_assign(&c3_r_y, sf_mex_create("y", c3_s_u, 0, 0U, 1U, 0U, 2, 15, 6), FALSE); for (c3_i102 = 0; c3_i102 < 60; c3_i102++) { c3_t_u[c3_i102] = c3_d_Kr[c3_i102]; } c3_s_y = NULL; sf_mex_assign(&c3_s_y, sf_mex_create("y", c3_t_u, 0, 0U, 1U, 0U, 2, 10, 6), FALSE); for (c3_i103 = 0; c3_i103 < 36; c3_i103++) { c3_u_u[c3_i103] = 0.0; } c3_t_y = NULL; sf_mex_assign(&c3_t_y, sf_mex_create("y", c3_u_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); for (c3_i104 = 0; c3_i104 < 18; c3_i104++) { c3_v_u[c3_i104] = c3_d_Mlim[c3_i104]; } c3_u_y = NULL; sf_mex_assign(&c3_u_y, sf_mex_create("y", c3_v_u, 0, 0U, 1U, 0U, 1, 18), FALSE); for (c3_i105 = 0; c3_i105 < 126; c3_i105++) { c3_w_u[c3_i105] = 0.0; } c3_v_y = NULL; sf_mex_assign(&c3_v_y, sf_mex_create("y", c3_w_u, 0, 0U, 1U, 0U, 2, 18, 7), FALSE); for (c3_i106 = 0; c3_i106 < 54; c3_i106++) { c3_x_u[c3_i106] = c3_d_Mu1[c3_i106]; } c3_w_y = NULL; sf_mex_assign(&c3_w_y, sf_mex_create("y", c3_x_u, 0, 0U, 1U, 0U, 2, 18, 3), FALSE); for (c3_i107 = 0; c3_i107 < 108; c3_i107++) { c3_y_u[c3_i107] = 0.0; } c3_x_y = NULL; sf_mex_assign(&c3_x_y, sf_mex_create("y", c3_y_u, 0, 0U, 1U, 0U, 2, 18, 6), FALSE); for (c3_i108 = 0; c3_i108 < 7; c3_i108++) { c3_ab_u[c3_i108] = 0.0; } c3_y_y = NULL; sf_mex_assign(&c3_y_y, sf_mex_create("y", c3_ab_u, 0, 0U, 1U, 0U, 1, 7), FALSE); for (c3_i109 = 0; c3_i109 < 15; c3_i109++) { c3_bb_u[c3_i109] = 0.0; } c3_ab_y = NULL; sf_mex_assign(&c3_ab_y, sf_mex_create("y", c3_bb_u, 0, 0U, 1U, 0U, 1, 15), FALSE); c3_cb_u = c3_b_p; c3_bb_y = NULL; sf_mex_assign(&c3_bb_y, sf_mex_create("y", &c3_cb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i110 = 0; c3_i110 < 3; c3_i110++) { c3_db_u[c3_i110] = 0.0; } c3_cb_y = NULL; sf_mex_assign(&c3_cb_y, sf_mex_create("y", c3_db_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i111 = 0; c3_i111 < 2; c3_i111++) { c3_eb_u[c3_i111] = 0.0; } c3_db_y = NULL; sf_mex_assign(&c3_db_y, sf_mex_create("y", c3_eb_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c3_fb_u = c3_b_maxiter; c3_eb_y = NULL; sf_mex_assign(&c3_eb_y, sf_mex_create("y", &c3_fb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gb_u = c3_b_nxQP; c3_fb_y = NULL; sf_mex_assign(&c3_fb_y, sf_mex_create("y", &c3_gb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hb_u = c3_b_openloopflag; c3_gb_y = NULL; sf_mex_assign(&c3_gb_y, sf_mex_create("y", &c3_hb_u, 11, 0U, 0U, 0U, 0), FALSE); c3_ib_u = c3_b_lims_inport; c3_hb_y = NULL; sf_mex_assign(&c3_hb_y, sf_mex_create("y", &c3_ib_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jb_u = c3_b_no_umin; c3_ib_y = NULL; sf_mex_assign(&c3_ib_y, sf_mex_create("y", &c3_jb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kb_u = c3_b_no_umax; c3_jb_y = NULL; sf_mex_assign(&c3_jb_y, sf_mex_create("y", &c3_kb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lb_u = c3_b_no_ymin; c3_kb_y = NULL; sf_mex_assign(&c3_kb_y, sf_mex_create("y", &c3_lb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mb_u = c3_b_no_ymax; c3_lb_y = NULL; sf_mex_assign(&c3_lb_y, sf_mex_create("y", &c3_mb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nb_u = c3_b_switch_inport; c3_mb_y = NULL; sf_mex_assign(&c3_mb_y, sf_mex_create("y", &c3_nb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ob_u = c3_b_no_switch; c3_nb_y = NULL; sf_mex_assign(&c3_nb_y, sf_mex_create("y", &c3_ob_u, 0, 0U, 0U, 0U, 0), FALSE); c3_pb_u = c3_b_enable_value; c3_ob_y = NULL; sf_mex_assign(&c3_ob_y, sf_mex_create("y", &c3_pb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_qb_u = c3_b_return_cost; c3_pb_y = NULL; sf_mex_assign(&c3_pb_y, sf_mex_create("y", &c3_qb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i112 = 0; c3_i112 < 49; c3_i112++) { c3_rb_u[c3_i112] = c3_d_H[c3_i112]; } c3_qb_y = NULL; sf_mex_assign(&c3_qb_y, sf_mex_create("y", c3_rb_u, 0, 0U, 1U, 0U, 2, 7, 7), FALSE); c3_sb_u = c3_b_return_sequence; c3_rb_y = NULL; sf_mex_assign(&c3_rb_y, sf_mex_create("y", &c3_sb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i113 = 0; c3_i113 < 5; c3_i113++) { c3_tb_u[c3_i113] = c3_d_blocking_moves[c3_i113]; } c3_sb_y = NULL; sf_mex_assign(&c3_sb_y, sf_mex_create("y", c3_tb_u, 0, 0U, 1U, 0U, 2, 1, 5), FALSE); for (c3_i114 = 0; c3_i114 < 49; c3_i114++) { c3_ub_u[c3_i114] = c3_d_Linv[c3_i114]; } c3_tb_y = NULL; sf_mex_assign(&c3_tb_y, sf_mex_create("y", c3_ub_u, 0, 0U, 1U, 0U, 2, 7, 7), FALSE); for (c3_i115 = 0; c3_i115 < 126; c3_i115++) { c3_vb_u[c3_i115] = c3_d_Ac[c3_i115]; } c3_ub_y = NULL; sf_mex_assign(&c3_ub_y, sf_mex_create("y", c3_vb_u, 0, 0U, 1U, 0U, 2, 18, 7), FALSE); for (c3_i116 = 0; c3_i116 < 2; c3_i116++) { c3_wb_u[c3_i116] = c3_ywt[c3_i116]; } c3_vb_y = NULL; sf_mex_assign(&c3_vb_y, sf_mex_create("y", c3_wb_u, 0, 0U, 1U, 0U, 1, 2), FALSE); for (c3_i117 = 0; c3_i117 < 3; c3_i117++) { c3_xb_u[c3_i117] = c3_duwt[c3_i117]; } c3_wb_y = NULL; sf_mex_assign(&c3_wb_y, sf_mex_create("y", c3_xb_u, 0, 0U, 1U, 0U, 1, 3), FALSE); c3_yb_u = c3_rhoeps; c3_xb_y = NULL; sf_mex_assign(&c3_xb_y, sf_mex_create("y", &c3_yb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ac_u = c3_b_no_ywt; c3_yb_y = NULL; sf_mex_assign(&c3_yb_y, sf_mex_create("y", &c3_ac_u, 0, 0U, 0U, 0U, 0), FALSE); c3_bc_u = c3_b_no_duwt; c3_ac_y = NULL; sf_mex_assign(&c3_ac_y, sf_mex_create("y", &c3_bc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_cc_u = c3_b_no_rhoeps; c3_bc_y = NULL; sf_mex_assign(&c3_bc_y, sf_mex_create("y", &c3_cc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_dc_u = c3_b_Wy; c3_cc_y = NULL; sf_mex_assign(&c3_cc_y, sf_mex_create("y", &c3_dc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ec_u = c3_b_Wdu; c3_dc_y = NULL; sf_mex_assign(&c3_dc_y, sf_mex_create("y", &c3_ec_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fc_u = c3_b_Jm; c3_ec_y = NULL; sf_mex_assign(&c3_ec_y, sf_mex_create("y", &c3_fc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gc_u = c3_b_SuJm; c3_fc_y = NULL; sf_mex_assign(&c3_fc_y, sf_mex_create("y", &c3_gc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hc_u = c3_b_I2JmWuI2Jm; c3_gc_y = NULL; sf_mex_assign(&c3_gc_y, sf_mex_create("y", &c3_hc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ic_u = c3_b_Su1; c3_hc_y = NULL; sf_mex_assign(&c3_hc_y, sf_mex_create("y", &c3_ic_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jc_u = c3_b_I1WuI2Jm; c3_ic_y = NULL; sf_mex_assign(&c3_ic_y, sf_mex_create("y", &c3_jc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kc_u = c3_b_Sx; c3_jc_y = NULL; sf_mex_assign(&c3_jc_y, sf_mex_create("y", &c3_kc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lc_u = c3_b_Hv; c3_kc_y = NULL; sf_mex_assign(&c3_kc_y, sf_mex_create("y", &c3_lc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mc_u = c3_b_Wu; c3_lc_y = NULL; sf_mex_assign(&c3_lc_y, sf_mex_create("y", &c3_mc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nc_u = c3_b_I1; c3_mc_y = NULL; sf_mex_assign(&c3_mc_y, sf_mex_create("y", &c3_nc_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_optimizer_double_mex", 5U, 63U, 14, c3_y, 14, c3_b_y, 14, c3_c_y, 14, c3_d_y, 14, c3_e_y, 14, c3_f_y, 14, c3_g_y, 14, c3_h_y, 14, c3_i_y, 14, c3_j_y, 14, c3_k_y, 14, c3_l_y, 14, c3_m_y, 14, c3_n_y, 14, c3_o_y, 14, c3_p_y, 14, c3_q_y, 14, c3_r_y, 14, c3_s_y, 14, c3_t_y, 14, c3_u_y, 14, c3_v_y, 14, c3_w_y, 14, c3_x_y, 14, c3_y_y, 14, c3_ab_y, 14, c3_bb_y, 14, c3_cb_y, 14, c3_db_y, 14, c3_eb_y, 14, c3_fb_y, 14, c3_gb_y, 14, c3_hb_y, 14, c3_ib_y, 14, c3_jb_y, 14, c3_kb_y, 14, c3_lb_y, 14, c3_mb_y, 14, c3_nb_y, 14, c3_ob_y, 14, c3_pb_y, 14, c3_qb_y, 14, c3_rb_y, 14, c3_sb_y, 14, c3_tb_y, 14, c3_ub_y, 14, c3_vb_y, 14, c3_wb_y, 14, c3_xb_y, 14, c3_yb_y, 14, c3_ac_y, 14, c3_bc_y, 14, c3_cc_y, 14, c3_dc_y, 14, c3_ec_y, 14, c3_fc_y, 14, c3_gc_y, 14, c3_hc_y, 14, c3_ic_y, 14, c3_jc_y, 14, c3_kc_y, 14, c3_lc_y, 14, c3_mc_y, &c3_oc_u, &c3_b_cost, &c3_b_useq, &c3_b_status, &c3_b_iAout); c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_oc_u), "u", c3_dv20); for (c3_i118 = 0; c3_i118 < 3; c3_i118++) { c3_u[c3_i118] = c3_dv20[c3_i118]; } c3_cost = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_cost), "cost"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_useq), "useq", c3_dv21); for (c3_i119 = 0; c3_i119 < 15; c3_i119++) { c3_useq[c3_i119] = c3_dv21[c3_i119]; } c3_status = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_status), "status"); c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_iAout), "iAout", c3_bv1); for (c3_i120 = 0; c3_i120 < 25; c3_i120++) { c3_iAout[c3_i120] = c3_bv1[c3_i120]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, -31); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c3_oc_u); sf_mex_destroy(&c3_b_cost); sf_mex_destroy(&c3_b_useq); sf_mex_destroy(&c3_b_status); sf_mex_destroy(&c3_b_iAout); for (c3_i121 = 0; c3_i121 < 3; c3_i121++) { (*c3_pc_u)[c3_i121] = c3_u[c3_i121]; } *c3_c_cost = c3_cost; for (c3_i122 = 0; c3_i122 < 15; c3_i122++) { (*c3_c_useq)[c3_i122] = c3_useq[c3_i122]; } *c3_c_status = c3_status; for (c3_i123 = 0; c3_i123 < 25; c3_i123++) { (*c3_c_iAout)[c3_i123] = c3_iAout[c3_i123]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); } static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber) { } static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i124; boolean_T c3_b_inData[25]; int32_T c3_i125; boolean_T c3_u[25]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i124 = 0; c3_i124 < 25; c3_i124++) { c3_b_inData[c3_i124] = (*(boolean_T (*)[25])c3_inData)[c3_i124]; } for (c3_i125 = 0; c3_i125 < 25; c3_i125++) { c3_u[c3_i125] = c3_b_inData[c3_i125]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 11, 0U, 1U, 0U, 1, 25), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_iAout; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y[25]; int32_T c3_i126; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_iAout = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); for (c3_i126 = 0; c3_i126 < 25; c3_i126++) { (*(boolean_T (*)[25])c3_outData)[c3_i126] = c3_y[c3_i126]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; real_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(real_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_cost; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_cost = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_cost), &c3_thisId); sf_mex_destroy(&c3_cost); *(real_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i127; int32_T c3_i128; int32_T c3_i129; real_T c3_b_inData[15]; int32_T c3_i130; int32_T c3_i131; int32_T c3_i132; real_T c3_u[15]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i127 = 0; for (c3_i128 = 0; c3_i128 < 3; c3_i128++) { for (c3_i129 = 0; c3_i129 < 5; c3_i129++) { c3_b_inData[c3_i129 + c3_i127] = (*(real_T (*)[15])c3_inData)[c3_i129 + c3_i127]; } c3_i127 += 5; } c3_i130 = 0; for (c3_i131 = 0; c3_i131 < 3; c3_i131++) { for (c3_i132 = 0; c3_i132 < 5; c3_i132++) { c3_u[c3_i132 + c3_i130] = c3_b_inData[c3_i132 + c3_i130]; } c3_i130 += 5; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 5, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_useq; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[15]; int32_T c3_i133; int32_T c3_i134; int32_T c3_i135; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_useq = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); c3_i133 = 0; for (c3_i134 = 0; c3_i134 < 3; c3_i134++) { for (c3_i135 = 0; c3_i135 < 5; c3_i135++) { (*(real_T (*)[15])c3_outData)[c3_i135 + c3_i133] = c3_y[c3_i135 + c3_i133]; } c3_i133 += 5; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i136; real_T c3_b_inData[3]; int32_T c3_i137; real_T c3_u[3]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i136 = 0; c3_i136 < 3; c3_i136++) { c3_b_inData[c3_i136] = (*(real_T (*)[3])c3_inData)[c3_i136]; } for (c3_i137 = 0; c3_i137 < 3; c3_i137++) { c3_u[c3_i137] = c3_b_inData[c3_i137]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_u; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[3]; int32_T c3_i138; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_u = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId, c3_y); sf_mex_destroy(&c3_u); for (c3_i138 = 0; c3_i138 < 3; c3_i138++) { (*(real_T (*)[3])c3_outData)[c3_i138] = c3_y[c3_i138]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i139; real_T c3_b_inData[2]; int32_T c3_i140; real_T c3_u[2]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i139 = 0; c3_i139 < 2; c3_i139++) { c3_b_inData[c3_i139] = (*(real_T (*)[2])c3_inData)[c3_i139]; } for (c3_i140 = 0; c3_i140 < 2; c3_i140++) { c3_u[c3_i140] = c3_b_inData[c3_i140]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i141; real_T c3_b_inData[7]; int32_T c3_i142; real_T c3_u[7]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i141 = 0; c3_i141 < 7; c3_i141++) { c3_b_inData[c3_i141] = (*(real_T (*)[7])c3_inData)[c3_i141]; } for (c3_i142 = 0; c3_i142 < 7; c3_i142++) { c3_u[c3_i142] = c3_b_inData[c3_i142]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 7), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i143; real_T c3_b_inData[6]; int32_T c3_i144; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i143 = 0; c3_i143 < 6; c3_i143++) { c3_b_inData[c3_i143] = (*(real_T (*)[6])c3_inData)[c3_i143]; } for (c3_i144 = 0; c3_i144 < 6; c3_i144++) { c3_u[c3_i144] = c3_b_inData[c3_i144]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i145; real_T c3_b_inData[10]; int32_T c3_i146; real_T c3_u[10]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i145 = 0; c3_i145 < 10; c3_i145++) { c3_b_inData[c3_i145] = (*(real_T (*)[10])c3_inData)[c3_i145]; } for (c3_i146 = 0; c3_i146 < 10; c3_i146++) { c3_u[c3_i146] = c3_b_inData[c3_i146]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i147; int32_T c3_i148; int32_T c3_i149; real_T c3_b_inData[126]; int32_T c3_i150; int32_T c3_i151; int32_T c3_i152; real_T c3_u[126]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i147 = 0; for (c3_i148 = 0; c3_i148 < 7; c3_i148++) { for (c3_i149 = 0; c3_i149 < 18; c3_i149++) { c3_b_inData[c3_i149 + c3_i147] = (*(real_T (*)[126])c3_inData)[c3_i149 + c3_i147]; } c3_i147 += 18; } c3_i150 = 0; for (c3_i151 = 0; c3_i151 < 7; c3_i151++) { for (c3_i152 = 0; c3_i152 < 18; c3_i152++) { c3_u[c3_i152 + c3_i150] = c3_b_inData[c3_i152 + c3_i150]; } c3_i150 += 18; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 18, 7), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i153; int32_T c3_i154; int32_T c3_i155; real_T c3_b_inData[49]; int32_T c3_i156; int32_T c3_i157; int32_T c3_i158; real_T c3_u[49]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i153 = 0; for (c3_i154 = 0; c3_i154 < 7; c3_i154++) { for (c3_i155 = 0; c3_i155 < 7; c3_i155++) { c3_b_inData[c3_i155 + c3_i153] = (*(real_T (*)[49])c3_inData)[c3_i155 + c3_i153]; } c3_i153 += 7; } c3_i156 = 0; for (c3_i157 = 0; c3_i157 < 7; c3_i157++) { for (c3_i158 = 0; c3_i158 < 7; c3_i158++) { c3_u[c3_i158 + c3_i156] = c3_b_inData[c3_i158 + c3_i156]; } c3_i156 += 7; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 7, 7), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i159; real_T c3_b_inData[5]; int32_T c3_i160; real_T c3_u[5]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i159 = 0; c3_i159 < 5; c3_i159++) { c3_b_inData[c3_i159] = (*(real_T (*)[5])c3_inData)[c3_i159]; } for (c3_i160 = 0; c3_i160 < 5; c3_i160++) { c3_u[c3_i160] = c3_b_inData[c3_i160]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 5), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; boolean_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(boolean_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i161; real_T c3_b_inData[15]; int32_T c3_i162; real_T c3_u[15]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i161 = 0; c3_i161 < 15; c3_i161++) { c3_b_inData[c3_i161] = (*(real_T (*)[15])c3_inData)[c3_i161]; } for (c3_i162 = 0; c3_i162 < 15; c3_i162++) { c3_u[c3_i162] = c3_b_inData[c3_i162]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 15), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i163; int32_T c3_i164; int32_T c3_i165; real_T c3_b_inData[108]; int32_T c3_i166; int32_T c3_i167; int32_T c3_i168; real_T c3_u[108]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i163 = 0; for (c3_i164 = 0; c3_i164 < 6; c3_i164++) { for (c3_i165 = 0; c3_i165 < 18; c3_i165++) { c3_b_inData[c3_i165 + c3_i163] = (*(real_T (*)[108])c3_inData)[c3_i165 + c3_i163]; } c3_i163 += 18; } c3_i166 = 0; for (c3_i167 = 0; c3_i167 < 6; c3_i167++) { for (c3_i168 = 0; c3_i168 < 18; c3_i168++) { c3_u[c3_i168 + c3_i166] = c3_b_inData[c3_i168 + c3_i166]; } c3_i166 += 18; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 18, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i169; int32_T c3_i170; int32_T c3_i171; real_T c3_b_inData[54]; int32_T c3_i172; int32_T c3_i173; int32_T c3_i174; real_T c3_u[54]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i169 = 0; for (c3_i170 = 0; c3_i170 < 3; c3_i170++) { for (c3_i171 = 0; c3_i171 < 18; c3_i171++) { c3_b_inData[c3_i171 + c3_i169] = (*(real_T (*)[54])c3_inData)[c3_i171 + c3_i169]; } c3_i169 += 18; } c3_i172 = 0; for (c3_i173 = 0; c3_i173 < 3; c3_i173++) { for (c3_i174 = 0; c3_i174 < 18; c3_i174++) { c3_u[c3_i174 + c3_i172] = c3_b_inData[c3_i174 + c3_i172]; } c3_i172 += 18; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 18, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i175; real_T c3_b_inData[18]; int32_T c3_i176; real_T c3_u[18]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i175 = 0; c3_i175 < 18; c3_i175++) { c3_b_inData[c3_i175] = (*(real_T (*)[18])c3_inData)[c3_i175]; } for (c3_i176 = 0; c3_i176 < 18; c3_i176++) { c3_u[c3_i176] = c3_b_inData[c3_i176]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 18), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i177; int32_T c3_i178; int32_T c3_i179; real_T c3_b_inData[36]; int32_T c3_i180; int32_T c3_i181; int32_T c3_i182; real_T c3_u[36]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i177 = 0; for (c3_i178 = 0; c3_i178 < 6; c3_i178++) { for (c3_i179 = 0; c3_i179 < 6; c3_i179++) { c3_b_inData[c3_i179 + c3_i177] = (*(real_T (*)[36])c3_inData)[c3_i179 + c3_i177]; } c3_i177 += 6; } c3_i180 = 0; for (c3_i181 = 0; c3_i181 < 6; c3_i181++) { for (c3_i182 = 0; c3_i182 < 6; c3_i182++) { c3_u[c3_i182 + c3_i180] = c3_b_inData[c3_i182 + c3_i180]; } c3_i180 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i183; int32_T c3_i184; int32_T c3_i185; real_T c3_b_inData[60]; int32_T c3_i186; int32_T c3_i187; int32_T c3_i188; real_T c3_u[60]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i183 = 0; for (c3_i184 = 0; c3_i184 < 6; c3_i184++) { for (c3_i185 = 0; c3_i185 < 10; c3_i185++) { c3_b_inData[c3_i185 + c3_i183] = (*(real_T (*)[60])c3_inData)[c3_i185 + c3_i183]; } c3_i183 += 10; } c3_i186 = 0; for (c3_i187 = 0; c3_i187 < 6; c3_i187++) { for (c3_i188 = 0; c3_i188 < 10; c3_i188++) { c3_u[c3_i188 + c3_i186] = c3_b_inData[c3_i188 + c3_i186]; } c3_i186 += 10; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 10, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i189; int32_T c3_i190; int32_T c3_i191; real_T c3_b_inData[90]; int32_T c3_i192; int32_T c3_i193; int32_T c3_i194; real_T c3_u[90]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i189 = 0; for (c3_i190 = 0; c3_i190 < 6; c3_i190++) { for (c3_i191 = 0; c3_i191 < 15; c3_i191++) { c3_b_inData[c3_i191 + c3_i189] = (*(real_T (*)[90])c3_inData)[c3_i191 + c3_i189]; } c3_i189 += 15; } c3_i192 = 0; for (c3_i193 = 0; c3_i193 < 6; c3_i193++) { for (c3_i194 = 0; c3_i194 < 15; c3_i194++) { c3_u[c3_i194 + c3_i192] = c3_b_inData[c3_i194 + c3_i192]; } c3_i192 += 15; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 15, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_t_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i195; int32_T c3_i196; int32_T c3_i197; real_T c3_b_inData[18]; int32_T c3_i198; int32_T c3_i199; int32_T c3_i200; real_T c3_u[18]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i195 = 0; for (c3_i196 = 0; c3_i196 < 6; c3_i196++) { for (c3_i197 = 0; c3_i197 < 3; c3_i197++) { c3_b_inData[c3_i197 + c3_i195] = (*(real_T (*)[18])c3_inData)[c3_i197 + c3_i195]; } c3_i195 += 3; } c3_i198 = 0; for (c3_i199 = 0; c3_i199 < 6; c3_i199++) { for (c3_i200 = 0; c3_i200 < 3; c3_i200++) { c3_u[c3_i200 + c3_i198] = c3_b_inData[c3_i200 + c3_i198]; } c3_i198 += 3; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 3, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_u_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i201; int32_T c3_i202; int32_T c3_i203; real_T c3_b_inData[42]; int32_T c3_i204; int32_T c3_i205; int32_T c3_i206; real_T c3_u[42]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i201 = 0; for (c3_i202 = 0; c3_i202 < 6; c3_i202++) { for (c3_i203 = 0; c3_i203 < 7; c3_i203++) { c3_b_inData[c3_i203 + c3_i201] = (*(real_T (*)[42])c3_inData)[c3_i203 + c3_i201]; } c3_i201 += 7; } c3_i204 = 0; for (c3_i205 = 0; c3_i205 < 6; c3_i205++) { for (c3_i206 = 0; c3_i206 < 7; c3_i206++) { c3_u[c3_i206 + c3_i204] = c3_b_inData[c3_i206 + c3_i204]; } c3_i204 += 7; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 7, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_v_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i207; char_T c3_b_inData[6]; int32_T c3_i208; char_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i207 = 0; c3_i207 < 6; c3_i207++) { c3_b_inData[c3_i207] = (*(char_T (*)[6])c3_inData)[c3_i207]; } for (c3_i208 = 0; c3_i208 < 6; c3_i208++) { c3_u[c3_i208] = c3_b_inData[c3_i208]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c3_nameCaptureInfo = NULL; c3_nameCaptureInfo = NULL; sf_mex_assign(&c3_nameCaptureInfo, sf_mex_create("nameCaptureInfo", NULL, 0, 0U, 1U, 0U, 2, 0, 1), FALSE); return c3_nameCaptureInfo; } static void c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier, real_T c3_y[3]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId, c3_y); sf_mex_destroy(&c3_u); } static void c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]) { real_T c3_dv22[3]; int32_T c3_i209; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv22, 1, 0, 0U, 1, 0U, 1, 3); for (c3_i209 = 0; c3_i209 < 3; c3_i209++) { c3_y[c3_i209] = c3_dv22[c3_i209]; } sf_mex_destroy(&c3_u); } static real_T c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_cost, const char_T *c3_identifier) { real_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_cost), &c3_thisId); sf_mex_destroy(&c3_cost); return c3_y; } static real_T c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { real_T c3_y; real_T c3_d32; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_d32, 1, 0, 0U, 0, 0U, 0); c3_y = c3_d32; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[15]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); } static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]) { real_T c3_dv23[15]; int32_T c3_i210; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv23, 1, 0, 0U, 1, 0U, 2, 5, 3); for (c3_i210 = 0; c3_i210 < 15; c3_i210++) { c3_y[c3_i210] = c3_dv23[c3_i210]; } sf_mex_destroy(&c3_u); } static void c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[25]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); } static void c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[25]) { boolean_T c3_bv2[25]; int32_T c3_i211; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_bv2, 1, 11, 0U, 1, 0U, 1, 25); for (c3_i211 = 0; c3_i211 < 25; c3_i211++) { c3_y[c3_i211] = c3_bv2[c3_i211]; } sf_mex_destroy(&c3_u); } static const mxArray *c3_w_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(int32_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static int32_T c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { int32_T c3_y; int32_T c3_i212; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_i212, 1, 6, 0U, 0, 0U, 0); c3_y = c3_i212; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_b_sfEvent; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; int32_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_b_sfEvent = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_sfEvent), &c3_thisId); sf_mex_destroy(&c3_b_sfEvent); *(int32_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static boolean_T c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { boolean_T c3_y; boolean_T c3_b0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_b0, 1, 11, 0U, 0, 0U, 0); c3_y = c3_b0; sf_mex_destroy(&c3_u); return c3_y; } static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_isQP; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_isQP = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_j_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_isQP), &c3_thisId); sf_mex_destroy(&c3_c_isQP); *(boolean_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[49]) { real_T c3_dv24[49]; int32_T c3_i213; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv24, 1, 0, 0U, 1, 0U, 2, 7, 7); for (c3_i213 = 0; c3_i213 < 49; c3_i213++) { c3_y[c3_i213] = c3_dv24[c3_i213]; } sf_mex_destroy(&c3_u); } static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Hinv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[49]; int32_T c3_i214; int32_T c3_i215; int32_T c3_i216; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Hinv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_k_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Hinv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Hinv); c3_i214 = 0; for (c3_i215 = 0; c3_i215 < 7; c3_i215++) { for (c3_i216 = 0; c3_i216 < 7; c3_i216++) { (*(real_T (*)[49])c3_outData)[c3_i216 + c3_i214] = c3_y[c3_i216 + c3_i214]; } c3_i214 += 7; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[42]) { real_T c3_dv25[42]; int32_T c3_i217; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv25, 1, 0, 0U, 1, 0U, 2, 7, 6); for (c3_i217 = 0; c3_i217 < 42; c3_i217++) { c3_y[c3_i217] = c3_dv25[c3_i217]; } sf_mex_destroy(&c3_u); } static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[42]; int32_T c3_i218; int32_T c3_i219; int32_T c3_i220; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_l_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kx); c3_i218 = 0; for (c3_i219 = 0; c3_i219 < 6; c3_i219++) { for (c3_i220 = 0; c3_i220 < 7; c3_i220++) { (*(real_T (*)[42])c3_outData)[c3_i220 + c3_i218] = c3_y[c3_i220 + c3_i218]; } c3_i218 += 7; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]) { real_T c3_dv26[18]; int32_T c3_i221; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv26, 1, 0, 0U, 1, 0U, 2, 3, 6); for (c3_i221 = 0; c3_i221 < 18; c3_i221++) { c3_y[c3_i221] = c3_dv26[c3_i221]; } sf_mex_destroy(&c3_u); } static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ku1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[18]; int32_T c3_i222; int32_T c3_i223; int32_T c3_i224; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ku1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_m_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ku1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ku1); c3_i222 = 0; for (c3_i223 = 0; c3_i223 < 6; c3_i223++) { for (c3_i224 = 0; c3_i224 < 3; c3_i224++) { (*(real_T (*)[18])c3_outData)[c3_i224 + c3_i222] = c3_y[c3_i224 + c3_i222]; } c3_i222 += 3; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[90]) { real_T c3_dv27[90]; int32_T c3_i225; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv27, 1, 0, 0U, 1, 0U, 2, 15, 6); for (c3_i225 = 0; c3_i225 < 90; c3_i225++) { c3_y[c3_i225] = c3_dv27[c3_i225]; } sf_mex_destroy(&c3_u); } static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kut; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[90]; int32_T c3_i226; int32_T c3_i227; int32_T c3_i228; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kut = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_n_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kut), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kut); c3_i226 = 0; for (c3_i227 = 0; c3_i227 < 6; c3_i227++) { for (c3_i228 = 0; c3_i228 < 15; c3_i228++) { (*(real_T (*)[90])c3_outData)[c3_i228 + c3_i226] = c3_y[c3_i228 + c3_i226]; } c3_i226 += 15; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]) { real_T c3_dv28[60]; int32_T c3_i229; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv28, 1, 0, 0U, 1, 0U, 2, 10, 6); for (c3_i229 = 0; c3_i229 < 60; c3_i229++) { c3_y[c3_i229] = c3_dv28[c3_i229]; } sf_mex_destroy(&c3_u); } static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kr; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[60]; int32_T c3_i230; int32_T c3_i231; int32_T c3_i232; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kr = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_o_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kr), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kr); c3_i230 = 0; for (c3_i231 = 0; c3_i231 < 6; c3_i231++) { for (c3_i232 = 0; c3_i232 < 10; c3_i232++) { (*(real_T (*)[60])c3_outData)[c3_i232 + c3_i230] = c3_y[c3_i232 + c3_i230]; } c3_i230 += 10; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[36]) { real_T c3_dv29[36]; int32_T c3_i233; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv29, 1, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i233 = 0; c3_i233 < 36; c3_i233++) { c3_y[c3_i233] = c3_dv29[c3_i233]; } sf_mex_destroy(&c3_u); } static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[36]; int32_T c3_i234; int32_T c3_i235; int32_T c3_i236; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_p_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kv); c3_i234 = 0; for (c3_i235 = 0; c3_i235 < 6; c3_i235++) { for (c3_i236 = 0; c3_i236 < 6; c3_i236++) { (*(real_T (*)[36])c3_outData)[c3_i236 + c3_i234] = c3_y[c3_i236 + c3_i234]; } c3_i234 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]) { real_T c3_dv30[18]; int32_T c3_i237; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv30, 1, 0, 0U, 1, 0U, 1, 18); for (c3_i237 = 0; c3_i237 < 18; c3_i237++) { c3_y[c3_i237] = c3_dv30[c3_i237]; } sf_mex_destroy(&c3_u); } static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mlim; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[18]; int32_T c3_i238; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mlim = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_q_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mlim), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mlim); for (c3_i238 = 0; c3_i238 < 18; c3_i238++) { (*(real_T (*)[18])c3_outData)[c3_i238] = c3_y[c3_i238]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[126]) { real_T c3_dv31[126]; int32_T c3_i239; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv31, 1, 0, 0U, 1, 0U, 2, 18, 7); for (c3_i239 = 0; c3_i239 < 126; c3_i239++) { c3_y[c3_i239] = c3_dv31[c3_i239]; } sf_mex_destroy(&c3_u); } static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[126]; int32_T c3_i240; int32_T c3_i241; int32_T c3_i242; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_r_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mx); c3_i240 = 0; for (c3_i241 = 0; c3_i241 < 7; c3_i241++) { for (c3_i242 = 0; c3_i242 < 18; c3_i242++) { (*(real_T (*)[126])c3_outData)[c3_i242 + c3_i240] = c3_y[c3_i242 + c3_i240]; } c3_i240 += 18; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[54]) { real_T c3_dv32[54]; int32_T c3_i243; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv32, 1, 0, 0U, 1, 0U, 2, 18, 3); for (c3_i243 = 0; c3_i243 < 54; c3_i243++) { c3_y[c3_i243] = c3_dv32[c3_i243]; } sf_mex_destroy(&c3_u); } static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mu1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[54]; int32_T c3_i244; int32_T c3_i245; int32_T c3_i246; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mu1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_s_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mu1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mu1); c3_i244 = 0; for (c3_i245 = 0; c3_i245 < 3; c3_i245++) { for (c3_i246 = 0; c3_i246 < 18; c3_i246++) { (*(real_T (*)[54])c3_outData)[c3_i246 + c3_i244] = c3_y[c3_i246 + c3_i244]; } c3_i244 += 18; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[108]) { real_T c3_dv33[108]; int32_T c3_i247; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv33, 1, 0, 0U, 1, 0U, 2, 18, 6); for (c3_i247 = 0; c3_i247 < 108; c3_i247++) { c3_y[c3_i247] = c3_dv33[c3_i247]; } sf_mex_destroy(&c3_u); } static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[108]; int32_T c3_i248; int32_T c3_i249; int32_T c3_i250; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_t_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mv); c3_i248 = 0; for (c3_i249 = 0; c3_i249 < 6; c3_i249++) { for (c3_i250 = 0; c3_i250 < 18; c3_i250++) { (*(real_T (*)[108])c3_outData)[c3_i250 + c3_i248] = c3_y[c3_i250 + c3_i248]; } c3_i248 += 18; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[7]) { real_T c3_dv34[7]; int32_T c3_i251; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv34, 1, 0, 0U, 1, 0U, 1, 7); for (c3_i251 = 0; c3_i251 < 7; c3_i251++) { c3_y[c3_i251] = c3_dv34[c3_i251]; } sf_mex_destroy(&c3_u); } static void c3_q_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_z_degrees; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[7]; int32_T c3_i252; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_z_degrees = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_u_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_z_degrees), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_z_degrees); for (c3_i252 = 0; c3_i252 < 7; c3_i252++) { (*(real_T (*)[7])c3_outData)[c3_i252] = c3_y[c3_i252]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_v_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]) { real_T c3_dv35[15]; int32_T c3_i253; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv35, 1, 0, 0U, 1, 0U, 1, 15); for (c3_i253 = 0; c3_i253 < 15; c3_i253++) { c3_y[c3_i253] = c3_dv35[c3_i253]; } sf_mex_destroy(&c3_u); } static void c3_r_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_utarget; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[15]; int32_T c3_i254; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_utarget = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_v_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_utarget), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_utarget); for (c3_i254 = 0; c3_i254 < 15; c3_i254++) { (*(real_T (*)[15])c3_outData)[c3_i254] = c3_y[c3_i254]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_w_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[2]) { real_T c3_dv36[2]; int32_T c3_i255; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv36, 1, 0, 0U, 1, 0U, 1, 2); for (c3_i255 = 0; c3_i255 < 2; c3_i255++) { c3_y[c3_i255] = c3_dv36[c3_i255]; } sf_mex_destroy(&c3_u); } static void c3_s_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_yoff; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[2]; int32_T c3_i256; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_yoff = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_w_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_yoff), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_yoff); for (c3_i256 = 0; c3_i256 < 2; c3_i256++) { (*(real_T (*)[2])c3_outData)[c3_i256] = c3_y[c3_i256]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_x_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[5]) { real_T c3_dv37[5]; int32_T c3_i257; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv37, 1, 0, 0U, 1, 0U, 2, 1, 5); for (c3_i257 = 0; c3_i257 < 5; c3_i257++) { c3_y[c3_i257] = c3_dv37[c3_i257]; } sf_mex_destroy(&c3_u); } static void c3_t_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_blocking_moves; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[5]; int32_T c3_i258; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_blocking_moves = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_x_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_blocking_moves), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_blocking_moves); for (c3_i258 = 0; c3_i258 < 5; c3_i258++) { (*(real_T (*)[5])c3_outData)[c3_i258] = c3_y[c3_i258]; } sf_mex_destroy(&c3_mxArrayInData); } static uint8_T c3_y_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier) { uint8_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_ab_emlrt_marshallIn(chartInstance, sf_mex_dup (c3_b_is_active_c3_mpclib), &c3_thisId); sf_mex_destroy(&c3_b_is_active_c3_mpclib); return c3_y; } static uint8_T c3_ab_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { uint8_T c3_y; uint8_T c3_u0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_u0, 1, 3, 0U, 0, 0U, 0); c3_y = c3_u0; sf_mex_destroy(&c3_u); return c3_y; } static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c3_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2641758166U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(766737260U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2236880295U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1293431839U); } mxArray *sf_c3_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("g7n8W2zIhsSl5ytZmrRxgE"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,13,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(25); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,50,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(7); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(7); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(7); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(6); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(6); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(15); pr[1] = (double)(6); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(6); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(6); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(7); mxSetField(mxData,13,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,13,"type",mxType); } mxSetField(mxData,13,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(1); mxSetField(mxData,14,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,14,"type",mxType); } mxSetField(mxData,14,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(3); mxSetField(mxData,15,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,15,"type",mxType); } mxSetField(mxData,15,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(6); mxSetField(mxData,16,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,16,"type",mxType); } mxSetField(mxData,16,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(7); mxSetField(mxData,17,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,17,"type",mxType); } mxSetField(mxData,17,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,18,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,18,"type",mxType); } mxSetField(mxData,18,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,19,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,19,"type",mxType); } mxSetField(mxData,19,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,20,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,20,"type",mxType); } mxSetField(mxData,20,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,21,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,21,"type",mxType); } mxSetField(mxData,21,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,22,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,22,"type",mxType); } mxSetField(mxData,22,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,23,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,23,"type",mxType); } mxSetField(mxData,23,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(5); mxSetField(mxData,24,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,24,"type",mxType); } mxSetField(mxData,24,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,25,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,25,"type",mxType); } mxSetField(mxData,25,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,26,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,26,"type",mxType); } mxSetField(mxData,26,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,27,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,27,"type",mxType); } mxSetField(mxData,27,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,28,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,28,"type",mxType); } mxSetField(mxData,28,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,29,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,29,"type",mxType); } mxSetField(mxData,29,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,30,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,30,"type",mxType); } mxSetField(mxData,30,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,31,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,31,"type",mxType); } mxSetField(mxData,31,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,32,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,32,"type",mxType); } mxSetField(mxData,32,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,33,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,33,"type",mxType); } mxSetField(mxData,33,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,34,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,34,"type",mxType); } mxSetField(mxData,34,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,35,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,35,"type",mxType); } mxSetField(mxData,35,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,36,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,36,"type",mxType); } mxSetField(mxData,36,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,37,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,37,"type",mxType); } mxSetField(mxData,37,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,38,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,38,"type",mxType); } mxSetField(mxData,38,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,39,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,39,"type",mxType); } mxSetField(mxData,39,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,40,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,40,"type",mxType); } mxSetField(mxData,40,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,41,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,41,"type",mxType); } mxSetField(mxData,41,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,42,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,42,"type",mxType); } mxSetField(mxData,42,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,43,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,43,"type",mxType); } mxSetField(mxData,43,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,44,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,44,"type",mxType); } mxSetField(mxData,44,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,45,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,45,"type",mxType); } mxSetField(mxData,45,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,46,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,46,"type",mxType); } mxSetField(mxData,46,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(15); pr[1] = (double)(1); mxSetField(mxData,47,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,47,"type",mxType); } mxSetField(mxData,47,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,48,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,48,"type",mxType); } mxSetField(mxData,48,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(1); mxSetField(mxData,49,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,49,"type",mxType); } mxSetField(mxData,49,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,5,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(5); pr[1] = (double)(3); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(25); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c3_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c3_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x6'type','srcId','name','auxInfo'{{M[1],M[20],T\"cost\",},{M[1],M[145],T\"iAout\",},{M[1],M[126],T\"status\",},{M[1],M[19],T\"u\",},{M[1],M[21],T\"useq\",},{M[8],M[0],T\"is_active_c3_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 6, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c3_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 3, 1, 1, 68, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,1,1,0,"rseq"); _SFD_SET_DATA_PROPS(1,1,1,0,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"x"); _SFD_SET_DATA_PROPS(3,1,1,0,"old_u"); _SFD_SET_DATA_PROPS(4,1,1,0,"iA"); _SFD_SET_DATA_PROPS(5,1,1,0,"umin"); _SFD_SET_DATA_PROPS(6,1,1,0,"umax"); _SFD_SET_DATA_PROPS(7,1,1,0,"ymin"); _SFD_SET_DATA_PROPS(8,1,1,0,"ymax"); _SFD_SET_DATA_PROPS(9,1,1,0,"switch_in"); _SFD_SET_DATA_PROPS(10,1,1,0,"ywt"); _SFD_SET_DATA_PROPS(11,1,1,0,"duwt"); _SFD_SET_DATA_PROPS(12,1,1,0,"rhoeps"); _SFD_SET_DATA_PROPS(13,2,0,1,"u"); _SFD_SET_DATA_PROPS(14,2,0,1,"cost"); _SFD_SET_DATA_PROPS(15,2,0,1,"useq"); _SFD_SET_DATA_PROPS(16,2,0,1,"status"); _SFD_SET_DATA_PROPS(17,10,0,0,"isQP"); _SFD_SET_DATA_PROPS(18,10,0,0,"nu"); _SFD_SET_DATA_PROPS(19,10,0,0,"ny"); _SFD_SET_DATA_PROPS(20,10,0,0,"degrees"); _SFD_SET_DATA_PROPS(21,10,0,0,"Hinv"); _SFD_SET_DATA_PROPS(22,10,0,0,"Kx"); _SFD_SET_DATA_PROPS(23,10,0,0,"Ku1"); _SFD_SET_DATA_PROPS(24,10,0,0,"Kut"); _SFD_SET_DATA_PROPS(25,10,0,0,"Kr"); _SFD_SET_DATA_PROPS(26,10,0,0,"Kv"); _SFD_SET_DATA_PROPS(27,10,0,0,"Mlim"); _SFD_SET_DATA_PROPS(28,10,0,0,"Mx"); _SFD_SET_DATA_PROPS(29,10,0,0,"Mu1"); _SFD_SET_DATA_PROPS(30,10,0,0,"Mv"); _SFD_SET_DATA_PROPS(31,10,0,0,"z_degrees"); _SFD_SET_DATA_PROPS(32,10,0,0,"utarget"); _SFD_SET_DATA_PROPS(33,10,0,0,"p"); _SFD_SET_DATA_PROPS(34,10,0,0,"uoff"); _SFD_SET_DATA_PROPS(35,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(36,10,0,0,"maxiter"); _SFD_SET_DATA_PROPS(37,10,0,0,"nxQP"); _SFD_SET_DATA_PROPS(38,10,0,0,"openloopflag"); _SFD_SET_DATA_PROPS(39,10,0,0,"lims_inport"); _SFD_SET_DATA_PROPS(40,10,0,0,"no_umin"); _SFD_SET_DATA_PROPS(41,10,0,0,"no_umax"); _SFD_SET_DATA_PROPS(42,10,0,0,"no_ymin"); _SFD_SET_DATA_PROPS(43,10,0,0,"no_ymax"); _SFD_SET_DATA_PROPS(44,10,0,0,"switch_inport"); _SFD_SET_DATA_PROPS(45,10,0,0,"no_switch"); _SFD_SET_DATA_PROPS(46,10,0,0,"enable_value"); _SFD_SET_DATA_PROPS(47,10,0,0,"return_cost"); _SFD_SET_DATA_PROPS(48,10,0,0,"H"); _SFD_SET_DATA_PROPS(49,10,0,0,"return_sequence"); _SFD_SET_DATA_PROPS(50,10,0,0,"blocking_moves"); _SFD_SET_DATA_PROPS(51,10,0,0,"Linv"); _SFD_SET_DATA_PROPS(52,10,0,0,"Ac"); _SFD_SET_DATA_PROPS(53,10,0,0,"no_ywt"); _SFD_SET_DATA_PROPS(54,10,0,0,"no_duwt"); _SFD_SET_DATA_PROPS(55,10,0,0,"no_rhoeps"); _SFD_SET_DATA_PROPS(56,10,0,0,"Wy"); _SFD_SET_DATA_PROPS(57,10,0,0,"Wdu"); _SFD_SET_DATA_PROPS(58,10,0,0,"Jm"); _SFD_SET_DATA_PROPS(59,10,0,0,"SuJm"); _SFD_SET_DATA_PROPS(60,10,0,0,"I2JmWuI2Jm"); _SFD_SET_DATA_PROPS(61,10,0,0,"Su1"); _SFD_SET_DATA_PROPS(62,10,0,0,"I1WuI2Jm"); _SFD_SET_DATA_PROPS(63,10,0,0,"Sx"); _SFD_SET_DATA_PROPS(64,10,0,0,"Hv"); _SFD_SET_DATA_PROPS(65,10,0,0,"Wu"); _SFD_SET_DATA_PROPS(66,10,0,0,"I1"); _SFD_SET_DATA_PROPS(67,2,0,1,"iAout"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,2551); _SFD_CV_INIT_EML_IF(0,1,0,648,679,2012,2550); _SFD_CV_INIT_EML_IF(0,1,1,966,987,1495,2010); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_h_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 7; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_f_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 25; _SFD_SET_DATA_COMPILED_PROPS(4,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(12,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(13,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType) c3_d_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(14,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 5; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(15,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(16,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(17,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType)c3_f_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(18,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(19,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(20,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 7; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(21,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 7; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(22,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_u_sf_marshallOut,(MexInFcnForType) c3_h_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 3; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(23,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_t_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 15; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(24,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_s_sf_marshallOut,(MexInFcnForType) c3_j_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 10; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(25,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_r_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(26,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_q_sf_marshallOut,(MexInFcnForType) c3_l_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 18; _SFD_SET_DATA_COMPILED_PROPS(27,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_p_sf_marshallOut,(MexInFcnForType) c3_m_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 18; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(28,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType) c3_n_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 18; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(29,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_o_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 18; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(30,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_n_sf_marshallOut,(MexInFcnForType) c3_p_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 7; _SFD_SET_DATA_COMPILED_PROPS(31,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_f_sf_marshallOut,(MexInFcnForType) c3_q_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 15; _SFD_SET_DATA_COMPILED_PROPS(32,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_m_sf_marshallOut,(MexInFcnForType) c3_r_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(33,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(34,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType) c3_d_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(35,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType) c3_s_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(36,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(37,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(38,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType)c3_f_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(39,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(40,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(41,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(42,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(43,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(44,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(45,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(46,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(47,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 7; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(48,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(49,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 5; _SFD_SET_DATA_COMPILED_PROPS(50,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_k_sf_marshallOut,(MexInFcnForType) c3_t_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 7; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(51,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 18; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(52,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType) c3_n_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(53,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(54,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(55,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(56,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(57,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(58,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(59,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(60,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(61,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(62,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(63,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(64,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(65,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(66,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 25; _SFD_SET_DATA_COMPILED_PROPS(67,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType) c3_sf_marshallIn); } { real_T *c3_switch_in; real_T *c3_rhoeps; real_T *c3_cost; real_T *c3_status; real_T (*c3_rseq)[10]; real_T (*c3_vseq)[6]; real_T (*c3_x)[7]; real_T (*c3_old_u)[3]; boolean_T (*c3_iA)[25]; real_T (*c3_umin)[3]; real_T (*c3_umax)[3]; real_T (*c3_ymin)[2]; real_T (*c3_ymax)[2]; real_T (*c3_ywt)[2]; real_T (*c3_duwt)[3]; real_T (*c3_u)[3]; real_T (*c3_useq)[15]; boolean_T (*c3_iAout)[25]; c3_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[25])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[7])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SET_DATA_VALUE_PTR(0U, *c3_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c3_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c3_x); _SFD_SET_DATA_VALUE_PTR(3U, *c3_old_u); _SFD_SET_DATA_VALUE_PTR(4U, *c3_iA); _SFD_SET_DATA_VALUE_PTR(5U, *c3_umin); _SFD_SET_DATA_VALUE_PTR(6U, *c3_umax); _SFD_SET_DATA_VALUE_PTR(7U, *c3_ymin); _SFD_SET_DATA_VALUE_PTR(8U, *c3_ymax); _SFD_SET_DATA_VALUE_PTR(9U, c3_switch_in); _SFD_SET_DATA_VALUE_PTR(10U, *c3_ywt); _SFD_SET_DATA_VALUE_PTR(11U, *c3_duwt); _SFD_SET_DATA_VALUE_PTR(12U, c3_rhoeps); _SFD_SET_DATA_VALUE_PTR(13U, *c3_u); _SFD_SET_DATA_VALUE_PTR(14U, c3_cost); _SFD_SET_DATA_VALUE_PTR(15U, *c3_useq); _SFD_SET_DATA_VALUE_PTR(16U, c3_status); _SFD_SET_DATA_VALUE_PTR(17U, &chartInstance->c3_isQP); _SFD_SET_DATA_VALUE_PTR(18U, &chartInstance->c3_nu); _SFD_SET_DATA_VALUE_PTR(19U, &chartInstance->c3_ny); _SFD_SET_DATA_VALUE_PTR(20U, &chartInstance->c3_degrees); _SFD_SET_DATA_VALUE_PTR(21U, chartInstance->c3_Hinv); _SFD_SET_DATA_VALUE_PTR(22U, chartInstance->c3_Kx); _SFD_SET_DATA_VALUE_PTR(23U, chartInstance->c3_Ku1); _SFD_SET_DATA_VALUE_PTR(24U, chartInstance->c3_Kut); _SFD_SET_DATA_VALUE_PTR(25U, chartInstance->c3_Kr); _SFD_SET_DATA_VALUE_PTR(26U, chartInstance->c3_Kv); _SFD_SET_DATA_VALUE_PTR(27U, chartInstance->c3_Mlim); _SFD_SET_DATA_VALUE_PTR(28U, chartInstance->c3_Mx); _SFD_SET_DATA_VALUE_PTR(29U, chartInstance->c3_Mu1); _SFD_SET_DATA_VALUE_PTR(30U, chartInstance->c3_Mv); _SFD_SET_DATA_VALUE_PTR(31U, chartInstance->c3_z_degrees); _SFD_SET_DATA_VALUE_PTR(32U, chartInstance->c3_utarget); _SFD_SET_DATA_VALUE_PTR(33U, &chartInstance->c3_p); _SFD_SET_DATA_VALUE_PTR(34U, chartInstance->c3_uoff); _SFD_SET_DATA_VALUE_PTR(35U, chartInstance->c3_yoff); _SFD_SET_DATA_VALUE_PTR(36U, &chartInstance->c3_maxiter); _SFD_SET_DATA_VALUE_PTR(37U, &chartInstance->c3_nxQP); _SFD_SET_DATA_VALUE_PTR(38U, &chartInstance->c3_openloopflag); _SFD_SET_DATA_VALUE_PTR(39U, &chartInstance->c3_lims_inport); _SFD_SET_DATA_VALUE_PTR(40U, &chartInstance->c3_no_umin); _SFD_SET_DATA_VALUE_PTR(41U, &chartInstance->c3_no_umax); _SFD_SET_DATA_VALUE_PTR(42U, &chartInstance->c3_no_ymin); _SFD_SET_DATA_VALUE_PTR(43U, &chartInstance->c3_no_ymax); _SFD_SET_DATA_VALUE_PTR(44U, &chartInstance->c3_switch_inport); _SFD_SET_DATA_VALUE_PTR(45U, &chartInstance->c3_no_switch); _SFD_SET_DATA_VALUE_PTR(46U, &chartInstance->c3_enable_value); _SFD_SET_DATA_VALUE_PTR(47U, &chartInstance->c3_return_cost); _SFD_SET_DATA_VALUE_PTR(48U, chartInstance->c3_H); _SFD_SET_DATA_VALUE_PTR(49U, &chartInstance->c3_return_sequence); _SFD_SET_DATA_VALUE_PTR(50U, chartInstance->c3_blocking_moves); _SFD_SET_DATA_VALUE_PTR(51U, chartInstance->c3_Linv); _SFD_SET_DATA_VALUE_PTR(52U, chartInstance->c3_Ac); _SFD_SET_DATA_VALUE_PTR(53U, &chartInstance->c3_no_ywt); _SFD_SET_DATA_VALUE_PTR(54U, &chartInstance->c3_no_duwt); _SFD_SET_DATA_VALUE_PTR(55U, &chartInstance->c3_no_rhoeps); _SFD_SET_DATA_VALUE_PTR(56U, &chartInstance->c3_Wy); _SFD_SET_DATA_VALUE_PTR(57U, &chartInstance->c3_Wdu); _SFD_SET_DATA_VALUE_PTR(58U, &chartInstance->c3_Jm); _SFD_SET_DATA_VALUE_PTR(59U, &chartInstance->c3_SuJm); _SFD_SET_DATA_VALUE_PTR(60U, &chartInstance->c3_I2JmWuI2Jm); _SFD_SET_DATA_VALUE_PTR(61U, &chartInstance->c3_Su1); _SFD_SET_DATA_VALUE_PTR(62U, &chartInstance->c3_I1WuI2Jm); _SFD_SET_DATA_VALUE_PTR(63U, &chartInstance->c3_Sx); _SFD_SET_DATA_VALUE_PTR(64U, &chartInstance->c3_Hv); _SFD_SET_DATA_VALUE_PTR(65U, &chartInstance->c3_Wu); _SFD_SET_DATA_VALUE_PTR(66U, &chartInstance->c3_I1); _SFD_SET_DATA_VALUE_PTR(67U, *c3_iAout); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "D4OsMEOPkEhTIURBqithJD"; } static void sf_opaque_initialize_c3_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); initialize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c3_mpclib(void *chartInstanceVar) { enable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c3_mpclib(void *chartInstanceVar) { disable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c3_mpclib(void *chartInstanceVar) { sf_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c3_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c3_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c3_mpclib(S); } static void sf_opaque_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c3_mpclib(S, st); } static void sf_opaque_terminate_c3_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c3_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c3_mpclib(SimStruct *S) { /* Actual parameters from chart: Ac H Hinv Hv I1 I1WuI2Jm I2JmWuI2Jm Jm Kr Ku1 Kut Kv Kx Linv Mlim Mu1 Mv Mx Su1 SuJm Sx Wdu Wu Wy blocking_moves degrees enable_value isQP lims_inport maxiter no_duwt no_rhoeps no_switch no_umax no_umin no_ymax no_ymin no_ywt nu nxQP ny openloopflag p return_cost return_sequence switch_inport uoff utarget yoff z_degrees */ const char_T *rtParamNames[] = { "Ac", "H", "Hinv", "Hv", "I1", "I1WuI2Jm", "I2JmWuI2Jm", "Jm", "Kr", "Ku1", "Kut", "Kv", "Kx", "Linv", "Mlim", "Mu1", "Mv", "Mx", "Su1", "SuJm", "Sx", "Wdu", "Wu", "Wy", "blocking_moves", "degrees", "enable_value", "isQP", "lims_inport", "maxiter", "no_duwt", "no_rhoeps", "no_switch", "no_umax", "no_umin", "no_ymax", "no_ymin", "no_ywt", "nu", "nxQP", "ny", "openloopflag", "p", "return_cost", "return_sequence", "switch_inport", "uoff", "utarget", "yoff", "z_degrees" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for Ac*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for H*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for Hinv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for Hv*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for I1*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_DOUBLE); /* registration for I1WuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for I2JmWuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for Jm*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); /* registration for Kr*/ ssRegDlgParamAsRunTimeParam(S, 8, 8, rtParamNames[8], SS_DOUBLE); /* registration for Ku1*/ ssRegDlgParamAsRunTimeParam(S, 9, 9, rtParamNames[9], SS_DOUBLE); /* registration for Kut*/ ssRegDlgParamAsRunTimeParam(S, 10, 10, rtParamNames[10], SS_DOUBLE); /* registration for Kv*/ ssRegDlgParamAsRunTimeParam(S, 11, 11, rtParamNames[11], SS_DOUBLE); /* registration for Kx*/ ssRegDlgParamAsRunTimeParam(S, 12, 12, rtParamNames[12], SS_DOUBLE); /* registration for Linv*/ ssRegDlgParamAsRunTimeParam(S, 13, 13, rtParamNames[13], SS_DOUBLE); /* registration for Mlim*/ ssRegDlgParamAsRunTimeParam(S, 14, 14, rtParamNames[14], SS_DOUBLE); /* registration for Mu1*/ ssRegDlgParamAsRunTimeParam(S, 15, 15, rtParamNames[15], SS_DOUBLE); /* registration for Mv*/ ssRegDlgParamAsRunTimeParam(S, 16, 16, rtParamNames[16], SS_DOUBLE); /* registration for Mx*/ ssRegDlgParamAsRunTimeParam(S, 17, 17, rtParamNames[17], SS_DOUBLE); /* registration for Su1*/ ssRegDlgParamAsRunTimeParam(S, 18, 18, rtParamNames[18], SS_DOUBLE); /* registration for SuJm*/ ssRegDlgParamAsRunTimeParam(S, 19, 19, rtParamNames[19], SS_DOUBLE); /* registration for Sx*/ ssRegDlgParamAsRunTimeParam(S, 20, 20, rtParamNames[20], SS_DOUBLE); /* registration for Wdu*/ ssRegDlgParamAsRunTimeParam(S, 21, 21, rtParamNames[21], SS_DOUBLE); /* registration for Wu*/ ssRegDlgParamAsRunTimeParam(S, 22, 22, rtParamNames[22], SS_DOUBLE); /* registration for Wy*/ ssRegDlgParamAsRunTimeParam(S, 23, 23, rtParamNames[23], SS_DOUBLE); /* registration for blocking_moves*/ ssRegDlgParamAsRunTimeParam(S, 24, 24, rtParamNames[24], SS_DOUBLE); /* registration for degrees*/ ssRegDlgParamAsRunTimeParam(S, 25, 25, rtParamNames[25], SS_DOUBLE); /* registration for enable_value*/ ssRegDlgParamAsRunTimeParam(S, 26, 26, rtParamNames[26], SS_DOUBLE); /* registration for isQP*/ ssRegDlgParamAsRunTimeParam(S, 27, 27, rtParamNames[27], SS_BOOLEAN); /* registration for lims_inport*/ ssRegDlgParamAsRunTimeParam(S, 28, 28, rtParamNames[28], SS_DOUBLE); /* registration for maxiter*/ ssRegDlgParamAsRunTimeParam(S, 29, 29, rtParamNames[29], SS_DOUBLE); /* registration for no_duwt*/ ssRegDlgParamAsRunTimeParam(S, 30, 30, rtParamNames[30], SS_DOUBLE); /* registration for no_rhoeps*/ ssRegDlgParamAsRunTimeParam(S, 31, 31, rtParamNames[31], SS_DOUBLE); /* registration for no_switch*/ ssRegDlgParamAsRunTimeParam(S, 32, 32, rtParamNames[32], SS_DOUBLE); /* registration for no_umax*/ ssRegDlgParamAsRunTimeParam(S, 33, 33, rtParamNames[33], SS_DOUBLE); /* registration for no_umin*/ ssRegDlgParamAsRunTimeParam(S, 34, 34, rtParamNames[34], SS_DOUBLE); /* registration for no_ymax*/ ssRegDlgParamAsRunTimeParam(S, 35, 35, rtParamNames[35], SS_DOUBLE); /* registration for no_ymin*/ ssRegDlgParamAsRunTimeParam(S, 36, 36, rtParamNames[36], SS_DOUBLE); /* registration for no_ywt*/ ssRegDlgParamAsRunTimeParam(S, 37, 37, rtParamNames[37], SS_DOUBLE); /* registration for nu*/ ssRegDlgParamAsRunTimeParam(S, 38, 38, rtParamNames[38], SS_DOUBLE); /* registration for nxQP*/ ssRegDlgParamAsRunTimeParam(S, 39, 39, rtParamNames[39], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 40, 40, rtParamNames[40], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 41, 41, rtParamNames[41], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 42, 42, rtParamNames[42], SS_DOUBLE); /* registration for return_cost*/ ssRegDlgParamAsRunTimeParam(S, 43, 43, rtParamNames[43], SS_DOUBLE); /* registration for return_sequence*/ ssRegDlgParamAsRunTimeParam(S, 44, 44, rtParamNames[44], SS_DOUBLE); /* registration for switch_inport*/ ssRegDlgParamAsRunTimeParam(S, 45, 45, rtParamNames[45], SS_DOUBLE); /* registration for uoff*/ ssRegDlgParamAsRunTimeParam(S, 46, 46, rtParamNames[46], SS_DOUBLE); /* registration for utarget*/ ssRegDlgParamAsRunTimeParam(S, 47, 47, rtParamNames[47], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 48, 48, rtParamNames[48], SS_DOUBLE); /* registration for z_degrees*/ ssRegDlgParamAsRunTimeParam(S, 49, 49, rtParamNames[49], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 3); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,3,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,3, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,3); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 2, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 3, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 4, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 5, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 6, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 7, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 8, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 9, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 10, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 11, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 12, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,3,13); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,3,5); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=5; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 13; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,3); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(3430978843U)); ssSetChecksum1(S,(2278815809U)); ssSetChecksum2(S,(3141316122U)); ssSetChecksum3(S,(3317508031U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c3_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c3_mpclib(SimStruct *S) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)utMalloc(sizeof (SFc3_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc3_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c3_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c3_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c3_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c3_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c3_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c3_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c3_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c3_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c3_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c3_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c3_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c3_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c3_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c3_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c3_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/c3_mpclib.h ================================================ #ifndef __c3_mpclib_h__ #define __c3_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc3_mpclibInstanceStruct #define typedef_SFc3_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c3_sfEvent; boolean_T c3_isStable; boolean_T c3_doneDoubleBufferReInit; uint8_T c3_is_active_c3_mpclib; boolean_T c3_isQP; real_T c3_nu; real_T c3_ny; real_T c3_degrees; real_T c3_Hinv[49]; real_T c3_Kx[42]; real_T c3_Ku1[18]; real_T c3_Kut[90]; real_T c3_Kr[60]; real_T c3_Kv[36]; real_T c3_Mlim[18]; real_T c3_Mx[126]; real_T c3_Mu1[54]; real_T c3_Mv[108]; real_T c3_z_degrees[7]; real_T c3_utarget[15]; real_T c3_p; real_T c3_uoff[3]; real_T c3_yoff[2]; real_T c3_maxiter; real_T c3_nxQP; boolean_T c3_openloopflag; real_T c3_lims_inport; real_T c3_no_umin; real_T c3_no_umax; real_T c3_no_ymin; real_T c3_no_ymax; real_T c3_switch_inport; real_T c3_no_switch; real_T c3_enable_value; real_T c3_return_cost; real_T c3_H[49]; real_T c3_return_sequence; real_T c3_blocking_moves[5]; real_T c3_Linv[49]; real_T c3_Ac[126]; real_T c3_no_ywt; real_T c3_no_duwt; real_T c3_no_rhoeps; real_T c3_Wy; real_T c3_Wdu; real_T c3_Jm; real_T c3_SuJm; real_T c3_I2JmWuI2Jm; real_T c3_Su1; real_T c3_I1WuI2Jm; real_T c3_Sx; real_T c3_Hv; real_T c3_Wu; real_T c3_I1; } SFc3_mpclibInstanceStruct; #endif /*typedef_SFc3_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); extern void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/c4_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c4_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c4_b_p (5.0) #define c4_b_ny (2.0) #define c4_b_nv (1.0) #define c4_b_voff (0.0) #define c4_b_no_md (1.0) #define c4_b_no_ref (0.0) #define c4_b_openloopflag (FALSE) /* Variable Declarations */ /* Variable Definitions */ static const char * c4_debug_family_names[16] = { "DataType", "nv", "ny", "p", "yoff", "voff", "no_md", "no_ref", "openloopflag", "nargin", "nargout", "ref", "md", "rseq", "vseq", "v" }; /* Function Declarations */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st); static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber); static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_info_helper(const mxArray **c4_info); static const mxArray *c4_emlrt_marshallOut(char * c4_u); static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u); static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[10]); static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[10]); static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[6]); static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[6]); static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier); static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static void c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]); static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier); static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { chartInstance->c4_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c4_is_active_c4_mpclib = 0U; } static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { real_T c4_d0; real_T c4_d1; real_T c4_d2; real_T c4_dv0[2]; int32_T c4_i0; real_T c4_d3; real_T c4_d4; real_T c4_d5; real_T c4_d6; sf_set_error_prefix_string( "Error evaluating data 'nv' in the parent workspace.\n"); sf_mex_import_named("nv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), &c4_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_nv = c4_d0; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c4_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_ny = c4_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c4_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_p = c4_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 7, 0), c4_dv0, 0, 0, 0U, 1, 0U, 1, 2); for (c4_i0 = 0; c4_i0 < 2; c4_i0++) { chartInstance->c4_yoff[c4_i0] = c4_dv0[c4_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'voff' in the parent workspace.\n"); sf_mex_import_named("voff", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c4_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_voff = c4_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_md' in the parent workspace.\n"); sf_mex_import_named("no_md", sf_mex_get_sfun_param(chartInstance->S, 0, 0), &c4_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_md = c4_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ref' in the parent workspace.\n"); sf_mex_import_named("no_ref", sf_mex_get_sfun_param(chartInstance->S, 1, 0), &c4_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_ref = c4_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 4, 0), &c4_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_openloopflag = (c4_d6 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { const mxArray *c4_st; const mxArray *c4_y = NULL; int32_T c4_i1; real_T c4_u[10]; const mxArray *c4_b_y = NULL; real_T c4_hoistedGlobal; real_T c4_b_u; const mxArray *c4_c_y = NULL; int32_T c4_i2; real_T c4_c_u[6]; const mxArray *c4_d_y = NULL; uint8_T c4_b_hoistedGlobal; uint8_T c4_d_u; const mxArray *c4_e_y = NULL; real_T *c4_v; real_T (*c4_vseq)[6]; real_T (*c4_rseq)[10]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); c4_st = NULL; c4_st = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_createcellarray(4), FALSE); for (c4_i1 = 0; c4_i1 < 10; c4_i1++) { c4_u[c4_i1] = (*c4_rseq)[c4_i1]; } c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_setcell(c4_y, 0, c4_b_y); c4_hoistedGlobal = *c4_v; c4_b_u = c4_hoistedGlobal; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 1, c4_c_y); for (c4_i2 = 0; c4_i2 < 6; c4_i2++) { c4_c_u[c4_i2] = (*c4_vseq)[c4_i2]; } c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", c4_c_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_setcell(c4_y, 2, c4_d_y); c4_b_hoistedGlobal = chartInstance->c4_is_active_c4_mpclib; c4_d_u = c4_b_hoistedGlobal; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_d_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 3, c4_e_y); sf_mex_assign(&c4_st, c4_y, FALSE); return c4_st; } static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st) { const mxArray *c4_u; real_T c4_dv1[10]; int32_T c4_i3; real_T c4_dv2[6]; int32_T c4_i4; real_T *c4_v; real_T (*c4_rseq)[10]; real_T (*c4_vseq)[6]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c4_doneDoubleBufferReInit = TRUE; c4_u = sf_mex_dup(c4_st); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 0)), "rseq", c4_dv1); for (c4_i3 = 0; c4_i3 < 10; c4_i3++) { (*c4_rseq)[c4_i3] = c4_dv1[c4_i3]; } *c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 1)), "v"); c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 2)), "vseq", c4_dv2); for (c4_i4 = 0; c4_i4 < 6; c4_i4++) { (*c4_vseq)[c4_i4] = c4_dv2[c4_i4]; } chartInstance->c4_is_active_c4_mpclib = c4_j_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 3)), "is_active_c4_mpclib"); sf_mex_destroy(&c4_u); c4_update_debugger_state_c4_mpclib(chartInstance); sf_mex_destroy(&c4_st); } static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { int32_T c4_i5; int32_T c4_i6; int32_T c4_i7; int32_T c4_i8; real_T c4_hoistedGlobal; int32_T c4_i9; real_T c4_ref[2]; real_T c4_md; uint32_T c4_debug_family_var_map[16]; char_T c4_DataType[6]; real_T c4_c_nv; real_T c4_c_ny; real_T c4_c_p; real_T c4_c_yoff[2]; real_T c4_c_voff; real_T c4_c_no_md; real_T c4_c_no_ref; boolean_T c4_c_openloopflag; real_T c4_nargin = 10.0; real_T c4_nargout = 3.0; real_T c4_rseq[10]; real_T c4_vseq[6]; real_T c4_v; int32_T c4_i10; int32_T c4_i11; static char_T c4_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c4_i12; int32_T c4_i13; int32_T c4_i14; real_T c4_u[2]; const mxArray *c4_y = NULL; real_T c4_b_u; const mxArray *c4_b_y = NULL; real_T c4_c_u; const mxArray *c4_c_y = NULL; real_T c4_d_u; const mxArray *c4_d_y = NULL; real_T c4_e_u; const mxArray *c4_e_y = NULL; int32_T c4_i15; real_T c4_f_u[2]; const mxArray *c4_f_y = NULL; real_T c4_g_u; const mxArray *c4_g_y = NULL; real_T c4_h_u; const mxArray *c4_h_y = NULL; real_T c4_i_u; const mxArray *c4_i_y = NULL; boolean_T c4_j_u; const mxArray *c4_j_y = NULL; const mxArray *c4_b_v = NULL; const mxArray *c4_b_vseq = NULL; const mxArray *c4_b_rseq = NULL; real_T c4_dv3[10]; int32_T c4_i16; real_T c4_dv4[6]; int32_T c4_i17; int32_T c4_i18; int32_T c4_i19; real_T *c4_b_md; real_T *c4_c_v; real_T (*c4_c_rseq)[10]; real_T (*c4_c_vseq)[6]; real_T (*c4_b_ref)[2]; c4_c_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_b_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_b_ref = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 0); c4_c_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_c_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 1U, chartInstance->c4_sfEvent); for (c4_i5 = 0; c4_i5 < 10; c4_i5++) { _SFD_DATA_RANGE_CHECK((*c4_c_rseq)[c4_i5], 0U); } for (c4_i6 = 0; c4_i6 < 6; c4_i6++) { _SFD_DATA_RANGE_CHECK((*c4_c_vseq)[c4_i6], 1U); } for (c4_i7 = 0; c4_i7 < 2; c4_i7++) { _SFD_DATA_RANGE_CHECK((*c4_b_ref)[c4_i7], 2U); } _SFD_DATA_RANGE_CHECK(*c4_b_md, 3U); _SFD_DATA_RANGE_CHECK(*c4_c_v, 4U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_nv, 5U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_ny, 6U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_p, 7U); for (c4_i8 = 0; c4_i8 < 2; c4_i8++) { _SFD_DATA_RANGE_CHECK(chartInstance->c4_yoff[c4_i8], 8U); } _SFD_DATA_RANGE_CHECK(chartInstance->c4_voff, 9U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_md, 10U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_ref, 11U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c4_openloopflag, 12U); chartInstance->c4_sfEvent = CALL_EVENT; _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); c4_hoistedGlobal = *c4_b_md; for (c4_i9 = 0; c4_i9 < 2; c4_i9++) { c4_ref[c4_i9] = (*c4_b_ref)[c4_i9]; } c4_md = c4_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 16U, 16U, c4_debug_family_names, c4_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c4_DataType, 0U, c4_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_nv, 1U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_ny, 2U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_p, 3U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c4_c_yoff, 4U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_voff, 5U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_md, 6U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_ref, 7U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_openloopflag, 8U, c4_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargin, 9U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargout, 10U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c4_ref, 11U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_md, 12U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_rseq, 13U, c4_c_sf_marshallOut, c4_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_vseq, 14U, c4_b_sf_marshallOut, c4_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_v, 15U, c4_sf_marshallOut, c4_sf_marshallIn); c4_c_openloopflag = c4_b_openloopflag; c4_c_no_ref = c4_b_no_ref; c4_c_no_md = c4_b_no_md; c4_c_voff = c4_b_voff; for (c4_i10 = 0; c4_i10 < 2; c4_i10++) { c4_c_yoff[c4_i10] = 0.0; } c4_c_p = c4_b_p; c4_c_ny = c4_b_ny; c4_c_nv = c4_b_nv; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 3); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 4); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 5); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 7); for (c4_i11 = 0; c4_i11 < 6; c4_i11++) { c4_DataType[c4_i11] = c4_cv0[c4_i11]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 8); for (c4_i12 = 0; c4_i12 < 10; c4_i12++) { c4_rseq[c4_i12] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 9); for (c4_i13 = 0; c4_i13 < 6; c4_i13++) { c4_vseq[c4_i13] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 10); c4_v = 0.0; _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 11); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 12); for (c4_i14 = 0; c4_i14 < 2; c4_i14++) { c4_u[c4_i14] = c4_ref[c4_i14]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c4_b_u = c4_md; c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); c4_c_u = c4_b_nv; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_c_u, 0, 0U, 0U, 0U, 0), FALSE); c4_d_u = c4_b_ny; c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", &c4_d_u, 0, 0U, 0U, 0U, 0), FALSE); c4_e_u = c4_b_p; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_e_u, 0, 0U, 0U, 0U, 0), FALSE); for (c4_i15 = 0; c4_i15 < 2; c4_i15++) { c4_f_u[c4_i15] = 0.0; } c4_f_y = NULL; sf_mex_assign(&c4_f_y, sf_mex_create("y", c4_f_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c4_g_u = c4_b_voff; c4_g_y = NULL; sf_mex_assign(&c4_g_y, sf_mex_create("y", &c4_g_u, 0, 0U, 0U, 0U, 0), FALSE); c4_h_u = c4_b_no_md; c4_h_y = NULL; sf_mex_assign(&c4_h_y, sf_mex_create("y", &c4_h_u, 0, 0U, 0U, 0U, 0), FALSE); c4_i_u = c4_b_no_ref; c4_i_y = NULL; sf_mex_assign(&c4_i_y, sf_mex_create("y", &c4_i_u, 0, 0U, 0U, 0U, 0), FALSE); c4_j_u = c4_b_openloopflag; c4_j_y = NULL; sf_mex_assign(&c4_j_y, sf_mex_create("y", &c4_j_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_refmd_double_mex", 3U, 10U, 14, c4_y, 14, c4_b_y, 14, c4_c_y, 14, c4_d_y, 14, c4_e_y, 14, c4_f_y, 14, c4_g_y, 14, c4_h_y, 14, c4_i_y, 14, c4_j_y, &c4_b_rseq, &c4_b_vseq, &c4_b_v); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_rseq), "rseq", c4_dv3); for (c4_i16 = 0; c4_i16 < 10; c4_i16++) { c4_rseq[c4_i16] = c4_dv3[c4_i16]; } c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_vseq), "vseq", c4_dv4); for (c4_i17 = 0; c4_i17 < 6; c4_i17++) { c4_vseq[c4_i17] = c4_dv4[c4_i17]; } c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_v), "v"); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, -18); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c4_b_rseq); sf_mex_destroy(&c4_b_vseq); sf_mex_destroy(&c4_b_v); for (c4_i18 = 0; c4_i18 < 10; c4_i18++) { (*c4_c_rseq)[c4_i18] = c4_rseq[c4_i18]; } for (c4_i19 = 0; c4_i19 < 6; c4_i19++) { (*c4_c_vseq)[c4_i19] = c4_vseq[c4_i19]; } *c4_c_v = c4_v; _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber) { } static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; real_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(real_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_v; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_v = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); *(real_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i20; real_T c4_b_inData[6]; int32_T c4_i21; real_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i20 = 0; c4_i20 < 6; c4_i20++) { c4_b_inData[c4_i20] = (*(real_T (*)[6])c4_inData)[c4_i20]; } for (c4_i21 = 0; c4_i21 < 6; c4_i21++) { c4_u[c4_i21] = c4_b_inData[c4_i21]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_vseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[6]; int32_T c4_i22; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_vseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); for (c4_i22 = 0; c4_i22 < 6; c4_i22++) { (*(real_T (*)[6])c4_outData)[c4_i22] = c4_y[c4_i22]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i23; real_T c4_b_inData[10]; int32_T c4_i24; real_T c4_u[10]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i23 = 0; c4_i23 < 10; c4_i23++) { c4_b_inData[c4_i23] = (*(real_T (*)[10])c4_inData)[c4_i23]; } for (c4_i24 = 0; c4_i24 < 10; c4_i24++) { c4_u[c4_i24] = c4_b_inData[c4_i24]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_rseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[10]; int32_T c4_i25; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_rseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); for (c4_i25 = 0; c4_i25 < 10; c4_i25++) { (*(real_T (*)[10])c4_outData)[c4_i25] = c4_y[c4_i25]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i26; real_T c4_b_inData[2]; int32_T c4_i27; real_T c4_u[2]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i26 = 0; c4_i26 < 2; c4_i26++) { c4_b_inData[c4_i26] = (*(real_T (*)[2])c4_inData)[c4_i26]; } for (c4_i27 = 0; c4_i27 < 2; c4_i27++) { c4_u[c4_i27] = c4_b_inData[c4_i27]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; boolean_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(boolean_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i28; char_T c4_b_inData[6]; int32_T c4_i29; char_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i28 = 0; c4_i28 < 6; c4_i28++) { c4_b_inData[c4_i28] = (*(char_T (*)[6])c4_inData)[c4_i28]; } for (c4_i29 = 0; c4_i29 < 6; c4_i29++) { c4_u[c4_i29] = c4_b_inData[c4_i29]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c4_nameCaptureInfo = NULL; c4_nameCaptureInfo = NULL; sf_mex_assign(&c4_nameCaptureInfo, sf_mex_createstruct("structure", 2, 2, 1), FALSE); c4_info_helper(&c4_nameCaptureInfo); sf_mex_emlrtNameCapturePostProcessR2012a(&c4_nameCaptureInfo); return c4_nameCaptureInfo; } static void c4_info_helper(const mxArray **c4_info) { const mxArray *c4_rhs0 = NULL; const mxArray *c4_lhs0 = NULL; const mxArray *c4_rhs1 = NULL; const mxArray *c4_lhs1 = NULL; sf_mex_addfield(*c4_info, c4_emlrt_marshallOut(""), "context", "context", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("mtimes"), "name", "name", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m"), "resolved", "resolved", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363688678U), "fileTimeLo", "fileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 0); sf_mex_assign(&c4_rhs0, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs0, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs0), "rhs", "rhs", 0); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs0), "lhs", "lhs", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m!common_checks"), "context", "context", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "coder.internal.isBuiltInNumeric"), "name", "name", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[IXE]$matlabroot$/toolbox/shared/coder/coder/+coder/+internal/isBuiltInNumeric.m"), "resolved", "resolved", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363689356U), "fileTimeLo", "fileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 1); sf_mex_assign(&c4_rhs1, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs1, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs1), "rhs", "rhs", 1); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs1), "lhs", "lhs", 1); sf_mex_destroy(&c4_rhs0); sf_mex_destroy(&c4_lhs0); sf_mex_destroy(&c4_rhs1); sf_mex_destroy(&c4_lhs1); } static const mxArray *c4_emlrt_marshallOut(char * c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 15, 0U, 0U, 0U, 2, 1, strlen (c4_u)), FALSE); return c4_y; } static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 7, 0U, 0U, 0U, 0), FALSE); return c4_y; } static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[10]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); } static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[10]) { real_T c4_dv5[10]; int32_T c4_i30; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv5, 1, 0, 0U, 1, 0U, 1, 10); for (c4_i30 = 0; c4_i30 < 10; c4_i30++) { c4_y[c4_i30] = c4_dv5[c4_i30]; } sf_mex_destroy(&c4_u); } static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[6]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); } static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[6]) { real_T c4_dv6[6]; int32_T c4_i31; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv6, 1, 0, 0U, 1, 0U, 1, 6); for (c4_i31 = 0; c4_i31 < 6; c4_i31++) { c4_y[c4_i31] = c4_dv6[c4_i31]; } sf_mex_destroy(&c4_u); } static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier) { real_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); return c4_y; } static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { real_T c4_y; real_T c4_d7; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_d7, 1, 0, 0U, 0, 0U, 0); c4_y = c4_d7; sf_mex_destroy(&c4_u); return c4_y; } static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(int32_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { int32_T c4_y; int32_T c4_i32; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_i32, 1, 6, 0U, 0, 0U, 0); c4_y = c4_i32; sf_mex_destroy(&c4_u); return c4_y; } static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_b_sfEvent; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; int32_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_b_sfEvent = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_sfEvent), &c4_thisId); sf_mex_destroy(&c4_b_sfEvent); *(int32_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static void c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]) { real_T c4_dv7[2]; int32_T c4_i33; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv7, 1, 0, 0U, 1, 0U, 1, 2); for (c4_i33 = 0; c4_i33 < 2; c4_i33++) { c4_y[c4_i33] = c4_dv7[c4_i33]; } sf_mex_destroy(&c4_u); } static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_yoff; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[2]; int32_T c4_i34; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_yoff = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_yoff), &c4_thisId, c4_y); sf_mex_destroy(&c4_c_yoff); for (c4_i34 = 0; c4_i34 < 2; c4_i34++) { (*(real_T (*)[2])c4_outData)[c4_i34] = c4_y[c4_i34]; } sf_mex_destroy(&c4_mxArrayInData); } static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { boolean_T c4_y; boolean_T c4_b0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_b0, 1, 11, 0U, 0, 0U, 0); c4_y = c4_b0; sf_mex_destroy(&c4_u); return c4_y; } static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_openloopflag; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; boolean_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_openloopflag = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_openloopflag), &c4_thisId); sf_mex_destroy(&c4_c_openloopflag); *(boolean_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier) { uint8_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_k_emlrt_marshallIn(chartInstance, sf_mex_dup (c4_b_is_active_c4_mpclib), &c4_thisId); sf_mex_destroy(&c4_b_is_active_c4_mpclib); return c4_y; } static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { uint8_T c4_y; uint8_T c4_u0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_u0, 1, 3, 0U, 0, 0U, 0); c4_y = c4_u0; sf_mex_destroy(&c4_u); return c4_y; } static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c4_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2060684023U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3607261543U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(4175904135U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1907083303U); } mxArray *sf_c4_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("W9pU18Rzyx5XpPp6ECbqY"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,2,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,8,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,3,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c4_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c4_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x4'type','srcId','name','auxInfo'{{M[1],M[21],T\"rseq\",},{M[1],M[19],T\"v\",},{M[1],M[20],T\"vseq\",},{M[8],M[0],T\"is_active_c4_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 4, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c4_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 4, 1, 1, 13, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,2,0,1,"rseq"); _SFD_SET_DATA_PROPS(1,2,0,1,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"ref"); _SFD_SET_DATA_PROPS(3,1,1,0,"md"); _SFD_SET_DATA_PROPS(4,2,0,1,"v"); _SFD_SET_DATA_PROPS(5,10,0,0,"nv"); _SFD_SET_DATA_PROPS(6,10,0,0,"ny"); _SFD_SET_DATA_PROPS(7,10,0,0,"p"); _SFD_SET_DATA_PROPS(8,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(9,10,0,0,"voff"); _SFD_SET_DATA_PROPS(10,10,0,0,"no_md"); _SFD_SET_DATA_PROPS(11,10,0,0,"no_ref"); _SFD_SET_DATA_PROPS(12,10,0,0,"openloopflag"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,856); _SFD_CV_INIT_EML_IF(0,1,0,194,225,703,855); _SFD_CV_INIT_EML_IF(0,1,1,447,467,577,702); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_c_sf_marshallOut,(MexInFcnForType) c4_c_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_b_sf_marshallOut,(MexInFcnForType) c4_b_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(4,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType) c4_e_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(12,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_e_sf_marshallOut,(MexInFcnForType)c4_f_sf_marshallIn); { real_T *c4_md; real_T *c4_v; real_T (*c4_rseq)[10]; real_T (*c4_vseq)[6]; real_T (*c4_ref)[2]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_ref = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 0); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SET_DATA_VALUE_PTR(0U, *c4_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c4_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c4_ref); _SFD_SET_DATA_VALUE_PTR(3U, c4_md); _SFD_SET_DATA_VALUE_PTR(4U, c4_v); _SFD_SET_DATA_VALUE_PTR(5U, &chartInstance->c4_nv); _SFD_SET_DATA_VALUE_PTR(6U, &chartInstance->c4_ny); _SFD_SET_DATA_VALUE_PTR(7U, &chartInstance->c4_p); _SFD_SET_DATA_VALUE_PTR(8U, chartInstance->c4_yoff); _SFD_SET_DATA_VALUE_PTR(9U, &chartInstance->c4_voff); _SFD_SET_DATA_VALUE_PTR(10U, &chartInstance->c4_no_md); _SFD_SET_DATA_VALUE_PTR(11U, &chartInstance->c4_no_ref); _SFD_SET_DATA_VALUE_PTR(12U, &chartInstance->c4_openloopflag); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "xf8liFQGgsdDdPF7ystbhB"; } static void sf_opaque_initialize_c4_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); initialize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c4_mpclib(void *chartInstanceVar) { enable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c4_mpclib(void *chartInstanceVar) { disable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c4_mpclib(void *chartInstanceVar) { sf_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c4_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c4_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c4_mpclib(S); } static void sf_opaque_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c4_mpclib(S, st); } static void sf_opaque_terminate_c4_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c4_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c4_mpclib(SimStruct *S) { /* Actual parameters from chart: no_md no_ref nv ny openloopflag p voff yoff */ const char_T *rtParamNames[] = { "no_md", "no_ref", "nv", "ny", "openloopflag", "p", "voff", "yoff" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for no_md*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for no_ref*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for nv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for voff*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 4); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,4,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,4, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,4); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,4,2); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,4,3); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=3; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 2; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,4); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(1010599357U)); ssSetChecksum1(S,(1840766416U)); ssSetChecksum2(S,(2527524482U)); ssSetChecksum3(S,(3455074465U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c4_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c4_mpclib(SimStruct *S) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)utMalloc(sizeof (SFc4_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc4_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c4_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c4_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c4_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c4_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c4_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c4_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c4_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c4_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c4_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c4_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c4_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c4_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c4_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c4_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c4_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/c4_mpclib.h ================================================ #ifndef __c4_mpclib_h__ #define __c4_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc4_mpclibInstanceStruct #define typedef_SFc4_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c4_sfEvent; boolean_T c4_isStable; boolean_T c4_doneDoubleBufferReInit; uint8_T c4_is_active_c4_mpclib; real_T c4_nv; real_T c4_ny; real_T c4_p; real_T c4_yoff[2]; real_T c4_voff; real_T c4_no_md; real_T c4_no_ref; boolean_T c4_openloopflag; } SFc4_mpclibInstanceStruct; #endif /*typedef_SFc4_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); extern void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/mpclib_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpclib_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/mpclib_sfun.c ================================================ /* Include files */ #include "mpclib_sfun.h" #include "mpclib_sfun_debug_macros.h" #include "c3_mpclib.h" #include "c4_mpclib.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpclibMachineNumber_; /* Function Declarations */ /* Function Definitions */ void mpclib_initializer(void) { } void mpclib_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpclib_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (chartFileNumber==3) { c3_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } if (chartFileNumber==4) { c4_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } return 0; } unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>2 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"library")) { char machineName[100]; mxGetString(prhs[2], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (!strcmp(machineName,"mpclib")) { if (nrhs==3) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3733901436U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(949442464U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(1737739463U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(4229556772U); } else if (nrhs==4) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[3]); switch (chartFileNumber) { case 3: { extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); sf_c3_mpclib_get_check_sum(plhs); break; } case 4: { extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); sf_c4_mpclib_get_check_sum(plhs); break; } default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else { return 0; } } else { return 0; } } else { return 0; } } else { return 0; } return 1; #else return 0; #endif } unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(aiChksum, "g7n8W2zIhsSl5ytZmrRxgE") == 0) { extern mxArray *sf_c3_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c3_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } case 4: { if (strcmp(aiChksum, "W9pU18Rzyx5XpPp6ECbqY") == 0) { extern mxArray *sf_c4_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c4_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c3_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } case 4: { extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c4_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "D4OsMEOPkEhTIURBqithJD") == 0) { extern mxArray *sf_c3_mpclib_third_party_uses_info(void); plhs[0] = sf_c3_mpclib_third_party_uses_info(); break; } } case 4: { if (strcmp(tpChksum, "xf8liFQGgsdDdPF7ystbhB") == 0) { extern mxArray *sf_c4_mpclib_third_party_uses_info(void); plhs[0] = sf_c4_mpclib_third_party_uses_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "D4OsMEOPkEhTIURBqithJD") == 0) { extern mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c3_mpclib_updateBuildInfo_args_info(); break; } } case 4: { if (strcmp(tpChksum, "xf8liFQGgsdDdPF7ystbhB") == 0) { extern mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c4_mpclib_updateBuildInfo_args_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpclib_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpclibMachineNumber_ = sf_debug_initialize_machine(debugInstance,"mpclib", "sfun",1,2,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance,_mpclibMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance,_mpclibMachineNumber_,0); } void mpclib_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpclib", "mpc_nonlinear"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/mpclib_sfun.h ================================================ #ifndef __mpclib_sfun_h__ #define __mpclib_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpclibMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpclib_initializer(void); extern void mpclib_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpclib_optimization_info(void); extern void unload_mpclib_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/mpclib_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpclib TARGET = sfun CHART_SRCS = c3_mpclib.c c4_mpclib.c MACHINE_SRC = mpclib_sfun.c MACHINE_REG = MAKEFILE = mpclib_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpclib_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- $(MACHINE)_$(TARGET).lib : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) -lib /OUT:$(MACHINE)_$(TARGET).lib @$(OBJLIST_FILE) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Created Stateflow library $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/mpclib_sfun.mol ================================================ mpclib_sfun.obj c3_mpclib.obj c4_mpclib.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/mpclib_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpclibMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear/mpclib/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/mpc_nonlinear_setoutdist_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpc_nonlinear_setoutdist_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/mpc_nonlinear_setoutdist_sfun.c ================================================ /* Include files */ #include "mpc_nonlinear_setoutdist_sfun.h" #include "mpc_nonlinear_setoutdist_sfun_debug_macros.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpc_nonlinear_setoutdistMachineNumber_; real_T _sfTime_; /* Function Declarations */ /* Function Definitions */ void mpc_nonlinear_setoutdist_initializer(void) { } void mpc_nonlinear_setoutdist_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpc_nonlinear_setoutdist_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { return 0; } unsigned int sf_mpc_nonlinear_setoutdist_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>1 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"machine")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3127565895U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2424730183U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(995534499U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(961026598U); } else if (!strcmp(commandName,"exportedFcn")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0U); } else if (!strcmp(commandName,"makefile")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(845759541U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2701450421U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(148688554U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2521617472U); } else if (nrhs==3 && !strcmp(commandName,"chart")) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[2]); switch (chartFileNumber) { default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else if (!strcmp(commandName,"target")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3031367619U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(4001028638U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3978939492U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(838979348U); } else { return 0; } } else { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(674933522U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2737848264U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(1644704678U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1374868793U); } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_setoutdist_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_setoutdist_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_setoutdist_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpc_nonlinear_setoutdist_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpc_nonlinear_setoutdist_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpc_nonlinear_setoutdistMachineNumber_ = sf_debug_initialize_machine (debugInstance,"mpc_nonlinear_setoutdist","sfun",0,0,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance, _mpc_nonlinear_setoutdistMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance, _mpc_nonlinear_setoutdistMachineNumber_,0); } void mpc_nonlinear_setoutdist_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpc_nonlinear_setoutdist_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info( "mpc_nonlinear_setoutdist", "mpc_nonlinear_setoutdist"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpc_nonlinear_setoutdist_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/mpc_nonlinear_setoutdist_sfun.h ================================================ #ifndef __mpc_nonlinear_setoutdist_sfun_h__ #define __mpc_nonlinear_setoutdist_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpc_nonlinear_setoutdistMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpc_nonlinear_setoutdist_initializer(void); extern void mpc_nonlinear_setoutdist_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpc_nonlinear_setoutdist_optimization_info(void); extern void unload_mpc_nonlinear_setoutdist_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/mpc_nonlinear_setoutdist_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpc_nonlinear_setoutdist TARGET = sfun CHART_SRCS = MACHINE_SRC = mpc_nonlinear_setoutdist_sfun.c MACHINE_REG = mpc_nonlinear_setoutdist_sfun_registry.c MAKEFILE = mpc_nonlinear_setoutdist_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpc_nonlinear_setoutdist_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = "E:\2019-˼ʻģԤ\3\chapter3 \slprj\_sfprj\mpc_nonlinear_setoutdist\mpclib\sfun\src\mpclib_sfun.lib" BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- MEX_FILE_NAME_WO_EXT = $(MACHINE)_$(TARGET) MEX_FILE_NAME = $(MEX_FILE_NAME_WO_EXT).mexw64 MEX_FILE_CSF = all : $(MEX_FILE_NAME) $(MEX_FILE_CSF) TMWLIB = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmx.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmex.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmat.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libfixedpoint.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libut.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwmathutil.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libemlrt.lib" "C:\Program Files\MATLAB\R2013b\lib\win64\libippmwipt.lib" $(MEX_FILE_NAME) : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) $(LDFLAGS) /OUT:$(MEX_FILE_NAME) /map:"$(MEX_FILE_NAME_WO_EXT).map"\ $(USER_LIBS) $(SFCLIB) $(AUX_LNK_OBJS)\ $(TMWLIB) $(LINK_MACHINE_LIBS) $(DSP_LIBS) $(BLAS_LIBS) $(THIRD_PARTY_LIBS)\ @$(OBJLIST_FILE) mt -outputresource:"$(MEX_FILE_NAME);2" -manifest "$(MEX_FILE_NAME).manifest" @echo ### Created $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/mpc_nonlinear_setoutdist_sfun.mexw64.manifest ================================================ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/mpc_nonlinear_setoutdist_sfun.mol ================================================ mpc_nonlinear_setoutdist_sfun.obj mpc_nonlinear_setoutdist_sfun_registry.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/mpc_nonlinear_setoutdist_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpc_nonlinear_setoutdistMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpc_nonlinear_setoutdistMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/mpc_nonlinear_setoutdist_sfun_registry.c ================================================ #include "mpc_nonlinear_setoutdist_sfun.h" #include "sfcdebug.h" struct SfDebugInstanceStruct; struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct = NULL; #define PROCESS_MEX_SFUNCTION_CMD_LINE_CALL unsigned int sf_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_setoutdist_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); if (sf_mpc_nonlinear_setoutdist_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mpclib_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; return 0; } unsigned int sf_process_autoinheritance_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_setoutdist_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear_setoutdist") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_setoutdist_autoinheritance_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_autoinheritance_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_third_party_uses_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_setoutdist_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear_setoutdist") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_setoutdist_third_party_uses_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_third_party_uses_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_updateBuildInfo_args_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_setoutdist_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear_setoutdist") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_setoutdist_updateBuildInfo_args_info(nlhs,plhs,3, newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_eml_resolved_functions_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_setoutdist_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 3) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear_setoutdist") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpc_nonlinear_setoutdist_get_eml_resolved_functions_info(nlhs,plhs, 2,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpclib_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } return 0; } unsigned int sf_mex_unlock_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_mex_unlock")) return 0; while (mexIsLocked()) { mexUnlock(); } return(1); } extern unsigned int sf_debug_api(struct SfDebugInstanceStruct* debugInstance, int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); static unsigned int sf_debug_api_wrapper( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { return sf_debug_api(sfGlobalDebugInstanceStruct, nlhs, plhs, nrhs, prhs); } static unsigned int ProcessMexSfunctionCmdLineCall(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[]) { if (sf_debug_api_wrapper(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mex_unlock_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_autoinheritance_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_third_party_uses_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_updateBuildInfo_args_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_eml_resolved_functions_info_call(nlhs,plhs,nrhs,prhs)) return 1; mexErrMsgTxt("Unsuccessful command."); return 0; } static unsigned int sfGlobalMdlStartCallCounts = 0; unsigned int sf_machine_global_initializer_called(void) { return(sfGlobalMdlStartCallCounts > 0); } extern unsigned int sf_mpc_nonlinear_setoutdist_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); extern unsigned int sf_mpclib_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); unsigned int sf_machine_global_method_dispatcher(SimStruct *simstructPtr, const char *machineName, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (!strcmp(machineName,"mpc_nonlinear_setoutdist")) { return(sf_mpc_nonlinear_setoutdist_method_dispatcher(simstructPtr, chartFileNumber,specsCksum,method,data)); } if (!strcmp(machineName,"mpclib")) { return(sf_mpclib_method_dispatcher(simstructPtr,chartFileNumber,specsCksum, method,data)); } return 0; } extern void mpc_nonlinear_setoutdist_terminator(void); extern void mpclib_terminator(void); void sf_machine_global_terminator(void) { sfGlobalMdlStartCallCounts--; if (sfGlobalMdlStartCallCounts == 0) { mpc_nonlinear_setoutdist_terminator(); mpclib_terminator(); sf_debug_terminate(sfGlobalDebugInstanceStruct); sfGlobalDebugInstanceStruct = NULL; } return; } extern void mpc_nonlinear_setoutdist_initializer(void); extern void mpclib_initializer(void); extern void mpc_nonlinear_setoutdist_register_exported_symbols(SimStruct* S); extern void mpclib_register_exported_symbols(SimStruct* S); extern void mpc_nonlinear_setoutdist_debug_initialize(struct SfDebugInstanceStruct*); extern void mpclib_debug_initialize(struct SfDebugInstanceStruct*); void sf_register_machine_exported_symbols(SimStruct* S) { mpc_nonlinear_setoutdist_register_exported_symbols(S); mpclib_register_exported_symbols(S); } bool callCustomFcn(char initFlag) { return false; } void sf_machine_global_initializer(SimStruct* S) { bool simModeIsRTWGen = sim_mode_is_rtw_gen(S); sfGlobalMdlStartCallCounts++; if (sfGlobalMdlStartCallCounts == 1) { if (simModeIsRTWGen) { sf_register_machine_exported_symbols(S); } sfGlobalDebugInstanceStruct = sf_debug_create_debug_instance_struct(); if (!simModeIsRTWGen) { mpc_nonlinear_setoutdist_debug_initialize(sfGlobalDebugInstanceStruct); } mpc_nonlinear_setoutdist_initializer(); if (!simModeIsRTWGen) { mpclib_debug_initialize(sfGlobalDebugInstanceStruct); } mpclib_initializer(); } return; } #define PROCESS_MEX_SFUNCTION_EVERY_CALL unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]); #include "simulink.c" /* MEX-file interface mechanism */ static void sf_machine_load_sfunction_ptrs(SimStruct *S) { ssSetmdlInitializeSampleTimes(S,__mdlInitializeSampleTimes); ssSetmdlInitializeConditions(S,__mdlInitializeConditions); ssSetmdlOutputs(S,__mdlOutputs); ssSetmdlTerminate(S,__mdlTerminate); ssSetmdlRTW(S,__mdlRTW); ssSetmdlSetWorkWidths(S,__mdlSetWorkWidths); #if defined(MDL_HASSIMULATIONCONTEXTIO) ssSetmdlSimulationContextIO(S,__mdlSimulationContextIO); #endif #if defined(MDL_START) ssSetmdlStart(S,__mdlStart); #endif #if defined(RTW_GENERATED_ENABLE) ssSetRTWGeneratedEnable(S,__mdlEnable); #endif #if defined(RTW_GENERATED_DISABLE) ssSetRTWGeneratedDisable(S,__mdlDisable); #endif #if defined(MDL_ENABLE) ssSetmdlEnable(S,__mdlEnable); #endif #if defined(MDL_DISABLE) ssSetmdlDisable(S,__mdlDisable); #endif #if defined(MDL_SIM_STATUS_CHANGE) ssSetmdlSimStatusChange(S,__mdlSimStatusChange); #endif #if defined(MDL_EXT_MODE_EXEC) ssSetmdlExtModeExec(S,__mdlExtModeExec); #endif #if defined(MDL_UPDATE) ssSetmdlUpdate(S,__mdlUpdate); #endif #if defined(MDL_PROCESS_PARAMETERS) ssSetmdlProcessParameters(S,__mdlProcessParameters); #endif #if defined(MDL_ZERO_CROSSINGS) ssSetmdlZeroCrossings(S,__mdlZeroCrossings); #endif #if defined(MDL_DERIVATIVES) ssSetmdlDerivatives(S,__mdlDerivatives); #endif } unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]) { if (nlhs < 0) { SimStruct *S = (SimStruct *)plhs[_LHS_SS]; int_T flag = (int_T)(*(real_T*)mxGetPr(prhs[_RHS_FLAG])); if (flag == SS_CALL_MDL_SET_WORK_WIDTHS) { sf_machine_load_sfunction_ptrs(S); } } return 0; } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/_self/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/c3_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c3_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c3_b_p (5.0) #define c3_b_nu (3.0) #define c3_b_isQP (TRUE) #define c3_b_ny (2.0) #define c3_b_degrees (7.0) #define c3_b_maxiter (120.0) #define c3_b_nxQP (11.0) #define c3_b_openloopflag (FALSE) #define c3_b_lims_inport (0.0) #define c3_b_no_umin (1.0) #define c3_b_no_umax (1.0) #define c3_b_no_ymin (1.0) #define c3_b_no_ymax (1.0) #define c3_b_switch_inport (0.0) #define c3_b_no_switch (1.0) #define c3_b_enable_value (0.0) #define c3_b_return_cost (0.0) #define c3_b_return_sequence (0.0) #define c3_b_no_ywt (1.0) #define c3_b_no_duwt (1.0) #define c3_b_no_rhoeps (1.0) #define c3_b_Wy (0.0) #define c3_b_Wdu (0.0) #define c3_b_Jm (0.0) #define c3_b_SuJm (0.0) #define c3_b_I2JmWuI2Jm (0.0) #define c3_b_Su1 (0.0) #define c3_b_I1WuI2Jm (0.0) #define c3_b_Sx (0.0) #define c3_b_Hv (0.0) #define c3_b_Wu (0.0) #define c3_b_I1 (0.0) /* Variable Declarations */ /* Variable Definitions */ static const char * c3_debug_family_names[71] = { "DataType", "isQP", "nu", "ny", "degrees", "Hinv", "Kx", "Ku1", "Kut", "Kr", "Kv", "Mlim", "Mx", "Mu1", "Mv", "z_degrees", "utarget", "p", "uoff", "yoff", "maxiter", "nxQP", "openloopflag", "lims_inport", "no_umin", "no_umax", "no_ymin", "no_ymax", "switch_inport", "no_switch", "enable_value", "return_cost", "H", "return_sequence", "blocking_moves", "Linv", "Ac", "no_ywt", "no_duwt", "no_rhoeps", "Wy", "Wdu", "Jm", "SuJm", "I2JmWuI2Jm", "Su1", "I1WuI2Jm", "Sx", "Hv", "Wu", "I1", "nargin", "nargout", "rseq", "vseq", "x", "old_u", "iA", "umin", "umax", "ymin", "ymax", "switch_in", "ywt", "duwt", "rhoeps", "u", "cost", "useq", "status", "iAout" }; /* Function Declarations */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st); static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber); static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_t_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_u_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_v_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_w_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_x_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier, real_T c3_y[3]); static void c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]); static real_T c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_cost, const char_T *c3_identifier); static real_T c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[15]); static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]); static void c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[25]); static void c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[25]); static const mxArray *c3_y_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static int32_T c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static boolean_T c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[49]); static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[66]); static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]); static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[90]); static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]); static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[36]); static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]); static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[198]); static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[54]); static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[108]); static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[7]); static void c3_q_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_v_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]); static void c3_r_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_w_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[2]); static void c3_s_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_x_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[5]); static void c3_t_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_y_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[126]); static void c3_u_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static uint8_T c3_ab_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier); static uint8_T c3_bb_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { chartInstance->c3_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c3_is_active_c3_mpclib = 0U; } static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_d0; real_T c3_d1; real_T c3_d2; real_T c3_d3; real_T c3_dv0[49]; int32_T c3_i0; real_T c3_dv1[66]; int32_T c3_i1; real_T c3_dv2[18]; int32_T c3_i2; real_T c3_dv3[90]; int32_T c3_i3; real_T c3_dv4[60]; int32_T c3_i4; real_T c3_dv5[36]; int32_T c3_i5; real_T c3_dv6[18]; int32_T c3_i6; real_T c3_dv7[198]; int32_T c3_i7; real_T c3_dv8[54]; int32_T c3_i8; real_T c3_dv9[108]; int32_T c3_i9; real_T c3_dv10[7]; int32_T c3_i10; real_T c3_dv11[15]; int32_T c3_i11; real_T c3_d4; real_T c3_dv12[3]; int32_T c3_i12; real_T c3_dv13[2]; int32_T c3_i13; real_T c3_d5; real_T c3_d6; real_T c3_d7; real_T c3_d8; real_T c3_d9; real_T c3_d10; real_T c3_d11; real_T c3_d12; real_T c3_d13; real_T c3_d14; real_T c3_d15; real_T c3_d16; real_T c3_dv14[49]; int32_T c3_i14; real_T c3_d17; real_T c3_dv15[5]; int32_T c3_i15; real_T c3_dv16[49]; int32_T c3_i16; real_T c3_dv17[126]; int32_T c3_i17; real_T c3_d18; real_T c3_d19; real_T c3_d20; real_T c3_d21; real_T c3_d22; real_T c3_d23; real_T c3_d24; real_T c3_d25; real_T c3_d26; real_T c3_d27; real_T c3_d28; real_T c3_d29; real_T c3_d30; real_T c3_d31; sf_set_error_prefix_string( "Error evaluating data 'isQP' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 27, 0), &c3_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_isQP = (c3_d0 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nu' in the parent workspace.\n"); sf_mex_import_named("nu", sf_mex_get_sfun_param(chartInstance->S, 38, 0), &c3_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nu = c3_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 40, 0), &c3_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_ny = c3_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'degrees' in the parent workspace.\n"); sf_mex_import_named("degrees", sf_mex_get_sfun_param(chartInstance->S, 25, 0), &c3_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_degrees = c3_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hinv' in the parent workspace.\n"); sf_mex_import_named("Hinv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), c3_dv0, 0, 0, 0U, 1, 0U, 2, 7, 7); for (c3_i0 = 0; c3_i0 < 49; c3_i0++) { chartInstance->c3_Hinv[c3_i0] = c3_dv0[c3_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kx' in the parent workspace.\n"); sf_mex_import_named("Kx", sf_mex_get_sfun_param(chartInstance->S, 12, 0), c3_dv1, 0, 0, 0U, 1, 0U, 2, 11, 6); for (c3_i1 = 0; c3_i1 < 66; c3_i1++) { chartInstance->c3_Kx[c3_i1] = c3_dv1[c3_i1]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ku1' in the parent workspace.\n"); sf_mex_import_named("Ku1", sf_mex_get_sfun_param(chartInstance->S, 9, 0), c3_dv2, 0, 0, 0U, 1, 0U, 2, 3, 6); for (c3_i2 = 0; c3_i2 < 18; c3_i2++) { chartInstance->c3_Ku1[c3_i2] = c3_dv2[c3_i2]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kut' in the parent workspace.\n"); sf_mex_import_named("Kut", sf_mex_get_sfun_param(chartInstance->S, 10, 0), c3_dv3, 0, 0, 0U, 1, 0U, 2, 15, 6); for (c3_i3 = 0; c3_i3 < 90; c3_i3++) { chartInstance->c3_Kut[c3_i3] = c3_dv3[c3_i3]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kr' in the parent workspace.\n"); sf_mex_import_named("Kr", sf_mex_get_sfun_param(chartInstance->S, 8, 0), c3_dv4, 0, 0, 0U, 1, 0U, 2, 10, 6); for (c3_i4 = 0; c3_i4 < 60; c3_i4++) { chartInstance->c3_Kr[c3_i4] = c3_dv4[c3_i4]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kv' in the parent workspace.\n"); sf_mex_import_named("Kv", sf_mex_get_sfun_param(chartInstance->S, 11, 0), c3_dv5, 0, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i5 = 0; c3_i5 < 36; c3_i5++) { chartInstance->c3_Kv[c3_i5] = c3_dv5[c3_i5]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mlim' in the parent workspace.\n"); sf_mex_import_named("Mlim", sf_mex_get_sfun_param(chartInstance->S, 14, 0), c3_dv6, 0, 0, 0U, 1, 0U, 1, 18); for (c3_i6 = 0; c3_i6 < 18; c3_i6++) { chartInstance->c3_Mlim[c3_i6] = c3_dv6[c3_i6]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mx' in the parent workspace.\n"); sf_mex_import_named("Mx", sf_mex_get_sfun_param(chartInstance->S, 17, 0), c3_dv7, 0, 0, 0U, 1, 0U, 2, 18, 11); for (c3_i7 = 0; c3_i7 < 198; c3_i7++) { chartInstance->c3_Mx[c3_i7] = c3_dv7[c3_i7]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mu1' in the parent workspace.\n"); sf_mex_import_named("Mu1", sf_mex_get_sfun_param(chartInstance->S, 15, 0), c3_dv8, 0, 0, 0U, 1, 0U, 2, 18, 3); for (c3_i8 = 0; c3_i8 < 54; c3_i8++) { chartInstance->c3_Mu1[c3_i8] = c3_dv8[c3_i8]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mv' in the parent workspace.\n"); sf_mex_import_named("Mv", sf_mex_get_sfun_param(chartInstance->S, 16, 0), c3_dv9, 0, 0, 0U, 1, 0U, 2, 18, 6); for (c3_i9 = 0; c3_i9 < 108; c3_i9++) { chartInstance->c3_Mv[c3_i9] = c3_dv9[c3_i9]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'z_degrees' in the parent workspace.\n"); sf_mex_import_named("z_degrees", sf_mex_get_sfun_param(chartInstance->S, 49, 0), c3_dv10, 0, 0, 0U, 1, 0U, 1, 7); for (c3_i10 = 0; c3_i10 < 7; c3_i10++) { chartInstance->c3_z_degrees[c3_i10] = c3_dv10[c3_i10]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'utarget' in the parent workspace.\n"); sf_mex_import_named("utarget", sf_mex_get_sfun_param(chartInstance->S, 47, 0), c3_dv11, 0, 0, 0U, 1, 0U, 1, 15); for (c3_i11 = 0; c3_i11 < 15; c3_i11++) { chartInstance->c3_utarget[c3_i11] = c3_dv11[c3_i11]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 42, 0), &c3_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_p = c3_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'uoff' in the parent workspace.\n"); sf_mex_import_named("uoff", sf_mex_get_sfun_param(chartInstance->S, 46, 0), c3_dv12, 0, 0, 0U, 1, 0U, 1, 3); for (c3_i12 = 0; c3_i12 < 3; c3_i12++) { chartInstance->c3_uoff[c3_i12] = c3_dv12[c3_i12]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 48, 0), c3_dv13, 0, 0, 0U, 1, 0U, 1, 2); for (c3_i13 = 0; c3_i13 < 2; c3_i13++) { chartInstance->c3_yoff[c3_i13] = c3_dv13[c3_i13]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'maxiter' in the parent workspace.\n"); sf_mex_import_named("maxiter", sf_mex_get_sfun_param(chartInstance->S, 29, 0), &c3_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_maxiter = c3_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nxQP' in the parent workspace.\n"); sf_mex_import_named("nxQP", sf_mex_get_sfun_param(chartInstance->S, 39, 0), &c3_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nxQP = c3_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 41, 0), &c3_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_openloopflag = (c3_d7 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'lims_inport' in the parent workspace.\n"); sf_mex_import_named("lims_inport", sf_mex_get_sfun_param(chartInstance->S, 28, 0), &c3_d8, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_lims_inport = c3_d8; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umin' in the parent workspace.\n"); sf_mex_import_named("no_umin", sf_mex_get_sfun_param(chartInstance->S, 34, 0), &c3_d9, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umin = c3_d9; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umax' in the parent workspace.\n"); sf_mex_import_named("no_umax", sf_mex_get_sfun_param(chartInstance->S, 33, 0), &c3_d10, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umax = c3_d10; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymin' in the parent workspace.\n"); sf_mex_import_named("no_ymin", sf_mex_get_sfun_param(chartInstance->S, 36, 0), &c3_d11, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymin = c3_d11; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymax' in the parent workspace.\n"); sf_mex_import_named("no_ymax", sf_mex_get_sfun_param(chartInstance->S, 35, 0), &c3_d12, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymax = c3_d12; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'switch_inport' in the parent workspace.\n"); sf_mex_import_named("switch_inport", sf_mex_get_sfun_param(chartInstance->S, 45, 0), &c3_d13, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_switch_inport = c3_d13; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_switch' in the parent workspace.\n"); sf_mex_import_named("no_switch", sf_mex_get_sfun_param(chartInstance->S, 32, 0), &c3_d14, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_switch = c3_d14; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'enable_value' in the parent workspace.\n"); sf_mex_import_named("enable_value", sf_mex_get_sfun_param(chartInstance->S, 26, 0), &c3_d15, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_enable_value = c3_d15; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_cost' in the parent workspace.\n"); sf_mex_import_named("return_cost", sf_mex_get_sfun_param(chartInstance->S, 43, 0), &c3_d16, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_cost = c3_d16; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'H' in the parent workspace.\n"); sf_mex_import_named("H", sf_mex_get_sfun_param(chartInstance->S, 1, 0), c3_dv14, 0, 0, 0U, 1, 0U, 2, 7, 7); for (c3_i14 = 0; c3_i14 < 49; c3_i14++) { chartInstance->c3_H[c3_i14] = c3_dv14[c3_i14]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_sequence' in the parent workspace.\n"); sf_mex_import_named("return_sequence", sf_mex_get_sfun_param(chartInstance->S, 44, 0), &c3_d17, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_sequence = c3_d17; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'blocking_moves' in the parent workspace.\n"); sf_mex_import_named("blocking_moves", sf_mex_get_sfun_param(chartInstance->S, 24, 0), c3_dv15, 0, 0, 0U, 1, 0U, 2, 1, 5); for (c3_i15 = 0; c3_i15 < 5; c3_i15++) { chartInstance->c3_blocking_moves[c3_i15] = c3_dv15[c3_i15]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Linv' in the parent workspace.\n"); sf_mex_import_named("Linv", sf_mex_get_sfun_param(chartInstance->S, 13, 0), c3_dv16, 0, 0, 0U, 1, 0U, 2, 7, 7); for (c3_i16 = 0; c3_i16 < 49; c3_i16++) { chartInstance->c3_Linv[c3_i16] = c3_dv16[c3_i16]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ac' in the parent workspace.\n"); sf_mex_import_named("Ac", sf_mex_get_sfun_param(chartInstance->S, 0, 0), c3_dv17, 0, 0, 0U, 1, 0U, 2, 18, 7); for (c3_i17 = 0; c3_i17 < 126; c3_i17++) { chartInstance->c3_Ac[c3_i17] = c3_dv17[c3_i17]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ywt' in the parent workspace.\n"); sf_mex_import_named("no_ywt", sf_mex_get_sfun_param(chartInstance->S, 37, 0), &c3_d18, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ywt = c3_d18; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_duwt' in the parent workspace.\n"); sf_mex_import_named("no_duwt", sf_mex_get_sfun_param(chartInstance->S, 30, 0), &c3_d19, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_duwt = c3_d19; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_rhoeps' in the parent workspace.\n"); sf_mex_import_named("no_rhoeps", sf_mex_get_sfun_param(chartInstance->S, 31, 0), &c3_d20, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_rhoeps = c3_d20; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wy' in the parent workspace.\n"); sf_mex_import_named("Wy", sf_mex_get_sfun_param(chartInstance->S, 23, 0), &c3_d21, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wy = c3_d21; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wdu' in the parent workspace.\n"); sf_mex_import_named("Wdu", sf_mex_get_sfun_param(chartInstance->S, 21, 0), &c3_d22, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wdu = c3_d22; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Jm' in the parent workspace.\n"); sf_mex_import_named("Jm", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c3_d23, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Jm = c3_d23; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'SuJm' in the parent workspace.\n"); sf_mex_import_named("SuJm", sf_mex_get_sfun_param(chartInstance->S, 19, 0), &c3_d24, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_SuJm = c3_d24; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I2JmWuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I2JmWuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c3_d25, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I2JmWuI2Jm = c3_d25; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Su1' in the parent workspace.\n"); sf_mex_import_named("Su1", sf_mex_get_sfun_param(chartInstance->S, 18, 0), &c3_d26, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Su1 = c3_d26; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1WuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I1WuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c3_d27, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1WuI2Jm = c3_d27; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Sx' in the parent workspace.\n"); sf_mex_import_named("Sx", sf_mex_get_sfun_param(chartInstance->S, 20, 0), &c3_d28, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Sx = c3_d28; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hv' in the parent workspace.\n"); sf_mex_import_named("Hv", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c3_d29, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Hv = c3_d29; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wu' in the parent workspace.\n"); sf_mex_import_named("Wu", sf_mex_get_sfun_param(chartInstance->S, 22, 0), &c3_d30, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wu = c3_d30; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1' in the parent workspace.\n"); sf_mex_import_named("I1", sf_mex_get_sfun_param(chartInstance->S, 4, 0), &c3_d31, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1 = c3_d31; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { const mxArray *c3_st; const mxArray *c3_y = NULL; real_T c3_hoistedGlobal; real_T c3_u; const mxArray *c3_b_y = NULL; int32_T c3_i18; boolean_T c3_b_u[25]; const mxArray *c3_c_y = NULL; real_T c3_b_hoistedGlobal; real_T c3_c_u; const mxArray *c3_d_y = NULL; int32_T c3_i19; real_T c3_d_u[3]; const mxArray *c3_e_y = NULL; int32_T c3_i20; real_T c3_e_u[15]; const mxArray *c3_f_y = NULL; uint8_T c3_c_hoistedGlobal; uint8_T c3_f_u; const mxArray *c3_g_y = NULL; real_T *c3_cost; real_T *c3_status; real_T (*c3_useq)[15]; real_T (*c3_g_u)[3]; boolean_T (*c3_iAout)[25]; c3_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_g_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_st = NULL; c3_st = NULL; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_createcellarray(6), FALSE); c3_hoistedGlobal = *c3_cost; c3_u = c3_hoistedGlobal; c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 0, c3_b_y); for (c3_i18 = 0; c3_i18 < 25; c3_i18++) { c3_b_u[c3_i18] = (*c3_iAout)[c3_i18]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_b_u, 11, 0U, 1U, 0U, 1, 25), FALSE); sf_mex_setcell(c3_y, 1, c3_c_y); c3_b_hoistedGlobal = *c3_status; c3_c_u = c3_b_hoistedGlobal; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_c_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 2, c3_d_y); for (c3_i19 = 0; c3_i19 < 3; c3_i19++) { c3_d_u[c3_i19] = (*c3_g_u)[c3_i19]; } c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", c3_d_u, 0, 0U, 1U, 0U, 1, 3), FALSE); sf_mex_setcell(c3_y, 3, c3_e_y); for (c3_i20 = 0; c3_i20 < 15; c3_i20++) { c3_e_u[c3_i20] = (*c3_useq)[c3_i20]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 2, 5, 3), FALSE); sf_mex_setcell(c3_y, 4, c3_f_y); c3_c_hoistedGlobal = chartInstance->c3_is_active_c3_mpclib; c3_f_u = c3_c_hoistedGlobal; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_f_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 5, c3_g_y); sf_mex_assign(&c3_st, c3_y, FALSE); return c3_st; } static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st) { const mxArray *c3_u; boolean_T c3_bv0[25]; int32_T c3_i21; real_T c3_dv18[3]; int32_T c3_i22; real_T c3_dv19[15]; int32_T c3_i23; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[25]; real_T (*c3_b_u)[3]; real_T (*c3_useq)[15]; c3_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_b_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c3_doneDoubleBufferReInit = TRUE; c3_u = sf_mex_dup(c3_st); *c3_cost = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 0)), "cost"); c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 1)), "iAout", c3_bv0); for (c3_i21 = 0; c3_i21 < 25; c3_i21++) { (*c3_iAout)[c3_i21] = c3_bv0[c3_i21]; } *c3_status = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell (c3_u, 2)), "status"); c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 3)), "u", c3_dv18); for (c3_i22 = 0; c3_i22 < 3; c3_i22++) { (*c3_b_u)[c3_i22] = c3_dv18[c3_i22]; } c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 4)), "useq", c3_dv19); for (c3_i23 = 0; c3_i23 < 15; c3_i23++) { (*c3_useq)[c3_i23] = c3_dv19[c3_i23]; } chartInstance->c3_is_active_c3_mpclib = c3_ab_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 5)), "is_active_c3_mpclib"); sf_mex_destroy(&c3_u); c3_update_debugger_state_c3_mpclib(chartInstance); sf_mex_destroy(&c3_st); } static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { int32_T c3_i24; int32_T c3_i25; int32_T c3_i26; int32_T c3_i27; int32_T c3_i28; int32_T c3_i29; int32_T c3_i30; int32_T c3_i31; int32_T c3_i32; int32_T c3_i33; int32_T c3_i34; int32_T c3_i35; int32_T c3_i36; int32_T c3_i37; int32_T c3_i38; int32_T c3_i39; int32_T c3_i40; int32_T c3_i41; int32_T c3_i42; int32_T c3_i43; int32_T c3_i44; int32_T c3_i45; int32_T c3_i46; int32_T c3_i47; int32_T c3_i48; int32_T c3_i49; int32_T c3_i50; int32_T c3_i51; int32_T c3_i52; int32_T c3_i53; int32_T c3_i54; int32_T c3_i55; real_T *c3_switch_in; real_T *c3_rhoeps; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[25]; real_T (*c3_useq)[15]; real_T (*c3_u)[3]; real_T (*c3_duwt)[3]; real_T (*c3_ywt)[2]; real_T (*c3_ymax)[2]; real_T (*c3_ymin)[2]; real_T (*c3_umax)[3]; real_T (*c3_umin)[3]; boolean_T (*c3_iA)[25]; real_T (*c3_old_u)[3]; real_T (*c3_x)[11]; real_T (*c3_vseq)[6]; real_T (*c3_rseq)[10]; c3_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[25])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[11])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 0U, chartInstance->c3_sfEvent); for (c3_i24 = 0; c3_i24 < 10; c3_i24++) { _SFD_DATA_RANGE_CHECK((*c3_rseq)[c3_i24], 0U); } for (c3_i25 = 0; c3_i25 < 6; c3_i25++) { _SFD_DATA_RANGE_CHECK((*c3_vseq)[c3_i25], 1U); } for (c3_i26 = 0; c3_i26 < 11; c3_i26++) { _SFD_DATA_RANGE_CHECK((*c3_x)[c3_i26], 2U); } for (c3_i27 = 0; c3_i27 < 3; c3_i27++) { _SFD_DATA_RANGE_CHECK((*c3_old_u)[c3_i27], 3U); } for (c3_i28 = 0; c3_i28 < 25; c3_i28++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iA)[c3_i28], 4U); } for (c3_i29 = 0; c3_i29 < 3; c3_i29++) { _SFD_DATA_RANGE_CHECK((*c3_umin)[c3_i29], 5U); } for (c3_i30 = 0; c3_i30 < 3; c3_i30++) { _SFD_DATA_RANGE_CHECK((*c3_umax)[c3_i30], 6U); } for (c3_i31 = 0; c3_i31 < 2; c3_i31++) { _SFD_DATA_RANGE_CHECK((*c3_ymin)[c3_i31], 7U); } for (c3_i32 = 0; c3_i32 < 2; c3_i32++) { _SFD_DATA_RANGE_CHECK((*c3_ymax)[c3_i32], 8U); } _SFD_DATA_RANGE_CHECK(*c3_switch_in, 9U); for (c3_i33 = 0; c3_i33 < 2; c3_i33++) { _SFD_DATA_RANGE_CHECK((*c3_ywt)[c3_i33], 10U); } for (c3_i34 = 0; c3_i34 < 3; c3_i34++) { _SFD_DATA_RANGE_CHECK((*c3_duwt)[c3_i34], 11U); } _SFD_DATA_RANGE_CHECK(*c3_rhoeps, 12U); for (c3_i35 = 0; c3_i35 < 3; c3_i35++) { _SFD_DATA_RANGE_CHECK((*c3_u)[c3_i35], 13U); } _SFD_DATA_RANGE_CHECK(*c3_cost, 14U); for (c3_i36 = 0; c3_i36 < 15; c3_i36++) { _SFD_DATA_RANGE_CHECK((*c3_useq)[c3_i36], 15U); } _SFD_DATA_RANGE_CHECK(*c3_status, 16U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_isQP, 17U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nu, 18U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_ny, 19U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_degrees, 20U); for (c3_i37 = 0; c3_i37 < 49; c3_i37++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hinv[c3_i37], 21U); } for (c3_i38 = 0; c3_i38 < 66; c3_i38++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kx[c3_i38], 22U); } for (c3_i39 = 0; c3_i39 < 18; c3_i39++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ku1[c3_i39], 23U); } for (c3_i40 = 0; c3_i40 < 90; c3_i40++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kut[c3_i40], 24U); } for (c3_i41 = 0; c3_i41 < 60; c3_i41++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kr[c3_i41], 25U); } for (c3_i42 = 0; c3_i42 < 36; c3_i42++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kv[c3_i42], 26U); } for (c3_i43 = 0; c3_i43 < 18; c3_i43++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mlim[c3_i43], 27U); } for (c3_i44 = 0; c3_i44 < 198; c3_i44++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mx[c3_i44], 28U); } for (c3_i45 = 0; c3_i45 < 54; c3_i45++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mu1[c3_i45], 29U); } for (c3_i46 = 0; c3_i46 < 108; c3_i46++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mv[c3_i46], 30U); } for (c3_i47 = 0; c3_i47 < 7; c3_i47++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_z_degrees[c3_i47], 31U); } for (c3_i48 = 0; c3_i48 < 15; c3_i48++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_utarget[c3_i48], 32U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_p, 33U); for (c3_i49 = 0; c3_i49 < 3; c3_i49++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_uoff[c3_i49], 34U); } for (c3_i50 = 0; c3_i50 < 2; c3_i50++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_yoff[c3_i50], 35U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_maxiter, 36U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nxQP, 37U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_openloopflag, 38U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_lims_inport, 39U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umin, 40U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umax, 41U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymin, 42U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymax, 43U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_switch_inport, 44U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_switch, 45U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_enable_value, 46U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_cost, 47U); for (c3_i51 = 0; c3_i51 < 49; c3_i51++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_H[c3_i51], 48U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_sequence, 49U); for (c3_i52 = 0; c3_i52 < 5; c3_i52++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_blocking_moves[c3_i52], 50U); } for (c3_i53 = 0; c3_i53 < 49; c3_i53++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Linv[c3_i53], 51U); } for (c3_i54 = 0; c3_i54 < 126; c3_i54++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ac[c3_i54], 52U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ywt, 53U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_duwt, 54U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_rhoeps, 55U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wy, 56U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wdu, 57U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Jm, 58U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_SuJm, 59U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I2JmWuI2Jm, 60U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Su1, 61U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1WuI2Jm, 62U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Sx, 63U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hv, 64U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wu, 65U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1, 66U); for (c3_i55 = 0; c3_i55 < 25; c3_i55++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iAout)[c3_i55], 67U); } chartInstance->c3_sfEvent = CALL_EVENT; c3_chartstep_c3_mpclib(chartInstance); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_hoistedGlobal; real_T c3_b_hoistedGlobal; int32_T c3_i56; real_T c3_rseq[10]; int32_T c3_i57; real_T c3_vseq[6]; int32_T c3_i58; real_T c3_x[11]; int32_T c3_i59; real_T c3_old_u[3]; int32_T c3_i60; boolean_T c3_iA[25]; int32_T c3_i61; real_T c3_umin[3]; int32_T c3_i62; real_T c3_umax[3]; int32_T c3_i63; real_T c3_ymin[2]; int32_T c3_i64; real_T c3_ymax[2]; real_T c3_switch_in; int32_T c3_i65; real_T c3_ywt[2]; int32_T c3_i66; real_T c3_duwt[3]; real_T c3_rhoeps; uint32_T c3_debug_family_var_map[71]; char_T c3_DataType[6]; boolean_T c3_c_isQP; real_T c3_c_nu; real_T c3_c_ny; real_T c3_c_degrees; real_T c3_c_Hinv[49]; real_T c3_c_Kx[66]; real_T c3_c_Ku1[18]; real_T c3_c_Kut[90]; real_T c3_c_Kr[60]; real_T c3_c_Kv[36]; real_T c3_c_Mlim[18]; real_T c3_c_Mx[198]; real_T c3_c_Mu1[54]; real_T c3_c_Mv[108]; real_T c3_c_z_degrees[7]; real_T c3_c_utarget[15]; real_T c3_c_p; real_T c3_c_uoff[3]; real_T c3_c_yoff[2]; real_T c3_c_maxiter; real_T c3_c_nxQP; boolean_T c3_c_openloopflag; real_T c3_c_lims_inport; real_T c3_c_no_umin; real_T c3_c_no_umax; real_T c3_c_no_ymin; real_T c3_c_no_ymax; real_T c3_c_switch_inport; real_T c3_c_no_switch; real_T c3_c_enable_value; real_T c3_c_return_cost; real_T c3_c_H[49]; real_T c3_c_return_sequence; real_T c3_c_blocking_moves[5]; real_T c3_c_Linv[49]; real_T c3_c_Ac[126]; real_T c3_c_no_ywt; real_T c3_c_no_duwt; real_T c3_c_no_rhoeps; real_T c3_c_Wy; real_T c3_c_Wdu; real_T c3_c_Jm; real_T c3_c_SuJm; real_T c3_c_I2JmWuI2Jm; real_T c3_c_Su1; real_T c3_c_I1WuI2Jm; real_T c3_c_Sx; real_T c3_c_Hv; real_T c3_c_Wu; real_T c3_c_I1; real_T c3_nargin = 63.0; real_T c3_nargout = 5.0; real_T c3_u[3]; real_T c3_cost; real_T c3_useq[15]; real_T c3_status; boolean_T c3_iAout[25]; int32_T c3_i67; static real_T c3_d_Ac[126] = { -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, -0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, -0.0, -0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.0, -0.0, -0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -0.0, -0.0, -0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i68; static real_T c3_d_Linv[49] = { 0.890943967335334, -0.3765340064257745, -0.081968447195651092, -3.5489218669425688, -0.0066855072825417984, 0.10307825269687225, 0.0, 0.0, 0.79076149529618434, -1.45244561488651, 0.37621263709139419, -2.9239965883035044, 0.46691227779109384, 0.0, 0.0, 0.0, 5.1774615543769329, -0.55386901645657716, -4.1318677662181731, -3.4991992981439619, 0.0, 0.0, 0.0, 0.0, 4.6605654371565022, -0.041083569621347855, -0.15597566320058937, 0.0, 0.0, 0.0, 0.0, 0.0, 5.5702072264245031, -0.95560346771331783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.8039367573053688, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.003162277660168379 }; int32_T c3_i69; static real_T c3_d_blocking_moves[5] = { 1.0, 1.0, 0.0, 0.0, 0.0 }; int32_T c3_i70; static real_T c3_d_H[49] = { 1.2597930755942788, 0.59987105700346466, 0.188228026070508, 0.93325195233225344, 0.46291238552612662, 0.095028876539678384, 0.0, 0.59987105700346466, 1.8848612022853453, 0.53826162835208635, 0.36860620668000732, 1.3921398940378122, 0.2645877164403112, 0.0, 0.188228026070508, 0.53826162835208635, 0.19128473163107027, 0.12261439624071246, 0.42557379326757072, 0.09364275287343965, 0.0, 0.93325195233225344, 0.36860620668000732, 0.12261439624071246, 0.74150713022437431, 0.29103635087465185, 0.062985445368814619, 0.0, 0.46291238552612662, 1.3921398940378122, 0.42557379326757072, 0.29103635087465185, 1.0813969472131397, 0.21243057759953443, 0.0, 0.095028876539678384, 0.2645877164403112, 0.09364275287343965, 0.062985445368814619, 0.21243057759953443, 0.059149576937758915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 100000.0 }; int32_T c3_i71; int32_T c3_i72; int32_T c3_i73; int32_T c3_i74; int32_T c3_i75; int32_T c3_i76; static real_T c3_d_Mu1[54] = { -1.0, -0.0, -0.0, -1.0, -0.0, -0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, -1.0, -0.0, -0.0, -1.0, -0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, -0.0, -1.0, -0.0, -0.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; int32_T c3_i77; int32_T c3_i78; static real_T c3_d_Mlim[18] = { 3.0, 2.0, 2.0, 3.0, 2.0, 2.0, 3.0, 2.0, 2.0, 3.0, 2.0, 2.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0 }; int32_T c3_i79; int32_T c3_i80; static real_T c3_d_Kr[60] = { -0.18126924692564353, -0.018671577551657329, -0.32967995397095429, -0.069478267418748366, -0.45118836391499728, -0.14501667000509094, -0.55067103589379174, -0.23863046066526389, -0.6321205588412, -0.34454251473540026, -0.0, -0.19879234322843986, -0.0, -0.39123188951446553, -0.0, -0.573089746155531, -0.0, -0.74187890047177918, -0.0, -0.89636167648567255, -0.0, -0.0037930220744868356, -0.0, -0.0286066973859312, -0.0, -0.090540727786153713, -0.0, -0.20029783672802043, -0.0, -0.36350399542963946, -0.0, -0.0, -0.18126924692564353, -0.018671577551657329, -0.32967995397095429, -0.069478267418748366, -0.45118836391499728, -0.14501667000509094, -0.55067103589379174, -0.23863046066526389, -0.0, -0.0, -0.0, -0.19879234322843986, -0.0, -0.39123188951446553, -0.0, -0.573089746155531, -0.0, -0.74187890047177918, -0.0, -0.0, -0.0, -0.0037930220744868356, -0.0, -0.0286066973859312, -0.0, -0.090540727786153713, -0.0, -0.20029783672802043 }; int32_T c3_i81; int32_T c3_i82; static real_T c3_d_Ku1[18] = { 1.2497930755942788, 0.59987105700346466, 0.18822802607050804, 0.59987105700346466, 1.8748612022853453, 0.53826162835208624, 0.188228026070508, 0.53826162835208635, 0.18128473163107026, 0.93325195233225344, 0.36860620668000732, 0.12261439624071246, 0.46291238552612662, 1.3921398940378122, 0.42557379326757072, 0.095028876539678384, 0.2645877164403112, 0.09364275287343965 }; int32_T c3_i83; static real_T c3_d_Kx[66] = { 1.4950071410106682, 0.65738773217961954, 1.0328079237488559, 0.567234842535362, 1.6113851449398879, 0.60348869766750224, 1.5114962368787421, 2.1449291595465869, 0.28066769832603405, 0.65398250774849676, 0.81633949037616071, 1.2749901453193779, 2.3252208946601427, 3.7278479094264276, 1.6924216567122496, 5.0863219785039542, 0.0, 0.0, 0.0, 0.8240126387275275, 2.0299698690078887, 2.8013545558558883, 0.35003360229234354, 0.53952675278459827, 0.83522293045637619, 0.52699933031000479, 1.4335001534251903, 0.0, 0.0, 0.0, 0.26450903270165821, 0.5902679848530179, 0.68674227940423171, 0.94816285509076892, 0.37139389963332908, 0.57498774460151314, 0.35923583049728058, 0.98320422379931072, 0.49355972586851837, 1.1819373981786196, 1.5128086007053869, 0.17972037907376839, 0.40379938814124861, 0.47179697564076051, 0.92922750853952851, 1.5394509413528972, 2.4178458647026169, 1.3029118393594785, 3.7508458888458702, 0.0, 0.0, 0.0, 0.64065329657653858, 1.5146067683962592, 1.9049928793702156, 0.16955883990592463, 0.24927859671174421, 0.38188885150887275, 0.26533887117500837, 0.70012039644749491, 0.0, 0.0, 0.0, 0.134574598551006, 0.29141164621829685, 0.3232382839745922 }; int32_T c3_i84; static real_T c3_d_Hinv[49] = { 13.54779407711173, -1.4461662344138535, 1.2081816624480111, -16.555785626563523, -0.13574159670048874, 0.90749441779680484, 0.0, -1.4461662344138535, 11.644201078515971, 2.7193942828191497, 1.800664878672841, -16.733449917983865, 4.1106661648821863, 0.0, 1.2081816624480111, 2.7193942828191497, 56.429606000085734, -1.8658009865707206, -19.671512706492557, -30.806729322066776, 0.0, -16.555785626563523, 1.800664878672841, -1.8658009865707206, 21.746886461221475, -0.079793111758778262, -1.3731998744967511, 0.0, -0.13574159670048874, -16.733449917983865, -19.671512706492557, -0.079793111758778262, 31.940386532817474, -8.4130724948097537, 0.0, 0.90749441779680484, 4.1106661648821863, -30.806729322066776, -1.3731998744967511, -8.4130724948097537, 77.509302426632573, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.9999999999999974E-6 }; int32_T c3_i85; static char_T c3_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c3_i86; int32_T c3_i87; int32_T c3_i88; int32_T c3_i89; real_T c3_b_u[10]; const mxArray *c3_y = NULL; int32_T c3_i90; real_T c3_c_u[6]; const mxArray *c3_b_y = NULL; int32_T c3_i91; real_T c3_d_u[3]; const mxArray *c3_c_y = NULL; int32_T c3_i92; real_T c3_e_u[3]; const mxArray *c3_d_y = NULL; int32_T c3_i93; real_T c3_f_u[2]; const mxArray *c3_e_y = NULL; int32_T c3_i94; real_T c3_g_u[2]; const mxArray *c3_f_y = NULL; real_T c3_h_u; const mxArray *c3_g_y = NULL; int32_T c3_i95; real_T c3_i_u[11]; const mxArray *c3_h_y = NULL; int32_T c3_i96; real_T c3_j_u[3]; const mxArray *c3_i_y = NULL; int32_T c3_i97; boolean_T c3_k_u[25]; const mxArray *c3_j_y = NULL; boolean_T c3_l_u; const mxArray *c3_k_y = NULL; real_T c3_m_u; const mxArray *c3_l_y = NULL; real_T c3_n_u; const mxArray *c3_m_y = NULL; real_T c3_o_u; const mxArray *c3_n_y = NULL; int32_T c3_i98; real_T c3_p_u[49]; const mxArray *c3_o_y = NULL; int32_T c3_i99; real_T c3_q_u[66]; const mxArray *c3_p_y = NULL; int32_T c3_i100; real_T c3_r_u[18]; const mxArray *c3_q_y = NULL; int32_T c3_i101; real_T c3_s_u[90]; const mxArray *c3_r_y = NULL; int32_T c3_i102; real_T c3_t_u[60]; const mxArray *c3_s_y = NULL; int32_T c3_i103; real_T c3_u_u[36]; const mxArray *c3_t_y = NULL; int32_T c3_i104; real_T c3_v_u[18]; const mxArray *c3_u_y = NULL; int32_T c3_i105; real_T c3_w_u[198]; const mxArray *c3_v_y = NULL; int32_T c3_i106; real_T c3_x_u[54]; const mxArray *c3_w_y = NULL; int32_T c3_i107; real_T c3_y_u[108]; const mxArray *c3_x_y = NULL; int32_T c3_i108; real_T c3_ab_u[7]; const mxArray *c3_y_y = NULL; int32_T c3_i109; real_T c3_bb_u[15]; const mxArray *c3_ab_y = NULL; real_T c3_cb_u; const mxArray *c3_bb_y = NULL; int32_T c3_i110; real_T c3_db_u[3]; const mxArray *c3_cb_y = NULL; int32_T c3_i111; real_T c3_eb_u[2]; const mxArray *c3_db_y = NULL; real_T c3_fb_u; const mxArray *c3_eb_y = NULL; real_T c3_gb_u; const mxArray *c3_fb_y = NULL; boolean_T c3_hb_u; const mxArray *c3_gb_y = NULL; real_T c3_ib_u; const mxArray *c3_hb_y = NULL; real_T c3_jb_u; const mxArray *c3_ib_y = NULL; real_T c3_kb_u; const mxArray *c3_jb_y = NULL; real_T c3_lb_u; const mxArray *c3_kb_y = NULL; real_T c3_mb_u; const mxArray *c3_lb_y = NULL; real_T c3_nb_u; const mxArray *c3_mb_y = NULL; real_T c3_ob_u; const mxArray *c3_nb_y = NULL; real_T c3_pb_u; const mxArray *c3_ob_y = NULL; real_T c3_qb_u; const mxArray *c3_pb_y = NULL; int32_T c3_i112; real_T c3_rb_u[49]; const mxArray *c3_qb_y = NULL; real_T c3_sb_u; const mxArray *c3_rb_y = NULL; int32_T c3_i113; real_T c3_tb_u[5]; const mxArray *c3_sb_y = NULL; int32_T c3_i114; real_T c3_ub_u[49]; const mxArray *c3_tb_y = NULL; int32_T c3_i115; real_T c3_vb_u[126]; const mxArray *c3_ub_y = NULL; int32_T c3_i116; real_T c3_wb_u[2]; const mxArray *c3_vb_y = NULL; int32_T c3_i117; real_T c3_xb_u[3]; const mxArray *c3_wb_y = NULL; real_T c3_yb_u; const mxArray *c3_xb_y = NULL; real_T c3_ac_u; const mxArray *c3_yb_y = NULL; real_T c3_bc_u; const mxArray *c3_ac_y = NULL; real_T c3_cc_u; const mxArray *c3_bc_y = NULL; real_T c3_dc_u; const mxArray *c3_cc_y = NULL; real_T c3_ec_u; const mxArray *c3_dc_y = NULL; real_T c3_fc_u; const mxArray *c3_ec_y = NULL; real_T c3_gc_u; const mxArray *c3_fc_y = NULL; real_T c3_hc_u; const mxArray *c3_gc_y = NULL; real_T c3_ic_u; const mxArray *c3_hc_y = NULL; real_T c3_jc_u; const mxArray *c3_ic_y = NULL; real_T c3_kc_u; const mxArray *c3_jc_y = NULL; real_T c3_lc_u; const mxArray *c3_kc_y = NULL; real_T c3_mc_u; const mxArray *c3_lc_y = NULL; real_T c3_nc_u; const mxArray *c3_mc_y = NULL; const mxArray *c3_b_iAout = NULL; const mxArray *c3_b_status = NULL; const mxArray *c3_b_useq = NULL; const mxArray *c3_b_cost = NULL; const mxArray *c3_oc_u = NULL; real_T c3_dv20[3]; int32_T c3_i118; real_T c3_dv21[15]; int32_T c3_i119; boolean_T c3_bv1[25]; int32_T c3_i120; int32_T c3_i121; int32_T c3_i122; int32_T c3_i123; real_T *c3_b_switch_in; real_T *c3_b_rhoeps; real_T *c3_c_cost; real_T *c3_c_status; real_T (*c3_pc_u)[3]; real_T (*c3_c_useq)[15]; boolean_T (*c3_c_iAout)[25]; real_T (*c3_b_duwt)[3]; real_T (*c3_b_ywt)[2]; real_T (*c3_b_ymax)[2]; real_T (*c3_b_ymin)[2]; real_T (*c3_b_umax)[3]; real_T (*c3_b_umin)[3]; boolean_T (*c3_b_iA)[25]; real_T (*c3_b_old_u)[3]; real_T (*c3_b_x)[11]; real_T (*c3_b_vseq)[6]; real_T (*c3_b_rseq)[10]; c3_c_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_c_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_c_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_c_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_pc_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_b_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_b_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_b_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_b_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_b_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_b_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_b_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_b_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_b_iA = (boolean_T (*)[25])ssGetInputPortSignal(chartInstance->S, 4); c3_b_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_b_x = (real_T (*)[11])ssGetInputPortSignal(chartInstance->S, 2); c3_b_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_b_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); c3_hoistedGlobal = *c3_b_switch_in; c3_b_hoistedGlobal = *c3_b_rhoeps; for (c3_i56 = 0; c3_i56 < 10; c3_i56++) { c3_rseq[c3_i56] = (*c3_b_rseq)[c3_i56]; } for (c3_i57 = 0; c3_i57 < 6; c3_i57++) { c3_vseq[c3_i57] = (*c3_b_vseq)[c3_i57]; } for (c3_i58 = 0; c3_i58 < 11; c3_i58++) { c3_x[c3_i58] = (*c3_b_x)[c3_i58]; } for (c3_i59 = 0; c3_i59 < 3; c3_i59++) { c3_old_u[c3_i59] = (*c3_b_old_u)[c3_i59]; } for (c3_i60 = 0; c3_i60 < 25; c3_i60++) { c3_iA[c3_i60] = (*c3_b_iA)[c3_i60]; } for (c3_i61 = 0; c3_i61 < 3; c3_i61++) { c3_umin[c3_i61] = (*c3_b_umin)[c3_i61]; } for (c3_i62 = 0; c3_i62 < 3; c3_i62++) { c3_umax[c3_i62] = (*c3_b_umax)[c3_i62]; } for (c3_i63 = 0; c3_i63 < 2; c3_i63++) { c3_ymin[c3_i63] = (*c3_b_ymin)[c3_i63]; } for (c3_i64 = 0; c3_i64 < 2; c3_i64++) { c3_ymax[c3_i64] = (*c3_b_ymax)[c3_i64]; } c3_switch_in = c3_hoistedGlobal; for (c3_i65 = 0; c3_i65 < 2; c3_i65++) { c3_ywt[c3_i65] = (*c3_b_ywt)[c3_i65]; } for (c3_i66 = 0; c3_i66 < 3; c3_i66++) { c3_duwt[c3_i66] = (*c3_b_duwt)[c3_i66]; } c3_rhoeps = c3_b_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 71U, 71U, c3_debug_family_names, c3_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c3_DataType, 0U, c3_x_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_isQP, 1U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nu, 2U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_ny, 3U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_degrees, 4U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Hinv, 5U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kx, 6U, c3_w_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ku1, 7U, c3_v_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kut, 8U, c3_u_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kr, 9U, c3_t_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kv, 10U, c3_s_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mlim, 11U, c3_r_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mx, 12U, c3_q_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mu1, 13U, c3_p_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mv, 14U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_z_degrees, 15U, c3_n_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_utarget, 16U, c3_m_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_p, 17U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_uoff, 18U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_yoff, 19U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_maxiter, 20U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nxQP, 21U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_openloopflag, 22U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_lims_inport, 23U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umin, 24U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umax, 25U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymin, 26U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymax, 27U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_switch_inport, 28U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_switch, 29U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_enable_value, 30U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_cost, 31U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_H, 32U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_sequence, 33U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_blocking_moves, 34U, c3_k_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Linv, 35U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ac, 36U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ywt, 37U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_duwt, 38U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_rhoeps, 39U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wy, 40U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wdu, 41U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Jm, 42U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_SuJm, 43U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I2JmWuI2Jm, 44U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Su1, 45U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1WuI2Jm, 46U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Sx, 47U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Hv, 48U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wu, 49U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1, 50U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargin, 51U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargout, 52U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c3_rseq, 53U, c3_h_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_vseq, 54U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_x, 55U, c3_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_old_u, 56U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_iA, 57U, c3_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_umin, 58U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_umax, 59U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ymin, 60U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ymax, 61U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_switch_in, 62U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ywt, 63U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_duwt, 64U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_rhoeps, 65U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_u, 66U, c3_d_sf_marshallOut, c3_d_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_cost, 67U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_useq, 68U, c3_c_sf_marshallOut, c3_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_status, 69U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_iAout, 70U, c3_sf_marshallOut, c3_sf_marshallIn); c3_c_I1 = c3_b_I1; c3_c_Wu = c3_b_Wu; c3_c_Hv = c3_b_Hv; c3_c_Sx = c3_b_Sx; c3_c_I1WuI2Jm = c3_b_I1WuI2Jm; c3_c_Su1 = c3_b_Su1; c3_c_I2JmWuI2Jm = c3_b_I2JmWuI2Jm; c3_c_SuJm = c3_b_SuJm; c3_c_Jm = c3_b_Jm; c3_c_Wdu = c3_b_Wdu; c3_c_Wy = c3_b_Wy; c3_c_no_rhoeps = c3_b_no_rhoeps; c3_c_no_duwt = c3_b_no_duwt; c3_c_no_ywt = c3_b_no_ywt; for (c3_i67 = 0; c3_i67 < 126; c3_i67++) { c3_c_Ac[c3_i67] = c3_d_Ac[c3_i67]; } for (c3_i68 = 0; c3_i68 < 49; c3_i68++) { c3_c_Linv[c3_i68] = c3_d_Linv[c3_i68]; } for (c3_i69 = 0; c3_i69 < 5; c3_i69++) { c3_c_blocking_moves[c3_i69] = c3_d_blocking_moves[c3_i69]; } c3_c_return_sequence = c3_b_return_sequence; for (c3_i70 = 0; c3_i70 < 49; c3_i70++) { c3_c_H[c3_i70] = c3_d_H[c3_i70]; } c3_c_return_cost = c3_b_return_cost; c3_c_enable_value = c3_b_enable_value; c3_c_no_switch = c3_b_no_switch; c3_c_switch_inport = c3_b_switch_inport; c3_c_no_ymax = c3_b_no_ymax; c3_c_no_ymin = c3_b_no_ymin; c3_c_no_umax = c3_b_no_umax; c3_c_no_umin = c3_b_no_umin; c3_c_lims_inport = c3_b_lims_inport; c3_c_openloopflag = c3_b_openloopflag; c3_c_nxQP = c3_b_nxQP; c3_c_maxiter = c3_b_maxiter; for (c3_i71 = 0; c3_i71 < 2; c3_i71++) { c3_c_yoff[c3_i71] = 0.0; } for (c3_i72 = 0; c3_i72 < 3; c3_i72++) { c3_c_uoff[c3_i72] = 0.0; } c3_c_p = c3_b_p; for (c3_i73 = 0; c3_i73 < 15; c3_i73++) { c3_c_utarget[c3_i73] = 0.0; } for (c3_i74 = 0; c3_i74 < 7; c3_i74++) { c3_c_z_degrees[c3_i74] = 0.0; } for (c3_i75 = 0; c3_i75 < 108; c3_i75++) { c3_c_Mv[c3_i75] = 0.0; } for (c3_i76 = 0; c3_i76 < 54; c3_i76++) { c3_c_Mu1[c3_i76] = c3_d_Mu1[c3_i76]; } for (c3_i77 = 0; c3_i77 < 198; c3_i77++) { c3_c_Mx[c3_i77] = 0.0; } for (c3_i78 = 0; c3_i78 < 18; c3_i78++) { c3_c_Mlim[c3_i78] = c3_d_Mlim[c3_i78]; } for (c3_i79 = 0; c3_i79 < 36; c3_i79++) { c3_c_Kv[c3_i79] = 0.0; } for (c3_i80 = 0; c3_i80 < 60; c3_i80++) { c3_c_Kr[c3_i80] = c3_d_Kr[c3_i80]; } for (c3_i81 = 0; c3_i81 < 90; c3_i81++) { c3_c_Kut[c3_i81] = 0.0; } for (c3_i82 = 0; c3_i82 < 18; c3_i82++) { c3_c_Ku1[c3_i82] = c3_d_Ku1[c3_i82]; } for (c3_i83 = 0; c3_i83 < 66; c3_i83++) { c3_c_Kx[c3_i83] = c3_d_Kx[c3_i83]; } for (c3_i84 = 0; c3_i84 < 49; c3_i84++) { c3_c_Hinv[c3_i84] = c3_d_Hinv[c3_i84]; } c3_c_degrees = c3_b_degrees; c3_c_ny = c3_b_ny; c3_c_nu = c3_b_nu; c3_c_isQP = c3_b_isQP; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 8); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 9); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 10); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 12); for (c3_i85 = 0; c3_i85 < 6; c3_i85++) { c3_DataType[c3_i85] = c3_cv0[c3_i85]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 13); for (c3_i86 = 0; c3_i86 < 3; c3_i86++) { c3_u[c3_i86] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 14); c3_cost = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 15); for (c3_i87 = 0; c3_i87 < 15; c3_i87++) { c3_useq[c3_i87] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 16); c3_status = 1.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 17); for (c3_i88 = 0; c3_i88 < 25; c3_i88++) { c3_iAout[c3_i88] = FALSE; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 18); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 19); for (c3_i89 = 0; c3_i89 < 10; c3_i89++) { c3_b_u[c3_i89] = c3_rseq[c3_i89]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_b_u, 0, 0U, 1U, 0U, 1, 10), FALSE); for (c3_i90 = 0; c3_i90 < 6; c3_i90++) { c3_c_u[c3_i90] = c3_vseq[c3_i90]; } c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", c3_c_u, 0, 0U, 1U, 0U, 1, 6), FALSE); for (c3_i91 = 0; c3_i91 < 3; c3_i91++) { c3_d_u[c3_i91] = c3_umin[c3_i91]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_d_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i92 = 0; c3_i92 < 3; c3_i92++) { c3_e_u[c3_i92] = c3_umax[c3_i92]; } c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i93 = 0; c3_i93 < 2; c3_i93++) { c3_f_u[c3_i93] = c3_ymin[c3_i93]; } c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", c3_f_u, 0, 0U, 1U, 0U, 1, 2), FALSE); for (c3_i94 = 0; c3_i94 < 2; c3_i94++) { c3_g_u[c3_i94] = c3_ymax[c3_i94]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_g_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c3_h_u = c3_switch_in; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_h_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i95 = 0; c3_i95 < 11; c3_i95++) { c3_i_u[c3_i95] = c3_x[c3_i95]; } c3_h_y = NULL; sf_mex_assign(&c3_h_y, sf_mex_create("y", c3_i_u, 0, 0U, 1U, 0U, 1, 11), FALSE); for (c3_i96 = 0; c3_i96 < 3; c3_i96++) { c3_j_u[c3_i96] = c3_old_u[c3_i96]; } c3_i_y = NULL; sf_mex_assign(&c3_i_y, sf_mex_create("y", c3_j_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i97 = 0; c3_i97 < 25; c3_i97++) { c3_k_u[c3_i97] = c3_iA[c3_i97]; } c3_j_y = NULL; sf_mex_assign(&c3_j_y, sf_mex_create("y", c3_k_u, 11, 0U, 1U, 0U, 1, 25), FALSE); c3_l_u = c3_b_isQP; c3_k_y = NULL; sf_mex_assign(&c3_k_y, sf_mex_create("y", &c3_l_u, 11, 0U, 0U, 0U, 0), FALSE); c3_m_u = c3_b_nu; c3_l_y = NULL; sf_mex_assign(&c3_l_y, sf_mex_create("y", &c3_m_u, 0, 0U, 0U, 0U, 0), FALSE); c3_n_u = c3_b_ny; c3_m_y = NULL; sf_mex_assign(&c3_m_y, sf_mex_create("y", &c3_n_u, 0, 0U, 0U, 0U, 0), FALSE); c3_o_u = c3_b_degrees; c3_n_y = NULL; sf_mex_assign(&c3_n_y, sf_mex_create("y", &c3_o_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i98 = 0; c3_i98 < 49; c3_i98++) { c3_p_u[c3_i98] = c3_d_Hinv[c3_i98]; } c3_o_y = NULL; sf_mex_assign(&c3_o_y, sf_mex_create("y", c3_p_u, 0, 0U, 1U, 0U, 2, 7, 7), FALSE); for (c3_i99 = 0; c3_i99 < 66; c3_i99++) { c3_q_u[c3_i99] = c3_d_Kx[c3_i99]; } c3_p_y = NULL; sf_mex_assign(&c3_p_y, sf_mex_create("y", c3_q_u, 0, 0U, 1U, 0U, 2, 11, 6), FALSE); for (c3_i100 = 0; c3_i100 < 18; c3_i100++) { c3_r_u[c3_i100] = c3_d_Ku1[c3_i100]; } c3_q_y = NULL; sf_mex_assign(&c3_q_y, sf_mex_create("y", c3_r_u, 0, 0U, 1U, 0U, 2, 3, 6), FALSE); for (c3_i101 = 0; c3_i101 < 90; c3_i101++) { c3_s_u[c3_i101] = 0.0; } c3_r_y = NULL; sf_mex_assign(&c3_r_y, sf_mex_create("y", c3_s_u, 0, 0U, 1U, 0U, 2, 15, 6), FALSE); for (c3_i102 = 0; c3_i102 < 60; c3_i102++) { c3_t_u[c3_i102] = c3_d_Kr[c3_i102]; } c3_s_y = NULL; sf_mex_assign(&c3_s_y, sf_mex_create("y", c3_t_u, 0, 0U, 1U, 0U, 2, 10, 6), FALSE); for (c3_i103 = 0; c3_i103 < 36; c3_i103++) { c3_u_u[c3_i103] = 0.0; } c3_t_y = NULL; sf_mex_assign(&c3_t_y, sf_mex_create("y", c3_u_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); for (c3_i104 = 0; c3_i104 < 18; c3_i104++) { c3_v_u[c3_i104] = c3_d_Mlim[c3_i104]; } c3_u_y = NULL; sf_mex_assign(&c3_u_y, sf_mex_create("y", c3_v_u, 0, 0U, 1U, 0U, 1, 18), FALSE); for (c3_i105 = 0; c3_i105 < 198; c3_i105++) { c3_w_u[c3_i105] = 0.0; } c3_v_y = NULL; sf_mex_assign(&c3_v_y, sf_mex_create("y", c3_w_u, 0, 0U, 1U, 0U, 2, 18, 11), FALSE); for (c3_i106 = 0; c3_i106 < 54; c3_i106++) { c3_x_u[c3_i106] = c3_d_Mu1[c3_i106]; } c3_w_y = NULL; sf_mex_assign(&c3_w_y, sf_mex_create("y", c3_x_u, 0, 0U, 1U, 0U, 2, 18, 3), FALSE); for (c3_i107 = 0; c3_i107 < 108; c3_i107++) { c3_y_u[c3_i107] = 0.0; } c3_x_y = NULL; sf_mex_assign(&c3_x_y, sf_mex_create("y", c3_y_u, 0, 0U, 1U, 0U, 2, 18, 6), FALSE); for (c3_i108 = 0; c3_i108 < 7; c3_i108++) { c3_ab_u[c3_i108] = 0.0; } c3_y_y = NULL; sf_mex_assign(&c3_y_y, sf_mex_create("y", c3_ab_u, 0, 0U, 1U, 0U, 1, 7), FALSE); for (c3_i109 = 0; c3_i109 < 15; c3_i109++) { c3_bb_u[c3_i109] = 0.0; } c3_ab_y = NULL; sf_mex_assign(&c3_ab_y, sf_mex_create("y", c3_bb_u, 0, 0U, 1U, 0U, 1, 15), FALSE); c3_cb_u = c3_b_p; c3_bb_y = NULL; sf_mex_assign(&c3_bb_y, sf_mex_create("y", &c3_cb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i110 = 0; c3_i110 < 3; c3_i110++) { c3_db_u[c3_i110] = 0.0; } c3_cb_y = NULL; sf_mex_assign(&c3_cb_y, sf_mex_create("y", c3_db_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i111 = 0; c3_i111 < 2; c3_i111++) { c3_eb_u[c3_i111] = 0.0; } c3_db_y = NULL; sf_mex_assign(&c3_db_y, sf_mex_create("y", c3_eb_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c3_fb_u = c3_b_maxiter; c3_eb_y = NULL; sf_mex_assign(&c3_eb_y, sf_mex_create("y", &c3_fb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gb_u = c3_b_nxQP; c3_fb_y = NULL; sf_mex_assign(&c3_fb_y, sf_mex_create("y", &c3_gb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hb_u = c3_b_openloopflag; c3_gb_y = NULL; sf_mex_assign(&c3_gb_y, sf_mex_create("y", &c3_hb_u, 11, 0U, 0U, 0U, 0), FALSE); c3_ib_u = c3_b_lims_inport; c3_hb_y = NULL; sf_mex_assign(&c3_hb_y, sf_mex_create("y", &c3_ib_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jb_u = c3_b_no_umin; c3_ib_y = NULL; sf_mex_assign(&c3_ib_y, sf_mex_create("y", &c3_jb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kb_u = c3_b_no_umax; c3_jb_y = NULL; sf_mex_assign(&c3_jb_y, sf_mex_create("y", &c3_kb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lb_u = c3_b_no_ymin; c3_kb_y = NULL; sf_mex_assign(&c3_kb_y, sf_mex_create("y", &c3_lb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mb_u = c3_b_no_ymax; c3_lb_y = NULL; sf_mex_assign(&c3_lb_y, sf_mex_create("y", &c3_mb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nb_u = c3_b_switch_inport; c3_mb_y = NULL; sf_mex_assign(&c3_mb_y, sf_mex_create("y", &c3_nb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ob_u = c3_b_no_switch; c3_nb_y = NULL; sf_mex_assign(&c3_nb_y, sf_mex_create("y", &c3_ob_u, 0, 0U, 0U, 0U, 0), FALSE); c3_pb_u = c3_b_enable_value; c3_ob_y = NULL; sf_mex_assign(&c3_ob_y, sf_mex_create("y", &c3_pb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_qb_u = c3_b_return_cost; c3_pb_y = NULL; sf_mex_assign(&c3_pb_y, sf_mex_create("y", &c3_qb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i112 = 0; c3_i112 < 49; c3_i112++) { c3_rb_u[c3_i112] = c3_d_H[c3_i112]; } c3_qb_y = NULL; sf_mex_assign(&c3_qb_y, sf_mex_create("y", c3_rb_u, 0, 0U, 1U, 0U, 2, 7, 7), FALSE); c3_sb_u = c3_b_return_sequence; c3_rb_y = NULL; sf_mex_assign(&c3_rb_y, sf_mex_create("y", &c3_sb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i113 = 0; c3_i113 < 5; c3_i113++) { c3_tb_u[c3_i113] = c3_d_blocking_moves[c3_i113]; } c3_sb_y = NULL; sf_mex_assign(&c3_sb_y, sf_mex_create("y", c3_tb_u, 0, 0U, 1U, 0U, 2, 1, 5), FALSE); for (c3_i114 = 0; c3_i114 < 49; c3_i114++) { c3_ub_u[c3_i114] = c3_d_Linv[c3_i114]; } c3_tb_y = NULL; sf_mex_assign(&c3_tb_y, sf_mex_create("y", c3_ub_u, 0, 0U, 1U, 0U, 2, 7, 7), FALSE); for (c3_i115 = 0; c3_i115 < 126; c3_i115++) { c3_vb_u[c3_i115] = c3_d_Ac[c3_i115]; } c3_ub_y = NULL; sf_mex_assign(&c3_ub_y, sf_mex_create("y", c3_vb_u, 0, 0U, 1U, 0U, 2, 18, 7), FALSE); for (c3_i116 = 0; c3_i116 < 2; c3_i116++) { c3_wb_u[c3_i116] = c3_ywt[c3_i116]; } c3_vb_y = NULL; sf_mex_assign(&c3_vb_y, sf_mex_create("y", c3_wb_u, 0, 0U, 1U, 0U, 1, 2), FALSE); for (c3_i117 = 0; c3_i117 < 3; c3_i117++) { c3_xb_u[c3_i117] = c3_duwt[c3_i117]; } c3_wb_y = NULL; sf_mex_assign(&c3_wb_y, sf_mex_create("y", c3_xb_u, 0, 0U, 1U, 0U, 1, 3), FALSE); c3_yb_u = c3_rhoeps; c3_xb_y = NULL; sf_mex_assign(&c3_xb_y, sf_mex_create("y", &c3_yb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ac_u = c3_b_no_ywt; c3_yb_y = NULL; sf_mex_assign(&c3_yb_y, sf_mex_create("y", &c3_ac_u, 0, 0U, 0U, 0U, 0), FALSE); c3_bc_u = c3_b_no_duwt; c3_ac_y = NULL; sf_mex_assign(&c3_ac_y, sf_mex_create("y", &c3_bc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_cc_u = c3_b_no_rhoeps; c3_bc_y = NULL; sf_mex_assign(&c3_bc_y, sf_mex_create("y", &c3_cc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_dc_u = c3_b_Wy; c3_cc_y = NULL; sf_mex_assign(&c3_cc_y, sf_mex_create("y", &c3_dc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ec_u = c3_b_Wdu; c3_dc_y = NULL; sf_mex_assign(&c3_dc_y, sf_mex_create("y", &c3_ec_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fc_u = c3_b_Jm; c3_ec_y = NULL; sf_mex_assign(&c3_ec_y, sf_mex_create("y", &c3_fc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gc_u = c3_b_SuJm; c3_fc_y = NULL; sf_mex_assign(&c3_fc_y, sf_mex_create("y", &c3_gc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hc_u = c3_b_I2JmWuI2Jm; c3_gc_y = NULL; sf_mex_assign(&c3_gc_y, sf_mex_create("y", &c3_hc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ic_u = c3_b_Su1; c3_hc_y = NULL; sf_mex_assign(&c3_hc_y, sf_mex_create("y", &c3_ic_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jc_u = c3_b_I1WuI2Jm; c3_ic_y = NULL; sf_mex_assign(&c3_ic_y, sf_mex_create("y", &c3_jc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kc_u = c3_b_Sx; c3_jc_y = NULL; sf_mex_assign(&c3_jc_y, sf_mex_create("y", &c3_kc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lc_u = c3_b_Hv; c3_kc_y = NULL; sf_mex_assign(&c3_kc_y, sf_mex_create("y", &c3_lc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mc_u = c3_b_Wu; c3_lc_y = NULL; sf_mex_assign(&c3_lc_y, sf_mex_create("y", &c3_mc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nc_u = c3_b_I1; c3_mc_y = NULL; sf_mex_assign(&c3_mc_y, sf_mex_create("y", &c3_nc_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_optimizer_double_mex", 5U, 63U, 14, c3_y, 14, c3_b_y, 14, c3_c_y, 14, c3_d_y, 14, c3_e_y, 14, c3_f_y, 14, c3_g_y, 14, c3_h_y, 14, c3_i_y, 14, c3_j_y, 14, c3_k_y, 14, c3_l_y, 14, c3_m_y, 14, c3_n_y, 14, c3_o_y, 14, c3_p_y, 14, c3_q_y, 14, c3_r_y, 14, c3_s_y, 14, c3_t_y, 14, c3_u_y, 14, c3_v_y, 14, c3_w_y, 14, c3_x_y, 14, c3_y_y, 14, c3_ab_y, 14, c3_bb_y, 14, c3_cb_y, 14, c3_db_y, 14, c3_eb_y, 14, c3_fb_y, 14, c3_gb_y, 14, c3_hb_y, 14, c3_ib_y, 14, c3_jb_y, 14, c3_kb_y, 14, c3_lb_y, 14, c3_mb_y, 14, c3_nb_y, 14, c3_ob_y, 14, c3_pb_y, 14, c3_qb_y, 14, c3_rb_y, 14, c3_sb_y, 14, c3_tb_y, 14, c3_ub_y, 14, c3_vb_y, 14, c3_wb_y, 14, c3_xb_y, 14, c3_yb_y, 14, c3_ac_y, 14, c3_bc_y, 14, c3_cc_y, 14, c3_dc_y, 14, c3_ec_y, 14, c3_fc_y, 14, c3_gc_y, 14, c3_hc_y, 14, c3_ic_y, 14, c3_jc_y, 14, c3_kc_y, 14, c3_lc_y, 14, c3_mc_y, &c3_oc_u, &c3_b_cost, &c3_b_useq, &c3_b_status, &c3_b_iAout); c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_oc_u), "u", c3_dv20); for (c3_i118 = 0; c3_i118 < 3; c3_i118++) { c3_u[c3_i118] = c3_dv20[c3_i118]; } c3_cost = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_cost), "cost"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_useq), "useq", c3_dv21); for (c3_i119 = 0; c3_i119 < 15; c3_i119++) { c3_useq[c3_i119] = c3_dv21[c3_i119]; } c3_status = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_status), "status"); c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_iAout), "iAout", c3_bv1); for (c3_i120 = 0; c3_i120 < 25; c3_i120++) { c3_iAout[c3_i120] = c3_bv1[c3_i120]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, -31); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c3_oc_u); sf_mex_destroy(&c3_b_cost); sf_mex_destroy(&c3_b_useq); sf_mex_destroy(&c3_b_status); sf_mex_destroy(&c3_b_iAout); for (c3_i121 = 0; c3_i121 < 3; c3_i121++) { (*c3_pc_u)[c3_i121] = c3_u[c3_i121]; } *c3_c_cost = c3_cost; for (c3_i122 = 0; c3_i122 < 15; c3_i122++) { (*c3_c_useq)[c3_i122] = c3_useq[c3_i122]; } *c3_c_status = c3_status; for (c3_i123 = 0; c3_i123 < 25; c3_i123++) { (*c3_c_iAout)[c3_i123] = c3_iAout[c3_i123]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); } static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber) { } static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i124; boolean_T c3_b_inData[25]; int32_T c3_i125; boolean_T c3_u[25]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i124 = 0; c3_i124 < 25; c3_i124++) { c3_b_inData[c3_i124] = (*(boolean_T (*)[25])c3_inData)[c3_i124]; } for (c3_i125 = 0; c3_i125 < 25; c3_i125++) { c3_u[c3_i125] = c3_b_inData[c3_i125]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 11, 0U, 1U, 0U, 1, 25), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_iAout; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y[25]; int32_T c3_i126; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_iAout = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); for (c3_i126 = 0; c3_i126 < 25; c3_i126++) { (*(boolean_T (*)[25])c3_outData)[c3_i126] = c3_y[c3_i126]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; real_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(real_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_cost; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_cost = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_cost), &c3_thisId); sf_mex_destroy(&c3_cost); *(real_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i127; int32_T c3_i128; int32_T c3_i129; real_T c3_b_inData[15]; int32_T c3_i130; int32_T c3_i131; int32_T c3_i132; real_T c3_u[15]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i127 = 0; for (c3_i128 = 0; c3_i128 < 3; c3_i128++) { for (c3_i129 = 0; c3_i129 < 5; c3_i129++) { c3_b_inData[c3_i129 + c3_i127] = (*(real_T (*)[15])c3_inData)[c3_i129 + c3_i127]; } c3_i127 += 5; } c3_i130 = 0; for (c3_i131 = 0; c3_i131 < 3; c3_i131++) { for (c3_i132 = 0; c3_i132 < 5; c3_i132++) { c3_u[c3_i132 + c3_i130] = c3_b_inData[c3_i132 + c3_i130]; } c3_i130 += 5; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 5, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_useq; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[15]; int32_T c3_i133; int32_T c3_i134; int32_T c3_i135; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_useq = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); c3_i133 = 0; for (c3_i134 = 0; c3_i134 < 3; c3_i134++) { for (c3_i135 = 0; c3_i135 < 5; c3_i135++) { (*(real_T (*)[15])c3_outData)[c3_i135 + c3_i133] = c3_y[c3_i135 + c3_i133]; } c3_i133 += 5; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i136; real_T c3_b_inData[3]; int32_T c3_i137; real_T c3_u[3]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i136 = 0; c3_i136 < 3; c3_i136++) { c3_b_inData[c3_i136] = (*(real_T (*)[3])c3_inData)[c3_i136]; } for (c3_i137 = 0; c3_i137 < 3; c3_i137++) { c3_u[c3_i137] = c3_b_inData[c3_i137]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_u; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[3]; int32_T c3_i138; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_u = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId, c3_y); sf_mex_destroy(&c3_u); for (c3_i138 = 0; c3_i138 < 3; c3_i138++) { (*(real_T (*)[3])c3_outData)[c3_i138] = c3_y[c3_i138]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i139; real_T c3_b_inData[2]; int32_T c3_i140; real_T c3_u[2]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i139 = 0; c3_i139 < 2; c3_i139++) { c3_b_inData[c3_i139] = (*(real_T (*)[2])c3_inData)[c3_i139]; } for (c3_i140 = 0; c3_i140 < 2; c3_i140++) { c3_u[c3_i140] = c3_b_inData[c3_i140]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i141; real_T c3_b_inData[11]; int32_T c3_i142; real_T c3_u[11]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i141 = 0; c3_i141 < 11; c3_i141++) { c3_b_inData[c3_i141] = (*(real_T (*)[11])c3_inData)[c3_i141]; } for (c3_i142 = 0; c3_i142 < 11; c3_i142++) { c3_u[c3_i142] = c3_b_inData[c3_i142]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 11), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i143; real_T c3_b_inData[6]; int32_T c3_i144; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i143 = 0; c3_i143 < 6; c3_i143++) { c3_b_inData[c3_i143] = (*(real_T (*)[6])c3_inData)[c3_i143]; } for (c3_i144 = 0; c3_i144 < 6; c3_i144++) { c3_u[c3_i144] = c3_b_inData[c3_i144]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i145; real_T c3_b_inData[10]; int32_T c3_i146; real_T c3_u[10]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i145 = 0; c3_i145 < 10; c3_i145++) { c3_b_inData[c3_i145] = (*(real_T (*)[10])c3_inData)[c3_i145]; } for (c3_i146 = 0; c3_i146 < 10; c3_i146++) { c3_u[c3_i146] = c3_b_inData[c3_i146]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i147; int32_T c3_i148; int32_T c3_i149; real_T c3_b_inData[126]; int32_T c3_i150; int32_T c3_i151; int32_T c3_i152; real_T c3_u[126]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i147 = 0; for (c3_i148 = 0; c3_i148 < 7; c3_i148++) { for (c3_i149 = 0; c3_i149 < 18; c3_i149++) { c3_b_inData[c3_i149 + c3_i147] = (*(real_T (*)[126])c3_inData)[c3_i149 + c3_i147]; } c3_i147 += 18; } c3_i150 = 0; for (c3_i151 = 0; c3_i151 < 7; c3_i151++) { for (c3_i152 = 0; c3_i152 < 18; c3_i152++) { c3_u[c3_i152 + c3_i150] = c3_b_inData[c3_i152 + c3_i150]; } c3_i150 += 18; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 18, 7), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i153; int32_T c3_i154; int32_T c3_i155; real_T c3_b_inData[49]; int32_T c3_i156; int32_T c3_i157; int32_T c3_i158; real_T c3_u[49]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i153 = 0; for (c3_i154 = 0; c3_i154 < 7; c3_i154++) { for (c3_i155 = 0; c3_i155 < 7; c3_i155++) { c3_b_inData[c3_i155 + c3_i153] = (*(real_T (*)[49])c3_inData)[c3_i155 + c3_i153]; } c3_i153 += 7; } c3_i156 = 0; for (c3_i157 = 0; c3_i157 < 7; c3_i157++) { for (c3_i158 = 0; c3_i158 < 7; c3_i158++) { c3_u[c3_i158 + c3_i156] = c3_b_inData[c3_i158 + c3_i156]; } c3_i156 += 7; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 7, 7), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i159; real_T c3_b_inData[5]; int32_T c3_i160; real_T c3_u[5]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i159 = 0; c3_i159 < 5; c3_i159++) { c3_b_inData[c3_i159] = (*(real_T (*)[5])c3_inData)[c3_i159]; } for (c3_i160 = 0; c3_i160 < 5; c3_i160++) { c3_u[c3_i160] = c3_b_inData[c3_i160]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 5), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; boolean_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(boolean_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i161; real_T c3_b_inData[15]; int32_T c3_i162; real_T c3_u[15]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i161 = 0; c3_i161 < 15; c3_i161++) { c3_b_inData[c3_i161] = (*(real_T (*)[15])c3_inData)[c3_i161]; } for (c3_i162 = 0; c3_i162 < 15; c3_i162++) { c3_u[c3_i162] = c3_b_inData[c3_i162]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 15), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i163; real_T c3_b_inData[7]; int32_T c3_i164; real_T c3_u[7]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i163 = 0; c3_i163 < 7; c3_i163++) { c3_b_inData[c3_i163] = (*(real_T (*)[7])c3_inData)[c3_i163]; } for (c3_i164 = 0; c3_i164 < 7; c3_i164++) { c3_u[c3_i164] = c3_b_inData[c3_i164]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 7), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i165; int32_T c3_i166; int32_T c3_i167; real_T c3_b_inData[108]; int32_T c3_i168; int32_T c3_i169; int32_T c3_i170; real_T c3_u[108]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i165 = 0; for (c3_i166 = 0; c3_i166 < 6; c3_i166++) { for (c3_i167 = 0; c3_i167 < 18; c3_i167++) { c3_b_inData[c3_i167 + c3_i165] = (*(real_T (*)[108])c3_inData)[c3_i167 + c3_i165]; } c3_i165 += 18; } c3_i168 = 0; for (c3_i169 = 0; c3_i169 < 6; c3_i169++) { for (c3_i170 = 0; c3_i170 < 18; c3_i170++) { c3_u[c3_i170 + c3_i168] = c3_b_inData[c3_i170 + c3_i168]; } c3_i168 += 18; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 18, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i171; int32_T c3_i172; int32_T c3_i173; real_T c3_b_inData[54]; int32_T c3_i174; int32_T c3_i175; int32_T c3_i176; real_T c3_u[54]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i171 = 0; for (c3_i172 = 0; c3_i172 < 3; c3_i172++) { for (c3_i173 = 0; c3_i173 < 18; c3_i173++) { c3_b_inData[c3_i173 + c3_i171] = (*(real_T (*)[54])c3_inData)[c3_i173 + c3_i171]; } c3_i171 += 18; } c3_i174 = 0; for (c3_i175 = 0; c3_i175 < 3; c3_i175++) { for (c3_i176 = 0; c3_i176 < 18; c3_i176++) { c3_u[c3_i176 + c3_i174] = c3_b_inData[c3_i176 + c3_i174]; } c3_i174 += 18; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 18, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i177; int32_T c3_i178; int32_T c3_i179; real_T c3_b_inData[198]; int32_T c3_i180; int32_T c3_i181; int32_T c3_i182; real_T c3_u[198]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i177 = 0; for (c3_i178 = 0; c3_i178 < 11; c3_i178++) { for (c3_i179 = 0; c3_i179 < 18; c3_i179++) { c3_b_inData[c3_i179 + c3_i177] = (*(real_T (*)[198])c3_inData)[c3_i179 + c3_i177]; } c3_i177 += 18; } c3_i180 = 0; for (c3_i181 = 0; c3_i181 < 11; c3_i181++) { for (c3_i182 = 0; c3_i182 < 18; c3_i182++) { c3_u[c3_i182 + c3_i180] = c3_b_inData[c3_i182 + c3_i180]; } c3_i180 += 18; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 18, 11), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i183; real_T c3_b_inData[18]; int32_T c3_i184; real_T c3_u[18]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i183 = 0; c3_i183 < 18; c3_i183++) { c3_b_inData[c3_i183] = (*(real_T (*)[18])c3_inData)[c3_i183]; } for (c3_i184 = 0; c3_i184 < 18; c3_i184++) { c3_u[c3_i184] = c3_b_inData[c3_i184]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 18), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i185; int32_T c3_i186; int32_T c3_i187; real_T c3_b_inData[36]; int32_T c3_i188; int32_T c3_i189; int32_T c3_i190; real_T c3_u[36]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i185 = 0; for (c3_i186 = 0; c3_i186 < 6; c3_i186++) { for (c3_i187 = 0; c3_i187 < 6; c3_i187++) { c3_b_inData[c3_i187 + c3_i185] = (*(real_T (*)[36])c3_inData)[c3_i187 + c3_i185]; } c3_i185 += 6; } c3_i188 = 0; for (c3_i189 = 0; c3_i189 < 6; c3_i189++) { for (c3_i190 = 0; c3_i190 < 6; c3_i190++) { c3_u[c3_i190 + c3_i188] = c3_b_inData[c3_i190 + c3_i188]; } c3_i188 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_t_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i191; int32_T c3_i192; int32_T c3_i193; real_T c3_b_inData[60]; int32_T c3_i194; int32_T c3_i195; int32_T c3_i196; real_T c3_u[60]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i191 = 0; for (c3_i192 = 0; c3_i192 < 6; c3_i192++) { for (c3_i193 = 0; c3_i193 < 10; c3_i193++) { c3_b_inData[c3_i193 + c3_i191] = (*(real_T (*)[60])c3_inData)[c3_i193 + c3_i191]; } c3_i191 += 10; } c3_i194 = 0; for (c3_i195 = 0; c3_i195 < 6; c3_i195++) { for (c3_i196 = 0; c3_i196 < 10; c3_i196++) { c3_u[c3_i196 + c3_i194] = c3_b_inData[c3_i196 + c3_i194]; } c3_i194 += 10; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 10, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_u_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i197; int32_T c3_i198; int32_T c3_i199; real_T c3_b_inData[90]; int32_T c3_i200; int32_T c3_i201; int32_T c3_i202; real_T c3_u[90]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i197 = 0; for (c3_i198 = 0; c3_i198 < 6; c3_i198++) { for (c3_i199 = 0; c3_i199 < 15; c3_i199++) { c3_b_inData[c3_i199 + c3_i197] = (*(real_T (*)[90])c3_inData)[c3_i199 + c3_i197]; } c3_i197 += 15; } c3_i200 = 0; for (c3_i201 = 0; c3_i201 < 6; c3_i201++) { for (c3_i202 = 0; c3_i202 < 15; c3_i202++) { c3_u[c3_i202 + c3_i200] = c3_b_inData[c3_i202 + c3_i200]; } c3_i200 += 15; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 15, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_v_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i203; int32_T c3_i204; int32_T c3_i205; real_T c3_b_inData[18]; int32_T c3_i206; int32_T c3_i207; int32_T c3_i208; real_T c3_u[18]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i203 = 0; for (c3_i204 = 0; c3_i204 < 6; c3_i204++) { for (c3_i205 = 0; c3_i205 < 3; c3_i205++) { c3_b_inData[c3_i205 + c3_i203] = (*(real_T (*)[18])c3_inData)[c3_i205 + c3_i203]; } c3_i203 += 3; } c3_i206 = 0; for (c3_i207 = 0; c3_i207 < 6; c3_i207++) { for (c3_i208 = 0; c3_i208 < 3; c3_i208++) { c3_u[c3_i208 + c3_i206] = c3_b_inData[c3_i208 + c3_i206]; } c3_i206 += 3; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 3, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_w_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i209; int32_T c3_i210; int32_T c3_i211; real_T c3_b_inData[66]; int32_T c3_i212; int32_T c3_i213; int32_T c3_i214; real_T c3_u[66]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i209 = 0; for (c3_i210 = 0; c3_i210 < 6; c3_i210++) { for (c3_i211 = 0; c3_i211 < 11; c3_i211++) { c3_b_inData[c3_i211 + c3_i209] = (*(real_T (*)[66])c3_inData)[c3_i211 + c3_i209]; } c3_i209 += 11; } c3_i212 = 0; for (c3_i213 = 0; c3_i213 < 6; c3_i213++) { for (c3_i214 = 0; c3_i214 < 11; c3_i214++) { c3_u[c3_i214 + c3_i212] = c3_b_inData[c3_i214 + c3_i212]; } c3_i212 += 11; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 11, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_x_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i215; char_T c3_b_inData[6]; int32_T c3_i216; char_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i215 = 0; c3_i215 < 6; c3_i215++) { c3_b_inData[c3_i215] = (*(char_T (*)[6])c3_inData)[c3_i215]; } for (c3_i216 = 0; c3_i216 < 6; c3_i216++) { c3_u[c3_i216] = c3_b_inData[c3_i216]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c3_nameCaptureInfo = NULL; c3_nameCaptureInfo = NULL; sf_mex_assign(&c3_nameCaptureInfo, sf_mex_create("nameCaptureInfo", NULL, 0, 0U, 1U, 0U, 2, 0, 1), FALSE); return c3_nameCaptureInfo; } static void c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier, real_T c3_y[3]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId, c3_y); sf_mex_destroy(&c3_u); } static void c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]) { real_T c3_dv22[3]; int32_T c3_i217; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv22, 1, 0, 0U, 1, 0U, 1, 3); for (c3_i217 = 0; c3_i217 < 3; c3_i217++) { c3_y[c3_i217] = c3_dv22[c3_i217]; } sf_mex_destroy(&c3_u); } static real_T c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_cost, const char_T *c3_identifier) { real_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_cost), &c3_thisId); sf_mex_destroy(&c3_cost); return c3_y; } static real_T c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { real_T c3_y; real_T c3_d32; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_d32, 1, 0, 0U, 0, 0U, 0); c3_y = c3_d32; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[15]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); } static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]) { real_T c3_dv23[15]; int32_T c3_i218; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv23, 1, 0, 0U, 1, 0U, 2, 5, 3); for (c3_i218 = 0; c3_i218 < 15; c3_i218++) { c3_y[c3_i218] = c3_dv23[c3_i218]; } sf_mex_destroy(&c3_u); } static void c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[25]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); } static void c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[25]) { boolean_T c3_bv2[25]; int32_T c3_i219; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_bv2, 1, 11, 0U, 1, 0U, 1, 25); for (c3_i219 = 0; c3_i219 < 25; c3_i219++) { c3_y[c3_i219] = c3_bv2[c3_i219]; } sf_mex_destroy(&c3_u); } static const mxArray *c3_y_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(int32_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static int32_T c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { int32_T c3_y; int32_T c3_i220; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_i220, 1, 6, 0U, 0, 0U, 0); c3_y = c3_i220; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_b_sfEvent; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; int32_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_b_sfEvent = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_sfEvent), &c3_thisId); sf_mex_destroy(&c3_b_sfEvent); *(int32_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static boolean_T c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { boolean_T c3_y; boolean_T c3_b0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_b0, 1, 11, 0U, 0, 0U, 0); c3_y = c3_b0; sf_mex_destroy(&c3_u); return c3_y; } static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_isQP; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_isQP = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_j_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_isQP), &c3_thisId); sf_mex_destroy(&c3_c_isQP); *(boolean_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[49]) { real_T c3_dv24[49]; int32_T c3_i221; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv24, 1, 0, 0U, 1, 0U, 2, 7, 7); for (c3_i221 = 0; c3_i221 < 49; c3_i221++) { c3_y[c3_i221] = c3_dv24[c3_i221]; } sf_mex_destroy(&c3_u); } static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Hinv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[49]; int32_T c3_i222; int32_T c3_i223; int32_T c3_i224; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Hinv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_k_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Hinv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Hinv); c3_i222 = 0; for (c3_i223 = 0; c3_i223 < 7; c3_i223++) { for (c3_i224 = 0; c3_i224 < 7; c3_i224++) { (*(real_T (*)[49])c3_outData)[c3_i224 + c3_i222] = c3_y[c3_i224 + c3_i222]; } c3_i222 += 7; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[66]) { real_T c3_dv25[66]; int32_T c3_i225; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv25, 1, 0, 0U, 1, 0U, 2, 11, 6); for (c3_i225 = 0; c3_i225 < 66; c3_i225++) { c3_y[c3_i225] = c3_dv25[c3_i225]; } sf_mex_destroy(&c3_u); } static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[66]; int32_T c3_i226; int32_T c3_i227; int32_T c3_i228; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_l_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kx); c3_i226 = 0; for (c3_i227 = 0; c3_i227 < 6; c3_i227++) { for (c3_i228 = 0; c3_i228 < 11; c3_i228++) { (*(real_T (*)[66])c3_outData)[c3_i228 + c3_i226] = c3_y[c3_i228 + c3_i226]; } c3_i226 += 11; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]) { real_T c3_dv26[18]; int32_T c3_i229; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv26, 1, 0, 0U, 1, 0U, 2, 3, 6); for (c3_i229 = 0; c3_i229 < 18; c3_i229++) { c3_y[c3_i229] = c3_dv26[c3_i229]; } sf_mex_destroy(&c3_u); } static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ku1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[18]; int32_T c3_i230; int32_T c3_i231; int32_T c3_i232; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ku1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_m_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ku1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ku1); c3_i230 = 0; for (c3_i231 = 0; c3_i231 < 6; c3_i231++) { for (c3_i232 = 0; c3_i232 < 3; c3_i232++) { (*(real_T (*)[18])c3_outData)[c3_i232 + c3_i230] = c3_y[c3_i232 + c3_i230]; } c3_i230 += 3; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[90]) { real_T c3_dv27[90]; int32_T c3_i233; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv27, 1, 0, 0U, 1, 0U, 2, 15, 6); for (c3_i233 = 0; c3_i233 < 90; c3_i233++) { c3_y[c3_i233] = c3_dv27[c3_i233]; } sf_mex_destroy(&c3_u); } static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kut; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[90]; int32_T c3_i234; int32_T c3_i235; int32_T c3_i236; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kut = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_n_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kut), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kut); c3_i234 = 0; for (c3_i235 = 0; c3_i235 < 6; c3_i235++) { for (c3_i236 = 0; c3_i236 < 15; c3_i236++) { (*(real_T (*)[90])c3_outData)[c3_i236 + c3_i234] = c3_y[c3_i236 + c3_i234]; } c3_i234 += 15; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]) { real_T c3_dv28[60]; int32_T c3_i237; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv28, 1, 0, 0U, 1, 0U, 2, 10, 6); for (c3_i237 = 0; c3_i237 < 60; c3_i237++) { c3_y[c3_i237] = c3_dv28[c3_i237]; } sf_mex_destroy(&c3_u); } static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kr; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[60]; int32_T c3_i238; int32_T c3_i239; int32_T c3_i240; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kr = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_o_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kr), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kr); c3_i238 = 0; for (c3_i239 = 0; c3_i239 < 6; c3_i239++) { for (c3_i240 = 0; c3_i240 < 10; c3_i240++) { (*(real_T (*)[60])c3_outData)[c3_i240 + c3_i238] = c3_y[c3_i240 + c3_i238]; } c3_i238 += 10; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[36]) { real_T c3_dv29[36]; int32_T c3_i241; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv29, 1, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i241 = 0; c3_i241 < 36; c3_i241++) { c3_y[c3_i241] = c3_dv29[c3_i241]; } sf_mex_destroy(&c3_u); } static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[36]; int32_T c3_i242; int32_T c3_i243; int32_T c3_i244; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_p_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kv); c3_i242 = 0; for (c3_i243 = 0; c3_i243 < 6; c3_i243++) { for (c3_i244 = 0; c3_i244 < 6; c3_i244++) { (*(real_T (*)[36])c3_outData)[c3_i244 + c3_i242] = c3_y[c3_i244 + c3_i242]; } c3_i242 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]) { real_T c3_dv30[18]; int32_T c3_i245; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv30, 1, 0, 0U, 1, 0U, 1, 18); for (c3_i245 = 0; c3_i245 < 18; c3_i245++) { c3_y[c3_i245] = c3_dv30[c3_i245]; } sf_mex_destroy(&c3_u); } static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mlim; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[18]; int32_T c3_i246; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mlim = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_q_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mlim), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mlim); for (c3_i246 = 0; c3_i246 < 18; c3_i246++) { (*(real_T (*)[18])c3_outData)[c3_i246] = c3_y[c3_i246]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[198]) { real_T c3_dv31[198]; int32_T c3_i247; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv31, 1, 0, 0U, 1, 0U, 2, 18, 11); for (c3_i247 = 0; c3_i247 < 198; c3_i247++) { c3_y[c3_i247] = c3_dv31[c3_i247]; } sf_mex_destroy(&c3_u); } static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[198]; int32_T c3_i248; int32_T c3_i249; int32_T c3_i250; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_r_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mx); c3_i248 = 0; for (c3_i249 = 0; c3_i249 < 11; c3_i249++) { for (c3_i250 = 0; c3_i250 < 18; c3_i250++) { (*(real_T (*)[198])c3_outData)[c3_i250 + c3_i248] = c3_y[c3_i250 + c3_i248]; } c3_i248 += 18; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[54]) { real_T c3_dv32[54]; int32_T c3_i251; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv32, 1, 0, 0U, 1, 0U, 2, 18, 3); for (c3_i251 = 0; c3_i251 < 54; c3_i251++) { c3_y[c3_i251] = c3_dv32[c3_i251]; } sf_mex_destroy(&c3_u); } static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mu1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[54]; int32_T c3_i252; int32_T c3_i253; int32_T c3_i254; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mu1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_s_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mu1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mu1); c3_i252 = 0; for (c3_i253 = 0; c3_i253 < 3; c3_i253++) { for (c3_i254 = 0; c3_i254 < 18; c3_i254++) { (*(real_T (*)[54])c3_outData)[c3_i254 + c3_i252] = c3_y[c3_i254 + c3_i252]; } c3_i252 += 18; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[108]) { real_T c3_dv33[108]; int32_T c3_i255; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv33, 1, 0, 0U, 1, 0U, 2, 18, 6); for (c3_i255 = 0; c3_i255 < 108; c3_i255++) { c3_y[c3_i255] = c3_dv33[c3_i255]; } sf_mex_destroy(&c3_u); } static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[108]; int32_T c3_i256; int32_T c3_i257; int32_T c3_i258; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_t_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mv); c3_i256 = 0; for (c3_i257 = 0; c3_i257 < 6; c3_i257++) { for (c3_i258 = 0; c3_i258 < 18; c3_i258++) { (*(real_T (*)[108])c3_outData)[c3_i258 + c3_i256] = c3_y[c3_i258 + c3_i256]; } c3_i256 += 18; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[7]) { real_T c3_dv34[7]; int32_T c3_i259; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv34, 1, 0, 0U, 1, 0U, 1, 7); for (c3_i259 = 0; c3_i259 < 7; c3_i259++) { c3_y[c3_i259] = c3_dv34[c3_i259]; } sf_mex_destroy(&c3_u); } static void c3_q_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_z_degrees; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[7]; int32_T c3_i260; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_z_degrees = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_u_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_z_degrees), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_z_degrees); for (c3_i260 = 0; c3_i260 < 7; c3_i260++) { (*(real_T (*)[7])c3_outData)[c3_i260] = c3_y[c3_i260]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_v_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]) { real_T c3_dv35[15]; int32_T c3_i261; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv35, 1, 0, 0U, 1, 0U, 1, 15); for (c3_i261 = 0; c3_i261 < 15; c3_i261++) { c3_y[c3_i261] = c3_dv35[c3_i261]; } sf_mex_destroy(&c3_u); } static void c3_r_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_utarget; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[15]; int32_T c3_i262; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_utarget = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_v_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_utarget), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_utarget); for (c3_i262 = 0; c3_i262 < 15; c3_i262++) { (*(real_T (*)[15])c3_outData)[c3_i262] = c3_y[c3_i262]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_w_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[2]) { real_T c3_dv36[2]; int32_T c3_i263; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv36, 1, 0, 0U, 1, 0U, 1, 2); for (c3_i263 = 0; c3_i263 < 2; c3_i263++) { c3_y[c3_i263] = c3_dv36[c3_i263]; } sf_mex_destroy(&c3_u); } static void c3_s_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_yoff; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[2]; int32_T c3_i264; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_yoff = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_w_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_yoff), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_yoff); for (c3_i264 = 0; c3_i264 < 2; c3_i264++) { (*(real_T (*)[2])c3_outData)[c3_i264] = c3_y[c3_i264]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_x_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[5]) { real_T c3_dv37[5]; int32_T c3_i265; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv37, 1, 0, 0U, 1, 0U, 2, 1, 5); for (c3_i265 = 0; c3_i265 < 5; c3_i265++) { c3_y[c3_i265] = c3_dv37[c3_i265]; } sf_mex_destroy(&c3_u); } static void c3_t_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_blocking_moves; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[5]; int32_T c3_i266; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_blocking_moves = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_x_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_blocking_moves), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_blocking_moves); for (c3_i266 = 0; c3_i266 < 5; c3_i266++) { (*(real_T (*)[5])c3_outData)[c3_i266] = c3_y[c3_i266]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_y_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[126]) { real_T c3_dv38[126]; int32_T c3_i267; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv38, 1, 0, 0U, 1, 0U, 2, 18, 7); for (c3_i267 = 0; c3_i267 < 126; c3_i267++) { c3_y[c3_i267] = c3_dv38[c3_i267]; } sf_mex_destroy(&c3_u); } static void c3_u_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ac; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[126]; int32_T c3_i268; int32_T c3_i269; int32_T c3_i270; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ac = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ac), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ac); c3_i268 = 0; for (c3_i269 = 0; c3_i269 < 7; c3_i269++) { for (c3_i270 = 0; c3_i270 < 18; c3_i270++) { (*(real_T (*)[126])c3_outData)[c3_i270 + c3_i268] = c3_y[c3_i270 + c3_i268]; } c3_i268 += 18; } sf_mex_destroy(&c3_mxArrayInData); } static uint8_T c3_ab_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier) { uint8_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_bb_emlrt_marshallIn(chartInstance, sf_mex_dup (c3_b_is_active_c3_mpclib), &c3_thisId); sf_mex_destroy(&c3_b_is_active_c3_mpclib); return c3_y; } static uint8_T c3_bb_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { uint8_T c3_y; uint8_T c3_u0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_u0, 1, 3, 0U, 0, 0U, 0); c3_y = c3_u0; sf_mex_destroy(&c3_u); return c3_y; } static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c3_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2419309395U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2632617900U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(760137875U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3464894829U); } mxArray *sf_c3_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("IWfv4yRSzPuXdHsJRcV3N"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,13,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(11); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(25); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,50,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(7); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(7); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(7); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(6); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(6); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(15); pr[1] = (double)(6); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(6); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(11); pr[1] = (double)(6); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(7); mxSetField(mxData,13,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,13,"type",mxType); } mxSetField(mxData,13,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(1); mxSetField(mxData,14,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,14,"type",mxType); } mxSetField(mxData,14,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(3); mxSetField(mxData,15,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,15,"type",mxType); } mxSetField(mxData,15,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(6); mxSetField(mxData,16,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,16,"type",mxType); } mxSetField(mxData,16,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(18); pr[1] = (double)(11); mxSetField(mxData,17,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,17,"type",mxType); } mxSetField(mxData,17,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,18,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,18,"type",mxType); } mxSetField(mxData,18,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,19,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,19,"type",mxType); } mxSetField(mxData,19,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,20,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,20,"type",mxType); } mxSetField(mxData,20,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,21,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,21,"type",mxType); } mxSetField(mxData,21,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,22,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,22,"type",mxType); } mxSetField(mxData,22,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,23,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,23,"type",mxType); } mxSetField(mxData,23,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(5); mxSetField(mxData,24,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,24,"type",mxType); } mxSetField(mxData,24,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,25,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,25,"type",mxType); } mxSetField(mxData,25,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,26,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,26,"type",mxType); } mxSetField(mxData,26,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,27,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,27,"type",mxType); } mxSetField(mxData,27,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,28,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,28,"type",mxType); } mxSetField(mxData,28,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,29,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,29,"type",mxType); } mxSetField(mxData,29,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,30,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,30,"type",mxType); } mxSetField(mxData,30,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,31,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,31,"type",mxType); } mxSetField(mxData,31,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,32,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,32,"type",mxType); } mxSetField(mxData,32,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,33,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,33,"type",mxType); } mxSetField(mxData,33,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,34,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,34,"type",mxType); } mxSetField(mxData,34,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,35,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,35,"type",mxType); } mxSetField(mxData,35,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,36,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,36,"type",mxType); } mxSetField(mxData,36,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,37,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,37,"type",mxType); } mxSetField(mxData,37,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,38,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,38,"type",mxType); } mxSetField(mxData,38,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,39,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,39,"type",mxType); } mxSetField(mxData,39,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,40,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,40,"type",mxType); } mxSetField(mxData,40,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,41,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,41,"type",mxType); } mxSetField(mxData,41,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,42,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,42,"type",mxType); } mxSetField(mxData,42,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,43,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,43,"type",mxType); } mxSetField(mxData,43,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,44,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,44,"type",mxType); } mxSetField(mxData,44,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,45,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,45,"type",mxType); } mxSetField(mxData,45,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,46,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,46,"type",mxType); } mxSetField(mxData,46,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(15); pr[1] = (double)(1); mxSetField(mxData,47,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,47,"type",mxType); } mxSetField(mxData,47,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,48,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,48,"type",mxType); } mxSetField(mxData,48,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(1); mxSetField(mxData,49,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,49,"type",mxType); } mxSetField(mxData,49,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,5,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(5); pr[1] = (double)(3); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(25); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c3_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c3_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x6'type','srcId','name','auxInfo'{{M[1],M[20],T\"cost\",},{M[1],M[145],T\"iAout\",},{M[1],M[126],T\"status\",},{M[1],M[19],T\"u\",},{M[1],M[21],T\"useq\",},{M[8],M[0],T\"is_active_c3_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 6, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c3_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 3, 1, 1, 68, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,1,1,0,"rseq"); _SFD_SET_DATA_PROPS(1,1,1,0,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"x"); _SFD_SET_DATA_PROPS(3,1,1,0,"old_u"); _SFD_SET_DATA_PROPS(4,1,1,0,"iA"); _SFD_SET_DATA_PROPS(5,1,1,0,"umin"); _SFD_SET_DATA_PROPS(6,1,1,0,"umax"); _SFD_SET_DATA_PROPS(7,1,1,0,"ymin"); _SFD_SET_DATA_PROPS(8,1,1,0,"ymax"); _SFD_SET_DATA_PROPS(9,1,1,0,"switch_in"); _SFD_SET_DATA_PROPS(10,1,1,0,"ywt"); _SFD_SET_DATA_PROPS(11,1,1,0,"duwt"); _SFD_SET_DATA_PROPS(12,1,1,0,"rhoeps"); _SFD_SET_DATA_PROPS(13,2,0,1,"u"); _SFD_SET_DATA_PROPS(14,2,0,1,"cost"); _SFD_SET_DATA_PROPS(15,2,0,1,"useq"); _SFD_SET_DATA_PROPS(16,2,0,1,"status"); _SFD_SET_DATA_PROPS(17,10,0,0,"isQP"); _SFD_SET_DATA_PROPS(18,10,0,0,"nu"); _SFD_SET_DATA_PROPS(19,10,0,0,"ny"); _SFD_SET_DATA_PROPS(20,10,0,0,"degrees"); _SFD_SET_DATA_PROPS(21,10,0,0,"Hinv"); _SFD_SET_DATA_PROPS(22,10,0,0,"Kx"); _SFD_SET_DATA_PROPS(23,10,0,0,"Ku1"); _SFD_SET_DATA_PROPS(24,10,0,0,"Kut"); _SFD_SET_DATA_PROPS(25,10,0,0,"Kr"); _SFD_SET_DATA_PROPS(26,10,0,0,"Kv"); _SFD_SET_DATA_PROPS(27,10,0,0,"Mlim"); _SFD_SET_DATA_PROPS(28,10,0,0,"Mx"); _SFD_SET_DATA_PROPS(29,10,0,0,"Mu1"); _SFD_SET_DATA_PROPS(30,10,0,0,"Mv"); _SFD_SET_DATA_PROPS(31,10,0,0,"z_degrees"); _SFD_SET_DATA_PROPS(32,10,0,0,"utarget"); _SFD_SET_DATA_PROPS(33,10,0,0,"p"); _SFD_SET_DATA_PROPS(34,10,0,0,"uoff"); _SFD_SET_DATA_PROPS(35,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(36,10,0,0,"maxiter"); _SFD_SET_DATA_PROPS(37,10,0,0,"nxQP"); _SFD_SET_DATA_PROPS(38,10,0,0,"openloopflag"); _SFD_SET_DATA_PROPS(39,10,0,0,"lims_inport"); _SFD_SET_DATA_PROPS(40,10,0,0,"no_umin"); _SFD_SET_DATA_PROPS(41,10,0,0,"no_umax"); _SFD_SET_DATA_PROPS(42,10,0,0,"no_ymin"); _SFD_SET_DATA_PROPS(43,10,0,0,"no_ymax"); _SFD_SET_DATA_PROPS(44,10,0,0,"switch_inport"); _SFD_SET_DATA_PROPS(45,10,0,0,"no_switch"); _SFD_SET_DATA_PROPS(46,10,0,0,"enable_value"); _SFD_SET_DATA_PROPS(47,10,0,0,"return_cost"); _SFD_SET_DATA_PROPS(48,10,0,0,"H"); _SFD_SET_DATA_PROPS(49,10,0,0,"return_sequence"); _SFD_SET_DATA_PROPS(50,10,0,0,"blocking_moves"); _SFD_SET_DATA_PROPS(51,10,0,0,"Linv"); _SFD_SET_DATA_PROPS(52,10,0,0,"Ac"); _SFD_SET_DATA_PROPS(53,10,0,0,"no_ywt"); _SFD_SET_DATA_PROPS(54,10,0,0,"no_duwt"); _SFD_SET_DATA_PROPS(55,10,0,0,"no_rhoeps"); _SFD_SET_DATA_PROPS(56,10,0,0,"Wy"); _SFD_SET_DATA_PROPS(57,10,0,0,"Wdu"); _SFD_SET_DATA_PROPS(58,10,0,0,"Jm"); _SFD_SET_DATA_PROPS(59,10,0,0,"SuJm"); _SFD_SET_DATA_PROPS(60,10,0,0,"I2JmWuI2Jm"); _SFD_SET_DATA_PROPS(61,10,0,0,"Su1"); _SFD_SET_DATA_PROPS(62,10,0,0,"I1WuI2Jm"); _SFD_SET_DATA_PROPS(63,10,0,0,"Sx"); _SFD_SET_DATA_PROPS(64,10,0,0,"Hv"); _SFD_SET_DATA_PROPS(65,10,0,0,"Wu"); _SFD_SET_DATA_PROPS(66,10,0,0,"I1"); _SFD_SET_DATA_PROPS(67,2,0,1,"iAout"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,2551); _SFD_CV_INIT_EML_IF(0,1,0,648,679,2012,2550); _SFD_CV_INIT_EML_IF(0,1,1,966,987,1495,2010); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_h_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 11; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_f_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 25; _SFD_SET_DATA_COMPILED_PROPS(4,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(12,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(13,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType) c3_d_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(14,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 5; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(15,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(16,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(17,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType)c3_f_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(18,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(19,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(20,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 7; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(21,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 11; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(22,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_w_sf_marshallOut,(MexInFcnForType) c3_h_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 3; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(23,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_v_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 15; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(24,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_u_sf_marshallOut,(MexInFcnForType) c3_j_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 10; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(25,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_t_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(26,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_s_sf_marshallOut,(MexInFcnForType) c3_l_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 18; _SFD_SET_DATA_COMPILED_PROPS(27,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_r_sf_marshallOut,(MexInFcnForType) c3_m_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 18; dimVector[1]= 11; _SFD_SET_DATA_COMPILED_PROPS(28,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_q_sf_marshallOut,(MexInFcnForType) c3_n_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 18; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(29,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_p_sf_marshallOut,(MexInFcnForType) c3_o_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 18; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(30,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_p_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 7; _SFD_SET_DATA_COMPILED_PROPS(31,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_n_sf_marshallOut,(MexInFcnForType) c3_q_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 15; _SFD_SET_DATA_COMPILED_PROPS(32,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_m_sf_marshallOut,(MexInFcnForType) c3_r_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(33,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(34,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType) c3_d_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(35,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType) c3_s_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(36,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(37,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(38,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType)c3_f_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(39,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(40,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(41,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(42,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(43,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(44,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(45,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(46,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(47,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 7; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(48,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(49,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 5; _SFD_SET_DATA_COMPILED_PROPS(50,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_k_sf_marshallOut,(MexInFcnForType) c3_t_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 7; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(51,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 18; dimVector[1]= 7; _SFD_SET_DATA_COMPILED_PROPS(52,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType) c3_u_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(53,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(54,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(55,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(56,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(57,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(58,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(59,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(60,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(61,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(62,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(63,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(64,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(65,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(66,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 25; _SFD_SET_DATA_COMPILED_PROPS(67,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType) c3_sf_marshallIn); } { real_T *c3_switch_in; real_T *c3_rhoeps; real_T *c3_cost; real_T *c3_status; real_T (*c3_rseq)[10]; real_T (*c3_vseq)[6]; real_T (*c3_x)[11]; real_T (*c3_old_u)[3]; boolean_T (*c3_iA)[25]; real_T (*c3_umin)[3]; real_T (*c3_umax)[3]; real_T (*c3_ymin)[2]; real_T (*c3_ymax)[2]; real_T (*c3_ywt)[2]; real_T (*c3_duwt)[3]; real_T (*c3_u)[3]; real_T (*c3_useq)[15]; boolean_T (*c3_iAout)[25]; c3_iAout = (boolean_T (*)[25])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[25])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[11])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SET_DATA_VALUE_PTR(0U, *c3_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c3_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c3_x); _SFD_SET_DATA_VALUE_PTR(3U, *c3_old_u); _SFD_SET_DATA_VALUE_PTR(4U, *c3_iA); _SFD_SET_DATA_VALUE_PTR(5U, *c3_umin); _SFD_SET_DATA_VALUE_PTR(6U, *c3_umax); _SFD_SET_DATA_VALUE_PTR(7U, *c3_ymin); _SFD_SET_DATA_VALUE_PTR(8U, *c3_ymax); _SFD_SET_DATA_VALUE_PTR(9U, c3_switch_in); _SFD_SET_DATA_VALUE_PTR(10U, *c3_ywt); _SFD_SET_DATA_VALUE_PTR(11U, *c3_duwt); _SFD_SET_DATA_VALUE_PTR(12U, c3_rhoeps); _SFD_SET_DATA_VALUE_PTR(13U, *c3_u); _SFD_SET_DATA_VALUE_PTR(14U, c3_cost); _SFD_SET_DATA_VALUE_PTR(15U, *c3_useq); _SFD_SET_DATA_VALUE_PTR(16U, c3_status); _SFD_SET_DATA_VALUE_PTR(17U, &chartInstance->c3_isQP); _SFD_SET_DATA_VALUE_PTR(18U, &chartInstance->c3_nu); _SFD_SET_DATA_VALUE_PTR(19U, &chartInstance->c3_ny); _SFD_SET_DATA_VALUE_PTR(20U, &chartInstance->c3_degrees); _SFD_SET_DATA_VALUE_PTR(21U, chartInstance->c3_Hinv); _SFD_SET_DATA_VALUE_PTR(22U, chartInstance->c3_Kx); _SFD_SET_DATA_VALUE_PTR(23U, chartInstance->c3_Ku1); _SFD_SET_DATA_VALUE_PTR(24U, chartInstance->c3_Kut); _SFD_SET_DATA_VALUE_PTR(25U, chartInstance->c3_Kr); _SFD_SET_DATA_VALUE_PTR(26U, chartInstance->c3_Kv); _SFD_SET_DATA_VALUE_PTR(27U, chartInstance->c3_Mlim); _SFD_SET_DATA_VALUE_PTR(28U, chartInstance->c3_Mx); _SFD_SET_DATA_VALUE_PTR(29U, chartInstance->c3_Mu1); _SFD_SET_DATA_VALUE_PTR(30U, chartInstance->c3_Mv); _SFD_SET_DATA_VALUE_PTR(31U, chartInstance->c3_z_degrees); _SFD_SET_DATA_VALUE_PTR(32U, chartInstance->c3_utarget); _SFD_SET_DATA_VALUE_PTR(33U, &chartInstance->c3_p); _SFD_SET_DATA_VALUE_PTR(34U, chartInstance->c3_uoff); _SFD_SET_DATA_VALUE_PTR(35U, chartInstance->c3_yoff); _SFD_SET_DATA_VALUE_PTR(36U, &chartInstance->c3_maxiter); _SFD_SET_DATA_VALUE_PTR(37U, &chartInstance->c3_nxQP); _SFD_SET_DATA_VALUE_PTR(38U, &chartInstance->c3_openloopflag); _SFD_SET_DATA_VALUE_PTR(39U, &chartInstance->c3_lims_inport); _SFD_SET_DATA_VALUE_PTR(40U, &chartInstance->c3_no_umin); _SFD_SET_DATA_VALUE_PTR(41U, &chartInstance->c3_no_umax); _SFD_SET_DATA_VALUE_PTR(42U, &chartInstance->c3_no_ymin); _SFD_SET_DATA_VALUE_PTR(43U, &chartInstance->c3_no_ymax); _SFD_SET_DATA_VALUE_PTR(44U, &chartInstance->c3_switch_inport); _SFD_SET_DATA_VALUE_PTR(45U, &chartInstance->c3_no_switch); _SFD_SET_DATA_VALUE_PTR(46U, &chartInstance->c3_enable_value); _SFD_SET_DATA_VALUE_PTR(47U, &chartInstance->c3_return_cost); _SFD_SET_DATA_VALUE_PTR(48U, chartInstance->c3_H); _SFD_SET_DATA_VALUE_PTR(49U, &chartInstance->c3_return_sequence); _SFD_SET_DATA_VALUE_PTR(50U, chartInstance->c3_blocking_moves); _SFD_SET_DATA_VALUE_PTR(51U, chartInstance->c3_Linv); _SFD_SET_DATA_VALUE_PTR(52U, chartInstance->c3_Ac); _SFD_SET_DATA_VALUE_PTR(53U, &chartInstance->c3_no_ywt); _SFD_SET_DATA_VALUE_PTR(54U, &chartInstance->c3_no_duwt); _SFD_SET_DATA_VALUE_PTR(55U, &chartInstance->c3_no_rhoeps); _SFD_SET_DATA_VALUE_PTR(56U, &chartInstance->c3_Wy); _SFD_SET_DATA_VALUE_PTR(57U, &chartInstance->c3_Wdu); _SFD_SET_DATA_VALUE_PTR(58U, &chartInstance->c3_Jm); _SFD_SET_DATA_VALUE_PTR(59U, &chartInstance->c3_SuJm); _SFD_SET_DATA_VALUE_PTR(60U, &chartInstance->c3_I2JmWuI2Jm); _SFD_SET_DATA_VALUE_PTR(61U, &chartInstance->c3_Su1); _SFD_SET_DATA_VALUE_PTR(62U, &chartInstance->c3_I1WuI2Jm); _SFD_SET_DATA_VALUE_PTR(63U, &chartInstance->c3_Sx); _SFD_SET_DATA_VALUE_PTR(64U, &chartInstance->c3_Hv); _SFD_SET_DATA_VALUE_PTR(65U, &chartInstance->c3_Wu); _SFD_SET_DATA_VALUE_PTR(66U, &chartInstance->c3_I1); _SFD_SET_DATA_VALUE_PTR(67U, *c3_iAout); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "UZcJkDgeSZoOkVp9M5i6hE"; } static void sf_opaque_initialize_c3_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); initialize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c3_mpclib(void *chartInstanceVar) { enable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c3_mpclib(void *chartInstanceVar) { disable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c3_mpclib(void *chartInstanceVar) { sf_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c3_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c3_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c3_mpclib(S); } static void sf_opaque_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c3_mpclib(S, st); } static void sf_opaque_terminate_c3_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c3_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c3_mpclib(SimStruct *S) { /* Actual parameters from chart: Ac H Hinv Hv I1 I1WuI2Jm I2JmWuI2Jm Jm Kr Ku1 Kut Kv Kx Linv Mlim Mu1 Mv Mx Su1 SuJm Sx Wdu Wu Wy blocking_moves degrees enable_value isQP lims_inport maxiter no_duwt no_rhoeps no_switch no_umax no_umin no_ymax no_ymin no_ywt nu nxQP ny openloopflag p return_cost return_sequence switch_inport uoff utarget yoff z_degrees */ const char_T *rtParamNames[] = { "Ac", "H", "Hinv", "Hv", "I1", "I1WuI2Jm", "I2JmWuI2Jm", "Jm", "Kr", "Ku1", "Kut", "Kv", "Kx", "Linv", "Mlim", "Mu1", "Mv", "Mx", "Su1", "SuJm", "Sx", "Wdu", "Wu", "Wy", "blocking_moves", "degrees", "enable_value", "isQP", "lims_inport", "maxiter", "no_duwt", "no_rhoeps", "no_switch", "no_umax", "no_umin", "no_ymax", "no_ymin", "no_ywt", "nu", "nxQP", "ny", "openloopflag", "p", "return_cost", "return_sequence", "switch_inport", "uoff", "utarget", "yoff", "z_degrees" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for Ac*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for H*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for Hinv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for Hv*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for I1*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_DOUBLE); /* registration for I1WuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for I2JmWuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for Jm*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); /* registration for Kr*/ ssRegDlgParamAsRunTimeParam(S, 8, 8, rtParamNames[8], SS_DOUBLE); /* registration for Ku1*/ ssRegDlgParamAsRunTimeParam(S, 9, 9, rtParamNames[9], SS_DOUBLE); /* registration for Kut*/ ssRegDlgParamAsRunTimeParam(S, 10, 10, rtParamNames[10], SS_DOUBLE); /* registration for Kv*/ ssRegDlgParamAsRunTimeParam(S, 11, 11, rtParamNames[11], SS_DOUBLE); /* registration for Kx*/ ssRegDlgParamAsRunTimeParam(S, 12, 12, rtParamNames[12], SS_DOUBLE); /* registration for Linv*/ ssRegDlgParamAsRunTimeParam(S, 13, 13, rtParamNames[13], SS_DOUBLE); /* registration for Mlim*/ ssRegDlgParamAsRunTimeParam(S, 14, 14, rtParamNames[14], SS_DOUBLE); /* registration for Mu1*/ ssRegDlgParamAsRunTimeParam(S, 15, 15, rtParamNames[15], SS_DOUBLE); /* registration for Mv*/ ssRegDlgParamAsRunTimeParam(S, 16, 16, rtParamNames[16], SS_DOUBLE); /* registration for Mx*/ ssRegDlgParamAsRunTimeParam(S, 17, 17, rtParamNames[17], SS_DOUBLE); /* registration for Su1*/ ssRegDlgParamAsRunTimeParam(S, 18, 18, rtParamNames[18], SS_DOUBLE); /* registration for SuJm*/ ssRegDlgParamAsRunTimeParam(S, 19, 19, rtParamNames[19], SS_DOUBLE); /* registration for Sx*/ ssRegDlgParamAsRunTimeParam(S, 20, 20, rtParamNames[20], SS_DOUBLE); /* registration for Wdu*/ ssRegDlgParamAsRunTimeParam(S, 21, 21, rtParamNames[21], SS_DOUBLE); /* registration for Wu*/ ssRegDlgParamAsRunTimeParam(S, 22, 22, rtParamNames[22], SS_DOUBLE); /* registration for Wy*/ ssRegDlgParamAsRunTimeParam(S, 23, 23, rtParamNames[23], SS_DOUBLE); /* registration for blocking_moves*/ ssRegDlgParamAsRunTimeParam(S, 24, 24, rtParamNames[24], SS_DOUBLE); /* registration for degrees*/ ssRegDlgParamAsRunTimeParam(S, 25, 25, rtParamNames[25], SS_DOUBLE); /* registration for enable_value*/ ssRegDlgParamAsRunTimeParam(S, 26, 26, rtParamNames[26], SS_DOUBLE); /* registration for isQP*/ ssRegDlgParamAsRunTimeParam(S, 27, 27, rtParamNames[27], SS_BOOLEAN); /* registration for lims_inport*/ ssRegDlgParamAsRunTimeParam(S, 28, 28, rtParamNames[28], SS_DOUBLE); /* registration for maxiter*/ ssRegDlgParamAsRunTimeParam(S, 29, 29, rtParamNames[29], SS_DOUBLE); /* registration for no_duwt*/ ssRegDlgParamAsRunTimeParam(S, 30, 30, rtParamNames[30], SS_DOUBLE); /* registration for no_rhoeps*/ ssRegDlgParamAsRunTimeParam(S, 31, 31, rtParamNames[31], SS_DOUBLE); /* registration for no_switch*/ ssRegDlgParamAsRunTimeParam(S, 32, 32, rtParamNames[32], SS_DOUBLE); /* registration for no_umax*/ ssRegDlgParamAsRunTimeParam(S, 33, 33, rtParamNames[33], SS_DOUBLE); /* registration for no_umin*/ ssRegDlgParamAsRunTimeParam(S, 34, 34, rtParamNames[34], SS_DOUBLE); /* registration for no_ymax*/ ssRegDlgParamAsRunTimeParam(S, 35, 35, rtParamNames[35], SS_DOUBLE); /* registration for no_ymin*/ ssRegDlgParamAsRunTimeParam(S, 36, 36, rtParamNames[36], SS_DOUBLE); /* registration for no_ywt*/ ssRegDlgParamAsRunTimeParam(S, 37, 37, rtParamNames[37], SS_DOUBLE); /* registration for nu*/ ssRegDlgParamAsRunTimeParam(S, 38, 38, rtParamNames[38], SS_DOUBLE); /* registration for nxQP*/ ssRegDlgParamAsRunTimeParam(S, 39, 39, rtParamNames[39], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 40, 40, rtParamNames[40], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 41, 41, rtParamNames[41], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 42, 42, rtParamNames[42], SS_DOUBLE); /* registration for return_cost*/ ssRegDlgParamAsRunTimeParam(S, 43, 43, rtParamNames[43], SS_DOUBLE); /* registration for return_sequence*/ ssRegDlgParamAsRunTimeParam(S, 44, 44, rtParamNames[44], SS_DOUBLE); /* registration for switch_inport*/ ssRegDlgParamAsRunTimeParam(S, 45, 45, rtParamNames[45], SS_DOUBLE); /* registration for uoff*/ ssRegDlgParamAsRunTimeParam(S, 46, 46, rtParamNames[46], SS_DOUBLE); /* registration for utarget*/ ssRegDlgParamAsRunTimeParam(S, 47, 47, rtParamNames[47], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 48, 48, rtParamNames[48], SS_DOUBLE); /* registration for z_degrees*/ ssRegDlgParamAsRunTimeParam(S, 49, 49, rtParamNames[49], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 3); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,3,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,3, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,3); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 2, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 3, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 4, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 5, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 6, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 7, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 8, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 9, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 10, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 11, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 12, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,3,13); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,3,5); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=5; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 13; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,3); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(2642584985U)); ssSetChecksum1(S,(1939236384U)); ssSetChecksum2(S,(136771085U)); ssSetChecksum3(S,(894209176U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c3_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c3_mpclib(SimStruct *S) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)utMalloc(sizeof (SFc3_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc3_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c3_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c3_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c3_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c3_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c3_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c3_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c3_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c3_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c3_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c3_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c3_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c3_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c3_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c3_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c3_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/c3_mpclib.h ================================================ #ifndef __c3_mpclib_h__ #define __c3_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc3_mpclibInstanceStruct #define typedef_SFc3_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c3_sfEvent; boolean_T c3_isStable; boolean_T c3_doneDoubleBufferReInit; uint8_T c3_is_active_c3_mpclib; boolean_T c3_isQP; real_T c3_nu; real_T c3_ny; real_T c3_degrees; real_T c3_Hinv[49]; real_T c3_Kx[66]; real_T c3_Ku1[18]; real_T c3_Kut[90]; real_T c3_Kr[60]; real_T c3_Kv[36]; real_T c3_Mlim[18]; real_T c3_Mx[198]; real_T c3_Mu1[54]; real_T c3_Mv[108]; real_T c3_z_degrees[7]; real_T c3_utarget[15]; real_T c3_p; real_T c3_uoff[3]; real_T c3_yoff[2]; real_T c3_maxiter; real_T c3_nxQP; boolean_T c3_openloopflag; real_T c3_lims_inport; real_T c3_no_umin; real_T c3_no_umax; real_T c3_no_ymin; real_T c3_no_ymax; real_T c3_switch_inport; real_T c3_no_switch; real_T c3_enable_value; real_T c3_return_cost; real_T c3_H[49]; real_T c3_return_sequence; real_T c3_blocking_moves[5]; real_T c3_Linv[49]; real_T c3_Ac[126]; real_T c3_no_ywt; real_T c3_no_duwt; real_T c3_no_rhoeps; real_T c3_Wy; real_T c3_Wdu; real_T c3_Jm; real_T c3_SuJm; real_T c3_I2JmWuI2Jm; real_T c3_Su1; real_T c3_I1WuI2Jm; real_T c3_Sx; real_T c3_Hv; real_T c3_Wu; real_T c3_I1; } SFc3_mpclibInstanceStruct; #endif /*typedef_SFc3_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); extern void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/c4_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c4_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c4_b_p (5.0) #define c4_b_ny (2.0) #define c4_b_nv (1.0) #define c4_b_voff (0.0) #define c4_b_no_md (1.0) #define c4_b_no_ref (0.0) #define c4_b_openloopflag (FALSE) /* Variable Declarations */ /* Variable Definitions */ static const char * c4_debug_family_names[16] = { "DataType", "nv", "ny", "p", "yoff", "voff", "no_md", "no_ref", "openloopflag", "nargin", "nargout", "ref", "md", "rseq", "vseq", "v" }; /* Function Declarations */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st); static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber); static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_info_helper(const mxArray **c4_info); static const mxArray *c4_emlrt_marshallOut(char * c4_u); static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u); static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[10]); static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[10]); static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[6]); static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[6]); static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier); static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static void c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]); static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier); static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { chartInstance->c4_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c4_is_active_c4_mpclib = 0U; } static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { real_T c4_d0; real_T c4_d1; real_T c4_d2; real_T c4_dv0[2]; int32_T c4_i0; real_T c4_d3; real_T c4_d4; real_T c4_d5; real_T c4_d6; sf_set_error_prefix_string( "Error evaluating data 'nv' in the parent workspace.\n"); sf_mex_import_named("nv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), &c4_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_nv = c4_d0; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c4_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_ny = c4_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c4_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_p = c4_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 7, 0), c4_dv0, 0, 0, 0U, 1, 0U, 1, 2); for (c4_i0 = 0; c4_i0 < 2; c4_i0++) { chartInstance->c4_yoff[c4_i0] = c4_dv0[c4_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'voff' in the parent workspace.\n"); sf_mex_import_named("voff", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c4_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_voff = c4_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_md' in the parent workspace.\n"); sf_mex_import_named("no_md", sf_mex_get_sfun_param(chartInstance->S, 0, 0), &c4_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_md = c4_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ref' in the parent workspace.\n"); sf_mex_import_named("no_ref", sf_mex_get_sfun_param(chartInstance->S, 1, 0), &c4_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_ref = c4_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 4, 0), &c4_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_openloopflag = (c4_d6 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { const mxArray *c4_st; const mxArray *c4_y = NULL; int32_T c4_i1; real_T c4_u[10]; const mxArray *c4_b_y = NULL; real_T c4_hoistedGlobal; real_T c4_b_u; const mxArray *c4_c_y = NULL; int32_T c4_i2; real_T c4_c_u[6]; const mxArray *c4_d_y = NULL; uint8_T c4_b_hoistedGlobal; uint8_T c4_d_u; const mxArray *c4_e_y = NULL; real_T *c4_v; real_T (*c4_vseq)[6]; real_T (*c4_rseq)[10]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); c4_st = NULL; c4_st = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_createcellarray(4), FALSE); for (c4_i1 = 0; c4_i1 < 10; c4_i1++) { c4_u[c4_i1] = (*c4_rseq)[c4_i1]; } c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_setcell(c4_y, 0, c4_b_y); c4_hoistedGlobal = *c4_v; c4_b_u = c4_hoistedGlobal; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 1, c4_c_y); for (c4_i2 = 0; c4_i2 < 6; c4_i2++) { c4_c_u[c4_i2] = (*c4_vseq)[c4_i2]; } c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", c4_c_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_setcell(c4_y, 2, c4_d_y); c4_b_hoistedGlobal = chartInstance->c4_is_active_c4_mpclib; c4_d_u = c4_b_hoistedGlobal; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_d_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 3, c4_e_y); sf_mex_assign(&c4_st, c4_y, FALSE); return c4_st; } static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st) { const mxArray *c4_u; real_T c4_dv1[10]; int32_T c4_i3; real_T c4_dv2[6]; int32_T c4_i4; real_T *c4_v; real_T (*c4_rseq)[10]; real_T (*c4_vseq)[6]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c4_doneDoubleBufferReInit = TRUE; c4_u = sf_mex_dup(c4_st); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 0)), "rseq", c4_dv1); for (c4_i3 = 0; c4_i3 < 10; c4_i3++) { (*c4_rseq)[c4_i3] = c4_dv1[c4_i3]; } *c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 1)), "v"); c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 2)), "vseq", c4_dv2); for (c4_i4 = 0; c4_i4 < 6; c4_i4++) { (*c4_vseq)[c4_i4] = c4_dv2[c4_i4]; } chartInstance->c4_is_active_c4_mpclib = c4_j_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 3)), "is_active_c4_mpclib"); sf_mex_destroy(&c4_u); c4_update_debugger_state_c4_mpclib(chartInstance); sf_mex_destroy(&c4_st); } static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { int32_T c4_i5; int32_T c4_i6; int32_T c4_i7; int32_T c4_i8; real_T c4_hoistedGlobal; int32_T c4_i9; real_T c4_ref[2]; real_T c4_md; uint32_T c4_debug_family_var_map[16]; char_T c4_DataType[6]; real_T c4_c_nv; real_T c4_c_ny; real_T c4_c_p; real_T c4_c_yoff[2]; real_T c4_c_voff; real_T c4_c_no_md; real_T c4_c_no_ref; boolean_T c4_c_openloopflag; real_T c4_nargin = 10.0; real_T c4_nargout = 3.0; real_T c4_rseq[10]; real_T c4_vseq[6]; real_T c4_v; int32_T c4_i10; int32_T c4_i11; static char_T c4_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c4_i12; int32_T c4_i13; int32_T c4_i14; real_T c4_u[2]; const mxArray *c4_y = NULL; real_T c4_b_u; const mxArray *c4_b_y = NULL; real_T c4_c_u; const mxArray *c4_c_y = NULL; real_T c4_d_u; const mxArray *c4_d_y = NULL; real_T c4_e_u; const mxArray *c4_e_y = NULL; int32_T c4_i15; real_T c4_f_u[2]; const mxArray *c4_f_y = NULL; real_T c4_g_u; const mxArray *c4_g_y = NULL; real_T c4_h_u; const mxArray *c4_h_y = NULL; real_T c4_i_u; const mxArray *c4_i_y = NULL; boolean_T c4_j_u; const mxArray *c4_j_y = NULL; const mxArray *c4_b_v = NULL; const mxArray *c4_b_vseq = NULL; const mxArray *c4_b_rseq = NULL; real_T c4_dv3[10]; int32_T c4_i16; real_T c4_dv4[6]; int32_T c4_i17; int32_T c4_i18; int32_T c4_i19; real_T *c4_b_md; real_T *c4_c_v; real_T (*c4_c_rseq)[10]; real_T (*c4_c_vseq)[6]; real_T (*c4_b_ref)[2]; c4_c_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_b_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_b_ref = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 0); c4_c_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_c_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 1U, chartInstance->c4_sfEvent); for (c4_i5 = 0; c4_i5 < 10; c4_i5++) { _SFD_DATA_RANGE_CHECK((*c4_c_rseq)[c4_i5], 0U); } for (c4_i6 = 0; c4_i6 < 6; c4_i6++) { _SFD_DATA_RANGE_CHECK((*c4_c_vseq)[c4_i6], 1U); } for (c4_i7 = 0; c4_i7 < 2; c4_i7++) { _SFD_DATA_RANGE_CHECK((*c4_b_ref)[c4_i7], 2U); } _SFD_DATA_RANGE_CHECK(*c4_b_md, 3U); _SFD_DATA_RANGE_CHECK(*c4_c_v, 4U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_nv, 5U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_ny, 6U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_p, 7U); for (c4_i8 = 0; c4_i8 < 2; c4_i8++) { _SFD_DATA_RANGE_CHECK(chartInstance->c4_yoff[c4_i8], 8U); } _SFD_DATA_RANGE_CHECK(chartInstance->c4_voff, 9U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_md, 10U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_ref, 11U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c4_openloopflag, 12U); chartInstance->c4_sfEvent = CALL_EVENT; _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); c4_hoistedGlobal = *c4_b_md; for (c4_i9 = 0; c4_i9 < 2; c4_i9++) { c4_ref[c4_i9] = (*c4_b_ref)[c4_i9]; } c4_md = c4_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 16U, 16U, c4_debug_family_names, c4_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c4_DataType, 0U, c4_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_nv, 1U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_ny, 2U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_p, 3U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c4_c_yoff, 4U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_voff, 5U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_md, 6U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_ref, 7U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_openloopflag, 8U, c4_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargin, 9U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargout, 10U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c4_ref, 11U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_md, 12U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_rseq, 13U, c4_c_sf_marshallOut, c4_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_vseq, 14U, c4_b_sf_marshallOut, c4_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_v, 15U, c4_sf_marshallOut, c4_sf_marshallIn); c4_c_openloopflag = c4_b_openloopflag; c4_c_no_ref = c4_b_no_ref; c4_c_no_md = c4_b_no_md; c4_c_voff = c4_b_voff; for (c4_i10 = 0; c4_i10 < 2; c4_i10++) { c4_c_yoff[c4_i10] = 0.0; } c4_c_p = c4_b_p; c4_c_ny = c4_b_ny; c4_c_nv = c4_b_nv; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 3); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 4); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 5); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 7); for (c4_i11 = 0; c4_i11 < 6; c4_i11++) { c4_DataType[c4_i11] = c4_cv0[c4_i11]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 8); for (c4_i12 = 0; c4_i12 < 10; c4_i12++) { c4_rseq[c4_i12] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 9); for (c4_i13 = 0; c4_i13 < 6; c4_i13++) { c4_vseq[c4_i13] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 10); c4_v = 0.0; _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 11); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 12); for (c4_i14 = 0; c4_i14 < 2; c4_i14++) { c4_u[c4_i14] = c4_ref[c4_i14]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c4_b_u = c4_md; c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); c4_c_u = c4_b_nv; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_c_u, 0, 0U, 0U, 0U, 0), FALSE); c4_d_u = c4_b_ny; c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", &c4_d_u, 0, 0U, 0U, 0U, 0), FALSE); c4_e_u = c4_b_p; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_e_u, 0, 0U, 0U, 0U, 0), FALSE); for (c4_i15 = 0; c4_i15 < 2; c4_i15++) { c4_f_u[c4_i15] = 0.0; } c4_f_y = NULL; sf_mex_assign(&c4_f_y, sf_mex_create("y", c4_f_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c4_g_u = c4_b_voff; c4_g_y = NULL; sf_mex_assign(&c4_g_y, sf_mex_create("y", &c4_g_u, 0, 0U, 0U, 0U, 0), FALSE); c4_h_u = c4_b_no_md; c4_h_y = NULL; sf_mex_assign(&c4_h_y, sf_mex_create("y", &c4_h_u, 0, 0U, 0U, 0U, 0), FALSE); c4_i_u = c4_b_no_ref; c4_i_y = NULL; sf_mex_assign(&c4_i_y, sf_mex_create("y", &c4_i_u, 0, 0U, 0U, 0U, 0), FALSE); c4_j_u = c4_b_openloopflag; c4_j_y = NULL; sf_mex_assign(&c4_j_y, sf_mex_create("y", &c4_j_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_refmd_double_mex", 3U, 10U, 14, c4_y, 14, c4_b_y, 14, c4_c_y, 14, c4_d_y, 14, c4_e_y, 14, c4_f_y, 14, c4_g_y, 14, c4_h_y, 14, c4_i_y, 14, c4_j_y, &c4_b_rseq, &c4_b_vseq, &c4_b_v); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_rseq), "rseq", c4_dv3); for (c4_i16 = 0; c4_i16 < 10; c4_i16++) { c4_rseq[c4_i16] = c4_dv3[c4_i16]; } c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_vseq), "vseq", c4_dv4); for (c4_i17 = 0; c4_i17 < 6; c4_i17++) { c4_vseq[c4_i17] = c4_dv4[c4_i17]; } c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_v), "v"); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, -18); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c4_b_rseq); sf_mex_destroy(&c4_b_vseq); sf_mex_destroy(&c4_b_v); for (c4_i18 = 0; c4_i18 < 10; c4_i18++) { (*c4_c_rseq)[c4_i18] = c4_rseq[c4_i18]; } for (c4_i19 = 0; c4_i19 < 6; c4_i19++) { (*c4_c_vseq)[c4_i19] = c4_vseq[c4_i19]; } *c4_c_v = c4_v; _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber) { } static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; real_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(real_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_v; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_v = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); *(real_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i20; real_T c4_b_inData[6]; int32_T c4_i21; real_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i20 = 0; c4_i20 < 6; c4_i20++) { c4_b_inData[c4_i20] = (*(real_T (*)[6])c4_inData)[c4_i20]; } for (c4_i21 = 0; c4_i21 < 6; c4_i21++) { c4_u[c4_i21] = c4_b_inData[c4_i21]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_vseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[6]; int32_T c4_i22; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_vseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); for (c4_i22 = 0; c4_i22 < 6; c4_i22++) { (*(real_T (*)[6])c4_outData)[c4_i22] = c4_y[c4_i22]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i23; real_T c4_b_inData[10]; int32_T c4_i24; real_T c4_u[10]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i23 = 0; c4_i23 < 10; c4_i23++) { c4_b_inData[c4_i23] = (*(real_T (*)[10])c4_inData)[c4_i23]; } for (c4_i24 = 0; c4_i24 < 10; c4_i24++) { c4_u[c4_i24] = c4_b_inData[c4_i24]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_rseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[10]; int32_T c4_i25; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_rseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); for (c4_i25 = 0; c4_i25 < 10; c4_i25++) { (*(real_T (*)[10])c4_outData)[c4_i25] = c4_y[c4_i25]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i26; real_T c4_b_inData[2]; int32_T c4_i27; real_T c4_u[2]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i26 = 0; c4_i26 < 2; c4_i26++) { c4_b_inData[c4_i26] = (*(real_T (*)[2])c4_inData)[c4_i26]; } for (c4_i27 = 0; c4_i27 < 2; c4_i27++) { c4_u[c4_i27] = c4_b_inData[c4_i27]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; boolean_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(boolean_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i28; char_T c4_b_inData[6]; int32_T c4_i29; char_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i28 = 0; c4_i28 < 6; c4_i28++) { c4_b_inData[c4_i28] = (*(char_T (*)[6])c4_inData)[c4_i28]; } for (c4_i29 = 0; c4_i29 < 6; c4_i29++) { c4_u[c4_i29] = c4_b_inData[c4_i29]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c4_nameCaptureInfo = NULL; c4_nameCaptureInfo = NULL; sf_mex_assign(&c4_nameCaptureInfo, sf_mex_createstruct("structure", 2, 2, 1), FALSE); c4_info_helper(&c4_nameCaptureInfo); sf_mex_emlrtNameCapturePostProcessR2012a(&c4_nameCaptureInfo); return c4_nameCaptureInfo; } static void c4_info_helper(const mxArray **c4_info) { const mxArray *c4_rhs0 = NULL; const mxArray *c4_lhs0 = NULL; const mxArray *c4_rhs1 = NULL; const mxArray *c4_lhs1 = NULL; sf_mex_addfield(*c4_info, c4_emlrt_marshallOut(""), "context", "context", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("mtimes"), "name", "name", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m"), "resolved", "resolved", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363688678U), "fileTimeLo", "fileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 0); sf_mex_assign(&c4_rhs0, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs0, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs0), "rhs", "rhs", 0); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs0), "lhs", "lhs", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m!common_checks"), "context", "context", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "coder.internal.isBuiltInNumeric"), "name", "name", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[IXE]$matlabroot$/toolbox/shared/coder/coder/+coder/+internal/isBuiltInNumeric.m"), "resolved", "resolved", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363689356U), "fileTimeLo", "fileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 1); sf_mex_assign(&c4_rhs1, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs1, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs1), "rhs", "rhs", 1); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs1), "lhs", "lhs", 1); sf_mex_destroy(&c4_rhs0); sf_mex_destroy(&c4_lhs0); sf_mex_destroy(&c4_rhs1); sf_mex_destroy(&c4_lhs1); } static const mxArray *c4_emlrt_marshallOut(char * c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 15, 0U, 0U, 0U, 2, 1, strlen (c4_u)), FALSE); return c4_y; } static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 7, 0U, 0U, 0U, 0), FALSE); return c4_y; } static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[10]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); } static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[10]) { real_T c4_dv5[10]; int32_T c4_i30; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv5, 1, 0, 0U, 1, 0U, 1, 10); for (c4_i30 = 0; c4_i30 < 10; c4_i30++) { c4_y[c4_i30] = c4_dv5[c4_i30]; } sf_mex_destroy(&c4_u); } static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[6]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); } static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[6]) { real_T c4_dv6[6]; int32_T c4_i31; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv6, 1, 0, 0U, 1, 0U, 1, 6); for (c4_i31 = 0; c4_i31 < 6; c4_i31++) { c4_y[c4_i31] = c4_dv6[c4_i31]; } sf_mex_destroy(&c4_u); } static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier) { real_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); return c4_y; } static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { real_T c4_y; real_T c4_d7; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_d7, 1, 0, 0U, 0, 0U, 0); c4_y = c4_d7; sf_mex_destroy(&c4_u); return c4_y; } static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(int32_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { int32_T c4_y; int32_T c4_i32; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_i32, 1, 6, 0U, 0, 0U, 0); c4_y = c4_i32; sf_mex_destroy(&c4_u); return c4_y; } static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_b_sfEvent; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; int32_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_b_sfEvent = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_sfEvent), &c4_thisId); sf_mex_destroy(&c4_b_sfEvent); *(int32_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static void c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]) { real_T c4_dv7[2]; int32_T c4_i33; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv7, 1, 0, 0U, 1, 0U, 1, 2); for (c4_i33 = 0; c4_i33 < 2; c4_i33++) { c4_y[c4_i33] = c4_dv7[c4_i33]; } sf_mex_destroy(&c4_u); } static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_yoff; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[2]; int32_T c4_i34; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_yoff = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_yoff), &c4_thisId, c4_y); sf_mex_destroy(&c4_c_yoff); for (c4_i34 = 0; c4_i34 < 2; c4_i34++) { (*(real_T (*)[2])c4_outData)[c4_i34] = c4_y[c4_i34]; } sf_mex_destroy(&c4_mxArrayInData); } static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { boolean_T c4_y; boolean_T c4_b0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_b0, 1, 11, 0U, 0, 0U, 0); c4_y = c4_b0; sf_mex_destroy(&c4_u); return c4_y; } static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_openloopflag; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; boolean_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_openloopflag = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_openloopflag), &c4_thisId); sf_mex_destroy(&c4_c_openloopflag); *(boolean_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier) { uint8_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_k_emlrt_marshallIn(chartInstance, sf_mex_dup (c4_b_is_active_c4_mpclib), &c4_thisId); sf_mex_destroy(&c4_b_is_active_c4_mpclib); return c4_y; } static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { uint8_T c4_y; uint8_T c4_u0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_u0, 1, 3, 0U, 0, 0U, 0); c4_y = c4_u0; sf_mex_destroy(&c4_u); return c4_y; } static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c4_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2060684023U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3607261543U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(4175904135U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1907083303U); } mxArray *sf_c4_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("W9pU18Rzyx5XpPp6ECbqY"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,2,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,8,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,3,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c4_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c4_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x4'type','srcId','name','auxInfo'{{M[1],M[21],T\"rseq\",},{M[1],M[19],T\"v\",},{M[1],M[20],T\"vseq\",},{M[8],M[0],T\"is_active_c4_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 4, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c4_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 4, 1, 1, 13, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,2,0,1,"rseq"); _SFD_SET_DATA_PROPS(1,2,0,1,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"ref"); _SFD_SET_DATA_PROPS(3,1,1,0,"md"); _SFD_SET_DATA_PROPS(4,2,0,1,"v"); _SFD_SET_DATA_PROPS(5,10,0,0,"nv"); _SFD_SET_DATA_PROPS(6,10,0,0,"ny"); _SFD_SET_DATA_PROPS(7,10,0,0,"p"); _SFD_SET_DATA_PROPS(8,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(9,10,0,0,"voff"); _SFD_SET_DATA_PROPS(10,10,0,0,"no_md"); _SFD_SET_DATA_PROPS(11,10,0,0,"no_ref"); _SFD_SET_DATA_PROPS(12,10,0,0,"openloopflag"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,856); _SFD_CV_INIT_EML_IF(0,1,0,194,225,703,855); _SFD_CV_INIT_EML_IF(0,1,1,447,467,577,702); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_c_sf_marshallOut,(MexInFcnForType) c4_c_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_b_sf_marshallOut,(MexInFcnForType) c4_b_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(4,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType) c4_e_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(12,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_e_sf_marshallOut,(MexInFcnForType)c4_f_sf_marshallIn); { real_T *c4_md; real_T *c4_v; real_T (*c4_rseq)[10]; real_T (*c4_vseq)[6]; real_T (*c4_ref)[2]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_ref = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 0); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SET_DATA_VALUE_PTR(0U, *c4_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c4_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c4_ref); _SFD_SET_DATA_VALUE_PTR(3U, c4_md); _SFD_SET_DATA_VALUE_PTR(4U, c4_v); _SFD_SET_DATA_VALUE_PTR(5U, &chartInstance->c4_nv); _SFD_SET_DATA_VALUE_PTR(6U, &chartInstance->c4_ny); _SFD_SET_DATA_VALUE_PTR(7U, &chartInstance->c4_p); _SFD_SET_DATA_VALUE_PTR(8U, chartInstance->c4_yoff); _SFD_SET_DATA_VALUE_PTR(9U, &chartInstance->c4_voff); _SFD_SET_DATA_VALUE_PTR(10U, &chartInstance->c4_no_md); _SFD_SET_DATA_VALUE_PTR(11U, &chartInstance->c4_no_ref); _SFD_SET_DATA_VALUE_PTR(12U, &chartInstance->c4_openloopflag); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "xf8liFQGgsdDdPF7ystbhB"; } static void sf_opaque_initialize_c4_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); initialize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c4_mpclib(void *chartInstanceVar) { enable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c4_mpclib(void *chartInstanceVar) { disable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c4_mpclib(void *chartInstanceVar) { sf_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c4_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c4_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c4_mpclib(S); } static void sf_opaque_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c4_mpclib(S, st); } static void sf_opaque_terminate_c4_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c4_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c4_mpclib(SimStruct *S) { /* Actual parameters from chart: no_md no_ref nv ny openloopflag p voff yoff */ const char_T *rtParamNames[] = { "no_md", "no_ref", "nv", "ny", "openloopflag", "p", "voff", "yoff" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for no_md*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for no_ref*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for nv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for voff*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 4); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,4,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,4, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,4); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,4,2); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,4,3); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=3; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 2; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,4); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(1010599357U)); ssSetChecksum1(S,(1840766416U)); ssSetChecksum2(S,(2527524482U)); ssSetChecksum3(S,(3455074465U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c4_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c4_mpclib(SimStruct *S) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)utMalloc(sizeof (SFc4_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc4_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c4_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c4_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c4_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c4_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c4_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c4_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c4_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c4_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c4_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c4_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c4_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c4_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c4_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c4_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c4_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/c4_mpclib.h ================================================ #ifndef __c4_mpclib_h__ #define __c4_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc4_mpclibInstanceStruct #define typedef_SFc4_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c4_sfEvent; boolean_T c4_isStable; boolean_T c4_doneDoubleBufferReInit; uint8_T c4_is_active_c4_mpclib; real_T c4_nv; real_T c4_ny; real_T c4_p; real_T c4_yoff[2]; real_T c4_voff; real_T c4_no_md; real_T c4_no_ref; boolean_T c4_openloopflag; } SFc4_mpclibInstanceStruct; #endif /*typedef_SFc4_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); extern void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/mpclib_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpclib_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/mpclib_sfun.c ================================================ /* Include files */ #include "mpclib_sfun.h" #include "mpclib_sfun_debug_macros.h" #include "c3_mpclib.h" #include "c4_mpclib.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpclibMachineNumber_; /* Function Declarations */ /* Function Definitions */ void mpclib_initializer(void) { } void mpclib_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpclib_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (chartFileNumber==3) { c3_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } if (chartFileNumber==4) { c4_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } return 0; } unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>2 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"library")) { char machineName[100]; mxGetString(prhs[2], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (!strcmp(machineName,"mpclib")) { if (nrhs==3) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(245586160U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2675397657U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(2405336008U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2115083677U); } else if (nrhs==4) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[3]); switch (chartFileNumber) { case 3: { extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); sf_c3_mpclib_get_check_sum(plhs); break; } case 4: { extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); sf_c4_mpclib_get_check_sum(plhs); break; } default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else { return 0; } } else { return 0; } } else { return 0; } } else { return 0; } return 1; #else return 0; #endif } unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(aiChksum, "IWfv4yRSzPuXdHsJRcV3N") == 0) { extern mxArray *sf_c3_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c3_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } case 4: { if (strcmp(aiChksum, "W9pU18Rzyx5XpPp6ECbqY") == 0) { extern mxArray *sf_c4_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c4_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c3_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } case 4: { extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c4_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "UZcJkDgeSZoOkVp9M5i6hE") == 0) { extern mxArray *sf_c3_mpclib_third_party_uses_info(void); plhs[0] = sf_c3_mpclib_third_party_uses_info(); break; } } case 4: { if (strcmp(tpChksum, "xf8liFQGgsdDdPF7ystbhB") == 0) { extern mxArray *sf_c4_mpclib_third_party_uses_info(void); plhs[0] = sf_c4_mpclib_third_party_uses_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "UZcJkDgeSZoOkVp9M5i6hE") == 0) { extern mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c3_mpclib_updateBuildInfo_args_info(); break; } } case 4: { if (strcmp(tpChksum, "xf8liFQGgsdDdPF7ystbhB") == 0) { extern mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c4_mpclib_updateBuildInfo_args_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpclib_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpclibMachineNumber_ = sf_debug_initialize_machine(debugInstance,"mpclib", "sfun",1,2,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance,_mpclibMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance,_mpclibMachineNumber_,0); } void mpclib_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpclib", "mpc_nonlinear_setoutdist"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/mpclib_sfun.h ================================================ #ifndef __mpclib_sfun_h__ #define __mpclib_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpclibMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpclib_initializer(void); extern void mpclib_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpclib_optimization_info(void); extern void unload_mpclib_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/mpclib_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpclib TARGET = sfun CHART_SRCS = c3_mpclib.c c4_mpclib.c MACHINE_SRC = mpclib_sfun.c MACHINE_REG = MAKEFILE = mpclib_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpclib_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- $(MACHINE)_$(TARGET).lib : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) -lib /OUT:$(MACHINE)_$(TARGET).lib @$(OBJLIST_FILE) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Created Stateflow library $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/mpclib_sfun.mol ================================================ mpclib_sfun.obj c3_mpclib.obj c4_mpclib.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/mpclib_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpclibMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_setoutdist/mpclib/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/mpc_nonlinear_ss_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpc_nonlinear_ss_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/mpc_nonlinear_ss_sfun.c ================================================ /* Include files */ #include "mpc_nonlinear_ss_sfun.h" #include "mpc_nonlinear_ss_sfun_debug_macros.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpc_nonlinear_ssMachineNumber_; real_T _sfTime_; /* Function Declarations */ /* Function Definitions */ void mpc_nonlinear_ss_initializer(void) { } void mpc_nonlinear_ss_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpc_nonlinear_ss_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { return 0; } unsigned int sf_mpc_nonlinear_ss_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>1 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"machine")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3384101062U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3261109795U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3479061528U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(3061899716U); } else if (!strcmp(commandName,"exportedFcn")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0U); } else if (!strcmp(commandName,"makefile")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(811215406U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2252609922U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(1649206936U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(311912670U); } else if (nrhs==3 && !strcmp(commandName,"chart")) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[2]); switch (chartFileNumber) { default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else if (!strcmp(commandName,"target")) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(3031367619U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(4001028638U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3978939492U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(838979348U); } else { return 0; } } else { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(4136651476U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(1159628840U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(3821250505U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(668834363U); } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_ss_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_ss_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpc_nonlinear_ss_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpc_nonlinear_ss_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpc_nonlinear_ss_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpc_nonlinear_ssMachineNumber_ = sf_debug_initialize_machine(debugInstance, "mpc_nonlinear_ss","sfun",0,0,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance, _mpc_nonlinear_ssMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance, _mpc_nonlinear_ssMachineNumber_,0); } void mpc_nonlinear_ss_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpc_nonlinear_ss_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info( "mpc_nonlinear_ss", "mpc_nonlinear_ss"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpc_nonlinear_ss_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/mpc_nonlinear_ss_sfun.h ================================================ #ifndef __mpc_nonlinear_ss_sfun_h__ #define __mpc_nonlinear_ss_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpc_nonlinear_ssMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpc_nonlinear_ss_initializer(void); extern void mpc_nonlinear_ss_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpc_nonlinear_ss_optimization_info(void); extern void unload_mpc_nonlinear_ss_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/mpc_nonlinear_ss_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpc_nonlinear_ss TARGET = sfun CHART_SRCS = MACHINE_SRC = mpc_nonlinear_ss_sfun.c MACHINE_REG = mpc_nonlinear_ss_sfun_registry.c MAKEFILE = mpc_nonlinear_ss_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpc_nonlinear_ss_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = "E:\2019-˼ʻģԤ\3\chapter3 \slprj\_sfprj\mpc_nonlinear_ss\mpclib\sfun\src\mpclib_sfun.lib" BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- MEX_FILE_NAME_WO_EXT = $(MACHINE)_$(TARGET) MEX_FILE_NAME = $(MEX_FILE_NAME_WO_EXT).mexw64 MEX_FILE_CSF = all : $(MEX_FILE_NAME) $(MEX_FILE_CSF) TMWLIB = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmx.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmex.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmat.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libfixedpoint.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libut.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwmathutil.lib" "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libemlrt.lib" "C:\Program Files\MATLAB\R2013b\lib\win64\libippmwipt.lib" $(MEX_FILE_NAME) : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) $(LDFLAGS) /OUT:$(MEX_FILE_NAME) /map:"$(MEX_FILE_NAME_WO_EXT).map"\ $(USER_LIBS) $(SFCLIB) $(AUX_LNK_OBJS)\ $(TMWLIB) $(LINK_MACHINE_LIBS) $(DSP_LIBS) $(BLAS_LIBS) $(THIRD_PARTY_LIBS)\ @$(OBJLIST_FILE) mt -outputresource:"$(MEX_FILE_NAME);2" -manifest "$(MEX_FILE_NAME).manifest" @echo ### Created $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/mpc_nonlinear_ss_sfun.mexw64.manifest ================================================ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/mpc_nonlinear_ss_sfun.mol ================================================ mpc_nonlinear_ss_sfun.obj mpc_nonlinear_ss_sfun_registry.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/mpc_nonlinear_ss_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpc_nonlinear_ssMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpc_nonlinear_ssMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/mpc_nonlinear_ss_sfun_registry.c ================================================ #include "mpc_nonlinear_ss_sfun.h" #include "sfcdebug.h" struct SfDebugInstanceStruct; struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct = NULL; #define PROCESS_MEX_SFUNCTION_CMD_LINE_CALL unsigned int sf_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_ss_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); if (sf_mpc_nonlinear_ss_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mpclib_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; return 0; } unsigned int sf_process_autoinheritance_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_ss_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear_ss") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_ss_autoinheritance_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_autoinheritance_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_third_party_uses_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_ss_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear_ss") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_ss_third_party_uses_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_third_party_uses_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_updateBuildInfo_args_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_ss_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 4) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear_ss") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpc_nonlinear_ss_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[3] = { NULL, NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; newRhs[2] = prhs[3]; return sf_mpclib_updateBuildInfo_args_info(nlhs,plhs,3,newRhs); } return 0; } unsigned int sf_process_get_eml_resolved_functions_info_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { extern unsigned int sf_mpc_nonlinear_ss_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); extern unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); char commandName[64]; char machineName[128]; if (nrhs < 3) { return 0; } if (!mxIsChar(prhs[0]) || !mxIsChar(prhs[1])) return 0; mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; mxGetString(prhs[1], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (strcmp(machineName, "mpc_nonlinear_ss") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpc_nonlinear_ss_get_eml_resolved_functions_info(nlhs,plhs,2, newRhs); } if (strcmp(machineName, "mpclib") == 0) { const mxArray *newRhs[2] = { NULL, NULL }; newRhs[0] = prhs[0]; newRhs[1] = prhs[2]; return sf_mpclib_get_eml_resolved_functions_info(nlhs,plhs,2,newRhs); } return 0; } unsigned int sf_mex_unlock_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_mex_unlock")) return 0; while (mexIsLocked()) { mexUnlock(); } return(1); } extern unsigned int sf_debug_api(struct SfDebugInstanceStruct* debugInstance, int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ); static unsigned int sf_debug_api_wrapper( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { return sf_debug_api(sfGlobalDebugInstanceStruct, nlhs, plhs, nrhs, prhs); } static unsigned int ProcessMexSfunctionCmdLineCall(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[]) { if (sf_debug_api_wrapper(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_check_sum_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_mex_unlock_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_autoinheritance_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_third_party_uses_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_updateBuildInfo_args_info_call(nlhs,plhs,nrhs,prhs)) return 1; if (sf_process_get_eml_resolved_functions_info_call(nlhs,plhs,nrhs,prhs)) return 1; mexErrMsgTxt("Unsuccessful command."); return 0; } static unsigned int sfGlobalMdlStartCallCounts = 0; unsigned int sf_machine_global_initializer_called(void) { return(sfGlobalMdlStartCallCounts > 0); } extern unsigned int sf_mpc_nonlinear_ss_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); extern unsigned int sf_mpclib_method_dispatcher(SimStruct *S, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data); unsigned int sf_machine_global_method_dispatcher(SimStruct *simstructPtr, const char *machineName, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (!strcmp(machineName,"mpc_nonlinear_ss")) { return(sf_mpc_nonlinear_ss_method_dispatcher(simstructPtr,chartFileNumber, specsCksum,method,data)); } if (!strcmp(machineName,"mpclib")) { return(sf_mpclib_method_dispatcher(simstructPtr,chartFileNumber,specsCksum, method,data)); } return 0; } extern void mpc_nonlinear_ss_terminator(void); extern void mpclib_terminator(void); void sf_machine_global_terminator(void) { sfGlobalMdlStartCallCounts--; if (sfGlobalMdlStartCallCounts == 0) { mpc_nonlinear_ss_terminator(); mpclib_terminator(); sf_debug_terminate(sfGlobalDebugInstanceStruct); sfGlobalDebugInstanceStruct = NULL; } return; } extern void mpc_nonlinear_ss_initializer(void); extern void mpclib_initializer(void); extern void mpc_nonlinear_ss_register_exported_symbols(SimStruct* S); extern void mpclib_register_exported_symbols(SimStruct* S); extern void mpc_nonlinear_ss_debug_initialize(struct SfDebugInstanceStruct*); extern void mpclib_debug_initialize(struct SfDebugInstanceStruct*); void sf_register_machine_exported_symbols(SimStruct* S) { mpc_nonlinear_ss_register_exported_symbols(S); mpclib_register_exported_symbols(S); } bool callCustomFcn(char initFlag) { return false; } void sf_machine_global_initializer(SimStruct* S) { bool simModeIsRTWGen = sim_mode_is_rtw_gen(S); sfGlobalMdlStartCallCounts++; if (sfGlobalMdlStartCallCounts == 1) { if (simModeIsRTWGen) { sf_register_machine_exported_symbols(S); } sfGlobalDebugInstanceStruct = sf_debug_create_debug_instance_struct(); if (!simModeIsRTWGen) { mpc_nonlinear_ss_debug_initialize(sfGlobalDebugInstanceStruct); } mpc_nonlinear_ss_initializer(); if (!simModeIsRTWGen) { mpclib_debug_initialize(sfGlobalDebugInstanceStruct); } mpclib_initializer(); } return; } #define PROCESS_MEX_SFUNCTION_EVERY_CALL unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]); #include "simulink.c" /* MEX-file interface mechanism */ static void sf_machine_load_sfunction_ptrs(SimStruct *S) { ssSetmdlInitializeSampleTimes(S,__mdlInitializeSampleTimes); ssSetmdlInitializeConditions(S,__mdlInitializeConditions); ssSetmdlOutputs(S,__mdlOutputs); ssSetmdlTerminate(S,__mdlTerminate); ssSetmdlRTW(S,__mdlRTW); ssSetmdlSetWorkWidths(S,__mdlSetWorkWidths); #if defined(MDL_HASSIMULATIONCONTEXTIO) ssSetmdlSimulationContextIO(S,__mdlSimulationContextIO); #endif #if defined(MDL_START) ssSetmdlStart(S,__mdlStart); #endif #if defined(RTW_GENERATED_ENABLE) ssSetRTWGeneratedEnable(S,__mdlEnable); #endif #if defined(RTW_GENERATED_DISABLE) ssSetRTWGeneratedDisable(S,__mdlDisable); #endif #if defined(MDL_ENABLE) ssSetmdlEnable(S,__mdlEnable); #endif #if defined(MDL_DISABLE) ssSetmdlDisable(S,__mdlDisable); #endif #if defined(MDL_SIM_STATUS_CHANGE) ssSetmdlSimStatusChange(S,__mdlSimStatusChange); #endif #if defined(MDL_EXT_MODE_EXEC) ssSetmdlExtModeExec(S,__mdlExtModeExec); #endif #if defined(MDL_UPDATE) ssSetmdlUpdate(S,__mdlUpdate); #endif #if defined(MDL_PROCESS_PARAMETERS) ssSetmdlProcessParameters(S,__mdlProcessParameters); #endif #if defined(MDL_ZERO_CROSSINGS) ssSetmdlZeroCrossings(S,__mdlZeroCrossings); #endif #if defined(MDL_DERIVATIVES) ssSetmdlDerivatives(S,__mdlDerivatives); #endif } unsigned int ProcessMexSfunctionEveryCall(int_T nlhs, mxArray *plhs[], int_T nrhs, const mxArray *prhs[]) { if (nlhs < 0) { SimStruct *S = (SimStruct *)plhs[_LHS_SS]; int_T flag = (int_T)(*(real_T*)mxGetPr(prhs[_RHS_FLAG])); if (flag == SS_CALL_MDL_SET_WORK_WIDTHS) { sf_machine_load_sfunction_ptrs(S); } } return 0; } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/_self/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/c3_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c3_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c3_b_p (5.0) #define c3_b_nu (3.0) #define c3_b_isQP (FALSE) #define c3_b_ny (2.0) #define c3_b_degrees (6.0) #define c3_b_Mlim (0.0) #define c3_b_Mv (0.0) #define c3_b_maxiter (120.0) #define c3_b_nxQP (11.0) #define c3_b_openloopflag (FALSE) #define c3_b_lims_inport (0.0) #define c3_b_no_umin (1.0) #define c3_b_no_umax (1.0) #define c3_b_no_ymin (1.0) #define c3_b_no_ymax (1.0) #define c3_b_switch_inport (0.0) #define c3_b_no_switch (1.0) #define c3_b_enable_value (0.0) #define c3_b_return_cost (0.0) #define c3_b_return_sequence (0.0) #define c3_b_no_ywt (1.0) #define c3_b_no_duwt (1.0) #define c3_b_no_rhoeps (1.0) #define c3_b_Wy (0.0) #define c3_b_Wdu (0.0) #define c3_b_Jm (0.0) #define c3_b_SuJm (0.0) #define c3_b_I2JmWuI2Jm (0.0) #define c3_b_Su1 (0.0) #define c3_b_I1WuI2Jm (0.0) #define c3_b_Sx (0.0) #define c3_b_Hv (0.0) #define c3_b_Wu (0.0) #define c3_b_I1 (0.0) /* Variable Declarations */ /* Variable Definitions */ static const char * c3_debug_family_names[71] = { "DataType", "isQP", "nu", "ny", "degrees", "Hinv", "Kx", "Ku1", "Kut", "Kr", "Kv", "Mlim", "Mx", "Mu1", "Mv", "z_degrees", "utarget", "p", "uoff", "yoff", "maxiter", "nxQP", "openloopflag", "lims_inport", "no_umin", "no_umax", "no_ymin", "no_ymax", "switch_inport", "no_switch", "enable_value", "return_cost", "H", "return_sequence", "blocking_moves", "Linv", "Ac", "no_ywt", "no_duwt", "no_rhoeps", "Wy", "Wdu", "Jm", "SuJm", "I2JmWuI2Jm", "Su1", "I1WuI2Jm", "Sx", "Hv", "Wu", "I1", "nargin", "nargout", "rseq", "vseq", "x", "old_u", "iA", "umin", "umax", "ymin", "ymax", "switch_in", "ywt", "duwt", "rhoeps", "u", "cost", "useq", "status", "iAout" }; /* Function Declarations */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st); static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber); static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static const mxArray *c3_t_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static void c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier, real_T c3_y[3]); static void c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]); static real_T c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_cost, const char_T *c3_identifier); static real_T c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[15]); static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]); static void c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[7]); static void c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[7]); static const mxArray *c3_u_sf_marshallOut(void *chartInstanceVoid, void *c3_inData); static int32_T c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static boolean_T c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[36]); static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[66]); static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]); static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[90]); static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]); static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[11]); static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]); static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]); static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]); static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[2]); static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[5]); static void c3_q_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static void c3_v_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]); static void c3_r_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData); static uint8_T c3_w_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier); static uint8_T c3_x_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId); static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { chartInstance->c3_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c3_is_active_c3_mpclib = 0U; } static void initialize_params_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_d0; real_T c3_d1; real_T c3_d2; real_T c3_d3; real_T c3_dv0[36]; int32_T c3_i0; real_T c3_dv1[66]; int32_T c3_i1; real_T c3_dv2[18]; int32_T c3_i2; real_T c3_dv3[90]; int32_T c3_i3; real_T c3_dv4[60]; int32_T c3_i4; real_T c3_dv5[36]; int32_T c3_i5; real_T c3_d4; real_T c3_dv6[11]; int32_T c3_i6; real_T c3_dv7[3]; int32_T c3_i7; real_T c3_d5; real_T c3_dv8[6]; int32_T c3_i8; real_T c3_dv9[15]; int32_T c3_i9; real_T c3_d6; real_T c3_dv10[3]; int32_T c3_i10; real_T c3_dv11[2]; int32_T c3_i11; real_T c3_d7; real_T c3_d8; real_T c3_d9; real_T c3_d10; real_T c3_d11; real_T c3_d12; real_T c3_d13; real_T c3_d14; real_T c3_d15; real_T c3_d16; real_T c3_d17; real_T c3_d18; real_T c3_dv12[36]; int32_T c3_i12; real_T c3_d19; real_T c3_dv13[5]; int32_T c3_i13; real_T c3_dv14[36]; int32_T c3_i14; real_T c3_dv15[6]; int32_T c3_i15; real_T c3_d20; real_T c3_d21; real_T c3_d22; real_T c3_d23; real_T c3_d24; real_T c3_d25; real_T c3_d26; real_T c3_d27; real_T c3_d28; real_T c3_d29; real_T c3_d30; real_T c3_d31; real_T c3_d32; real_T c3_d33; sf_set_error_prefix_string( "Error evaluating data 'isQP' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 27, 0), &c3_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_isQP = (c3_d0 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nu' in the parent workspace.\n"); sf_mex_import_named("nu", sf_mex_get_sfun_param(chartInstance->S, 38, 0), &c3_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nu = c3_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 40, 0), &c3_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_ny = c3_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'degrees' in the parent workspace.\n"); sf_mex_import_named("degrees", sf_mex_get_sfun_param(chartInstance->S, 25, 0), &c3_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_degrees = c3_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hinv' in the parent workspace.\n"); sf_mex_import_named("Hinv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), c3_dv0, 0, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i0 = 0; c3_i0 < 36; c3_i0++) { chartInstance->c3_Hinv[c3_i0] = c3_dv0[c3_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kx' in the parent workspace.\n"); sf_mex_import_named("Kx", sf_mex_get_sfun_param(chartInstance->S, 12, 0), c3_dv1, 0, 0, 0U, 1, 0U, 2, 11, 6); for (c3_i1 = 0; c3_i1 < 66; c3_i1++) { chartInstance->c3_Kx[c3_i1] = c3_dv1[c3_i1]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ku1' in the parent workspace.\n"); sf_mex_import_named("Ku1", sf_mex_get_sfun_param(chartInstance->S, 9, 0), c3_dv2, 0, 0, 0U, 1, 0U, 2, 3, 6); for (c3_i2 = 0; c3_i2 < 18; c3_i2++) { chartInstance->c3_Ku1[c3_i2] = c3_dv2[c3_i2]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kut' in the parent workspace.\n"); sf_mex_import_named("Kut", sf_mex_get_sfun_param(chartInstance->S, 10, 0), c3_dv3, 0, 0, 0U, 1, 0U, 2, 15, 6); for (c3_i3 = 0; c3_i3 < 90; c3_i3++) { chartInstance->c3_Kut[c3_i3] = c3_dv3[c3_i3]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kr' in the parent workspace.\n"); sf_mex_import_named("Kr", sf_mex_get_sfun_param(chartInstance->S, 8, 0), c3_dv4, 0, 0, 0U, 1, 0U, 2, 10, 6); for (c3_i4 = 0; c3_i4 < 60; c3_i4++) { chartInstance->c3_Kr[c3_i4] = c3_dv4[c3_i4]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Kv' in the parent workspace.\n"); sf_mex_import_named("Kv", sf_mex_get_sfun_param(chartInstance->S, 11, 0), c3_dv5, 0, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i5 = 0; c3_i5 < 36; c3_i5++) { chartInstance->c3_Kv[c3_i5] = c3_dv5[c3_i5]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mlim' in the parent workspace.\n"); sf_mex_import_named("Mlim", sf_mex_get_sfun_param(chartInstance->S, 14, 0), &c3_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Mlim = c3_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mx' in the parent workspace.\n"); sf_mex_import_named("Mx", sf_mex_get_sfun_param(chartInstance->S, 17, 0), c3_dv6, 0, 0, 0U, 1, 0U, 2, 1, 11); for (c3_i6 = 0; c3_i6 < 11; c3_i6++) { chartInstance->c3_Mx[c3_i6] = c3_dv6[c3_i6]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mu1' in the parent workspace.\n"); sf_mex_import_named("Mu1", sf_mex_get_sfun_param(chartInstance->S, 15, 0), c3_dv7, 0, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i7 = 0; c3_i7 < 3; c3_i7++) { chartInstance->c3_Mu1[c3_i7] = c3_dv7[c3_i7]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Mv' in the parent workspace.\n"); sf_mex_import_named("Mv", sf_mex_get_sfun_param(chartInstance->S, 16, 0), &c3_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Mv = c3_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'z_degrees' in the parent workspace.\n"); sf_mex_import_named("z_degrees", sf_mex_get_sfun_param(chartInstance->S, 49, 0), c3_dv8, 0, 0, 0U, 1, 0U, 1, 6); for (c3_i8 = 0; c3_i8 < 6; c3_i8++) { chartInstance->c3_z_degrees[c3_i8] = c3_dv8[c3_i8]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'utarget' in the parent workspace.\n"); sf_mex_import_named("utarget", sf_mex_get_sfun_param(chartInstance->S, 47, 0), c3_dv9, 0, 0, 0U, 1, 0U, 1, 15); for (c3_i9 = 0; c3_i9 < 15; c3_i9++) { chartInstance->c3_utarget[c3_i9] = c3_dv9[c3_i9]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 42, 0), &c3_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_p = c3_d6; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'uoff' in the parent workspace.\n"); sf_mex_import_named("uoff", sf_mex_get_sfun_param(chartInstance->S, 46, 0), c3_dv10, 0, 0, 0U, 1, 0U, 1, 3); for (c3_i10 = 0; c3_i10 < 3; c3_i10++) { chartInstance->c3_uoff[c3_i10] = c3_dv10[c3_i10]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 48, 0), c3_dv11, 0, 0, 0U, 1, 0U, 1, 2); for (c3_i11 = 0; c3_i11 < 2; c3_i11++) { chartInstance->c3_yoff[c3_i11] = c3_dv11[c3_i11]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'maxiter' in the parent workspace.\n"); sf_mex_import_named("maxiter", sf_mex_get_sfun_param(chartInstance->S, 29, 0), &c3_d7, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_maxiter = c3_d7; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'nxQP' in the parent workspace.\n"); sf_mex_import_named("nxQP", sf_mex_get_sfun_param(chartInstance->S, 39, 0), &c3_d8, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_nxQP = c3_d8; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 41, 0), &c3_d9, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_openloopflag = (c3_d9 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'lims_inport' in the parent workspace.\n"); sf_mex_import_named("lims_inport", sf_mex_get_sfun_param(chartInstance->S, 28, 0), &c3_d10, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_lims_inport = c3_d10; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umin' in the parent workspace.\n"); sf_mex_import_named("no_umin", sf_mex_get_sfun_param(chartInstance->S, 34, 0), &c3_d11, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umin = c3_d11; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_umax' in the parent workspace.\n"); sf_mex_import_named("no_umax", sf_mex_get_sfun_param(chartInstance->S, 33, 0), &c3_d12, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_umax = c3_d12; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymin' in the parent workspace.\n"); sf_mex_import_named("no_ymin", sf_mex_get_sfun_param(chartInstance->S, 36, 0), &c3_d13, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymin = c3_d13; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ymax' in the parent workspace.\n"); sf_mex_import_named("no_ymax", sf_mex_get_sfun_param(chartInstance->S, 35, 0), &c3_d14, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ymax = c3_d14; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'switch_inport' in the parent workspace.\n"); sf_mex_import_named("switch_inport", sf_mex_get_sfun_param(chartInstance->S, 45, 0), &c3_d15, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_switch_inport = c3_d15; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_switch' in the parent workspace.\n"); sf_mex_import_named("no_switch", sf_mex_get_sfun_param(chartInstance->S, 32, 0), &c3_d16, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_switch = c3_d16; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'enable_value' in the parent workspace.\n"); sf_mex_import_named("enable_value", sf_mex_get_sfun_param(chartInstance->S, 26, 0), &c3_d17, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_enable_value = c3_d17; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_cost' in the parent workspace.\n"); sf_mex_import_named("return_cost", sf_mex_get_sfun_param(chartInstance->S, 43, 0), &c3_d18, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_cost = c3_d18; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'H' in the parent workspace.\n"); sf_mex_import_named("H", sf_mex_get_sfun_param(chartInstance->S, 1, 0), c3_dv12, 0, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i12 = 0; c3_i12 < 36; c3_i12++) { chartInstance->c3_H[c3_i12] = c3_dv12[c3_i12]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'return_sequence' in the parent workspace.\n"); sf_mex_import_named("return_sequence", sf_mex_get_sfun_param(chartInstance->S, 44, 0), &c3_d19, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_return_sequence = c3_d19; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'blocking_moves' in the parent workspace.\n"); sf_mex_import_named("blocking_moves", sf_mex_get_sfun_param(chartInstance->S, 24, 0), c3_dv13, 0, 0, 0U, 1, 0U, 2, 1, 5); for (c3_i13 = 0; c3_i13 < 5; c3_i13++) { chartInstance->c3_blocking_moves[c3_i13] = c3_dv13[c3_i13]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Linv' in the parent workspace.\n"); sf_mex_import_named("Linv", sf_mex_get_sfun_param(chartInstance->S, 13, 0), c3_dv14, 0, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i14 = 0; c3_i14 < 36; c3_i14++) { chartInstance->c3_Linv[c3_i14] = c3_dv14[c3_i14]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Ac' in the parent workspace.\n"); sf_mex_import_named("Ac", sf_mex_get_sfun_param(chartInstance->S, 0, 0), c3_dv15, 0, 0, 0U, 1, 0U, 2, 1, 6); for (c3_i15 = 0; c3_i15 < 6; c3_i15++) { chartInstance->c3_Ac[c3_i15] = c3_dv15[c3_i15]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ywt' in the parent workspace.\n"); sf_mex_import_named("no_ywt", sf_mex_get_sfun_param(chartInstance->S, 37, 0), &c3_d20, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_ywt = c3_d20; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_duwt' in the parent workspace.\n"); sf_mex_import_named("no_duwt", sf_mex_get_sfun_param(chartInstance->S, 30, 0), &c3_d21, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_duwt = c3_d21; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_rhoeps' in the parent workspace.\n"); sf_mex_import_named("no_rhoeps", sf_mex_get_sfun_param(chartInstance->S, 31, 0), &c3_d22, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_no_rhoeps = c3_d22; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wy' in the parent workspace.\n"); sf_mex_import_named("Wy", sf_mex_get_sfun_param(chartInstance->S, 23, 0), &c3_d23, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wy = c3_d23; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wdu' in the parent workspace.\n"); sf_mex_import_named("Wdu", sf_mex_get_sfun_param(chartInstance->S, 21, 0), &c3_d24, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wdu = c3_d24; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Jm' in the parent workspace.\n"); sf_mex_import_named("Jm", sf_mex_get_sfun_param(chartInstance->S, 7, 0), &c3_d25, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Jm = c3_d25; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'SuJm' in the parent workspace.\n"); sf_mex_import_named("SuJm", sf_mex_get_sfun_param(chartInstance->S, 19, 0), &c3_d26, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_SuJm = c3_d26; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I2JmWuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I2JmWuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c3_d27, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I2JmWuI2Jm = c3_d27; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Su1' in the parent workspace.\n"); sf_mex_import_named("Su1", sf_mex_get_sfun_param(chartInstance->S, 18, 0), &c3_d28, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Su1 = c3_d28; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1WuI2Jm' in the parent workspace.\n"); sf_mex_import_named("I1WuI2Jm", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c3_d29, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1WuI2Jm = c3_d29; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Sx' in the parent workspace.\n"); sf_mex_import_named("Sx", sf_mex_get_sfun_param(chartInstance->S, 20, 0), &c3_d30, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Sx = c3_d30; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Hv' in the parent workspace.\n"); sf_mex_import_named("Hv", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c3_d31, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Hv = c3_d31; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'Wu' in the parent workspace.\n"); sf_mex_import_named("Wu", sf_mex_get_sfun_param(chartInstance->S, 22, 0), &c3_d32, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_Wu = c3_d32; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'I1' in the parent workspace.\n"); sf_mex_import_named("I1", sf_mex_get_sfun_param(chartInstance->S, 4, 0), &c3_d33, 0, 0, 0U, 0, 0U, 0); chartInstance->c3_I1 = c3_d33; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c3_update_debugger_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { const mxArray *c3_st; const mxArray *c3_y = NULL; real_T c3_hoistedGlobal; real_T c3_u; const mxArray *c3_b_y = NULL; int32_T c3_i16; boolean_T c3_b_u[7]; const mxArray *c3_c_y = NULL; real_T c3_b_hoistedGlobal; real_T c3_c_u; const mxArray *c3_d_y = NULL; int32_T c3_i17; real_T c3_d_u[3]; const mxArray *c3_e_y = NULL; int32_T c3_i18; real_T c3_e_u[15]; const mxArray *c3_f_y = NULL; uint8_T c3_c_hoistedGlobal; uint8_T c3_f_u; const mxArray *c3_g_y = NULL; real_T *c3_cost; real_T *c3_status; real_T (*c3_useq)[15]; real_T (*c3_g_u)[3]; boolean_T (*c3_iAout)[7]; c3_iAout = (boolean_T (*)[7])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_g_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_st = NULL; c3_st = NULL; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_createcellarray(6), FALSE); c3_hoistedGlobal = *c3_cost; c3_u = c3_hoistedGlobal; c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 0, c3_b_y); for (c3_i16 = 0; c3_i16 < 7; c3_i16++) { c3_b_u[c3_i16] = (*c3_iAout)[c3_i16]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_b_u, 11, 0U, 1U, 0U, 1, 7), FALSE); sf_mex_setcell(c3_y, 1, c3_c_y); c3_b_hoistedGlobal = *c3_status; c3_c_u = c3_b_hoistedGlobal; c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", &c3_c_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 2, c3_d_y); for (c3_i17 = 0; c3_i17 < 3; c3_i17++) { c3_d_u[c3_i17] = (*c3_g_u)[c3_i17]; } c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", c3_d_u, 0, 0U, 1U, 0U, 1, 3), FALSE); sf_mex_setcell(c3_y, 3, c3_e_y); for (c3_i18 = 0; c3_i18 < 15; c3_i18++) { c3_e_u[c3_i18] = (*c3_useq)[c3_i18]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 2, 5, 3), FALSE); sf_mex_setcell(c3_y, 4, c3_f_y); c3_c_hoistedGlobal = chartInstance->c3_is_active_c3_mpclib; c3_f_u = c3_c_hoistedGlobal; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_f_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c3_y, 5, c3_g_y); sf_mex_assign(&c3_st, c3_y, FALSE); return c3_st; } static void set_sim_state_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_st) { const mxArray *c3_u; boolean_T c3_bv0[7]; int32_T c3_i19; real_T c3_dv16[3]; int32_T c3_i20; real_T c3_dv17[15]; int32_T c3_i21; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[7]; real_T (*c3_b_u)[3]; real_T (*c3_useq)[15]; c3_iAout = (boolean_T (*)[7])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_b_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c3_doneDoubleBufferReInit = TRUE; c3_u = sf_mex_dup(c3_st); *c3_cost = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 0)), "cost"); c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 1)), "iAout", c3_bv0); for (c3_i19 = 0; c3_i19 < 7; c3_i19++) { (*c3_iAout)[c3_i19] = c3_bv0[c3_i19]; } *c3_status = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell (c3_u, 2)), "status"); c3_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 3)), "u", c3_dv16); for (c3_i20 = 0; c3_i20 < 3; c3_i20++) { (*c3_b_u)[c3_i20] = c3_dv16[c3_i20]; } c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 4)), "useq", c3_dv17); for (c3_i21 = 0; c3_i21 < 15; c3_i21++) { (*c3_useq)[c3_i21] = c3_dv17[c3_i21]; } chartInstance->c3_is_active_c3_mpclib = c3_w_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c3_u, 5)), "is_active_c3_mpclib"); sf_mex_destroy(&c3_u); c3_update_debugger_state_c3_mpclib(chartInstance); sf_mex_destroy(&c3_st); } static void finalize_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void sf_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { int32_T c3_i22; int32_T c3_i23; int32_T c3_i24; int32_T c3_i25; int32_T c3_i26; int32_T c3_i27; int32_T c3_i28; int32_T c3_i29; int32_T c3_i30; int32_T c3_i31; int32_T c3_i32; int32_T c3_i33; int32_T c3_i34; int32_T c3_i35; int32_T c3_i36; int32_T c3_i37; int32_T c3_i38; int32_T c3_i39; int32_T c3_i40; int32_T c3_i41; int32_T c3_i42; int32_T c3_i43; int32_T c3_i44; int32_T c3_i45; int32_T c3_i46; int32_T c3_i47; int32_T c3_i48; int32_T c3_i49; int32_T c3_i50; int32_T c3_i51; real_T *c3_switch_in; real_T *c3_rhoeps; real_T *c3_cost; real_T *c3_status; boolean_T (*c3_iAout)[7]; real_T (*c3_useq)[15]; real_T (*c3_u)[3]; real_T (*c3_duwt)[3]; real_T (*c3_ywt)[2]; real_T (*c3_ymax)[2]; real_T (*c3_ymin)[2]; real_T (*c3_umax)[3]; real_T (*c3_umin)[3]; boolean_T (*c3_iA)[7]; real_T (*c3_old_u)[3]; real_T (*c3_x)[11]; real_T (*c3_vseq)[6]; real_T (*c3_rseq)[10]; c3_iAout = (boolean_T (*)[7])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[7])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[11])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 0U, chartInstance->c3_sfEvent); for (c3_i22 = 0; c3_i22 < 10; c3_i22++) { _SFD_DATA_RANGE_CHECK((*c3_rseq)[c3_i22], 0U); } for (c3_i23 = 0; c3_i23 < 6; c3_i23++) { _SFD_DATA_RANGE_CHECK((*c3_vseq)[c3_i23], 1U); } for (c3_i24 = 0; c3_i24 < 11; c3_i24++) { _SFD_DATA_RANGE_CHECK((*c3_x)[c3_i24], 2U); } for (c3_i25 = 0; c3_i25 < 3; c3_i25++) { _SFD_DATA_RANGE_CHECK((*c3_old_u)[c3_i25], 3U); } for (c3_i26 = 0; c3_i26 < 7; c3_i26++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iA)[c3_i26], 4U); } for (c3_i27 = 0; c3_i27 < 3; c3_i27++) { _SFD_DATA_RANGE_CHECK((*c3_umin)[c3_i27], 5U); } for (c3_i28 = 0; c3_i28 < 3; c3_i28++) { _SFD_DATA_RANGE_CHECK((*c3_umax)[c3_i28], 6U); } for (c3_i29 = 0; c3_i29 < 2; c3_i29++) { _SFD_DATA_RANGE_CHECK((*c3_ymin)[c3_i29], 7U); } for (c3_i30 = 0; c3_i30 < 2; c3_i30++) { _SFD_DATA_RANGE_CHECK((*c3_ymax)[c3_i30], 8U); } _SFD_DATA_RANGE_CHECK(*c3_switch_in, 9U); for (c3_i31 = 0; c3_i31 < 2; c3_i31++) { _SFD_DATA_RANGE_CHECK((*c3_ywt)[c3_i31], 10U); } for (c3_i32 = 0; c3_i32 < 3; c3_i32++) { _SFD_DATA_RANGE_CHECK((*c3_duwt)[c3_i32], 11U); } _SFD_DATA_RANGE_CHECK(*c3_rhoeps, 12U); for (c3_i33 = 0; c3_i33 < 3; c3_i33++) { _SFD_DATA_RANGE_CHECK((*c3_u)[c3_i33], 13U); } _SFD_DATA_RANGE_CHECK(*c3_cost, 14U); for (c3_i34 = 0; c3_i34 < 15; c3_i34++) { _SFD_DATA_RANGE_CHECK((*c3_useq)[c3_i34], 15U); } _SFD_DATA_RANGE_CHECK(*c3_status, 16U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_isQP, 17U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nu, 18U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_ny, 19U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_degrees, 20U); for (c3_i35 = 0; c3_i35 < 36; c3_i35++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hinv[c3_i35], 21U); } for (c3_i36 = 0; c3_i36 < 66; c3_i36++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kx[c3_i36], 22U); } for (c3_i37 = 0; c3_i37 < 18; c3_i37++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ku1[c3_i37], 23U); } for (c3_i38 = 0; c3_i38 < 90; c3_i38++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kut[c3_i38], 24U); } for (c3_i39 = 0; c3_i39 < 60; c3_i39++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kr[c3_i39], 25U); } for (c3_i40 = 0; c3_i40 < 36; c3_i40++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Kv[c3_i40], 26U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mlim, 27U); for (c3_i41 = 0; c3_i41 < 11; c3_i41++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mx[c3_i41], 28U); } for (c3_i42 = 0; c3_i42 < 3; c3_i42++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mu1[c3_i42], 29U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_Mv, 30U); for (c3_i43 = 0; c3_i43 < 6; c3_i43++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_z_degrees[c3_i43], 31U); } for (c3_i44 = 0; c3_i44 < 15; c3_i44++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_utarget[c3_i44], 32U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_p, 33U); for (c3_i45 = 0; c3_i45 < 3; c3_i45++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_uoff[c3_i45], 34U); } for (c3_i46 = 0; c3_i46 < 2; c3_i46++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_yoff[c3_i46], 35U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_maxiter, 36U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_nxQP, 37U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c3_openloopflag, 38U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_lims_inport, 39U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umin, 40U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_umax, 41U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymin, 42U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ymax, 43U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_switch_inport, 44U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_switch, 45U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_enable_value, 46U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_cost, 47U); for (c3_i47 = 0; c3_i47 < 36; c3_i47++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_H[c3_i47], 48U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_return_sequence, 49U); for (c3_i48 = 0; c3_i48 < 5; c3_i48++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_blocking_moves[c3_i48], 50U); } for (c3_i49 = 0; c3_i49 < 36; c3_i49++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Linv[c3_i49], 51U); } for (c3_i50 = 0; c3_i50 < 6; c3_i50++) { _SFD_DATA_RANGE_CHECK(chartInstance->c3_Ac[c3_i50], 52U); } _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_ywt, 53U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_duwt, 54U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_no_rhoeps, 55U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wy, 56U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wdu, 57U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Jm, 58U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_SuJm, 59U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I2JmWuI2Jm, 60U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Su1, 61U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1WuI2Jm, 62U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Sx, 63U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Hv, 64U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_Wu, 65U); _SFD_DATA_RANGE_CHECK(chartInstance->c3_I1, 66U); for (c3_i51 = 0; c3_i51 < 7; c3_i51++) { _SFD_DATA_RANGE_CHECK((real_T)(*c3_iAout)[c3_i51], 67U); } chartInstance->c3_sfEvent = CALL_EVENT; c3_chartstep_c3_mpclib(chartInstance); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void c3_chartstep_c3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { real_T c3_hoistedGlobal; real_T c3_b_hoistedGlobal; int32_T c3_i52; real_T c3_rseq[10]; int32_T c3_i53; real_T c3_vseq[6]; int32_T c3_i54; real_T c3_x[11]; int32_T c3_i55; real_T c3_old_u[3]; int32_T c3_i56; boolean_T c3_iA[7]; int32_T c3_i57; real_T c3_umin[3]; int32_T c3_i58; real_T c3_umax[3]; int32_T c3_i59; real_T c3_ymin[2]; int32_T c3_i60; real_T c3_ymax[2]; real_T c3_switch_in; int32_T c3_i61; real_T c3_ywt[2]; int32_T c3_i62; real_T c3_duwt[3]; real_T c3_rhoeps; uint32_T c3_debug_family_var_map[71]; char_T c3_DataType[6]; boolean_T c3_c_isQP; real_T c3_c_nu; real_T c3_c_ny; real_T c3_c_degrees; real_T c3_c_Hinv[36]; real_T c3_c_Kx[66]; real_T c3_c_Ku1[18]; real_T c3_c_Kut[90]; real_T c3_c_Kr[60]; real_T c3_c_Kv[36]; real_T c3_c_Mlim; real_T c3_c_Mx[11]; real_T c3_c_Mu1[3]; real_T c3_c_Mv; real_T c3_c_z_degrees[6]; real_T c3_c_utarget[15]; real_T c3_c_p; real_T c3_c_uoff[3]; real_T c3_c_yoff[2]; real_T c3_c_maxiter; real_T c3_c_nxQP; boolean_T c3_c_openloopflag; real_T c3_c_lims_inport; real_T c3_c_no_umin; real_T c3_c_no_umax; real_T c3_c_no_ymin; real_T c3_c_no_ymax; real_T c3_c_switch_inport; real_T c3_c_no_switch; real_T c3_c_enable_value; real_T c3_c_return_cost; real_T c3_c_H[36]; real_T c3_c_return_sequence; real_T c3_c_blocking_moves[5]; real_T c3_c_Linv[36]; real_T c3_c_Ac[6]; real_T c3_c_no_ywt; real_T c3_c_no_duwt; real_T c3_c_no_rhoeps; real_T c3_c_Wy; real_T c3_c_Wdu; real_T c3_c_Jm; real_T c3_c_SuJm; real_T c3_c_I2JmWuI2Jm; real_T c3_c_Su1; real_T c3_c_I1WuI2Jm; real_T c3_c_Sx; real_T c3_c_Hv; real_T c3_c_Wu; real_T c3_c_I1; real_T c3_nargin = 63.0; real_T c3_nargout = 5.0; real_T c3_u[3]; real_T c3_cost; real_T c3_useq[15]; real_T c3_status; boolean_T c3_iAout[7]; int32_T c3_i63; int32_T c3_i64; static real_T c3_d_Linv[36] = { 0.890943967335334, -0.3765340064257745, -0.081968447195651092, -3.5489218669425688, -0.0066855072825417984, 0.10307825269687225, 0.0, 0.79076149529618434, -1.45244561488651, 0.37621263709139419, -2.9239965883035044, 0.46691227779109384, 0.0, 0.0, 5.1774615543769329, -0.55386901645657716, -4.1318677662181731, -3.4991992981439619, 0.0, 0.0, 0.0, 4.6605654371565022, -0.041083569621347855, -0.15597566320058937, 0.0, 0.0, 0.0, 0.0, 5.5702072264245031, -0.95560346771331783, 0.0, 0.0, 0.0, 0.0, 0.0, 8.8039367573053688 }; int32_T c3_i65; static real_T c3_d_blocking_moves[5] = { 1.0, 1.0, 0.0, 0.0, 0.0 }; int32_T c3_i66; static real_T c3_d_H[36] = { 1.2597930755942788, 0.59987105700346466, 0.188228026070508, 0.93325195233225344, 0.46291238552612662, 0.095028876539678384, 0.59987105700346466, 1.8848612022853453, 0.53826162835208635, 0.36860620668000732, 1.3921398940378122, 0.2645877164403112, 0.188228026070508, 0.53826162835208635, 0.19128473163107027, 0.12261439624071246, 0.42557379326757072, 0.09364275287343965, 0.93325195233225344, 0.36860620668000732, 0.12261439624071246, 0.74150713022437431, 0.29103635087465185, 0.062985445368814619, 0.46291238552612662, 1.3921398940378122, 0.42557379326757072, 0.29103635087465185, 1.0813969472131397, 0.21243057759953443, 0.095028876539678384, 0.2645877164403112, 0.09364275287343965, 0.062985445368814619, 0.21243057759953443, 0.059149576937758915 }; int32_T c3_i67; int32_T c3_i68; int32_T c3_i69; int32_T c3_i70; int32_T c3_i71; int32_T c3_i72; int32_T c3_i73; int32_T c3_i74; static real_T c3_d_Kr[60] = { -0.18126924692564353, -0.018671577551657329, -0.32967995397095429, -0.069478267418748366, -0.45118836391499728, -0.14501667000509094, -0.55067103589379174, -0.23863046066526389, -0.6321205588412, -0.34454251473540026, -0.0, -0.19879234322843986, -0.0, -0.39123188951446553, -0.0, -0.573089746155531, -0.0, -0.74187890047177918, -0.0, -0.89636167648567255, -0.0, -0.0037930220744868356, -0.0, -0.0286066973859312, -0.0, -0.090540727786153713, -0.0, -0.20029783672802043, -0.0, -0.36350399542963946, -0.0, -0.0, -0.18126924692564353, -0.018671577551657329, -0.32967995397095429, -0.069478267418748366, -0.45118836391499728, -0.14501667000509094, -0.55067103589379174, -0.23863046066526389, -0.0, -0.0, -0.0, -0.19879234322843986, -0.0, -0.39123188951446553, -0.0, -0.573089746155531, -0.0, -0.74187890047177918, -0.0, -0.0, -0.0, -0.0037930220744868356, -0.0, -0.0286066973859312, -0.0, -0.090540727786153713, -0.0, -0.20029783672802043 }; int32_T c3_i75; int32_T c3_i76; static real_T c3_d_Ku1[18] = { 1.2497930755942788, 0.59987105700346466, 0.18822802607050804, 0.59987105700346466, 1.8748612022853453, 0.53826162835208624, 0.188228026070508, 0.53826162835208635, 0.18128473163107026, 0.93325195233225344, 0.36860620668000732, 0.12261439624071246, 0.46291238552612662, 1.3921398940378122, 0.42557379326757072, 0.095028876539678384, 0.2645877164403112, 0.09364275287343965 }; int32_T c3_i77; static real_T c3_d_Kx[66] = { 1.4950071410106682, 0.65738773217961954, 1.0328079237488559, 0.567234842535362, 1.6113851449398879, 0.60348869766750224, 1.5114962368787421, 2.1449291595465869, 0.28066769832603405, 0.65398250774849676, 0.81633949037616071, 1.2749901453193779, 2.3252208946601427, 3.7278479094264276, 1.6924216567122496, 5.0863219785039542, 0.0, 0.0, 0.0, 0.8240126387275275, 2.0299698690078887, 2.8013545558558883, 0.35003360229234354, 0.53952675278459827, 0.83522293045637619, 0.52699933031000479, 1.4335001534251903, 0.0, 0.0, 0.0, 0.26450903270165821, 0.5902679848530179, 0.68674227940423171, 0.94816285509076892, 0.37139389963332908, 0.57498774460151314, 0.35923583049728058, 0.98320422379931072, 0.49355972586851837, 1.1819373981786196, 1.5128086007053869, 0.17972037907376839, 0.40379938814124861, 0.47179697564076051, 0.92922750853952851, 1.5394509413528972, 2.4178458647026169, 1.3029118393594785, 3.7508458888458702, 0.0, 0.0, 0.0, 0.64065329657653858, 1.5146067683962592, 1.9049928793702156, 0.16955883990592463, 0.24927859671174421, 0.38188885150887275, 0.26533887117500837, 0.70012039644749491, 0.0, 0.0, 0.0, 0.134574598551006, 0.29141164621829685, 0.3232382839745922 }; int32_T c3_i78; static real_T c3_d_Hinv[36] = { 13.54779407711173, -1.4461662344138535, 1.2081816624480111, -16.555785626563523, -0.13574159670048874, 0.90749441779680484, -1.4461662344138535, 11.644201078515971, 2.7193942828191506, 1.800664878672841, -16.733449917983865, 4.1106661648821863, 1.2081816624480111, 2.7193942828191506, 56.429606000085734, -1.8658009865707206, -19.671512706492557, -30.806729322066776, -16.555785626563523, 1.800664878672841, -1.8658009865707206, 21.746886461221472, -0.079793111758778262, -1.3731998744967511, -0.13574159670048874, -16.733449917983865, -19.671512706492557, -0.079793111758778262, 31.940386532817474, -8.4130724948097537, 0.90749441779680484, 4.1106661648821863, -30.806729322066776, -1.3731998744967511, -8.4130724948097537, 77.509302426632573 }; int32_T c3_i79; static char_T c3_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c3_i80; int32_T c3_i81; int32_T c3_i82; int32_T c3_i83; real_T c3_b_u[10]; const mxArray *c3_y = NULL; int32_T c3_i84; real_T c3_c_u[6]; const mxArray *c3_b_y = NULL; int32_T c3_i85; real_T c3_d_u[3]; const mxArray *c3_c_y = NULL; int32_T c3_i86; real_T c3_e_u[3]; const mxArray *c3_d_y = NULL; int32_T c3_i87; real_T c3_f_u[2]; const mxArray *c3_e_y = NULL; int32_T c3_i88; real_T c3_g_u[2]; const mxArray *c3_f_y = NULL; real_T c3_h_u; const mxArray *c3_g_y = NULL; int32_T c3_i89; real_T c3_i_u[11]; const mxArray *c3_h_y = NULL; int32_T c3_i90; real_T c3_j_u[3]; const mxArray *c3_i_y = NULL; int32_T c3_i91; boolean_T c3_k_u[7]; const mxArray *c3_j_y = NULL; boolean_T c3_l_u; const mxArray *c3_k_y = NULL; real_T c3_m_u; const mxArray *c3_l_y = NULL; real_T c3_n_u; const mxArray *c3_m_y = NULL; real_T c3_o_u; const mxArray *c3_n_y = NULL; int32_T c3_i92; real_T c3_p_u[36]; const mxArray *c3_o_y = NULL; int32_T c3_i93; real_T c3_q_u[66]; const mxArray *c3_p_y = NULL; int32_T c3_i94; real_T c3_r_u[18]; const mxArray *c3_q_y = NULL; int32_T c3_i95; real_T c3_s_u[90]; const mxArray *c3_r_y = NULL; int32_T c3_i96; real_T c3_t_u[60]; const mxArray *c3_s_y = NULL; int32_T c3_i97; real_T c3_u_u[36]; const mxArray *c3_t_y = NULL; real_T c3_v_u; const mxArray *c3_u_y = NULL; int32_T c3_i98; real_T c3_w_u[11]; const mxArray *c3_v_y = NULL; int32_T c3_i99; real_T c3_x_u[3]; const mxArray *c3_w_y = NULL; real_T c3_y_u; const mxArray *c3_x_y = NULL; int32_T c3_i100; real_T c3_ab_u[6]; const mxArray *c3_y_y = NULL; int32_T c3_i101; real_T c3_bb_u[15]; const mxArray *c3_ab_y = NULL; real_T c3_cb_u; const mxArray *c3_bb_y = NULL; int32_T c3_i102; real_T c3_db_u[3]; const mxArray *c3_cb_y = NULL; int32_T c3_i103; real_T c3_eb_u[2]; const mxArray *c3_db_y = NULL; real_T c3_fb_u; const mxArray *c3_eb_y = NULL; real_T c3_gb_u; const mxArray *c3_fb_y = NULL; boolean_T c3_hb_u; const mxArray *c3_gb_y = NULL; real_T c3_ib_u; const mxArray *c3_hb_y = NULL; real_T c3_jb_u; const mxArray *c3_ib_y = NULL; real_T c3_kb_u; const mxArray *c3_jb_y = NULL; real_T c3_lb_u; const mxArray *c3_kb_y = NULL; real_T c3_mb_u; const mxArray *c3_lb_y = NULL; real_T c3_nb_u; const mxArray *c3_mb_y = NULL; real_T c3_ob_u; const mxArray *c3_nb_y = NULL; real_T c3_pb_u; const mxArray *c3_ob_y = NULL; real_T c3_qb_u; const mxArray *c3_pb_y = NULL; int32_T c3_i104; real_T c3_rb_u[36]; const mxArray *c3_qb_y = NULL; real_T c3_sb_u; const mxArray *c3_rb_y = NULL; int32_T c3_i105; real_T c3_tb_u[5]; const mxArray *c3_sb_y = NULL; int32_T c3_i106; real_T c3_ub_u[36]; const mxArray *c3_tb_y = NULL; int32_T c3_i107; real_T c3_vb_u[6]; const mxArray *c3_ub_y = NULL; int32_T c3_i108; real_T c3_wb_u[2]; const mxArray *c3_vb_y = NULL; int32_T c3_i109; real_T c3_xb_u[3]; const mxArray *c3_wb_y = NULL; real_T c3_yb_u; const mxArray *c3_xb_y = NULL; real_T c3_ac_u; const mxArray *c3_yb_y = NULL; real_T c3_bc_u; const mxArray *c3_ac_y = NULL; real_T c3_cc_u; const mxArray *c3_bc_y = NULL; real_T c3_dc_u; const mxArray *c3_cc_y = NULL; real_T c3_ec_u; const mxArray *c3_dc_y = NULL; real_T c3_fc_u; const mxArray *c3_ec_y = NULL; real_T c3_gc_u; const mxArray *c3_fc_y = NULL; real_T c3_hc_u; const mxArray *c3_gc_y = NULL; real_T c3_ic_u; const mxArray *c3_hc_y = NULL; real_T c3_jc_u; const mxArray *c3_ic_y = NULL; real_T c3_kc_u; const mxArray *c3_jc_y = NULL; real_T c3_lc_u; const mxArray *c3_kc_y = NULL; real_T c3_mc_u; const mxArray *c3_lc_y = NULL; real_T c3_nc_u; const mxArray *c3_mc_y = NULL; const mxArray *c3_b_iAout = NULL; const mxArray *c3_b_status = NULL; const mxArray *c3_b_useq = NULL; const mxArray *c3_b_cost = NULL; const mxArray *c3_oc_u = NULL; real_T c3_dv18[3]; int32_T c3_i110; real_T c3_dv19[15]; int32_T c3_i111; boolean_T c3_bv1[7]; int32_T c3_i112; int32_T c3_i113; int32_T c3_i114; int32_T c3_i115; real_T *c3_b_switch_in; real_T *c3_b_rhoeps; real_T *c3_c_cost; real_T *c3_c_status; real_T (*c3_pc_u)[3]; real_T (*c3_c_useq)[15]; boolean_T (*c3_c_iAout)[7]; real_T (*c3_b_duwt)[3]; real_T (*c3_b_ywt)[2]; real_T (*c3_b_ymax)[2]; real_T (*c3_b_ymin)[2]; real_T (*c3_b_umax)[3]; real_T (*c3_b_umin)[3]; boolean_T (*c3_b_iA)[7]; real_T (*c3_b_old_u)[3]; real_T (*c3_b_x)[11]; real_T (*c3_b_vseq)[6]; real_T (*c3_b_rseq)[10]; c3_c_iAout = (boolean_T (*)[7])ssGetOutputPortSignal(chartInstance->S, 5); c3_c_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_c_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_c_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_pc_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_b_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_b_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_b_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_b_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_b_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_b_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_b_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_b_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_b_iA = (boolean_T (*)[7])ssGetInputPortSignal(chartInstance->S, 4); c3_b_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_b_x = (real_T (*)[11])ssGetInputPortSignal(chartInstance->S, 2); c3_b_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_b_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); c3_hoistedGlobal = *c3_b_switch_in; c3_b_hoistedGlobal = *c3_b_rhoeps; for (c3_i52 = 0; c3_i52 < 10; c3_i52++) { c3_rseq[c3_i52] = (*c3_b_rseq)[c3_i52]; } for (c3_i53 = 0; c3_i53 < 6; c3_i53++) { c3_vseq[c3_i53] = (*c3_b_vseq)[c3_i53]; } for (c3_i54 = 0; c3_i54 < 11; c3_i54++) { c3_x[c3_i54] = (*c3_b_x)[c3_i54]; } for (c3_i55 = 0; c3_i55 < 3; c3_i55++) { c3_old_u[c3_i55] = (*c3_b_old_u)[c3_i55]; } for (c3_i56 = 0; c3_i56 < 7; c3_i56++) { c3_iA[c3_i56] = (*c3_b_iA)[c3_i56]; } for (c3_i57 = 0; c3_i57 < 3; c3_i57++) { c3_umin[c3_i57] = (*c3_b_umin)[c3_i57]; } for (c3_i58 = 0; c3_i58 < 3; c3_i58++) { c3_umax[c3_i58] = (*c3_b_umax)[c3_i58]; } for (c3_i59 = 0; c3_i59 < 2; c3_i59++) { c3_ymin[c3_i59] = (*c3_b_ymin)[c3_i59]; } for (c3_i60 = 0; c3_i60 < 2; c3_i60++) { c3_ymax[c3_i60] = (*c3_b_ymax)[c3_i60]; } c3_switch_in = c3_hoistedGlobal; for (c3_i61 = 0; c3_i61 < 2; c3_i61++) { c3_ywt[c3_i61] = (*c3_b_ywt)[c3_i61]; } for (c3_i62 = 0; c3_i62 < 3; c3_i62++) { c3_duwt[c3_i62] = (*c3_b_duwt)[c3_i62]; } c3_rhoeps = c3_b_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 71U, 71U, c3_debug_family_names, c3_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c3_DataType, 0U, c3_t_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_isQP, 1U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nu, 2U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_ny, 3U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_degrees, 4U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Hinv, 5U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kx, 6U, c3_s_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ku1, 7U, c3_r_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kut, 8U, c3_q_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kr, 9U, c3_p_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Kv, 10U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Mlim, 11U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mx, 12U, c3_o_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Mu1, 13U, c3_n_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Mv, 14U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_z_degrees, 15U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_utarget, 16U, c3_m_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_p, 17U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_uoff, 18U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_yoff, 19U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_maxiter, 20U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_nxQP, 21U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_openloopflag, 22U, c3_l_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_lims_inport, 23U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umin, 24U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_umax, 25U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymin, 26U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ymax, 27U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_switch_inport, 28U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_switch, 29U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_enable_value, 30U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_cost, 31U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_H, 32U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_return_sequence, 33U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_blocking_moves, 34U, c3_k_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Linv, 35U, c3_j_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_c_Ac, 36U, c3_i_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_ywt, 37U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_duwt, 38U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_no_rhoeps, 39U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wy, 40U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wdu, 41U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Jm, 42U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_SuJm, 43U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I2JmWuI2Jm, 44U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Su1, 45U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1WuI2Jm, 46U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Sx, 47U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Hv, 48U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_Wu, 49U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_c_I1, 50U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargin, 51U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_nargout, 52U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c3_rseq, 53U, c3_h_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_vseq, 54U, c3_g_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_x, 55U, c3_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_old_u, 56U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_iA, 57U, c3_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_umin, 58U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_umax, 59U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ymin, 60U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ymax, 61U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_switch_in, 62U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_ywt, 63U, c3_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c3_duwt, 64U, c3_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c3_rhoeps, 65U, c3_b_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_u, 66U, c3_d_sf_marshallOut, c3_d_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_cost, 67U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_useq, 68U, c3_c_sf_marshallOut, c3_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c3_status, 69U, c3_b_sf_marshallOut, c3_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c3_iAout, 70U, c3_sf_marshallOut, c3_sf_marshallIn); c3_c_I1 = c3_b_I1; c3_c_Wu = c3_b_Wu; c3_c_Hv = c3_b_Hv; c3_c_Sx = c3_b_Sx; c3_c_I1WuI2Jm = c3_b_I1WuI2Jm; c3_c_Su1 = c3_b_Su1; c3_c_I2JmWuI2Jm = c3_b_I2JmWuI2Jm; c3_c_SuJm = c3_b_SuJm; c3_c_Jm = c3_b_Jm; c3_c_Wdu = c3_b_Wdu; c3_c_Wy = c3_b_Wy; c3_c_no_rhoeps = c3_b_no_rhoeps; c3_c_no_duwt = c3_b_no_duwt; c3_c_no_ywt = c3_b_no_ywt; for (c3_i63 = 0; c3_i63 < 6; c3_i63++) { c3_c_Ac[c3_i63] = 0.0; } for (c3_i64 = 0; c3_i64 < 36; c3_i64++) { c3_c_Linv[c3_i64] = c3_d_Linv[c3_i64]; } for (c3_i65 = 0; c3_i65 < 5; c3_i65++) { c3_c_blocking_moves[c3_i65] = c3_d_blocking_moves[c3_i65]; } c3_c_return_sequence = c3_b_return_sequence; for (c3_i66 = 0; c3_i66 < 36; c3_i66++) { c3_c_H[c3_i66] = c3_d_H[c3_i66]; } c3_c_return_cost = c3_b_return_cost; c3_c_enable_value = c3_b_enable_value; c3_c_no_switch = c3_b_no_switch; c3_c_switch_inport = c3_b_switch_inport; c3_c_no_ymax = c3_b_no_ymax; c3_c_no_ymin = c3_b_no_ymin; c3_c_no_umax = c3_b_no_umax; c3_c_no_umin = c3_b_no_umin; c3_c_lims_inport = c3_b_lims_inport; c3_c_openloopflag = c3_b_openloopflag; c3_c_nxQP = c3_b_nxQP; c3_c_maxiter = c3_b_maxiter; for (c3_i67 = 0; c3_i67 < 2; c3_i67++) { c3_c_yoff[c3_i67] = 0.0; } for (c3_i68 = 0; c3_i68 < 3; c3_i68++) { c3_c_uoff[c3_i68] = 0.0; } c3_c_p = c3_b_p; for (c3_i69 = 0; c3_i69 < 15; c3_i69++) { c3_c_utarget[c3_i69] = 0.0; } for (c3_i70 = 0; c3_i70 < 6; c3_i70++) { c3_c_z_degrees[c3_i70] = 0.0; } c3_c_Mv = c3_b_Mv; for (c3_i71 = 0; c3_i71 < 3; c3_i71++) { c3_c_Mu1[c3_i71] = 0.0; } for (c3_i72 = 0; c3_i72 < 11; c3_i72++) { c3_c_Mx[c3_i72] = 0.0; } c3_c_Mlim = c3_b_Mlim; for (c3_i73 = 0; c3_i73 < 36; c3_i73++) { c3_c_Kv[c3_i73] = 0.0; } for (c3_i74 = 0; c3_i74 < 60; c3_i74++) { c3_c_Kr[c3_i74] = c3_d_Kr[c3_i74]; } for (c3_i75 = 0; c3_i75 < 90; c3_i75++) { c3_c_Kut[c3_i75] = 0.0; } for (c3_i76 = 0; c3_i76 < 18; c3_i76++) { c3_c_Ku1[c3_i76] = c3_d_Ku1[c3_i76]; } for (c3_i77 = 0; c3_i77 < 66; c3_i77++) { c3_c_Kx[c3_i77] = c3_d_Kx[c3_i77]; } for (c3_i78 = 0; c3_i78 < 36; c3_i78++) { c3_c_Hinv[c3_i78] = c3_d_Hinv[c3_i78]; } c3_c_degrees = c3_b_degrees; c3_c_ny = c3_b_ny; c3_c_nu = c3_b_nu; c3_c_isQP = c3_b_isQP; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 8); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 9); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 10); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 12); for (c3_i79 = 0; c3_i79 < 6; c3_i79++) { c3_DataType[c3_i79] = c3_cv0[c3_i79]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 13); for (c3_i80 = 0; c3_i80 < 3; c3_i80++) { c3_u[c3_i80] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 14); c3_cost = 0.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 15); for (c3_i81 = 0; c3_i81 < 15; c3_i81++) { c3_useq[c3_i81] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 16); c3_status = 1.0; _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 17); for (c3_i82 = 0; c3_i82 < 7; c3_i82++) { c3_iAout[c3_i82] = FALSE; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 18); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, 19); for (c3_i83 = 0; c3_i83 < 10; c3_i83++) { c3_b_u[c3_i83] = c3_rseq[c3_i83]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_b_u, 0, 0U, 1U, 0U, 1, 10), FALSE); for (c3_i84 = 0; c3_i84 < 6; c3_i84++) { c3_c_u[c3_i84] = c3_vseq[c3_i84]; } c3_b_y = NULL; sf_mex_assign(&c3_b_y, sf_mex_create("y", c3_c_u, 0, 0U, 1U, 0U, 1, 6), FALSE); for (c3_i85 = 0; c3_i85 < 3; c3_i85++) { c3_d_u[c3_i85] = c3_umin[c3_i85]; } c3_c_y = NULL; sf_mex_assign(&c3_c_y, sf_mex_create("y", c3_d_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i86 = 0; c3_i86 < 3; c3_i86++) { c3_e_u[c3_i86] = c3_umax[c3_i86]; } c3_d_y = NULL; sf_mex_assign(&c3_d_y, sf_mex_create("y", c3_e_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i87 = 0; c3_i87 < 2; c3_i87++) { c3_f_u[c3_i87] = c3_ymin[c3_i87]; } c3_e_y = NULL; sf_mex_assign(&c3_e_y, sf_mex_create("y", c3_f_u, 0, 0U, 1U, 0U, 1, 2), FALSE); for (c3_i88 = 0; c3_i88 < 2; c3_i88++) { c3_g_u[c3_i88] = c3_ymax[c3_i88]; } c3_f_y = NULL; sf_mex_assign(&c3_f_y, sf_mex_create("y", c3_g_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c3_h_u = c3_switch_in; c3_g_y = NULL; sf_mex_assign(&c3_g_y, sf_mex_create("y", &c3_h_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i89 = 0; c3_i89 < 11; c3_i89++) { c3_i_u[c3_i89] = c3_x[c3_i89]; } c3_h_y = NULL; sf_mex_assign(&c3_h_y, sf_mex_create("y", c3_i_u, 0, 0U, 1U, 0U, 1, 11), FALSE); for (c3_i90 = 0; c3_i90 < 3; c3_i90++) { c3_j_u[c3_i90] = c3_old_u[c3_i90]; } c3_i_y = NULL; sf_mex_assign(&c3_i_y, sf_mex_create("y", c3_j_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i91 = 0; c3_i91 < 7; c3_i91++) { c3_k_u[c3_i91] = c3_iA[c3_i91]; } c3_j_y = NULL; sf_mex_assign(&c3_j_y, sf_mex_create("y", c3_k_u, 11, 0U, 1U, 0U, 1, 7), FALSE); c3_l_u = c3_b_isQP; c3_k_y = NULL; sf_mex_assign(&c3_k_y, sf_mex_create("y", &c3_l_u, 11, 0U, 0U, 0U, 0), FALSE); c3_m_u = c3_b_nu; c3_l_y = NULL; sf_mex_assign(&c3_l_y, sf_mex_create("y", &c3_m_u, 0, 0U, 0U, 0U, 0), FALSE); c3_n_u = c3_b_ny; c3_m_y = NULL; sf_mex_assign(&c3_m_y, sf_mex_create("y", &c3_n_u, 0, 0U, 0U, 0U, 0), FALSE); c3_o_u = c3_b_degrees; c3_n_y = NULL; sf_mex_assign(&c3_n_y, sf_mex_create("y", &c3_o_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i92 = 0; c3_i92 < 36; c3_i92++) { c3_p_u[c3_i92] = c3_d_Hinv[c3_i92]; } c3_o_y = NULL; sf_mex_assign(&c3_o_y, sf_mex_create("y", c3_p_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); for (c3_i93 = 0; c3_i93 < 66; c3_i93++) { c3_q_u[c3_i93] = c3_d_Kx[c3_i93]; } c3_p_y = NULL; sf_mex_assign(&c3_p_y, sf_mex_create("y", c3_q_u, 0, 0U, 1U, 0U, 2, 11, 6), FALSE); for (c3_i94 = 0; c3_i94 < 18; c3_i94++) { c3_r_u[c3_i94] = c3_d_Ku1[c3_i94]; } c3_q_y = NULL; sf_mex_assign(&c3_q_y, sf_mex_create("y", c3_r_u, 0, 0U, 1U, 0U, 2, 3, 6), FALSE); for (c3_i95 = 0; c3_i95 < 90; c3_i95++) { c3_s_u[c3_i95] = 0.0; } c3_r_y = NULL; sf_mex_assign(&c3_r_y, sf_mex_create("y", c3_s_u, 0, 0U, 1U, 0U, 2, 15, 6), FALSE); for (c3_i96 = 0; c3_i96 < 60; c3_i96++) { c3_t_u[c3_i96] = c3_d_Kr[c3_i96]; } c3_s_y = NULL; sf_mex_assign(&c3_s_y, sf_mex_create("y", c3_t_u, 0, 0U, 1U, 0U, 2, 10, 6), FALSE); for (c3_i97 = 0; c3_i97 < 36; c3_i97++) { c3_u_u[c3_i97] = 0.0; } c3_t_y = NULL; sf_mex_assign(&c3_t_y, sf_mex_create("y", c3_u_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); c3_v_u = c3_b_Mlim; c3_u_y = NULL; sf_mex_assign(&c3_u_y, sf_mex_create("y", &c3_v_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i98 = 0; c3_i98 < 11; c3_i98++) { c3_w_u[c3_i98] = 0.0; } c3_v_y = NULL; sf_mex_assign(&c3_v_y, sf_mex_create("y", c3_w_u, 0, 0U, 1U, 0U, 2, 1, 11), FALSE); for (c3_i99 = 0; c3_i99 < 3; c3_i99++) { c3_x_u[c3_i99] = 0.0; } c3_w_y = NULL; sf_mex_assign(&c3_w_y, sf_mex_create("y", c3_x_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); c3_y_u = c3_b_Mv; c3_x_y = NULL; sf_mex_assign(&c3_x_y, sf_mex_create("y", &c3_y_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i100 = 0; c3_i100 < 6; c3_i100++) { c3_ab_u[c3_i100] = 0.0; } c3_y_y = NULL; sf_mex_assign(&c3_y_y, sf_mex_create("y", c3_ab_u, 0, 0U, 1U, 0U, 1, 6), FALSE); for (c3_i101 = 0; c3_i101 < 15; c3_i101++) { c3_bb_u[c3_i101] = 0.0; } c3_ab_y = NULL; sf_mex_assign(&c3_ab_y, sf_mex_create("y", c3_bb_u, 0, 0U, 1U, 0U, 1, 15), FALSE); c3_cb_u = c3_b_p; c3_bb_y = NULL; sf_mex_assign(&c3_bb_y, sf_mex_create("y", &c3_cb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i102 = 0; c3_i102 < 3; c3_i102++) { c3_db_u[c3_i102] = 0.0; } c3_cb_y = NULL; sf_mex_assign(&c3_cb_y, sf_mex_create("y", c3_db_u, 0, 0U, 1U, 0U, 1, 3), FALSE); for (c3_i103 = 0; c3_i103 < 2; c3_i103++) { c3_eb_u[c3_i103] = 0.0; } c3_db_y = NULL; sf_mex_assign(&c3_db_y, sf_mex_create("y", c3_eb_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c3_fb_u = c3_b_maxiter; c3_eb_y = NULL; sf_mex_assign(&c3_eb_y, sf_mex_create("y", &c3_fb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gb_u = c3_b_nxQP; c3_fb_y = NULL; sf_mex_assign(&c3_fb_y, sf_mex_create("y", &c3_gb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hb_u = c3_b_openloopflag; c3_gb_y = NULL; sf_mex_assign(&c3_gb_y, sf_mex_create("y", &c3_hb_u, 11, 0U, 0U, 0U, 0), FALSE); c3_ib_u = c3_b_lims_inport; c3_hb_y = NULL; sf_mex_assign(&c3_hb_y, sf_mex_create("y", &c3_ib_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jb_u = c3_b_no_umin; c3_ib_y = NULL; sf_mex_assign(&c3_ib_y, sf_mex_create("y", &c3_jb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kb_u = c3_b_no_umax; c3_jb_y = NULL; sf_mex_assign(&c3_jb_y, sf_mex_create("y", &c3_kb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lb_u = c3_b_no_ymin; c3_kb_y = NULL; sf_mex_assign(&c3_kb_y, sf_mex_create("y", &c3_lb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mb_u = c3_b_no_ymax; c3_lb_y = NULL; sf_mex_assign(&c3_lb_y, sf_mex_create("y", &c3_mb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nb_u = c3_b_switch_inport; c3_mb_y = NULL; sf_mex_assign(&c3_mb_y, sf_mex_create("y", &c3_nb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ob_u = c3_b_no_switch; c3_nb_y = NULL; sf_mex_assign(&c3_nb_y, sf_mex_create("y", &c3_ob_u, 0, 0U, 0U, 0U, 0), FALSE); c3_pb_u = c3_b_enable_value; c3_ob_y = NULL; sf_mex_assign(&c3_ob_y, sf_mex_create("y", &c3_pb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_qb_u = c3_b_return_cost; c3_pb_y = NULL; sf_mex_assign(&c3_pb_y, sf_mex_create("y", &c3_qb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i104 = 0; c3_i104 < 36; c3_i104++) { c3_rb_u[c3_i104] = c3_d_H[c3_i104]; } c3_qb_y = NULL; sf_mex_assign(&c3_qb_y, sf_mex_create("y", c3_rb_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); c3_sb_u = c3_b_return_sequence; c3_rb_y = NULL; sf_mex_assign(&c3_rb_y, sf_mex_create("y", &c3_sb_u, 0, 0U, 0U, 0U, 0), FALSE); for (c3_i105 = 0; c3_i105 < 5; c3_i105++) { c3_tb_u[c3_i105] = c3_d_blocking_moves[c3_i105]; } c3_sb_y = NULL; sf_mex_assign(&c3_sb_y, sf_mex_create("y", c3_tb_u, 0, 0U, 1U, 0U, 2, 1, 5), FALSE); for (c3_i106 = 0; c3_i106 < 36; c3_i106++) { c3_ub_u[c3_i106] = c3_d_Linv[c3_i106]; } c3_tb_y = NULL; sf_mex_assign(&c3_tb_y, sf_mex_create("y", c3_ub_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); for (c3_i107 = 0; c3_i107 < 6; c3_i107++) { c3_vb_u[c3_i107] = 0.0; } c3_ub_y = NULL; sf_mex_assign(&c3_ub_y, sf_mex_create("y", c3_vb_u, 0, 0U, 1U, 0U, 2, 1, 6), FALSE); for (c3_i108 = 0; c3_i108 < 2; c3_i108++) { c3_wb_u[c3_i108] = c3_ywt[c3_i108]; } c3_vb_y = NULL; sf_mex_assign(&c3_vb_y, sf_mex_create("y", c3_wb_u, 0, 0U, 1U, 0U, 1, 2), FALSE); for (c3_i109 = 0; c3_i109 < 3; c3_i109++) { c3_xb_u[c3_i109] = c3_duwt[c3_i109]; } c3_wb_y = NULL; sf_mex_assign(&c3_wb_y, sf_mex_create("y", c3_xb_u, 0, 0U, 1U, 0U, 1, 3), FALSE); c3_yb_u = c3_rhoeps; c3_xb_y = NULL; sf_mex_assign(&c3_xb_y, sf_mex_create("y", &c3_yb_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ac_u = c3_b_no_ywt; c3_yb_y = NULL; sf_mex_assign(&c3_yb_y, sf_mex_create("y", &c3_ac_u, 0, 0U, 0U, 0U, 0), FALSE); c3_bc_u = c3_b_no_duwt; c3_ac_y = NULL; sf_mex_assign(&c3_ac_y, sf_mex_create("y", &c3_bc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_cc_u = c3_b_no_rhoeps; c3_bc_y = NULL; sf_mex_assign(&c3_bc_y, sf_mex_create("y", &c3_cc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_dc_u = c3_b_Wy; c3_cc_y = NULL; sf_mex_assign(&c3_cc_y, sf_mex_create("y", &c3_dc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ec_u = c3_b_Wdu; c3_dc_y = NULL; sf_mex_assign(&c3_dc_y, sf_mex_create("y", &c3_ec_u, 0, 0U, 0U, 0U, 0), FALSE); c3_fc_u = c3_b_Jm; c3_ec_y = NULL; sf_mex_assign(&c3_ec_y, sf_mex_create("y", &c3_fc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_gc_u = c3_b_SuJm; c3_fc_y = NULL; sf_mex_assign(&c3_fc_y, sf_mex_create("y", &c3_gc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_hc_u = c3_b_I2JmWuI2Jm; c3_gc_y = NULL; sf_mex_assign(&c3_gc_y, sf_mex_create("y", &c3_hc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_ic_u = c3_b_Su1; c3_hc_y = NULL; sf_mex_assign(&c3_hc_y, sf_mex_create("y", &c3_ic_u, 0, 0U, 0U, 0U, 0), FALSE); c3_jc_u = c3_b_I1WuI2Jm; c3_ic_y = NULL; sf_mex_assign(&c3_ic_y, sf_mex_create("y", &c3_jc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_kc_u = c3_b_Sx; c3_jc_y = NULL; sf_mex_assign(&c3_jc_y, sf_mex_create("y", &c3_kc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_lc_u = c3_b_Hv; c3_kc_y = NULL; sf_mex_assign(&c3_kc_y, sf_mex_create("y", &c3_lc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_mc_u = c3_b_Wu; c3_lc_y = NULL; sf_mex_assign(&c3_lc_y, sf_mex_create("y", &c3_mc_u, 0, 0U, 0U, 0U, 0), FALSE); c3_nc_u = c3_b_I1; c3_mc_y = NULL; sf_mex_assign(&c3_mc_y, sf_mex_create("y", &c3_nc_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_optimizer_double_mex", 5U, 63U, 14, c3_y, 14, c3_b_y, 14, c3_c_y, 14, c3_d_y, 14, c3_e_y, 14, c3_f_y, 14, c3_g_y, 14, c3_h_y, 14, c3_i_y, 14, c3_j_y, 14, c3_k_y, 14, c3_l_y, 14, c3_m_y, 14, c3_n_y, 14, c3_o_y, 14, c3_p_y, 14, c3_q_y, 14, c3_r_y, 14, c3_s_y, 14, c3_t_y, 14, c3_u_y, 14, c3_v_y, 14, c3_w_y, 14, c3_x_y, 14, c3_y_y, 14, c3_ab_y, 14, c3_bb_y, 14, c3_cb_y, 14, c3_db_y, 14, c3_eb_y, 14, c3_fb_y, 14, c3_gb_y, 14, c3_hb_y, 14, c3_ib_y, 14, c3_jb_y, 14, c3_kb_y, 14, c3_lb_y, 14, c3_mb_y, 14, c3_nb_y, 14, c3_ob_y, 14, c3_pb_y, 14, c3_qb_y, 14, c3_rb_y, 14, c3_sb_y, 14, c3_tb_y, 14, c3_ub_y, 14, c3_vb_y, 14, c3_wb_y, 14, c3_xb_y, 14, c3_yb_y, 14, c3_ac_y, 14, c3_bc_y, 14, c3_cc_y, 14, c3_dc_y, 14, c3_ec_y, 14, c3_fc_y, 14, c3_gc_y, 14, c3_hc_y, 14, c3_ic_y, 14, c3_jc_y, 14, c3_kc_y, 14, c3_lc_y, 14, c3_mc_y, &c3_oc_u, &c3_b_cost, &c3_b_useq, &c3_b_status, &c3_b_iAout); c3_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_oc_u), "u", c3_dv18); for (c3_i110 = 0; c3_i110 < 3; c3_i110++) { c3_u[c3_i110] = c3_dv18[c3_i110]; } c3_cost = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_cost), "cost"); c3_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_useq), "useq", c3_dv19); for (c3_i111 = 0; c3_i111 < 15; c3_i111++) { c3_useq[c3_i111] = c3_dv19[c3_i111]; } c3_status = c3_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_status), "status"); c3_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_iAout), "iAout", c3_bv1); for (c3_i112 = 0; c3_i112 < 7; c3_i112++) { c3_iAout[c3_i112] = c3_bv1[c3_i112]; } _SFD_EML_CALL(0U, chartInstance->c3_sfEvent, -31); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c3_oc_u); sf_mex_destroy(&c3_b_cost); sf_mex_destroy(&c3_b_useq); sf_mex_destroy(&c3_b_status); sf_mex_destroy(&c3_b_iAout); for (c3_i113 = 0; c3_i113 < 3; c3_i113++) { (*c3_pc_u)[c3_i113] = c3_u[c3_i113]; } *c3_c_cost = c3_cost; for (c3_i114 = 0; c3_i114 < 15; c3_i114++) { (*c3_c_useq)[c3_i114] = c3_useq[c3_i114]; } *c3_c_status = c3_status; for (c3_i115 = 0; c3_i115 < 7; c3_i115++) { (*c3_c_iAout)[c3_i115] = c3_iAout[c3_i115]; } _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 0U, chartInstance->c3_sfEvent); } static void initSimStructsc3_mpclib(SFc3_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c3_machineNumber, uint32_T c3_chartNumber) { } static const mxArray *c3_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i116; boolean_T c3_b_inData[7]; int32_T c3_i117; boolean_T c3_u[7]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i116 = 0; c3_i116 < 7; c3_i116++) { c3_b_inData[c3_i116] = (*(boolean_T (*)[7])c3_inData)[c3_i116]; } for (c3_i117 = 0; c3_i117 < 7; c3_i117++) { c3_u[c3_i117] = c3_b_inData[c3_i117]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 11, 0U, 1U, 0U, 1, 7), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_iAout; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y[7]; int32_T c3_i118; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_iAout = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); for (c3_i118 = 0; c3_i118 < 7; c3_i118++) { (*(boolean_T (*)[7])c3_outData)[c3_i118] = c3_y[c3_i118]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_b_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; real_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(real_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_cost; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_cost = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_cost), &c3_thisId); sf_mex_destroy(&c3_cost); *(real_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_c_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i119; int32_T c3_i120; int32_T c3_i121; real_T c3_b_inData[15]; int32_T c3_i122; int32_T c3_i123; int32_T c3_i124; real_T c3_u[15]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i119 = 0; for (c3_i120 = 0; c3_i120 < 3; c3_i120++) { for (c3_i121 = 0; c3_i121 < 5; c3_i121++) { c3_b_inData[c3_i121 + c3_i119] = (*(real_T (*)[15])c3_inData)[c3_i121 + c3_i119]; } c3_i119 += 5; } c3_i122 = 0; for (c3_i123 = 0; c3_i123 < 3; c3_i123++) { for (c3_i124 = 0; c3_i124 < 5; c3_i124++) { c3_u[c3_i124 + c3_i122] = c3_b_inData[c3_i124 + c3_i122]; } c3_i122 += 5; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 5, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_useq; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[15]; int32_T c3_i125; int32_T c3_i126; int32_T c3_i127; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_useq = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); c3_i125 = 0; for (c3_i126 = 0; c3_i126 < 3; c3_i126++) { for (c3_i127 = 0; c3_i127 < 5; c3_i127++) { (*(real_T (*)[15])c3_outData)[c3_i127 + c3_i125] = c3_y[c3_i127 + c3_i125]; } c3_i125 += 5; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_d_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i128; real_T c3_b_inData[3]; int32_T c3_i129; real_T c3_u[3]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i128 = 0; c3_i128 < 3; c3_i128++) { c3_b_inData[c3_i128] = (*(real_T (*)[3])c3_inData)[c3_i128]; } for (c3_i129 = 0; c3_i129 < 3; c3_i129++) { c3_u[c3_i129] = c3_b_inData[c3_i129]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static void c3_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_u; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[3]; int32_T c3_i130; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_u = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId, c3_y); sf_mex_destroy(&c3_u); for (c3_i130 = 0; c3_i130 < 3; c3_i130++) { (*(real_T (*)[3])c3_outData)[c3_i130] = c3_y[c3_i130]; } sf_mex_destroy(&c3_mxArrayInData); } static const mxArray *c3_e_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i131; real_T c3_b_inData[2]; int32_T c3_i132; real_T c3_u[2]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i131 = 0; c3_i131 < 2; c3_i131++) { c3_b_inData[c3_i131] = (*(real_T (*)[2])c3_inData)[c3_i131]; } for (c3_i132 = 0; c3_i132 < 2; c3_i132++) { c3_u[c3_i132] = c3_b_inData[c3_i132]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_f_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i133; real_T c3_b_inData[11]; int32_T c3_i134; real_T c3_u[11]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i133 = 0; c3_i133 < 11; c3_i133++) { c3_b_inData[c3_i133] = (*(real_T (*)[11])c3_inData)[c3_i133]; } for (c3_i134 = 0; c3_i134 < 11; c3_i134++) { c3_u[c3_i134] = c3_b_inData[c3_i134]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 11), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_g_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i135; real_T c3_b_inData[6]; int32_T c3_i136; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i135 = 0; c3_i135 < 6; c3_i135++) { c3_b_inData[c3_i135] = (*(real_T (*)[6])c3_inData)[c3_i135]; } for (c3_i136 = 0; c3_i136 < 6; c3_i136++) { c3_u[c3_i136] = c3_b_inData[c3_i136]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_h_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i137; real_T c3_b_inData[10]; int32_T c3_i138; real_T c3_u[10]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i137 = 0; c3_i137 < 10; c3_i137++) { c3_b_inData[c3_i137] = (*(real_T (*)[10])c3_inData)[c3_i137]; } for (c3_i138 = 0; c3_i138 < 10; c3_i138++) { c3_u[c3_i138] = c3_b_inData[c3_i138]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_i_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i139; real_T c3_b_inData[6]; int32_T c3_i140; real_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i139 = 0; c3_i139 < 6; c3_i139++) { c3_b_inData[c3_i139] = (*(real_T (*)[6])c3_inData)[c3_i139]; } for (c3_i140 = 0; c3_i140 < 6; c3_i140++) { c3_u[c3_i140] = c3_b_inData[c3_i140]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_j_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i141; int32_T c3_i142; int32_T c3_i143; real_T c3_b_inData[36]; int32_T c3_i144; int32_T c3_i145; int32_T c3_i146; real_T c3_u[36]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i141 = 0; for (c3_i142 = 0; c3_i142 < 6; c3_i142++) { for (c3_i143 = 0; c3_i143 < 6; c3_i143++) { c3_b_inData[c3_i143 + c3_i141] = (*(real_T (*)[36])c3_inData)[c3_i143 + c3_i141]; } c3_i141 += 6; } c3_i144 = 0; for (c3_i145 = 0; c3_i145 < 6; c3_i145++) { for (c3_i146 = 0; c3_i146 < 6; c3_i146++) { c3_u[c3_i146 + c3_i144] = c3_b_inData[c3_i146 + c3_i144]; } c3_i144 += 6; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 6, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_k_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i147; real_T c3_b_inData[5]; int32_T c3_i148; real_T c3_u[5]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i147 = 0; c3_i147 < 5; c3_i147++) { c3_b_inData[c3_i147] = (*(real_T (*)[5])c3_inData)[c3_i147]; } for (c3_i148 = 0; c3_i148 < 5; c3_i148++) { c3_u[c3_i148] = c3_b_inData[c3_i148]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 5), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_l_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; boolean_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(boolean_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_m_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i149; real_T c3_b_inData[15]; int32_T c3_i150; real_T c3_u[15]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i149 = 0; c3_i149 < 15; c3_i149++) { c3_b_inData[c3_i149] = (*(real_T (*)[15])c3_inData)[c3_i149]; } for (c3_i150 = 0; c3_i150 < 15; c3_i150++) { c3_u[c3_i150] = c3_b_inData[c3_i150]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 1, 15), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_n_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i151; real_T c3_b_inData[3]; int32_T c3_i152; real_T c3_u[3]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i151 = 0; c3_i151 < 3; c3_i151++) { c3_b_inData[c3_i151] = (*(real_T (*)[3])c3_inData)[c3_i151]; } for (c3_i152 = 0; c3_i152 < 3; c3_i152++) { c3_u[c3_i152] = c3_b_inData[c3_i152]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 3), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_o_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i153; real_T c3_b_inData[11]; int32_T c3_i154; real_T c3_u[11]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i153 = 0; c3_i153 < 11; c3_i153++) { c3_b_inData[c3_i153] = (*(real_T (*)[11])c3_inData)[c3_i153]; } for (c3_i154 = 0; c3_i154 < 11; c3_i154++) { c3_u[c3_i154] = c3_b_inData[c3_i154]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 1, 11), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_p_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i155; int32_T c3_i156; int32_T c3_i157; real_T c3_b_inData[60]; int32_T c3_i158; int32_T c3_i159; int32_T c3_i160; real_T c3_u[60]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i155 = 0; for (c3_i156 = 0; c3_i156 < 6; c3_i156++) { for (c3_i157 = 0; c3_i157 < 10; c3_i157++) { c3_b_inData[c3_i157 + c3_i155] = (*(real_T (*)[60])c3_inData)[c3_i157 + c3_i155]; } c3_i155 += 10; } c3_i158 = 0; for (c3_i159 = 0; c3_i159 < 6; c3_i159++) { for (c3_i160 = 0; c3_i160 < 10; c3_i160++) { c3_u[c3_i160 + c3_i158] = c3_b_inData[c3_i160 + c3_i158]; } c3_i158 += 10; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 10, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_q_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i161; int32_T c3_i162; int32_T c3_i163; real_T c3_b_inData[90]; int32_T c3_i164; int32_T c3_i165; int32_T c3_i166; real_T c3_u[90]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i161 = 0; for (c3_i162 = 0; c3_i162 < 6; c3_i162++) { for (c3_i163 = 0; c3_i163 < 15; c3_i163++) { c3_b_inData[c3_i163 + c3_i161] = (*(real_T (*)[90])c3_inData)[c3_i163 + c3_i161]; } c3_i161 += 15; } c3_i164 = 0; for (c3_i165 = 0; c3_i165 < 6; c3_i165++) { for (c3_i166 = 0; c3_i166 < 15; c3_i166++) { c3_u[c3_i166 + c3_i164] = c3_b_inData[c3_i166 + c3_i164]; } c3_i164 += 15; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 15, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_r_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i167; int32_T c3_i168; int32_T c3_i169; real_T c3_b_inData[18]; int32_T c3_i170; int32_T c3_i171; int32_T c3_i172; real_T c3_u[18]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i167 = 0; for (c3_i168 = 0; c3_i168 < 6; c3_i168++) { for (c3_i169 = 0; c3_i169 < 3; c3_i169++) { c3_b_inData[c3_i169 + c3_i167] = (*(real_T (*)[18])c3_inData)[c3_i169 + c3_i167]; } c3_i167 += 3; } c3_i170 = 0; for (c3_i171 = 0; c3_i171 < 6; c3_i171++) { for (c3_i172 = 0; c3_i172 < 3; c3_i172++) { c3_u[c3_i172 + c3_i170] = c3_b_inData[c3_i172 + c3_i170]; } c3_i170 += 3; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 3, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_s_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i173; int32_T c3_i174; int32_T c3_i175; real_T c3_b_inData[66]; int32_T c3_i176; int32_T c3_i177; int32_T c3_i178; real_T c3_u[66]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_i173 = 0; for (c3_i174 = 0; c3_i174 < 6; c3_i174++) { for (c3_i175 = 0; c3_i175 < 11; c3_i175++) { c3_b_inData[c3_i175 + c3_i173] = (*(real_T (*)[66])c3_inData)[c3_i175 + c3_i173]; } c3_i173 += 11; } c3_i176 = 0; for (c3_i177 = 0; c3_i177 < 6; c3_i177++) { for (c3_i178 = 0; c3_i178 < 11; c3_i178++) { c3_u[c3_i178 + c3_i176] = c3_b_inData[c3_i178 + c3_i176]; } c3_i176 += 11; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 0, 0U, 1U, 0U, 2, 11, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static const mxArray *c3_t_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_i179; char_T c3_b_inData[6]; int32_T c3_i180; char_T c3_u[6]; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; for (c3_i179 = 0; c3_i179 < 6; c3_i179++) { c3_b_inData[c3_i179] = (*(char_T (*)[6])c3_inData)[c3_i179]; } for (c3_i180 = 0; c3_i180 < 6; c3_i180++) { c3_u[c3_i180] = c3_b_inData[c3_i180]; } c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", c3_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c3_nameCaptureInfo = NULL; c3_nameCaptureInfo = NULL; sf_mex_assign(&c3_nameCaptureInfo, sf_mex_create("nameCaptureInfo", NULL, 0, 0U, 1U, 0U, 2, 0, 1), FALSE); return c3_nameCaptureInfo; } static void c3_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const char_T *c3_identifier, real_T c3_y[3]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_u), &c3_thisId, c3_y); sf_mex_destroy(&c3_u); } static void c3_b_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]) { real_T c3_dv20[3]; int32_T c3_i181; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv20, 1, 0, 0U, 1, 0U, 1, 3); for (c3_i181 = 0; c3_i181 < 3; c3_i181++) { c3_y[c3_i181] = c3_dv20[c3_i181]; } sf_mex_destroy(&c3_u); } static real_T c3_c_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_cost, const char_T *c3_identifier) { real_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_cost), &c3_thisId); sf_mex_destroy(&c3_cost); return c3_y; } static real_T c3_d_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { real_T c3_y; real_T c3_d34; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_d34, 1, 0, 0U, 0, 0U, 0); c3_y = c3_d34; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_useq, const char_T *c3_identifier, real_T c3_y[15]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_useq), &c3_thisId, c3_y); sf_mex_destroy(&c3_useq); } static void c3_f_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]) { real_T c3_dv21[15]; int32_T c3_i182; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv21, 1, 0, 0U, 1, 0U, 2, 5, 3); for (c3_i182 = 0; c3_i182 < 15; c3_i182++) { c3_y[c3_i182] = c3_dv21[c3_i182]; } sf_mex_destroy(&c3_u); } static void c3_g_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_iAout, const char_T *c3_identifier, boolean_T c3_y[7]) { emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_iAout), &c3_thisId, c3_y); sf_mex_destroy(&c3_iAout); } static void c3_h_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, boolean_T c3_y[7]) { boolean_T c3_bv2[7]; int32_T c3_i183; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_bv2, 1, 11, 0U, 1, 0U, 1, 7); for (c3_i183 = 0; c3_i183 < 7; c3_i183++) { c3_y[c3_i183] = c3_bv2[c3_i183]; } sf_mex_destroy(&c3_u); } static const mxArray *c3_u_sf_marshallOut(void *chartInstanceVoid, void *c3_inData) { const mxArray *c3_mxArrayOutData = NULL; int32_T c3_u; const mxArray *c3_y = NULL; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_mxArrayOutData = NULL; c3_u = *(int32_T *)c3_inData; c3_y = NULL; sf_mex_assign(&c3_y, sf_mex_create("y", &c3_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c3_mxArrayOutData, c3_y, FALSE); return c3_mxArrayOutData; } static int32_T c3_i_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { int32_T c3_y; int32_T c3_i184; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_i184, 1, 6, 0U, 0, 0U, 0); c3_y = c3_i184; sf_mex_destroy(&c3_u); return c3_y; } static void c3_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_b_sfEvent; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; int32_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_b_sfEvent = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_b_sfEvent), &c3_thisId); sf_mex_destroy(&c3_b_sfEvent); *(int32_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static boolean_T c3_j_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { boolean_T c3_y; boolean_T c3_b0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_b0, 1, 11, 0U, 0, 0U, 0); c3_y = c3_b0; sf_mex_destroy(&c3_u); return c3_y; } static void c3_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_isQP; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; boolean_T c3_y; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_isQP = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_j_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_isQP), &c3_thisId); sf_mex_destroy(&c3_c_isQP); *(boolean_T *)c3_outData = c3_y; sf_mex_destroy(&c3_mxArrayInData); } static void c3_k_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[36]) { real_T c3_dv22[36]; int32_T c3_i185; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv22, 1, 0, 0U, 1, 0U, 2, 6, 6); for (c3_i185 = 0; c3_i185 < 36; c3_i185++) { c3_y[c3_i185] = c3_dv22[c3_i185]; } sf_mex_destroy(&c3_u); } static void c3_g_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Hinv; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[36]; int32_T c3_i186; int32_T c3_i187; int32_T c3_i188; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Hinv = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_k_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Hinv), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Hinv); c3_i186 = 0; for (c3_i187 = 0; c3_i187 < 6; c3_i187++) { for (c3_i188 = 0; c3_i188 < 6; c3_i188++) { (*(real_T (*)[36])c3_outData)[c3_i188 + c3_i186] = c3_y[c3_i188 + c3_i186]; } c3_i186 += 6; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_l_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[66]) { real_T c3_dv23[66]; int32_T c3_i189; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv23, 1, 0, 0U, 1, 0U, 2, 11, 6); for (c3_i189 = 0; c3_i189 < 66; c3_i189++) { c3_y[c3_i189] = c3_dv23[c3_i189]; } sf_mex_destroy(&c3_u); } static void c3_h_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[66]; int32_T c3_i190; int32_T c3_i191; int32_T c3_i192; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_l_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kx); c3_i190 = 0; for (c3_i191 = 0; c3_i191 < 6; c3_i191++) { for (c3_i192 = 0; c3_i192 < 11; c3_i192++) { (*(real_T (*)[66])c3_outData)[c3_i192 + c3_i190] = c3_y[c3_i192 + c3_i190]; } c3_i190 += 11; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_m_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[18]) { real_T c3_dv24[18]; int32_T c3_i193; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv24, 1, 0, 0U, 1, 0U, 2, 3, 6); for (c3_i193 = 0; c3_i193 < 18; c3_i193++) { c3_y[c3_i193] = c3_dv24[c3_i193]; } sf_mex_destroy(&c3_u); } static void c3_i_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ku1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[18]; int32_T c3_i194; int32_T c3_i195; int32_T c3_i196; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ku1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_m_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ku1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ku1); c3_i194 = 0; for (c3_i195 = 0; c3_i195 < 6; c3_i195++) { for (c3_i196 = 0; c3_i196 < 3; c3_i196++) { (*(real_T (*)[18])c3_outData)[c3_i196 + c3_i194] = c3_y[c3_i196 + c3_i194]; } c3_i194 += 3; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_n_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[90]) { real_T c3_dv25[90]; int32_T c3_i197; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv25, 1, 0, 0U, 1, 0U, 2, 15, 6); for (c3_i197 = 0; c3_i197 < 90; c3_i197++) { c3_y[c3_i197] = c3_dv25[c3_i197]; } sf_mex_destroy(&c3_u); } static void c3_j_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kut; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[90]; int32_T c3_i198; int32_T c3_i199; int32_T c3_i200; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kut = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_n_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kut), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kut); c3_i198 = 0; for (c3_i199 = 0; c3_i199 < 6; c3_i199++) { for (c3_i200 = 0; c3_i200 < 15; c3_i200++) { (*(real_T (*)[90])c3_outData)[c3_i200 + c3_i198] = c3_y[c3_i200 + c3_i198]; } c3_i198 += 15; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_o_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[60]) { real_T c3_dv26[60]; int32_T c3_i201; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv26, 1, 0, 0U, 1, 0U, 2, 10, 6); for (c3_i201 = 0; c3_i201 < 60; c3_i201++) { c3_y[c3_i201] = c3_dv26[c3_i201]; } sf_mex_destroy(&c3_u); } static void c3_k_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Kr; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[60]; int32_T c3_i202; int32_T c3_i203; int32_T c3_i204; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Kr = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_o_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Kr), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Kr); c3_i202 = 0; for (c3_i203 = 0; c3_i203 < 6; c3_i203++) { for (c3_i204 = 0; c3_i204 < 10; c3_i204++) { (*(real_T (*)[60])c3_outData)[c3_i204 + c3_i202] = c3_y[c3_i204 + c3_i202]; } c3_i202 += 10; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_p_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[11]) { real_T c3_dv27[11]; int32_T c3_i205; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv27, 1, 0, 0U, 1, 0U, 2, 1, 11); for (c3_i205 = 0; c3_i205 < 11; c3_i205++) { c3_y[c3_i205] = c3_dv27[c3_i205]; } sf_mex_destroy(&c3_u); } static void c3_l_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mx; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[11]; int32_T c3_i206; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mx = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_p_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mx), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mx); for (c3_i206 = 0; c3_i206 < 11; c3_i206++) { (*(real_T (*)[11])c3_outData)[c3_i206] = c3_y[c3_i206]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_q_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[3]) { real_T c3_dv28[3]; int32_T c3_i207; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv28, 1, 0, 0U, 1, 0U, 2, 1, 3); for (c3_i207 = 0; c3_i207 < 3; c3_i207++) { c3_y[c3_i207] = c3_dv28[c3_i207]; } sf_mex_destroy(&c3_u); } static void c3_m_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Mu1; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[3]; int32_T c3_i208; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Mu1 = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_q_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Mu1), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Mu1); for (c3_i208 = 0; c3_i208 < 3; c3_i208++) { (*(real_T (*)[3])c3_outData)[c3_i208] = c3_y[c3_i208]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_r_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]) { real_T c3_dv29[6]; int32_T c3_i209; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv29, 1, 0, 0U, 1, 0U, 1, 6); for (c3_i209 = 0; c3_i209 < 6; c3_i209++) { c3_y[c3_i209] = c3_dv29[c3_i209]; } sf_mex_destroy(&c3_u); } static void c3_n_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_z_degrees; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[6]; int32_T c3_i210; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_z_degrees = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_r_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_z_degrees), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_z_degrees); for (c3_i210 = 0; c3_i210 < 6; c3_i210++) { (*(real_T (*)[6])c3_outData)[c3_i210] = c3_y[c3_i210]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_s_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[15]) { real_T c3_dv30[15]; int32_T c3_i211; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv30, 1, 0, 0U, 1, 0U, 1, 15); for (c3_i211 = 0; c3_i211 < 15; c3_i211++) { c3_y[c3_i211] = c3_dv30[c3_i211]; } sf_mex_destroy(&c3_u); } static void c3_o_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_utarget; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[15]; int32_T c3_i212; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_utarget = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_s_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_utarget), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_utarget); for (c3_i212 = 0; c3_i212 < 15; c3_i212++) { (*(real_T (*)[15])c3_outData)[c3_i212] = c3_y[c3_i212]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_t_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[2]) { real_T c3_dv31[2]; int32_T c3_i213; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv31, 1, 0, 0U, 1, 0U, 1, 2); for (c3_i213 = 0; c3_i213 < 2; c3_i213++) { c3_y[c3_i213] = c3_dv31[c3_i213]; } sf_mex_destroy(&c3_u); } static void c3_p_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_yoff; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[2]; int32_T c3_i214; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_yoff = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_t_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_yoff), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_yoff); for (c3_i214 = 0; c3_i214 < 2; c3_i214++) { (*(real_T (*)[2])c3_outData)[c3_i214] = c3_y[c3_i214]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_u_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[5]) { real_T c3_dv32[5]; int32_T c3_i215; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv32, 1, 0, 0U, 1, 0U, 2, 1, 5); for (c3_i215 = 0; c3_i215 < 5; c3_i215++) { c3_y[c3_i215] = c3_dv32[c3_i215]; } sf_mex_destroy(&c3_u); } static void c3_q_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_blocking_moves; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[5]; int32_T c3_i216; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_blocking_moves = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_u_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_blocking_moves), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_blocking_moves); for (c3_i216 = 0; c3_i216 < 5; c3_i216++) { (*(real_T (*)[5])c3_outData)[c3_i216] = c3_y[c3_i216]; } sf_mex_destroy(&c3_mxArrayInData); } static void c3_v_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId, real_T c3_y[6]) { real_T c3_dv33[6]; int32_T c3_i217; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), c3_dv33, 1, 0, 0U, 1, 0U, 2, 1, 6); for (c3_i217 = 0; c3_i217 < 6; c3_i217++) { c3_y[c3_i217] = c3_dv33[c3_i217]; } sf_mex_destroy(&c3_u); } static void c3_r_sf_marshallIn(void *chartInstanceVoid, const mxArray *c3_mxArrayInData, const char_T *c3_varName, void *c3_outData) { const mxArray *c3_c_Ac; const char_T *c3_identifier; emlrtMsgIdentifier c3_thisId; real_T c3_y[6]; int32_T c3_i218; SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)chartInstanceVoid; c3_c_Ac = sf_mex_dup(c3_mxArrayInData); c3_identifier = c3_varName; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_v_emlrt_marshallIn(chartInstance, sf_mex_dup(c3_c_Ac), &c3_thisId, c3_y); sf_mex_destroy(&c3_c_Ac); for (c3_i218 = 0; c3_i218 < 6; c3_i218++) { (*(real_T (*)[6])c3_outData)[c3_i218] = c3_y[c3_i218]; } sf_mex_destroy(&c3_mxArrayInData); } static uint8_T c3_w_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_b_is_active_c3_mpclib, const char_T *c3_identifier) { uint8_T c3_y; emlrtMsgIdentifier c3_thisId; c3_thisId.fIdentifier = c3_identifier; c3_thisId.fParent = NULL; c3_y = c3_x_emlrt_marshallIn(chartInstance, sf_mex_dup (c3_b_is_active_c3_mpclib), &c3_thisId); sf_mex_destroy(&c3_b_is_active_c3_mpclib); return c3_y; } static uint8_T c3_x_emlrt_marshallIn(SFc3_mpclibInstanceStruct *chartInstance, const mxArray *c3_u, const emlrtMsgIdentifier *c3_parentId) { uint8_T c3_y; uint8_T c3_u0; sf_mex_import(c3_parentId, sf_mex_dup(c3_u), &c3_u0, 1, 3, 0U, 0, 0U, 0); c3_y = c3_u0; sf_mex_destroy(&c3_u); return c3_y; } static void init_dsm_address_info(SFc3_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c3_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(600020008U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(2410528527U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(1516150950U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(2046671552U); } mxArray *sf_c3_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("j6VEDD3XqIorodiPjwvoYF"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,13,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(11); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,50,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(6); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(6); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(6); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(6); mxSetField(mxData,8,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,8,"type",mxType); } mxSetField(mxData,8,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(6); mxSetField(mxData,9,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,9,"type",mxType); } mxSetField(mxData,9,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(15); pr[1] = (double)(6); mxSetField(mxData,10,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,10,"type",mxType); } mxSetField(mxData,10,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(6); mxSetField(mxData,11,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,11,"type",mxType); } mxSetField(mxData,11,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(11); pr[1] = (double)(6); mxSetField(mxData,12,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,12,"type",mxType); } mxSetField(mxData,12,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(6); mxSetField(mxData,13,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,13,"type",mxType); } mxSetField(mxData,13,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,14,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,14,"type",mxType); } mxSetField(mxData,14,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(3); mxSetField(mxData,15,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,15,"type",mxType); } mxSetField(mxData,15,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,16,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,16,"type",mxType); } mxSetField(mxData,16,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(11); mxSetField(mxData,17,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,17,"type",mxType); } mxSetField(mxData,17,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,18,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,18,"type",mxType); } mxSetField(mxData,18,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,19,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,19,"type",mxType); } mxSetField(mxData,19,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,20,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,20,"type",mxType); } mxSetField(mxData,20,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,21,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,21,"type",mxType); } mxSetField(mxData,21,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,22,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,22,"type",mxType); } mxSetField(mxData,22,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,23,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,23,"type",mxType); } mxSetField(mxData,23,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(5); mxSetField(mxData,24,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,24,"type",mxType); } mxSetField(mxData,24,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,25,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,25,"type",mxType); } mxSetField(mxData,25,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,26,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,26,"type",mxType); } mxSetField(mxData,26,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,27,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,27,"type",mxType); } mxSetField(mxData,27,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,28,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,28,"type",mxType); } mxSetField(mxData,28,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,29,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,29,"type",mxType); } mxSetField(mxData,29,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,30,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,30,"type",mxType); } mxSetField(mxData,30,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,31,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,31,"type",mxType); } mxSetField(mxData,31,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,32,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,32,"type",mxType); } mxSetField(mxData,32,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,33,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,33,"type",mxType); } mxSetField(mxData,33,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,34,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,34,"type",mxType); } mxSetField(mxData,34,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,35,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,35,"type",mxType); } mxSetField(mxData,35,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,36,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,36,"type",mxType); } mxSetField(mxData,36,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,37,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,37,"type",mxType); } mxSetField(mxData,37,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,38,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,38,"type",mxType); } mxSetField(mxData,38,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,39,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,39,"type",mxType); } mxSetField(mxData,39,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,40,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,40,"type",mxType); } mxSetField(mxData,40,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,41,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,41,"type",mxType); } mxSetField(mxData,41,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,42,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,42,"type",mxType); } mxSetField(mxData,42,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,43,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,43,"type",mxType); } mxSetField(mxData,43,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,44,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,44,"type",mxType); } mxSetField(mxData,44,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,45,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,45,"type",mxType); } mxSetField(mxData,45,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,46,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,46,"type",mxType); } mxSetField(mxData,46,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(15); pr[1] = (double)(1); mxSetField(mxData,47,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,47,"type",mxType); } mxSetField(mxData,47,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,48,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,48,"type",mxType); } mxSetField(mxData,48,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,49,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,49,"type",mxType); } mxSetField(mxData,49,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,5,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(3); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(5); pr[1] = (double)(3); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(7); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c3_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c3_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x6'type','srcId','name','auxInfo'{{M[1],M[20],T\"cost\",},{M[1],M[145],T\"iAout\",},{M[1],M[126],T\"status\",},{M[1],M[19],T\"u\",},{M[1],M[21],T\"useq\",},{M[8],M[0],T\"is_active_c3_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 6, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c3_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 3, 1, 1, 68, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,1,1,0,"rseq"); _SFD_SET_DATA_PROPS(1,1,1,0,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"x"); _SFD_SET_DATA_PROPS(3,1,1,0,"old_u"); _SFD_SET_DATA_PROPS(4,1,1,0,"iA"); _SFD_SET_DATA_PROPS(5,1,1,0,"umin"); _SFD_SET_DATA_PROPS(6,1,1,0,"umax"); _SFD_SET_DATA_PROPS(7,1,1,0,"ymin"); _SFD_SET_DATA_PROPS(8,1,1,0,"ymax"); _SFD_SET_DATA_PROPS(9,1,1,0,"switch_in"); _SFD_SET_DATA_PROPS(10,1,1,0,"ywt"); _SFD_SET_DATA_PROPS(11,1,1,0,"duwt"); _SFD_SET_DATA_PROPS(12,1,1,0,"rhoeps"); _SFD_SET_DATA_PROPS(13,2,0,1,"u"); _SFD_SET_DATA_PROPS(14,2,0,1,"cost"); _SFD_SET_DATA_PROPS(15,2,0,1,"useq"); _SFD_SET_DATA_PROPS(16,2,0,1,"status"); _SFD_SET_DATA_PROPS(17,10,0,0,"isQP"); _SFD_SET_DATA_PROPS(18,10,0,0,"nu"); _SFD_SET_DATA_PROPS(19,10,0,0,"ny"); _SFD_SET_DATA_PROPS(20,10,0,0,"degrees"); _SFD_SET_DATA_PROPS(21,10,0,0,"Hinv"); _SFD_SET_DATA_PROPS(22,10,0,0,"Kx"); _SFD_SET_DATA_PROPS(23,10,0,0,"Ku1"); _SFD_SET_DATA_PROPS(24,10,0,0,"Kut"); _SFD_SET_DATA_PROPS(25,10,0,0,"Kr"); _SFD_SET_DATA_PROPS(26,10,0,0,"Kv"); _SFD_SET_DATA_PROPS(27,10,0,0,"Mlim"); _SFD_SET_DATA_PROPS(28,10,0,0,"Mx"); _SFD_SET_DATA_PROPS(29,10,0,0,"Mu1"); _SFD_SET_DATA_PROPS(30,10,0,0,"Mv"); _SFD_SET_DATA_PROPS(31,10,0,0,"z_degrees"); _SFD_SET_DATA_PROPS(32,10,0,0,"utarget"); _SFD_SET_DATA_PROPS(33,10,0,0,"p"); _SFD_SET_DATA_PROPS(34,10,0,0,"uoff"); _SFD_SET_DATA_PROPS(35,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(36,10,0,0,"maxiter"); _SFD_SET_DATA_PROPS(37,10,0,0,"nxQP"); _SFD_SET_DATA_PROPS(38,10,0,0,"openloopflag"); _SFD_SET_DATA_PROPS(39,10,0,0,"lims_inport"); _SFD_SET_DATA_PROPS(40,10,0,0,"no_umin"); _SFD_SET_DATA_PROPS(41,10,0,0,"no_umax"); _SFD_SET_DATA_PROPS(42,10,0,0,"no_ymin"); _SFD_SET_DATA_PROPS(43,10,0,0,"no_ymax"); _SFD_SET_DATA_PROPS(44,10,0,0,"switch_inport"); _SFD_SET_DATA_PROPS(45,10,0,0,"no_switch"); _SFD_SET_DATA_PROPS(46,10,0,0,"enable_value"); _SFD_SET_DATA_PROPS(47,10,0,0,"return_cost"); _SFD_SET_DATA_PROPS(48,10,0,0,"H"); _SFD_SET_DATA_PROPS(49,10,0,0,"return_sequence"); _SFD_SET_DATA_PROPS(50,10,0,0,"blocking_moves"); _SFD_SET_DATA_PROPS(51,10,0,0,"Linv"); _SFD_SET_DATA_PROPS(52,10,0,0,"Ac"); _SFD_SET_DATA_PROPS(53,10,0,0,"no_ywt"); _SFD_SET_DATA_PROPS(54,10,0,0,"no_duwt"); _SFD_SET_DATA_PROPS(55,10,0,0,"no_rhoeps"); _SFD_SET_DATA_PROPS(56,10,0,0,"Wy"); _SFD_SET_DATA_PROPS(57,10,0,0,"Wdu"); _SFD_SET_DATA_PROPS(58,10,0,0,"Jm"); _SFD_SET_DATA_PROPS(59,10,0,0,"SuJm"); _SFD_SET_DATA_PROPS(60,10,0,0,"I2JmWuI2Jm"); _SFD_SET_DATA_PROPS(61,10,0,0,"Su1"); _SFD_SET_DATA_PROPS(62,10,0,0,"I1WuI2Jm"); _SFD_SET_DATA_PROPS(63,10,0,0,"Sx"); _SFD_SET_DATA_PROPS(64,10,0,0,"Hv"); _SFD_SET_DATA_PROPS(65,10,0,0,"Wu"); _SFD_SET_DATA_PROPS(66,10,0,0,"I1"); _SFD_SET_DATA_PROPS(67,2,0,1,"iAout"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,2551); _SFD_CV_INIT_EML_IF(0,1,0,648,679,2012,2550); _SFD_CV_INIT_EML_IF(0,1,1,966,987,1495,2010); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_h_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 11; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_f_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 7; _SFD_SET_DATA_COMPILED_PROPS(4,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType)NULL); } { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(12,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)NULL); { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(13,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType) c3_d_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(14,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 5; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(15,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_c_sf_marshallOut,(MexInFcnForType) c3_c_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(16,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(17,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType)c3_f_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(18,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(19,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(20,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(21,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 11; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(22,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_s_sf_marshallOut,(MexInFcnForType) c3_h_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 3; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(23,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_r_sf_marshallOut,(MexInFcnForType) c3_i_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 15; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(24,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_q_sf_marshallOut,(MexInFcnForType) c3_j_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 10; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(25,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_p_sf_marshallOut,(MexInFcnForType) c3_k_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(26,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(27,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 11; _SFD_SET_DATA_COMPILED_PROPS(28,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_o_sf_marshallOut,(MexInFcnForType) c3_l_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 3; _SFD_SET_DATA_COMPILED_PROPS(29,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_n_sf_marshallOut,(MexInFcnForType) c3_m_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(30,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(31,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_g_sf_marshallOut,(MexInFcnForType) c3_n_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 15; _SFD_SET_DATA_COMPILED_PROPS(32,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_m_sf_marshallOut,(MexInFcnForType) c3_o_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(33,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 3; _SFD_SET_DATA_COMPILED_PROPS(34,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_d_sf_marshallOut,(MexInFcnForType) c3_d_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(35,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_e_sf_marshallOut,(MexInFcnForType) c3_p_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(36,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(37,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(38,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_l_sf_marshallOut,(MexInFcnForType)c3_f_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(39,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(40,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(41,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(42,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(43,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(44,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(45,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(46,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(47,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(48,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(49,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 5; _SFD_SET_DATA_COMPILED_PROPS(50,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_k_sf_marshallOut,(MexInFcnForType) c3_q_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 6; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(51,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_j_sf_marshallOut,(MexInFcnForType) c3_g_sf_marshallIn); } { unsigned int dimVector[2]; dimVector[0]= 1; dimVector[1]= 6; _SFD_SET_DATA_COMPILED_PROPS(52,SF_DOUBLE,2,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_i_sf_marshallOut,(MexInFcnForType) c3_r_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(53,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(54,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(55,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(56,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(57,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(58,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(59,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(60,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(61,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(62,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(63,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(64,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(65,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(66,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c3_b_sf_marshallOut,(MexInFcnForType)c3_b_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 7; _SFD_SET_DATA_COMPILED_PROPS(67,SF_UINT8,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c3_sf_marshallOut,(MexInFcnForType) c3_sf_marshallIn); } { real_T *c3_switch_in; real_T *c3_rhoeps; real_T *c3_cost; real_T *c3_status; real_T (*c3_rseq)[10]; real_T (*c3_vseq)[6]; real_T (*c3_x)[11]; real_T (*c3_old_u)[3]; boolean_T (*c3_iA)[7]; real_T (*c3_umin)[3]; real_T (*c3_umax)[3]; real_T (*c3_ymin)[2]; real_T (*c3_ymax)[2]; real_T (*c3_ywt)[2]; real_T (*c3_duwt)[3]; real_T (*c3_u)[3]; real_T (*c3_useq)[15]; boolean_T (*c3_iAout)[7]; c3_iAout = (boolean_T (*)[7])ssGetOutputPortSignal(chartInstance->S, 5); c3_status = (real_T *)ssGetOutputPortSignal(chartInstance->S, 4); c3_useq = (real_T (*)[15])ssGetOutputPortSignal(chartInstance->S, 3); c3_cost = (real_T *)ssGetOutputPortSignal(chartInstance->S, 2); c3_u = (real_T (*)[3])ssGetOutputPortSignal(chartInstance->S, 1); c3_rhoeps = (real_T *)ssGetInputPortSignal(chartInstance->S, 12); c3_duwt = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 11); c3_ywt = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 10); c3_switch_in = (real_T *)ssGetInputPortSignal(chartInstance->S, 9); c3_ymax = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 8); c3_ymin = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 7); c3_umax = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 6); c3_umin = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 5); c3_iA = (boolean_T (*)[7])ssGetInputPortSignal(chartInstance->S, 4); c3_old_u = (real_T (*)[3])ssGetInputPortSignal(chartInstance->S, 3); c3_x = (real_T (*)[11])ssGetInputPortSignal(chartInstance->S, 2); c3_vseq = (real_T (*)[6])ssGetInputPortSignal(chartInstance->S, 1); c3_rseq = (real_T (*)[10])ssGetInputPortSignal(chartInstance->S, 0); _SFD_SET_DATA_VALUE_PTR(0U, *c3_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c3_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c3_x); _SFD_SET_DATA_VALUE_PTR(3U, *c3_old_u); _SFD_SET_DATA_VALUE_PTR(4U, *c3_iA); _SFD_SET_DATA_VALUE_PTR(5U, *c3_umin); _SFD_SET_DATA_VALUE_PTR(6U, *c3_umax); _SFD_SET_DATA_VALUE_PTR(7U, *c3_ymin); _SFD_SET_DATA_VALUE_PTR(8U, *c3_ymax); _SFD_SET_DATA_VALUE_PTR(9U, c3_switch_in); _SFD_SET_DATA_VALUE_PTR(10U, *c3_ywt); _SFD_SET_DATA_VALUE_PTR(11U, *c3_duwt); _SFD_SET_DATA_VALUE_PTR(12U, c3_rhoeps); _SFD_SET_DATA_VALUE_PTR(13U, *c3_u); _SFD_SET_DATA_VALUE_PTR(14U, c3_cost); _SFD_SET_DATA_VALUE_PTR(15U, *c3_useq); _SFD_SET_DATA_VALUE_PTR(16U, c3_status); _SFD_SET_DATA_VALUE_PTR(17U, &chartInstance->c3_isQP); _SFD_SET_DATA_VALUE_PTR(18U, &chartInstance->c3_nu); _SFD_SET_DATA_VALUE_PTR(19U, &chartInstance->c3_ny); _SFD_SET_DATA_VALUE_PTR(20U, &chartInstance->c3_degrees); _SFD_SET_DATA_VALUE_PTR(21U, chartInstance->c3_Hinv); _SFD_SET_DATA_VALUE_PTR(22U, chartInstance->c3_Kx); _SFD_SET_DATA_VALUE_PTR(23U, chartInstance->c3_Ku1); _SFD_SET_DATA_VALUE_PTR(24U, chartInstance->c3_Kut); _SFD_SET_DATA_VALUE_PTR(25U, chartInstance->c3_Kr); _SFD_SET_DATA_VALUE_PTR(26U, chartInstance->c3_Kv); _SFD_SET_DATA_VALUE_PTR(27U, &chartInstance->c3_Mlim); _SFD_SET_DATA_VALUE_PTR(28U, chartInstance->c3_Mx); _SFD_SET_DATA_VALUE_PTR(29U, chartInstance->c3_Mu1); _SFD_SET_DATA_VALUE_PTR(30U, &chartInstance->c3_Mv); _SFD_SET_DATA_VALUE_PTR(31U, chartInstance->c3_z_degrees); _SFD_SET_DATA_VALUE_PTR(32U, chartInstance->c3_utarget); _SFD_SET_DATA_VALUE_PTR(33U, &chartInstance->c3_p); _SFD_SET_DATA_VALUE_PTR(34U, chartInstance->c3_uoff); _SFD_SET_DATA_VALUE_PTR(35U, chartInstance->c3_yoff); _SFD_SET_DATA_VALUE_PTR(36U, &chartInstance->c3_maxiter); _SFD_SET_DATA_VALUE_PTR(37U, &chartInstance->c3_nxQP); _SFD_SET_DATA_VALUE_PTR(38U, &chartInstance->c3_openloopflag); _SFD_SET_DATA_VALUE_PTR(39U, &chartInstance->c3_lims_inport); _SFD_SET_DATA_VALUE_PTR(40U, &chartInstance->c3_no_umin); _SFD_SET_DATA_VALUE_PTR(41U, &chartInstance->c3_no_umax); _SFD_SET_DATA_VALUE_PTR(42U, &chartInstance->c3_no_ymin); _SFD_SET_DATA_VALUE_PTR(43U, &chartInstance->c3_no_ymax); _SFD_SET_DATA_VALUE_PTR(44U, &chartInstance->c3_switch_inport); _SFD_SET_DATA_VALUE_PTR(45U, &chartInstance->c3_no_switch); _SFD_SET_DATA_VALUE_PTR(46U, &chartInstance->c3_enable_value); _SFD_SET_DATA_VALUE_PTR(47U, &chartInstance->c3_return_cost); _SFD_SET_DATA_VALUE_PTR(48U, chartInstance->c3_H); _SFD_SET_DATA_VALUE_PTR(49U, &chartInstance->c3_return_sequence); _SFD_SET_DATA_VALUE_PTR(50U, chartInstance->c3_blocking_moves); _SFD_SET_DATA_VALUE_PTR(51U, chartInstance->c3_Linv); _SFD_SET_DATA_VALUE_PTR(52U, chartInstance->c3_Ac); _SFD_SET_DATA_VALUE_PTR(53U, &chartInstance->c3_no_ywt); _SFD_SET_DATA_VALUE_PTR(54U, &chartInstance->c3_no_duwt); _SFD_SET_DATA_VALUE_PTR(55U, &chartInstance->c3_no_rhoeps); _SFD_SET_DATA_VALUE_PTR(56U, &chartInstance->c3_Wy); _SFD_SET_DATA_VALUE_PTR(57U, &chartInstance->c3_Wdu); _SFD_SET_DATA_VALUE_PTR(58U, &chartInstance->c3_Jm); _SFD_SET_DATA_VALUE_PTR(59U, &chartInstance->c3_SuJm); _SFD_SET_DATA_VALUE_PTR(60U, &chartInstance->c3_I2JmWuI2Jm); _SFD_SET_DATA_VALUE_PTR(61U, &chartInstance->c3_Su1); _SFD_SET_DATA_VALUE_PTR(62U, &chartInstance->c3_I1WuI2Jm); _SFD_SET_DATA_VALUE_PTR(63U, &chartInstance->c3_Sx); _SFD_SET_DATA_VALUE_PTR(64U, &chartInstance->c3_Hv); _SFD_SET_DATA_VALUE_PTR(65U, &chartInstance->c3_Wu); _SFD_SET_DATA_VALUE_PTR(66U, &chartInstance->c3_I1); _SFD_SET_DATA_VALUE_PTR(67U, *c3_iAout); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "tyXL61drY84iZIuMyIrmK"; } static void sf_opaque_initialize_c3_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); initialize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c3_mpclib(void *chartInstanceVar) { enable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c3_mpclib(void *chartInstanceVar) { disable_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c3_mpclib(void *chartInstanceVar) { sf_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c3_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c3_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c3_mpclib((SFc3_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c3_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c3_mpclib(S); } static void sf_opaque_set_sim_state_c3_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c3_mpclib(S, st); } static void sf_opaque_terminate_c3_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc3_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc3_mpclib((SFc3_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c3_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c3_mpclib(SimStruct *S) { /* Actual parameters from chart: Ac H Hinv Hv I1 I1WuI2Jm I2JmWuI2Jm Jm Kr Ku1 Kut Kv Kx Linv Mlim Mu1 Mv Mx Su1 SuJm Sx Wdu Wu Wy blocking_moves degrees enable_value isQP lims_inport maxiter no_duwt no_rhoeps no_switch no_umax no_umin no_ymax no_ymin no_ywt nu nxQP ny openloopflag p return_cost return_sequence switch_inport uoff utarget yoff z_degrees */ const char_T *rtParamNames[] = { "Ac", "H", "Hinv", "Hv", "I1", "I1WuI2Jm", "I2JmWuI2Jm", "Jm", "Kr", "Ku1", "Kut", "Kv", "Kx", "Linv", "Mlim", "Mu1", "Mv", "Mx", "Su1", "SuJm", "Sx", "Wdu", "Wu", "Wy", "blocking_moves", "degrees", "enable_value", "isQP", "lims_inport", "maxiter", "no_duwt", "no_rhoeps", "no_switch", "no_umax", "no_umin", "no_ymax", "no_ymin", "no_ywt", "nu", "nxQP", "ny", "openloopflag", "p", "return_cost", "return_sequence", "switch_inport", "uoff", "utarget", "yoff", "z_degrees" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for Ac*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for H*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for Hinv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for Hv*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for I1*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_DOUBLE); /* registration for I1WuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for I2JmWuI2Jm*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for Jm*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); /* registration for Kr*/ ssRegDlgParamAsRunTimeParam(S, 8, 8, rtParamNames[8], SS_DOUBLE); /* registration for Ku1*/ ssRegDlgParamAsRunTimeParam(S, 9, 9, rtParamNames[9], SS_DOUBLE); /* registration for Kut*/ ssRegDlgParamAsRunTimeParam(S, 10, 10, rtParamNames[10], SS_DOUBLE); /* registration for Kv*/ ssRegDlgParamAsRunTimeParam(S, 11, 11, rtParamNames[11], SS_DOUBLE); /* registration for Kx*/ ssRegDlgParamAsRunTimeParam(S, 12, 12, rtParamNames[12], SS_DOUBLE); /* registration for Linv*/ ssRegDlgParamAsRunTimeParam(S, 13, 13, rtParamNames[13], SS_DOUBLE); /* registration for Mlim*/ ssRegDlgParamAsRunTimeParam(S, 14, 14, rtParamNames[14], SS_DOUBLE); /* registration for Mu1*/ ssRegDlgParamAsRunTimeParam(S, 15, 15, rtParamNames[15], SS_DOUBLE); /* registration for Mv*/ ssRegDlgParamAsRunTimeParam(S, 16, 16, rtParamNames[16], SS_DOUBLE); /* registration for Mx*/ ssRegDlgParamAsRunTimeParam(S, 17, 17, rtParamNames[17], SS_DOUBLE); /* registration for Su1*/ ssRegDlgParamAsRunTimeParam(S, 18, 18, rtParamNames[18], SS_DOUBLE); /* registration for SuJm*/ ssRegDlgParamAsRunTimeParam(S, 19, 19, rtParamNames[19], SS_DOUBLE); /* registration for Sx*/ ssRegDlgParamAsRunTimeParam(S, 20, 20, rtParamNames[20], SS_DOUBLE); /* registration for Wdu*/ ssRegDlgParamAsRunTimeParam(S, 21, 21, rtParamNames[21], SS_DOUBLE); /* registration for Wu*/ ssRegDlgParamAsRunTimeParam(S, 22, 22, rtParamNames[22], SS_DOUBLE); /* registration for Wy*/ ssRegDlgParamAsRunTimeParam(S, 23, 23, rtParamNames[23], SS_DOUBLE); /* registration for blocking_moves*/ ssRegDlgParamAsRunTimeParam(S, 24, 24, rtParamNames[24], SS_DOUBLE); /* registration for degrees*/ ssRegDlgParamAsRunTimeParam(S, 25, 25, rtParamNames[25], SS_DOUBLE); /* registration for enable_value*/ ssRegDlgParamAsRunTimeParam(S, 26, 26, rtParamNames[26], SS_DOUBLE); /* registration for isQP*/ ssRegDlgParamAsRunTimeParam(S, 27, 27, rtParamNames[27], SS_BOOLEAN); /* registration for lims_inport*/ ssRegDlgParamAsRunTimeParam(S, 28, 28, rtParamNames[28], SS_DOUBLE); /* registration for maxiter*/ ssRegDlgParamAsRunTimeParam(S, 29, 29, rtParamNames[29], SS_DOUBLE); /* registration for no_duwt*/ ssRegDlgParamAsRunTimeParam(S, 30, 30, rtParamNames[30], SS_DOUBLE); /* registration for no_rhoeps*/ ssRegDlgParamAsRunTimeParam(S, 31, 31, rtParamNames[31], SS_DOUBLE); /* registration for no_switch*/ ssRegDlgParamAsRunTimeParam(S, 32, 32, rtParamNames[32], SS_DOUBLE); /* registration for no_umax*/ ssRegDlgParamAsRunTimeParam(S, 33, 33, rtParamNames[33], SS_DOUBLE); /* registration for no_umin*/ ssRegDlgParamAsRunTimeParam(S, 34, 34, rtParamNames[34], SS_DOUBLE); /* registration for no_ymax*/ ssRegDlgParamAsRunTimeParam(S, 35, 35, rtParamNames[35], SS_DOUBLE); /* registration for no_ymin*/ ssRegDlgParamAsRunTimeParam(S, 36, 36, rtParamNames[36], SS_DOUBLE); /* registration for no_ywt*/ ssRegDlgParamAsRunTimeParam(S, 37, 37, rtParamNames[37], SS_DOUBLE); /* registration for nu*/ ssRegDlgParamAsRunTimeParam(S, 38, 38, rtParamNames[38], SS_DOUBLE); /* registration for nxQP*/ ssRegDlgParamAsRunTimeParam(S, 39, 39, rtParamNames[39], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 40, 40, rtParamNames[40], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 41, 41, rtParamNames[41], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 42, 42, rtParamNames[42], SS_DOUBLE); /* registration for return_cost*/ ssRegDlgParamAsRunTimeParam(S, 43, 43, rtParamNames[43], SS_DOUBLE); /* registration for return_sequence*/ ssRegDlgParamAsRunTimeParam(S, 44, 44, rtParamNames[44], SS_DOUBLE); /* registration for switch_inport*/ ssRegDlgParamAsRunTimeParam(S, 45, 45, rtParamNames[45], SS_DOUBLE); /* registration for uoff*/ ssRegDlgParamAsRunTimeParam(S, 46, 46, rtParamNames[46], SS_DOUBLE); /* registration for utarget*/ ssRegDlgParamAsRunTimeParam(S, 47, 47, rtParamNames[47], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 48, 48, rtParamNames[48], SS_DOUBLE); /* registration for z_degrees*/ ssRegDlgParamAsRunTimeParam(S, 49, 49, rtParamNames[49], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 3); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,3,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,3, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,3); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 2, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 3, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 4, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 5, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 6, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 7, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 8, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 9, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 10, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 11, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 12, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,3,13); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,3,5); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=5; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 13; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,3); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(1708912441U)); ssSetChecksum1(S,(3061039266U)); ssSetChecksum2(S,(3804557872U)); ssSetChecksum3(S,(1905961369U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c3_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c3_mpclib(SimStruct *S) { SFc3_mpclibInstanceStruct *chartInstance; chartInstance = (SFc3_mpclibInstanceStruct *)utMalloc(sizeof (SFc3_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc3_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c3_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c3_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c3_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c3_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c3_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c3_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c3_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c3_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c3_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c3_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c3_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c3_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c3_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c3_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c3_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/c3_mpclib.h ================================================ #ifndef __c3_mpclib_h__ #define __c3_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc3_mpclibInstanceStruct #define typedef_SFc3_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c3_sfEvent; boolean_T c3_isStable; boolean_T c3_doneDoubleBufferReInit; uint8_T c3_is_active_c3_mpclib; boolean_T c3_isQP; real_T c3_nu; real_T c3_ny; real_T c3_degrees; real_T c3_Hinv[36]; real_T c3_Kx[66]; real_T c3_Ku1[18]; real_T c3_Kut[90]; real_T c3_Kr[60]; real_T c3_Kv[36]; real_T c3_Mlim; real_T c3_Mx[11]; real_T c3_Mu1[3]; real_T c3_Mv; real_T c3_z_degrees[6]; real_T c3_utarget[15]; real_T c3_p; real_T c3_uoff[3]; real_T c3_yoff[2]; real_T c3_maxiter; real_T c3_nxQP; boolean_T c3_openloopflag; real_T c3_lims_inport; real_T c3_no_umin; real_T c3_no_umax; real_T c3_no_ymin; real_T c3_no_ymax; real_T c3_switch_inport; real_T c3_no_switch; real_T c3_enable_value; real_T c3_return_cost; real_T c3_H[36]; real_T c3_return_sequence; real_T c3_blocking_moves[5]; real_T c3_Linv[36]; real_T c3_Ac[6]; real_T c3_no_ywt; real_T c3_no_duwt; real_T c3_no_rhoeps; real_T c3_Wy; real_T c3_Wdu; real_T c3_Jm; real_T c3_SuJm; real_T c3_I2JmWuI2Jm; real_T c3_Su1; real_T c3_I1WuI2Jm; real_T c3_Sx; real_T c3_Hv; real_T c3_Wu; real_T c3_I1; } SFc3_mpclibInstanceStruct; #endif /*typedef_SFc3_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); extern void c3_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/c4_mpclib.c ================================================ /* Include files */ #include #include "blas.h" #include "mpclib_sfun.h" #include "c4_mpclib.h" #define CHARTINSTANCE_CHARTNUMBER (chartInstance->chartNumber) #define CHARTINSTANCE_INSTANCENUMBER (chartInstance->instanceNumber) #include "mpclib_sfun_debug_macros.h" #define _SF_MEX_LISTEN_FOR_CTRL_C(S) sf_mex_listen_for_ctrl_c(sfGlobalDebugInstanceStruct,S); /* Type Definitions */ /* Named Constants */ #define CALL_EVENT (-1) #define c4_b_p (5.0) #define c4_b_ny (2.0) #define c4_b_nv (1.0) #define c4_b_voff (0.0) #define c4_b_no_md (1.0) #define c4_b_no_ref (0.0) #define c4_b_openloopflag (FALSE) /* Variable Declarations */ /* Variable Definitions */ static const char * c4_debug_family_names[16] = { "DataType", "nv", "ny", "p", "yoff", "voff", "no_md", "no_ref", "openloopflag", "nargin", "nargout", "ref", "md", "rseq", "vseq", "v" }; /* Function Declarations */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st); static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance); static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber); static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static void c4_info_helper(const mxArray **c4_info); static const mxArray *c4_emlrt_marshallOut(char * c4_u); static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u); static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[10]); static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[10]); static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[6]); static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[6]); static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier); static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData); static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static void c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]); static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData); static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier); static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId); static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance); /* Function Definitions */ static void initialize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { chartInstance->c4_sfEvent = CALL_EVENT; _sfTime_ = (real_T)ssGetT(chartInstance->S); chartInstance->c4_is_active_c4_mpclib = 0U; } static void initialize_params_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { real_T c4_d0; real_T c4_d1; real_T c4_d2; real_T c4_dv0[2]; int32_T c4_i0; real_T c4_d3; real_T c4_d4; real_T c4_d5; real_T c4_d6; sf_set_error_prefix_string( "Error evaluating data 'nv' in the parent workspace.\n"); sf_mex_import_named("nv", sf_mex_get_sfun_param(chartInstance->S, 2, 0), &c4_d0, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_nv = c4_d0; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'ny' in the parent workspace.\n"); sf_mex_import_named("ny", sf_mex_get_sfun_param(chartInstance->S, 3, 0), &c4_d1, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_ny = c4_d1; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'p' in the parent workspace.\n"); sf_mex_import_named("p", sf_mex_get_sfun_param(chartInstance->S, 5, 0), &c4_d2, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_p = c4_d2; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'yoff' in the parent workspace.\n"); sf_mex_import_named("yoff", sf_mex_get_sfun_param(chartInstance->S, 7, 0), c4_dv0, 0, 0, 0U, 1, 0U, 1, 2); for (c4_i0 = 0; c4_i0 < 2; c4_i0++) { chartInstance->c4_yoff[c4_i0] = c4_dv0[c4_i0]; } sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'voff' in the parent workspace.\n"); sf_mex_import_named("voff", sf_mex_get_sfun_param(chartInstance->S, 6, 0), &c4_d3, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_voff = c4_d3; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_md' in the parent workspace.\n"); sf_mex_import_named("no_md", sf_mex_get_sfun_param(chartInstance->S, 0, 0), &c4_d4, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_md = c4_d4; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'no_ref' in the parent workspace.\n"); sf_mex_import_named("no_ref", sf_mex_get_sfun_param(chartInstance->S, 1, 0), &c4_d5, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_no_ref = c4_d5; sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); sf_set_error_prefix_string( "Error evaluating data 'openloopflag' in the parent workspace.\n"); sf_mex_import_named("sf_mex_get_sfun_param", sf_mex_get_sfun_param (chartInstance->S, 4, 0), &c4_d6, 0, 0, 0U, 0, 0U, 0); chartInstance->c4_openloopflag = (c4_d6 != 0.0); sf_set_error_prefix_string("Stateflow Runtime Error (chart): "); } static void enable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void disable_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { _sfTime_ = (real_T)ssGetT(chartInstance->S); } static void c4_update_debugger_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static const mxArray *get_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { const mxArray *c4_st; const mxArray *c4_y = NULL; int32_T c4_i1; real_T c4_u[10]; const mxArray *c4_b_y = NULL; real_T c4_hoistedGlobal; real_T c4_b_u; const mxArray *c4_c_y = NULL; int32_T c4_i2; real_T c4_c_u[6]; const mxArray *c4_d_y = NULL; uint8_T c4_b_hoistedGlobal; uint8_T c4_d_u; const mxArray *c4_e_y = NULL; real_T *c4_v; real_T (*c4_vseq)[6]; real_T (*c4_rseq)[10]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); c4_st = NULL; c4_st = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_createcellarray(4), FALSE); for (c4_i1 = 0; c4_i1 < 10; c4_i1++) { c4_u[c4_i1] = (*c4_rseq)[c4_i1]; } c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_setcell(c4_y, 0, c4_b_y); c4_hoistedGlobal = *c4_v; c4_b_u = c4_hoistedGlobal; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 1, c4_c_y); for (c4_i2 = 0; c4_i2 < 6; c4_i2++) { c4_c_u[c4_i2] = (*c4_vseq)[c4_i2]; } c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", c4_c_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_setcell(c4_y, 2, c4_d_y); c4_b_hoistedGlobal = chartInstance->c4_is_active_c4_mpclib; c4_d_u = c4_b_hoistedGlobal; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_d_u, 3, 0U, 0U, 0U, 0), FALSE); sf_mex_setcell(c4_y, 3, c4_e_y); sf_mex_assign(&c4_st, c4_y, FALSE); return c4_st; } static void set_sim_state_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_st) { const mxArray *c4_u; real_T c4_dv1[10]; int32_T c4_i3; real_T c4_dv2[6]; int32_T c4_i4; real_T *c4_v; real_T (*c4_rseq)[10]; real_T (*c4_vseq)[6]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); chartInstance->c4_doneDoubleBufferReInit = TRUE; c4_u = sf_mex_dup(c4_st); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 0)), "rseq", c4_dv1); for (c4_i3 = 0; c4_i3 < 10; c4_i3++) { (*c4_rseq)[c4_i3] = c4_dv1[c4_i3]; } *c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 1)), "v"); c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 2)), "vseq", c4_dv2); for (c4_i4 = 0; c4_i4 < 6; c4_i4++) { (*c4_vseq)[c4_i4] = c4_dv2[c4_i4]; } chartInstance->c4_is_active_c4_mpclib = c4_j_emlrt_marshallIn(chartInstance, sf_mex_dup(sf_mex_getcell(c4_u, 3)), "is_active_c4_mpclib"); sf_mex_destroy(&c4_u); c4_update_debugger_state_c4_mpclib(chartInstance); sf_mex_destroy(&c4_st); } static void finalize_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void sf_c4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { int32_T c4_i5; int32_T c4_i6; int32_T c4_i7; int32_T c4_i8; real_T c4_hoistedGlobal; int32_T c4_i9; real_T c4_ref[2]; real_T c4_md; uint32_T c4_debug_family_var_map[16]; char_T c4_DataType[6]; real_T c4_c_nv; real_T c4_c_ny; real_T c4_c_p; real_T c4_c_yoff[2]; real_T c4_c_voff; real_T c4_c_no_md; real_T c4_c_no_ref; boolean_T c4_c_openloopflag; real_T c4_nargin = 10.0; real_T c4_nargout = 3.0; real_T c4_rseq[10]; real_T c4_vseq[6]; real_T c4_v; int32_T c4_i10; int32_T c4_i11; static char_T c4_cv0[6] = { 'd', 'o', 'u', 'b', 'l', 'e' }; int32_T c4_i12; int32_T c4_i13; int32_T c4_i14; real_T c4_u[2]; const mxArray *c4_y = NULL; real_T c4_b_u; const mxArray *c4_b_y = NULL; real_T c4_c_u; const mxArray *c4_c_y = NULL; real_T c4_d_u; const mxArray *c4_d_y = NULL; real_T c4_e_u; const mxArray *c4_e_y = NULL; int32_T c4_i15; real_T c4_f_u[2]; const mxArray *c4_f_y = NULL; real_T c4_g_u; const mxArray *c4_g_y = NULL; real_T c4_h_u; const mxArray *c4_h_y = NULL; real_T c4_i_u; const mxArray *c4_i_y = NULL; boolean_T c4_j_u; const mxArray *c4_j_y = NULL; const mxArray *c4_b_v = NULL; const mxArray *c4_b_vseq = NULL; const mxArray *c4_b_rseq = NULL; real_T c4_dv3[10]; int32_T c4_i16; real_T c4_dv4[6]; int32_T c4_i17; int32_T c4_i18; int32_T c4_i19; real_T *c4_b_md; real_T *c4_c_v; real_T (*c4_c_rseq)[10]; real_T (*c4_c_vseq)[6]; real_T (*c4_b_ref)[2]; c4_c_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_b_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_b_ref = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 0); c4_c_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_c_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SYMBOL_SCOPE_PUSH(0U, 0U); _sfTime_ = (real_T)ssGetT(chartInstance->S); _SFD_CC_CALL(CHART_ENTER_SFUNCTION_TAG, 1U, chartInstance->c4_sfEvent); for (c4_i5 = 0; c4_i5 < 10; c4_i5++) { _SFD_DATA_RANGE_CHECK((*c4_c_rseq)[c4_i5], 0U); } for (c4_i6 = 0; c4_i6 < 6; c4_i6++) { _SFD_DATA_RANGE_CHECK((*c4_c_vseq)[c4_i6], 1U); } for (c4_i7 = 0; c4_i7 < 2; c4_i7++) { _SFD_DATA_RANGE_CHECK((*c4_b_ref)[c4_i7], 2U); } _SFD_DATA_RANGE_CHECK(*c4_b_md, 3U); _SFD_DATA_RANGE_CHECK(*c4_c_v, 4U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_nv, 5U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_ny, 6U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_p, 7U); for (c4_i8 = 0; c4_i8 < 2; c4_i8++) { _SFD_DATA_RANGE_CHECK(chartInstance->c4_yoff[c4_i8], 8U); } _SFD_DATA_RANGE_CHECK(chartInstance->c4_voff, 9U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_md, 10U); _SFD_DATA_RANGE_CHECK(chartInstance->c4_no_ref, 11U); _SFD_DATA_RANGE_CHECK((real_T)chartInstance->c4_openloopflag, 12U); chartInstance->c4_sfEvent = CALL_EVENT; _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); c4_hoistedGlobal = *c4_b_md; for (c4_i9 = 0; c4_i9 < 2; c4_i9++) { c4_ref[c4_i9] = (*c4_b_ref)[c4_i9]; } c4_md = c4_hoistedGlobal; _SFD_SYMBOL_SCOPE_PUSH_EML(0U, 16U, 16U, c4_debug_family_names, c4_debug_family_var_map); _SFD_SYMBOL_SCOPE_ADD_EML(c4_DataType, 0U, c4_f_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_nv, 1U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_ny, 2U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_p, 3U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(c4_c_yoff, 4U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_voff, 5U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_md, 6U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_no_ref, 7U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_c_openloopflag, 8U, c4_e_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargin, 9U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_nargout, 10U, c4_sf_marshallOut, c4_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML(c4_ref, 11U, c4_d_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML(&c4_md, 12U, c4_sf_marshallOut); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_rseq, 13U, c4_c_sf_marshallOut, c4_c_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(c4_vseq, 14U, c4_b_sf_marshallOut, c4_b_sf_marshallIn); _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(&c4_v, 15U, c4_sf_marshallOut, c4_sf_marshallIn); c4_c_openloopflag = c4_b_openloopflag; c4_c_no_ref = c4_b_no_ref; c4_c_no_md = c4_b_no_md; c4_c_voff = c4_b_voff; for (c4_i10 = 0; c4_i10 < 2; c4_i10++) { c4_c_yoff[c4_i10] = 0.0; } c4_c_p = c4_b_p; c4_c_ny = c4_b_ny; c4_c_nv = c4_b_nv; CV_EML_FCN(0, 0); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 3); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 4); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 5); CV_EML_IF(0, 1, 0, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 7); for (c4_i11 = 0; c4_i11 < 6; c4_i11++) { c4_DataType[c4_i11] = c4_cv0[c4_i11]; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 8); for (c4_i12 = 0; c4_i12 < 10; c4_i12++) { c4_rseq[c4_i12] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 9); for (c4_i13 = 0; c4_i13 < 6; c4_i13++) { c4_vseq[c4_i13] = 0.0; } _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 10); c4_v = 0.0; _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 11); CV_EML_IF(0, 1, 1, TRUE); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, 12); for (c4_i14 = 0; c4_i14 < 2; c4_i14++) { c4_u[c4_i14] = c4_ref[c4_i14]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c4_b_u = c4_md; c4_b_y = NULL; sf_mex_assign(&c4_b_y, sf_mex_create("y", &c4_b_u, 0, 0U, 0U, 0U, 0), FALSE); c4_c_u = c4_b_nv; c4_c_y = NULL; sf_mex_assign(&c4_c_y, sf_mex_create("y", &c4_c_u, 0, 0U, 0U, 0U, 0), FALSE); c4_d_u = c4_b_ny; c4_d_y = NULL; sf_mex_assign(&c4_d_y, sf_mex_create("y", &c4_d_u, 0, 0U, 0U, 0U, 0), FALSE); c4_e_u = c4_b_p; c4_e_y = NULL; sf_mex_assign(&c4_e_y, sf_mex_create("y", &c4_e_u, 0, 0U, 0U, 0U, 0), FALSE); for (c4_i15 = 0; c4_i15 < 2; c4_i15++) { c4_f_u[c4_i15] = 0.0; } c4_f_y = NULL; sf_mex_assign(&c4_f_y, sf_mex_create("y", c4_f_u, 0, 0U, 1U, 0U, 1, 2), FALSE); c4_g_u = c4_b_voff; c4_g_y = NULL; sf_mex_assign(&c4_g_y, sf_mex_create("y", &c4_g_u, 0, 0U, 0U, 0U, 0), FALSE); c4_h_u = c4_b_no_md; c4_h_y = NULL; sf_mex_assign(&c4_h_y, sf_mex_create("y", &c4_h_u, 0, 0U, 0U, 0U, 0), FALSE); c4_i_u = c4_b_no_ref; c4_i_y = NULL; sf_mex_assign(&c4_i_y, sf_mex_create("y", &c4_i_u, 0, 0U, 0U, 0U, 0), FALSE); c4_j_u = c4_b_openloopflag; c4_j_y = NULL; sf_mex_assign(&c4_j_y, sf_mex_create("y", &c4_j_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_call_debug("mpcblock_refmd_double_mex", 3U, 10U, 14, c4_y, 14, c4_b_y, 14, c4_c_y, 14, c4_d_y, 14, c4_e_y, 14, c4_f_y, 14, c4_g_y, 14, c4_h_y, 14, c4_i_y, 14, c4_j_y, &c4_b_rseq, &c4_b_vseq, &c4_b_v); c4_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_rseq), "rseq", c4_dv3); for (c4_i16 = 0; c4_i16 < 10; c4_i16++) { c4_rseq[c4_i16] = c4_dv3[c4_i16]; } c4_c_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_vseq), "vseq", c4_dv4); for (c4_i17 = 0; c4_i17 < 6; c4_i17++) { c4_vseq[c4_i17] = c4_dv4[c4_i17]; } c4_v = c4_e_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_v), "v"); _SFD_EML_CALL(0U, chartInstance->c4_sfEvent, -18); _SFD_SYMBOL_SCOPE_POP(); sf_mex_destroy(&c4_b_rseq); sf_mex_destroy(&c4_b_vseq); sf_mex_destroy(&c4_b_v); for (c4_i18 = 0; c4_i18 < 10; c4_i18++) { (*c4_c_rseq)[c4_i18] = c4_rseq[c4_i18]; } for (c4_i19 = 0; c4_i19 < 6; c4_i19++) { (*c4_c_vseq)[c4_i19] = c4_vseq[c4_i19]; } *c4_c_v = c4_v; _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG, 1U, chartInstance->c4_sfEvent); _SFD_SYMBOL_SCOPE_POP(); _SFD_CHECK_FOR_STATE_INCONSISTENCY(_mpclibMachineNumber_, chartInstance->chartNumber, chartInstance->instanceNumber); } static void initSimStructsc4_mpclib(SFc4_mpclibInstanceStruct *chartInstance) { } static void init_script_number_translation(uint32_T c4_machineNumber, uint32_T c4_chartNumber) { } static const mxArray *c4_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; real_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(real_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 0, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_v; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_v = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); *(real_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_b_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i20; real_T c4_b_inData[6]; int32_T c4_i21; real_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i20 = 0; c4_i20 < 6; c4_i20++) { c4_b_inData[c4_i20] = (*(real_T (*)[6])c4_inData)[c4_i20]; } for (c4_i21 = 0; c4_i21 < 6; c4_i21++) { c4_u[c4_i21] = c4_b_inData[c4_i21]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_b_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_vseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[6]; int32_T c4_i22; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_vseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); for (c4_i22 = 0; c4_i22 < 6; c4_i22++) { (*(real_T (*)[6])c4_outData)[c4_i22] = c4_y[c4_i22]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_c_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i23; real_T c4_b_inData[10]; int32_T c4_i24; real_T c4_u[10]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i23 = 0; c4_i23 < 10; c4_i23++) { c4_b_inData[c4_i23] = (*(real_T (*)[10])c4_inData)[c4_i23]; } for (c4_i24 = 0; c4_i24 < 10; c4_i24++) { c4_u[c4_i24] = c4_b_inData[c4_i24]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 10), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static void c4_c_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_rseq; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[10]; int32_T c4_i25; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_rseq = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); for (c4_i25 = 0; c4_i25 < 10; c4_i25++) { (*(real_T (*)[10])c4_outData)[c4_i25] = c4_y[c4_i25]; } sf_mex_destroy(&c4_mxArrayInData); } static const mxArray *c4_d_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i26; real_T c4_b_inData[2]; int32_T c4_i27; real_T c4_u[2]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i26 = 0; c4_i26 < 2; c4_i26++) { c4_b_inData[c4_i26] = (*(real_T (*)[2])c4_inData)[c4_i26]; } for (c4_i27 = 0; c4_i27 < 2; c4_i27++) { c4_u[c4_i27] = c4_b_inData[c4_i27]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 0, 0U, 1U, 0U, 1, 2), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_e_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; boolean_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(boolean_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 11, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static const mxArray *c4_f_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_i28; char_T c4_b_inData[6]; int32_T c4_i29; char_T c4_u[6]; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; for (c4_i28 = 0; c4_i28 < 6; c4_i28++) { c4_b_inData[c4_i28] = (*(char_T (*)[6])c4_inData)[c4_i28]; } for (c4_i29 = 0; c4_i29 < 6; c4_i29++) { c4_u[c4_i29] = c4_b_inData[c4_i29]; } c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 10, 0U, 1U, 0U, 2, 1, 6), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void) { const mxArray *c4_nameCaptureInfo = NULL; c4_nameCaptureInfo = NULL; sf_mex_assign(&c4_nameCaptureInfo, sf_mex_createstruct("structure", 2, 2, 1), FALSE); c4_info_helper(&c4_nameCaptureInfo); sf_mex_emlrtNameCapturePostProcessR2012a(&c4_nameCaptureInfo); return c4_nameCaptureInfo; } static void c4_info_helper(const mxArray **c4_info) { const mxArray *c4_rhs0 = NULL; const mxArray *c4_lhs0 = NULL; const mxArray *c4_rhs1 = NULL; const mxArray *c4_lhs1 = NULL; sf_mex_addfield(*c4_info, c4_emlrt_marshallOut(""), "context", "context", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("mtimes"), "name", "name", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m"), "resolved", "resolved", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363688678U), "fileTimeLo", "fileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 0); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 0); sf_mex_assign(&c4_rhs0, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs0, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs0), "rhs", "rhs", 0); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs0), "lhs", "lhs", 0); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[ILXE]$matlabroot$/toolbox/eml/lib/matlab/ops/mtimes.m!common_checks"), "context", "context", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "coder.internal.isBuiltInNumeric"), "name", "name", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut("double"), "dominantType", "dominantType", 1); sf_mex_addfield(*c4_info, c4_emlrt_marshallOut( "[IXE]$matlabroot$/toolbox/shared/coder/coder/+coder/+internal/isBuiltInNumeric.m"), "resolved", "resolved", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(1363689356U), "fileTimeLo", "fileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "fileTimeHi", "fileTimeHi", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeLo", "mFileTimeLo", 1); sf_mex_addfield(*c4_info, c4_b_emlrt_marshallOut(0U), "mFileTimeHi", "mFileTimeHi", 1); sf_mex_assign(&c4_rhs1, sf_mex_createcellarray(0), FALSE); sf_mex_assign(&c4_lhs1, sf_mex_createcellarray(0), FALSE); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_rhs1), "rhs", "rhs", 1); sf_mex_addfield(*c4_info, sf_mex_duplicatearraysafe(&c4_lhs1), "lhs", "lhs", 1); sf_mex_destroy(&c4_rhs0); sf_mex_destroy(&c4_lhs0); sf_mex_destroy(&c4_rhs1); sf_mex_destroy(&c4_lhs1); } static const mxArray *c4_emlrt_marshallOut(char * c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", c4_u, 15, 0U, 0U, 0U, 2, 1, strlen (c4_u)), FALSE); return c4_y; } static const mxArray *c4_b_emlrt_marshallOut(uint32_T c4_u) { const mxArray *c4_y = NULL; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 7, 0U, 0U, 0U, 0), FALSE); return c4_y; } static void c4_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_rseq, const char_T *c4_identifier, real_T c4_y[10]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_b_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_rseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_rseq); } static void c4_b_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[10]) { real_T c4_dv5[10]; int32_T c4_i30; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv5, 1, 0, 0U, 1, 0U, 1, 10); for (c4_i30 = 0; c4_i30 < 10; c4_i30++) { c4_y[c4_i30] = c4_dv5[c4_i30]; } sf_mex_destroy(&c4_u); } static void c4_c_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_vseq, const char_T *c4_identifier, real_T c4_y[6]) { emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_d_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_vseq), &c4_thisId, c4_y); sf_mex_destroy(&c4_vseq); } static void c4_d_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[6]) { real_T c4_dv6[6]; int32_T c4_i31; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv6, 1, 0, 0U, 1, 0U, 1, 6); for (c4_i31 = 0; c4_i31 < 6; c4_i31++) { c4_y[c4_i31] = c4_dv6[c4_i31]; } sf_mex_destroy(&c4_u); } static real_T c4_e_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_v, const char_T *c4_identifier) { real_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_f_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_v), &c4_thisId); sf_mex_destroy(&c4_v); return c4_y; } static real_T c4_f_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { real_T c4_y; real_T c4_d7; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_d7, 1, 0, 0U, 0, 0U, 0); c4_y = c4_d7; sf_mex_destroy(&c4_u); return c4_y; } static const mxArray *c4_g_sf_marshallOut(void *chartInstanceVoid, void *c4_inData) { const mxArray *c4_mxArrayOutData = NULL; int32_T c4_u; const mxArray *c4_y = NULL; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_mxArrayOutData = NULL; c4_u = *(int32_T *)c4_inData; c4_y = NULL; sf_mex_assign(&c4_y, sf_mex_create("y", &c4_u, 6, 0U, 0U, 0U, 0), FALSE); sf_mex_assign(&c4_mxArrayOutData, c4_y, FALSE); return c4_mxArrayOutData; } static int32_T c4_g_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { int32_T c4_y; int32_T c4_i32; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_i32, 1, 6, 0U, 0, 0U, 0); c4_y = c4_i32; sf_mex_destroy(&c4_u); return c4_y; } static void c4_d_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_b_sfEvent; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; int32_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_b_sfEvent = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_g_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_b_sfEvent), &c4_thisId); sf_mex_destroy(&c4_b_sfEvent); *(int32_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static void c4_h_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId, real_T c4_y[2]) { real_T c4_dv7[2]; int32_T c4_i33; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), c4_dv7, 1, 0, 0U, 1, 0U, 1, 2); for (c4_i33 = 0; c4_i33 < 2; c4_i33++) { c4_y[c4_i33] = c4_dv7[c4_i33]; } sf_mex_destroy(&c4_u); } static void c4_e_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_yoff; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; real_T c4_y[2]; int32_T c4_i34; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_yoff = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_h_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_yoff), &c4_thisId, c4_y); sf_mex_destroy(&c4_c_yoff); for (c4_i34 = 0; c4_i34 < 2; c4_i34++) { (*(real_T (*)[2])c4_outData)[c4_i34] = c4_y[c4_i34]; } sf_mex_destroy(&c4_mxArrayInData); } static boolean_T c4_i_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { boolean_T c4_y; boolean_T c4_b0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_b0, 1, 11, 0U, 0, 0U, 0); c4_y = c4_b0; sf_mex_destroy(&c4_u); return c4_y; } static void c4_f_sf_marshallIn(void *chartInstanceVoid, const mxArray *c4_mxArrayInData, const char_T *c4_varName, void *c4_outData) { const mxArray *c4_c_openloopflag; const char_T *c4_identifier; emlrtMsgIdentifier c4_thisId; boolean_T c4_y; SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)chartInstanceVoid; c4_c_openloopflag = sf_mex_dup(c4_mxArrayInData); c4_identifier = c4_varName; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_i_emlrt_marshallIn(chartInstance, sf_mex_dup(c4_c_openloopflag), &c4_thisId); sf_mex_destroy(&c4_c_openloopflag); *(boolean_T *)c4_outData = c4_y; sf_mex_destroy(&c4_mxArrayInData); } static uint8_T c4_j_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_b_is_active_c4_mpclib, const char_T *c4_identifier) { uint8_T c4_y; emlrtMsgIdentifier c4_thisId; c4_thisId.fIdentifier = c4_identifier; c4_thisId.fParent = NULL; c4_y = c4_k_emlrt_marshallIn(chartInstance, sf_mex_dup (c4_b_is_active_c4_mpclib), &c4_thisId); sf_mex_destroy(&c4_b_is_active_c4_mpclib); return c4_y; } static uint8_T c4_k_emlrt_marshallIn(SFc4_mpclibInstanceStruct *chartInstance, const mxArray *c4_u, const emlrtMsgIdentifier *c4_parentId) { uint8_T c4_y; uint8_T c4_u0; sf_mex_import(c4_parentId, sf_mex_dup(c4_u), &c4_u0, 1, 3, 0U, 0, 0U, 0); c4_y = c4_u0; sf_mex_destroy(&c4_u); return c4_y; } static void init_dsm_address_info(SFc4_mpclibInstanceStruct *chartInstance) { } /* SFunction Glue Code */ #ifdef utFree #undef utFree #endif #ifdef utMalloc #undef utMalloc #endif #ifdef __cplusplus extern "C" void *utMalloc(size_t size); extern "C" void utFree(void*); #else extern void *utMalloc(size_t size); extern void utFree(void*); #endif void sf_c4_mpclib_get_check_sum(mxArray *plhs[]) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(2060684023U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3607261543U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(4175904135U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(1907083303U); } mxArray *sf_c4_mpclib_get_autoinheritance_info(void) { const char *autoinheritanceFields[] = { "checksum", "inputs", "parameters", "outputs", "locals" }; mxArray *mxAutoinheritanceInfo = mxCreateStructMatrix(1,1,5, autoinheritanceFields); { mxArray *mxChecksum = mxCreateString("W9pU18Rzyx5XpPp6ECbqY"); mxSetField(mxAutoinheritanceInfo,0,"checksum",mxChecksum); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,2,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"inputs",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,8,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,3,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,3,"type",mxType); } mxSetField(mxData,3,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,4,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(1)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,4,"type",mxType); } mxSetField(mxData,4,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,5,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,5,"type",mxType); } mxSetField(mxData,5,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,6,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,6,"type",mxType); } mxSetField(mxData,6,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(2); pr[1] = (double)(1); mxSetField(mxData,7,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,7,"type",mxType); } mxSetField(mxData,7,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"parameters",mxData); } { const char *dataFields[] = { "size", "type", "complexity" }; mxArray *mxData = mxCreateStructMatrix(1,3,3,dataFields); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(10); pr[1] = (double)(1); mxSetField(mxData,0,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,0,"type",mxType); } mxSetField(mxData,0,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(6); pr[1] = (double)(1); mxSetField(mxData,1,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,1,"type",mxType); } mxSetField(mxData,1,"complexity",mxCreateDoubleScalar(0)); { mxArray *mxSize = mxCreateDoubleMatrix(1,2,mxREAL); double *pr = mxGetPr(mxSize); pr[0] = (double)(1); pr[1] = (double)(1); mxSetField(mxData,2,"size",mxSize); } { const char *typeFields[] = { "base", "fixpt" }; mxArray *mxType = mxCreateStructMatrix(1,1,2,typeFields); mxSetField(mxType,0,"base",mxCreateDoubleScalar(10)); mxSetField(mxType,0,"fixpt",mxCreateDoubleMatrix(0,0,mxREAL)); mxSetField(mxData,2,"type",mxType); } mxSetField(mxData,2,"complexity",mxCreateDoubleScalar(0)); mxSetField(mxAutoinheritanceInfo,0,"outputs",mxData); } { mxSetField(mxAutoinheritanceInfo,0,"locals",mxCreateDoubleMatrix(0,0,mxREAL)); } return(mxAutoinheritanceInfo); } mxArray *sf_c4_mpclib_third_party_uses_info(void) { mxArray * mxcell3p = mxCreateCellMatrix(1,0); return(mxcell3p); } mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void) { mxArray *mxBIArgs = mxCreateCellMatrix(1,0); return mxBIArgs; } static const mxArray *sf_get_sim_state_info_c4_mpclib(void) { const char *infoFields[] = { "chartChecksum", "varInfo" }; mxArray *mxInfo = mxCreateStructMatrix(1, 1, 2, infoFields); const char *infoEncStr[] = { "100 S1x4'type','srcId','name','auxInfo'{{M[1],M[21],T\"rseq\",},{M[1],M[19],T\"v\",},{M[1],M[20],T\"vseq\",},{M[8],M[0],T\"is_active_c4_mpclib\",}}" }; mxArray *mxVarInfo = sf_mex_decode_encoded_mx_struct_array(infoEncStr, 4, 10); mxArray *mxChecksum = mxCreateDoubleMatrix(1, 4, mxREAL); sf_c4_mpclib_get_check_sum(&mxChecksum); mxSetField(mxInfo, 0, infoFields[0], mxChecksum); mxSetField(mxInfo, 0, infoFields[1], mxVarInfo); return mxInfo; } static void chart_debug_initialization(SimStruct *S, unsigned int fullDebuggerInitialization) { if (!sim_mode_is_rtw_gen(S)) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *) ((ChartInfoStruct *) (ssGetUserData(S)))->chartInstance; if (ssIsFirstInitCond(S) && fullDebuggerInitialization==1) { /* do this only if simulation is starting */ { unsigned int chartAlreadyPresent; chartAlreadyPresent = sf_debug_initialize_chart (sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, 4, 1, 1, 13, 0, 0, 0, 0, 0, &(chartInstance->chartNumber), &(chartInstance->instanceNumber), ssGetPath(S), (void *)S); if (chartAlreadyPresent==0) { /* this is the first instance */ init_script_number_translation(_mpclibMachineNumber_, chartInstance->chartNumber); sf_debug_set_chart_disable_implicit_casting (sfGlobalDebugInstanceStruct,_mpclibMachineNumber_, chartInstance->chartNumber,1); sf_debug_set_chart_event_thresholds(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_, chartInstance->chartNumber, 0, 0, 0); _SFD_SET_DATA_PROPS(0,2,0,1,"rseq"); _SFD_SET_DATA_PROPS(1,2,0,1,"vseq"); _SFD_SET_DATA_PROPS(2,1,1,0,"ref"); _SFD_SET_DATA_PROPS(3,1,1,0,"md"); _SFD_SET_DATA_PROPS(4,2,0,1,"v"); _SFD_SET_DATA_PROPS(5,10,0,0,"nv"); _SFD_SET_DATA_PROPS(6,10,0,0,"ny"); _SFD_SET_DATA_PROPS(7,10,0,0,"p"); _SFD_SET_DATA_PROPS(8,10,0,0,"yoff"); _SFD_SET_DATA_PROPS(9,10,0,0,"voff"); _SFD_SET_DATA_PROPS(10,10,0,0,"no_md"); _SFD_SET_DATA_PROPS(11,10,0,0,"no_ref"); _SFD_SET_DATA_PROPS(12,10,0,0,"openloopflag"); _SFD_STATE_INFO(0,0,2); _SFD_CH_SUBSTATE_COUNT(0); _SFD_CH_SUBSTATE_DECOMP(0); } _SFD_CV_INIT_CHART(0,0,0,0); { _SFD_CV_INIT_STATE(0,0,0,0,0,0,NULL,NULL); } _SFD_CV_INIT_TRANS(0,0,NULL,NULL,0,NULL); /* Initialization of MATLAB Function Model Coverage */ _SFD_CV_INIT_EML(0,1,1,2,0,0,0,0,0,0,0); _SFD_CV_INIT_EML_FCN(0,0,"eML_blk_kernel",0,-1,856); _SFD_CV_INIT_EML_IF(0,1,0,194,225,703,855); _SFD_CV_INIT_EML_IF(0,1,1,447,467,577,702); { unsigned int dimVector[1]; dimVector[0]= 10; _SFD_SET_DATA_COMPILED_PROPS(0,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_c_sf_marshallOut,(MexInFcnForType) c4_c_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 6; _SFD_SET_DATA_COMPILED_PROPS(1,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_b_sf_marshallOut,(MexInFcnForType) c4_b_sf_marshallIn); } { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(2,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType)NULL); } _SFD_SET_DATA_COMPILED_PROPS(3,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)NULL); _SFD_SET_DATA_COMPILED_PROPS(4,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(5,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(6,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(7,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); { unsigned int dimVector[1]; dimVector[0]= 2; _SFD_SET_DATA_COMPILED_PROPS(8,SF_DOUBLE,1,&(dimVector[0]),0,0,0,0.0, 1.0,0,0,(MexFcnForType)c4_d_sf_marshallOut,(MexInFcnForType) c4_e_sf_marshallIn); } _SFD_SET_DATA_COMPILED_PROPS(9,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(10,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(11,SF_DOUBLE,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_sf_marshallOut,(MexInFcnForType)c4_sf_marshallIn); _SFD_SET_DATA_COMPILED_PROPS(12,SF_UINT8,0,NULL,0,0,0,0.0,1.0,0,0, (MexFcnForType)c4_e_sf_marshallOut,(MexInFcnForType)c4_f_sf_marshallIn); { real_T *c4_md; real_T *c4_v; real_T (*c4_rseq)[10]; real_T (*c4_vseq)[6]; real_T (*c4_ref)[2]; c4_v = (real_T *)ssGetOutputPortSignal(chartInstance->S, 3); c4_md = (real_T *)ssGetInputPortSignal(chartInstance->S, 1); c4_ref = (real_T (*)[2])ssGetInputPortSignal(chartInstance->S, 0); c4_vseq = (real_T (*)[6])ssGetOutputPortSignal(chartInstance->S, 2); c4_rseq = (real_T (*)[10])ssGetOutputPortSignal(chartInstance->S, 1); _SFD_SET_DATA_VALUE_PTR(0U, *c4_rseq); _SFD_SET_DATA_VALUE_PTR(1U, *c4_vseq); _SFD_SET_DATA_VALUE_PTR(2U, *c4_ref); _SFD_SET_DATA_VALUE_PTR(3U, c4_md); _SFD_SET_DATA_VALUE_PTR(4U, c4_v); _SFD_SET_DATA_VALUE_PTR(5U, &chartInstance->c4_nv); _SFD_SET_DATA_VALUE_PTR(6U, &chartInstance->c4_ny); _SFD_SET_DATA_VALUE_PTR(7U, &chartInstance->c4_p); _SFD_SET_DATA_VALUE_PTR(8U, chartInstance->c4_yoff); _SFD_SET_DATA_VALUE_PTR(9U, &chartInstance->c4_voff); _SFD_SET_DATA_VALUE_PTR(10U, &chartInstance->c4_no_md); _SFD_SET_DATA_VALUE_PTR(11U, &chartInstance->c4_no_ref); _SFD_SET_DATA_VALUE_PTR(12U, &chartInstance->c4_openloopflag); } } } else { sf_debug_reset_current_state_configuration(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,chartInstance->chartNumber, chartInstance->instanceNumber); } } } static const char* sf_get_instance_specialization(void) { return "xf8liFQGgsdDdPF7ystbhB"; } static void sf_opaque_initialize_c4_mpclib(void *chartInstanceVar) { chart_debug_initialization(((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S, 0); initialize_params_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); initialize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_enable_c4_mpclib(void *chartInstanceVar) { enable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_disable_c4_mpclib(void *chartInstanceVar) { disable_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } static void sf_opaque_gateway_c4_mpclib(void *chartInstanceVar) { sf_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern const mxArray* sf_internal_get_sim_state_c4_mpclib(SimStruct* S) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_raw2high"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = (mxArray*) get_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInfo->chartInstance); /* raw sim ctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_raw2high'.\n"); } return plhs[0]; } extern void sf_internal_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { ChartInfoStruct *chartInfo = (ChartInfoStruct*) ssGetUserData(S); mxArray *plhs[1] = { NULL }; mxArray *prhs[4]; int mxError = 0; prhs[0] = mxCreateString("chart_simctx_high2raw"); prhs[1] = mxCreateDoubleScalar(ssGetSFuncBlockHandle(S)); prhs[2] = mxDuplicateArray(st); /* high level simctx */ prhs[3] = (mxArray*) sf_get_sim_state_info_c4_mpclib();/* state var info */ mxError = sf_mex_call_matlab(1, plhs, 4, prhs, "sfprivate"); mxDestroyArray(prhs[0]); mxDestroyArray(prhs[1]); mxDestroyArray(prhs[2]); mxDestroyArray(prhs[3]); if (mxError || plhs[0] == NULL) { sf_mex_error_message("Stateflow Internal Error: \nError calling 'chart_simctx_high2raw'.\n"); } set_sim_state_c4_mpclib((SFc4_mpclibInstanceStruct*)chartInfo->chartInstance, mxDuplicateArray(plhs[0])); mxDestroyArray(plhs[0]); } static const mxArray* sf_opaque_get_sim_state_c4_mpclib(SimStruct* S) { return sf_internal_get_sim_state_c4_mpclib(S); } static void sf_opaque_set_sim_state_c4_mpclib(SimStruct* S, const mxArray *st) { sf_internal_set_sim_state_c4_mpclib(S, st); } static void sf_opaque_terminate_c4_mpclib(void *chartInstanceVar) { if (chartInstanceVar!=NULL) { SimStruct *S = ((SFc4_mpclibInstanceStruct*) chartInstanceVar)->S; if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { sf_clear_rtw_identifier(S); unload_mpclib_optimization_info(); } finalize_c4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); utFree((void *)chartInstanceVar); ssSetUserData(S,NULL); } } static void sf_opaque_init_subchart_simstructs(void *chartInstanceVar) { initSimStructsc4_mpclib((SFc4_mpclibInstanceStruct*) chartInstanceVar); } extern unsigned int sf_machine_global_initializer_called(void); static void mdlProcessParameters_c4_mpclib(SimStruct *S) { int i; for (i=0;ichartInstance)); } } static void mdlSetWorkWidths_c4_mpclib(SimStruct *S) { /* Actual parameters from chart: no_md no_ref nv ny openloopflag p voff yoff */ const char_T *rtParamNames[] = { "no_md", "no_ref", "nv", "ny", "openloopflag", "p", "voff", "yoff" }; ssSetNumRunTimeParams(S,ssGetSFcnParamsCount(S)); /* registration for no_md*/ ssRegDlgParamAsRunTimeParam(S, 0, 0, rtParamNames[0], SS_DOUBLE); /* registration for no_ref*/ ssRegDlgParamAsRunTimeParam(S, 1, 1, rtParamNames[1], SS_DOUBLE); /* registration for nv*/ ssRegDlgParamAsRunTimeParam(S, 2, 2, rtParamNames[2], SS_DOUBLE); /* registration for ny*/ ssRegDlgParamAsRunTimeParam(S, 3, 3, rtParamNames[3], SS_DOUBLE); /* registration for openloopflag*/ ssRegDlgParamAsRunTimeParam(S, 4, 4, rtParamNames[4], SS_BOOLEAN); /* registration for p*/ ssRegDlgParamAsRunTimeParam(S, 5, 5, rtParamNames[5], SS_DOUBLE); /* registration for voff*/ ssRegDlgParamAsRunTimeParam(S, 6, 6, rtParamNames[6], SS_DOUBLE); /* registration for yoff*/ ssRegDlgParamAsRunTimeParam(S, 7, 7, rtParamNames[7], SS_DOUBLE); if (sim_mode_is_rtw_gen(S) || sim_mode_is_external(S)) { mxArray *infoStruct = load_mpclib_optimization_info(); int_T chartIsInlinable = (int_T)sf_is_chart_inlinable(S,sf_get_instance_specialization(),infoStruct, 4); ssSetStateflowIsInlinable(S,chartIsInlinable); ssSetRTWCG(S,sf_rtw_info_uint_prop(S,sf_get_instance_specialization(), infoStruct,4,"RTWCG")); ssSetEnableFcnIsTrivial(S,1); ssSetDisableFcnIsTrivial(S,1); ssSetNotMultipleInlinable(S,sf_rtw_info_uint_prop(S, sf_get_instance_specialization(),infoStruct,4, "gatewayCannotBeInlinedMultipleTimes")); sf_update_buildInfo(S,sf_get_instance_specialization(),infoStruct,4); if (chartIsInlinable) { ssSetInputPortOptimOpts(S, 0, SS_REUSABLE_AND_LOCAL); ssSetInputPortOptimOpts(S, 1, SS_REUSABLE_AND_LOCAL); sf_mark_chart_expressionable_inputs(S,sf_get_instance_specialization(), infoStruct,4,2); sf_mark_chart_reusable_outputs(S,sf_get_instance_specialization(), infoStruct,4,3); } { unsigned int outPortIdx; for (outPortIdx=1; outPortIdx<=3; ++outPortIdx) { ssSetOutputPortOptimizeInIR(S, outPortIdx, 1U); } } { unsigned int inPortIdx; for (inPortIdx=0; inPortIdx < 2; ++inPortIdx) { ssSetInputPortOptimizeInIR(S, inPortIdx, 1U); } } sf_set_rtw_dwork_info(S,sf_get_instance_specialization(),infoStruct,4); ssSetHasSubFunctions(S,!(chartIsInlinable)); } else { } ssSetOptions(S,ssGetOptions(S)|SS_OPTION_WORKS_WITH_CODE_REUSE); ssSetChecksum0(S,(1010599357U)); ssSetChecksum1(S,(1840766416U)); ssSetChecksum2(S,(2527524482U)); ssSetChecksum3(S,(3455074465U)); ssSetmdlDerivatives(S, NULL); ssSetExplicitFCSSCtrl(S,1); ssSupportsMultipleExecInstances(S,1); } static void mdlRTW_c4_mpclib(SimStruct *S) { if (sim_mode_is_rtw_gen(S)) { ssWriteRTWStrParam(S, "StateflowChartType", "Embedded MATLAB"); } } static void mdlStart_c4_mpclib(SimStruct *S) { SFc4_mpclibInstanceStruct *chartInstance; chartInstance = (SFc4_mpclibInstanceStruct *)utMalloc(sizeof (SFc4_mpclibInstanceStruct)); memset(chartInstance, 0, sizeof(SFc4_mpclibInstanceStruct)); if (chartInstance==NULL) { sf_mex_error_message("Could not allocate memory for chart instance."); } chartInstance->chartInfo.chartInstance = chartInstance; chartInstance->chartInfo.isEMLChart = 1; chartInstance->chartInfo.chartInitialized = 0; chartInstance->chartInfo.sFunctionGateway = sf_opaque_gateway_c4_mpclib; chartInstance->chartInfo.initializeChart = sf_opaque_initialize_c4_mpclib; chartInstance->chartInfo.terminateChart = sf_opaque_terminate_c4_mpclib; chartInstance->chartInfo.enableChart = sf_opaque_enable_c4_mpclib; chartInstance->chartInfo.disableChart = sf_opaque_disable_c4_mpclib; chartInstance->chartInfo.getSimState = sf_opaque_get_sim_state_c4_mpclib; chartInstance->chartInfo.setSimState = sf_opaque_set_sim_state_c4_mpclib; chartInstance->chartInfo.getSimStateInfo = sf_get_sim_state_info_c4_mpclib; chartInstance->chartInfo.zeroCrossings = NULL; chartInstance->chartInfo.outputs = NULL; chartInstance->chartInfo.derivatives = NULL; chartInstance->chartInfo.mdlRTW = mdlRTW_c4_mpclib; chartInstance->chartInfo.mdlStart = mdlStart_c4_mpclib; chartInstance->chartInfo.mdlSetWorkWidths = mdlSetWorkWidths_c4_mpclib; chartInstance->chartInfo.extModeExec = NULL; chartInstance->chartInfo.restoreLastMajorStepConfiguration = NULL; chartInstance->chartInfo.restoreBeforeLastMajorStepConfiguration = NULL; chartInstance->chartInfo.storeCurrentConfiguration = NULL; chartInstance->S = S; ssSetUserData(S,(void *)(&(chartInstance->chartInfo)));/* register the chart instance with simstruct */ init_dsm_address_info(chartInstance); if (!sim_mode_is_rtw_gen(S)) { } sf_opaque_init_subchart_simstructs(chartInstance->chartInfo.chartInstance); chart_debug_initialization(S,1); } void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data) { switch (method) { case SS_CALL_MDL_START: mdlStart_c4_mpclib(S); break; case SS_CALL_MDL_SET_WORK_WIDTHS: mdlSetWorkWidths_c4_mpclib(S); break; case SS_CALL_MDL_PROCESS_PARAMETERS: mdlProcessParameters_c4_mpclib(S); break; default: /* Unhandled method */ sf_mex_error_message("Stateflow Internal Error:\n" "Error calling c4_mpclib_method_dispatcher.\n" "Can't handle method %d.\n", method); break; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/c4_mpclib.h ================================================ #ifndef __c4_mpclib_h__ #define __c4_mpclib_h__ /* Include files */ #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" /* Type Definitions */ #ifndef typedef_SFc4_mpclibInstanceStruct #define typedef_SFc4_mpclibInstanceStruct typedef struct { SimStruct *S; ChartInfoStruct chartInfo; uint32_T chartNumber; uint32_T instanceNumber; int32_T c4_sfEvent; boolean_T c4_isStable; boolean_T c4_doneDoubleBufferReInit; uint8_T c4_is_active_c4_mpclib; real_T c4_nv; real_T c4_ny; real_T c4_p; real_T c4_yoff[2]; real_T c4_voff; real_T c4_no_md; real_T c4_no_ref; boolean_T c4_openloopflag; } SFc4_mpclibInstanceStruct; #endif /*typedef_SFc4_mpclibInstanceStruct*/ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); /* Function Definitions */ extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); extern void c4_mpclib_method_dispatcher(SimStruct *S, int_T method, void *data); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/mpclib_sfun.bat ================================================ @echo off rem MSVC100OPTS.BAT rem rem Compile and link options used for building MEX-files rem using the Microsoft Visual C++ compiler version 10.0 rem rem $Revision: 1.1.6.5 $ $Date: 2012/07/23 18:50:42 $ rem Copyright 2007-2009 The MathWorks, Inc. rem rem StorageVersion: 1.0 rem C++keyFileName: MSVC100OPTS.BAT rem C++keyName: Microsoft Visual C++ 2010 rem C++keyManufacturer: Microsoft rem C++keyVersion: 10.0 rem C++keyLanguage: C++ rem C++keyLinkerName: Microsoft Visual C++ 2010 rem C++keyLinkerVersion: 10.0 rem rem ******************************************************************** rem General parameters rem ******************************************************************** set MATLAB=%MATLAB% set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 10.0 set VCINSTALLDIR=%VSINSTALLDIR%\VC rem In this case, LINKERDIR is being used to specify the location of the SDK set LINKERDIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\bin\x64;%LINKERDIR%\bin;%MATLAB_BIN%;%PATH% set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\x64;%MATLAB%\extern\lib\win64;%LIB% set MW_TARGET_ARCH=win64 rem ******************************************************************** rem Compiler parameters rem ******************************************************************** set COMPILER=cl set COMPFLAGS=/c /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD set OPTIMFLAGS=/O2 /Oy- /DNDEBUG set DEBUGFLAGS=/Z7 set NAME_OBJECT=/Fo rem ******************************************************************** rem Linker parameters rem ******************************************************************** set LIBLOC=%MATLAB%\extern\lib\win64\microsoft set LINKER=link set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map" set LINKOPTIMFLAGS= set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb" set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%" set RSP_FILE_INDICATOR=@ rem ******************************************************************** rem Resource compiler parameters rem ******************************************************************** set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res" set RC_LINKER= set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp" set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest" set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map" nmake -f mpclib_sfun.mak ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/mpclib_sfun.c ================================================ /* Include files */ #include "mpclib_sfun.h" #include "mpclib_sfun_debug_macros.h" #include "c3_mpclib.h" #include "c4_mpclib.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ uint32_T _mpclibMachineNumber_; /* Function Declarations */ /* Function Definitions */ void mpclib_initializer(void) { } void mpclib_terminator(void) { } /* SFunction Glue Code */ unsigned int sf_mpclib_method_dispatcher(SimStruct *simstructPtr, unsigned int chartFileNumber, const char* specsCksum, int_T method, void *data) { if (chartFileNumber==3) { c3_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } if (chartFileNumber==4) { c4_mpclib_method_dispatcher(simstructPtr, method, data); return 1; } return 0; } unsigned int sf_mpclib_process_check_sum_call( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[20]; if (nrhs<1 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the checksum */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"sf_get_check_sum")) return 0; plhs[0] = mxCreateDoubleMatrix( 1,4,mxREAL); if (nrhs>2 && mxIsChar(prhs[1])) { mxGetString(prhs[1], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (!strcmp(commandName,"library")) { char machineName[100]; mxGetString(prhs[2], machineName,sizeof(machineName)/sizeof(char)); machineName[(sizeof(machineName)/sizeof(char)-1)] = '\0'; if (!strcmp(machineName,"mpclib")) { if (nrhs==3) { ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(280417916U); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(3737324946U); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(1201209290U); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(640267377U); } else if (nrhs==4) { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[3]); switch (chartFileNumber) { case 3: { extern void sf_c3_mpclib_get_check_sum(mxArray *plhs[]); sf_c3_mpclib_get_check_sum(plhs); break; } case 4: { extern void sf_c4_mpclib_get_check_sum(mxArray *plhs[]); sf_c4_mpclib_get_check_sum(plhs); break; } default: ((real_T *)mxGetPr((plhs[0])))[0] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[1] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[2] = (real_T)(0.0); ((real_T *)mxGetPr((plhs[0])))[3] = (real_T)(0.0); } } else { return 0; } } else { return 0; } } else { return 0; } } else { return 0; } return 1; #else return 0; #endif } unsigned int sf_mpclib_autoinheritance_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[32]; char aiChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0]) ) return 0; /* Possible call to get the autoinheritance_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_autoinheritance_info")) return 0; mxGetString(prhs[2], aiChksum,sizeof(aiChksum)/sizeof(char)); aiChksum[(sizeof(aiChksum)/sizeof(char)-1)] = '\0'; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(aiChksum, "j6VEDD3XqIorodiPjwvoYF") == 0) { extern mxArray *sf_c3_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c3_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } case 4: { if (strcmp(aiChksum, "W9pU18Rzyx5XpPp6ECbqY") == 0) { extern mxArray *sf_c4_mpclib_get_autoinheritance_info(void); plhs[0] = sf_c4_mpclib_get_autoinheritance_info(); break; } plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_get_eml_resolved_functions_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { #ifdef MATLAB_MEX_FILE char commandName[64]; if (nrhs<2 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the get_eml_resolved_functions_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_eml_resolved_functions_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { extern const mxArray *sf_c3_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c3_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } case 4: { extern const mxArray *sf_c4_mpclib_get_eml_resolved_functions_info(void); mxArray *persistentMxArray = (mxArray *) sf_c4_mpclib_get_eml_resolved_functions_info(); plhs[0] = mxDuplicateArray(persistentMxArray); mxDestroyArray(persistentMxArray); break; } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; #else return 0; #endif } unsigned int sf_mpclib_third_party_uses_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the third_party_uses_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_third_party_uses_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "tyXL61drY84iZIuMyIrmK") == 0) { extern mxArray *sf_c3_mpclib_third_party_uses_info(void); plhs[0] = sf_c3_mpclib_third_party_uses_info(); break; } } case 4: { if (strcmp(tpChksum, "xf8liFQGgsdDdPF7ystbhB") == 0) { extern mxArray *sf_c4_mpclib_third_party_uses_info(void); plhs[0] = sf_c4_mpclib_third_party_uses_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } unsigned int sf_mpclib_updateBuildInfo_args_info( int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[] ) { char commandName[64]; char tpChksum[64]; if (nrhs<3 || !mxIsChar(prhs[0])) return 0; /* Possible call to get the updateBuildInfo_args_info */ mxGetString(prhs[0], commandName,sizeof(commandName)/sizeof(char)); commandName[(sizeof(commandName)/sizeof(char)-1)] = '\0'; mxGetString(prhs[2], tpChksum,sizeof(tpChksum)/sizeof(char)); tpChksum[(sizeof(tpChksum)/sizeof(char)-1)] = '\0'; if (strcmp(commandName,"get_updateBuildInfo_args_info")) return 0; { unsigned int chartFileNumber; chartFileNumber = (unsigned int)mxGetScalar(prhs[1]); switch (chartFileNumber) { case 3: { if (strcmp(tpChksum, "tyXL61drY84iZIuMyIrmK") == 0) { extern mxArray *sf_c3_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c3_mpclib_updateBuildInfo_args_info(); break; } } case 4: { if (strcmp(tpChksum, "xf8liFQGgsdDdPF7ystbhB") == 0) { extern mxArray *sf_c4_mpclib_updateBuildInfo_args_info(void); plhs[0] = sf_c4_mpclib_updateBuildInfo_args_info(); break; } } default: plhs[0] = mxCreateDoubleMatrix(0,0,mxREAL); } } return 1; } void mpclib_debug_initialize(struct SfDebugInstanceStruct* debugInstance) { _mpclibMachineNumber_ = sf_debug_initialize_machine(debugInstance,"mpclib", "sfun",1,2,0,0,0); sf_debug_set_machine_event_thresholds(debugInstance,_mpclibMachineNumber_,0,0); sf_debug_set_machine_data_thresholds(debugInstance,_mpclibMachineNumber_,0); } void mpclib_register_exported_symbols(SimStruct* S) { } static mxArray* sRtwOptimizationInfoStruct= NULL; mxArray* load_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct==NULL) { sRtwOptimizationInfoStruct = sf_load_rtw_optimization_info("mpclib", "mpc_nonlinear_ss"); mexMakeArrayPersistent(sRtwOptimizationInfoStruct); } return(sRtwOptimizationInfoStruct); } void unload_mpclib_optimization_info(void) { if (sRtwOptimizationInfoStruct!=NULL) { mxDestroyArray(sRtwOptimizationInfoStruct); sRtwOptimizationInfoStruct = NULL; } } ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/mpclib_sfun.h ================================================ #ifndef __mpclib_sfun_h__ #define __mpclib_sfun_h__ /* Include files */ #define S_FUNCTION_NAME sf_sfun #include "sfc_sf.h" #include "sfc_mex.h" #include "rtwtypes.h" #include "multiword_types.h" #include "sfcdebug.h" #define rtInf (mxGetInf()) #define rtMinusInf (-(mxGetInf())) #define rtNaN (mxGetNaN()) #define rtIsNaN(X) ((int)mxIsNaN(X)) #define rtIsInf(X) ((int)mxIsInf(X)) struct SfDebugInstanceStruct; extern struct SfDebugInstanceStruct* sfGlobalDebugInstanceStruct; /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ extern uint32_T _mpclibMachineNumber_; extern real_T _sfTime_; /* Variable Definitions */ /* Function Declarations */ extern void mpclib_initializer(void); extern void mpclib_terminator(void); /* Function Definitions */ /* We load infoStruct for rtw_optimation_info on demand in mdlSetWorkWidths and free it immediately in mdlStart. Given that this is machine-wide as opposed to chart specific, we use NULL check to make sure it gets loaded and unloaded once per machine even though the methods mdlSetWorkWidths/mdlStart are chart/instance specific. The following methods abstract this out. */ extern mxArray* load_mpclib_optimization_info(void); extern void unload_mpclib_optimization_info(void); #endif ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/mpclib_sfun.mak ================================================ # ------------------- Required for MSVC nmake --------------------------------- # This file should be included at the top of a MAKEFILE as follows: CPU = AMD64 !include MACHINE = mpclib TARGET = sfun CHART_SRCS = c3_mpclib.c c4_mpclib.c MACHINE_SRC = mpclib_sfun.c MACHINE_REG = MAKEFILE = mpclib_sfun.mak MATLAB_ROOT = C:\Program Files\MATLAB\R2013b BUILDARGS = #--------------------------- Tool Specifications ------------------------------ # # MSVC_ROOT1 = $(MSDEVDIR:SharedIDE=vc) MSVC_ROOT2 = $(MSVC_ROOT1:SHAREDIDE=vc) MSVC_ROOT = $(MSVC_ROOT2:sharedide=vc) # Compiler tool locations, CC, LD, LIBCMD: CC = cl.exe LD = link.exe LIBCMD = lib.exe #------------------------------ Include/Lib Path ------------------------------ USER_INCLUDES = AUX_INCLUDES = MLSLSF_INCLUDES = \ /I "C:\Program Files\MATLAB\R2013b\extern\include" \ /I "C:\Program Files\MATLAB\R2013b\simulink\include" \ /I "C:\Program Files\MATLAB\R2013b\rtw\c\src" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\include" \ /I "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\include" \ /I "C:\Program Files\MATLAB\R2013b\toolbox\stateflow\src\sf_runtime\export\include\sf_runtime" COMPILER_INCLUDES = /I "$(MSVC_ROOT)\include" THIRD_PARTY_INCLUDES = INCLUDE_PATH = $(USER_INCLUDES) $(AUX_INCLUDES) $(MLSLSF_INCLUDES)\ $(THIRD_PARTY_INCLUDES) LIB_PATH = "$(MSVC_ROOT)\lib" CFLAGS = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD LDFLAGS = /nologo /dll /MANIFEST /OPT:NOREF /export:mexFunction #----------------------------- Source Files ----------------------------------- REQ_SRCS = $(MACHINE_SRC) $(MACHINE_REG) $(CHART_SRCS) USER_ABS_OBJS = AUX_ABS_OBJS = THIRD_PARTY_OBJS = REQ_OBJS = $(REQ_SRCS:.cpp=.obj) REQ_OBJS2 = $(REQ_OBJS:.c=.obj) OBJS = $(REQ_OBJS2) $(USER_ABS_OBJS) $(AUX_ABS_OBJS) $(THIRD_PARTY_OBJS) OBJLIST_FILE = mpclib_sfun.mol SFCLIB = "C:\Program Files\MATLAB\R2013b\stateflow\c\mex\lib\win64\sfc_mex.lib" "C:\Program Files\MATLAB\R2013b\stateflow\c\debugger\lib\win64\sfc_debug.lib" AUX_LNK_OBJS = USER_LIBS = LINK_MACHINE_LIBS = BLAS_LIBS = "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft\libmwblas.lib" THIRD_PARTY_LIBS = #--------------------------------- Rules -------------------------------------- $(MACHINE)_$(TARGET).lib : $(MAKEFILE) $(OBJS) $(SFCLIB) $(AUX_LNK_OBJS) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Linking ... $(LD) -lib /OUT:$(MACHINE)_$(TARGET).lib @$(OBJLIST_FILE) $(USER_LIBS) $(THIRD_PARTY_LIBS) @echo ### Created Stateflow library $@ .c.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" .cpp.obj : @echo ### Compiling "$<" $(CC) $(CFLAGS) $(INCLUDE_PATH) "$<" ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/mpclib_sfun.mol ================================================ mpclib_sfun.obj c3_mpclib.obj c4_mpclib.obj ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/mpclib_sfun_debug_macros.h ================================================ #ifndef __SF_DEBUG_MACROS_H__ #define __SF_DEBUG_MACROS_H__ extern unsigned int _mpclibMachineNumber_; #define _SFD_SET_DATA_VALUE_PTR(v1,v2)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),NULL); #define _SFD_UNSET_DATA_VALUE_PTR(v1)\ sf_debug_unset_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1); #define _SFD_SET_DATA_VALUE_PTR_VAR_DIM(v1,v2,v3)\ sf_debug_set_instance_data_value_ptr(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,v1,(void *)(v2),(void *)(v3)); #define _SFD_DATA_RANGE_CHECK_MIN_MAX(dVal,dNum,dMin,dMax)\ sf_debug_data_range_error_wrapper_min_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin,(double)dMax) #define _SFD_DATA_RANGE_CHECK_MIN(dVal,dNum,dMin)\ sf_debug_data_range_error_wrapper_min(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMin) #define _SFD_DATA_RANGE_CHECK_MAX(dVal,dNum,dMax)\ sf_debug_data_range_error_wrapper_max(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal),(double)dMax) #define _SFD_DATA_RANGE_CHECK(dVal,dNum)\ sf_debug_data_range_wrapper(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ dNum,(double)(dVal)) #define _SFD_DATA_READ_BEFORE_WRITE_CHECK(dNum,dVal)\ sf_debug_read_before_write_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(dNum),(bool)dVal) #define _SFD_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #define _SFD_RUNTIME_SIZE_MISMATCH_CHECK(v1,v2,v3,v4,v5) \ sf_debug_data_runtime_size_mismatch_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(unsigned int)(v3),(int)(v4),(int)(v5)) #define _SFD_EML_ARRAY_BOUNDS_CHECK(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #ifdef INT_TYPE_64_IS_SUPPORTED #define _SFD_EML_ARRAY_BOUNDS_CHECK_INT64(v1,v2,v3,v4,v5,v6) \ sf_debug_eml_data_array_bounds_error_check_int64(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(int64_T)(v2),(int)(v3),(int)(v4),(int)(v5),(int)(v6)) #endif #define _SFD_INTEGER_CHECK(v1,v2) \ sf_debug_integer_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NOT_NAN_CHECK(v1,v2) \ sf_debug_not_nan_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_NON_NEGATIVE_CHECK(v1,v2) \ sf_debug_non_negative_check(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(double)(v2)) #define _SFD_CAST_TO_UINT8(v1) \ sf_debug_cast_to_uint8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT16(v1) \ sf_debug_cast_to_uint16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_UINT32(v1) \ sf_debug_cast_to_uint32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT8(v1) \ sf_debug_cast_to_int8_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT16(v1) \ sf_debug_cast_to_int16_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_INT32(v1) \ sf_debug_cast_to_int32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_CAST_TO_SINGLE(v1) \ sf_debug_cast_to_real32_T(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),0,0) #define _SFD_TRANSITION_CONFLICT(v1,v2) sf_debug_transition_conflict_error(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2) #define _SFD_ANIMATE() sf_debug_animate(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER) #define _SFD_CHART_CALL(v1,v2,v3,v4) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,v1,v2,v3,v4,\ 0,NULL,_sfTime_,1) #define _SFD_CC_CALL(v2,v3,v4) _SFD_CHART_CALL(CHART_OBJECT,v2,v3,v4) #define _SFD_CS_CALL(v2,v3,v4) _SFD_CHART_CALL(STATE_OBJECT,v2,v3,v4) #define _SFD_CT_CALL(v2,v3,v4) _SFD_CHART_CALL(TRANSITION_OBJECT,v2,v3,v4) #define _SFD_CE_CALL(v2,v3,v4) _SFD_CHART_CALL(EVENT_OBJECT,v2,v3,v4) #define _SFD_EML_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,0) #define _SFD_SCRIPT_TRANSLATION(v1,v2,v3) sf_debug_set_script_translation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ v1,v2,v3) #define _SFD_SCRIPT_CALL(v1,v2,v3) eml_debug_line_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ v1,v2,\ v3,_sfTime_,1) #define _SFD_CCP_CALL(v3,v4,v5,v6) sf_debug_call(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ CHART_OBJECT,TRANSITION_OBJECT,TRANSITION_GUARD_COVERAGE_TAG,v3,v6,\ v4,NULL,_sfTime_,(unsigned int)(v5)) #define _SFD_STATE_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),STATE_OBJECT,(v4)) #define _SFD_TRANS_TEMPORAL_THRESHOLD(v1,v2,v4) sf_debug_temporal_threshold(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (unsigned int)(v1),(v2),TRANSITION_OBJECT,(v4)) #define CV_EVAL(v1,v2,v3,v4) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(boolean_T)(v4)) #define CV_CHART_EVAL(v2,v3,v4) CV_EVAL(CHART_OBJECT,(v2),(v3),(v4)) #define CV_STATE_EVAL(v2,v3,v4) CV_EVAL(STATE_OBJECT,(v2),(v3),(v4)) #define CV_TRANSITION_EVAL(v1,v2) cv_eval_point(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),0,((v2)!=0)) #define CV_RELATIONAL_EVAL(v1,v2,v3,v4,v5,v6,v7) cv_eval_relational(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define CV_SATURATION_EVAL(v1,v2,v3,v4,v5) cv_eval_saturation(sfGlobalDebugInstanceStruct,_mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define CV_SATURATION_ACCUM(v1,v2,v3,v4) cv_saturation_accum(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) #define CV_TESTOBJECTIVE_EVAL(v1,v2,v3,v4) cv_eval_testobjective(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4)) /* Coverage Macros for MATLAB */ #define CV_EML_EVAL(v1,v2,v3,v4,v5) cv_eml_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(int)(v5)) #define CV_EML_FCN(v2,v3) CV_EML_EVAL(CV_EML_FCN_CHECK,(v2),1,(v3),0) #define CV_EML_TESTOBJECTIVE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_TESTOBJECTIVE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SATURATION_ACCUM(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SATURATION_ACCUM_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_IF(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_IF_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_FOR(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_FOR_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_WHILE(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_WHILE_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_SWITCH(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_SWITCH_CHECK,(v2),(v3),(v4),(v5)) #define CV_EML_COND(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_COND_CHECK,(v2),(v3),(v4),((v5) != 0)) #define CV_EML_MCDC(v2,v3,v4,v5) CV_EML_EVAL(CV_EML_MCDC_CHECK,(v2),(v3),(v4),(v5)) #define CV_SCRIPT_EVAL(v1,v2,v3,v4) cv_script_eval(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(int)(v4)) #define CV_SCRIPT_FCN(v2,v3) CV_SCRIPT_EVAL(CV_SCRIPT_FCN_CHECK,(v2),(v3),0) #define CV_SCRIPT_TESTOBJECTIVE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_TESTOBJECTIVE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SATURATION_ACCUM(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SATURATION_ACCUM_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_IF(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_IF_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_FOR(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_FOR_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_WHILE(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_WHILE_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_SWITCH(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_SWITCH_CHECK,(v2),(v3),(v4)) #define CV_SCRIPT_COND(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_COND_CHECK,(v2),(v3),((v4) != 0)) #define CV_SCRIPT_MCDC(v2,v3,v4) CV_SCRIPT_EVAL(CV_SCRIPT_MCDC_CHECK,(v2),(v3),(v4)) #define _SFD_CV_INIT_EML(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_FCN(v1,v2,v3,v4,v5,v6) cv_eml_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_SATURATION(v1,v2,v3,v4,v5,v6) cv_eml_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_IF(v1,v2,v3,v4,v5,v6,v7) cv_eml_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7)) #define _SFD_CV_INIT_EML_FOR(v1,v2,v3,v4,v5,v6) cv_eml_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_WHILE(v1,v2,v3,v4,v5,v6) cv_eml_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11) cv_eml_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10),(v11)) #define _SFD_CV_INIT_EML_RELATIONAL(v1,v2,v3,v4,v5,v6) cv_eml_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_EML_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8,v9) cv_eml_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9)) #define _SFD_CV_INIT_SCRIPT(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_script(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_FCN(v1,v2,v3,v4,v5,v6) cv_script_init_fcn(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_TESTOBJECTIVE(v1,v2,v3,v4,v5,v6) cv_script_init_testobjective(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_SATURATION(v1,v2,v3,v4,v5) cv_script_init_saturation(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_IF(v1,v2,v3,v4,v5,v6) cv_script_init_if(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #define _SFD_CV_INIT_SCRIPT_FOR(v1,v2,v3,v4,v5) cv_script_init_for(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_WHILE(v1,v2,v3,v4,v5) cv_script_init_while(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_MCDC(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10) cv_script_init_mcdc(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8),(v9),(v10)) #define _SFD_CV_INIT_SCRIPT_RELATIONAL(v1,v2,v3,v4,v5) cv_script_init_relational(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_SCRIPT_SWITCH(v1,v2,v3,v4,v5,v6,v7,v8) cv_script_init_switch(sfGlobalDebugInstanceStruct, \ _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_SET_DATA_PROPS(dataNumber,dataScope,isInputData,isOutputData,dataName)\ sf_debug_set_chart_data_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (dataNumber),(dataScope),(isInputData),(isOutputData),(dataName)) #define _SFD_SET_DATA_COMPILED_PROPS(dataNumber,dataType,numDims,dimArray,isFixedPoint,isSigned,wordLength,bias,slope,exponent,complexity,mexOutFcn, mexInFcn)\ sf_debug_set_chart_data_compiled_props(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,CHARTINSTANCE_INSTANCENUMBER,\ (dataNumber),(dataType),(numDims),(dimArray),(isFixedPoint),(isSigned),(wordLength),(bias),(slope),(exponent),(complexity),(mexOutFcn),(mexInFcn)) #define _SFD_STATE_INFO(v1,v2,v3)\ sf_debug_set_chart_state_info(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_CH_SUBSTATE_INDEX(v1,v2)\ sf_debug_set_chart_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_ST_SUBSTATE_INDEX(v1,v2,v3)\ sf_debug_set_chart_state_substate_index(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2),(v3)) #define _SFD_ST_SUBSTATE_COUNT(v1,v2)\ sf_debug_set_chart_state_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_DATA_CHANGE_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_data_with_change_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_ENTRY_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_entry_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_STATE_EXIT_EVENT_COUNT(v1,v2) \ sf_debug_set_number_of_states_with_exit_event_for_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ (v1),(v2)) #define _SFD_EVENT_SCOPE(v1,v2)\ sf_debug_set_chart_event_scope(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,(v1),(v2)) #define _SFD_CH_SUBSTATE_COUNT(v1) \ sf_debug_set_chart_substate_count(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CH_SUBSTATE_DECOMP(v1) \ sf_debug_set_chart_decomposition(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,(v1)) #define _SFD_CV_INIT_CHART(v1,v2,v3,v4)\ sf_debug_cv_init_chart(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE(v1,v2,v3,v4,v5,v6,v7,v8)\ sf_debug_cv_init_state(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,(v1),(v2),(v3),(v4),(v5),(v6),(v7),(v8)) #define _SFD_CV_INIT_TRANSITION_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_RELATIONALOP(v1,v2,v3,v4,v5)\ sf_debug_cv_init_relationalop(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4),(v5)) #define _SFD_CV_INIT_STATE_SATURATION(v1,v2,v3,v4)\ sf_debug_cv_init_saturation(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANSITION_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ TRANSITION_OBJECT,(v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_STATE_TESTOBJECTIVE(v1,v2,v3,v4)\ sf_debug_cv_init_testobjectives(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ STATE_OBJECT, (v1),(v2),(v3),(v4)) #define _SFD_CV_INIT_TRANS(v1,v2,v3,v4,v5,v6)\ sf_debug_cv_init_trans(sfGlobalDebugInstanceStruct, _mpclibMachineNumber_,\ CHARTINSTANCE_CHARTNUMBER,\ CHARTINSTANCE_INSTANCENUMBER,\ (v1),(v2),(v3),(v4),(v5),(v6)) #endif #define _SFD_SET_MACHINE_DATA_VALUE_PTR(v0,v1,v2) sf_debug_set_machine_data_value_ptr(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_STORE_CURRENT_STATE_CONFIGURATION(v0,v1,v2) sf_debug_store_current_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION(v0,v1,v2) sf_debug_restore_previous_state_configuration(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_RESTORE_PREVIOUS_STATE_CONFIGURATION2(v0,v1,v2) sf_debug_restore_previous_state_configuration2(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_PUSH(v0,v1) sf_debug_symbol_scope_push(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SYMBOL_SCOPE_PUSH_EML(v0,v1,v2,v3,v4) sf_debug_symbol_scope_push_eml(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_SYMBOL_SCOPE_POP() sf_debug_symbol_scope_pop(sfGlobalDebugInstanceStruct) #define _SFD_SYMBOL_SCOPE_ADD(v0,v1,v2) sf_debug_symbol_scope_add(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_EML(v0,v1,v2) sf_debug_symbol_scope_add_eml(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SYMBOL_SCOPE_ADD_EML_IMPORTABLE(v0,v1,v2,v3) sf_debug_symbol_scope_add_eml_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_SYMBOL_SCOPE_ADD_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN(v0,v1,v2,v3,v4,v5) sf_debug_symbol_scope_add_eml_dyn(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5) #define _SFD_SYMBOL_SCOPE_ADD_EML_DYN_IMPORTABLE(v0,v1,v2,v3,v4,v5,v6) sf_debug_symbol_scope_add_eml_dyn_importable(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6) #define _SFD_SYMBOL_SCOPE_ADD_VERBOSE(v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) sf_debug_symbol_scope_add_verbose(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14) #define _SFD_SYMBOL_SWITCH(v0,v1) sf_debug_symbol_switch(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_CHECK_FOR_STATE_INCONSISTENCY(v0,v1,v2) sf_debug_check_for_state_inconsistency(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SET_HONOR_BREAKPOINTS(v0) sf_debug_set_honor_breakpoints(sfGlobalDebugInstanceStruct, v0) #define _SFD_GET_ANIMATION() sf_debug_get_animation(sfGlobalDebugInstanceStruct) #define _SFD_SET_ANIMATION(v0) sf_debug_set_animation(sfGlobalDebugInstanceStruct,v0) #define _SFD_SIZE_EQ_CHECK_1D(v0,v1) sf_debug_size_eq_check_1d(sfGlobalDebugInstanceStruct,v0,v1) #define _SFD_SIZE_EQ_CHECK_ND(v0,v1,v2) sf_debug_size_eq_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_EQ_CHECK(v0,v1,v2) sf_debug_dim_size_eq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_DIM_SIZE_GEQ_CHECK(v0,v1,v2) sf_debug_dim_size_geq_check(sfGlobalDebugInstanceStruct,v0,v1,v2) #define _SFD_SUB_ASSIGN_SIZE_CHECK_ND(v0,v1,v2,v3) sf_debug_sub_assign_size_check_nd(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_MATRIX_MATRIX_INDEX_CHECK(v0,v1,v2,v3) sf_debug_matrix_matrix_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_VECTOR_VECTOR_INDEX_CHECK(v0,v1,v2,v3) sf_debug_vector_vector_index_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3) #define _SFD_FOR_LOOP_VECTOR_CHECK(v0,v1,v2,v3,v4) sf_debug_for_loop_vector_check(sfGlobalDebugInstanceStruct,v0,v1,v2,v3,v4) #define _SFD_RUNTIME_ERROR_MSGID(v0) sf_debug_runtime_error_msgid(sfGlobalDebugInstanceStruct,v0) #define _SFD_TRANSITION_CONFLICT_CHECK_ENABLED() sf_debug_transition_conflict_check_enabled(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_BEGIN() sf_debug_transition_conflict_check_begin(sfGlobalDebugInstanceStruct) #define _SFD_TRANSITION_CONFLICT_CHECK_END() sf_debug_transition_conflict_check_end(sfGlobalDebugInstanceStruct) #define _SFD_OVERFLOW_DETECTION(v0) sf_debug_overflow_detection(sfGlobalDebugInstanceStruct,v0) ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/multiword_types.h ================================================ #ifndef __MULTIWORD_TYPES_H__ #define __MULTIWORD_TYPES_H__ #include "rtwtypes.h" /* * MultiWord supporting definitions */ typedef long long longlong_T; /* * MultiWord types */ typedef struct { uint64_T chunks[2]; } int128m_T; typedef struct { int128m_T re; int128m_T im; } cint128m_T; typedef struct { uint64_T chunks[2]; } uint128m_T; typedef struct { uint128m_T re; uint128m_T im; } cuint128m_T; typedef struct { uint64_T chunks[3]; } int192m_T; typedef struct { int192m_T re; int192m_T im; } cint192m_T; typedef struct { uint64_T chunks[3]; } uint192m_T; typedef struct { uint192m_T re; uint192m_T im; } cuint192m_T; typedef struct { uint64_T chunks[4]; } int256m_T; typedef struct { int256m_T re; int256m_T im; } cint256m_T; typedef struct { uint64_T chunks[4]; } uint256m_T; typedef struct { uint256m_T re; uint256m_T im; } cuint256m_T; typedef struct { uint64_T chunks[5]; } int320m_T; typedef struct { int320m_T re; int320m_T im; } cint320m_T; typedef struct { uint64_T chunks[5]; } uint320m_T; typedef struct { uint320m_T re; uint320m_T im; } cuint320m_T; typedef struct { uint64_T chunks[6]; } int384m_T; typedef struct { int384m_T re; int384m_T im; } cint384m_T; typedef struct { uint64_T chunks[6]; } uint384m_T; typedef struct { uint384m_T re; uint384m_T im; } cuint384m_T; typedef struct { uint64_T chunks[7]; } int448m_T; typedef struct { int448m_T re; int448m_T im; } cint448m_T; typedef struct { uint64_T chunks[7]; } uint448m_T; typedef struct { uint448m_T re; uint448m_T im; } cuint448m_T; typedef struct { uint64_T chunks[8]; } int512m_T; typedef struct { int512m_T re; int512m_T im; } cint512m_T; typedef struct { uint64_T chunks[8]; } uint512m_T; typedef struct { uint512m_T re; uint512m_T im; } cuint512m_T; typedef struct { uint64_T chunks[9]; } int576m_T; typedef struct { int576m_T re; int576m_T im; } cint576m_T; typedef struct { uint64_T chunks[9]; } uint576m_T; typedef struct { uint576m_T re; uint576m_T im; } cuint576m_T; typedef struct { uint64_T chunks[10]; } int640m_T; typedef struct { int640m_T re; int640m_T im; } cint640m_T; typedef struct { uint64_T chunks[10]; } uint640m_T; typedef struct { uint640m_T re; uint640m_T im; } cuint640m_T; typedef struct { uint64_T chunks[11]; } int704m_T; typedef struct { int704m_T re; int704m_T im; } cint704m_T; typedef struct { uint64_T chunks[11]; } uint704m_T; typedef struct { uint704m_T re; uint704m_T im; } cuint704m_T; typedef struct { uint64_T chunks[12]; } int768m_T; typedef struct { int768m_T re; int768m_T im; } cint768m_T; typedef struct { uint64_T chunks[12]; } uint768m_T; typedef struct { uint768m_T re; uint768m_T im; } cuint768m_T; typedef struct { uint64_T chunks[13]; } int832m_T; typedef struct { int832m_T re; int832m_T im; } cint832m_T; typedef struct { uint64_T chunks[13]; } uint832m_T; typedef struct { uint832m_T re; uint832m_T im; } cuint832m_T; typedef struct { uint64_T chunks[14]; } int896m_T; typedef struct { int896m_T re; int896m_T im; } cint896m_T; typedef struct { uint64_T chunks[14]; } uint896m_T; typedef struct { uint896m_T re; uint896m_T im; } cuint896m_T; typedef struct { uint64_T chunks[15]; } int960m_T; typedef struct { int960m_T re; int960m_T im; } cint960m_T; typedef struct { uint64_T chunks[15]; } uint960m_T; typedef struct { uint960m_T re; uint960m_T im; } cuint960m_T; typedef struct { uint64_T chunks[16]; } int1024m_T; typedef struct { int1024m_T re; int1024m_T im; } cint1024m_T; typedef struct { uint64_T chunks[16]; } uint1024m_T; typedef struct { uint1024m_T re; uint1024m_T im; } cuint1024m_T; #endif /* __MULTIWORD_TYPES_H__ */ ================================================ FILE: Chapter-3/chatp3_MPC_Toolbox_DoubleInt/slprj/_sfprj/mpc_nonlinear_ss/mpclib/sfun/src/rtwtypes.h ================================================ #ifndef __RTWTYPES_H__ #define __RTWTYPES_H__ #include "tmwtypes.h" #include "simstruc_types.h" #ifndef POINTER_T # define POINTER_T typedef void * pointer_T; #endif #ifndef TRUE # define TRUE (1U) #endif #ifndef FALSE # define FALSE (0U) #endif #ifndef INT64_T #define INT64_T typedef long long int64_T; #endif #ifndef UINT64_T #define UINT64_T typedef unsigned long long uint64_T; #endif /*===========================================================================* * Additional complex number type definitions * *===========================================================================*/ #ifndef CINT64_T #define CINT64_T typedef struct { int64_T re; int64_T im; } cint64_T; #endif #ifndef CUINT64_T #define CUINT64_T typedef struct { uint64_T re; uint64_T im; } cuint64_T; #endif #endif /* __RTWTYPES_H__ */ ================================================ FILE: Chapter-4/ReadMe ================================================ This folder holds simulation codes for Chapter 4 * chapter4_4_2.m: Matlab code for given path tracking, 第一版中提供的程序,求解速度较慢 * chap4_MPC_GivenPathTracking: Improved Matlab code for given path tracking,改进的程序,优化速度提高 * chap4_MPC_SSM_PathTracking: MPC for general path tracking, use adaptive path fitting with 3rd-order Bezier curve and state-space model * chap4_MPC_ErrorModel_PathTracking: MPC for general path tracking, use bezier curve fitting and tracking-error model ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/Chapter4_MPC_ErrorModel_PathTracking.par ================================================ PARSFILE #EXPANDED_PARSFILE 2.0 ! This is an expansion of the parsfile: "Runs\Run291.par" ! It contains the contents of that file plus the contents of any files linked ! with the "PARSFILE" or "SPECIAL_PARSFILE" keywords. ! File created: 18:56 on September 03, 2019 by CarSim Version 8.1a, October 2011 PRODUCT_NAME CarSim ENTER_PARSFILE Runs\Run291.par`09-01-2019`23:40:42 #FullDataName CarSim Run Control`Chapter4_MPC_ErrorModel_PathTracking`BOOK_MPC_Examples #VehicleCode Ind_SA OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex138.par`09-01-2019`23:44:56 #FullDataName Models: Simulink`chapt4_MPC_EM_PathCtrackingCtrl`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap4_MPC_ErrorModel_PathTracking\MPC_ErrorModel_PathTracking.mdl #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 0 *USE_DIFF_SOLVERS 0 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap4_MPC_ErrorModel_PathTracking *ALTERNATE_PATH E:\Carsim\Book_examples\chap4_MPC_ErrorModel_PathTracking ENTER_PARSFILE IO_Channels\I_Channels\I_Ch123.par`09-01-2019`23:34:17 #FullDataName I/O Channels: Import`chapt4_SteeringSW_Imports`MPC_BOOK_Sim_Imports *README_FILE Programs\solvers\ReadMe\i_i_imports_tab.txt #MiscYellow0 IMP_STEER_SW Replace 0.0 1 #ENDMYellow #RingCtrl0 2 LOG_ENTRY Used Dataset: I/O Channels: Import; { MPC_BOOK_Sim_Imports } chapt4_SteeringSW_Imports #Library : I/O Channels: Import #DataSet : chapt4_SteeringSW_Imports #Category: MPC_BOOK_Sim_Imports #FileID : I_Ch123 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 23:34:17 #VehCode Import Channels EXIT_PARSFILE IO_Channels\I_Channels\I_Ch123.par #BlueLink0 I/O Channels: Import`chapt4_SteeringSW_Imports` MPC_BOOK_Sim_Imports` , Import ENTER_PARSFILE IO_Channels\O_Channels\O_Ch123.par`08-24-2019`05:16:35 #FullDataName I/O Channels: Export`AGV_StabilityCtrl_Exports`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Xo EXP_Yo EXP_Yaw EXP_Vx EXP_Vy EXP_AV_Y EXP_Beta EXP_Steer_L1 EXP_Steer_R1 EXP_Steer_SW EXP_Ax EXP_Ay EXP_AA_Y EXP_Alpha_L1 EXP_Alpha_L2 EXP_Alpha_R1 EXP_Alpha_R2 EXP_Fz_L1 EXP_Fz_L2 EXP_Fz_R1 EXP_Fz_R2 EXP_Fy_L1 EXP_Fy_L2 EXP_Fy_R1 EXP_Fy_R2 EXP_Fx_L1 EXP_Fx_L2 EXP_Fx_R1 EXP_Fx_R2 EXP_GearStat EXP_Roll EXP_AV_R EXP_AA_R EXP_Station EXP_ZCG_TM EXP_ZCG_SM EXP_Ay_SM EXP_AyBf_SM #MiscYellow0 #Number of Selected Channels: 38 #CHN_NAME: Xo #CHN_NAME: Yo #CHN_NAME: Yaw #CHN_NAME: Vx #CHN_NAME: Vy #CHN_NAME: AV_Y #CHN_NAME: Beta #CHN_NAME: Steer_L1 #CHN_NAME: Steer_R1 #CHN_NAME: Steer_SW #CHN_NAME: Ax #CHN_NAME: Ay #CHN_NAME: AA_Y #CHN_NAME: Alpha_L1 #CHN_NAME: Alpha_L2 #CHN_NAME: Alpha_R1 #CHN_NAME: Alpha_R2 #CHN_NAME: Fz_L1 #CHN_NAME: Fz_L2 #CHN_NAME: Fz_R1 #CHN_NAME: Fz_R2 #CHN_NAME: Fy_L1 #CHN_NAME: Fy_L2 #CHN_NAME: Fy_R1 #CHN_NAME: Fy_R2 #CHN_NAME: Fx_L1 #CHN_NAME: Fx_L2 #CHN_NAME: Fx_R1 #CHN_NAME: Fx_R2 #CHN_NAME: GearStat #CHN_NAME: Roll #CHN_NAME: AV_R #CHN_NAME: AA_R #CHN_NAME: Station #CHN_NAME: ZCG_TM #CHN_NAME: ZCG_SM #CHN_NAME: Ay_SM #CHN_NAME: AyBf_SM #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } AGV_StabilityCtrl_Exports #Library : I/O Channels: Export #DataSet : AGV_StabilityCtrl_Exports #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch123 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-24-2019 05:16:35 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch123.par #BlueLink1 I/O Channels: Export`AGV_StabilityCtrl_Exports` MPC_BOOK_Sim_Exports` , Export #MiscYellow1 simfile LEO_MPC_EM_PathTrackingCtrl.sim #ENDMYellow LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } chapt4_MPC_EM_PathCtrackingCtrl #Library : Models: Simulink #DataSet : chapt4_MPC_EM_PathCtrackingCtrl #Category: BOOK_MPC_Models #FileID : Cmex138 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 23:44:56 #VehCode EXIT_PARSFILE Models\Simulink\Cmex138.par #BlueLink12 Models: Simulink`chapt4_MPC_EM_PathCtrackingCtrl` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera107.par`08-02-2011`16:43:55 #FullDataName Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)`Vehicle Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw ENTER_PARSFILE Animator\Frames\Frame106.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw`Cameras ADD_REFERENCE_FRAME Cameras Camera Tracking X-Y-Z-Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_YAW_NAME yaw #MiscYellow0 cam_global_ambient .4 .4 .4 1 #ENDMYellow WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_yaw ANI_yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Cameras } Camera Tracking X-Y-Z-Yaw #Library : Animator: Reference Frame #DataSet : Camera Tracking X-Y-Z-Yaw #Category: Cameras #FileID : Frame106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame106.par #BlueLink0 Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw` Cameras` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 15 SET_DISTANCE 36 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 15 *SET_DISTANCE 36 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 37 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Vehicle Reference } Rear View High, Veh. Ref., (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View High, Veh. Ref., (Frt. Facing) #Category: Vehicle Reference #FileID : Camera107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera107.par #BlueLink0 Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)` Vehicle Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 1 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 0.753 0.753 0.753 SET_RUN_COLOR 0.753 0.753 0.753 FLAG_10 291 ID_RUN 291 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle165.par`08-23-2019`18:41:30 #FullDataName Vehicle: Assembly`D-Class, SUV LEO-defined`CS D-Class #VehCode Ind_SA #CheckBox0 0 #RingCtrl0 3 OPT_PT 3 #RingCtrl1 1 #RingCtrl2 3 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp119.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`D-Class, SUV - Front Comp.`CS D-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.611 *R_SPRING_R 0.611 *R_DAMPER_L 0.614 *R_DAMPER_R 0.614 *CT_FX_L 4.45e-6 *CT_FX_R 4.45e-6 *CS_FY_L -1.0e-06 *CS_FY_R -1.0e-06 *CS_MZ_L 3.8e-4 *CS_MZ_R 3.8e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 1.5e-5 *CI_FY_R 1.5e-5 *CI_MZ_L 3.1e-5 *CI_MZ_R 3.1e-5 *C_LONG_L 1.6e-5 *C_LONG_R 1.6e-5 *C_LAT_L 1.6e-5 *C_LAT_R 1.6e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.614 *R_JOUNCE_R 0.614 *R_REBOUND_L 0.614 *R_REBOUND_R 0.614 ENTER_PARSFILE Suspensions\Shocks\Shock102.par`08-02-2011`16:42:34 #FullDataName Suspension: Shock Absorber`Big SUV Damping` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FD_TABLE SPLINE -1410, -7316 -720, -5019 -390, -3395 -210, -2618 -90, -1472 -20, -333 20, 333 90, 870 200, 1145 390, 1607 760, 2623 1160, 3740 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Shock Absorber; Big SUV Damping #Library : Suspension: Shock Absorber #DataSet : Big SUV Damping #Category: #FileID : Shock102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Shock absorber EXIT_PARSFILE Suspensions\Shocks\Shock102.par #BlueLink1 Suspension: Shock Absorber`Big SUV Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx107.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 569 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 569 MX_AUX_COEFFICIENT 569 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 569 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 569 N-m/deg #Category: #FileID : AuxMx107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx107.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 569 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+70 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 68, 0 69, 0 70, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -70, -10000 -69, 0 -68, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +70 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +70 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.614 CT_FX_COEFFICIENT 4.45e-6 CS_FY_COEFFICIENT -1.0e-06 CS_MZ_COEFFICIENT 3.8e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.5e-5 CI_MZ_COEFFICIENT 3.1e-5 C_LONG_COEFFICIENT 1.6e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.614 CMP_RSTOP_COEFFICIENT 0.614 ENTER_PARSFILE Suspensions\Springs\Spring117.par`08-02-2011`16:42:33 #FullDataName Suspension: Spring`130 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 130 FS_EXT_COEFFICIENT 130 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 130 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 130 N/mm #Library : Suspension: Spring #DataSet : 130 N/mm #Category: #FileID : Spring117 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring117.par #BlueLink0 Suspension: Spring`130 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big SUV Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.614 CT_FX_COEFFICIENT 4.45e-6 CS_FY_COEFFICIENT -1.0e-06 CS_MZ_COEFFICIENT 3.8e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.5e-5 CI_MZ_COEFFICIENT 3.1e-5 C_LONG_COEFFICIENT 1.6e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.614 CMP_RSTOP_COEFFICIENT 0.614 #BlueLink3 Suspension: Spring`130 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS D-Class } D-Class, SUV - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : D-Class, SUV - Front Comp. #Category: CS D-Class #FileID : SuspCmp119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp119_note.txt Front spring rate chosen for a front ride frequency of 1.7 Hz and a front corner weight of 428 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp119_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp119.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`D-Class, SUV - Front Comp.` CS D-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin115.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`D-Class, SUV - Front Suspension`CS D-Class iside 1 L_TRACK 1565 Y_CL_SUSP 0 M_US 80 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L -0.2 *TOE_R -0.2 *CAMBER_L -0.3 *CAMBER_R -0.3 R_US_STR 0.8 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive103.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_DIVE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE #RadioCtrl0 0 SUSP_DIVE_AXLE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { SLA } Front SLA - Dive Angle #Library : Suspension: Dive Angle (Caster Change) #DataSet : Front SLA - Dive Angle #Category: SLA #FileID : Dive103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive103_note.txt NOTE: Sign convention of the CS 7.01b and earlier datasets was reversed and demonstrated a pro-dive suspension. This dataset represents an anti-dive suspension. EXIT_NOTEFILE Suspensions\Dive\Dive103_note.txt EXIT_PARSFILE Suspensions\Dive\Dive103.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX103.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Front SLA - Longitudinal Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { SLA } Front SLA - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Front SLA - Longitudinal Movement #Category: SLA #FileID : SusX103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt Generic SLA Longitudinal movement vs. Jounce EXIT_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX103.par #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber103.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Front SLA - Camber Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.08171 -60, 0.996827 -50, 0.88789 -40, 0.755642 -30, 0.600569 -20, 0.422934 -10, 0.222791 0, 0 10, -0.245764 20, -0.515012 30, -0.808436 40, -1.12692 50, -1.47156 60, -1.84365 70, -2.24474 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { SLA } Front SLA - Camber Change #Library : Suspension: Camber Angle #DataSet : Front SLA - Camber Change #Category: SLA #FileID : Camber103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber103_note.txt Generic SLA Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber103_note.txt EXIT_PARSFILE Suspensions\Camber\Camber103.par #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat103.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Front SLA - Lateral Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { SLA } Front SLA - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Front SLA - Lateral Movement #Category: SLA #FileID : SusLat103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat103_note.txt Generic SLA Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat103_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat103.par #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe103.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Front SLA - Toe Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, 0.292407 -60, 0.237822 -50, 0.187561 -40, 0.141604 -30, 0.099916 -20, 0.062452 -10, 0.029164 0, 0 10, -0.025093 20, -0.046165 30, -0.063264 40, -0.076429 50, -0.085696 60, -0.091086 70, -0.09261 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { SLA } Front SLA - Toe Change #Library : Suspension: Toe Angle #DataSet : Front SLA - Toe Change #Category: SLA #FileID : Toe103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe103_note.txt Generic SLA Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe103_note.txt EXIT_PARSFILE Suspensions\Toe\Toe103.par #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -0.3 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -0.3 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS D-Class } D-Class, SUV - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : D-Class, SUV - Front Suspension #Category: CS D-Class #FileID : IndKin115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin115_note.txt Generic Front SLA suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin115_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin115.par #BlueLink19 Suspension: Independent System Kinematics`D-Class, SUV - Front Suspension` CS D-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire112.par`08-02-2011`16:42:33 #FullDataName Tire`255/75 R16`Touring Tires X_LENGTH 394 Z_LENGTH 394 Y_LENGTH 255 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup140.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Small SUV`Tires *ANGLE_Z 180 *ANGLE_Y 0 *ANGLE_X 0 *X_REF_LENGTH 334 *Y_REF_LENGTH 205 *Z_REF_LENGTH 334 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL257.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive ENTER_PARSFILE Animator\Cameras\Camera103.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Top)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Fixed ENTER_PARSFILE Animator\Frames\Frame103.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Fixed` ADD_REFERENCE_FRAME Fixed #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll LOG_ENTRY Used Dataset: Animator: Reference Frame; Fixed #Library : Animator: Reference Frame #DataSet : Fixed #Category: #FileID : Frame103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame103.par #BlueLink0 Animator: Reference Frame`Fixed` ` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Fixed SET_LOOKPOINT_X -1.2 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 180 SET_ELEVATION 90 SET_DISTANCE 35 *SET_LOOKPOINT_X -1.2 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 180 *SET_ELEVATION 90 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Top) #Library : Animator: Camera Setup #DataSet : Shape Preview (Top) #Category: Shape Preview #FileID : Camera103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera103.par #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Tire #Library : Animator: Shape File Link #DataSet : Small SUV Tire #Category: Tires #FileID : AniSTL257 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL257.par #BlueLink0 Animator: Shape File Link`Small SUV Tire` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL258.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\wheel.obj #ENDMYellow SET_COLOR .6 .6 .6 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 50 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Wheel #Library : Animator: Shape File Link #DataSet : Small SUV Wheel #Category: Tires #FileID : AniSTL258 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL258.par #BlueLink1 Animator: Shape File Link`Small SUV Wheel` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL259.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y -0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Stripe #Library : Animator: Shape File Link #DataSet : Small SUV Stripe #Category: Tires #FileID : AniSTL259 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL259.par #BlueLink2 Animator: Shape File Link`Small SUV Stripe` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL260.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Rotor`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\rotor.obj #ENDMYellow SET_COLOR .1 .1 .1 *SPECULAR 0 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Rotor #Library : Animator: Shape File Link #DataSet : Small SUV Rotor #Category: Tires #FileID : AniSTL260 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL260.par #BlueLink3 Animator: Shape File Link`Small SUV Rotor` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 x_ref_length 334 y_ref_length 205 z_ref_length 334 ENTER_PARSFILE Animator\Cameras\Camera104.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Side)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview ENTER_PARSFILE Animator\Frames\Frame101.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Yaw for Shape Preview`Shape Preview ADD_REFERENCE_FRAME Shape Preview Yaw for Shape Preview #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_YAW_NAME Yaw WRT_Yaw ANI_Yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Shape Preview } Yaw for Shape Preview #Library : Animator: Reference Frame #DataSet : Yaw for Shape Preview #Category: Shape Preview #FileID : Frame101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame101.par #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 0 SET_ELEVATION 0 SET_DISTANCE 35 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 0 *SET_ELEVATION 0 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Side) #Library : Animator: Camera Setup #DataSet : Shape Preview (Side) #Category: Shape Preview #FileID : Camera104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera104.par #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Small SUV #Library : Animator: Shape Assembly #DataSet : Small SUV #Category: Tires #FileID : StlGroup140 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup140.par #BlueLink4 Animator: Shape Assembly`Small SUV` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 255 ENTER_PARSFILE Animator\Sound\Set\SndSet106.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 1150 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 1150; units = kg; #ENDMYellow ENTER_PARSFILE Animator\Sound\Sample\SndSmp112.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Lateral Slip`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 0.7 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod129.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Force Effects`Tire Lateral Slip Sound Modifiers #MiscYellow0 define_output mod1_<> = abs(fy_<>) /(rated_load_<> * 9.80665) * MuY_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod1_<> SOUNDMOD_INPUT_MIN 0.3 SOUNDMOD_INPUT_LOW 0.6 SOUNDMOD_INPUT_HIGH 0.9 SOUNDMOD_INPUT_MAX 1.2 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod1_<> ANI_mod1_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Lateral Slip Sound Modifiers } Loudness: Lateral Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Force Effects #Category: Tire Lateral Slip Sound Modifiers #FileID : SndMod129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod129.par #BlueLink0 Animator: Sound Modifier`Loudness: Lateral Force Effects` Tire Lateral Slip Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod130.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod2_<> = sin(min(abs(alphL_<>), 15 / dr) * abs(vxcen<>); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod2_<> SOUNDMOD_INPUT_MIN 0.1 SOUNDMOD_INPUT_LOW 0.5 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.5 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_mod2_<> ANI_mod2_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Lateral Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod130.par #BlueLink1 Animator: Sound Modifier`Loudness: Lateral Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Lateral Slip #Library : Animator: Sound Sample #DataSet : Lateral Slip #Category: Tire Sounds #FileID : SndSmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp112.par #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp113.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wheelspin / Brake Lockup`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod131.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Force Effects`Wheelspin / Lockup Sound Modifiers #MiscYellow0 define_output mod3_<> = abs(fx_<>) / (rated_load_<> * 9.80665) * MuX_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod3_<> SOUNDMOD_INPUT_MIN 0.2 SOUNDMOD_INPUT_LOW 0.4 SOUNDMOD_INPUT_HIGH 0.6 SOUNDMOD_INPUT_MAX 0.8 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod3_<> ANI_mod3_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wheelspin / Lockup Sound Modifiers } Loudness: Longitudinal Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Force Effects #Category: Wheelspin / Lockup Sound Modifiers #FileID : SndMod131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod131.par #BlueLink0 Animator: Sound Modifier`Loudness: Longitudinal Force Effects` Wheelspin / Lockup Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod132.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod4_<> = min(abs(KappL_<>), 1.0) * abs(vxcen<>) ; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod4_<> SOUNDMOD_INPUT_MIN 1.5 SOUNDMOD_INPUT_LOW 2.0 SOUNDMOD_INPUT_HIGH 2.5 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.3333 SOUNDMOD_OUTPUT_HIGH 0.6667 SOUNDMOD_OUTPUT_MAX 1.0 WRT_mod4_<> ANI_mod4_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Longitudinal Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod132.par #BlueLink1 Animator: Sound Modifier`Loudness: Longitudinal Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Wheelspin / Brake Lockup #Library : Animator: Sound Sample #DataSet : Wheelspin / Brake Lockup #Category: Tire Sounds #FileID : SndSmp113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp113.par #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 1150 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 1150 kg Rated Load #Category: Tire Sounds #FileID : SndSet106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet106.par #BlueLink13 Animator: Sound Set`Tire Sounds - 1150 kg Rated Load` Tire Sounds` , Animator RRE 379 R0 394 FZ_TIRE_COEFFICIENT 470 FZ_MAX 100000 IT 0 L_RELAX_X 38 L_RELAX_Y 780 VLOW_ALPHA 5 RR_C 0.0042 RR_V 0.000032 RR_FX 1 OPT_TIRE_COMB 1 R_TIRE_COMB 1.5 ENTER_PARSFILE Tires\Mz\TireMz109.par`08-02-2011`16:42:32 #FullDataName Tire: Aligning Moment`255/75 R16`Touring Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.5, 14.18, 27.44, 39.66, 50.77, 60.75, 69.58, 77.28, 83.85 1, 28.61, 55.37, 80.02, 102.45, 122.6, 140.44, 155.97, 169.22 1.5, 42.17, 81.77, 118.43, 151.95, 182.2, 209.12, 232.69, 252.89 2, 52.19, 101.72, 148.12, 191.09, 230.41, 265.9, 297.44, 324.92 2.5, 56.3, 110.58, 162.37, 211.32, 257.09, 299.38, 337.91, 372.43 3, 54.51, 107.99, 160.11, 210.54, 258.91, 304.87, 348.02, 387.99 3.5, 48.92, 97.71, 146.21, 194.18, 241.35, 287.38, 331.9, 374.51 4, 41.89, 84.25, 127.05, 170.2, 213.52, 256.78, 299.72, 341.99 4.5, 34.92, 70.64, 107.23, 144.67, 182.91, 221.83, 261.26, 300.98 5, 28.7, 58.33, 89.04, 120.86, 153.81, 187.85, 222.93, 258.91 5.5, 23.39, 47.76, 73.27, 99.99, 127.99, 157.28, 187.88, 219.73 6, 18.96, 38.88, 59.94, 82.23, 105.83, 130.8, 157.18, 184.99 6.5, 15.28, 31.48, 48.78, 67.28, 87.08, 108.26, 130.86, 154.95 7, 12.21, 25.31, 39.45, 54.74, 71.3, 89.18, 108.48, 129.26 7.5, 9.65, 20.13, 31.61, 44.2, 57.98, 73.05, 89.48, 107.35 8, 7.49, 15.77, 25, 35.28, 46.7, 59.35, 73.31, 88.65 8.5, 5.65, 12.07, 19.38, 27.69, 37.09, 47.67, 59.49, 72.64 9, 4.09, 8.89, 14.56, 21.19, 28.85, 37.63, 47.61, 58.86 9.5, 2.73, 6.16, 10.41, 15.57, 21.73, 28.96, 37.34, 46.92 10, 1.56, 3.78, 6.8, 10.7, 15.55, 21.43, 28.4, 36.54 10.5, 0.53, 1.71, 3.64, 6.43, 10.14, 14.83, 20.58, 27.44 11, -0.37, -0.12, 0.87, 2.68, 5.37, 9.02, 13.69, 19.43 11.5, -1.17, -1.74, -1.59, -0.65, 1.16, 3.88, 7.59, 12.34 12, -1.89, -3.18, -3.78, -3.61, -2.6, -0.69, 2.16, 6.03 12.5, -2.53, -4.48, -5.74, -6.26, -5.96, -4.78, -2.69, 0.39 13, -3.1, -5.64, -7.5, -8.64, -8.97, -8.46, -7.05, -4.69 13.5, -3.62, -6.68, -9.1, -10.79, -11.7, -11.78, -10.99, -9.26 14, -4.09, -7.64, -10.54, -12.74, -14.17, -14.79, -14.55, -13.41 14.5, -4.52, -8.5, -11.85, -14.51, -16.42, -17.53, -17.8, -17.18 15, -4.91, -9.29, -13.05, -16.13, -18.47, -20.03, -20.76, -20.62 15.5, -5.27, -10.02, -14.16, -17.62, -20.35, -22.32, -23.48, -23.78 16, -5.6, -10.69, -15.17, -18.98, -22.09, -24.43, -25.97, -26.67 16.5, -5.91, -11.3, -16.1, -20.24, -23.68, -26.37, -28.27, -29.34 17, -6.19, -11.87, -16.97, -21.41, -25.16, -28.16, -30.39, -31.81 17.5, -6.45, -12.4, -17.77, -22.49, -26.52, -29.83, -32.36, -34.09 18, -6.7, -12.9, -18.51, -23.5, -27.8, -31.37, -34.19, -36.21 18.5, -6.92, -13.35, -19.21, -24.43, -28.98, -32.81, -35.89, -38.19 19, -7.14, -13.78, -19.86, -25.31, -30.09, -34.16, -37.48, -40.03 19.5, -7.33, -14.18, -20.47, -26.13, -31.12, -35.41, -38.97, -41.75 20, -7.52, -14.56, -21.04, -26.89, -32.09, -36.59, -40.36, -43.36 20.5, -7.7, -14.91, -21.57, -27.61, -33, -37.7, -41.67, -44.88 21, -7.86, -15.25, -22.07, -28.29, -33.86, -38.74, -42.9, -46.3 21.5, -8.02, -15.56, -22.55, -28.93, -34.67, -39.72, -44.05, -47.64 22, -8.16, -15.86, -23, -29.53, -35.43, -40.64, -45.14, -48.91 22.5, -8.3, -16.14, -23.42, -30.1, -36.15, -41.51, -46.18, -50.1 23, -8.43, -16.4, -23.82, -30.64, -36.83, -42.34, -47.15, -51.23 23.5, -8.56, -16.65, -24.2, -31.16, -37.47, -43.13, -48.08, -52.3 24, -8.68, -16.89, -24.56, -31.64, -38.09, -43.87, -48.95, -53.32 24.5, -8.79, -17.12, -24.91, -32.1, -38.67, -44.58, -49.79, -54.28 25, -8.9, -17.33, -25.23, -32.54, -39.23, -45.25, -50.58, -55.2 26, -8.9, -17.33, -25.23, -32.54, -39.23, -45.25, -50.58, -55.2 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Touring Tires } 255/75 R16 #Library : Tire: Aligning Moment #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireMz109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz109.par #BlueLink0 Tire: Aligning Moment`255/75 R16` Touring Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy109.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`255/75 R16`Touring Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.5, 306.2, 600.88, 882.3, 1149.48, 1401.78, 1638.74, 1860.01, 2065.37 1, 605.83, 1189, 1746.07, 2275.1, 2774.82, 3244.29, 3682.86, 4090.04 1.5, 892.78, 1752.48, 2574.01, 3354.57, 4092.23, 4785.63, 5433.75, 6035.88 2, 1161.8, 2281.06, 3351.23, 4368.63, 5330.76, 6235.81, 7082.44, 7869.65 2.5, 1408.82, 2766.79, 4066.08, 5302.21, 6472.14, 7573.62, 8604.98, 9564.94 3, 1631.13, 3204.39, 4710.78, 6145.16, 7503.95, 8784.53, 9984.87, 11103.43 3.5, 1827.46, 3591.29, 5281.5, 6892.37, 8419.86, 9860.96, 11213.35, 12475.2 4, 1997.83, 3927.42, 5778.04, 7543.42, 9219.14, 10801.85, 12288.92, 13678.27 4.5, 2143.28, 4214.8, 6203.19, 8101.76, 9905.76, 11611.53, 13216.18, 14717.36 5, 2265.63, 4456.89, 6561.91, 8573.68, 10487.15, 12298.4, 14004.3, 15602.28 5.5, 2367.15, 4658.08, 6860.54, 8967.25, 10972.93, 12873.45, 14665.46, 16346.2 6, 2450.32, 4823.16, 7106.01, 9291.39, 11373.81, 13348.99, 15213.38, 16964.05 6.5, 2517.61, 4956.95, 7305.33, 9555.12, 11700.69, 13737.6, 15662.17, 17471.29 7, 2571.36, 5064.02, 7465.19, 9767.1, 11964.03, 14051.42, 16025.47, 17882.95 7.5, 2613.7, 5148.56, 7591.68, 9935.26, 12173.47, 14301.67, 16315.97, 18213.03 8, 2646.53, 5214.25, 7690.26, 10066.67, 12337.64, 14498.42, 16545.06, 18474.15 8.5, 2671.48, 5264.33, 7765.64, 10167.52, 12464.06, 14650.49, 16722.78, 18677.46 9, 2689.94, 5301.54, 7821.89, 10243.09, 12559.22, 14765.48, 16857.78, 18832.62 9.5, 2703.09, 5328.18, 7862.41, 10297.87, 12628.63, 14849.86, 16957.46, 18947.88 10, 2711.91, 5346.21, 7890.07, 10335.61, 12676.9, 14909.09, 17028.06, 19030.22 10.5, 2717.21, 5357.22, 7907.26, 10359.46, 12707.9, 14947.72, 17074.79, 19085.51 11, 2719.66, 5362.55, 7915.95, 10372.01, 12724.83, 14969.54, 17102.02, 19118.65 11.5, 2719.82, 5363.29, 7917.76, 10375.41, 12730.34, 14977.71, 17113.38, 19133.71 12, 2718.14, 5360.35, 7914.04, 10371.43, 12726.63, 14974.81, 17111.84, 19134.07 12.5, 2714.98, 5354.46, 7905.89, 10361.53, 12715.5, 14963, 17099.89, 19122.53 13, 2710.66, 5346.22, 7894.2, 10346.89, 12698.43, 14944.03, 17079.56, 19101.4 13.5, 2705.42, 5336.13, 7879.72, 10328.49, 12676.64, 14919.36, 17052.55, 19072.58 14, 2699.47, 5324.6, 7863.04, 10307.15, 12651.12, 14890.18, 17020.22, 19037.64 14.5, 2692.97, 5311.96, 7844.68, 10283.53, 12622.71, 14857.47, 16983.73, 18997.87 15, 2686.05, 5298.47, 7825.03, 10258.15, 12592.06, 14822.04, 16944, 18954.35 15.5, 2678.82, 5284.36, 7804.42, 10231.46, 12559.74, 14784.54, 16901.81, 18907.95 16, 2671.39, 5269.8, 7783.12, 10203.82, 12526.19, 14745.53, 16857.79, 18859.39 16.5, 2663.81, 5254.95, 7761.36, 10175.53, 12491.79, 14705.44, 16812.45, 18809.27 17, 2656.15, 5239.92, 7739.31, 10146.83, 12456.83, 14664.64, 16766.24, 18758.07 17.5, 2648.45, 5224.82, 7717.11, 10117.91, 12421.57, 14623.42, 16719.48, 18706.2 18, 2640.76, 5209.71, 7694.9, 10088.94, 12386.19, 14582.03, 16672.46, 18653.97 18.5, 2633.11, 5194.66, 7672.76, 10060.03, 12350.87, 14540.66, 16625.43, 18601.65 19, 2625.51, 5179.72, 7650.77, 10031.3, 12315.73, 14499.47, 16578.55, 18549.47 19.5, 2618, 5164.94, 7628.98, 10002.82, 12280.89, 14458.59, 16531.99, 18497.6 20, 2610.59, 5150.33, 7607.46, 9974.67, 12246.41, 14418.12, 16485.87, 18446.16 20.5, 2603.28, 5135.93, 7586.23, 9946.89, 12212.37, 14378.14, 16440.27, 18395.29 21, 2596.09, 5121.76, 7565.32, 9919.51, 12178.83, 14338.72, 16395.28, 18345.07 21.5, 2589.02, 5107.83, 7544.76, 9892.59, 12145.8, 14299.89, 16350.96, 18295.56 22, 2582.08, 5094.15, 7524.57, 9866.12, 12113.34, 14261.7, 16307.34, 18246.82 22.5, 2575.28, 5080.72, 7504.74, 9840.14, 12081.45, 14224.18, 16264.47, 18198.88 23, 2568.6, 5067.56, 7485.29, 9814.64, 12050.15, 14187.34, 16222.36, 18151.78 23.5, 2562.07, 5054.66, 7466.23, 9789.64, 12019.45, 14151.19, 16181.02, 18105.54 24, 2555.66, 5042.02, 7447.55, 9765.14, 11989.35, 14115.74, 16140.48, 18060.16 24.5, 2549.39, 5029.64, 7429.26, 9741.13, 11959.86, 14080.99, 16100.72, 18015.65 25, 2543.26, 5017.52, 7411.34, 9717.62, 11930.96, 14046.94, 16061.75, 17972.01 26, 2543.26, 5017.52, 7411.34, 9717.62, 11930.96, 14046.94, 16061.75, 17972.01 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Touring Tires } 255/75 R16 #Library : Tire: Lateral Force #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireFy109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy109.par #BlueLink1 Tire: Lateral Force`255/75 R16` Touring Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx109.par`08-02-2011`16:42:28 #FullDataName Tire: Longitudinal Force`255/75 R16`Touring Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.02, 1258.94, 2468.09, 3619.86, 4710.05, 5735.83, 6695.23, 7586.84, 8409.7 0.04, 1993.59, 3916.87, 5758.7, 7512.6, 9173.94, 10739.23, 12205.7, 13571.17 0.06, 2344.28, 4612.4, 6792.08, 8875.96, 10858.65, 12735.94, 14504.35, 16161.01 0.08, 2516.82, 4955.83, 7304.36, 9554.74, 11701.28, 13739.45, 15665.47, 17476.15 0.1, 2608.63, 5139.03, 7578.4, 9918.95, 12154.85, 14281.44, 16294.79, 18191.53 0.12, 2660.42, 5242.66, 7733.87, 10126.21, 12413.81, 14591.92, 16656.52, 18604.16 0.14, 2690.36, 5302.78, 7824.43, 10247.46, 12565.96, 14775.15, 16870.97, 18849.91 0.16, 2707.35, 5337.12, 7876.51, 10317.67, 12654.69, 14882.77, 16997.83, 18996.3 0.18, 2716.2, 5355.23, 7904.34, 10355.71, 12703.42, 14942.66, 17069.34, 19079.87 0.2, 2719.69, 5362.66, 7916.21, 10372.54, 12725.75, 14971.02, 17104.25, 19121.85 0.22, 2719.56, 5362.84, 7917.22, 10374.93, 12730.08, 14977.86, 17114.17, 19135.39 0.24, 2716.91, 5357.99, 7910.7, 10367.29, 12721.88, 14969.69, 17106.6, 19129.01 0.26, 2712.5, 5349.62, 7898.89, 10352.57, 12704.84, 14950.89, 17086.64, 19108.47 0.28, 2706.85, 5338.77, 7883.33, 10332.85, 12681.51, 14924.53, 17057.82, 19077.79 0.3, 2700.35, 5326.18, 7865.15, 10309.6, 12653.73, 14892.78, 17022.68, 19039.82 0.32, 2693.25, 5312.4, 7845.14, 10283.88, 12622.82, 14857.24, 16983.05, 18996.67 0.34, 2685.76, 5297.81, 7823.91, 10256.48, 12589.77, 14819.06, 16940.29, 18949.87 0.36, 2678.02, 5282.71, 7801.88, 10227.99, 12555.32, 14779.14, 16895.42, 18900.59 0.38, 2670.15, 5267.33, 7779.4, 10198.86, 12520, 14738.13, 16849.22, 18849.7 0.4, 2662.23, 5251.82, 7756.71, 10169.41, 12484.24, 14696.53, 16802.26, 18797.88 0.42, 2654.32, 5236.32, 7734, 10139.9, 12448.36, 14654.73, 16755, 18745.62 0.44, 2646.46, 5220.92, 7711.41, 10110.51, 12412.59, 14613.01, 16707.76, 18693.33 0.46, 2638.7, 5205.69, 7689.05, 10081.4, 12377.13, 14571.59, 16660.82, 18641.29 0.48, 2631.05, 5190.68, 7667, 10052.68, 12342.09, 14530.64, 16614.36, 18589.74 0.5, 2623.54, 5175.93, 7645.33, 10024.41, 12307.6, 14490.29, 16568.55, 18538.86 0.52, 2616.18, 5161.47, 7624.06, 9996.66, 12273.71, 14450.63, 16523.48, 18488.76 0.54, 2608.98, 5147.31, 7603.24, 9969.48, 12240.5, 14411.72, 16479.23, 18439.55 0.56, 2601.95, 5133.48, 7582.88, 9942.89, 12207.98, 14373.62, 16435.88, 18391.3 0.58, 2595.09, 5119.98, 7563, 9916.91, 12176.2, 14336.35, 16393.45, 18344.04 0.6, 2588.4, 5106.81, 7543.6, 9891.54, 12145.16, 14299.94, 16351.97, 18297.83 0.62, 2581.88, 5093.97, 7524.68, 9866.8, 12114.87, 14264.38, 16311.46, 18252.66 0.64, 2575.53, 5081.47, 7506.24, 9842.68, 12085.33, 14229.7, 16271.92, 18208.56 0.66, 2569.35, 5069.29, 7488.28, 9819.18, 12056.54, 14195.87, 16233.34, 18165.51 0.68, 2563.33, 5057.43, 7470.79, 9796.28, 12028.47, 14162.9, 16195.72, 18123.52 0.7, 2557.47, 5045.89, 7453.76, 9773.98, 12001.14, 14130.77, 16159.05, 18082.57 0.72, 2551.78, 5034.66, 7437.19, 9752.27, 11974.51, 14099.47, 16123.31, 18042.65 0.74, 2546.23, 5023.73, 7421.05, 9731.13, 11948.58, 14068.97, 16088.48, 18003.73 0.76, 2540.84, 5013.09, 7405.35, 9710.55, 11923.33, 14039.26, 16054.54, 17965.8 0.78, 2535.59, 5002.74, 7390.06, 9690.52, 11898.74, 14010.33, 16021.48, 17928.83 0.8, 2530.49, 4992.66, 7375.18, 9671.01, 11874.79, 13982.14, 15989.26, 17892.79 0.82, 2525.52, 4982.86, 7360.7, 9652.01, 11851.47, 13954.68, 15957.87, 17857.68 0.84, 2520.68, 4973.31, 7346.59, 9633.52, 11828.76, 13927.93, 15927.28, 17823.45 0.86, 2515.97, 4964.02, 7332.86, 9615.5, 11806.63, 13901.87, 15897.47, 17790.09 0.88, 2511.39, 4954.98, 7319.49, 9597.96, 11785.07, 13876.48, 15868.42, 17757.57 0.9, 2506.93, 4946.16, 7306.46, 9580.86, 11764.07, 13851.73, 15840.1, 17725.87 0.92, 2502.58, 4937.58, 7293.77, 9564.21, 11743.6, 13827.61, 15812.5, 17694.95 0.94, 2498.35, 4929.22, 7281.41, 9547.98, 11723.65, 13804.1, 15785.58, 17664.8 0.96, 2494.22, 4921.07, 7269.36, 9532.16, 11704.21, 13781.17, 15759.34, 17635.4 0.98, 2490.2, 4913.13, 7257.62, 9516.74, 11685.25, 13758.82, 15733.74, 17606.72 1, 2486.29, 4905.39, 7246.17, 9501.7, 11666.76, 13737.01, 15708.77, 17578.73 1.02, 2486.29, 4905.39, 7246.17, 9501.7, 11666.76, 13737.01, 15708.77, 17578.73 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Touring Tires } 255/75 R16 #Library : Tire: Longitudinal Force #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireFx109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:28 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx109.par #BlueLink2 Tire: Longitudinal Force`255/75 R16` Touring Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff109.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`255/75 R16`Touring Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 1127.76475, -5.0637 2255.5295, -9.5404 3383.29425, -13.704 4511.059, -17.6355 5638.82375, -21.3781 6766.5885, -24.9597 7894.35325, -28.3995 9022.118, -31.7123 10149.88275, -34.9094 11277.6475, -38 12405.41225, -40.9917 13533.177, -43.8909 14660.94175, -46.7031 15788.7065, -49.433 16916.47125, -52.0848 18044.236, -54.6622 19172.00075, -57.1685 20299.7655, -59.6066 21427.53025, -61.9791 22555.295, -64.2887 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Touring Tires } 255/75 R16 #Library : Tire: Camber Thrust Coefficient #DataSet : 255/75 R16 #Category: Touring Tires #FileID : CamStiff109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff109.par #BlueLink3 Tire: Camber Thrust Coefficient`255/75 R16` Touring Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Touring Tires } 255/75 R16 #Library : Tire #DataSet : 255/75 R16 #Category: Touring Tires #FileID : Tire112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire112_note.txt 1150 kg rated load EXIT_NOTEFILE Tires\Tire\Tire112_note.txt EXIT_PARSFILE Tires\Tire\Tire112.par #BlueLink9 Tire`255/75 R16` Touring Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`255/75 R16` Touring Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 WRITE_ADD_REFERENCE_FRAME_AXLE ENTER_PARSFILE Suspensions\Compliance_SA\SuspCmpSA105.par`08-02-2011`16:42:37 #FullDataName Suspension: Solid Axle Compliance, Springs, and Dampers`D-Class, SUV - Rear Solid Axle Comp.`CS D-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 L_SPRINGS 1103.33 L_DAMPERS 1103.33 *R_SPRING_L 0.9989 *R_SPRING_R 1.0001 *R_DAMPER_L 1.003 *R_DAMPER_R 0.995 *CT_FX_L 0 *CT_FX_R 0 *CS_FY_L 0 *CS_FY_R 0 *CS_MZ_L 0 *CS_MZ_R 0 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 0 *CI_FY_R 0 *CI_MZ_L 0 *CI_MZ_R 0 *C_LAT_AXLE 5.3133E-04 *C_LONG_AXLE 4.6049E-04 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 L_JNC_STOPS 1100 L_REB_STOPS 1100 *R_JOUNCE_L 1 *R_JOUNCE_R 1 *R_REBOUND_L 1 *R_REBOUND_R 1 C_LAT_AXLE_COEFFICIENT 5.3133E-04 C_LONG_AXLE_COEFFICIENT 4.6049E-04 L_SPG_ADJ 0 #BlueLink1 Suspension: Shock Absorber`Big SUV Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx108.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`No Auxiliary Roll Moment` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 MX_AUX_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; No Auxiliary Roll Moment #Library : Suspension: Auxiliary Roll Moment #DataSet : No Auxiliary Roll Moment #Category: #FileID : AuxMx108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx108.par #BlueLink2 Suspension: Auxiliary Roll Moment`No Auxiliary Roll Moment` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb107.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+120 mm / -60 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 118, 0 119, 0 120, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -60, -10000 -59, 0 -58, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +120 mm / -60 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +120 mm / -60 mm #Category: Jounce and Rebound Stops #FileID : JncRb107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb107.par #BlueLink5 Suspension: Jounce and Rebound Stops`+120 mm / -60 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.9989 CMP_DAMP_COEFFICIENT 1.003 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT 0 CS_MZ_COEFFICIENT 0 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 0 CI_MZ_COEFFICIENT 0 CMP_JSTOP_COEFFICIENT 1 CMP_RSTOP_COEFFICIENT 1 ENTER_PARSFILE Suspensions\Springs\Spring118.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`40 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 40 FS_EXT_COEFFICIENT 40 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 40 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 40 N/mm #Library : Suspension: Spring #DataSet : 40 N/mm #Category: #FileID : Spring118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring118.par #BlueLink0 Suspension: Spring`40 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big SUV Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+120 mm / -60 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 1.0001 CMP_DAMP_COEFFICIENT 0.995 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT 0 CS_MZ_COEFFICIENT 0 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 0 CI_MZ_COEFFICIENT 0 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 1 CMP_RSTOP_COEFFICIENT 1 #BlueLink3 Suspension: Spring`40 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Solid Axle Compliance, Springs, and Dampers; { CS D-Class } D-Class, SUV - Rear Solid Axle Comp. #Library : Suspension: Solid Axle Compliance, Springs, and Dampers #DataSet : D-Class, SUV - Rear Solid Axle Comp. #Category: CS D-Class #FileID : SuspCmpSA105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Solid axle EXIT_PARSFILE Suspensions\Compliance_SA\SuspCmpSA105.par #BlueLink22 Suspension: Solid Axle Compliance, Springs, and Dampers`D-Class, SUV - Rear Solid Axle Comp.` CS D-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Solid\SaKin105.par`08-02-2011`16:42:37 #FullDataName Suspension: Solid Axle System Kinematics`D-Class, SUV - Rear Suspension`CS D-Class OPT_NL_AXLE 1 iside 1 L_TRACK 1565 M_US 100 IA 1.5 *IW_L 0.9 *IW_R 0.9 R_ROLL_STEER 0.1 Y_CL_SUSP 0 *TOE_L 0 *TOE_R 0 *CAMBER_L 0 *CAMBER_R 0 H_CG_AXLE 360 *JNC_DESIGN_L 0 *JNC_DESIGN_R 0 R_US_STR 0 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 1 #CheckBox1 0 ENTER_PARSFILE Suspensions\Dive\Dive105.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Rear Hotchkiss - No Dive`Hotchkiss Rear Axle #RingCtrl0 CONSTANT *SCALAR 0 SUSP_DIVE_CONSTANT 0 #RadioCtrl0 0 SUSP_DIVE_AXLE_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { Hotchkiss Rear Axle } Rear Hotchkiss - No Dive #Library : Suspension: Dive Angle (Caster Change) #DataSet : Rear Hotchkiss - No Dive #Category: Hotchkiss Rear Axle #FileID : Dive105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive105_note.txt Generic Hotchkiss Rear Axle Dive angle change vs. Jounce. EXIT_NOTEFILE Suspensions\Dive\Dive105_note.txt EXIT_PARSFILE Suspensions\Dive\Dive105.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear Hotchkiss - No Dive` Hotchkiss Rear Axle` , Axle dive ENTER_PARSFILE Suspensions\Longitudinal\SusX105.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Rear Hotchkiss - Longitudinal Movement`Hotchkiss Rear Axle #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -150, 5.1612 -135, 2.79277 -120, 0.841255 -105, -0.695023 -90, -1.8184 -75, -2.53133 -60, -2.83607 -45, -2.73441 -30, -2.22759 -15, -1.3162 0, 0 15, 1.72199 30, 3.85147 45, 6.39054 60, 9.34103 75, 12.703 90, 16.4714 105, 20.6284 120, 25.1262 135, 29.8517 150, 34.583 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -150, 5.1612 -135, 2.79277 -120, 0.841255 -105, -0.695023 -90, -1.8184 -75, -2.53133 -60, -2.83607 -45, -2.73441 -30, -2.22759 -15, -1.3162 0, 0 15, 1.72199 30, 3.85147 45, 6.39054 60, 9.34103 75, 12.703 90, 16.4714 105, 20.6284 120, 25.1262 135, 29.8517 150, 34.583 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { Hotchkiss Rear Axle } Rear Hotchkiss - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Rear Hotchkiss - Longitudinal Movement #Category: Hotchkiss Rear Axle #FileID : SusX105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX105_note.txt Generic Hotchkiss Rear Axle Longitudinal movement vs. Jounce. EXIT_NOTEFILE Suspensions\Longitudinal\SusX105_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX105.par #BlueLink1 Suspension: Longitudinal Position`Rear Hotchkiss - Longitudinal Movement` Hotchkiss Rear Axle` , Axle X movement ENTER_PARSFILE Animator\STL\AniSTL204.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Rear Solid Drive Axle`Misc. Parts #MiscYellow3 add_obj Animator\3D_shape_files_CS\misc\solid_axle.obj #ENDMYellow SET_COLOR 0.502 0.502 0.502 SET_OFFSET_X 0 SET_OFFSET_Y -0.007 SET_OFFSET_Z 0 X_REF_LENGTH 1 Y_REF_LENGTH 1700 Z_REF_LENGTH 1 *SPECULAR 0 SMOOTH_MAX_ANGLE 55 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Misc. Parts } Rear Solid Drive Axle #Library : Animator: Shape File Link #DataSet : Rear Solid Drive Axle #Category: Misc. Parts #FileID : AniSTL204 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL204.par #BlueLink2 Animator: Shape File Link`Rear Solid Drive Axle` Misc. Parts` , Animator ENTER_PARSFILE Suspensions\Lateral\SusLat105.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Rear Hotchkiss - No Lateral Movement`Hotchkiss Rear Axle #RingCtrl0 CONSTANT SUSP_LAT_CONSTANT 0 SUSP_LAT_AXLE_JOUNCE_CONSTANT 0 #RadioCtrl0 1 *SCALAR 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { Hotchkiss Rear Axle } Rear Hotchkiss - No Lateral Movement #Library : Suspension: Lateral Position #DataSet : Rear Hotchkiss - No Lateral Movement #Category: Hotchkiss Rear Axle #FileID : SusLat105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat105_note.txt Generic Hotchkiss Rear Axle Lateral Movement vs. Jounce. EXIT_NOTEFILE Suspensions\Lateral\SusLat105_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat105.par #BlueLink3 Suspension: Lateral Position`Rear Hotchkiss - No Lateral Movement` Hotchkiss Rear Axle` , Axle Y movement - jounce ENTER_PARSFILE Suspensions\Lateral_Roll\SusLatR101.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position with Roll`Rear Hotchkiss - Lat. Movement vs. Roll`Hotchiss Rear Axle #RingCtrl0 SPLINE ! Note: if *TABLE_KEYWORD is not set to "SUSP_Y_AXLE_ROLL" then Y values read from the table will be reversed. *TABLE_KEYWORD SUSP_Y_AXLE_ROLL #DiagramOne0 SUSP_Y_AXLE_ROLL_TABLE SPLINE -10.0528, -16.7928 -8.3636, -14.0137 -6.68194, -11.2296 -5.00627, -8.43574 -3.33505, -5.63126 -1.66679, -2.81808 0, 0 1.66679, 2.81808 3.33505, 5.63126 5.00627, 8.43574 6.68194, 11.2296 8.3636, 14.0137 10.0528, 16.7928 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position with Roll; { Hotchiss Rear Axle } Rear Hotchkiss - Lat. Movement vs. Roll #Library : Suspension: Lateral Position with Roll #DataSet : Rear Hotchkiss - Lat. Movement vs. Roll #Category: Hotchiss Rear Axle #FileID : SusLatR101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral_Roll\SusLatR101_note.txt Generic Hotchkiss Rear Axle Lateral Movement vs. Roll EXIT_NOTEFILE Suspensions\Lateral_Roll\SusLatR101_note.txt EXIT_PARSFILE Suspensions\Lateral_Roll\SusLatR101.par #BlueLink4 Suspension: Lateral Position with Roll`Rear Hotchkiss - Lat. Movement vs. Roll` Hotchiss Rear Axle` , Axle Y movement - roll SUSP_AXLE_ROLL_STEER_COEFFICIENT 0.1 Y_LENGTH 1565 IW 0.9 A_TOE 0 A_CAMBER 0 JNC_DESIGN 0 iside 2 IW 0.9 A_TOE 0 A_CAMBER 0 JNC_DESIGN 0 LOG_ENTRY Used Dataset: Suspension: Solid Axle System Kinematics; { CS D-Class } D-Class, SUV - Rear Suspension #Library : Suspension: Solid Axle System Kinematics #DataSet : D-Class, SUV - Rear Suspension #Category: CS D-Class #FileID : SaKin105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Solid Axle ENTRY_NOTEFILE Suspensions\Kin_Solid\SaKin105_note.txt Generic Hotchkiss Rear Axle kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Solid\SaKin105_note.txt EXIT_PARSFILE Suspensions\Kin_Solid\SaKin105.par #BlueLink23 Suspension: Solid Axle System Kinematics`D-Class, SUV - Rear Suspension` CS D-Class` , Rear kinematics (solid axle) * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`255/75 R16` Touring Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`255/75 R16` Touring Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass113.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`D-Class, SUV Sprung Mass`CS D-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 2600 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 3725 H_H 550 H_CG_SU 650 LX_AXLE 2600 LX_CG_SU 1050 M_SU 1430 IXX_SU 700.7 IYY_SU 2059.2 IZZ_SU 2059.2 IXZ_SU 0 RX_SGUI 0.700 RY_SGUI 1.200 RZ_SGUI 1.200 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1679 Y_LENGTH 1820 *HWC_LF 350 *HWC_RF 350 *HWC_LR 330 *HWC_RR 330 H_WC 330 iside 2 H_WC 330 iaxle 1 iside 1 H_WC 350 iside 2 H_WC 350 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS D-Class } D-Class, SUV Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : D-Class, SUV Sprung Mass #Category: CS D-Class #FileID : SprMass113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass113.par #BlueLink0 Vehicle: Sprung Mass`D-Class, SUV Sprung Mass` CS D-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero110.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`D-Class, SUV Aero`CS D-Class #CheckBox0 0 X_REF_AERO -1300 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 2600 AREA_AERO 2.8 D_AIR 1.206 ENTER_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FX_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.45 -160, -0.45 -90, 0 -20, 0.325 0, 0.3 20, 0.325 90, 0 160, -0.45 180, -0.45 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fx (Drag) Coefficient; Drag Coefficient = 0.30 #Library : Aerodynamics: Fx (Drag) Coefficient #DataSet : Drag Coefficient = 0.30 #Category: #FileID : AirCFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Drag vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt A nominal drag coefficent of 0.3 is typical of contemporary mid-size sedans, such as Honda Accord, Toyota Camry, and Ford Fusion. The drag coefficient typically increases a few percent as the vehicle develops an aerodynamic sidelsip angle, peaking around 20 degrees. Drag reduces as sidelip increases because the component of the airspeed in the vehicle X direction reduces. EXIT_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force ENTER_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FY_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.5 0, 0 90, 0.5 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fy (Side Force) Coefficient; Side Force Coefficient = 0.5 at 90 deg #Library : Aerodynamics: Fy (Side Force) Coefficient #DataSet : Side Force Coefficient = 0.5 at 90 deg #Category: #FileID : AirCFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aero side force vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt The side force coefficient is typically larger then the drag coefficent, because the width of the vehiicle is less than the length, contirbuting to drag in the lateral direction. Also, the calculation of the coefficient is based on the projected frontal area of the car, while the side force is developed against the larger side area. EXIT_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force ENTER_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par`08-03-2011`08:02:01 #FullDataName Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FZ_AERO_SHAPING_TABLE SPLINE_FLAT -180, 0.4 -135, 0.45 -90, 0.35 -20, 0.185 0, 0.18 20, 0.185 90, 0.35 135, 0.45 180, 0.4 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fz (Lift) Coefficient; Lift Coefficient = 0.18 #Library : Aerodynamics: Fz (Lift) Coefficient #DataSet : Lift Coefficient = 0.18 #Category: #FileID : AirCFz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:01 #VehCode Lift vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt Nearly all passenger cars develop a small positive lift force at highway speeeds. EXIT_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force ENTER_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par`08-02-2011`16:43:55 #FullDataName Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MX_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.3 0, 0 90, 0.3 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mx (Roll Moment) Coefficient; Roll Moment Coefficient = 0.3 at 90 deg #Library : Aerodynamics: Mx (Roll Moment) Coefficient #DataSet : Roll Moment Coefficient = 0.3 at 90 deg #Category: #FileID : AirCMx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Aero Mx vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment ENTER_PARSFILE Aerodynamics\Aero_My\AirCMy104.par`08-03-2011`08:02:56 #FullDataName Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 MY_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.25 -160, -0.25 -90, 0 -20, 0.17 0, 0.15 20, 0.17 90, 0 160, -0.25 180, -0.25 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: My (Pitch Moment) Coefficient; Pitch Moment Coefficient = -0.15 #Library : Aerodynamics: My (Pitch Moment) Coefficient #DataSet : Pitch Moment Coefficient = -0.15 #Category: #FileID : AirCMy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:56 #VehCode Aero My vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_My\AirCMy104.par #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment ENTER_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par`08-03-2011`08:03:05 #FullDataName Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MZ_AERO_SHAPING_TABLE SPLINE -180, 0 -90, 0.05 0, 0 90, -0.05 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mz (Yaw Moment) Coefficient; Yaw Moment Coefficent = 0.05 at 90 deg #Library : Aerodynamics: Mz (Yaw Moment) Coefficient #DataSet : Yaw Moment Coefficent = 0.05 at 90 deg #Category: #FileID : AirCMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:03:05 #VehCode Aero Mz vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS D-Class } D-Class, SUV Aero #Library : Aerodynamics: Basic #DataSet : D-Class, SUV Aero #Category: CS D-Class #FileID : Aero110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero110_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero110_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero110.par #BlueLink1 Aerodynamics: Basic`D-Class, SUV Aero` CS D-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh116.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`D-Class, SUV`D-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 2619 OBJ_Y_LENGTH 1820 OBJ_Z_LENGTH 1679 *DZ_V -40 *LAT_WC 1600 *LAT_WC_2 1600 *HWC 280 *WHEEL_RATIO 1.25 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_OFFSET_X 0 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_OFFSET_X -2.619 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_ANGLE_X 180 SET_OFFSET_X -2.619 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.266 WRITE_ADD_REFERENCE_FRAME_SHADOW ENTER_PARSFILE Animator\STL\AniSTL104.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Vehicle Shadow Shape`Vehicle Shadow #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\vehicle_shadows\shadow.obj #ENDMYellow SET_COLOR 0.125 0.125 0.125 X_REF_LENGTH 2690 Y_REF_LENGTH 1900 Z_REF_LENGTH 1220 *TRANSPARENCY 0.8 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.8 show_front on show_back off #MiscYellow0 tranclucent_fix on #ENDMYellow #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Vehicle Shadow } Vehicle Shadow Shape #Library : Animator: Shape File Link #DataSet : Vehicle Shadow Shape #Category: Vehicle Shadow #FileID : AniSTL104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL104.par #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT -0.04 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup138.par`08-02-2011`16:43:38 #FullDataName Animator: Shape Assembly`D-Class, SUV`CS D-Class *COLOR .36 .117 .117 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.3 *X_REF_LENGTH 2850 *Y_REF_LENGTH 1900 *Z_REF_LENGTH 1700 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL170.par`08-02-2011`16:43:43 #FullDataName Animator: Shape File Link`SUV: Body`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\body.obj #ENDMYellow SET_COLOR 0 0 .5 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Body #Library : Animator: Shape File Link #DataSet : SUV: Body #Category: CS SUV #FileID : AniSTL170 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:43 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL170.par #BlueLink0 Animator: Shape File Link`SUV: Body` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL174.par`08-02-2011`16:43:43 #FullDataName Animator: Shape File Link`SUV: Body Trim (Gray)`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\body_trim.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Body Trim (Gray) #Library : Animator: Shape File Link #DataSet : SUV: Body Trim (Gray) #Category: CS SUV #FileID : AniSTL174 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:43 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL174.par #BlueLink1 Animator: Shape File Link`SUV: Body Trim (Gray)` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL171.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Details`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\details.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Details #Library : Animator: Shape File Link #DataSet : SUV: Details #Category: CS SUV #FileID : AniSTL171 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL171.par #BlueLink2 Animator: Shape File Link`SUV: Details` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL172.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Interior`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\interior.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Interior #Library : Animator: Shape File Link #DataSet : SUV: Interior #Category: CS SUV #FileID : AniSTL172 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL172.par #BlueLink3 Animator: Shape File Link`SUV: Interior` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL175.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Seats`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\seats.obj #ENDMYellow SET_COLOR 0.753 0.753 0.753 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Seats #Library : Animator: Shape File Link #DataSet : SUV: Seats #Category: CS SUV #FileID : AniSTL175 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL175.par #BlueLink4 Animator: Shape File Link`SUV: Seats` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL176.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Steering Wheel`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\steering_wheel.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Steering Wheel #Library : Animator: Shape File Link #DataSet : SUV: Steering Wheel #Category: CS SUV #FileID : AniSTL176 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL176.par #BlueLink5 Animator: Shape File Link`SUV: Steering Wheel` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL173.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Windows`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\windows.obj #ENDMYellow SET_COLOR 0.188 0.188 0.188 *SPECULAR 0.9 *TRANSPARENCY 0.85 SMOOTH_MAX_ANGLE 45 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 0.85 show_front on show_back off SET_SPECULAR 0.9 0.9 0.9 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Windows #Library : Animator: Shape File Link #DataSet : SUV: Windows #Category: CS SUV #FileID : AniSTL173 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL173.par #BlueLink6 Animator: Shape File Link`SUV: Windows` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL177.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Driver`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\driver\driver.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Driver #Library : Animator: Shape File Link #DataSet : SUV: Driver #Category: CS SUV #FileID : AniSTL177 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL177.par #BlueLink13 Animator: Shape File Link`SUV: Driver` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 x_ref_length 2850 y_ref_length 1900 z_ref_length 1700 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS D-Class } D-Class, SUV #Library : Animator: Shape Assembly #DataSet : D-Class, SUV #Category: CS D-Class #FileID : StlGroup138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:38 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup138.par #BlueLink1 Animator: Shape Assembly`D-Class, SUV` CS D-Class` , Vehicle body ENTER_PARSFILE Animator\Sound\Set\SndSet105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Gasoline Engine Vehicle`General Vehicle Sounds ENTER_PARSFILE Animator\Sound\Sample\SndSmp110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power Off`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_0.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod124.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_brake_torque -50; ! maximum engine braking torque define_output v_mod2 = if_gt_0_then(m_engout, 0, pow(m_engout/max_brake_torque, 0.5)); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod2 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod2 ANI_v_mod2 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod124.par #BlueLink0 Animator: Sound Modifier`Power Off Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod125.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 4000 SOUNDMOD_INPUT_HIGH 8000 SOUNDMOD_INPUT_MAX 12000 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod125 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod125.par #BlueLink1 Animator: Sound Modifier`Power Off Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 ENTER_PARSFILE Animator\Sound\Modifier\SndMod126.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Frequency with RPM`Gas Engine Sound Modifiers #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Frequency with RPM #Library : Animator: Sound Modifier #DataSet : Frequency with RPM #Category: Gas Engine Sound Modifiers #FileID : SndMod126 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt This modifier is based on a recording of a 4 cyl engine at 3500 RPM EXIT_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod126.par #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power Off #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power Off #Category: Gas Engine Sounds #FileID : SndSmp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt This sound set uses a sample recorded at closed throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp110.par #BlueLink0 Animator: Sound Sample`4 Cyl. - Power Off` Gas Engine Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power On`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_1.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod127.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_torque 265 define_output v_mod1 = if_gt_0_then(m_engout, pow(m_engout/max_torque, 0.5), 0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod1 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod1 ANI_v_mod1 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod127 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt This modifer is to be applied to power-on conditions, i.e, when the engine torque is positive. EXIT_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod127.par #BlueLink0 Animator: Sound Modifier`Power On Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod128.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod128.par #BlueLink1 Animator: Sound Modifier`Power On Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power On #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power On #Category: Gas Engine Sounds #FileID : SndSmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt This sound set uses a sample recorded at wide open throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp111.par #BlueLink1 Animator: Sound Sample`4 Cyl. - Power On` Gas Engine Sounds` , Sample 2 ENTER_PARSFILE Animator\Sound\Sample\SndSmp105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wind Noise`Wind Noise ADD_3D_SOUND Animator\Audio\Environment\Wind_1_Mono.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 0.3 SOUND_VOL_MIN 0.01 SOUND_VOL_MAX 9.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 9.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod122.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_parameter air_speed_ref 50; units = km/h; define_output v_mod3 = pow(vAir/air_speed_ref, 3.0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod3 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_v_mod3 ANI_v_mod3 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Loudness: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod122.par #BlueLink0 Animator: Sound Modifier`Loudness: Speed Effect` Wind Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod123.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Frequency: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_output v_mod4 = pow(vAir/air_speed_ref, 0.5); #ENDMYellow #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod4 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_v_mod4 ANI_v_mod4 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Frequency: Speed Effect #Library : Animator: Sound Modifier #DataSet : Frequency: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod123.par #BlueLink1 Animator: Sound Modifier`Frequency: Speed Effect` Wind Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Wind Noise } Wind Noise #Library : Animator: Sound Sample #DataSet : Wind Noise #Category: Wind Noise #FileID : SndSmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp105.par #BlueLink2 Animator: Sound Sample`Wind Noise` Wind Noise` , Sample 3 LOG_ENTRY Used Dataset: Animator: Sound Set; { General Vehicle Sounds } Gasoline Engine Vehicle #Library : Animator: Sound Set #DataSet : Gasoline Engine Vehicle #Category: General Vehicle Sounds #FileID : SndSet105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set ENTRY_NOTEFILE Animator\Sound\Set\SndSet105_note.txt The sound samples are based on a 4 cylinder engine. The frequency can be scaled for a different number of cylinders by setting the ncyls parameter here. EXIT_NOTEFILE Animator\Sound\Set\SndSet105_note.txt EXIT_PARSFILE Animator\Sound\Set\SndSet105.par #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL261.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Brake Lights (D-Class)`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\brakes_on.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 1 SET_SCALE_Y 1.005 SET_SCALE_Z 1 SET_OFFSET_X -0.01 SET_OFFSET_Y 0 SET_OFFSET_Z 0.3 X_REF_LENGTH 2850 Y_REF_LENGTH 1900 Z_REF_LENGTH 1700 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 *IMAGE_FIT_MODE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Brake Lights (D-Class) #Library : Animator: Shape File Link #DataSet : SUV: Brake Lights (D-Class) #Category: CS SUV #FileID : AniSTL261 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL261.par #BlueLink3 Animator: Shape File Link`SUV: Brake Lights (D-Class)` CS SUV` , Brake lights WRITE_REFERENCE_FRAME_SIZE ENTER_PARSFILE Animator\Cameras\Camera101.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Vehicle Pictures`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 1 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 230 SET_ELEVATION 6 SET_DISTANCE 12 *SET_LOOKPOINT_X 1 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 230 *SET_ELEVATION 6 *SET_DISTANCE 12 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Vehicle Pictures #Library : Animator: Camera Setup #DataSet : Vehicle Pictures #Category: Shape Preview #FileID : Camera101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera ENTRY_NOTEFILE Animator\Cameras\Camera101_note.txt Pause the animation at the very start and center the vehicle in the animator to take a picture for the Animator: Vehicle screen. EXIT_NOTEFILE Animator\Cameras\Camera101_note.txt EXIT_PARSFILE Animator\Cameras\Camera101.par #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera ENTER_PARSFILE Animator\STL\AniSTL114.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Blurred Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\blurred_tire\blurred_tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Blurred Tire #Library : Animator: Shape File Link #DataSet : Blurred Tire #Category: Tires #FileID : AniSTL114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL114.par #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { D-Class Vehicles } D-Class, SUV #Library : Animator: Vehicles and Sensor Targets #DataSet : D-Class, SUV #Category: D-Class Vehicles #FileID : AniVeh116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh116_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh116_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh116.par #BlueLink2 Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` , Vehicle animator data ENTER_PARSFILE Powertrain\4wd\4WD106.par`08-02-2011`16:42:55 #FullDataName Powertrain: 4-Wheel Drive`150 kW, 6-spd., 4.1 Ratio` OPT_PT 3 OPT_ENGINE_PITCH_REACTION(1) 0 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 OPT_DIFF_INTERNAL(3) 1 #RingCtrl5 1 #RingCtrl6 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 #CheckBox1 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(1) 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine110.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`150 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.2 #CheckBox0 0 OPT_THROTTLE_DELAY 0 ENTER_PARSFILE Powertrain\Fuel_Rate\FuelRate102.par`08-02-2011`16:42:52 #FullDataName Powertrain: Fuel Consumption Rate`150 kW Fuel Consumption` #RingCtrl0 CARPET #RadioCtrl0 0 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Fuel rate (kg/sec) #DiagramTwo0 *3D_DATA 26, 19 ! columns x rows FUEL_RATE_CARPET 0, 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28, 0.32, 0.36, 0.4, 0.44, 0.48, 0.52, 0.56, 0.6, 0.64, 0.68, 0.72, 0.76, 0.8, 0.84, 0.88, 0.92, 0.96, 1 600, 8e-05, 0.0002, 0.0003, 0.00032, 0.00034, 0.00037, 0.00039, 0.00041, 0.00043, 0.00046, 0.00048, 0.0005, 0.00052, 0.00055, 0.00057, 0.00059, 0.00061, 0.00064, 0.00066, 0.00068, 0.0007, 0.00073, 0.00075, 0.00077, 0.00079, 0.00082 800, 0.00013, 0.0002, 0.0004, 0.00059, 0.00071, 0.0008, 0.00083, 0.00085, 0.00086, 0.00087, 0.00088, 0.00089, 0.0009, 0.00091, 0.00092, 0.00093, 0.00094, 0.00096, 0.00097, 0.00098, 0.00099, 0.001, 0.00101, 0.00102, 0.00103, 0.00104 1000, 0.00016, 0.0002, 0.00039, 0.00062, 0.00079, 0.00091, 0.00099, 0.00104, 0.00107, 0.00108, 0.00109, 0.00111, 0.00112, 0.00113, 0.00114, 0.00115, 0.00117, 0.00118, 0.00119, 0.0012, 0.00121, 0.00123, 0.00124, 0.00125, 0.00126, 0.00127 1200, 0.00016, 0.00021, 0.00039, 0.00064, 0.00088, 0.00104, 0.00114, 0.00123, 0.00128, 0.00131, 0.00133, 0.00134, 0.00135, 0.00137, 0.00138, 0.0014, 0.00141, 0.00142, 0.00144, 0.00145, 0.00147, 0.00148, 0.00149, 0.00151, 0.00152, 0.00154 1400, 0.00017, 0.00023, 0.00039, 0.00066, 0.00091, 0.00113, 0.0013, 0.0014, 0.00148, 0.00153, 0.00156, 0.00158, 0.0016, 0.00161, 0.00163, 0.00165, 0.00167, 0.00168, 0.0017, 0.00172, 0.00174, 0.00175, 0.00177, 0.00179, 0.00181, 0.00182 1600, 0.0002, 0.00026, 0.0004, 0.00066, 0.00095, 0.00119, 0.00139, 0.00154, 0.00164, 0.00173, 0.00178, 0.00181, 0.00183, 0.00184, 0.00186, 0.00188, 0.0019, 0.00192, 0.00194, 0.00195, 0.00197, 0.00199, 0.00201, 0.00203, 0.00205, 0.00207 1800, 0.00021, 0.00028, 0.00039, 0.00067, 0.00095, 0.00124, 0.00147, 0.00166, 0.00178, 0.00189, 0.00195, 0.002, 0.00203, 0.00206, 0.00209, 0.00212, 0.00215, 0.00218, 0.00222, 0.00225, 0.00228, 0.00231, 0.00234, 0.00237, 0.0024, 0.00243 2000, 0.00023, 0.0003, 0.00038, 0.00065, 0.00096, 0.00129, 0.00156, 0.00178, 0.00195, 0.00207, 0.00215, 0.00221, 0.00227, 0.00231, 0.00234, 0.00238, 0.00241, 0.00245, 0.00249, 0.00252, 0.00256, 0.00259, 0.00263, 0.00267, 0.0027, 0.00274 2200, 0.00025, 0.00033, 0.00041, 0.00065, 0.00098, 0.0013, 0.00162, 0.00189, 0.00212, 0.00226, 0.00239, 0.00246, 0.00252, 0.00257, 0.00261, 0.00264, 0.00268, 0.00272, 0.00275, 0.00279, 0.00282, 0.00286, 0.0029, 0.00293, 0.00297, 0.003 2400, 0.00027, 0.00036, 0.00044, 0.00065, 0.00095, 0.00133, 0.00168, 0.00199, 0.00223, 0.0024, 0.00255, 0.00265, 0.00272, 0.00278, 0.00284, 0.0029, 0.00296, 0.00302, 0.00308, 0.00314, 0.00319, 0.00325, 0.00331, 0.00337, 0.00343, 0.00349 2800, 0.00033, 0.00039, 0.00046, 0.00065, 0.00097, 0.00134, 0.00174, 0.00207, 0.00239, 0.00265, 0.0028, 0.00296, 0.00307, 0.00313, 0.0032, 0.00326, 0.00331, 0.00336, 0.00342, 0.00347, 0.00352, 0.00357, 0.00363, 0.00368, 0.00373, 0.00379 3200, 0.00038, 0.00045, 0.00053, 0.00064, 0.00097, 0.00136, 0.00175, 0.00216, 0.00256, 0.00287, 0.0031, 0.00326, 0.00343, 0.00365, 0.00388, 0.0041, 0.00424, 0.00425, 0.00427, 0.00429, 0.0043, 0.00432, 0.00434, 0.00435, 0.00437, 0.00439 3600, 0.00043, 0.00052, 0.00061, 0.0007, 0.00095, 0.00137, 0.00179, 0.00221, 0.00272, 0.00315, 0.00347, 0.00384, 0.00423, 0.00463, 0.00487, 0.00495, 0.00502, 0.00509, 0.00513, 0.00514, 0.00516, 0.00517, 0.00519, 0.0052, 0.00521, 0.00523 4000, 0.00047, 0.00059, 0.00083, 0.00118, 0.00162, 0.0021, 0.00259, 0.00317, 0.00367, 0.00403, 0.00436, 0.00487, 0.00537, 0.00587, 0.00603, 0.00608, 0.00614, 0.0062, 0.00624, 0.00625, 0.00626, 0.00627, 0.00629, 0.0063, 0.00631, 0.00633 4400, 0.00051, 0.00064, 0.00085, 0.00122, 0.00165, 0.00218, 0.0027, 0.00333, 0.00392, 0.00443, 0.00477, 0.00514, 0.00568, 0.00621, 0.00675, 0.00703, 0.00709, 0.00715, 0.00721, 0.00726, 0.00731, 0.00732, 0.00733, 0.00735, 0.00736, 0.00738 4800, 0.00052, 0.00074, 0.00095, 0.00121, 0.00167, 0.00218, 0.00272, 0.00336, 0.00404, 0.00459, 0.00538, 0.0064, 0.00701, 0.00725, 0.0075, 0.00774, 0.00793, 0.00799, 0.00805, 0.00811, 0.00817, 0.00822, 0.00828, 0.00829, 0.0083, 0.00831 5200, 0.00059, 0.00078, 0.00098, 0.00117, 0.00164, 0.00216, 0.00272, 0.0034, 0.0041, 0.00505, 0.00633, 0.0069, 0.00747, 0.00779, 0.00807, 0.00835, 0.00863, 0.0088, 0.00886, 0.00891, 0.00897, 0.00903, 0.00909, 0.00914, 0.0092, 0.00926 5600, 0.00065, 0.00083, 0.001, 0.00119, 0.0016, 0.00212, 0.00273, 0.00356, 0.00462, 0.00551, 0.00638, 0.00704, 0.00762, 0.00803, 0.0083, 0.00857, 0.00885, 0.00912, 0.00925, 0.00931, 0.00937, 0.00943, 0.00949, 0.00955, 0.00961, 0.00967 5800, 0.00076, 0.0009, 0.00103, 0.00119, 0.00162, 0.00211, 0.00271, 0.00357, 0.0046, 0.00548, 0.00642, 0.00712, 0.00772, 0.00816, 0.00841, 0.00867, 0.00892, 0.00918, 0.0093, 0.00935, 0.0094, 0.00945, 0.00951, 0.00956, 0.00961, 0.00966 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Fuel Consumption Rate; 150 kW Fuel Consumption #Library : Powertrain: Fuel Consumption Rate #DataSet : 150 kW Fuel Consumption #Category: #FileID : FuelRate102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:52 #VehCode Fuel rate EXIT_PARSFILE Powertrain\Fuel_Rate\FuelRate102.par #BlueLink0 Powertrain: Fuel Consumption Rate`150 kW Fuel Consumption` ` , Fuel rate *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 24.75, 76.11, 101.37, 103.43, 104.6, 105.18, 105.38, 105.43, 105.46, 105.43 633, 29.7, 92.87, 139.66, 149.15, 150.67, 151.28, 151.5, 151.52, 151.52, 151.52 750, 0, 87.39, 148.02, 161.35, 164.95, 166.25, 166.73, 166.77, 166.77, 166.75 1107, -9.9, 70.62, 173.59, 198.66, 208.61, 212.02, 213.29, 213.4, 213.37, 213.29 1463, -14.85, 47.12, 167.31, 207.9, 221.15, 227.15, 230.09, 230.77, 231.22, 235.62 1820, -16.83, 25.74, 148.5, 211.6, 233.68, 242.29, 246.89, 248.14, 249.06, 255.42 2177, -20.17, 9.9, 117.65, 203.67, 237.6, 257.4, 260.37, 263.34, 266.31, 272.88 2533, -25.32, -6.41, 81.3, 182.08, 239.58, 267, 274.23, 279.24, 282.15, 287.1 2890, -30.14, -15.16, 56.41, 153.5, 233.12, 269.9, 285.22, 289.08, 295.02, 299.97 3247, -34.39, -22.06, 37.66, 122.49, 223.45, 267.3, 287.1, 295.02, 300.96, 306.9 3603, -38.57, -28.1, 23.48, 96.53, 201.04, 259.38, 288.09, 297, 303.93, 309.87 3960, -42.77, -33.71, 11.8, 76.42, 174.35, 248.62, 285.12, 296.01, 302.94, 306.9 4317, -47.21, -39.38, 0.28, 57.45, 150.24, 237.3, 280.17, 290.07, 297, 302.88 4673, -51.83, -45.01, -9.97, 41.19, 125.06, 220.31, 272.25, 282.15, 292.05, 297 5030, -56.74, -50.57, -19.08, 26.99, 102.65, 198.96, 262.35, 272.25, 282.15, 287.1 5387, -61.67, -56.24, -27.53, 14.45, 83.52, 176.58, 246.84, 256.41, 269.64, 272.49 5743, -67.19, -62.17, -35.72, 2.82, 66.2, 153.28, 221.41, 236.52, 243.61, 246.41 6100, -73.21, -68.41, -43.88, -8.16, 50.38, 130.66, 193.86, 207.92, 214.52, 217.05 6500, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19 6700, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 150 kW Engine #Library : Powertrain: Engine #DataSet : 150 kW Engine #Category: CS Engine Torque Curves #FileID : Engine110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine110.par #BlueLink0 Powertrain: Engine`150 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC103.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 150 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.00704273 0.1, 0.00704273 0.2, 0.00704273 0.3, 0.00704269 0.4, 0.00704199 0.5, 0.00703585 0.6, 0.00700014 0.7, 0.00684379 0.8, 0.00628652 0.9, 0.00458708 0.95, 0.00282599 0.99, 0.000673411 1.01, -0.000673411 1.05, -0.00282599 1.1, -0.00458708 1.2, -0.00628652 1.3, -0.00684379 1.4, -0.00700014 1.5, -0.00703585 1.6, -0.00704199 1.7, -0.00704269 1.8, -0.00704273 1.9, -0.00704273 2, -0.00704273 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 150 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 150 kW Engine #Category: CS Torque Converters #FileID : TC103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC103.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 150 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` #RingCtrl0 6 NGEARS 6 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.168 R_GEAR_TR(1) 3.538 R_GEAR_TR(2) 2.06 R_GEAR_TR(3) 1.404 R_GEAR_TR(4) 1.00 R_GEAR_TR(5) 0.713 R_GEAR_TR(6) 0.582 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 T_SHIFT 0.25 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift101.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 1-2 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 874 0.2, 874 0.8, 1653 1, 1653 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 699 0.4, 699 0.8, 1240 1, 1240 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 1-2 Shift #Category: 6-speed #FileID : Shift101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift101.par #BlueLink0 Powertrain: Shift Schedule`6-speed, 1-2 Shift` 6-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift102.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 2-3 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1282 0.2, 1282 0.8, 2840 1, 2840 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1026 0.4, 1026 0.8, 2130 1, 2130 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 2-3 Shift #Category: 6-speed #FileID : Shift102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift102.par #BlueLink1 Powertrain: Shift Schedule`6-speed, 2-3 Shift` 6-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift103.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 3-4 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 4167 1, 4167 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 3125 1, 3125 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 3-4 Shift #Category: 6-speed #FileID : Shift103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift103.par #BlueLink2 Powertrain: Shift Schedule`6-speed, 3-4 Shift` 6-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift104.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 4-5 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2525 0.2, 2525 0.8, 5850 1, 5850 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2020 0.4, 2020 0.8, 4388 1, 4388 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 4-5 Shift #Category: 6-speed #FileID : Shift104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift104.par #BlueLink3 Powertrain: Shift Schedule`6-speed, 4-5 Shift` 6-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift105.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 5-6 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 3093 0.2, 3093 0.8, 8205 1, 8205 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2474 0.4, 2474 0.8, 6154 1, 6154 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 5-6 Shift #Category: 6-speed #FileID : Shift105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift105.par #BlueLink4 Powertrain: Shift Schedule`6-speed, 5-6 Shift` 6-speed` , Shift schedule igear 6 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 6-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 6-Speed Transmission #Category: #FileID : Trans101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans101.par #BlueLink10 Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` ` , Transmission (Extended) IDIFF 3 ENTER_PARSFILE Powertrain\Centerdiff\XC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transfer Case`Full Time Viscous 50/50` #CheckBox0 0 LOCKED_XC_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_XC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_XC 1.00 R_EFF_F_XC 0.99 R_EFF_R_XC 0.99 R_REAR_XC 0.5 LOCKED_XC_DAMP 0.8 LOCKED_XC_K 80 R_GEAR_DIFF 1.00 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 R_REAR_BIAS 0.5 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 LOG_ENTRY Used Dataset: Powertrain: Transfer Case; Full Time Viscous 50/50 #Library : Powertrain: Transfer Case #DataSet : Full Time Viscous 50/50 #Category: #FileID : XC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transfer case EXIT_PARSFILE Powertrain\Centerdiff\XC101.par #BlueLink3 Powertrain: Transfer Case`Full Time Viscous 50/50` ` , Transfer case IDIFF 1 ENTER_PARSFILE Powertrain\Frontdiff\F_Diff103.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front Differential`Open - Gear Ratio 4.1`CS Front Differentials #CheckBox0 0 LOCKED_FD_OPT 0 #RingCtrl0 CONSTANT OPT_LOCKED_DIFF 0 M_DIFF_VISC_CONSTANT 0 #RadioCtrl0 0 M_DIFF_FD_CONSTANT 0 R_GEAR_FD 4.1 R_EFF_F_FD 0.99 R_EFF_R_FD 0.99 LOCKED_FD_DAMP 0.8 LOCKED_FD_K 80 IDS_F 0.013 IHS_LF 0.009 IHS_RF 0.009 *SCALAR 0 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Front Differential; { CS Front Differentials } Open - Gear Ratio 4.1 #Library : Powertrain: Front Differential #DataSet : Open - Gear Ratio 4.1 #Category: CS Front Differentials #FileID : F_Diff103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Front differential EXIT_PARSFILE Powertrain\Frontdiff\F_Diff103.par #BlueLink4 Powertrain: Front Differential`Open - Gear Ratio 4.1` CS Front Differentials` , Differential front IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff103.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Open - Gear Ratio 4.1`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 CONSTANT OPT_LOCKED_DIFF 0 M_DIFF_VISC_CONSTANT 0 #RadioCtrl0 0 M_DIFF_RD_CONSTANT 0 R_GEAR_RD 4.1 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 *SCALAR 0 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Open - Gear Ratio 4.1 #Library : Powertrain: Rear Differential #DataSet : Open - Gear Ratio 4.1 #Category: CS Rear Differentials #FileID : R_Diff103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff103.par #BlueLink5 Powertrain: Rear Differential`Open - Gear Ratio 4.1` CS Rear Differentials` , Differential rear LOG_ENTRY Used Dataset: Powertrain: 4-Wheel Drive; 150 kW, 6-spd., 4.1 Ratio #Library : Powertrain: 4-Wheel Drive #DataSet : 150 kW, 6-spd., 4.1 Ratio #Category: #FileID : 4WD106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:55 #VehCode 4WD ENTRY_NOTEFILE Powertrain\4wd\4WD106_note.txt Generic 150 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 150 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\4wd\4WD106_note.txt EXIT_PARSFILE Powertrain\4wd\4WD106.par #BlueLink5 Powertrain: 4-Wheel Drive`150 kW, 6-spd., 4.1 Ratio` ` , All-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W113.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`D-Class, SUV w/o ABS`CS D-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 #RingCtrl0 0 #RingCtrl1 0 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq101.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`300 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 300 MY_BRAKE_COEFFICIENT 300 LOG_ENTRY Used Dataset: Brakes: Torque; 300 N-m/MPa #Library : Brakes: Torque #DataSet : 300 N-m/MPa #Category: #FileID : BrkTrq101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq101.par #BlueLink0 Brakes: Torque`300 N-m/MPa` ` , Left front ENTER_PARSFILE Brakes\Proportioning\BrkProp101.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity Gain` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1 PBK_DL_COEFFICIENT 1 LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity Gain #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity Gain #Category: #FileID : BrkProp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve EXIT_PARSFILE Brakes\Proportioning\BrkProp101.par #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 0 iside 2 #BlueLink1 Brakes: Torque`300 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq104.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`150 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 150 MY_BRAKE_COEFFICIENT 150 LOG_ENTRY Used Dataset: Brakes: Torque; 150 N-m/MPa #Library : Brakes: Torque #DataSet : 150 N-m/MPa #Category: #FileID : BrkTrq104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq104.par #BlueLink2 Brakes: Torque`150 N-m/MPa` ` , Left rear ENTER_PARSFILE Brakes\Proportioning\BrkProp104.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 PBK_DL_TABLE LINEAR 0, 0 2, 2 3, 2.3 ENDTABLE LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity until 2.0MPa then 30% #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity until 2.0MPa then 30% #Category: #FileID : BrkProp104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve ENTRY_NOTEFILE Brakes\Proportioning\BrkProp104_note.txt Brake systems without ABS control typically have a propotioning valve that reduces pressure gains on the rear wheel when a moderate pressure is reached, to avoid locking the rear wheels with high braking and associated load transfer. They are also used on some trucks with large ranges in load. EXIT_NOTEFILE Brakes\Proportioning\BrkProp104_note.txt EXIT_PARSFILE Brakes\Proportioning\BrkProp104.par #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 0 iside 2 #BlueLink3 Brakes: Torque`150 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS D-Class } D-Class, SUV w/o ABS #Library : Brakes: Four-Wheel System #DataSet : D-Class, SUV w/o ABS #Category: CS D-Class #FileID : Brk4W113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W113.par #BlueLink6 Brakes: Four-Wheel System`D-Class, SUV w/o ABS` CS D-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2111.par`08-02-2011`16:42:43 #FullDataName Steering`D-Class, SUV: Power, Recirc. Ball`CS D-Class *I_COL 0.02 *I_GEAR_IN 0.00015 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 77.0 *L2_LKPO 0 *R1_LKPO 77.0 *R2_LKPO 0 *L1_AKPI 12.5 *L2_AKPI 0 *R1_AKPI 12.5 *R2_AKPI 0 *L1_ACAST 9.5 *L2_ACAST 0 *R1_ACAST 9.5 *R2_ACAST 0 *L1_XKPO 5.0 *L2_XKPO 0 *R1_XKPO 5.0 *R2_XKPO 0 *RSW_F 20 *D_GR_F 4 *D_RACK_F 30 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 2 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.00015 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 77.0 A_KPI 12.5 A_CASTER 9.5 X_KPO 5.0 iside 2 L_KPO 77.0 A_KPI 12.5 A_CASTER 9.5 X_KPO 5.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 0 GEAR_ROT_COEFFICIENT 0.02 ENTER_PARSFILE Steering\Compliance\StrCmp101.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`No Steer Compliance` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 STEER_COMP_CONSTANT 0 LOG_ENTRY Used Dataset: Steering System: Compliance; No Steer Compliance #Library : Steering System: Compliance #DataSet : No Steer Compliance #Category: #FileID : StrCmp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp101.par #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 0 GEAR_ROT_COEFFICIENT 1/20 D_GEAR 4 TBAR 2 ENTER_PARSFILE Steering\Kinematics2\StrKinAx102.par`08-02-2011`16:42:41 #FullDataName Steering System: Kinematics for 2 Wheels (Recirc. Ball)`D-Class, SUV Recirc. Ball Kinematics`D-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 STEER_KIN_TABLE SPLINE -30.6, -35.73321668 -30.294, -35.33074603 -29.988, -34.92888705 -29.682, -34.52765493 -29.376, -34.12706463 -29.07, -33.72713088 -28.764, -33.32786819 -28.458, -32.92929081 -28.152, -32.5314128 -27.846, -32.13424794 -27.54, -31.73780979 -27.234, -31.34211166 -26.928, -30.9471666 -26.622, -30.55298743 -26.316, -30.1595867 -26.01, -29.76697671 -25.704, -29.37516952 -25.398, -28.98417692 -25.092, -28.59401042 -24.786, -28.2046813 -24.48, -27.81620057 -24.174, -27.42857896 -23.868, -27.04182696 -23.562, -26.65595478 -23.256, -26.27097236 -22.95, -25.88688939 -22.644, -25.50371529 -22.338, -25.1214592 -22.032, -24.74013 -21.726, -24.35973631 -21.42, -23.98028649 -21.114, -23.60178863 -20.808, -23.22425053 -20.502, -22.84767977 -20.196, -22.47208363 -19.89, -22.09746916 -19.584, -21.72384311 -19.278, -21.35121202 -18.972, -20.97958212 -18.666, -20.60895943 -18.36, -20.23934968 -18.054, -19.87075836 -17.748, -19.50319072 -17.442, -19.13665174 -17.136, -18.77114616 -16.83, -18.40667849 -16.524, -18.04325296 -16.218, -17.6808736 -15.912, -17.31954418 -15.606, -16.95926823 -15.3, -16.60004905 -14.994, -16.24188972 -14.688, -15.88479308 -14.382, -15.52876174 -14.076, -15.17379809 -13.77, -14.81990432 -13.464, -14.46708236 -13.158, -14.11533397 -12.852, -13.76466066 -12.546, -13.41506376 -12.24, -13.06654437 -11.934, -12.7191034 -11.628, -12.37274156 -11.322, -12.02745937 -11.016, -11.68325713 -10.71, -11.34013497 -10.404, -10.99809284 -10.098, -10.65713047 -9.792, -10.31724746 -9.486, -9.97844318 -9.18, -9.640716858 -8.874, -9.304067538 -8.568, -8.968494097 -8.262, -8.633995246 -7.956, -8.300569533 -7.65, -7.968215349 -7.344, -7.636930926 -7.038, -7.306714344 -6.732, -6.977563533 -6.426, -6.649476276 -6.12, -6.322450212 -5.814, -5.996482841 -5.508, -5.671571523 -5.202, -5.347713486 -4.896, -5.024905823 -4.59, -4.703145503 -4.284, -4.382429366 -3.978, -4.062754131 -3.672, -3.744116397 -3.366, -3.426512647 -3.06, -3.109939249 -2.754, -2.794392461 -2.448, -2.479868432 -2.142, -2.166363208 -1.836, -1.853872728 -1.53, -1.542392837 -1.224, -1.231919277 -0.918, -0.9224477 -0.612, -0.613973663 -0.306, -0.306492635 2.20934e-14, 0 0.306, 0.305508946 0.612, 0.610038985 0.918, 0.913594981 1.224, 1.216181874 1.53, 1.517804678 1.836, 1.818468479 2.142, 2.118178435 2.448, 2.416939769 2.754, 2.714757771 3.06, 3.011637794 3.366, 3.307585251 3.672, 3.602605617 3.978, 3.89670442 4.284, 4.189887245 4.59, 4.482159732 4.896, 4.773527567 5.202, 5.06399649 5.508, 5.353572286 5.814, 5.642260785 6.12, 5.930067861 6.426, 6.216999431 6.732, 6.503061451 7.038, 6.788259915 7.344, 7.072600856 7.65, 7.356090338 7.956, 7.638734464 8.262, 7.920539366 8.568, 8.201511205 8.874, 8.481656175 9.18, 8.760980495 9.486, 9.039490412 9.792, 9.317192196 10.098, 9.594092142 10.404, 9.870196567 10.71, 10.14551181 11.016, 10.42004423 11.322, 10.69380019 11.628, 10.96678611 11.934, 11.23900837 12.24, 11.51047342 12.546, 11.78118769 12.852, 12.05115763 13.158, 12.32038971 13.464, 12.5888904 13.77, 12.8566662 14.076, 13.12372358 14.382, 13.39006906 14.688, 13.65570916 14.994, 13.92065038 15.3, 14.18489925 15.606, 14.44846229 15.912, 14.71134605 16.218, 14.97355705 16.524, 15.23510184 16.83, 15.49598695 17.136, 15.75621894 17.442, 16.01580433 17.748, 16.27474968 18.054, 16.53306152 18.36, 16.7907464 18.666, 17.04781086 18.972, 17.30426143 19.278, 17.56010466 19.584, 17.81534707 19.89, 18.06999519 20.196, 18.32405554 20.502, 18.57753465 20.808, 18.83043902 21.114, 19.08277518 21.42, 19.33454961 21.726, 19.58576883 22.032, 19.83643931 22.338, 20.08656755 22.644, 20.33616003 22.95, 20.5852232 23.256, 20.83376354 23.562, 21.08178749 23.868, 21.32930151 24.174, 21.57631204 24.48, 21.82282549 24.786, 22.06884829 25.092, 22.31438686 25.398, 22.55944759 25.704, 22.80403687 26.01, 23.0481611 26.316, 23.29182664 26.622, 23.53503986 26.928, 23.7778071 27.234, 24.02013472 27.54, 24.26202905 27.846, 24.50349641 28.152, 24.74454311 28.458, 24.98517546 28.764, 25.22539975 29.07, 25.46522226 29.376, 25.70464927 29.682, 25.94368703 29.988, 26.18234179 30.294, 26.4206198 30.6, 26.65852728 ENDTABLE iside 1 #DiagramOne1 STEER_KIN_TABLE SPLINE -30.6, -26.65852728 -30.294, -26.4206198 -29.988, -26.18234179 -29.682, -25.94368703 -29.376, -25.70464927 -29.07, -25.46522226 -28.764, -25.22539975 -28.458, -24.98517546 -28.152, -24.74454311 -27.846, -24.50349641 -27.54, -24.26202905 -27.234, -24.02013472 -26.928, -23.7778071 -26.622, -23.53503986 -26.316, -23.29182664 -26.01, -23.0481611 -25.704, -22.80403687 -25.398, -22.55944759 -25.092, -22.31438686 -24.786, -22.06884829 -24.48, -21.82282549 -24.174, -21.57631204 -23.868, -21.32930151 -23.562, -21.08178749 -23.256, -20.83376354 -22.95, -20.5852232 -22.644, -20.33616003 -22.338, -20.08656755 -22.032, -19.83643931 -21.726, -19.58576883 -21.42, -19.33454961 -21.114, -19.08277518 -20.808, -18.83043902 -20.502, -18.57753465 -20.196, -18.32405554 -19.89, -18.06999519 -19.584, -17.81534707 -19.278, -17.56010466 -18.972, -17.30426143 -18.666, -17.04781086 -18.36, -16.7907464 -18.054, -16.53306152 -17.748, -16.27474968 -17.442, -16.01580433 -17.136, -15.75621894 -16.83, -15.49598695 -16.524, -15.23510184 -16.218, -14.97355705 -15.912, -14.71134605 -15.606, -14.44846229 -15.3, -14.18489925 -14.994, -13.92065038 -14.688, -13.65570916 -14.382, -13.39006906 -14.076, -13.12372358 -13.77, -12.8566662 -13.464, -12.5888904 -13.158, -12.32038971 -12.852, -12.05115763 -12.546, -11.78118769 -12.24, -11.51047342 -11.934, -11.23900837 -11.628, -10.96678611 -11.322, -10.69380019 -11.016, -10.42004423 -10.71, -10.14551181 -10.404, -9.870196567 -10.098, -9.594092142 -9.792, -9.317192196 -9.486, -9.039490412 -9.18, -8.760980495 -8.874, -8.481656175 -8.568, -8.201511205 -8.262, -7.920539366 -7.956, -7.638734464 -7.65, -7.356090338 -7.344, -7.072600856 -7.038, -6.788259915 -6.732, -6.503061451 -6.426, -6.216999431 -6.12, -5.930067861 -5.814, -5.642260785 -5.508, -5.353572286 -5.202, -5.06399649 -4.896, -4.773527567 -4.59, -4.482159732 -4.284, -4.189887245 -3.978, -3.89670442 -3.672, -3.602605617 -3.366, -3.307585251 -3.06, -3.011637794 -2.754, -2.714757771 -2.448, -2.416939769 -2.142, -2.118178435 -1.836, -1.818468479 -1.53, -1.517804678 -1.224, -1.216181874 -0.918, -0.913594981 -0.612, -0.610038985 -0.306, -0.305508946 2.20934e-14, 0 0.306, 0.306492635 0.612, 0.613973663 0.918, 0.9224477 1.224, 1.231919277 1.53, 1.542392837 1.836, 1.853872728 2.142, 2.166363208 2.448, 2.479868432 2.754, 2.794392461 3.06, 3.109939249 3.366, 3.426512647 3.672, 3.744116397 3.978, 4.062754131 4.284, 4.382429366 4.59, 4.703145503 4.896, 5.024905823 5.202, 5.347713486 5.508, 5.671571523 5.814, 5.996482841 6.12, 6.322450212 6.426, 6.649476276 6.732, 6.977563533 7.038, 7.306714344 7.344, 7.636930926 7.65, 7.968215349 7.956, 8.300569533 8.262, 8.633995246 8.568, 8.968494097 8.874, 9.304067538 9.18, 9.640716858 9.486, 9.97844318 9.792, 10.31724746 10.098, 10.65713047 10.404, 10.99809284 10.71, 11.34013497 11.016, 11.68325713 11.322, 12.02745937 11.628, 12.37274156 11.934, 12.7191034 12.24, 13.06654437 12.546, 13.41506376 12.852, 13.76466066 13.158, 14.11533397 13.464, 14.46708236 13.77, 14.81990432 14.076, 15.17379809 14.382, 15.52876174 14.688, 15.88479308 14.994, 16.24188972 15.3, 16.60004905 15.606, 16.95926823 15.912, 17.31954418 16.218, 17.6808736 16.524, 18.04325296 16.83, 18.40667849 17.136, 18.77114616 17.442, 19.13665174 17.748, 19.50319072 18.054, 19.87075836 18.36, 20.23934968 18.666, 20.60895943 18.972, 20.97958212 19.278, 21.35121202 19.584, 21.72384311 19.89, 22.09746916 20.196, 22.47208363 20.502, 22.84767977 20.808, 23.22425053 21.114, 23.60178863 21.42, 23.98028649 21.726, 24.35973631 22.032, 24.74013 22.338, 25.1214592 22.644, 25.50371529 22.95, 25.88688939 23.256, 26.27097236 23.562, 26.65595478 23.868, 27.04182696 24.174, 27.42857896 24.48, 27.81620057 24.786, 28.2046813 25.092, 28.59401042 25.398, 28.98417692 25.704, 29.37516952 26.01, 29.76697671 26.316, 30.1595867 26.622, 30.55298743 26.928, 30.9471666 27.234, 31.34211166 27.54, 31.73780979 27.846, 32.13424794 28.152, 32.5314128 28.458, 32.92929081 28.764, 33.32786819 29.07, 33.72713088 29.376, 34.12706463 29.682, 34.52765493 29.988, 34.92888705 30.294, 35.33074603 30.6, 35.73321668 ENDTABLE #RadioCtrl0 1 #RadioCtrl1 1 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Recirc. Ball); { D-Class } D-Class, SUV Recirc. Ball Kinematics #Library : Steering System: Kinematics for 2 Wheels (Recirc. Ball) #DataSet : D-Class, SUV Recirc. Ball Kinematics #Category: D-Class #FileID : StrKinAx102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:41 #VehCode Steer kinematics ENTRY_NOTEFILE Steering\Kinematics2\StrKinAx102_note.txt D-Class SUV Recirculating Ball Kinematics data screen with 11 rows per wheel and Function Type: Spline interpolation and extrapolation. EXIT_NOTEFILE Steering\Kinematics2\StrKinAx102_note.txt EXIT_PARSFILE Steering\Kinematics2\StrKinAx102.par #BlueLink8 Steering System: Kinematics for 2 Wheels (Recirc. Ball)`D-Class, SUV Recirc. Ball Kinematics` D-Class` , Pitman arm to front wheels ENTER_PARSFILE Steering\Str_TqBoost\TqBoost101.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Torque`200 N-m` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 TC_BOOST 2 *SCALAR 200 M_BOOST_G_COEFFICIENT 200 LOG_ENTRY Used Dataset: Steering: Power Assist Torque; 200 N-m #Library : Steering: Power Assist Torque #DataSet : 200 N-m #Category: #FileID : TqBoost101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist torque EXIT_PARSFILE Steering\Str_TqBoost\TqBoost101.par #BlueLink17 Steering: Power Assist Torque`200 N-m` ` , Front boost torque ENTER_PARSFILE Steering\Compliance\StrCmp105.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`0.002 deg/N-m` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 0.002 STEER_COMP_COEFFICIENT 0.002 LOG_ENTRY Used Dataset: Steering System: Compliance; 0.002 deg/N-m #Library : Steering System: Compliance #DataSet : 0.002 deg/N-m #Category: #FileID : StrCmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp105.par #BlueLink13 Steering System: Compliance`0.002 deg/N-m` ` , Front compliance ENTER_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par`08-02-2011`16:42:40 #FullDataName Steering: Parking Torque for 2 Wheels`Zero` #RingCtrl0 CONSTANT #RingCtrl1 CONSTANT #RadioCtrl0 0 #RadioCtrl1 0 *A_MZ_BETA_R 0.1 *A_MZ_BETA_L 0.1 *SCALAR 0 *SCALAR2 0 iside 2 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 iside 1 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 LOG_ENTRY Used Dataset: Steering: Parking Torque for 2 Wheels; Zero #Library : Steering: Parking Torque for 2 Wheels #DataSet : Zero #Category: #FileID : TqPkAx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Parking Torque EXIT_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS D-Class } D-Class, SUV: Power, Recirc. Ball #Library : Steering #DataSet : D-Class, SUV: Power, Recirc. Ball #Category: CS D-Class #FileID : StrSys2111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2111_note.txt Steering for a vehicle with Wheelbase = 2600 mm Front Track = 1565 mm EXIT_NOTEFILE Steering\System2\StrSys2111_note.txt EXIT_PARSFILE Steering\System2\StrSys2111.par #BlueLink7 Steering`D-Class, SUV: Power, Recirc. Ball` CS D-Class` , Steering system *IMAGE_LINK Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS D-Class } D-Class, SUV LEO-defined #Library : Vehicle: Assembly #DataSet : D-Class, SUV LEO-defined #Category: CS D-Class #FileID : Vehicle165 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-23-2019 18:41:30 #VehCode Ind_SA EXIT_PARSFILE Vehicles\Assembly\Vehicle165.par #BlueLink2 Vehicle: Assembly`D-Class, SUV LEO-defined` CS D-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc175.par`09-03-2019`18:53:00 #FullDataName Procedures`chapt4_MPC_EM_PathTracking`BOOK_MPC_Procedures #CheckBox0 1 OPT_INIT_CONFIG 1 #CheckBox1 1 OPT_INIT_ROAD 1 #CheckBox2 1 OPT_INIT_SPEED 1 #CheckBox3 1 #RingCtrl0 1 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 *SPEED 65 TSTOP 40 TSTART 0 SSTART 0 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 1 OPT_DIRECTION 1 Opt_SC 3 SPEED_STATION_CONSTANT 65 ENTER_PARSFILE Control\Driver\Driver122.par`09-03-2019`18:42:06 #FullDataName Control: Steering by the Closed-loop Driver Model`2 m Right, 1.5 sec. Preview`Constant Position #RingCtrl0 0 #RingCtrl1 CONSTANT LTARG_CONSTANT -2.0 #RadioCtrl0 0 AV_SW_MAX_DM 1200 TLAG_DM 0 A_SW_MAX_DM 720 *TPREV 1.5 *SCALAR -2.0 VLOW_DRIVER 20 #CheckBox0 0 OPT_DRIVER_MODEL 1 #CheckBox1 0 CREATE_PATH_OBJ off TPREV_CONSTANT 1.5 LOG_ENTRY Used Dataset: Control: Steering by the Closed-loop Driver Model; { Constant Position } 2 m Right, 1.5 sec. Preview #Library : Control: Steering by the Closed-loop Driver Model #DataSet : 2 m Right, 1.5 sec. Preview #Category: Constant Position #FileID : Driver122 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-03-2019 18:42:06 #VehCode Driver path follower EXIT_PARSFILE Control\Driver\Driver122.par #BlueLink27 Control: Steering by the Closed-loop Driver Model`2 m Right, 1.5 sec. Preview` Constant Position` , Steering ENTER_PARSFILE Control\Braking\ConBrk101.par`08-02-2011`16:43:32 #FullDataName Control: Braking (Open Loop)`No Open-Loop Braking Pressure` #RingCtrl0 CONSTANT #RadioCtrl0 0 OPT_VMIN -1 *SCALAR 0 PBK_CON_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Braking (Open Loop); No Open-Loop Braking Pressure #Library : Control: Braking (Open Loop) #DataSet : No Open-Loop Braking Pressure #Category: #FileID : ConBrk101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:32 #VehCode Brake control EXIT_PARSFILE Control\Braking\ConBrk101.par #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Gear_at\GearAT101.par`08-02-2011`16:43:31 #FullDataName Control: Shifting (Closed Loop)`AT All Gears` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR NGEARS MODE_TRANS_CONSTANT NGEARS LOG_ENTRY Used Dataset: Control: Shifting (Closed Loop); AT All Gears #Library : Control: Shifting (Closed Loop) #DataSet : AT All Gears #Category: #FileID : GearAT101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:31 #VehCode Closed-loop shift control ENTRY_NOTEFILE Control\Gear_at\GearAT101_note.txt NGEARS is the internal symbol for the number of gears in a transmission. By setting the Mode to NGEARS, CarSim is automatically told to use all of the transmission gears. EXIT_NOTEFILE Control\Gear_at\GearAT101_note.txt EXIT_PARSFILE Control\Gear_at\GearAT101.par #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow ENTER_PARSFILE Roads\3D_Road\Road135.par`09-03-2019`18:38:03 #FullDataName Road: 3D Surface (All Properties)`Alt 3 from FHWA -LEO Flat`Scenic Roads OPT_ROAD 1 iroad 1 ! obsolete March 2011 idz_road 1 RR_SURF 1 DZ_SHADOW 0.05 L_CAMERA_FRONT 0.5 L_CAMERA_REAR 0.5 ENTER_PARSFILE Roads\Center_XY\RoadXY103.par`08-02-2011`16:43:06 #FullDataName Road: X-Y Coordinates of Centerline`Alt 3 Road from FHWA`FHWA SPATH 0 #CheckBox0 0 OPT_ROAD_LOOP 0 #RadioCtrl0 0 OPT_ROAD 1 #DiagramOne0 YIN_TABLE 0, 0, 0 4.352, -2.462, 5.00013479818 8.704, -4.924, 10.0002695964 13.055, -7.386, 14.9995340423 17.407, -9.848, 19.9996688404 21.759, -12.311, 25.0002961011 26.111, -14.773, 30.0004308993 30.462, -17.235, 34.9996953452 34.814, -19.697, 39.9998301434 39.166, -22.159, 44.9999649415 43.518, -24.621, 50.0000997397 47.87, -27.083, 55.0002345379 52.221, -29.545, 59.9994989838 56.573, -32.008, 65.0001262445 60.925, -34.47, 70.0002610426 65.277, -36.932, 75.0003958408 69.628, -39.394, 79.9996602867 73.98, -41.856, 84.9997950849 78.332, -44.318, 89.9999298831 82.684, -46.78, 95.0000646813 87.036, -49.242, 100.000199479 91.387, -51.704, 104.999463925 95.739, -54.167, 110.000091186 100.091, -56.629, 115.000225984 104.443, -59.091, 120.000360782 108.794, -61.553, 124.999625228 113.146, -64.015, 129.999760026 117.498, -66.477, 134.999894825 121.85, -68.939, 140.000029623 126.202, -71.401, 145.000164421 130.553, -73.864, 149.999921415 134.905, -76.326, 155.000056213 139.257, -78.788, 160.000191011 143.609, -81.25, 165.00032581 147.96, -83.712, 169.999590256 152.312, -86.174, 174.999725054 156.664, -88.636, 179.999859852 161.016, -91.098, 184.99999465 165.368, -93.561, 190.000621911 169.719, -96.023, 194.999886357 174.071, -98.485, 200.000021155 178.423, -100.947, 205.000155953 182.775, -103.409, 210.000290751 187.126, -105.871, 214.999555197 191.478, -108.333, 219.999689995 195.83, -110.795, 224.999824793 200.182, -113.257, 229.999959592 204.534, -115.72, 235.000586852 208.885, -118.182, 239.999851298 213.237, -120.644, 244.999986096 217.589, -123.106, 250.000120895 221.941, -125.568, 255.000255693 226.292, -128.03, 259.999520139 230.644, -130.492, 264.999654937 234.996, -132.954, 269.999789735 239.348, -135.417, 275.000416996 243.7, -137.879, 280.000551794 248.057, -140.33, 284.99963671 252.478, -142.667, 290.000317664 256.971, -144.859, 294.999508898 261.533, -146.906, 299.999714194 266.158, -148.804, 304.999017045 270.842, -150.552, 309.998553024 275.581, -152.148, 314.999086695 280.368, -153.591, 319.99884849 285.199, -154.878, 324.998341464 290.069, -156.009, 329.997947549 294.973, -156.982, 334.997542032 299.906, -157.797, 339.99741343 304.863, -158.452, 344.99750083 309.838, -158.946, 349.996966901 314.827, -159.28, 354.997134598 319.824, -159.453, 359.997128398 324.823, -159.465, 364.996142801 329.821, -159.316, 369.996363296 334.811, -159.005, 374.996045386 339.789, -158.534, 379.996277881 344.748, -157.902, 384.995388302 349.685, -157.111, 389.995353302 354.594, -156.16, 394.995621494 359.469, -155.053, 399.994728815 364.309, -153.795, 404.995545148 369.139, -152.501, 409.995878737 373.968, -151.207, 414.995246397 378.798, -149.913, 419.995579986 383.627, -148.619, 424.994947646 388.457, -147.324, 429.995540111 393.287, -146.03, 434.9958737 398.116, -144.736, 439.99524136 402.946, -143.442, 444.995574949 407.776, -142.148, 449.995908537 412.605, -140.854, 454.995276197 417.435, -139.56, 459.995609786 422.264, -138.266, 464.994977446 427.094, -136.971, 469.995569911 431.924, -135.677, 474.9959035 436.753, -134.383, 479.99527116 441.583, -133.089, 484.995604749 446.413, -131.795, 489.995938338 451.242, -130.501, 494.995305998 456.072, -129.207, 499.995639587 460.901, -127.913, 504.995007247 465.731, -126.618, 509.995599712 470.561, -125.324, 514.995933301 475.39, -124.03, 519.995300961 480.22, -122.736, 524.995634549 485.049, -121.442, 529.995002209 489.879, -120.148, 534.995335798 494.709, -118.854, 539.995669387 499.538, -117.56, 544.995037047 504.386, -116.333, 549.995900273 509.271, -115.268, 554.995645266 514.188, -114.366, 559.994694476 519.133, -113.629, 564.994313861 524.1, -113.057, 569.994141158 529.084, -112.651, 574.994650332 534.078, -112.411, 579.994413927 539.077, -112.338, 584.993946905 544.076, -112.431, 589.993811903 549.069, -112.691, 594.993576798 554.05, -113.118, 599.992845744 559.015, -113.709, 604.992896344 563.957, -114.467, 609.99268914 568.871, -115.388, 614.992252821 573.752, -116.473, 619.992391419 578.594, -117.719, 624.992139412 583.391, -119.127, 629.991506672 588.139, -120.693, 634.991092655 592.833, -122.417, 639.991673821 597.466, -124.296, 644.9912068 602.034, -126.329, 649.991178099 606.531, -128.513, 654.990464549 610.954, -130.845, 659.990579847 615.296, -133.324, 664.990420345 619.553, -135.946, 669.990113635 623.72, -138.708, 674.989366879 627.793, -141.608, 679.989299779 631.767, -144.642, 684.989082974 635.638, -147.806, 689.988636654 639.402, -151.098, 694.98913263 643.053, -154.513, 699.988335166 646.588, -158.049, 704.988287266 650.004, -161.7, 709.988172965 653.296, -165.463, 714.987916258 656.461, -169.333, 719.987328724 659.496, -173.307, 724.987718808 662.396, -177.379, 729.986837131 665.24, -181.491, 734.986525121 668.084, -185.604, 739.987035595 670.928, -189.716, 744.986723585 673.772, -193.829, 749.987234059 676.616, -197.941, 754.986922049 679.459, -202.053, 759.986041272 682.303, -206.166, 764.986551746 685.147, -210.278, 769.986239736 687.991, -214.391, 774.98675021 690.835, -218.503, 779.9864382 693.679, -222.616, 784.986948674 696.523, -226.728, 789.986636664 699.367, -230.84, 794.986324655 702.211, -234.953, 799.986835129 705.055, -239.065, 804.986523119 707.899, -243.178, 809.987033593 710.743, -247.29, 814.986721583 713.647, -251.36, 819.986533179 716.71, -255.312, 824.986560479 719.928, -259.138, 829.985940441 723.297, -262.832, 834.985520123 726.811, -266.388, 839.984853279 730.464, -269.802, 844.984833779 734.251, -273.066, 849.984340254 738.166, -276.176, 854.984272754 742.201, -279.128, 859.983825634 746.352, -281.915, 864.983642631 750.61, -284.535, 869.983139005 754.97, -286.982, 874.982879899 759.425, -289.252, 879.982872399 763.966, -291.343, 884.982168549 768.588, -293.251, 889.982503338 773.282, -294.972, 894.982051017 778.041, -296.504, 899.981561493 782.857, -297.844, 904.980506982 787.724, -298.991, 909.980836771 792.632, -299.942, 914.98012322 797.575, -300.697, 919.98045061 802.543, -301.253, 924.979466513 807.53, -301.61, 929.979228307 812.527, -301.767, 934.978694079 817.527, -301.724, 939.978878975 822.521, -301.481, 944.978787474 827.501, -301.039, 949.978363856 832.459, -300.398, 954.977628302 837.388, -299.559, 959.977524501 842.279, -298.524, 964.976835054 847.125, -297.294, 969.976496642 851.918, -295.871, 974.976274437 856.65, -294.258, 979.975633696 861.314, -292.457, 984.975283384 865.905, -290.475, 989.975843853 870.473, -288.442, 994.975815152 875.041, -286.408, 999.976193138 ENDTABLE LOG_ENTRY Used Dataset: Road: X-Y Coordinates of Centerline; { FHWA } Alt 3 Road from FHWA #Library : Road: X-Y Coordinates of Centerline #DataSet : Alt 3 Road from FHWA #Category: FHWA #FileID : RoadXY103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:06 #VehCode Horizontal (X-Y) table EXIT_PARSFILE Roads\Center_XY\RoadXY103.par #BlueLink0 Road: X-Y Coordinates of Centerline`Alt 3 Road from FHWA` FHWA` , Centerline geometry ENTER_PARSFILE Roads\Center_Z\RoadZ101.par`08-02-2011`16:43:13 #FullDataName Road: Centerline Elevation`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_ZS_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Centerline Elevation; Flat #Library : Road: Centerline Elevation #DataSet : Flat #Category: #FileID : RoadZ101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Centerline elevation: Z vs S EXIT_PARSFILE Roads\Center_Z\RoadZ101.par #BlueLink1 Road: Centerline Elevation`Flat` ` , Centerline elevation ENTER_PARSFILE Roads\dZ_Map\RdElMap101.par`08-02-2011`16:43:11 #FullDataName Road: Off-Center Elevation Map, S-L Grid`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_DZ_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Off-Center Elevation Map, S-L Grid; Flat #Library : Road: Off-Center Elevation Map, S-L Grid #DataSet : Flat #Category: #FileID : RdElMap101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:11 #VehCode dZ via S-L grid EXIT_PARSFILE Roads\dZ_Map\RdElMap101.par #BlueLink2 Road: Off-Center Elevation Map, S-L Grid`Flat` ` , Off-center elevation 1 ENTER_PARSFILE Roads\Friction\RdFric101.par`08-02-2011`16:43:12 #FullDataName Road: Friction Map, S-L Grid`0.85`Constant Mu OPT_ROAD 1 #RingCtrl0 CONSTANT MU_ROAD_CONSTANT 0.85 #RadioCtrl0 0 *SCALAR 0.85 LOG_ENTRY Used Dataset: Road: Friction Map, S-L Grid; { Constant Mu } 0.85 #Library : Road: Friction Map, S-L Grid #DataSet : 0.85 #Category: Constant Mu #FileID : RdFric101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:12 #VehCode Mu via S-L grid EXIT_PARSFILE Roads\Friction\RdFric101.par #BlueLink3 Road: Friction Map, S-L Grid`0.85` Constant Mu` , Friction ENTER_PARSFILE Roads\Shapes\RdShp116.par`08-02-2011`16:43:14 #FullDataName Road: Animator Surface Shapes`Alt 3 FHWA Road`Scenic Road Shapes NLANES 5 OPTTHRESHOLD 1 #MiscYellow0 # 0.878 0.878 0.878, Road (Medium), 0.2, 50, 1, -5, m, 5, m, 5, , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 50, 1, 5, m, 7.1, m, 1, , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 50, 3.1, -7.1, m, -100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 50, 3.1, 7.1, m, 100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 50, -1, -5, m, -7.1, m, 1, , -100, 1200, 5, , , #ENDMYellow #CheckBox0 0 MIRROR 0 COLOR(1) 0.878 0.878 0.878 MATERIAL(1) Road (Medium) SPECULAR(1) 0.2 SCALE(1) 50 LTILES(1) 1 LIN(1) -5 LINUNITS(1) m LOUT(1) 5 LOUTUNITS(1) m LDIV(1) 5 SSTART(1) -100 SSTOP(1) 1200 SINT(1) 5 COLOR(2) 0.878 0.878 0.878 MATERIAL(2) Road Transition (Light) SPECULAR(2) 0.1 SCALE(2) 50 LTILES(2) 1 LIN(2) 5 LINUNITS(2) m LOUT(2) 7.1 LOUTUNITS(2) m LDIV(2) 1 SSTART(2) -100 SSTOP(2) 1200 SINT(2) 5 COLOR(3) 0.878 0.878 0.878 MATERIAL(3) Grass (Light) SPECULAR(3) 0.1 SCALE(3) 50 LTILES(3) 3.1 LIN(3) -7.1 LINUNITS(3) m LOUT(3) -100 LOUTUNITS(3) m SSTART(3) -100 SSTOP(3) 1200 SINT(3) 5 COLOR(4) 0.878 0.878 0.878 MATERIAL(4) Grass (Light) SPECULAR(4) 0.1 SCALE(4) 50 LTILES(4) 3.1 LIN(4) 7.1 LINUNITS(4) m LOUT(4) 100 LOUTUNITS(4) m SSTART(4) -100 SSTOP(4) 1200 SINT(4) 5 COLOR(5) 0.878 0.878 0.878 MATERIAL(5) Road Transition (Light) SPECULAR(5) 0.1 SCALE(5) 50 LTILES(5) -1 LIN(5) -5 LINUNITS(5) m LOUT(5) -7.1 LOUTUNITS(5) m LDIV(5) 1 SSTART(5) -100 SSTOP(5) 1200 SINT(5) 5 MTL_FILE Roads\materials\road.mtl LOG_ENTRY Used Dataset: Road: Animator Surface Shapes; { Scenic Road Shapes } Alt 3 FHWA Road #Library : Road: Animator Surface Shapes #DataSet : Alt 3 FHWA Road #Category: Scenic Road Shapes #FileID : RdShp116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:14 #VehCode Road shapes EXIT_PARSFILE Roads\Shapes\RdShp116.par #BlueLink4 Road: Animator Surface Shapes`Alt 3 FHWA Road` Scenic Road Shapes` , Road shape definitions add_reference_frame road_stuff_1 reference_frame_ghosts off ENTER_PARSFILE Roads\AniGroup\RdAniGrp109.par`08-02-2011`16:43:13 #FullDataName Road: Animator Repeated Object`Trees 2`Trees #RingCtrl0 2 #RingCtrl1 0 #DiagramOne0 *POINTS_table 0, -10 30, 10 90, -10 120, 10 150, -10 180, 10 210, -10 240, 10 270, -10 300, 10 330, -10 360, 10 390, -10 420, 10 450, -10 480, 10 510, -10 540, 10 570, -10 600, 10 630, -10 660, 10 690, -10 720, 10 750, -10 780, 10 810, -10 840, 10 870, -10 900, 10 930, -10 960, 10 990, -10 1020, 10 1050, -10 1080, 10 1100, -10 1130, 10 1160, -10 ENDTABLE #RadioCtrl0 0 #BlueLink0 Animator: Shape Assembly`Tree` Scenery` , Animator group LOG_ENTRY Used Dataset: Road: Animator Repeated Object; { Trees } Trees 2 #Library : Road: Animator Repeated Object #DataSet : Trees 2 #Category: Trees #FileID : RdAniGrp109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Road Animator Group EXIT_PARSFILE Roads\AniGroup\RdAniGrp109.par #BlueLink6 Road: Animator Repeated Object`Trees 2` Trees` , Misc. animator set add_reference_frame road_stuff_2 reference_frame_ghosts off ENTER_PARSFILE Animator\Groups\Group101.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Partly Cloudy Sky`Skies ENTER_PARSFILE Animator\Frames\Frame104.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Front Point w/o Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Front Point w/o Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camF SET_Y_NAME Y_camF SET_Z_NAME Z_camF WRT_X_camF ANI_X_camF WRT_Y_camF ANI_Y_camF WRT_Z_camF ANI_Z_camF LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Front Point w/o Yaw #Library : Animator: Reference Frame #DataSet : Camera Front Point w/o Yaw #Category: Road Tracking #FileID : Frame104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame104.par #BlueLink0 Animator: Reference Frame`Camera Front Point w/o Yaw` Road Tracking` , Animator data ENTER_PARSFILE Animator\STL\AniSTL115.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Partly Cloudy Sky`Skies #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\Slightly_Cloudy_Sky\sky_road_course.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0 SMOOTH_MAX_ANGLE 30 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 1 set_fogging off #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Skies } Partly Cloudy Sky #Library : Animator: Shape File Link #DataSet : Partly Cloudy Sky #Category: Skies #FileID : AniSTL115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL115.par #BlueLink1 Animator: Shape File Link`Partly Cloudy Sky` Skies` , Animator data ENTER_PARSFILE Animator\STL\AniSTL116.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Complex Land Bowl for Light Grass`Terrain #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\landbowls\complex_land_for_light_grass.obj #ENDMYellow SET_COLOR .8 .8 .8 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 1 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Terrain } Complex Land Bowl for Light Grass #Library : Animator: Shape File Link #DataSet : Complex Land Bowl for Light Grass #Category: Terrain #FileID : AniSTL116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL116.par #BlueLink2 Animator: Shape File Link`Complex Land Bowl for Light Grass` Terrain` , Animator data #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { Skies } Partly Cloudy Sky #Library : Animator: Group #DataSet : Partly Cloudy Sky #Category: Skies #FileID : Group101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group EXIT_PARSFILE Animator\Groups\Group101.par #BlueLink7 Animator: Group`Partly Cloudy Sky` Skies` , Misc. animator set add_reference_frame road_stuff_3 reference_frame_ghosts off ENTER_PARSFILE Roads\AniGroup\RdAniGrp110.par`08-02-2011`16:43:13 #FullDataName Road: Animator Repeated Object`S-curve (5.5 m)` #RingCtrl0 0 #RingCtrl1 0 #DiagramOne0 *POINTS_table 200, -5.5 800, -5.5 ENDTABLE #RadioCtrl0 0 #BlueLink0 Animator: Shape File Link`S-Curve` Signs` , Animator group LOG_ENTRY Used Dataset: Road: Animator Repeated Object; S-curve (5.5 m) #Library : Road: Animator Repeated Object #DataSet : S-curve (5.5 m) #Category: #FileID : RdAniGrp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Road Animator Group EXIT_PARSFILE Roads\AniGroup\RdAniGrp110.par #BlueLink8 Road: Animator Repeated Object`S-curve (5.5 m)` ` , Misc. animator set add_reference_frame road_stuff_4 reference_frame_ghosts off ENTER_PARSFILE Roads\AniGroup\RdAniGrp111.par`08-02-2011`16:43:13 #FullDataName Road: Animator Repeated Object`Speed Limit 70 (5.5 m)` #RingCtrl0 0 #RingCtrl1 0 #DiagramOne0 *POINTS_table 400, -5.5 1000, -5.5 ENDTABLE #RadioCtrl0 0 #BlueLink0 Animator: Shape File Link`Speed Limit 70` Signs` , Animator group LOG_ENTRY Used Dataset: Road: Animator Repeated Object; Speed Limit 70 (5.5 m) #Library : Road: Animator Repeated Object #DataSet : Speed Limit 70 (5.5 m) #Category: #FileID : RdAniGrp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Road Animator Group EXIT_PARSFILE Roads\AniGroup\RdAniGrp111.par #BlueLink9 Road: Animator Repeated Object`Speed Limit 70 (5.5 m)` ` , Misc. animator set iroad 2 ! obsolete March 2011 idz_road 2 ENTER_PARSFILE Animator\Cameras\Camera105.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 1 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw ENTER_PARSFILE Animator\Frames\Frame105.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Rear Point w/ Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Rear Point w/ Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camR SET_Y_NAME Y_camR SET_Z_NAME Z_camR SET_YAW_NAME Yaw_CamR WRT_X_camR ANI_X_camR WRT_Y_camR ANI_Y_camR WRT_Z_camR ANI_Z_camR WRT_Yaw_CamR ANI_Yaw_CamR LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Rear Point w/ Yaw #Library : Animator: Reference Frame #DataSet : Camera Rear Point w/ Yaw #Category: Road Tracking #FileID : Frame105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame105.par #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 5 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 5 SET_DISTANCE 49 *SET_LOOKPOINT_X 5 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 5 *SET_DISTANCE 49 GHOST_COUNT 0 *LIGHT_X -1000 *LIGHT_Y -1000 *LIGHT_Z 10000 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 30 SUN_POSITION -1000 -1000 10000 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } Rear View , Road Ref. (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View , Road Ref. (Frt. Facing) #Category: Road Reference #FileID : Camera105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera105.par #BlueLink5 Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)` Road Reference` , Camera ENTER_PARSFILE Roads\3D_Road\Road135.ani`09-03-2019`18:38:03 add_reference_frame The Road reference_frame_ghosts off add_obj Roads\3D_Road\Road135_1.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.2 0.2 0.2 add_obj Roads\3D_Road\Road135_2.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road135_3.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road135_4.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road135_5.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 EXIT_PARSFILE Roads\3D_Road\Road135.ani add_reference_frame road_stuff_1_1 reference_frame_ghosts off set_offset_var_yaw -29.4975751915 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x -4.92386725433 set_offset_var_y -8.70376534965 set_offset_var_z 0 ENTER_PARSFILE Animator\STL_Groups\StlGroup103.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Tree`Scenery *ANGLE_Z 180 *ANGLE_Y 0 *ANGLE_X 0 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 #CheckBox5 0 #RingCtrl0 3 #RingCtrl1 1 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL118.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Tree`Trees #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\trees_bushes\tree1.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 0.3 SET_SCALE_Y 0.3 SET_SCALE_Z 0.5 *SPECULAR 0.5 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Trees } Tree #Library : Animator: Shape File Link #DataSet : Tree #Category: Trees #FileID : AniSTL118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL118.par #BlueLink0 Animator: Shape File Link`Tree` Trees` , Shape File #MiscYellow0 translucent_fix on #ENDMYellow set_lighting off set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL119.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Tree, 90`Trees #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\trees_bushes\tree1.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 0.3 SET_SCALE_Y 0.3 SET_SCALE_Z 0.5 SET_ANGLE_Z 90 SET_ANGLE_Y 0 SET_ANGLE_X 0 *SPECULAR 0.5 #RingCtrl0 obj #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Trees } Tree, 90 #Library : Animator: Shape File Link #DataSet : Tree, 90 #Category: Trees #FileID : AniSTL119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL119.par #BlueLink1 Animator: Shape File Link`Tree, 90` Trees` , Shape File translucent_fix on set_lighting off set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL120.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Mulch (Standard)`Trees #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\trees_bushes\mulch.obj #ENDMYellow SET_COLOR 0.502 0.502 0.502 SET_SCALE_X 0.5 SET_SCALE_Y 0.5 SET_SCALE_Z 0.5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z -0.05 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Trees } Mulch (Standard) #Library : Animator: Shape File Link #DataSet : Mulch (Standard) #Category: Trees #FileID : AniSTL120 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL120.par #BlueLink2 Animator: Shape File Link`Mulch (Standard)` Trees` , Shape File translucent_fix on set_lighting off set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL121.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Tree Shadow (Standard)`Trees #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\trees_bushes\tree_shadow.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 0.3 SET_SCALE_Y 0.3 SET_SCALE_Z 1 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0.05 *TRANSPARENCY 0.3 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.3 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Trees } Tree Shadow (Standard) #Library : Animator: Shape File Link #DataSet : Tree Shadow (Standard) #Category: Trees #FileID : AniSTL121 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL121.par #BlueLink3 Animator: Shape File Link`Tree Shadow (Standard)` Trees` , Shape File translucent_fix on set_lighting off set_angle_x 0 set_angle_y 0 set_angle_z 180 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Scenery } Tree #Library : Animator: Shape Assembly #DataSet : Tree #Category: Scenery #FileID : StlGroup103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup103.par add_reference_frame road_stuff_2_1 reference_frame_ghosts off set_offset_var_yaw 150.500613751 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 31.0349208697 set_offset_var_y -6.0692649658 set_offset_var_z 0 add_reference_frame road_stuff_3_1 reference_frame_ghosts off set_offset_var_yaw -29.497961224 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 73.4081937736 set_offset_var_y -53.0217998747 set_offset_var_z 0 add_reference_frame road_stuff_4_1 reference_frame_ghosts off set_offset_var_yaw 150.498476304 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 109.366981844 set_offset_var_y -50.3872994471 set_offset_var_z 0 add_reference_frame road_stuff_5_1 reference_frame_ghosts off set_offset_var_yaw -29.5074014665 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 125.628014981 set_offset_var_y -82.5671330269 set_offset_var_z 0 add_reference_frame road_stuff_6_1 reference_frame_ghosts off set_offset_var_yaw 150.503600257 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 161.587989259 set_offset_var_y -79.9323036669 set_offset_var_z 0 add_reference_frame road_stuff_7_1 reference_frame_ghosts off set_offset_var_yaw -29.501143793 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 177.850451092 set_offset_var_y -112.112379706 set_offset_var_z 0 add_reference_frame road_stuff_8_1 reference_frame_ghosts off set_offset_var_yaw 150.500610543 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 213.809425291 set_offset_var_y -109.478550346 set_offset_var_z 0 add_reference_frame road_stuff_9_1 reference_frame_ghosts off set_offset_var_yaw -29.5098319137 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 230.071558273 set_offset_var_y -141.657440412 set_offset_var_z 0 add_reference_frame road_stuff_10_1 reference_frame_ghosts off set_offset_var_yaw 156.760153798 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 265.47945892 set_offset_var_y -137.716242952 set_offset_var_z 0 add_reference_frame road_stuff_11_1 reference_frame_ghosts off set_offset_var_yaw -12.1477034826 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 287.966418147 set_offset_var_y -165.786793332 set_offset_var_z 0 add_reference_frame road_stuff_12_1 reference_frame_ghosts off set_offset_var_yaw 178.942061612 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 320.011736291 set_offset_var_y -149.453468002 set_offset_var_z 0 add_reference_frame road_stuff_13_1 reference_frame_ghosts off set_offset_var_yaw 10.0430782806 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 351.43228303 set_offset_var_y -166.958502448 set_offset_var_z 0 add_reference_frame road_stuff_14_1 reference_frame_ghosts off set_offset_var_yaw 194.997837117 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 376.214191279 set_offset_var_y -140.252567826 set_offset_var_z 0 add_reference_frame road_stuff_15_1 reference_frame_ghosts off set_offset_var_yaw 14.9998974517 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 410.368029396 set_offset_var_y -151.806229631 set_offset_var_z 0 add_reference_frame road_stuff_16_1 reference_frame_ghosts off set_offset_var_yaw 195.00031918 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 434.169490593 set_offset_var_y -124.722487425 set_offset_var_z 0 add_reference_frame road_stuff_17_1 reference_frame_ghosts off set_offset_var_yaw 15.0037823302 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 468.324009943 set_offset_var_y -136.275966613 set_offset_var_z 0 add_reference_frame road_stuff_18_1 reference_frame_ghosts off set_offset_var_yaw 195.052583987 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 492.125162719 set_offset_var_y -109.193571197 set_offset_var_z 0 add_reference_frame road_stuff_19_1 reference_frame_ghosts off set_offset_var_yaw 5.61126022192 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 525.083691628 set_offset_var_y -123.009894153 set_offset_var_z 0 add_reference_frame road_stuff_20_1 reference_frame_ghosts off set_offset_var_yaw 174.15608175 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 555.075922838 set_offset_var_y -103.169404641 set_offset_var_z 0 add_reference_frame road_stuff_21_1 reference_frame_ghosts off set_offset_var_yaw -17.3112596114 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 580.423449027 set_offset_var_y -128.677963631 set_offset_var_z 0 add_reference_frame road_stuff_22_1 reference_frame_ghosts off set_offset_var_yaw 151.235945449 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 615.775184656 set_offset_var_y -122.082337986 set_offset_var_z 0 add_reference_frame road_stuff_23_1 reference_frame_ghosts off set_offset_var_yaw -40.2201854838 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 629.1883514 set_offset_var_y -155.449934504 set_offset_var_z 0 add_reference_frame road_stuff_24_1 reference_frame_ghosts off set_offset_var_yaw 128.34613398 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 664.315692954 set_offset_var_y -163.141753321 set_offset_var_z 0 add_reference_frame road_stuff_25_1 reference_frame_ghosts off set_offset_var_yaw -55.3330520183 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 665.554424194 set_offset_var_y -199.527386275 set_offset_var_z 0 add_reference_frame road_stuff_26_1 reference_frame_ghosts off set_offset_var_yaw 124.666102396 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 699.067550628 set_offset_var_y -212.826267143 set_offset_var_z 0 add_reference_frame road_stuff_27_1 reference_frame_ghosts off set_offset_var_yaw -55.3841095335 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 699.681638019 set_offset_var_y -248.876715674 set_offset_var_z 0 add_reference_frame road_stuff_28_1 reference_frame_ghosts off set_offset_var_yaw 135.803113044 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 733.794212799 set_offset_var_y -259.227416025 set_offset_var_z 0 add_reference_frame road_stuff_29_1 reference_frame_ghosts off set_offset_var_yaw -30.4512038048 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 745.556277667 set_offset_var_y -293.166340772 set_offset_var_z 0 add_reference_frame road_stuff_30_1 reference_frame_ghosts off set_offset_var_yaw 163.312631513 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 780.930822282 set_offset_var_y -286.928573438 set_offset_var_z 0 add_reference_frame road_stuff_31_1 reference_frame_ghosts off set_offset_var_yaw -2.93788090212 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 807.038162824 set_offset_var_y -311.599896155 set_offset_var_z 0 add_reference_frame road_stuff_32_1 reference_frame_ghosts off set_offset_var_yaw 190.814286058 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 835.533405976 set_offset_var_y -289.73046457 set_offset_var_z 0 add_reference_frame road_stuff_33_1 reference_frame_ghosts off set_offset_var_yaw 23.9054324885 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 869.942249998 set_offset_var_y -299.623898168 set_offset_var_z 0 add_reference_frame road_stuff_34_1 reference_frame_ghosts off set_offset_var_yaw 204.002045021 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 889.265674604 set_offset_var_y -269.127621716 set_offset_var_z 0 add_reference_frame road_stuff_35_1 reference_frame_ghosts off set_offset_var_yaw 24.0020450214 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 924.806987782 set_offset_var_y -275.195163027 set_offset_var_z 0 add_reference_frame road_stuff_36_1 reference_frame_ghosts off set_offset_var_yaw 204.002045021 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 944.077530984 set_offset_var_y -244.721466751 set_offset_var_z 0 add_reference_frame road_stuff_37_1 reference_frame_ghosts off set_offset_var_yaw 24.0020450214 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 970.483534766 set_offset_var_y -254.856700557 set_offset_var_z 0 add_reference_frame road_stuff_38_1 reference_frame_ghosts off set_offset_var_yaw 204.002045021 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 989.754077968 set_offset_var_y -224.383004281 set_offset_var_z 0 add_reference_frame road_stuff_39_1 reference_frame_ghosts off set_offset_var_yaw 24.0020450214 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 1025.29539115 set_offset_var_y -230.450545592 set_offset_var_z 0 add_reference_frame road_stuff_1_3 reference_frame_ghosts off set_offset_var_x 171.362854596 set_offset_var_y -103.272060525 set_offset_var_z 0 ENTER_PARSFILE Animator\STL\AniSTL252.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`S-Curve`Signs #MiscYellow3 add_obj Animator\3D_shape_files_CS\road_signs\s_curve_car\s_curve_car.obj #ENDMYellow SET_COLOR 1 1 1 SET_ANGLE_Z 180 SET_ANGLE_Y 0 SET_ANGLE_X 0 *SPECULAR 1 SMOOTH_MAX_ANGLE 45 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Signs } S-Curve #Library : Animator: Shape File Link #DataSet : S-Curve #Category: Signs #FileID : AniSTL252 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL252.par add_reference_frame road_stuff_2_3 reference_frame_ghosts off set_offset_var_x 697.694827215 set_offset_var_y -238.092166248 set_offset_var_z 0 add_reference_frame road_stuff_1_4 reference_frame_ghosts off set_offset_var_x 360.775284314 set_offset_var_y -160.396291356 set_offset_var_z 0 ENTER_PARSFILE Animator\STL\AniSTL253.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Speed Limit 70`Signs #MiscYellow3 add_obj Animator\3D_shape_files_CS\road_signs\speed_limit\speed_limit_70.obj #ENDMYellow SET_COLOR 1 1 1 SET_ANGLE_Z 90 SET_ANGLE_Y 0 SET_ANGLE_X 0 *SPECULAR 1 SMOOTH_MAX_ANGLE 45 *IMAGE_FIT_MODE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Signs } Speed Limit 70 #Library : Animator: Shape File Link #DataSet : Speed Limit 70 #Category: Signs #FileID : AniSTL253 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL253.par add_reference_frame road_stuff_2_4 reference_frame_ghosts off set_offset_var_x 877.299979177 set_offset_var_y -291.422736269 set_offset_var_z 0 LOG_ENTRY Used Dataset: Road: 3D Surface (All Properties); { Scenic Roads } Alt 3 from FHWA -LEO Flat #Library : Road: 3D Surface (All Properties) #DataSet : Alt 3 from FHWA -LEO Flat #Category: Scenic Roads #FileID : Road135 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-03-2019 18:38:03 #VehCode 3D road EXIT_PARSFILE Roads\3D_Road\Road135.par #BlueLink0 Road: 3D Surface (All Properties)`Alt 3 from FHWA -LEO Flat` Scenic Roads` , Misc. ENTER_PARSFILE Plot\Setup\Plot109.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Longitudinal Speed`Vehicle Motion ENTER_PARSFILE Plot\Transform\PlotTfm101.par`08-02-2011`16:43:01 #FullDataName Plot: Data Transform`No Filter` #RingCtrl0 None FILTER None LOG_ENTRY Used Dataset: Plot: Data Transform; No Filter #Library : Plot: Data Transform #DataSet : No Filter #Category: #FileID : PlotTfm101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:01 #VehCode Plot data transform EXIT_PARSFILE Plot\Transform\PlotTfm101.par #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) ENTER_PARSFILE Plot\Format\PlotFmt101.par`08-02-2011`16:43:00 #FullDataName Plot: Format`Default Plot Settings` #RingCtrl0 Axes AXES Axes #RingCtrl1 Noframe FRAME Noframe #RingCtrl2 NoGrid GRID NoGrid #RingCtrl3 FileTitle LEGENDFILE FileTitle #RingCtrl4 RigidBodyName LEGENDDATA_1 RigidBodyName #RingCtrl5 AutoLocation LEGENDLOCATION AutoLocation #RingCtrl6 Regular TITLEFONTSTYLE Regular #RingCtrl7 Regular LEGENDFONTSTYLE Regular #RingCtrl8 Regular LABELFONTSTYLE Regular #RingCtrl9 Regular TICLABELFONTSTYLE Regular #RingCtrl10 0 TITLELOCATION 0 LEGENDPERCENT 40 TITLEFONTSIZE 14 LEGENDFONTSIZE 12 LABELFONTSIZE 14 TICLABELFONTSIZE 12 TITLEFONTNAME Arial LEGENDFONTNAME Arial LABELFONTNAME Arial TICLABELFONTNAME Arial SYMBOLS 10,1,2,3,4,5,6,7,8,9,10,4,1,2,3,4,5,6,7,8 LINESTYL 1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1 COLORS 8,2,3,7,4,0,6,14,8,9,10,11,12,13,14,6,1,2,0,4 LOG_ENTRY Used Dataset: Plot: Format; Default Plot Settings #Library : Plot: Format #DataSet : Default Plot Settings #Category: #FileID : PlotFmt101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot format EXIT_PARSFILE Plot\Format\PlotFmt101.par #MiscYellow0 PLOTCHANNELS Vx, Time PLOTCHANNELS VxTarget, Time PLOTCHANNELS Vx_2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Longitudinal Speed LOG_ENTRY Used Dataset: Plot: Setup; { Vehicle Motion } Longitudinal Speed #Library : Plot: Setup #DataSet : Longitudinal Speed #Category: Vehicle Motion #FileID : Plot109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot109.par #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot ENTER_PARSFILE Plot\Setup\Plot118.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Throttle: Control Input`Controls: Driver #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Throttle, Time PLOTCHANNELS Thr_Eng, Time #ENDMYellow YAXISLABEL Throttle - #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Throttle: Control Input LOG_ENTRY Used Dataset: Plot: Setup; { Controls: Driver } Throttle: Control Input #Library : Plot: Setup #DataSet : Throttle: Control Input #Category: Controls: Driver #FileID : Plot118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup ENTRY_NOTEFILE Plot\Setup\Plot118_note.txt The variable "Throttle" is the sum of any throttle control calculated by the CarSim closed loop speed controller and any specified open-loop throttle. The source of open-loop throttle command may be from internal tables, VS commmands, or external sources like Simulink or the API. By using the sum of these 2 command sources you can implement things like driver aids for active safety that augment actions taken by the driver. When switching between open loop and closed loop control, take care that no unintended open loop control is "left over" by supplying a data set that sets the open loop component to zero. The variable "Thr_Eng" is the value of "Throttle", optionally modified by the application of a time constant to simulate the transient delay in changes in engine torque. EXIT_NOTEFILE Plot\Setup\Plot118_note.txt EXIT_PARSFILE Plot\Setup\Plot118.par #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot ENTER_PARSFILE Plot\Setup\Plot203.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Wheel Cylinder Pressures`Braking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS PbkCh_L1, Time PLOTCHANNELS PbkCh_R1, Time PLOTCHANNELS PbkCh_L2, Time PLOTCHANNELS PbkCh_R2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Wheel Cylinder Pressures LOG_ENTRY Used Dataset: Plot: Setup; { Braking } Wheel Cylinder Pressures #Library : Plot: Setup #DataSet : Wheel Cylinder Pressures #Category: Braking #FileID : Plot203 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot203.par #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot ENTER_PARSFILE Plot\Setup\Plot141.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Y vs. X -- Trajectory`Tracking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Yo, Xo PLOTCHANNELS Y_Design, X_Design PLOTCHANNELS Y_Target, X_Target PLOTCHANNELS Yo_2, Xo_2 #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Y vs. X -- Trajectory LOG_ENTRY Used Dataset: Plot: Setup; { Tracking } Y vs. X -- Trajectory #Library : Plot: Setup #DataSet : Y vs. X -- Trajectory #Category: Tracking #FileID : Plot141 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot141.par #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } chapt4_MPC_EM_PathTracking #Library : Procedures #DataSet : chapt4_MPC_EM_PathTracking #Category: BOOK_MPC_Procedures #FileID : Proc175 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-03-2019 18:53:00 #VehCode Procedure EXIT_PARSFILE Procedures\Proc175.par #BlueLink28 Procedures`chapt4_MPC_EM_PathTracking` BOOK_MPC_Procedures` , Procedure *IMAGE_LINK Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter4_MPC_ErrorModel_PathTracking CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter4_MPC_ErrorModel_PathTracking LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter4_MPC_ErrorModel_PathTracking #Library : CarSim Run Control #DataSet : Chapter4_MPC_ErrorModel_PathTracking #Category: BOOK_MPC_Examples #FileID : Run291 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 23:40:42 #VehCode Run EXIT_PARSFILE Runs\Run291.par END ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/MPC_ErrorModel_PathTracking.mdl ================================================ Model { Name "MPC_ErrorModel_PathTracking" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.259" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "RollModelMPCCurvePathTracking" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [2098.0, 53.0, 953.0, 589.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [903.0, 412.0] ZoomFactor [1.25] Offset [77.290808107629871, 167.8] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Sun Sep 01 23:44:33 2019" RTWModifiedTimeStamp 489282261 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "MPC_ErrorModel_PathTracking" Array { Type "Cell" Dimension 1 Cell "MPC_ErrorModel_PathTracking" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "40" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType Memory X0 "0" InheritSampleTime off LinearizeMemory off LinearizeAsDelay off StateMustResolveToSignalObject off RTWStateStorageClass "Auto" } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "MPC_ErrorModel_PathTracking" Location [2098, 53, 3051, 642] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" SIDHighWatermark "143" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [1, 1] Position [330, 179, 430, 241] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "LEO_MPC_EM_PathTrackingCtrl.sim" } Block { BlockType Demux Name "Demux" SID "135" Ports [1, 2] Position [170, 361, 180, 439] ZOrder 30 BlockMirror on ShowName off Outputs "[1 10]" DisplayOption "bar" } Block { BlockType Memory Name "Memory" SID "143" Position [185, 195, 215, 225] ZOrder 34 X0 "1" InheritSampleTime on } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [255, 366, 535, 434] ZOrder 12 BlockMirror on FunctionName "Main_MPC_ec_qpOASES_quadprog" EnableBusSupport off } Block { BlockType Terminator Name "Terminator" SID "136" Position [95, 405, 130, 435] ZOrder 31 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace" SID "115" Ports [1] Position [230, 295, 290, 325] ZOrder 19 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 116 SrcBlock "CarSim S-Function" SrcPort 1 Points [151, 0; 0, 190] DstBlock "S-Function" DstPort 1 } Line { ZOrder 130 SrcBlock "S-Function" SrcPort 1 Points [-41, 0] Branch { ZOrder 177 DstBlock "Demux" DstPort 1 } Branch { ZOrder 176 Points [0, -90] DstBlock "To Workspace" DstPort 1 } } Line { ZOrder 178 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Line { ZOrder 184 SrcBlock "Demux" SrcPort 1 Points [-52, 0; 0, -170] DstBlock "Memory" DstPort 1 } Line { ZOrder 187 SrcBlock "Memory" SrcPort 1 DstBlock "CarSim S-Function" DstPort 1 } } } ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/Main_MPC_ec_CVXGEN.m ================================================ function [sys,x0,str,ts] =Main_MPC_ec_CVXGEN(t,x,u,flag) %***************************************************************% % This is a Simulink/Carsim joint simulation solution for path tracking use % MPC with tracking error model. % Use constant high speed, curve path tracking % state vector =[epsi,ed,measured_delta_f] % control input = [steer_SW] % % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 2; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 11; %S sizes.NumInputs = 38; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %-----------------------------------------------------------------------% global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; % for SUV VehiclePara.Lf = 1.05; VehiclePara.Lr = 1.55; VehiclePara.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; % VehiclePara.Tr = 1.565; %c,or 1.57. ע᳤lcδȷ % VehiclePara.mu = 0.85; % 0.55; %Ħ % VehiclePara.Iz = 2059.2; %IΪZתв % VehiclePara.Ix = 700.7; %IΪZתв % VehiclePara.Radius = 0.379; % ̥뾶 global MPCParameters; MPCParameters.Np = 40;% predictive horizon Assume Np=Nc MPCParameters.Ts = 0.1; % 0.1; MPCParameters.Nx = 2; %the number of state variables MPCParameters.Ny = 2; %the number of output variables MPCParameters.Nu = 1; %the number of control inputs global CostWeights; CostWeights.Wephi = 5; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.Wey = 100; CostWeights.deltaf = 1000;% on Du global Constraints; Constraints.dumax = 0.08; %*MPCParameters.Ts; % Units: rad,0.174rad/s = 10deg/s, 0.08rad/s=4.6deg/s Constraints.umax = 0.471; % Units: rad. 0.4rad=23deg, 0.471rad=27deg Constraints.DPhimax = pi/3; % ƫ60deg Constraints.Dymax = 1.7; % unit:m. cross-track-error max 2m global WayPoints_IndexPre; WayPoints_IndexPre = 1; global Reftraj; Reftraj = load('WayPoints_Alt3fromFHWA_Samples.mat'); % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; t_Elapsed = 0; Ctrl_SteerSW = 0; PosX = 0; PosY = 0; PosPsi = 0; Vel = 0; e_psi = 0; e_d = 0; fwa_opt = 0; fwa_measured = 0; Station = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %***********Step (2). State estimation and Location **********************% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration--------% [VehStateMeasured, ParaHAT] = func_StateEstimation(u); PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Vel = VehStateMeasured.x_dot; fwa_measured = VehStateMeasured.fwa; % rad Station = VehStateMeasured.Station; if(Vel < 1.0) Vel = 1.0; end %********Step(3): Given reference trajectory, update vehicle state and bounds *******************% [WPIndex, RefP, RefU, Uaug, PrjP] = func_RefTraj_LocalPlanning( MPCParameters,... VehiclePara,... WayPoints_IndexPre,... Reftraj.WayPoints_Collect,... VehStateMeasured ); % if ( WPIndex <= 0) fprintf('Error: WPIndex <= 0 \n');% else epsi = PrjP.epsi; if(epsi > pi/2) epsi = epsi - pi; end if(epsi < -pi/2) epsi = epsi + pi; end if(epsi > Constraints.DPhimax) epsi = Constraints.DPhimax; end if(epsi < -Constraints.DPhimax) epsi = -Constraints.DPhimax; end ed = PrjP.ey; if(ed > Constraints.Dymax) ed = Constraints.Dymax; end if(ed < -Constraints.Dymax) ed = -Constraints.Dymax; end Xm = [epsi; ed]; WayPoints_IndexPre = WPIndex; end %****Step(4): update MPC_error_model_augmented SSM ******************% % x(k+1) = Au*x(k)+Bu1*u1 + Bu2 * u2 [StateSpaceModel] = func_Update_ecMPC_SSM(VehiclePara, MPCParameters, Vel); %****Step(4): update Constraints and bounds ********************% % Np = MPCParameters.Np; % Eymax = zeros(Np,1); % Eymin = zeros(Np,1); % LM_right = -5; % LM_middle = 0; % Yroad_L = -2.5; % for i =1:1:Np % עeyǴŵ, Np = 25 % Eymax(i,1) = (LM_middle - Yroad_L); % Eymin(i,1) = (LM_right - Yroad_L); % end % [Envelope] = func_ConstraintsBounds(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, Eymax, Eymin); %**** Update Cost Weighting Regulation functions ********************% % Q = diag([CostWeights.Wephi, CostWeights.Wey]); % R = CostWeights.deltaf; [Q, R] = func_CostWeightingRegulation(CostWeights, Constraints); %================CVXGEN solver==================================% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations params.xm = Xm; params.um = fwa_measured; % measured front whee angle params.uaug = Uaug; params.Au = StateSpaceModel.Au; params.Bu = StateSpaceModel.Bu1; params.Ba = StateSpaceModel.Bu2; params.Q = Q; params.R = R; params.dumax = Constraints.dumax; params.umax = Constraints.umax; if (40 == MPCParameters.Np) [vars, status] = csolve_Np40(params, settings); else [vars, status] = csolve_Np20(params, settings); end if (1 == status.converged) %if optimization succeeded. fwa_opt = vars.u_0; % for i=1:1:20 % S_opt(i) = vars.x{i}; % U_opt(i) = vars.u{i}; % end else fwa_opt = vars.u_0; fprintf('CVXGEN not-converged at iter= %d\n', InitialGapflag); end %====================================================================% Ctrl_SteerSW = 19 * fwa_opt*180/pi; % in deg. t_Elapsed = toc( t_Start ); %computation time e_psi = PrjP.epsi; e_d = PrjP.ey; end % end of if Initialflag < 2 % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Station; Vel; e_psi; e_d; fwa_opt; fwa_measured]; % % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10); % deg VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); % HATParameter.GearStat = ModelInput(30); VehStatemeasured.Roll_Shad = ModelInput(30)*pi/180;% deg-->rad HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 HATParameter.Z0 = ModelInput(34); %m VehStatemeasured.Station = ModelInput(35); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.Ay_CG = ModelInput(37)*g; %m/s^2 HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 % end % end of func_StateEstimation ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/Main_MPC_ec_qpOASES_quadprog.m ================================================ function [sys,x0,str,ts] =Main_MPC_ec_qpOASES_quadprog(t,x,u,flag) %***************************************************************% % This is a Simulink/Carsim joint simulation solution for path tracking use % MPC with tracking error model. % Use constant high speed, curve path tracking % state vector =[epsi,ed,measured_delta_f] % control input = [steer_SW] % % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 3; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 11; %S sizes.NumInputs = 38; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %-----------------------------------------------------------------------% global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; % for SUV VehiclePara.Lf = 1.05; VehiclePara.Lr = 1.55; VehiclePara.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; % VehiclePara.Tr = 1.565; %c,or 1.57. ע᳤lcδȷ % VehiclePara.mu = 0.85; % 0.55; %Ħ % VehiclePara.Iz = 2059.2; %IΪZתв % VehiclePara.Ix = 700.7; %IΪZתв % VehiclePara.Radius = 0.379; % ̥뾶 global MPCParameters; MPCParameters.Np = 70;% predictive horizon Assume Np=Nc MPCParameters.Ts = 0.05; % 0.1; MPCParameters.Nx = 2; %the number of state variables MPCParameters.Ny = 2; %the number of output variables MPCParameters.Nu = 1; %the number of control inputs global CostWeights; CostWeights.Wephi = 5; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.Wey = 100; CostWeights.deltaf = 1000;% on Du global Constraints; Constraints.dumax = 0.08; %*MPCParameters.Ts; % Units: rad,0.174rad/s = 10deg/s, 0.08rad/s=4.6deg/s Constraints.umax = 0.471; % Units: rad. 0.4rad=23deg, 0.471rad=27deg Constraints.DPhimax = pi/3; % ƫ60deg Constraints.Dymax = 1.7; % unit:m. cross-track-error max 2m global WayPoints_IndexPre; WayPoints_IndexPre = 1; global WarmStart; WarmStart = zeros(MPCParameters.Np,1); global qpOASES_hotstart_flag; qpOASES_hotstart_flag = 1; global qpOASES_QP; qpOASES_QP = 0; global Sol_method; Sol_method = 3;% 1- quadprog % 2- qpOASES % 3- OPQP % 4- gurobi global Reftraj; Reftraj = load('WayPoints_Alt3fromFHWA_Samples.mat'); % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; global Sol_method; global WarmStart; global qpOASES_hotstart_flag; global qpOASES_QP; t_Elapsed = 0; Ctrl_SteerSW = 0; PosX = 0; PosY = 0; PosPsi = 0; Vel = 0; e_psi = 0; e_d = 0; fwa_opt = 0; fwa_measured = 0; Station = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %***********Step (2). State estimation and Location **********************% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration--------% [VehStateMeasured, ParaHAT] = func_StateEstimation(u); PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Vel = VehStateMeasured.x_dot; fwa_measured = VehStateMeasured.fwa; % rad Station = VehStateMeasured.Station; if(Vel < 1.0) Vel = 1.0; end %********Step(3): Given reference trajectory, update vehicle state and bounds *******************% [WPIndex, RefP, RefK, Uaug, PrjP] = func_RefTraj_LocalPlanning( MPCParameters,... VehiclePara,... WayPoints_IndexPre,... Reftraj.WayPoints_Collect,... VehStateMeasured ); % if ( WPIndex <= 0) fprintf('Error: WPIndex <= 0 \n');% else epsi = PrjP.epsi; if(epsi > pi/2) epsi = epsi - pi; end if(epsi < -pi/2) epsi = epsi + pi; end if(epsi > Constraints.DPhimax) epsi = Constraints.DPhimax; end if(epsi < -Constraints.DPhimax) epsi = -Constraints.DPhimax; end ed = PrjP.ey; if(ed > Constraints.Dymax) ed = Constraints.Dymax; end if(ed < -Constraints.Dymax) ed = -Constraints.Dymax; end % Xm = [epsi; ed]; Xm = [epsi; ed; fwa_measured]; WayPoints_IndexPre = WPIndex; end %****Step(4): update MPC_error_model_augmented SSM ******************% % x(k+1) = Au*x(k)+Bu1*u1 + Bu2 * u2 [StateSpaceModel] = func_Update_ecMPC_SSM_Augmented(VehiclePara, MPCParameters, Vel); %****Step(4): update Constraints and bounds ********************% Np = MPCParameters.Np; Nx = MPCParameters.Nx; Nu = MPCParameters.Nu; Naug = Nx + Nu; % Eymax = zeros(Np,1); % Eymin = zeros(Np,1); % LM_right = -5; % LM_middle = 0; % Yroad_L = -2.5; % for i =1:1:Np % עeyǴŵ, Np = 25 % Eymax(i,1) = (LM_middle - Yroad_L); % Eymin(i,1) = (LM_right - Yroad_L); % end % [Envelope] = func_ConstraintsBounds(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, Eymax, Eymin); %**** Update Cost Weighting Regulation functions ********************% % Q = diag([CostWeights.Wephi, CostWeights.Wey]); % R = CostWeights.deltaf; [Q, R] = func_CostWeightingRegulation(CostWeights, Constraints); %================MPC problem formulation==================================% % Update Theta and PHI, then H and f [PHI, THETA, GAMMA] = func_PHI_THETA_Cal(StateSpaceModel, MPCParameters); [H, f, g] = func_H_f_Cal(Xm, Uaug, PHI, THETA, GAMMA, Q, R, MPCParameters); %=========Call qp-solver==========================% switch Sol_method case 1 % quadprog [A, b, Aeq, beq, lb, ub] = func_Bounds_Constraints_quadprog(MPCParameters, Constraints, fwa_measured); options = optimset('Display','off', ... 'TolFun', 1e-8, ... 'MaxIter', 2000, ... 'Algorithm', 'active-set', ... 'FinDiffType', 'forward', ... 'RelLineSrchBnd', [], ... 'RelLineSrchBndDuration', 1, ... 'TolConSQP', 1e-8); warning off all % close the warnings during computation u0 = WarmStart; [U, FVAL, EXITFLAG] = quadprog(H, f, A, b, Aeq, beq, lb, ub, u0, options); % WarmStart = shiftHorizon(U); % Prepare restart, nominal close loop fwa_opt = U(1) + fwa_measured; case 2 % qpOASES [A, lb, ub, lbA, ubA] = func_Bounds_Constraints_qpOASES(MPCParameters, Constraints, fwa_measured); options = qpOASES_options('default', ... 'printLevel', 0); %=======================USE QP==================% [U, FVAL, EXITFLAG, iter, lambda] = qpOASES(H, g, A, lb, ub, lbA, ubA, options); % %=======================USE SQP==================% % try % H=sparse(H); % A=sparse(A); % catch % fprintf('qpOASES Error reported\n'); % end % if (qpOASES_hotstart_flag) % [qpOASES_QP, U, FVAL, EXITFLAG, iter, lambda] = qpOASES_sequence('i', H, g, A, lb, ub, lbA, ubA, options); % qpOASES_hotstart_flag = 1; % else % [U, FVAL, EXITFLAG, iter, lambda] = qpOASES_sequence('m', qpOASES_QP, H, g, A, lb, ub, lbA, ubA, options); % % end fwa_opt = U(1) + fwa_measured; case 3 %OSQP [A, l_constr, u_constr] = func_Bounds_Constraints_OSQP(MPCParameters, Constraints, fwa_measured); % define problem problem.P = sparse(H); problem.q = f; problem.A = sparse(A); problem.l = [l_constr]; problem.u = [u_constr]; % Setup settings % settings.alpha = 1.6; % settings.rho = 0.1; % settings.sigma = 0.1; % settings.eps_prim_inf = 1e-5; % settings.eps_dual_inf = 1e-5; % settings.eps_rel = 1e-5; % settings.eps_abs = 1e-5; % settings.max_iter = 2500; settings.verbose = 0; settings.warm_start = 1; settings.scaling = 0; % Disable scaling. Pure Matlab implementation does not support it yet % Setup and solve the problem with osqp solver = osqp; solver.setup(problem.P, problem.q, problem.A, problem.l, problem.u, settings); resOSQP = solver.solve(); %resOSQP.x: primal variables %resOSQP.y: dual variables %resOSQP.info.status %resOSQP.info.status_val %resOSQP.info.polish if (1 == resOSQP.info.status_val) U_opt = resOSQP.x(1); else U_opt = 0; fprintf('OSQP failed, OSQP_status= %d\n', resOSQP.info.status_val); end fwa_opt = U_opt + fwa_measured; case 4 %gurobi try clear model; model.Q = sparse(H); model.obj = f'; model.A = sparse(A); model.rhs = b; model.sense = '<'; model.lb = lb; %(optional) model.ub = ub; result = gurobi(model); U = result.x; catch gurobiError fprintf('gurobi Error reported\n'); end fwa_opt = U(1) + fwa_measured; otherwise % default fprintf('Unknown qp-solver, Sol_method= %d\n', Sol_method); end % end of switch %====================================================================% Ctrl_SteerSW = 19 * fwa_opt*180/pi; % in deg. t_Elapsed = toc( t_Start ); %computation time e_psi = PrjP.epsi; e_d = PrjP.ey; end % end of if Initialflag < 2 % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Station; Vel; e_psi; e_d; fwa_opt; fwa_measured]; % % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10); % deg VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); % HATParameter.GearStat = ModelInput(30); VehStatemeasured.Roll_Shad = ModelInput(30)*pi/180;% deg-->rad HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 HATParameter.Z0 = ModelInput(34); %m VehStatemeasured.Station = ModelInput(35); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.Ay_CG = ModelInput(37)*g; %m/s^2 HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 % end % end of func_StateEstimation function u0 = shiftHorizon(u) %shift control horizon u0 = [u(:,2:size(u,2)), u(:,size(u,2))]; % size(u,2)) function [PHI, THETA,GAMMA] = func_PHI_THETA_Cal(StateSpaceModel, MPCParameters) %***************************************************************% % Ԥʽ Y(t)=PHI*kesi(t)+THETA*DU(t) % Y(t) = [Eta(t+1|t) Eta(t+2|t) Eta(t+3|t) ... Eta(t+Np|t)]' %***************************************************************% Np = MPCParameters.Np; Nx = MPCParameters.Nx; Ny = MPCParameters.Ny; Nu = MPCParameters.Nu; Naug = Nx+Nu; Au = StateSpaceModel.Au;% demision:Naug * Naug Bu1 = StateSpaceModel.Bu1;% demision:Naug * Nu Bu2 = StateSpaceModel.Bu2;% demision:Naug * Nu C = StateSpaceModel.C;% demision:Ny * Naug PHI_cell=cell(Np,1); % PHI=[CA CA^2 CA^3 ... CA^Np]' THETA_cell=cell(Np,Np); % theta GAMMA_cell=cell(Np,Np); % gamma PHI_cell{1,1}=C*Au; for i=2:1:Np PHI_cell{i,1}=PHI_cell{i-1,1}*Au; % demision:Ny* Naug end for i=1:1:Np for j=1:1:Np if i >= j CAu = C*Au^(i-j);% demision:Ny * Naug THETA_cell{i,j}=CAu * Bu1; % demision:Ny*Nu GAMMA_cell{i,j}=CAu * Bu2; % demision:Ny*Nu else THETA_cell{i,j}=zeros(Ny,Nu); GAMMA_cell{i,j}=zeros(Ny,Nu); end end end PHI = cell2mat(PHI_cell);%size(PHI)=[(Ny*Np) * Naug] THETA = cell2mat(THETA_cell);%size(THETA)=[Ny*Np Nu*Np] GAMMA = cell2mat(GAMMA_cell);%size(THETA)=[Ny*Np Nu*Np] function [H, f, g] = func_H_f_Cal(kesi, U_ref, PHI, THETA, GAMMA, YQ, UR, MPCParameters) %***************************************************************% % trajectory planning %***************************************************************% Np = MPCParameters.Np; Nc = Np; QQ = kron(speye(Np),YQ); % Q = [Np*Ny] * [Np*Ny] RR = kron(speye(Nc),UR); % R = [Nc*Nu] * [Nc*Nu] error = PHI * kesi + GAMMA * cell2mat(U_ref); %[(Nx*Np) * 1] H = THETA'*QQ*THETA + RR; f = error'*QQ*THETA; g = f'; function [A, b, Aeq, beq, lb, ub] = func_Bounds_Constraints_quadprog(MPCParameters, Constraints, um) %************************************************************************% % generate the constraints of the vehicle % %************************************************************************% Np = MPCParameters.Np; Nc = Np; dumax = Constraints.dumax; umax = Constraints.umax; Umin = kron(ones(Nc,1),-umax); Umax = kron(ones(Nc,1),umax); Ut = kron(ones(Nc,1),um); %----(1) A*x<=b----------% A_t=zeros(Nc,Nc); for p=1:1:Nc for q=1:1:Nc if p >= q A_t(p,q)=1; else A_t(p,q)=0; end end end A_cell=cell(2,1); A_cell{1,1} = A_t; % A_cell{2,1} = -A_t; A=cell2mat(A_cell); % b_cell=cell(2, 1); b_cell{1,1} = Umax - Ut; % b_cell{2,1} = -Umin + Ut; b=cell2mat(b_cell); % %----(2) Aeq*x=beq----------% Aeq = []; beq = []; %----(3) lb== q A_t(p,q)=1; else A_t(p,q)=0; end end end ubA = Umax - Ut; % lbA = Umin - Ut; %---- lb== q A_t(p,q)=1; else A_t(p,q)=0; end end end A_cell=cell(2,1); A_cell{1,1} = A_t; % A_cell{2,1} = eye(Np); A=cell2mat(A_cell); % l_constr=cell(2, 1); u_constr=cell(2, 1); l_constr{1,1} = Umin - Ut; u_constr{1,1} = Umax - Ut; % l_constr{2,1} = kron(ones(Nc,1),-dumax); u_constr{2,1} = kron(ones(Nc,1),dumax); % l_constr=cell2mat(l_constr); % u_constr=cell2mat(u_constr); % ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/ReadMe ================================================ MPC Path tracking use error model ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/ResultData_Plot.m ================================================ % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Station; Vel; e_psi; e_d; fwa_opt; fwa_measured]; % close all lw = 2; Num = length(u.signals.values(:,2)); Ctrl_SteerSW = u.signals.values(:,1); t_Elapsed = u.signals.values(:,2); PosX = u.signals.values(:,3); PosY = u.signals.values(:,4); PosPsi = u.signals.values(:,5); Station = u.signals.values(:,6); Vel = u.signals.values(:,7); e_psi = u.signals.values(:,8); e_y = u.signals.values(:,9); fwa_opt = u.signals.values(:,10); fwa_measured = u.signals.values(:,11); %% figure % Vel plot(1:Num, fwa_opt,'b',1:Num, fwa_measured,'k','Linewidth',lw); grid on legend('fwa_opt','fwa_measured'); figure % plot(1:Num, e_psi,'b','Linewidth',lw); grid on legend('e_{psi}'); figure % plot(1:Num, e_y,'k','Linewidth',lw); grid on legend('e_d'); figure % plot(1:Num, t_Elapsed,'k','Linewidth',lw); grid on legend('t_Elapsed'); figure % plot(PosX, PosY,'b','Linewidth',lw); grid on legend('traj'); ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/SaveSimResData2Mat.m ================================================ SimResData = u.signals.values(:,:); save SimData_CVXGEN_Np40.mat SimResData; ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/func_ConstraintsBounds.m ================================================ function [Envelope] = func_ConstraintsBounds(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, EY_MAX, EY_Min) % Generating safe driving envelope h = VehiclePara.hCG; Tr = VehiclePara.Tr; lf = VehiclePara.Lf; lr = VehiclePara.Lr; l = VehiclePara.L; M = VehiclePara.m; g = VehiclePara.g; mu = VehiclePara.mu; Iz = VehiclePara.Iz; %IΪZתв Ix = VehiclePara.Ix; %IΪZתв Np = MPCParameters.Np; Ns = MPCParameters.Ns; Alphar_lim = Constraints.arlim; %-----------environmental envelope-------------% Envelope.Henv = [0 0 0 0 1 0; 0 0 0 0 -1 0]; Envelope.Genv = cell(Np,1); Dist_temp = 0.8; % dw/2 + dbuffer; for i = 1:1:Np Envelope.Genv{i,1} = [EY_MAX(i) - Dist_temp; -EY_Min(i) - Dist_temp]; end %-----------stable handling envelope-------------% % for j = 1:1:Np Envelope.Hsh = [1/Vel -lr/Vel 0 0 0 0; 0 1 0 0 0 0]; Envelope.Psh = [0 0; g/Vel 0]; r_ssmax = -CarHat*Alphar_lim*(1+lr/lf)/(M*Vel); Envelope.Gsh = [Alphar_lim r_ssmax]'; % end %-----------zero moment point -------------% Acn = StateSpaceModel.Acn; % 8*8 B1cn = StateSpaceModel.B1cn; %8*1 B2cn = StateSpaceModel.B2cn;%8*2 % N1 = [h/g 0 -Ix/(M*g) 0 0 0]; % N2 = [0 h*Vel/g 0 h 0 0]; % % N3 = [h 0]; N1 = [2*h/(g*Tr) 0 -2*(M*h*h+Ix)/(M*g*Tr) 0 0 0]; N2 = [0 2*h*Vel/(g*Tr) 0 2*h/Tr 0 0]; % % N3 = [2*h/Tr 0]; H_yzmp = N1*Acn + N2;%1*8 P_yzmp1 = N1*B1cn; %1*1 P_yzmp2 = N1*B2cn; % + N3;%1*2 Envelope.H_yzmp = H_yzmp; Envelope.P_yzmp1 = P_yzmp1; Envelope.P_yzmp2 = P_yzmp2; end % end of func_SafedrivingEnvelope ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/func_CostWeightingRegulation.m ================================================ function [Ql, Rdun] = func_CostWeightingRegulation(CostWeights, Constraints) %% ʼ Qephi = CostWeights.Wephi; Qey = CostWeights.Wey; RDdeltaf= CostWeights.deltaf; DPhimax = Constraints.DPhimax; % 0.15 rad ==> 8.5deg Dymax = Constraints.Dymax; dumax = Constraints.dumax; %% Ȩӹһ Qephi_DPhimax2 = Qephi/(DPhimax*DPhimax); Qey_Dymax2 = Qey/(Dymax*Dymax); Ql = diag([Qephi_DPhimax2, Qey_Dymax2]); dumax2 = (dumax * dumax);% Rdun = RDdeltaf/dumax2; end % end of func_CostWeightingRegulation ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/func_FindBezierControlPointsND.m ================================================ % INPUT % Data: A set of "n" points (p1,p2,...pn). % Each point can be in N-dimension vector space % % (i.e. points to be approximated by Cubic Bezier Curve % e.g. p for 3D p=[0 5 0; % p1 % 1 5 0.5; % p2 % 1.3 4.5 1; % p3 % 2 5 2] % p4 % ptype(optional arg): parameterization type, defualt is chord-length % parameterization. user can pass 'u' or 'uniform', for uniform parameterization. % OUTPUT % Four Control Points: P0, P1, P2, P3, each in N-dimension space % parameterized values i.e. t (optional) % OBJECTIVE % We want to find control points of Bezier Curve that fit the data % p. % SOLUTION % Least Square Method using specified Parameterization (Chord-length % defualt) % (P0 & P3) are end points of a bezier curve segment. So they % are taken equal to first and last point of data. % (P1 & P2) are obtained by partially differeciating the Sum of Square % distance between original data and parametric curve w.r.t P1 & P2 and then % solving for two unknowns P1 & P2. function [P0, P1, P2, P3, tout]= func_FindBezierControlPointsND(p,varargin) %%% Default Values %%% ptype=''; defaultValues = {ptype}; %%% Assign Valus %%% nonemptyIdx = ~cellfun('isempty',varargin); defaultValues(nonemptyIdx) = varargin(nonemptyIdx); [ptype] = deal(defaultValues{:}); %%%------------------------------ n=size(p,1); % number of rows in p if (strcmpi(ptype,'u') || strcmpi(ptype,'uniform') ) [t]=linspace(0,1,n); % uniform parameterized values (normalized b/w 0 to 1) else [t]=ChordLengthNormND(p); % chord-length parameterized values (normalized b/w 0 to 1) end P0=p(1,:); % (at t=0 => P0=p1) P3=p(n,:); % (at t=1 => P3=pn) if (n==1) % if only one value in p P1=P0; % P1=P0 P2=P0; % P2=P0 elseif (n==2) % if only two values in p P1=P0; % P1=P0 P2=P3; % P2=P3 elseif (n==3) % if only three values in p P1=p(2,:); % middle point is P1 P2=p(2,:); % middle point is P2 else A1=0; A2=0; A12=0; C1=0; C2=0; %initialization for i=2:n-1 % for i=1:n %it will give same CPs as i=2:n-1 B0 = (1-t(i))^3 ; % Bezeir Basis B1 = ( 3*t(i)*(1-t(i))^2 ) ; B2 = ( 3*t(i)^2*(1-t(i)) ) ; B3 = t(i)^3 ; A1 = A1 + B1^2; A2 = A2 + B2^2; A12 = A12 + B1*B2; C1 = C1 + B1*( p(i,:) - B0*P0 - B3*P3 ); C2 = C2 + B2*( p(i,:) - B0*P0 - B3*P3 ); end DENOM=(A1*A2-A12*A12); % common denominator for all points if(DENOM==0) P1=P0; P2=P3; else P1=(A2*C1-A12*C2)/DENOM; P2=(A1*C2-A12*C1)/DENOM; end end % END of if-elseif-else conditon if(nargout==5) % if number of output argument=1 tout=t; end % % % -------------------------------- % % % Author: Dr. Murtaza Khan % % % Email : drkhanmurtaza@gmail.com % % % -------------------------------- ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/func_RefTraj_LocalPlanning.m ================================================ function [WPIndex, RefP, RefK, Uaug, PrjP] = func_RefTraj_LocalPlanning( MPCParameters, VehiclePara, WayPoints_Index, WayPoints_Collect, VehStateMeasured) %***************************************************************% % ҵȫ·Ͼ복ĵ (൱ͶӰ) % ΣݲsѡһЩвο㲢תϵ¡οϢ[s,x,y] % ٴΣԳϵµx,yBezierֵ߲ĺǺʡ % 󣬽οIJRefP, RefUUaug % % Input: % MPCParameters % WayPoints_Index % WayPoints_Collect % VehStateMeasured % % Output: % WPIndex % > 0Normal, WPIndex = index_min; % 0:error,index_min<1 % -1: index_min = WPNum,ȫ·ľͷͣ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My homepage: https://sites.google.com/site/kailiumiracle/ %***************************************************************% %*********** Parameters Initialization *************************% L = VehiclePara.L; % Np = MPCParameters.Np;% Ԥʱ Ts = MPCParameters.Ts; % Set the sample time %------Measured or Estimated vehicle status Vel = VehStateMeasured.x_dot; PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; %*********** WaypointData2VehicleCoords ************************% ds = 0.1;%unit:m, ·֮ľ WPNum = length(WayPoints_Collect(:,1)); %--------ҵο·Ͼ복ĵ--------------------------% Dist_MIN = 10000; index_min = 0; for i = WayPoints_Index:1:WPNum deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; Dist = sqrt(power(deltax,2) + power(deltay,2));% ·㵽ĵľ if Dist < Dist_MIN Dist_MIN = Dist; index_min = i; end end if (index_min < 1) WPIndex = -1; %ûҵ򡣡 else if ( index_min >= WPNum) WPIndex = -2; %ûҵ򡣡 else WPIndex = index_min; end end if( WPIndex > 0 ) % ҵ %% ѡͶӰ㣬 ȫ·ѡο㣬ת¡ %--------------ͨͶӰ--------------------------% [PPx,PPy,ey]=func_GetProjectPoint(WayPoints_Collect(index_min,2),... WayPoints_Collect(index_min,3),... WayPoints_Collect(index_min+1,2),... WayPoints_Collect(index_min+1,3),... PosX,... PosY); Dy = WayPoints_Collect(index_min+1,3) - WayPoints_Collect(index_min,3); Dx = WayPoints_Collect(index_min+1,2) - WayPoints_Collect(index_min,2); Psi0 = atan2(Dy, Dx); % [-pi, pi] epsi = PosPsi - Psi0;% - ·򣬣ʱΪ PrjP.epsi = epsi;% PrjP.ey = ey;%eyķΪ,ڲο· PrjP.Velr = Vel; PrjP.xr = PPx; PrjP.yr = PPy; PrjP.psir = Psi0; PrjP.fwar = 0; %atan(Kprj*L); %-------------------i=1:Np--ݳȫֲο·ѡο-------% Local_Sx = []; Local_Sy = []; StepLength_S = Vel * Ts * (Np+1);% һΪʱ׼ tempDx = WayPoints_Collect(index_min+1,2) - PPx; tempDy = WayPoints_Collect(index_min+1,3) - PPy; Dist_1 = sqrt(power(tempDx,2) + power(tempDy,2)); %·㵽ͶӰľ for i=index_min:1:WPNum %ڲο·ѡο,ͨתתϵ deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % ȫ·תֲ Local_Sx = [Local_Sx; CarCoord_x]; Local_Sy = [Local_Sy; CarCoord_y]; %洢ֲµĵ Dist_SumS = Dist_1 + WayPoints_Collect(i,7) - WayPoints_Collect(index_min+1,7); if(Dist_SumS >= StepLength_S) break; end end % end of for I=index_min+1:1:WPNum %% %------------ʽ------------% if(Dist_SumS < StepLength_S) WPIndex = 0; %ûҵ򡣡 % reaching the end ... %--ûпȫ·󼸸ʱ걸пܻᱨ else %----BezierϣŵڿԶ-----% MatS(:,1)=Local_Sx; MatS(:,2)=Local_Sy; [ps0,ps1,ps2,ps3,ts] = func_FindBezierControlPointsND(MatS,'u'); %uniform parameterization Scale = round(Vel*Ts/ds); tlocS = linspace(0,1,Scale*(Np+1)+1); %㵽յȾ=0.1m,Np+1ΣScale*Np+1+1 MatLocalInterpS = func_bezierInterp( ps0, ps1, ps2, ps3,tlocS); % ֵ߲õ Bezier_Sx = zeros(Np,1); Bezier_Sy = zeros(Np,1); Bezier_Spsi = zeros(Np,1); Bezier_SK = zeros(Np,1); for i = 2:1:Np+1 Bezier_Sx(i-1) = MatLocalInterpS(Scale*(i-1),1); Bezier_Sy(i-1) = MatLocalInterpS(Scale*(i-1),2); tempDx = MatLocalInterpS(Scale*(i-1)+1,1) - MatLocalInterpS(Scale*(i-1),1); tempDy = MatLocalInterpS(Scale*(i-1)+1,2) - MatLocalInterpS(Scale*(i-1),2); Bezier_Spsi(i-1) = atan2(tempDy, tempDx); Bezier_SK(i-1) = func_CalPathCurve_Patent(MatLocalInterpS(Scale*(i-1)-1,1),... % XA MatLocalInterpS(Scale*(i-1)-1,2),... % YA MatLocalInterpS(Scale*(i-1),1),... % XB MatLocalInterpS(Scale*(i-1),2),... % YB MatLocalInterpS(Scale*(i-1)+1,1),... % XC MatLocalInterpS(Scale*(i-1)+1,2)); % YC end % end of for i = 2:1:length(MatLocalInterp(:,1))-1 %% RefP = cell(Np,1); RefK = cell(Np,1); Uaug = cell(Np,1); for i = 1:1:Np Uaug{i,1} = atan(Bezier_SK(i)*L); RefK{i,1} = -Bezier_SK(i); RefP{i,1} = [Bezier_Sx(i); Bezier_Sy(i); Bezier_Spsi(i)]; end end % end of if(Dist_SumS < StepLength_S) || (Dist_SumL < StepLength_L) end % end of if( WPIndex > 0 ) % ҵ end % end of function %==============================================================% % sub functions %==============================================================% function K=GetPathHeading(Xb,Yb,Xn,Yn) %***Way I.Heading Angle [-pi,pi]֮ *******% AngleY=Yn-Yb; AngleX=Xn-Xb; K= atan2(AngleY, AngleX); %***Way II. Heading Angle 0~2*pi֮ *******% % AngleY=Yn-Yb; % AngleX=Xn-Xb; % % if Xb==Xn % if Yn>Yb % K=pi/2; % else % K=3*pi/2; % end % else % if Yb==Yn % if Xn>Xb % K=0; % else % K=pi; % end % else % K=atan(AngleY/AngleX); % end % end % % %****K,ʹ֮0~360֮*****% % if (AngleY>0&&AngleX>0)%һ % K=K; % elseif (AngleY>0&&AngleX<0)||(AngleY<0&&AngleX<0)%ڶ % K=K+pi; % else if (AngleY<0&&AngleX>0)% % K=K+2*pi; % else % K=K; % end % end end % end of function function [PPx,PPy,de]=func_GetProjectPoint(Xb,Yb,Xn,Yn,Xc,Yc) %-------------------------------------------------------% % ͨ㵽ֱߵľ붨ΪҸ % de㵽ֱߵľķ岻ͬ෴ % deķΪ %-------------------------------------------------------% if Xn==Xb x=Xn; y=Yc; de=Xc-Xn; else if Yb==Yn x=Xc; y=Yn; de=Yn-Yc; else DifX=Xn-Xb; DifY=Yn-Yb; Kindex=DifY/DifX; bindex=Yn-Kindex*Xn; K=(-1)*1/Kindex; b=Yc-K*Xc; x=(bindex-b)/(K-Kindex); y=K*x+b; de=(Kindex*Xc+bindex-Yc)/sqrt(1+Kindex*Kindex); end end PPx=x; PPy=y; end function K=func_CalPathCurve_Patent(XA,YA,XB,YB,XC,YC) %% x_dot = XC - XA; y_dot = YC - YA; x_dotdot = XC + XA - 2*XB; y_dotdot = YC + YA - 2*YB; temp = x_dot*x_dot + y_dot*y_dot; K= 4*(x_dot*y_dotdot - x_dotdot*y_dot )/ power(temp, 1.5); end ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/func_Update_ecMPC_SSM.m ================================================ %***************************************************************% % Deem Vx as constant %***************************************************************% function [StateSpaceModel] = func_Update_ecMPC_SSM(VehiclePara, MPCParameters, Vel) % generate State-space model lfr = VehiclePara.L; %a = 1.11; Ts = MPCParameters.Ts; % Au = [1, 0, Vel*Ts/lfr; % -Vel*Ts, 1, 0; % 0, 0, 1]; % Bu1 = [Vel*Ts/lfr; 0; 1]; % Bu2 = [-Vel*Ts/lfr; 0; 0]; % C = [1, 0, 0; % 0, 1, 0]; Au = [1, 0; -Vel*Ts, 1]; Bu1 = [Vel*Ts/lfr; 0]; Bu2 = [-Vel*Ts/lfr; 0]; StateSpaceModel.Au = Au; StateSpaceModel.Bu1 = Bu1; StateSpaceModel.Bu2 = Bu2; end % EoF ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/func_Update_ecMPC_SSM_Augmented.m ================================================ function [StateSpaceModel] = func_Update_ecMPC_SSM_Augmented(VehiclePara, MPCParameters, Vel) % generate State-space model lfr = VehiclePara.L; Ts = MPCParameters.Ts; Au = [1, 0, Vel*Ts/lfr; -Vel*Ts, 1, 0; 0, 0, 1]; Bu1 = [Vel*Ts/lfr; 0; 1]; Bu2 = [-Vel*Ts/lfr; 0; 0]; C = [1, 0, 0; 0, 1, 0]; StateSpaceModel.Au = Au; StateSpaceModel.Bu1 = Bu1; StateSpaceModel.Bu2 = Bu2; StateSpaceModel.C = C; end % EoF ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/func_bezierInterp.m ================================================ % Bezier interpolation for given four control points. % Each control point can be in N-Dimensional vector space. % Input: % P0,P1,P2,P3: four control points of bezier curve, % control points can have any number of coordinates % t(optional arg):vector that holds paramter t values b/w 0 and 1 at which % bezier curve is evaluated (default 101 values between 0 % and 1.) % Output: % Q evaluated values of bezier curves. Number of columns of Q are equal to % number of coordinates in control point. For example for 2-D, Q has two % columns. Column 1 for x value and column 2 for y values. Similarly for % 3-D, Q will have three columns function Q=func_bezierInterp(P0,P1,P2,P3,varargin) %%% Default Values %%% t=linspace(0,1,101); % uniform parameterization defaultValues = {t}; %%% Assign Valus %%% nonemptyIdx = ~cellfun('isempty',varargin); defaultValues(nonemptyIdx) = varargin(nonemptyIdx); [t] = deal(defaultValues{:}); % % -------------------------------- M=[-1 3 -3 1; 3 -6 3 0; -3 3 0 0; 1 0 0 0]; for k=1:length(t) Q(k,:)=[t(k)^3 t(k)^2 t(k) 1]*M*[P0;P1;P2;P3]; end % % Ref: Mathematical Elements of Computer Graphics by % % David F. Rogers and J. Alan Adams (pg. 296) % % -------------------------------- % % OR % % Equation of Bezier Curve, utilizes Horner's rule for efficient computation. % % Q(t)=(-P0 + 3*(P1-P2) + P3)*t^3 + 3*(P0-2*P1+P2)*t^2 + 3*(P1-P0)*t + Px0 % c3 = -P0 + 3*(P1-P2) + P3; % c2 = 3*(P0 - (2*P1)+P2); % c1 = 3*(P1 - P0); % c0 = P0; % for k=1:length(t) % Q(k,:)=((c3*t(k)+c2)*t(k)+c1)*t(k) + c0; % end % % % -------------------------------- % % % Author: Dr. Murtaza Khan % % % Email : drkhanmurtaza@gmail.com % % % -------------------------------- ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/osqp.m ================================================ classdef osqp < handle % osqp interface class for OSQP solver v0.5.0 % This class provides a complete interface to the C implementation % of the OSQP solver. % % osqp Properties: % objectHandle - pointer to the C structure of OSQP solver % % osqp Methods: % % setup - configure solver with problem data % solve - solve the QP % update - modify problem vectors % warm_start - set warm starting variables x and y % % default_settings - create default settings structure % current_settings - get the current solver settings structure % update_settings - update the current solver settings structure % % get_dimensions - get the number of variables and constraints % version - return OSQP version % constant - return a OSQP internal constant % % codegen - generate embeddable C code for the problem properties (SetAccess = private, Hidden = true) objectHandle % Handle to underlying C instance end methods(Static) %% function out = default_settings() % DEFAULT_SETTINGS get the default solver settings structure out = osqp_mex('default_settings', 'static'); % Convert linsys solver to string out.linsys_solver = linsys_solver_to_string(out.linsys_solver); end %% function out = constant(constant_name) % CONSTANT Return solver constant % C = CONSTANT(CONSTANT_NAME) return constant called CONSTANT_NAME out = osqp_mex('constant', 'static', constant_name); end %% function out = version() % Return OSQP version out = osqp_mex('version', 'static'); end end methods %% Constructor - Create a new solver instance function this = osqp(varargin) % Construct OSQP solver class this.objectHandle = osqp_mex('new', varargin{:}); end %% Destructor - destroy the solver instance function delete(this) % Destroy OSQP solver class osqp_mex('delete', this.objectHandle); end %% function out = current_settings(this) % CURRENT_SETTINGS get the current solver settings structure out = osqp_mex('current_settings', this.objectHandle); % Convert linsys solver to string out.linsys_solver = linsys_solver_to_string(out.linsys_solver); end %% function update_settings(this,varargin) % UPDATE_SETTINGS update the current solver settings structure %second input 'false' means that this is *not* a settings %initialization, so some parameter/values will be disallowed newSettings = validateSettings(this,false,varargin{:}); %write the solver settings. C-mex does not check input %data or protect against disallowed parameter modifications osqp_mex('update_settings', this.objectHandle, newSettings); end %% function [n,m] = get_dimensions(this) % GET_DIMENSIONS get the number of variables and constraints [n,m] = osqp_mex('get_dimensions', this.objectHandle); end %% function update(this,varargin) % UPDATE modify the linear cost term and/or lower and upper bounds %second input 'false' means that this is *not* a settings %initialization, so some parameter/values will be disallowed allowedFields = {'q','l','u','Px','Px_idx','Ax','Ax_idx'}; if(isempty(varargin)) return; elseif(length(varargin) == 1) if(~isstruct(varargin{1})) error('Single input should be a structure with new problem data'); else newData = varargin{1}; end else % param / value style assumed newData = struct(varargin{:}); end %check for unknown fields newFields = fieldnames(newData); badFieldsIdx = find(~ismember(newFields,allowedFields)); if(~isempty(badFieldsIdx)) error('Unrecognized input field ''%s'' detected',newFields{badFieldsIdx(1)}); end %get all of the terms. Nonexistent fields will be passed %as empty mxArrays try q = double(full(newData.q(:))); catch q = []; end try l = double(full(newData.l(:))); catch l = []; end try u = double(full(newData.u(:))); catch u = []; end try Px = double(full(newData.Px(:))); catch Px = []; end try Px_idx = double(full(newData.Px_idx(:))); catch Px_idx = []; end try Ax = double(full(newData.Ax(:))); catch Ax = []; end try Ax_idx = double(full(newData.Ax_idx(:))); catch Ax_idx = []; end [n,m] = get_dimensions(this); assert(isempty(q) || length(q) == n, 'input ''q'' is the wrong size'); assert(isempty(l) || length(l) == m, 'input ''u'' is the wrong size'); assert(isempty(u) || length(u) == m, 'input ''l'' is the wrong size'); assert(isempty(Px) || isempty(Px_idx) || length(Px) == length(Px_idx), ... 'inputs ''Px'' and ''Px_idx'' must be the same size'); assert(isempty(Ax) || isempty(Ax_idx) || length(Ax) == length(Ax_idx), ... 'inputs ''Ax'' and ''Ax_idx'' must be the same size'); % Adjust index of Px_idx and Ax_idx to match 0-based indexing % in C if (~isempty(Px_idx)) Px_idx = Px_idx - 1; end if (~isempty(Ax_idx)) Ax_idx = Ax_idx - 1; end % Convert infinity values to OSQP_INFTY if (~isempty(u)) u = min(u, osqp.constant('OSQP_INFTY')); end if (~isempty(l)) l = max(l, -osqp.constant('OSQP_INFTY')); end %write the new problem data. C-mex does not protect %against unknown fields, but will handle empty values osqp_mex('update', this.objectHandle, ... q, l, u, Px, Px_idx, length(Px), Ax, Ax_idx, length(Ax)); end %% function varargout = setup(this, varargin) % SETUP configure solver with problem data % % setup(P,q,A,l,u,options) nargin = length(varargin); %dimension checks on user data. Mex function does not %perform any checks on inputs, so check everything here assert(nargin >= 5, 'incorrect number of inputs'); [P,q,A,l,u] = deal(varargin{1:5}); % % Get problem dimensions % % Get number of variables n if (isempty(P)) if (~isempty(q)) n = length(q); else if (~isempty(A)) n = size(A, 2); else error('The problem does not have any variables'); end end else n = size(P, 1); end % Get number of constraints m if (isempty(A)) m = 0; else m = size(A, 1); end % % Create sparse matrices and full vectors if they are empty % if (isempty(P)) P = sparse(n, n); else P = sparse(P); end if (isempty(q)) q = zeros(n, 1); else q = full(q(:)); end % Create proper constraints if they are not passed if (isempty(A) && (~isempty(l) || ~isempty(u))) || ... (~isempty(A) && (isempty(l) && isempty(u))) error('A must be supplied together with at least one bound l or u'); end if (~isempty(A) && isempty(l)) l = -Inf(m, 1); end if (~isempty(A) && isempty(u)) u = Inf(m, 1); end if (isempty(A)) A = sparse(m, n); l = -Inf(m, 1); u = Inf(m, 1); else l = full(l(:)); u = full(u(:)); A = sparse(A); end % % Check vector dimensions (not checked from the C solver) % assert(length(q) == n, 'Incorrect dimension of q'); assert(length(l) == m, 'Incorrect dimension of l'); assert(length(u) == m, 'Incorrect dimension of u'); % % Convert infinity values to OSQP_INFINITY % u = min(u, osqp.constant('OSQP_INFTY')); l = max(l, -osqp.constant('OSQP_INFTY')); %make a settings structure from the remainder of the arguments. %'true' means that this is a settings initialization, so all %parameter/values are allowed. No extra inputs will result %in default settings being passed back theSettings = validateSettings(this,true,varargin{6:end}); [varargout{1:nargout}] = osqp_mex('setup', this.objectHandle, n,m,P,q,A,l,u,theSettings); end %% function warm_start(this, varargin) % WARM_START warm start primal and/or dual variables % % warm_start('x', x, 'y', y) % % or warm_start('x', x) % or warm_start('y', y) % Get problem dimensions [n, m] = get_dimensions(this); % Get data allowedFields = {'x','y'}; if(isempty(varargin)) return; elseif(length(varargin) == 1) if(~isstruct(varargin{1})) error('Single input should be a structure with new problem data'); else newData = varargin{1}; end else % param / value style assumed newData = struct(varargin{:}); end %check for unknown fields newFields = fieldnames(newData); badFieldsIdx = find(~ismember(newFields,allowedFields)); if(~isempty(badFieldsIdx)) error('Unrecognized input field ''%s'' detected',newFields{badFieldsIdx(1)}); end %get all of the terms. Nonexistent fields will be passed %as empty mxArrays try x = double(full(newData.x(:))); catch x = []; end try y = double(full(newData.y(:))); catch y = []; end % Check dimensions assert(isempty(x) || length(x) == n, 'input ''x'' is the wrong size'); assert(isempty(y) || length(y) == m, 'input ''y'' is the wrong size'); % Decide which function to call if (~isempty(x) && isempty(y)) osqp_mex('warm_start_x', this.objectHandle, x); return; end if (isempty(x) && ~isempty(y)) osqp_mex('warm_start_y', this.objectHandle, y); end if (~isempty(x) && ~isempty(y)) osqp_mex('warm_start', this.objectHandle, x, y); end if (isempty(x) && isempty(y)) error('Unrecognized fields'); end end %% function varargout = solve(this, varargin) % SOLVE solve the QP nargoutchk(0,1); %either return nothing (but still solve), or a single output structure [out.x, out.y, out.prim_inf_cert, out.dual_inf_cert, out.info] = osqp_mex('solve', this.objectHandle); if(nargout) varargout{1} = out; end return; end %% function codegen(this, target_dir, varargin) % CODEGEN generate C code for the parametric problem % % codegen(target_dir,options) % Parse input arguments p = inputParser; defaultProject = ''; expectedProject = {'', 'Makefile', 'MinGW Makefiles', 'Unix Makefiles', 'CodeBlocks', 'Xcode'}; defaultParams = 'vectors'; expectedParams = {'vectors', 'matrices'}; defaultMexname = 'emosqp'; defaultFW = false; addRequired(p, 'target_dir', @isstr); addParameter(p, 'project_type', defaultProject, ... @(x) any(validatestring(x, expectedProject))); addParameter(p, 'parameters', defaultParams, ... @(x) any(validatestring(x, expectedParams))); addParameter(p, 'mexname', defaultMexname, @isstr); addParameter(p, 'force_rewrite', defaultFW, @islogical); parse(p, target_dir, varargin{:}); % Set internal variables if strcmp(p.Results.parameters, 'vectors') embedded = 1; else embedded = 2; end if strcmp(p.Results.project_type, 'Makefile') if (ispc) project_type = 'MinGW Makefiles'; % Windows elseif (ismac || isunix) project_type = 'Unix Makefiles'; % Unix end else project_type = p.Results.project_type; end % Check whether the specified directory already exists if exist(target_dir, 'dir') if p.Results.force_rewrite rmdir(target_dir, 's'); else while(1) prompt = sprintf('Directory "%s" already exists. Do you want to replace it? y/n [y]: ', target_dir); str = input(prompt, 's'); if any(strcmpi(str, {'','y'})) rmdir(target_dir, 's'); break; elseif strcmpi(str, 'n') return; end end end end % Import OSQP path [osqp_path,~,~] = fileparts(which('osqp.m')); % Add codegen directory to path addpath(fullfile(osqp_path, 'codegen')); % Path of osqp module cg_dir = fullfile(osqp_path, 'codegen'); files_to_generate_path = fullfile(cg_dir, 'files_to_generate'); % Get workspace structure work = osqp_mex('get_workspace', this.objectHandle); % Make target directory fprintf('Creating target directories...\t\t\t\t\t'); target_configure_dir = fullfile(target_dir, 'configure'); target_include_dir = fullfile(target_dir, 'include'); target_src_dir = fullfile(target_dir, 'src'); if ~exist(target_dir, 'dir') mkdir(target_dir); end if ~exist(target_configure_dir, 'dir') mkdir(target_configure_dir); end if ~exist(target_include_dir, 'dir') mkdir(target_include_dir); end if ~exist(target_src_dir, 'dir') mkdir(fullfile(target_src_dir, 'osqp')); end fprintf('[done]\n'); % Copy source files to target directory fprintf('Copying OSQP source files...\t\t\t\t\t'); cdir = fullfile(cg_dir, 'sources', 'src'); cfiles = dir(fullfile(cdir, '*.c')); for i = 1 : length(cfiles) if embedded == 1 % Do not copy kkt.c if embedded is 1 if ~strcmp(cfiles(i).name, fullfile(cdir, 'kkt.c')) copyfile(fullfile(cdir, cfiles(i).name), ... fullfile(target_src_dir, 'osqp', cfiles(i).name)); end else copyfile(fullfile(cdir, cfiles(i).name), ... fullfile(target_src_dir, 'osqp', cfiles(i).name)); end end configure_dir = fullfile(cg_dir, 'sources', 'configure'); configure_files = dir(fullfile(configure_dir, '*.h.in')); for i = 1 : length(configure_files) copyfile(fullfile(configure_dir, configure_files(i).name), ... fullfile(target_configure_dir, configure_files(i).name)); end hdir = fullfile(cg_dir, 'sources', 'include'); hfiles = dir(fullfile(hdir, '*.h')); for i = 1 : length(hfiles) copyfile(fullfile(hdir, hfiles(i).name), ... fullfile(target_include_dir, hfiles(i).name)); end fprintf('[done]\n'); % Copy example.c copyfile(fullfile(files_to_generate_path, 'example.c'), target_src_dir); % Render CMakeLists.txt fidi = fopen(fullfile(files_to_generate_path, 'CMakeLists.txt'),'r'); fido = fopen(fullfile(target_dir, 'CMakeLists.txt'),'w'); while ~feof(fidi) l = fgetl(fidi); % read line % Replace EMBEDDED_FLAG in CMakeLists.txt by a numerical value newl = strrep(l, 'EMBEDDED_FLAG', num2str(embedded)); fprintf(fido, '%s\n', newl); end fclose(fidi); fclose(fido); % Render workspace.h work_hfile = fullfile(target_include_dir, 'workspace.h'); fprintf('Generating workspace.h...\t\t\t\t\t\t'); render_workspace(work, work_hfile, embedded); fprintf('[done]\n'); % Create project if ~isempty(project_type) fprintf('Creating project...\t\t\t\t\t\t\t\t'); orig_dir = pwd; cd(target_dir); mkdir('build') cd('build'); cmd = sprintf('cmake -G "%s" ..', project_type); [status, output] = system(cmd); if(status) fprintf('\n'); fprintf(output); error('Error configuring CMake environment'); else fprintf('[done]\n'); end cd(orig_dir); end % Make mex interface to the generated code mex_cfile = fullfile(files_to_generate_path, 'emosqp_mex.c'); make_emosqp(target_dir, mex_cfile, embedded); % Rename the mex file old_mexfile = ['emosqp_mex.', mexext]; new_mexfile = [p.Results.mexname, '.', mexext]; movefile(old_mexfile, new_mexfile); end end end function currentSettings = validateSettings(this,isInitialization,varargin) %don't allow these fields to be changed unmodifiableFields = {'scaling', 'linsys_solver'}; %get the current settings if(isInitialization) currentSettings = osqp_mex('default_settings', this.objectHandle); else currentSettings = osqp_mex('current_settings', this.objectHandle); end %no settings passed -> return defaults if(isempty(varargin)) return; end %check for structure style input if(isstruct(varargin{1})) newSettings = varargin{1}; assert(length(varargin) == 1, 'too many input arguments'); else newSettings = struct(varargin{:}); end %get the osqp settings fields currentFields = fieldnames(currentSettings); %get the requested fields in the update newFields = fieldnames(newSettings); %check for unknown parameters badFieldsIdx = find(~ismember(newFields,currentFields)); if(~isempty(badFieldsIdx)) error('Unrecognized solver setting ''%s'' detected',newFields{badFieldsIdx(1)}); end %convert linsys_solver string to integer if ismember('linsys_solver',newFields) if ~ischar(newSettings.linsys_solver) error('Setting linsys_solver is required to be a string.'); end % Convert linsys_solver to number newSettings.linsys_solver = string_to_linsys_solver(newSettings.linsys_solver); end %check for disallowed fields if this in not an initialization call if(~isInitialization) badFieldsIdx = find(ismember(newFields,unmodifiableFields)); for i = badFieldsIdx(:)' if(~isequal(newSettings.(newFields{i}),currentSettings.(newFields{i}))) error('Solver setting ''%s'' can only be changed at solver initialization.', newFields{i}); end end end %check that everything is a nonnegative scalar (this check is already %performed in C) % for i = 1:length(newFields) % val = double(newSettings.(newFields{i})); % assert(isscalar(val) & isnumeric(val) & val >= 0, ... % 'Solver setting ''%s'' not specified as nonnegative scalar', newFields{i}); % end %everything checks out - merge the newSettings into the current ones for i = 1:length(newFields) currentSettings.(newFields{i}) = double(newSettings.(newFields{i})); end end function [linsys_solver_string] = linsys_solver_to_string(linsys_solver) % Convert linear systme solver integer to stringh switch linsys_solver case osqp.constant('QDLDL_SOLVER') linsys_solver_string = 'qdldl'; case osqp.constant('MKL_PARDISO_SOLVER') linsys_solver_string = 'mkl pardiso'; otherwise error('Unrecognized linear system solver.'); end end function [linsys_solver] = string_to_linsys_solver(linsys_solver_string) linsys_solver_string = lower(linsys_solver_string); switch linsys_solver_string case 'qdldl' linsys_solver = osqp.constant('QDLDL_SOLVER'); case 'mkl pardiso' linsys_solver = osqp.constant('MKL_PARDISO_SOLVER'); % Default solver: QDLDL case '' linsys_solver = osqp.constant('QDLDL_SOLVER'); otherwise warning('Linear system solver not recognized. Using default solver QDLDL.') linsys_solver = osqp.constant('QDLDL_SOLVER'); end end ================================================ FILE: Chapter-4/chap4_MPC_ErrorModel_PathTracking/qpOASES_options.m ================================================ %qpOASES -- An Implementation of the Online Active Set Strategy. %Copyright (C) 2007-2015 by Hans Joachim Ferreau, Andreas Potschka, %Christian Kirches et al. All rights reserved. % %qpOASES is distributed under the terms of the %GNU Lesser General Public License 2.1 in the hope that it will be %useful, but WITHOUT ANY WARRANTY; without even the implied warranty %of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. %See the GNU Lesser General Public License for more details. % %--------------------------------------------------------------------------------- % %Returns a struct containing values for all options to be used within qpOASES. % %Call % options = qpOASES_options( 'default' ); % options = qpOASES_options( 'reliable' ); % options = qpOASES_options( 'MPC' ); %to obtain a set of default options or a pre-defined set of options tuned %for reliable or fast QP solution, respectively. % %Call % options = qpOASES_options( 'option1',value1,'option2',value2,... ) %to obtain a set of default options but with 'option1' set to value1 etc. % %Call % options = qpOASES_options( oldOptions,'option1',value1,... ) %to obtain a copy of the options struct oldOptions but with 'option1' set %to value1 etc. % %Call % options = qpOASES_options( 'default', 'option1',value1,... ) % options = qpOASES_options( 'reliable','option1',value1,... ) % options = qpOASES_options( 'MPC', 'option1',value1,... ) %to obtain a set of default options or a pre-defined set of options tuned %for reliable or fast QP solution, respectively, but with 'option1' set to %value1 etc. % % %qpOASES features the following options: % maxIter - Maximum number of iterations (if set % to -1, a value is chosen heuristically) % maxCpuTime - Maximum CPU time in seconds (if set % to -1, only iteration limit is used) % printLevel - 0: no printed output, % 1: only error messages are printed, % 2: iterations and error messages are printed, % 3: all available messages are printed. % % enableRamping - Enables (1) or disables (0) ramping. % enableFarBounds - Enables (1) or disables (0) the use of % far bounds. % enableFlippingBounds - Enables (1) or disables (0) the use of % flipping bounds. % enableRegularisation - Enables (1) or disables (0) automatic % Hessian regularisation. % enableFullLITests - Enables (1) or disables (0) condition-hardened % (but more expensive) LI test. % enableNZCTests - Enables (1) or disables (0) nonzero curvature % tests. % enableDriftCorrection - Specifies the frequency of drift corrections: % 0: turns them off, % 1: uses them at each iteration etc. % enableCholeskyRefactorisation - Specifies the frequency of a full re- % factorisation of projected Hessian matrix: % 0: turns them off, % 1: uses them at each iteration etc. % enableEqualities - Specifies whether equalities should be treated % as always active (1) or not (0) % % terminationTolerance - Relative termination tolerance to stop homotopy. % boundTolerance - If upper and lower bounds differ less than this % tolerance, they are regarded equal, i.e. as % equality constraint. % boundRelaxation - Initial relaxation of bounds to start homotopy % and initial value for far bounds. % epsNum - Numerator tolerance for ratio tests. % epsDen - Denominator tolerance for ratio tests. % maxPrimalJump - Maximum allowed jump in primal variables in % nonzero curvature tests. % maxDualJump - Maximum allowed jump in dual variables in % linear independence tests. % % initialRamping - Start value for ramping strategy. % finalRamping - Final value for ramping strategy. % initialFarBounds - Initial size for far bounds. % growFarBounds - Factor to grow far bounds. % initialStatusBounds - Initial status of bounds at first iteration: % 0: all bounds inactive, % -1: all bounds active at their lower bound, % +1: all bounds active at their upper bound. % epsFlipping - Tolerance of squared Cholesky diagonal factor % which triggers flipping bound. % numRegularisationSteps - Maximum number of successive regularisation steps. % epsRegularisation - Scaling factor of identity matrix used for % Hessian regularisation. % numRefinementSteps - Maximum number of iterative refinement steps. % epsIterRef - Early termination tolerance for iterative % refinement. % epsLITests - Tolerance for linear independence tests. % epsNZCTests - Tolerance for nonzero curvature tests. % % %See also QPOASES, QPOASES_SEQUENCE, QPOASES_AUXINPUT % % %For additional information see the qpOASES User's Manual or %visit http://www.qpOASES.org/. % %Please send remarks and questions to support@qpOASES.org! function [ options ] = qpOASES_options( varargin ) firstIsStructOrScheme = 0; if ( nargin == 0 ) options = qpOASES_default_options(); else if ( isstruct( varargin{1} ) ) if ( mod( nargin,2 ) ~= 1 ) error('ERROR (qpOASES_options): Options must be specified in pairs!'); end options = varargin{1}; firstIsStructOrScheme = 1; else if ( ischar( varargin{1} ) ) if ( mod( nargin,2 ) == 0 ) options = qpOASES_default_options(); else if ( ( nargin > 1 ) && ( ischar( varargin{nargin} ) ) ) error('ERROR (qpOASES_options): Options must be specified in pairs!'); end switch ( varargin{1} ) case 'default' options = qpOASES_default_options(); case 'reliable' options = qpOASES_reliable_options(); case {'MPC','mpc','fast'} options = qpOASES_MPC_options(); otherwise error( ['ERROR (qpOASES_options): Only the following option schemes are defined: ''default'', ''reliable'', ''MPC''!'] ); end firstIsStructOrScheme = 1; end else error('ERROR (qpOASES_options): First argument needs to be a string or an options struct!'); end end end % set options to user-defined values for i=(1+firstIsStructOrScheme):2:nargin argName = varargin{i}; argValue = varargin{i+1}; if ( ( isempty( argName ) ) || ( ~ischar( argName ) ) ) error('ERROR (qpOASES_options): Argmument no. %d has to be a non-empty string!',i ); end if ( ( ischar(argValue) ) || ( ~isscalar( argValue ) ) ) error('ERROR (qpOASES_options): Argmument no. %d has to be a scalar constant!',i+1 ); end if ( ~isfield( options,argName ) ) error('ERROR (qpOASES_options): Argmument no. %d is an invalid option!',i ); end eval( ['options.',argName,' = ',num2str(argValue),';'] ); end end function [ options ] = qpOASES_default_options( ) % setup options struct with default values options = struct( 'maxIter', -1, ... 'maxCpuTime', -1, ... 'printLevel', 1, ... ... 'enableRamping', 1, ... 'enableFarBounds', 1, ... 'enableFlippingBounds', 1, ... 'enableRegularisation', 0, ... 'enableFullLITests', 0, ... 'enableNZCTests', 1, ... 'enableDriftCorrection', 1, ... 'enableCholeskyRefactorisation', 0, ... 'enableEqualities', 0, ... ... 'terminationTolerance', 5.0e6*eps, ... 'boundTolerance', 1.0e6*eps, ... 'boundRelaxation', 1.0e4, ... 'epsNum', -1.0e3*eps, ... 'epsDen', 1.0e3*eps, ... 'maxPrimalJump', 1.0e8, ... 'maxDualJump', 1.0e8, ... ... 'initialRamping', 0.5, ... 'finalRamping', 1.0, ... 'initialFarBounds', 1.0e6, ... 'growFarBounds', 1.0e3, ... 'initialStatusBounds', -1, ... 'epsFlipping', 1.0e3*eps, ... 'numRegularisationSteps', 0, ... 'epsRegularisation', 1.0e3*eps, ... 'numRefinementSteps', 1, ... 'epsIterRef', 1.0e2*eps, ... 'epsLITests', 1.0e5*eps, ... 'epsNZCTests', 3.1e3*eps ); end function [ options ] = qpOASES_reliable_options( ) % setup options struct with values for most reliable QP solution options = qpOASES_default_options( ); options.enableFullLITests = 1; options.enableCholeskyRefactorisation = 1; options.numRefinementSteps = 2; end function [ options ] = qpOASES_MPC_options( ) % setup options struct with values for most reliable QP solution options = qpOASES_default_options( ); options.enableRamping = 0; options.enableFarBounds = 1; options.enableFlippingBounds = 0; options.enableRegularisation = 1; options.enableNZCTests = 0; options.enableDriftCorrection = 0; options.enableEqualities = 1; options.terminationTolerance = 1.0e9*eps; options.initialStatusBounds = 0; options.numRegularisationSteps = 1; options.numRefinementSteps = 0; end ================================================ FILE: Chapter-4/chap4_MPC_GivenPathTracking/Func_Alpha_Pos.m ================================================ function K=Func_Alpha_Pos(Xb,Yb,Xn,Yn) AngleY=Yn-Yb; AngleX=Xn-Xb; %***Angle*******% if Xb==Xn if Yn>Yb K=pi/2; else K=3*pi/2; end else if Yb==Yn if Xn>Xb K=0; else K=pi; end else K=atan(AngleY/AngleX); end end %****K,ʹ֮0~360֮*****% if (AngleY>0&&AngleX>0)%һ K=K; elseif (AngleY>0&&AngleX<0)||(AngleY<0&&AngleX<0)%ڶ K=K+pi; else if (AngleY<0&&AngleX>0)% K=K+2*pi; else K=K; end end end ================================================ FILE: Chapter-4/chap4_MPC_GivenPathTracking/Func_Theta_Pos.m ================================================ function Theta=Func_Theta_Pos(Alpha) if Alpha >= 3*pi/2 Theta = Alpha-3*pi/2; else Theta = Alpha+pi/2; end end ================================================ FILE: Chapter-4/chap4_MPC_GivenPathTracking/MPC_MPC_GivenPathTracking.mdl ================================================ Model { Name "MPC_MPC_GivenPathTracking" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.265" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "RollModelMPCCurvePathTracking" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [2382.0, 92.0, 915.0, 681.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [865.0, 504.0] ZoomFactor [1.25] Offset [-1.1925252257034913, 167.59999999999997] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Sun Sep 01 22:50:32 2019" RTWModifiedTimeStamp 489279028 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "MPC_MPC_GivenPathTracking" Array { Type "Cell" Dimension 1 Cell "MPC_MPC_GivenPathTracking" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "40" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType Memory X0 "0" InheritSampleTime off LinearizeMemory off LinearizeAsDelay off StateMustResolveToSignalObject off RTWStateStorageClass "Auto" } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "MPC_MPC_GivenPathTracking" Location [2382, 92, 3297, 773] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" SIDHighWatermark "143" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [1, 1] Position [330, 179, 430, 241] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "LEO_MPC_GivenPathTrackingCtrl.sim" } Block { BlockType Demux Name "Demux" SID "135" Ports [1, 2] Position [170, 361, 180, 439] ZOrder 30 BlockMirror on ShowName off Outputs "[2 7]" DisplayOption "bar" } Block { BlockType Memory Name "Memory" SID "143" Position [185, 195, 215, 225] ZOrder 34 X0 "1" InheritSampleTime on } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [255, 366, 535, 434] ZOrder 12 BlockMirror on FunctionName "Main_MPC_GivenPathTracking" EnableBusSupport off } Block { BlockType Terminator Name "Terminator" SID "136" Position [95, 405, 130, 435] ZOrder 31 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace" SID "115" Ports [1] Position [230, 295, 290, 325] ZOrder 19 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 116 SrcBlock "CarSim S-Function" SrcPort 1 Points [151, 0; 0, 190] DstBlock "S-Function" DstPort 1 } Line { ZOrder 130 SrcBlock "S-Function" SrcPort 1 Points [-41, 0] Branch { ZOrder 177 DstBlock "Demux" DstPort 1 } Branch { ZOrder 176 Points [0, -90] DstBlock "To Workspace" DstPort 1 } } Line { ZOrder 178 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Line { ZOrder 184 SrcBlock "Demux" SrcPort 1 Points [-52, 0; 0, -170] DstBlock "Memory" DstPort 1 } Line { ZOrder 187 SrcBlock "Memory" SrcPort 1 DstBlock "CarSim S-Function" DstPort 1 } } } ================================================ FILE: Chapter-4/chap4_MPC_GivenPathTracking/Main_MPC_GivenPathTracking.m ================================================ function [sys,x0,str,ts] = Main_MPC_GivenPathTracking(t,x,u,flag) %***************************************************************% % ڳ˶ѧģʵָο켣ĸ % ΪٶȺǰƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % end % end sfuntmpl %============================================================== % Initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes %***************************************************************% % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. %***************************************************************% sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 3; sizes.NumOutputs = 9; sizes.NumInputs = 10; sizes.DirFeedthrough = 1; % Matrix D is non-empty. sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = zeros(sizes.NumDiscStates,1);%initial the state vector str = []; % Set str to an empty matrix. ts = [0.05 0]; % sample time: [period, offset] global MPCParameters; MPCParameters.Ts = 0.05; %Set the sample time MPCParameters.Np = 30;% predictive horizon MPCParameters.Nc = 30;% control horizon MPCParameters.Nx = 3; %number of state variables MPCParameters.Nu = 2; %number of control inputs MPCParameters.Ny = 3; %number of output variables MPCParameters.Qx = 10; % cost weight factor MPCParameters.Qy = 10; % cost weight factor MPCParameters.Qphi = 10; % cost weight factor MPCParameters.R_dv = 5; % cost weight factor MPCParameters.R_du = 5; % cost weight factor MPCParameters.qp_solver = 0; %0: default, quadprog; 1:qpOASES; 2:CVXGEN MPCParameters.refspeedT = 0; %0: default, straight-lane profile; %1:circle path profile MPCParameters.umin = [-0.2; -0.436;]; % MPCParameters.umax = [0.2; 0.436]; % the max MPCParameters.dumin = [-0.05; -0.0082;]; % MPCParameters.dumax = [0.05; 0.0082]; % global WarmStart; WarmStart = zeros(MPCParameters.Nu * MPCParameters.Nc,1); global InitialGapflag; InitialGapflag = 0; % Ignore the first few inputs from CarSim % Initialize the discrete states. %End of mdlInitializeSizes %============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u) % Ŀǰûọ̃ںڵijģ黯ʱԼܡ sys = x; % end %End of mdlUpdate. %============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u) global InitialGapflag; global MPCParameters; global WarmStart; Ts = MPCParameters.Ts; Np = MPCParameters.Np; Nc = MPCParameters.Nc; Nx = MPCParameters.Nx; Nu = MPCParameters.Nu; % lfr = 2.78; % D-class Sedan lfr = 2.6; % D-class SUV Vel_des = 0.0; Steer_des = 0.0; t_Start = tic; % ʼʱ if InitialGapflag < 2 % get rid of the first two inputs InitialGapflag = InitialGapflag + 1;% else %***********Step (1). Update vehicle states *************************% % ȡCarSim뵽Simulink x_L2 = u(1); %x x_R2 = u(2); %Һx y_L2 = u(3); %y y_R2 = u(4); %Һy Yaw_angle = u(5)*pi/180;%Unitdeg-->rad Steer_SW = u(6); %̽Ƕ Steer_L1 = u(7); %ǰƫ Steer_R1 = u(8); %ǰƫ Vx_L2 = u(9); %ٶȣUnit:km/h Vx_R2 = u(10); %ҺٶȣUnit:km/h VehPos.X = 0.5*(x_L2 + x_R2);%X꣬Unit:m VehPos.Y = 0.5*(y_L2 + y_R2);%Y꣬Unit:m VehPos.Yaw_angle = Yaw_angle;%ǣUnit:rad Vx_km_h = 0.5*(Vx_L2 + Vx_R2);%Ĵٶ,Unitkm/h Steer_deg = 0.5*(Steer_L1 + Steer_R1);%ЧǰƫǣUnitdeg Vx_m_s = Vx_km_h/3.6;%%Ĵٶ in (m/s),Unitm/s Steer_rad = Steer_deg*pi/180;%Чǰƫin (rad)Unitdegs-->rad; %********Step(2): Generate reference speed profile *******************% switch MPCParameters.refspeedT, case 0 % default, straight lane profile %----趨ֱο·յ----------------------% V_ref = 5; %ο٣ unit:m/s StartPoint = [-1, 5]; %xy EndPoint = [10, 5]; %xy PrjPoint = func_GetProjectPoint_StraightLane(VehPos, StartPoint, EndPoint); case 1 % circle lane profile %----Circleʽ IJο·--------------% V_ref = 5; %ο٣ unit:m/s Circle_center = [0, 25]; %Բĵĺ, unit:m Circle_radius = 5; %ο٣unit:m/s PrjPoint = func_GetProjectPoint_Circle(VehPos, lfr, Circle_center, Circle_radius); otherwise % Unexpected flags % error(['unexpected path-profile:',num2str(MPCParameters.refspeedT)]); % Error handling end % end of switch %****Step(3): update lateral vehilce model***% kesi=zeros(Nx + Nu, 1); kesi(1)=VehPos.X - PrjPoint.X;% kesi(2)=VehPos.Y- PrjPoint.Y;% kesi(3)=VehPos.Yaw_angle - PrjPoint.Yaw_angle; % kesi(4)=Vx_m_s; kesi(5)=Steer_rad; Um = [Vx_m_s; Steer_rad]; cos2 = cos(PrjPoint.steer_rad)^2; Ad = [ 1 0 -V_ref*sin(PrjPoint.Yaw_angle)*Ts; 0 1 V_ref*cos(PrjPoint.Yaw_angle)*Ts; 0 0 1;]; Bd = [ cos(PrjPoint.Yaw_angle)*Ts 0; sin(PrjPoint.Yaw_angle)*Ts 0; tan(PrjPoint.steer_rad)*Ts/lfr V_ref*Ts/(lfr*cos2);]; A_aug_cell = cell(2,2); A_aug_cell{1,1} = Ad; A_aug_cell{1,2} = Bd; A_aug_cell{2,1} = zeros(Nu, Nx); A_aug_cell{2,2} = eye(Nu); A = cell2mat(A_aug_cell); B_aug_cell = cell(2,1); B_aug_cell{1,1} = Bd; B_aug_cell{2,1} = eye(Nu); B = cell2mat(B_aug_cell); C=[ 1 0 0 0 0; 0 1 0 0 0; 0 0 1 0 0]; %****Step(4): MPC formulation;********************% %Update Theta and PHI for future states prediction PHI_cell=cell(Np,1); THETA_cell=cell(Np,Nc); for j=1:1:Np PHI_cell{j,1}=C*A^j; %Ny * N_aug=Nx+Nu for k=1:1:Nc if k <= j THETA_cell{j,k}=C*A^(j-k)*B; %Ny * Nu else THETA_cell{j,k}=zeros(Nx,Nu);% end end end PHI=cell2mat(PHI_cell);%size(PHI)=[Nx*Np, Nx+Nu] THETA=cell2mat(THETA_cell);%size(THETA)=[Nx*Np, Nu*Nc)] %Update H and f for cost function J = 0.5U'HU +f'U Qq = diag([MPCParameters.Qx, MPCParameters.Qy, MPCParameters.Qphi]); Rr = diag([MPCParameters.R_dv, MPCParameters.R_du]); Q = kron(eye(Np), Qq); % Nx*Np,Nx*Np R = kron(eye(Nc), Rr); % Nu*Nc, Nu*Nc H = THETA'*Q*THETA + R; E_error = PHI*kesi; g = THETA' * Q * E_error; %Update bounds and constraints [A, b, Aeq, beq, lb, ub] = func_Constraints_du_quadprog(MPCParameters, Um); %****Step(5): Call qp-solver********************% options = optimset('Display','off', ... 'TolFun', 1e-8, ... 'MaxIter', 2000, ... 'Algorithm', 'active-set', ... 'FinDiffType', 'forward', ... 'RelLineSrchBnd', [], ... 'RelLineSrchBndDuration', 1, ... 'TolConSQP', 1e-8); warning off all % close the warnings during computation U0 = WarmStart; [U, FVAL, EXITFLAG] = quadprog(H, g, A, b, Aeq, beq, lb, ub, U0, options); % WarmStart = shiftHorizon(U, Nu); % Prepare restart, nominal close loop if (1 ~= EXITFLAG) %if optimization NOT succeeded. U(1) = 0.0; U(2) = 0.0; fprintf('MPC solver not converged!\n'); end Vel_des = U(1) + kesi(4) + V_ref; Steer_des = U(2) + kesi(5) + PrjPoint.steer_rad; Steer_des = 18.0 * (Steer_des*180/pi); end % End of if Initialflag < 1 % t_Elapsed = toc( t_Start ); %computation time sys= [Vel_des; Steer_des; t_Elapsed; Car_X; Car_Y; Yaw; Vx_m_s; Steer_rad; Steer_SW]; % end % End of mdlOutputs %============================================================== % sub functions %============================================================== function [PPx,PPy,slope]=func_GetProjectPoint(Xb,Yb,Xn,Yn,Xc,Yc) DifX=Xn-Xb; DifY=Yn-Yb; if DifX == 0 x=Xn; y=Yc; else if DifY == 0 x=Xc; y=Yn; else %k!=0 Kindex = DifY/DifX; bindex = Yb-Kindex*Xb; K = -1/Kindex; b = Yc-K*Xc; x = (bindex-b)/(K-Kindex); y = K*x+b; end end de=atan2(DifY,DifX); if de<0 de=de+2*pi; end PPx=x; PPy=y; slope = de; % end % End of func function PrjPoint = func_GetProjectPoint_StraightLane(VehPos, StartPoint, EndPoint) [PrjPoint.X,PrjPoint.Y,PrjPoint.Yaw_angle] = func_GetProjectPoint(StartPoint(1), StartPoint(2), ... EndPoint(1), EndPoint(2), ... VehPos.X, VehPos.Y); PrjPoint.steer_rad = 0.0; % end % End of func function PrjPoint = func_GetProjectPoint_Circle(VehPos, lfr, Circle_center, Circle_radius) CEN_x = Circle_center(1); CEN_y = Circle_center(2); Alpha_init = Func_Alpha_Pos(CEN_x,CEN_y,VehPos.X, VehPos.Y);%ȸݳλúԲȷalpha PrjPoint.X = Circle_radius*cos(Alpha_init) + CEN_x;%x PrjPoint.X = Circle_radius*sin(Alpha_init) + CEN_y;%y PrjPoint.Yaw_angle = Func_Theta_Pos(Alpha_init);%theta PrjPoint.steer_rad = atan(lfr/Circle_radius); %end %ENd of func function U0 = shiftHorizon(U, Nu) %shift control horizon U0 = [U(Nu+1:size(U,1)); zeros(Nu,1)]; % shiftHorizonPrepare restart function [A, b, Aeq, beq, lb, ub] = func_Constraints_du_quadprog(MPCParameters, um) %************************************************************************% % generate the constraints of the vehicle % %************************************************************************% Np = MPCParameters.Np; Nc = Np; Nu = MPCParameters.Nu; dumin = MPCParameters.dumin; dumax = MPCParameters.dumax; umin = MPCParameters.umin; umax = MPCParameters.umax; Umin = kron(ones(Nc,1),umin); Umax = kron(ones(Nc,1),umax); Ut = kron(ones(Nc,1),um); %----(1) A*x<=b----------% A_t=zeros(Nc,Nc); for p=1:1:Nc for q=1:1:Nc if p >= q A_t(p,q)=1; else A_t(p,q)=0; end end end A_I=kron(A_t,eye(Nu));%ӦfalconeԼľA,ڿ˻ A_cell=cell(2,1); A_cell{1,1} = A_I; % A_cell{2,1} = -A_I; A=cell2mat(A_cell); % b_cell=cell(2, 1); b_cell{1,1} = Umax - Ut; % b_cell{2,1} = -Umin + Ut; b=cell2mat(b_cell); % %----(2) Aeq*x=beq----------% Aeq = []; beq = []; %----(3) lb== q A_t(p,q)=1; else A_t(p,q)=0; end end end A_I=kron(A_t,eye(Nu));%ӦfalconeԼľA,ڿ˻ ubA = Umax - Ut; % lbA = Umin - Ut; %---- lb=rad Steer_SW = u(6); %̽Ƕ Steer_L1 = u(7); %ǰƫ Steer_R1 = u(8); %ǰƫ Vx_L2 = u(9); %ٶȣUnit:km/h Vx_R2 = u(10); %ҺٶȣUnit:km/h Car_X = 0.5*(x_L2 + x_R2);%X꣬Unit:m Car_Y = 0.5*(y_L2 + y_R2);%Y꣬Unit:m Vx_km_h = 0.5*(Vx_L2 + Vx_R2);%Ĵٶ,Unitkm/h Steer_deg = 0.5*(Steer_L1 + Steer_R1);%ЧǰƫǣUnitdeg kesi=zeros(Nx+Nu,1); kesi(1)=Car_X-r(1);%u(1)==X(1) kesi(2)=Car_Y-r(2);%u(2)==X(2) t_d = Yaw; kesi(3)=t_d-r(3); %u(3)==X(3) kesi(4)=Vx_km_h; kesi(5)=Steer_deg; fprintf('Update start, u(1)=%4.2f\n', Vx_km_h) fprintf('Update start, u(2)=%4.2f\n', Steer_deg) T=0.1; T_all=40;%ʱ趨ܵķʱ䣬ҪǷֹ켣Խ % Mobile Robot Parameters L = 2.6; % Mobile Robot variable %ʼ u_piao=zeros(Nx,Nu); Q=100*eye(Nx*Np,Nx*Np); R=5*eye(Nu*Nc); a=[1 0 -vd1*sin(t_d)*T; 0 1 vd1*cos(t_d)*T; 0 0 1;]; b=[cos(t_d)*T 0; sin(t_d)*T 0; tan(vd2)*T/L vd1*T/(cos(vd2)^2);]; A_cell=cell(2,2); B_cell=cell(2,1); A_cell{1,1}=a; A_cell{1,2}=b; A_cell{2,1}=zeros(Nu,Nx); A_cell{2,2}=eye(Nu); B_cell{1,1}=b; B_cell{2,1}=eye(Nu); A=cell2mat(A_cell); B=cell2mat(B_cell); C=[1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;]; PHI_cell=cell(Np,1); THETA_cell=cell(Np,Nc); for j=1:1:Np PHI_cell{j,1}=C*A^j; for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; else THETA_cell{j,k}=zeros(Nx,Nu); end end end PHI=cell2mat(PHI_cell);%size(PHI)=[Nx*Np Nx+Nu] THETA=cell2mat(THETA_cell);%size(THETA)=[Nx*Np Nu*(Nc+1)] H_cell=cell(2,2); H_cell{1,1}=THETA'*Q*THETA+R; H_cell{1,2}=zeros(Nu*Nc,1); H_cell{2,1}=zeros(1,Nu*Nc); H_cell{2,2}=Row; H=cell2mat(H_cell); error=PHI*kesi; f_cell=cell(1,2); f_cell{1,1}=2*error'*Q*THETA; f_cell{1,2}=0; % f=(cell2mat(f_cell))'; f=cell2mat(f_cell); f = f'; %% ΪԼ %ʽԼ A_t=zeros(Nc,Nc);%falcone P181 for p=1:1:Nc for q=1:1:Nc if q<=p A_t(p,q)=1; else A_t(p,q)=0; end end end A_I=kron(A_t,eye(Nu));%ӦfalconeԼľA,ڿ˻ Ut=kron(ones(Nc,1),U);%˴оĿڿƻ,ʱ˳ umin=[-0.2;-0.54;];%άƱĸͬ umax=[0.2;0.332]; delta_umin=[0.05;-0.0082;]; delta_umax=[0.05;0.0082]; Umin=kron(ones(Nc,1),umin); Umax=kron(ones(Nc,1),umax); A_cons_cell={A_I zeros(Nu*Nc,1);-A_I zeros(Nu*Nc,1)}; b_cons_cell={Umax-Ut;-Umin+Ut}; A_cons=cell2mat(A_cons_cell);%̣ⷽ״̬ʽԼתΪֵȡֵΧ b_cons=cell2mat(b_cons_cell);%̣ⷽ״̬ʽԼȡֵ % ״̬Լ M=10; delta_Umin=kron(ones(Nc,1),delta_umin); delta_Umax=kron(ones(Nc,1),delta_umax); lb=[delta_Umin;0];%̣ⷽ״̬½磬ʱڿɳ ub=[delta_Umax;M];%̣ⷽ״̬Ͻ磬ʱڿɳ %% ʼ % options = optimset('Algorithm','active-set'); options = optimset('Algorithm','interior-point-convex'); % options = optimoptions('quadprog','Algorithm','interior-point'); [X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,[],options); %% u_piao(1)=X(1); u_piao(2)=X(2); U(1)=kesi(4)+u_piao(1);%ڴ洢һʱ̵Ŀ U(2)=kesi(5)+u_piao(2); u_real(1)=U(1)+vd1; u_real(2)=U(2)+vd2; sys= [u_real; Car_X; Car_Y; Yaw; Vx_m_s; Steer_rad; Steer_SW]; toc % End of mdlOutputs. ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/Chapter4_MPC_SSM_PathTracking.par ================================================ PARSFILE #EXPANDED_PARSFILE 2.0 ! This is an expansion of the parsfile: "Runs\Run290.par" ! It contains the contents of that file plus the contents of any files linked ! with the "PARSFILE" or "SPECIAL_PARSFILE" keywords. ! File created: 18:43 on September 03, 2019 by CarSim Version 8.1a, October 2011 PRODUCT_NAME CarSim ENTER_PARSFILE Runs\Run290.par`09-01-2019`23:30:22 #FullDataName CarSim Run Control`Chapter4_MPC_SSM_PathTracking`BOOK_MPC_Examples #VehicleCode Ind_SA OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex137.par`09-01-2019`23:34:22 #FullDataName Models: Simulink`chapt4_MPC_SSM_PathCtrackingCtrl`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap4_MPC_SSM_PathTracking\MPC_SSM_CurvePathTracking.mdl #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 0 *USE_DIFF_SOLVERS 0 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap4_MPC_SSM_PathTracking *ALTERNATE_PATH E:\Carsim\Book_examples\chap4_MPC_SSM_PathTracking ENTER_PARSFILE IO_Channels\I_Channels\I_Ch123.par`09-01-2019`23:34:17 #FullDataName I/O Channels: Import`chapt4_SteeringSW_Imports`MPC_BOOK_Sim_Imports *README_FILE Programs\solvers\ReadMe\i_i_imports_tab.txt #MiscYellow0 IMP_STEER_SW Replace 0.0 1 #ENDMYellow #RingCtrl0 2 LOG_ENTRY Used Dataset: I/O Channels: Import; { MPC_BOOK_Sim_Imports } chapt4_SteeringSW_Imports #Library : I/O Channels: Import #DataSet : chapt4_SteeringSW_Imports #Category: MPC_BOOK_Sim_Imports #FileID : I_Ch123 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 23:34:17 #VehCode Import Channels EXIT_PARSFILE IO_Channels\I_Channels\I_Ch123.par #BlueLink0 I/O Channels: Import`chapt4_SteeringSW_Imports` MPC_BOOK_Sim_Imports` , Import ENTER_PARSFILE IO_Channels\O_Channels\O_Ch128.par`09-01-2019`23:33:43 #FullDataName I/O Channels: Export`chapt4_SSM_PathTracking_Exports`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Vx EXP_Xo EXP_Yo EXP_Yaw EXP_Ax EXP_Steer_L1 EXP_Steer_R1 #MiscYellow0 #Number of Selected Channels: 7 #CHN_NAME: Vx #CHN_NAME: Xo #CHN_NAME: Yo #CHN_NAME: Yaw #CHN_NAME: Ax #CHN_NAME: Steer_L1 #CHN_NAME: Steer_R1 #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } chapt4_SSM_PathTracking_Exports #Library : I/O Channels: Export #DataSet : chapt4_SSM_PathTracking_Exports #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch128 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 23:33:43 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch128.par #BlueLink1 I/O Channels: Export`chapt4_SSM_PathTracking_Exports` MPC_BOOK_Sim_Exports` , Export #MiscYellow1 simfile LEO_MPC_SSM_PathTrackingCtrl.sim #ENDMYellow LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } chapt4_MPC_SSM_PathCtrackingCtrl #Library : Models: Simulink #DataSet : chapt4_MPC_SSM_PathCtrackingCtrl #Category: BOOK_MPC_Models #FileID : Cmex137 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 23:34:22 #VehCode EXIT_PARSFILE Models\Simulink\Cmex137.par #BlueLink12 Models: Simulink`chapt4_MPC_SSM_PathCtrackingCtrl` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera107.par`08-02-2011`16:43:55 #FullDataName Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)`Vehicle Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw ENTER_PARSFILE Animator\Frames\Frame106.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw`Cameras ADD_REFERENCE_FRAME Cameras Camera Tracking X-Y-Z-Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_YAW_NAME yaw #MiscYellow0 cam_global_ambient .4 .4 .4 1 #ENDMYellow WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_yaw ANI_yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Cameras } Camera Tracking X-Y-Z-Yaw #Library : Animator: Reference Frame #DataSet : Camera Tracking X-Y-Z-Yaw #Category: Cameras #FileID : Frame106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame106.par #BlueLink0 Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw` Cameras` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 15 SET_DISTANCE 36 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 15 *SET_DISTANCE 36 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 37 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Vehicle Reference } Rear View High, Veh. Ref., (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View High, Veh. Ref., (Frt. Facing) #Category: Vehicle Reference #FileID : Camera107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera107.par #BlueLink0 Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)` Vehicle Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 1 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 0.753 0.753 0.753 SET_RUN_COLOR 0.753 0.753 0.753 FLAG_10 290 ID_RUN 290 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle165.par`08-23-2019`18:41:30 #FullDataName Vehicle: Assembly`D-Class, SUV LEO-defined`CS D-Class #VehCode Ind_SA #CheckBox0 0 #RingCtrl0 3 OPT_PT 3 #RingCtrl1 1 #RingCtrl2 3 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp119.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`D-Class, SUV - Front Comp.`CS D-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.611 *R_SPRING_R 0.611 *R_DAMPER_L 0.614 *R_DAMPER_R 0.614 *CT_FX_L 4.45e-6 *CT_FX_R 4.45e-6 *CS_FY_L -1.0e-06 *CS_FY_R -1.0e-06 *CS_MZ_L 3.8e-4 *CS_MZ_R 3.8e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 1.5e-5 *CI_FY_R 1.5e-5 *CI_MZ_L 3.1e-5 *CI_MZ_R 3.1e-5 *C_LONG_L 1.6e-5 *C_LONG_R 1.6e-5 *C_LAT_L 1.6e-5 *C_LAT_R 1.6e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.614 *R_JOUNCE_R 0.614 *R_REBOUND_L 0.614 *R_REBOUND_R 0.614 ENTER_PARSFILE Suspensions\Shocks\Shock102.par`08-02-2011`16:42:34 #FullDataName Suspension: Shock Absorber`Big SUV Damping` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FD_TABLE SPLINE -1410, -7316 -720, -5019 -390, -3395 -210, -2618 -90, -1472 -20, -333 20, 333 90, 870 200, 1145 390, 1607 760, 2623 1160, 3740 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Shock Absorber; Big SUV Damping #Library : Suspension: Shock Absorber #DataSet : Big SUV Damping #Category: #FileID : Shock102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Shock absorber EXIT_PARSFILE Suspensions\Shocks\Shock102.par #BlueLink1 Suspension: Shock Absorber`Big SUV Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx107.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 569 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 569 MX_AUX_COEFFICIENT 569 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 569 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 569 N-m/deg #Category: #FileID : AuxMx107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx107.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 569 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+70 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 68, 0 69, 0 70, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -70, -10000 -69, 0 -68, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +70 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +70 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.614 CT_FX_COEFFICIENT 4.45e-6 CS_FY_COEFFICIENT -1.0e-06 CS_MZ_COEFFICIENT 3.8e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.5e-5 CI_MZ_COEFFICIENT 3.1e-5 C_LONG_COEFFICIENT 1.6e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.614 CMP_RSTOP_COEFFICIENT 0.614 ENTER_PARSFILE Suspensions\Springs\Spring117.par`08-02-2011`16:42:33 #FullDataName Suspension: Spring`130 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 130 FS_EXT_COEFFICIENT 130 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 130 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 130 N/mm #Library : Suspension: Spring #DataSet : 130 N/mm #Category: #FileID : Spring117 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring117.par #BlueLink0 Suspension: Spring`130 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big SUV Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.614 CT_FX_COEFFICIENT 4.45e-6 CS_FY_COEFFICIENT -1.0e-06 CS_MZ_COEFFICIENT 3.8e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.5e-5 CI_MZ_COEFFICIENT 3.1e-5 C_LONG_COEFFICIENT 1.6e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.614 CMP_RSTOP_COEFFICIENT 0.614 #BlueLink3 Suspension: Spring`130 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS D-Class } D-Class, SUV - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : D-Class, SUV - Front Comp. #Category: CS D-Class #FileID : SuspCmp119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp119_note.txt Front spring rate chosen for a front ride frequency of 1.7 Hz and a front corner weight of 428 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp119_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp119.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`D-Class, SUV - Front Comp.` CS D-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin115.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`D-Class, SUV - Front Suspension`CS D-Class iside 1 L_TRACK 1565 Y_CL_SUSP 0 M_US 80 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L -0.2 *TOE_R -0.2 *CAMBER_L -0.3 *CAMBER_R -0.3 R_US_STR 0.8 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive103.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_DIVE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE #RadioCtrl0 0 SUSP_DIVE_AXLE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { SLA } Front SLA - Dive Angle #Library : Suspension: Dive Angle (Caster Change) #DataSet : Front SLA - Dive Angle #Category: SLA #FileID : Dive103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive103_note.txt NOTE: Sign convention of the CS 7.01b and earlier datasets was reversed and demonstrated a pro-dive suspension. This dataset represents an anti-dive suspension. EXIT_NOTEFILE Suspensions\Dive\Dive103_note.txt EXIT_PARSFILE Suspensions\Dive\Dive103.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX103.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Front SLA - Longitudinal Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { SLA } Front SLA - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Front SLA - Longitudinal Movement #Category: SLA #FileID : SusX103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt Generic SLA Longitudinal movement vs. Jounce EXIT_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX103.par #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber103.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Front SLA - Camber Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.08171 -60, 0.996827 -50, 0.88789 -40, 0.755642 -30, 0.600569 -20, 0.422934 -10, 0.222791 0, 0 10, -0.245764 20, -0.515012 30, -0.808436 40, -1.12692 50, -1.47156 60, -1.84365 70, -2.24474 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { SLA } Front SLA - Camber Change #Library : Suspension: Camber Angle #DataSet : Front SLA - Camber Change #Category: SLA #FileID : Camber103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber103_note.txt Generic SLA Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber103_note.txt EXIT_PARSFILE Suspensions\Camber\Camber103.par #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat103.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Front SLA - Lateral Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { SLA } Front SLA - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Front SLA - Lateral Movement #Category: SLA #FileID : SusLat103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat103_note.txt Generic SLA Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat103_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat103.par #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe103.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Front SLA - Toe Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, 0.292407 -60, 0.237822 -50, 0.187561 -40, 0.141604 -30, 0.099916 -20, 0.062452 -10, 0.029164 0, 0 10, -0.025093 20, -0.046165 30, -0.063264 40, -0.076429 50, -0.085696 60, -0.091086 70, -0.09261 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { SLA } Front SLA - Toe Change #Library : Suspension: Toe Angle #DataSet : Front SLA - Toe Change #Category: SLA #FileID : Toe103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe103_note.txt Generic SLA Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe103_note.txt EXIT_PARSFILE Suspensions\Toe\Toe103.par #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -0.3 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -0.3 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS D-Class } D-Class, SUV - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : D-Class, SUV - Front Suspension #Category: CS D-Class #FileID : IndKin115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin115_note.txt Generic Front SLA suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin115_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin115.par #BlueLink19 Suspension: Independent System Kinematics`D-Class, SUV - Front Suspension` CS D-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire112.par`08-02-2011`16:42:33 #FullDataName Tire`255/75 R16`Touring Tires X_LENGTH 394 Z_LENGTH 394 Y_LENGTH 255 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup140.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Small SUV`Tires *ANGLE_Z 180 *ANGLE_Y 0 *ANGLE_X 0 *X_REF_LENGTH 334 *Y_REF_LENGTH 205 *Z_REF_LENGTH 334 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL257.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive ENTER_PARSFILE Animator\Cameras\Camera103.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Top)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Fixed ENTER_PARSFILE Animator\Frames\Frame103.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Fixed` ADD_REFERENCE_FRAME Fixed #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll LOG_ENTRY Used Dataset: Animator: Reference Frame; Fixed #Library : Animator: Reference Frame #DataSet : Fixed #Category: #FileID : Frame103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame103.par #BlueLink0 Animator: Reference Frame`Fixed` ` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Fixed SET_LOOKPOINT_X -1.2 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 180 SET_ELEVATION 90 SET_DISTANCE 35 *SET_LOOKPOINT_X -1.2 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 180 *SET_ELEVATION 90 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Top) #Library : Animator: Camera Setup #DataSet : Shape Preview (Top) #Category: Shape Preview #FileID : Camera103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera103.par #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Tire #Library : Animator: Shape File Link #DataSet : Small SUV Tire #Category: Tires #FileID : AniSTL257 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL257.par #BlueLink0 Animator: Shape File Link`Small SUV Tire` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL258.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\wheel.obj #ENDMYellow SET_COLOR .6 .6 .6 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 50 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Wheel #Library : Animator: Shape File Link #DataSet : Small SUV Wheel #Category: Tires #FileID : AniSTL258 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL258.par #BlueLink1 Animator: Shape File Link`Small SUV Wheel` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL259.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y -0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Stripe #Library : Animator: Shape File Link #DataSet : Small SUV Stripe #Category: Tires #FileID : AniSTL259 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL259.par #BlueLink2 Animator: Shape File Link`Small SUV Stripe` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL260.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Rotor`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\rotor.obj #ENDMYellow SET_COLOR .1 .1 .1 *SPECULAR 0 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Rotor #Library : Animator: Shape File Link #DataSet : Small SUV Rotor #Category: Tires #FileID : AniSTL260 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL260.par #BlueLink3 Animator: Shape File Link`Small SUV Rotor` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 x_ref_length 334 y_ref_length 205 z_ref_length 334 ENTER_PARSFILE Animator\Cameras\Camera104.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Side)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview ENTER_PARSFILE Animator\Frames\Frame101.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Yaw for Shape Preview`Shape Preview ADD_REFERENCE_FRAME Shape Preview Yaw for Shape Preview #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_YAW_NAME Yaw WRT_Yaw ANI_Yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Shape Preview } Yaw for Shape Preview #Library : Animator: Reference Frame #DataSet : Yaw for Shape Preview #Category: Shape Preview #FileID : Frame101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame101.par #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 0 SET_ELEVATION 0 SET_DISTANCE 35 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 0 *SET_ELEVATION 0 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Side) #Library : Animator: Camera Setup #DataSet : Shape Preview (Side) #Category: Shape Preview #FileID : Camera104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera104.par #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Small SUV #Library : Animator: Shape Assembly #DataSet : Small SUV #Category: Tires #FileID : StlGroup140 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup140.par #BlueLink4 Animator: Shape Assembly`Small SUV` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 255 ENTER_PARSFILE Animator\Sound\Set\SndSet106.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 1150 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 1150; units = kg; #ENDMYellow ENTER_PARSFILE Animator\Sound\Sample\SndSmp112.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Lateral Slip`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 0.7 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod129.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Force Effects`Tire Lateral Slip Sound Modifiers #MiscYellow0 define_output mod1_<> = abs(fy_<>) /(rated_load_<> * 9.80665) * MuY_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod1_<> SOUNDMOD_INPUT_MIN 0.3 SOUNDMOD_INPUT_LOW 0.6 SOUNDMOD_INPUT_HIGH 0.9 SOUNDMOD_INPUT_MAX 1.2 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod1_<> ANI_mod1_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Lateral Slip Sound Modifiers } Loudness: Lateral Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Force Effects #Category: Tire Lateral Slip Sound Modifiers #FileID : SndMod129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod129.par #BlueLink0 Animator: Sound Modifier`Loudness: Lateral Force Effects` Tire Lateral Slip Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod130.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod2_<> = sin(min(abs(alphL_<>), 15 / dr) * abs(vxcen<>); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod2_<> SOUNDMOD_INPUT_MIN 0.1 SOUNDMOD_INPUT_LOW 0.5 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.5 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_mod2_<> ANI_mod2_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Lateral Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod130.par #BlueLink1 Animator: Sound Modifier`Loudness: Lateral Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Lateral Slip #Library : Animator: Sound Sample #DataSet : Lateral Slip #Category: Tire Sounds #FileID : SndSmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp112.par #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp113.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wheelspin / Brake Lockup`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod131.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Force Effects`Wheelspin / Lockup Sound Modifiers #MiscYellow0 define_output mod3_<> = abs(fx_<>) / (rated_load_<> * 9.80665) * MuX_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod3_<> SOUNDMOD_INPUT_MIN 0.2 SOUNDMOD_INPUT_LOW 0.4 SOUNDMOD_INPUT_HIGH 0.6 SOUNDMOD_INPUT_MAX 0.8 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod3_<> ANI_mod3_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wheelspin / Lockup Sound Modifiers } Loudness: Longitudinal Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Force Effects #Category: Wheelspin / Lockup Sound Modifiers #FileID : SndMod131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod131.par #BlueLink0 Animator: Sound Modifier`Loudness: Longitudinal Force Effects` Wheelspin / Lockup Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod132.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod4_<> = min(abs(KappL_<>), 1.0) * abs(vxcen<>) ; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod4_<> SOUNDMOD_INPUT_MIN 1.5 SOUNDMOD_INPUT_LOW 2.0 SOUNDMOD_INPUT_HIGH 2.5 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.3333 SOUNDMOD_OUTPUT_HIGH 0.6667 SOUNDMOD_OUTPUT_MAX 1.0 WRT_mod4_<> ANI_mod4_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Longitudinal Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod132.par #BlueLink1 Animator: Sound Modifier`Loudness: Longitudinal Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Wheelspin / Brake Lockup #Library : Animator: Sound Sample #DataSet : Wheelspin / Brake Lockup #Category: Tire Sounds #FileID : SndSmp113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp113.par #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 1150 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 1150 kg Rated Load #Category: Tire Sounds #FileID : SndSet106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet106.par #BlueLink13 Animator: Sound Set`Tire Sounds - 1150 kg Rated Load` Tire Sounds` , Animator RRE 379 R0 394 FZ_TIRE_COEFFICIENT 470 FZ_MAX 100000 IT 0 L_RELAX_X 38 L_RELAX_Y 780 VLOW_ALPHA 5 RR_C 0.0042 RR_V 0.000032 RR_FX 1 OPT_TIRE_COMB 1 R_TIRE_COMB 1.5 ENTER_PARSFILE Tires\Mz\TireMz109.par`08-02-2011`16:42:32 #FullDataName Tire: Aligning Moment`255/75 R16`Touring Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.5, 14.18, 27.44, 39.66, 50.77, 60.75, 69.58, 77.28, 83.85 1, 28.61, 55.37, 80.02, 102.45, 122.6, 140.44, 155.97, 169.22 1.5, 42.17, 81.77, 118.43, 151.95, 182.2, 209.12, 232.69, 252.89 2, 52.19, 101.72, 148.12, 191.09, 230.41, 265.9, 297.44, 324.92 2.5, 56.3, 110.58, 162.37, 211.32, 257.09, 299.38, 337.91, 372.43 3, 54.51, 107.99, 160.11, 210.54, 258.91, 304.87, 348.02, 387.99 3.5, 48.92, 97.71, 146.21, 194.18, 241.35, 287.38, 331.9, 374.51 4, 41.89, 84.25, 127.05, 170.2, 213.52, 256.78, 299.72, 341.99 4.5, 34.92, 70.64, 107.23, 144.67, 182.91, 221.83, 261.26, 300.98 5, 28.7, 58.33, 89.04, 120.86, 153.81, 187.85, 222.93, 258.91 5.5, 23.39, 47.76, 73.27, 99.99, 127.99, 157.28, 187.88, 219.73 6, 18.96, 38.88, 59.94, 82.23, 105.83, 130.8, 157.18, 184.99 6.5, 15.28, 31.48, 48.78, 67.28, 87.08, 108.26, 130.86, 154.95 7, 12.21, 25.31, 39.45, 54.74, 71.3, 89.18, 108.48, 129.26 7.5, 9.65, 20.13, 31.61, 44.2, 57.98, 73.05, 89.48, 107.35 8, 7.49, 15.77, 25, 35.28, 46.7, 59.35, 73.31, 88.65 8.5, 5.65, 12.07, 19.38, 27.69, 37.09, 47.67, 59.49, 72.64 9, 4.09, 8.89, 14.56, 21.19, 28.85, 37.63, 47.61, 58.86 9.5, 2.73, 6.16, 10.41, 15.57, 21.73, 28.96, 37.34, 46.92 10, 1.56, 3.78, 6.8, 10.7, 15.55, 21.43, 28.4, 36.54 10.5, 0.53, 1.71, 3.64, 6.43, 10.14, 14.83, 20.58, 27.44 11, -0.37, -0.12, 0.87, 2.68, 5.37, 9.02, 13.69, 19.43 11.5, -1.17, -1.74, -1.59, -0.65, 1.16, 3.88, 7.59, 12.34 12, -1.89, -3.18, -3.78, -3.61, -2.6, -0.69, 2.16, 6.03 12.5, -2.53, -4.48, -5.74, -6.26, -5.96, -4.78, -2.69, 0.39 13, -3.1, -5.64, -7.5, -8.64, -8.97, -8.46, -7.05, -4.69 13.5, -3.62, -6.68, -9.1, -10.79, -11.7, -11.78, -10.99, -9.26 14, -4.09, -7.64, -10.54, -12.74, -14.17, -14.79, -14.55, -13.41 14.5, -4.52, -8.5, -11.85, -14.51, -16.42, -17.53, -17.8, -17.18 15, -4.91, -9.29, -13.05, -16.13, -18.47, -20.03, -20.76, -20.62 15.5, -5.27, -10.02, -14.16, -17.62, -20.35, -22.32, -23.48, -23.78 16, -5.6, -10.69, -15.17, -18.98, -22.09, -24.43, -25.97, -26.67 16.5, -5.91, -11.3, -16.1, -20.24, -23.68, -26.37, -28.27, -29.34 17, -6.19, -11.87, -16.97, -21.41, -25.16, -28.16, -30.39, -31.81 17.5, -6.45, -12.4, -17.77, -22.49, -26.52, -29.83, -32.36, -34.09 18, -6.7, -12.9, -18.51, -23.5, -27.8, -31.37, -34.19, -36.21 18.5, -6.92, -13.35, -19.21, -24.43, -28.98, -32.81, -35.89, -38.19 19, -7.14, -13.78, -19.86, -25.31, -30.09, -34.16, -37.48, -40.03 19.5, -7.33, -14.18, -20.47, -26.13, -31.12, -35.41, -38.97, -41.75 20, -7.52, -14.56, -21.04, -26.89, -32.09, -36.59, -40.36, -43.36 20.5, -7.7, -14.91, -21.57, -27.61, -33, -37.7, -41.67, -44.88 21, -7.86, -15.25, -22.07, -28.29, -33.86, -38.74, -42.9, -46.3 21.5, -8.02, -15.56, -22.55, -28.93, -34.67, -39.72, -44.05, -47.64 22, -8.16, -15.86, -23, -29.53, -35.43, -40.64, -45.14, -48.91 22.5, -8.3, -16.14, -23.42, -30.1, -36.15, -41.51, -46.18, -50.1 23, -8.43, -16.4, -23.82, -30.64, -36.83, -42.34, -47.15, -51.23 23.5, -8.56, -16.65, -24.2, -31.16, -37.47, -43.13, -48.08, -52.3 24, -8.68, -16.89, -24.56, -31.64, -38.09, -43.87, -48.95, -53.32 24.5, -8.79, -17.12, -24.91, -32.1, -38.67, -44.58, -49.79, -54.28 25, -8.9, -17.33, -25.23, -32.54, -39.23, -45.25, -50.58, -55.2 26, -8.9, -17.33, -25.23, -32.54, -39.23, -45.25, -50.58, -55.2 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Touring Tires } 255/75 R16 #Library : Tire: Aligning Moment #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireMz109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz109.par #BlueLink0 Tire: Aligning Moment`255/75 R16` Touring Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy109.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`255/75 R16`Touring Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.5, 306.2, 600.88, 882.3, 1149.48, 1401.78, 1638.74, 1860.01, 2065.37 1, 605.83, 1189, 1746.07, 2275.1, 2774.82, 3244.29, 3682.86, 4090.04 1.5, 892.78, 1752.48, 2574.01, 3354.57, 4092.23, 4785.63, 5433.75, 6035.88 2, 1161.8, 2281.06, 3351.23, 4368.63, 5330.76, 6235.81, 7082.44, 7869.65 2.5, 1408.82, 2766.79, 4066.08, 5302.21, 6472.14, 7573.62, 8604.98, 9564.94 3, 1631.13, 3204.39, 4710.78, 6145.16, 7503.95, 8784.53, 9984.87, 11103.43 3.5, 1827.46, 3591.29, 5281.5, 6892.37, 8419.86, 9860.96, 11213.35, 12475.2 4, 1997.83, 3927.42, 5778.04, 7543.42, 9219.14, 10801.85, 12288.92, 13678.27 4.5, 2143.28, 4214.8, 6203.19, 8101.76, 9905.76, 11611.53, 13216.18, 14717.36 5, 2265.63, 4456.89, 6561.91, 8573.68, 10487.15, 12298.4, 14004.3, 15602.28 5.5, 2367.15, 4658.08, 6860.54, 8967.25, 10972.93, 12873.45, 14665.46, 16346.2 6, 2450.32, 4823.16, 7106.01, 9291.39, 11373.81, 13348.99, 15213.38, 16964.05 6.5, 2517.61, 4956.95, 7305.33, 9555.12, 11700.69, 13737.6, 15662.17, 17471.29 7, 2571.36, 5064.02, 7465.19, 9767.1, 11964.03, 14051.42, 16025.47, 17882.95 7.5, 2613.7, 5148.56, 7591.68, 9935.26, 12173.47, 14301.67, 16315.97, 18213.03 8, 2646.53, 5214.25, 7690.26, 10066.67, 12337.64, 14498.42, 16545.06, 18474.15 8.5, 2671.48, 5264.33, 7765.64, 10167.52, 12464.06, 14650.49, 16722.78, 18677.46 9, 2689.94, 5301.54, 7821.89, 10243.09, 12559.22, 14765.48, 16857.78, 18832.62 9.5, 2703.09, 5328.18, 7862.41, 10297.87, 12628.63, 14849.86, 16957.46, 18947.88 10, 2711.91, 5346.21, 7890.07, 10335.61, 12676.9, 14909.09, 17028.06, 19030.22 10.5, 2717.21, 5357.22, 7907.26, 10359.46, 12707.9, 14947.72, 17074.79, 19085.51 11, 2719.66, 5362.55, 7915.95, 10372.01, 12724.83, 14969.54, 17102.02, 19118.65 11.5, 2719.82, 5363.29, 7917.76, 10375.41, 12730.34, 14977.71, 17113.38, 19133.71 12, 2718.14, 5360.35, 7914.04, 10371.43, 12726.63, 14974.81, 17111.84, 19134.07 12.5, 2714.98, 5354.46, 7905.89, 10361.53, 12715.5, 14963, 17099.89, 19122.53 13, 2710.66, 5346.22, 7894.2, 10346.89, 12698.43, 14944.03, 17079.56, 19101.4 13.5, 2705.42, 5336.13, 7879.72, 10328.49, 12676.64, 14919.36, 17052.55, 19072.58 14, 2699.47, 5324.6, 7863.04, 10307.15, 12651.12, 14890.18, 17020.22, 19037.64 14.5, 2692.97, 5311.96, 7844.68, 10283.53, 12622.71, 14857.47, 16983.73, 18997.87 15, 2686.05, 5298.47, 7825.03, 10258.15, 12592.06, 14822.04, 16944, 18954.35 15.5, 2678.82, 5284.36, 7804.42, 10231.46, 12559.74, 14784.54, 16901.81, 18907.95 16, 2671.39, 5269.8, 7783.12, 10203.82, 12526.19, 14745.53, 16857.79, 18859.39 16.5, 2663.81, 5254.95, 7761.36, 10175.53, 12491.79, 14705.44, 16812.45, 18809.27 17, 2656.15, 5239.92, 7739.31, 10146.83, 12456.83, 14664.64, 16766.24, 18758.07 17.5, 2648.45, 5224.82, 7717.11, 10117.91, 12421.57, 14623.42, 16719.48, 18706.2 18, 2640.76, 5209.71, 7694.9, 10088.94, 12386.19, 14582.03, 16672.46, 18653.97 18.5, 2633.11, 5194.66, 7672.76, 10060.03, 12350.87, 14540.66, 16625.43, 18601.65 19, 2625.51, 5179.72, 7650.77, 10031.3, 12315.73, 14499.47, 16578.55, 18549.47 19.5, 2618, 5164.94, 7628.98, 10002.82, 12280.89, 14458.59, 16531.99, 18497.6 20, 2610.59, 5150.33, 7607.46, 9974.67, 12246.41, 14418.12, 16485.87, 18446.16 20.5, 2603.28, 5135.93, 7586.23, 9946.89, 12212.37, 14378.14, 16440.27, 18395.29 21, 2596.09, 5121.76, 7565.32, 9919.51, 12178.83, 14338.72, 16395.28, 18345.07 21.5, 2589.02, 5107.83, 7544.76, 9892.59, 12145.8, 14299.89, 16350.96, 18295.56 22, 2582.08, 5094.15, 7524.57, 9866.12, 12113.34, 14261.7, 16307.34, 18246.82 22.5, 2575.28, 5080.72, 7504.74, 9840.14, 12081.45, 14224.18, 16264.47, 18198.88 23, 2568.6, 5067.56, 7485.29, 9814.64, 12050.15, 14187.34, 16222.36, 18151.78 23.5, 2562.07, 5054.66, 7466.23, 9789.64, 12019.45, 14151.19, 16181.02, 18105.54 24, 2555.66, 5042.02, 7447.55, 9765.14, 11989.35, 14115.74, 16140.48, 18060.16 24.5, 2549.39, 5029.64, 7429.26, 9741.13, 11959.86, 14080.99, 16100.72, 18015.65 25, 2543.26, 5017.52, 7411.34, 9717.62, 11930.96, 14046.94, 16061.75, 17972.01 26, 2543.26, 5017.52, 7411.34, 9717.62, 11930.96, 14046.94, 16061.75, 17972.01 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Touring Tires } 255/75 R16 #Library : Tire: Lateral Force #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireFy109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy109.par #BlueLink1 Tire: Lateral Force`255/75 R16` Touring Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx109.par`08-02-2011`16:42:28 #FullDataName Tire: Longitudinal Force`255/75 R16`Touring Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.02, 1258.94, 2468.09, 3619.86, 4710.05, 5735.83, 6695.23, 7586.84, 8409.7 0.04, 1993.59, 3916.87, 5758.7, 7512.6, 9173.94, 10739.23, 12205.7, 13571.17 0.06, 2344.28, 4612.4, 6792.08, 8875.96, 10858.65, 12735.94, 14504.35, 16161.01 0.08, 2516.82, 4955.83, 7304.36, 9554.74, 11701.28, 13739.45, 15665.47, 17476.15 0.1, 2608.63, 5139.03, 7578.4, 9918.95, 12154.85, 14281.44, 16294.79, 18191.53 0.12, 2660.42, 5242.66, 7733.87, 10126.21, 12413.81, 14591.92, 16656.52, 18604.16 0.14, 2690.36, 5302.78, 7824.43, 10247.46, 12565.96, 14775.15, 16870.97, 18849.91 0.16, 2707.35, 5337.12, 7876.51, 10317.67, 12654.69, 14882.77, 16997.83, 18996.3 0.18, 2716.2, 5355.23, 7904.34, 10355.71, 12703.42, 14942.66, 17069.34, 19079.87 0.2, 2719.69, 5362.66, 7916.21, 10372.54, 12725.75, 14971.02, 17104.25, 19121.85 0.22, 2719.56, 5362.84, 7917.22, 10374.93, 12730.08, 14977.86, 17114.17, 19135.39 0.24, 2716.91, 5357.99, 7910.7, 10367.29, 12721.88, 14969.69, 17106.6, 19129.01 0.26, 2712.5, 5349.62, 7898.89, 10352.57, 12704.84, 14950.89, 17086.64, 19108.47 0.28, 2706.85, 5338.77, 7883.33, 10332.85, 12681.51, 14924.53, 17057.82, 19077.79 0.3, 2700.35, 5326.18, 7865.15, 10309.6, 12653.73, 14892.78, 17022.68, 19039.82 0.32, 2693.25, 5312.4, 7845.14, 10283.88, 12622.82, 14857.24, 16983.05, 18996.67 0.34, 2685.76, 5297.81, 7823.91, 10256.48, 12589.77, 14819.06, 16940.29, 18949.87 0.36, 2678.02, 5282.71, 7801.88, 10227.99, 12555.32, 14779.14, 16895.42, 18900.59 0.38, 2670.15, 5267.33, 7779.4, 10198.86, 12520, 14738.13, 16849.22, 18849.7 0.4, 2662.23, 5251.82, 7756.71, 10169.41, 12484.24, 14696.53, 16802.26, 18797.88 0.42, 2654.32, 5236.32, 7734, 10139.9, 12448.36, 14654.73, 16755, 18745.62 0.44, 2646.46, 5220.92, 7711.41, 10110.51, 12412.59, 14613.01, 16707.76, 18693.33 0.46, 2638.7, 5205.69, 7689.05, 10081.4, 12377.13, 14571.59, 16660.82, 18641.29 0.48, 2631.05, 5190.68, 7667, 10052.68, 12342.09, 14530.64, 16614.36, 18589.74 0.5, 2623.54, 5175.93, 7645.33, 10024.41, 12307.6, 14490.29, 16568.55, 18538.86 0.52, 2616.18, 5161.47, 7624.06, 9996.66, 12273.71, 14450.63, 16523.48, 18488.76 0.54, 2608.98, 5147.31, 7603.24, 9969.48, 12240.5, 14411.72, 16479.23, 18439.55 0.56, 2601.95, 5133.48, 7582.88, 9942.89, 12207.98, 14373.62, 16435.88, 18391.3 0.58, 2595.09, 5119.98, 7563, 9916.91, 12176.2, 14336.35, 16393.45, 18344.04 0.6, 2588.4, 5106.81, 7543.6, 9891.54, 12145.16, 14299.94, 16351.97, 18297.83 0.62, 2581.88, 5093.97, 7524.68, 9866.8, 12114.87, 14264.38, 16311.46, 18252.66 0.64, 2575.53, 5081.47, 7506.24, 9842.68, 12085.33, 14229.7, 16271.92, 18208.56 0.66, 2569.35, 5069.29, 7488.28, 9819.18, 12056.54, 14195.87, 16233.34, 18165.51 0.68, 2563.33, 5057.43, 7470.79, 9796.28, 12028.47, 14162.9, 16195.72, 18123.52 0.7, 2557.47, 5045.89, 7453.76, 9773.98, 12001.14, 14130.77, 16159.05, 18082.57 0.72, 2551.78, 5034.66, 7437.19, 9752.27, 11974.51, 14099.47, 16123.31, 18042.65 0.74, 2546.23, 5023.73, 7421.05, 9731.13, 11948.58, 14068.97, 16088.48, 18003.73 0.76, 2540.84, 5013.09, 7405.35, 9710.55, 11923.33, 14039.26, 16054.54, 17965.8 0.78, 2535.59, 5002.74, 7390.06, 9690.52, 11898.74, 14010.33, 16021.48, 17928.83 0.8, 2530.49, 4992.66, 7375.18, 9671.01, 11874.79, 13982.14, 15989.26, 17892.79 0.82, 2525.52, 4982.86, 7360.7, 9652.01, 11851.47, 13954.68, 15957.87, 17857.68 0.84, 2520.68, 4973.31, 7346.59, 9633.52, 11828.76, 13927.93, 15927.28, 17823.45 0.86, 2515.97, 4964.02, 7332.86, 9615.5, 11806.63, 13901.87, 15897.47, 17790.09 0.88, 2511.39, 4954.98, 7319.49, 9597.96, 11785.07, 13876.48, 15868.42, 17757.57 0.9, 2506.93, 4946.16, 7306.46, 9580.86, 11764.07, 13851.73, 15840.1, 17725.87 0.92, 2502.58, 4937.58, 7293.77, 9564.21, 11743.6, 13827.61, 15812.5, 17694.95 0.94, 2498.35, 4929.22, 7281.41, 9547.98, 11723.65, 13804.1, 15785.58, 17664.8 0.96, 2494.22, 4921.07, 7269.36, 9532.16, 11704.21, 13781.17, 15759.34, 17635.4 0.98, 2490.2, 4913.13, 7257.62, 9516.74, 11685.25, 13758.82, 15733.74, 17606.72 1, 2486.29, 4905.39, 7246.17, 9501.7, 11666.76, 13737.01, 15708.77, 17578.73 1.02, 2486.29, 4905.39, 7246.17, 9501.7, 11666.76, 13737.01, 15708.77, 17578.73 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Touring Tires } 255/75 R16 #Library : Tire: Longitudinal Force #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireFx109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:28 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx109.par #BlueLink2 Tire: Longitudinal Force`255/75 R16` Touring Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff109.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`255/75 R16`Touring Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 1127.76475, -5.0637 2255.5295, -9.5404 3383.29425, -13.704 4511.059, -17.6355 5638.82375, -21.3781 6766.5885, -24.9597 7894.35325, -28.3995 9022.118, -31.7123 10149.88275, -34.9094 11277.6475, -38 12405.41225, -40.9917 13533.177, -43.8909 14660.94175, -46.7031 15788.7065, -49.433 16916.47125, -52.0848 18044.236, -54.6622 19172.00075, -57.1685 20299.7655, -59.6066 21427.53025, -61.9791 22555.295, -64.2887 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Touring Tires } 255/75 R16 #Library : Tire: Camber Thrust Coefficient #DataSet : 255/75 R16 #Category: Touring Tires #FileID : CamStiff109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff109.par #BlueLink3 Tire: Camber Thrust Coefficient`255/75 R16` Touring Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Touring Tires } 255/75 R16 #Library : Tire #DataSet : 255/75 R16 #Category: Touring Tires #FileID : Tire112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire112_note.txt 1150 kg rated load EXIT_NOTEFILE Tires\Tire\Tire112_note.txt EXIT_PARSFILE Tires\Tire\Tire112.par #BlueLink9 Tire`255/75 R16` Touring Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`255/75 R16` Touring Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 WRITE_ADD_REFERENCE_FRAME_AXLE ENTER_PARSFILE Suspensions\Compliance_SA\SuspCmpSA105.par`08-02-2011`16:42:37 #FullDataName Suspension: Solid Axle Compliance, Springs, and Dampers`D-Class, SUV - Rear Solid Axle Comp.`CS D-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 L_SPRINGS 1103.33 L_DAMPERS 1103.33 *R_SPRING_L 0.9989 *R_SPRING_R 1.0001 *R_DAMPER_L 1.003 *R_DAMPER_R 0.995 *CT_FX_L 0 *CT_FX_R 0 *CS_FY_L 0 *CS_FY_R 0 *CS_MZ_L 0 *CS_MZ_R 0 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 0 *CI_FY_R 0 *CI_MZ_L 0 *CI_MZ_R 0 *C_LAT_AXLE 5.3133E-04 *C_LONG_AXLE 4.6049E-04 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 L_JNC_STOPS 1100 L_REB_STOPS 1100 *R_JOUNCE_L 1 *R_JOUNCE_R 1 *R_REBOUND_L 1 *R_REBOUND_R 1 C_LAT_AXLE_COEFFICIENT 5.3133E-04 C_LONG_AXLE_COEFFICIENT 4.6049E-04 L_SPG_ADJ 0 #BlueLink1 Suspension: Shock Absorber`Big SUV Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx108.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`No Auxiliary Roll Moment` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 MX_AUX_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; No Auxiliary Roll Moment #Library : Suspension: Auxiliary Roll Moment #DataSet : No Auxiliary Roll Moment #Category: #FileID : AuxMx108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx108.par #BlueLink2 Suspension: Auxiliary Roll Moment`No Auxiliary Roll Moment` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb107.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+120 mm / -60 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 118, 0 119, 0 120, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -60, -10000 -59, 0 -58, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +120 mm / -60 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +120 mm / -60 mm #Category: Jounce and Rebound Stops #FileID : JncRb107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb107.par #BlueLink5 Suspension: Jounce and Rebound Stops`+120 mm / -60 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.9989 CMP_DAMP_COEFFICIENT 1.003 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT 0 CS_MZ_COEFFICIENT 0 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 0 CI_MZ_COEFFICIENT 0 CMP_JSTOP_COEFFICIENT 1 CMP_RSTOP_COEFFICIENT 1 ENTER_PARSFILE Suspensions\Springs\Spring118.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`40 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 40 FS_EXT_COEFFICIENT 40 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 40 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 40 N/mm #Library : Suspension: Spring #DataSet : 40 N/mm #Category: #FileID : Spring118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring118.par #BlueLink0 Suspension: Spring`40 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big SUV Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+120 mm / -60 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 1.0001 CMP_DAMP_COEFFICIENT 0.995 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT 0 CS_MZ_COEFFICIENT 0 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 0 CI_MZ_COEFFICIENT 0 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 1 CMP_RSTOP_COEFFICIENT 1 #BlueLink3 Suspension: Spring`40 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Solid Axle Compliance, Springs, and Dampers; { CS D-Class } D-Class, SUV - Rear Solid Axle Comp. #Library : Suspension: Solid Axle Compliance, Springs, and Dampers #DataSet : D-Class, SUV - Rear Solid Axle Comp. #Category: CS D-Class #FileID : SuspCmpSA105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Solid axle EXIT_PARSFILE Suspensions\Compliance_SA\SuspCmpSA105.par #BlueLink22 Suspension: Solid Axle Compliance, Springs, and Dampers`D-Class, SUV - Rear Solid Axle Comp.` CS D-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Solid\SaKin105.par`08-02-2011`16:42:37 #FullDataName Suspension: Solid Axle System Kinematics`D-Class, SUV - Rear Suspension`CS D-Class OPT_NL_AXLE 1 iside 1 L_TRACK 1565 M_US 100 IA 1.5 *IW_L 0.9 *IW_R 0.9 R_ROLL_STEER 0.1 Y_CL_SUSP 0 *TOE_L 0 *TOE_R 0 *CAMBER_L 0 *CAMBER_R 0 H_CG_AXLE 360 *JNC_DESIGN_L 0 *JNC_DESIGN_R 0 R_US_STR 0 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 1 #CheckBox1 0 ENTER_PARSFILE Suspensions\Dive\Dive105.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Rear Hotchkiss - No Dive`Hotchkiss Rear Axle #RingCtrl0 CONSTANT *SCALAR 0 SUSP_DIVE_CONSTANT 0 #RadioCtrl0 0 SUSP_DIVE_AXLE_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { Hotchkiss Rear Axle } Rear Hotchkiss - No Dive #Library : Suspension: Dive Angle (Caster Change) #DataSet : Rear Hotchkiss - No Dive #Category: Hotchkiss Rear Axle #FileID : Dive105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive105_note.txt Generic Hotchkiss Rear Axle Dive angle change vs. Jounce. EXIT_NOTEFILE Suspensions\Dive\Dive105_note.txt EXIT_PARSFILE Suspensions\Dive\Dive105.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear Hotchkiss - No Dive` Hotchkiss Rear Axle` , Axle dive ENTER_PARSFILE Suspensions\Longitudinal\SusX105.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Rear Hotchkiss - Longitudinal Movement`Hotchkiss Rear Axle #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -150, 5.1612 -135, 2.79277 -120, 0.841255 -105, -0.695023 -90, -1.8184 -75, -2.53133 -60, -2.83607 -45, -2.73441 -30, -2.22759 -15, -1.3162 0, 0 15, 1.72199 30, 3.85147 45, 6.39054 60, 9.34103 75, 12.703 90, 16.4714 105, 20.6284 120, 25.1262 135, 29.8517 150, 34.583 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -150, 5.1612 -135, 2.79277 -120, 0.841255 -105, -0.695023 -90, -1.8184 -75, -2.53133 -60, -2.83607 -45, -2.73441 -30, -2.22759 -15, -1.3162 0, 0 15, 1.72199 30, 3.85147 45, 6.39054 60, 9.34103 75, 12.703 90, 16.4714 105, 20.6284 120, 25.1262 135, 29.8517 150, 34.583 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { Hotchkiss Rear Axle } Rear Hotchkiss - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Rear Hotchkiss - Longitudinal Movement #Category: Hotchkiss Rear Axle #FileID : SusX105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX105_note.txt Generic Hotchkiss Rear Axle Longitudinal movement vs. Jounce. EXIT_NOTEFILE Suspensions\Longitudinal\SusX105_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX105.par #BlueLink1 Suspension: Longitudinal Position`Rear Hotchkiss - Longitudinal Movement` Hotchkiss Rear Axle` , Axle X movement ENTER_PARSFILE Animator\STL\AniSTL204.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Rear Solid Drive Axle`Misc. Parts #MiscYellow3 add_obj Animator\3D_shape_files_CS\misc\solid_axle.obj #ENDMYellow SET_COLOR 0.502 0.502 0.502 SET_OFFSET_X 0 SET_OFFSET_Y -0.007 SET_OFFSET_Z 0 X_REF_LENGTH 1 Y_REF_LENGTH 1700 Z_REF_LENGTH 1 *SPECULAR 0 SMOOTH_MAX_ANGLE 55 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Misc. Parts } Rear Solid Drive Axle #Library : Animator: Shape File Link #DataSet : Rear Solid Drive Axle #Category: Misc. Parts #FileID : AniSTL204 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL204.par #BlueLink2 Animator: Shape File Link`Rear Solid Drive Axle` Misc. Parts` , Animator ENTER_PARSFILE Suspensions\Lateral\SusLat105.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Rear Hotchkiss - No Lateral Movement`Hotchkiss Rear Axle #RingCtrl0 CONSTANT SUSP_LAT_CONSTANT 0 SUSP_LAT_AXLE_JOUNCE_CONSTANT 0 #RadioCtrl0 1 *SCALAR 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { Hotchkiss Rear Axle } Rear Hotchkiss - No Lateral Movement #Library : Suspension: Lateral Position #DataSet : Rear Hotchkiss - No Lateral Movement #Category: Hotchkiss Rear Axle #FileID : SusLat105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat105_note.txt Generic Hotchkiss Rear Axle Lateral Movement vs. Jounce. EXIT_NOTEFILE Suspensions\Lateral\SusLat105_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat105.par #BlueLink3 Suspension: Lateral Position`Rear Hotchkiss - No Lateral Movement` Hotchkiss Rear Axle` , Axle Y movement - jounce ENTER_PARSFILE Suspensions\Lateral_Roll\SusLatR101.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position with Roll`Rear Hotchkiss - Lat. Movement vs. Roll`Hotchiss Rear Axle #RingCtrl0 SPLINE ! Note: if *TABLE_KEYWORD is not set to "SUSP_Y_AXLE_ROLL" then Y values read from the table will be reversed. *TABLE_KEYWORD SUSP_Y_AXLE_ROLL #DiagramOne0 SUSP_Y_AXLE_ROLL_TABLE SPLINE -10.0528, -16.7928 -8.3636, -14.0137 -6.68194, -11.2296 -5.00627, -8.43574 -3.33505, -5.63126 -1.66679, -2.81808 0, 0 1.66679, 2.81808 3.33505, 5.63126 5.00627, 8.43574 6.68194, 11.2296 8.3636, 14.0137 10.0528, 16.7928 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position with Roll; { Hotchiss Rear Axle } Rear Hotchkiss - Lat. Movement vs. Roll #Library : Suspension: Lateral Position with Roll #DataSet : Rear Hotchkiss - Lat. Movement vs. Roll #Category: Hotchiss Rear Axle #FileID : SusLatR101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral_Roll\SusLatR101_note.txt Generic Hotchkiss Rear Axle Lateral Movement vs. Roll EXIT_NOTEFILE Suspensions\Lateral_Roll\SusLatR101_note.txt EXIT_PARSFILE Suspensions\Lateral_Roll\SusLatR101.par #BlueLink4 Suspension: Lateral Position with Roll`Rear Hotchkiss - Lat. Movement vs. Roll` Hotchiss Rear Axle` , Axle Y movement - roll SUSP_AXLE_ROLL_STEER_COEFFICIENT 0.1 Y_LENGTH 1565 IW 0.9 A_TOE 0 A_CAMBER 0 JNC_DESIGN 0 iside 2 IW 0.9 A_TOE 0 A_CAMBER 0 JNC_DESIGN 0 LOG_ENTRY Used Dataset: Suspension: Solid Axle System Kinematics; { CS D-Class } D-Class, SUV - Rear Suspension #Library : Suspension: Solid Axle System Kinematics #DataSet : D-Class, SUV - Rear Suspension #Category: CS D-Class #FileID : SaKin105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Solid Axle ENTRY_NOTEFILE Suspensions\Kin_Solid\SaKin105_note.txt Generic Hotchkiss Rear Axle kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Solid\SaKin105_note.txt EXIT_PARSFILE Suspensions\Kin_Solid\SaKin105.par #BlueLink23 Suspension: Solid Axle System Kinematics`D-Class, SUV - Rear Suspension` CS D-Class` , Rear kinematics (solid axle) * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`255/75 R16` Touring Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`255/75 R16` Touring Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass113.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`D-Class, SUV Sprung Mass`CS D-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 2600 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 3725 H_H 550 H_CG_SU 650 LX_AXLE 2600 LX_CG_SU 1050 M_SU 1430 IXX_SU 700.7 IYY_SU 2059.2 IZZ_SU 2059.2 IXZ_SU 0 RX_SGUI 0.700 RY_SGUI 1.200 RZ_SGUI 1.200 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1679 Y_LENGTH 1820 *HWC_LF 350 *HWC_RF 350 *HWC_LR 330 *HWC_RR 330 H_WC 330 iside 2 H_WC 330 iaxle 1 iside 1 H_WC 350 iside 2 H_WC 350 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS D-Class } D-Class, SUV Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : D-Class, SUV Sprung Mass #Category: CS D-Class #FileID : SprMass113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass113.par #BlueLink0 Vehicle: Sprung Mass`D-Class, SUV Sprung Mass` CS D-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero110.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`D-Class, SUV Aero`CS D-Class #CheckBox0 0 X_REF_AERO -1300 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 2600 AREA_AERO 2.8 D_AIR 1.206 ENTER_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FX_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.45 -160, -0.45 -90, 0 -20, 0.325 0, 0.3 20, 0.325 90, 0 160, -0.45 180, -0.45 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fx (Drag) Coefficient; Drag Coefficient = 0.30 #Library : Aerodynamics: Fx (Drag) Coefficient #DataSet : Drag Coefficient = 0.30 #Category: #FileID : AirCFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Drag vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt A nominal drag coefficent of 0.3 is typical of contemporary mid-size sedans, such as Honda Accord, Toyota Camry, and Ford Fusion. The drag coefficient typically increases a few percent as the vehicle develops an aerodynamic sidelsip angle, peaking around 20 degrees. Drag reduces as sidelip increases because the component of the airspeed in the vehicle X direction reduces. EXIT_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force ENTER_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FY_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.5 0, 0 90, 0.5 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fy (Side Force) Coefficient; Side Force Coefficient = 0.5 at 90 deg #Library : Aerodynamics: Fy (Side Force) Coefficient #DataSet : Side Force Coefficient = 0.5 at 90 deg #Category: #FileID : AirCFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aero side force vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt The side force coefficient is typically larger then the drag coefficent, because the width of the vehiicle is less than the length, contirbuting to drag in the lateral direction. Also, the calculation of the coefficient is based on the projected frontal area of the car, while the side force is developed against the larger side area. EXIT_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force ENTER_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par`08-03-2011`08:02:01 #FullDataName Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FZ_AERO_SHAPING_TABLE SPLINE_FLAT -180, 0.4 -135, 0.45 -90, 0.35 -20, 0.185 0, 0.18 20, 0.185 90, 0.35 135, 0.45 180, 0.4 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fz (Lift) Coefficient; Lift Coefficient = 0.18 #Library : Aerodynamics: Fz (Lift) Coefficient #DataSet : Lift Coefficient = 0.18 #Category: #FileID : AirCFz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:01 #VehCode Lift vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt Nearly all passenger cars develop a small positive lift force at highway speeeds. EXIT_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force ENTER_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par`08-02-2011`16:43:55 #FullDataName Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MX_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.3 0, 0 90, 0.3 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mx (Roll Moment) Coefficient; Roll Moment Coefficient = 0.3 at 90 deg #Library : Aerodynamics: Mx (Roll Moment) Coefficient #DataSet : Roll Moment Coefficient = 0.3 at 90 deg #Category: #FileID : AirCMx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Aero Mx vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment ENTER_PARSFILE Aerodynamics\Aero_My\AirCMy104.par`08-03-2011`08:02:56 #FullDataName Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 MY_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.25 -160, -0.25 -90, 0 -20, 0.17 0, 0.15 20, 0.17 90, 0 160, -0.25 180, -0.25 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: My (Pitch Moment) Coefficient; Pitch Moment Coefficient = -0.15 #Library : Aerodynamics: My (Pitch Moment) Coefficient #DataSet : Pitch Moment Coefficient = -0.15 #Category: #FileID : AirCMy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:56 #VehCode Aero My vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_My\AirCMy104.par #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment ENTER_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par`08-03-2011`08:03:05 #FullDataName Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MZ_AERO_SHAPING_TABLE SPLINE -180, 0 -90, 0.05 0, 0 90, -0.05 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mz (Yaw Moment) Coefficient; Yaw Moment Coefficent = 0.05 at 90 deg #Library : Aerodynamics: Mz (Yaw Moment) Coefficient #DataSet : Yaw Moment Coefficent = 0.05 at 90 deg #Category: #FileID : AirCMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:03:05 #VehCode Aero Mz vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS D-Class } D-Class, SUV Aero #Library : Aerodynamics: Basic #DataSet : D-Class, SUV Aero #Category: CS D-Class #FileID : Aero110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero110_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero110_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero110.par #BlueLink1 Aerodynamics: Basic`D-Class, SUV Aero` CS D-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh116.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`D-Class, SUV`D-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 2619 OBJ_Y_LENGTH 1820 OBJ_Z_LENGTH 1679 *DZ_V -40 *LAT_WC 1600 *LAT_WC_2 1600 *HWC 280 *WHEEL_RATIO 1.25 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_OFFSET_X 0 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_OFFSET_X -2.619 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_ANGLE_X 180 SET_OFFSET_X -2.619 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.266 WRITE_ADD_REFERENCE_FRAME_SHADOW ENTER_PARSFILE Animator\STL\AniSTL104.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Vehicle Shadow Shape`Vehicle Shadow #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\vehicle_shadows\shadow.obj #ENDMYellow SET_COLOR 0.125 0.125 0.125 X_REF_LENGTH 2690 Y_REF_LENGTH 1900 Z_REF_LENGTH 1220 *TRANSPARENCY 0.8 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.8 show_front on show_back off #MiscYellow0 tranclucent_fix on #ENDMYellow #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Vehicle Shadow } Vehicle Shadow Shape #Library : Animator: Shape File Link #DataSet : Vehicle Shadow Shape #Category: Vehicle Shadow #FileID : AniSTL104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL104.par #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT -0.04 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup138.par`08-02-2011`16:43:38 #FullDataName Animator: Shape Assembly`D-Class, SUV`CS D-Class *COLOR .36 .117 .117 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.3 *X_REF_LENGTH 2850 *Y_REF_LENGTH 1900 *Z_REF_LENGTH 1700 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL170.par`08-02-2011`16:43:43 #FullDataName Animator: Shape File Link`SUV: Body`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\body.obj #ENDMYellow SET_COLOR 0 0 .5 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Body #Library : Animator: Shape File Link #DataSet : SUV: Body #Category: CS SUV #FileID : AniSTL170 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:43 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL170.par #BlueLink0 Animator: Shape File Link`SUV: Body` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL174.par`08-02-2011`16:43:43 #FullDataName Animator: Shape File Link`SUV: Body Trim (Gray)`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\body_trim.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Body Trim (Gray) #Library : Animator: Shape File Link #DataSet : SUV: Body Trim (Gray) #Category: CS SUV #FileID : AniSTL174 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:43 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL174.par #BlueLink1 Animator: Shape File Link`SUV: Body Trim (Gray)` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL171.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Details`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\details.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Details #Library : Animator: Shape File Link #DataSet : SUV: Details #Category: CS SUV #FileID : AniSTL171 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL171.par #BlueLink2 Animator: Shape File Link`SUV: Details` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL172.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Interior`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\interior.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Interior #Library : Animator: Shape File Link #DataSet : SUV: Interior #Category: CS SUV #FileID : AniSTL172 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL172.par #BlueLink3 Animator: Shape File Link`SUV: Interior` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL175.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Seats`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\seats.obj #ENDMYellow SET_COLOR 0.753 0.753 0.753 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Seats #Library : Animator: Shape File Link #DataSet : SUV: Seats #Category: CS SUV #FileID : AniSTL175 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL175.par #BlueLink4 Animator: Shape File Link`SUV: Seats` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL176.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Steering Wheel`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\steering_wheel.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Steering Wheel #Library : Animator: Shape File Link #DataSet : SUV: Steering Wheel #Category: CS SUV #FileID : AniSTL176 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL176.par #BlueLink5 Animator: Shape File Link`SUV: Steering Wheel` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL173.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Windows`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\windows.obj #ENDMYellow SET_COLOR 0.188 0.188 0.188 *SPECULAR 0.9 *TRANSPARENCY 0.85 SMOOTH_MAX_ANGLE 45 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 0.85 show_front on show_back off SET_SPECULAR 0.9 0.9 0.9 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Windows #Library : Animator: Shape File Link #DataSet : SUV: Windows #Category: CS SUV #FileID : AniSTL173 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL173.par #BlueLink6 Animator: Shape File Link`SUV: Windows` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL177.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Driver`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\driver\driver.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Driver #Library : Animator: Shape File Link #DataSet : SUV: Driver #Category: CS SUV #FileID : AniSTL177 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL177.par #BlueLink13 Animator: Shape File Link`SUV: Driver` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 x_ref_length 2850 y_ref_length 1900 z_ref_length 1700 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS D-Class } D-Class, SUV #Library : Animator: Shape Assembly #DataSet : D-Class, SUV #Category: CS D-Class #FileID : StlGroup138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:38 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup138.par #BlueLink1 Animator: Shape Assembly`D-Class, SUV` CS D-Class` , Vehicle body ENTER_PARSFILE Animator\Sound\Set\SndSet105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Gasoline Engine Vehicle`General Vehicle Sounds ENTER_PARSFILE Animator\Sound\Sample\SndSmp110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power Off`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_0.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod124.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_brake_torque -50; ! maximum engine braking torque define_output v_mod2 = if_gt_0_then(m_engout, 0, pow(m_engout/max_brake_torque, 0.5)); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod2 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod2 ANI_v_mod2 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod124.par #BlueLink0 Animator: Sound Modifier`Power Off Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod125.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 4000 SOUNDMOD_INPUT_HIGH 8000 SOUNDMOD_INPUT_MAX 12000 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod125 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod125.par #BlueLink1 Animator: Sound Modifier`Power Off Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 ENTER_PARSFILE Animator\Sound\Modifier\SndMod126.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Frequency with RPM`Gas Engine Sound Modifiers #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Frequency with RPM #Library : Animator: Sound Modifier #DataSet : Frequency with RPM #Category: Gas Engine Sound Modifiers #FileID : SndMod126 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt This modifier is based on a recording of a 4 cyl engine at 3500 RPM EXIT_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod126.par #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power Off #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power Off #Category: Gas Engine Sounds #FileID : SndSmp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt This sound set uses a sample recorded at closed throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp110.par #BlueLink0 Animator: Sound Sample`4 Cyl. - Power Off` Gas Engine Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power On`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_1.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod127.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_torque 265 define_output v_mod1 = if_gt_0_then(m_engout, pow(m_engout/max_torque, 0.5), 0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod1 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod1 ANI_v_mod1 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod127 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt This modifer is to be applied to power-on conditions, i.e, when the engine torque is positive. EXIT_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod127.par #BlueLink0 Animator: Sound Modifier`Power On Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod128.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod128.par #BlueLink1 Animator: Sound Modifier`Power On Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power On #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power On #Category: Gas Engine Sounds #FileID : SndSmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt This sound set uses a sample recorded at wide open throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp111.par #BlueLink1 Animator: Sound Sample`4 Cyl. - Power On` Gas Engine Sounds` , Sample 2 ENTER_PARSFILE Animator\Sound\Sample\SndSmp105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wind Noise`Wind Noise ADD_3D_SOUND Animator\Audio\Environment\Wind_1_Mono.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 0.3 SOUND_VOL_MIN 0.01 SOUND_VOL_MAX 9.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 9.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod122.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_parameter air_speed_ref 50; units = km/h; define_output v_mod3 = pow(vAir/air_speed_ref, 3.0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod3 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_v_mod3 ANI_v_mod3 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Loudness: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod122.par #BlueLink0 Animator: Sound Modifier`Loudness: Speed Effect` Wind Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod123.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Frequency: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_output v_mod4 = pow(vAir/air_speed_ref, 0.5); #ENDMYellow #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod4 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_v_mod4 ANI_v_mod4 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Frequency: Speed Effect #Library : Animator: Sound Modifier #DataSet : Frequency: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod123.par #BlueLink1 Animator: Sound Modifier`Frequency: Speed Effect` Wind Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Wind Noise } Wind Noise #Library : Animator: Sound Sample #DataSet : Wind Noise #Category: Wind Noise #FileID : SndSmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp105.par #BlueLink2 Animator: Sound Sample`Wind Noise` Wind Noise` , Sample 3 LOG_ENTRY Used Dataset: Animator: Sound Set; { General Vehicle Sounds } Gasoline Engine Vehicle #Library : Animator: Sound Set #DataSet : Gasoline Engine Vehicle #Category: General Vehicle Sounds #FileID : SndSet105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set ENTRY_NOTEFILE Animator\Sound\Set\SndSet105_note.txt The sound samples are based on a 4 cylinder engine. The frequency can be scaled for a different number of cylinders by setting the ncyls parameter here. EXIT_NOTEFILE Animator\Sound\Set\SndSet105_note.txt EXIT_PARSFILE Animator\Sound\Set\SndSet105.par #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL261.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Brake Lights (D-Class)`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\brakes_on.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 1 SET_SCALE_Y 1.005 SET_SCALE_Z 1 SET_OFFSET_X -0.01 SET_OFFSET_Y 0 SET_OFFSET_Z 0.3 X_REF_LENGTH 2850 Y_REF_LENGTH 1900 Z_REF_LENGTH 1700 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 *IMAGE_FIT_MODE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Brake Lights (D-Class) #Library : Animator: Shape File Link #DataSet : SUV: Brake Lights (D-Class) #Category: CS SUV #FileID : AniSTL261 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL261.par #BlueLink3 Animator: Shape File Link`SUV: Brake Lights (D-Class)` CS SUV` , Brake lights WRITE_REFERENCE_FRAME_SIZE ENTER_PARSFILE Animator\Cameras\Camera101.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Vehicle Pictures`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 1 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 230 SET_ELEVATION 6 SET_DISTANCE 12 *SET_LOOKPOINT_X 1 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 230 *SET_ELEVATION 6 *SET_DISTANCE 12 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Vehicle Pictures #Library : Animator: Camera Setup #DataSet : Vehicle Pictures #Category: Shape Preview #FileID : Camera101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera ENTRY_NOTEFILE Animator\Cameras\Camera101_note.txt Pause the animation at the very start and center the vehicle in the animator to take a picture for the Animator: Vehicle screen. EXIT_NOTEFILE Animator\Cameras\Camera101_note.txt EXIT_PARSFILE Animator\Cameras\Camera101.par #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera ENTER_PARSFILE Animator\STL\AniSTL114.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Blurred Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\blurred_tire\blurred_tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Blurred Tire #Library : Animator: Shape File Link #DataSet : Blurred Tire #Category: Tires #FileID : AniSTL114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL114.par #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { D-Class Vehicles } D-Class, SUV #Library : Animator: Vehicles and Sensor Targets #DataSet : D-Class, SUV #Category: D-Class Vehicles #FileID : AniVeh116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh116_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh116_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh116.par #BlueLink2 Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` , Vehicle animator data ENTER_PARSFILE Powertrain\4wd\4WD106.par`08-02-2011`16:42:55 #FullDataName Powertrain: 4-Wheel Drive`150 kW, 6-spd., 4.1 Ratio` OPT_PT 3 OPT_ENGINE_PITCH_REACTION(1) 0 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 OPT_DIFF_INTERNAL(3) 1 #RingCtrl5 1 #RingCtrl6 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 #CheckBox1 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(1) 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine110.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`150 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.2 #CheckBox0 0 OPT_THROTTLE_DELAY 0 ENTER_PARSFILE Powertrain\Fuel_Rate\FuelRate102.par`08-02-2011`16:42:52 #FullDataName Powertrain: Fuel Consumption Rate`150 kW Fuel Consumption` #RingCtrl0 CARPET #RadioCtrl0 0 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Fuel rate (kg/sec) #DiagramTwo0 *3D_DATA 26, 19 ! columns x rows FUEL_RATE_CARPET 0, 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28, 0.32, 0.36, 0.4, 0.44, 0.48, 0.52, 0.56, 0.6, 0.64, 0.68, 0.72, 0.76, 0.8, 0.84, 0.88, 0.92, 0.96, 1 600, 8e-05, 0.0002, 0.0003, 0.00032, 0.00034, 0.00037, 0.00039, 0.00041, 0.00043, 0.00046, 0.00048, 0.0005, 0.00052, 0.00055, 0.00057, 0.00059, 0.00061, 0.00064, 0.00066, 0.00068, 0.0007, 0.00073, 0.00075, 0.00077, 0.00079, 0.00082 800, 0.00013, 0.0002, 0.0004, 0.00059, 0.00071, 0.0008, 0.00083, 0.00085, 0.00086, 0.00087, 0.00088, 0.00089, 0.0009, 0.00091, 0.00092, 0.00093, 0.00094, 0.00096, 0.00097, 0.00098, 0.00099, 0.001, 0.00101, 0.00102, 0.00103, 0.00104 1000, 0.00016, 0.0002, 0.00039, 0.00062, 0.00079, 0.00091, 0.00099, 0.00104, 0.00107, 0.00108, 0.00109, 0.00111, 0.00112, 0.00113, 0.00114, 0.00115, 0.00117, 0.00118, 0.00119, 0.0012, 0.00121, 0.00123, 0.00124, 0.00125, 0.00126, 0.00127 1200, 0.00016, 0.00021, 0.00039, 0.00064, 0.00088, 0.00104, 0.00114, 0.00123, 0.00128, 0.00131, 0.00133, 0.00134, 0.00135, 0.00137, 0.00138, 0.0014, 0.00141, 0.00142, 0.00144, 0.00145, 0.00147, 0.00148, 0.00149, 0.00151, 0.00152, 0.00154 1400, 0.00017, 0.00023, 0.00039, 0.00066, 0.00091, 0.00113, 0.0013, 0.0014, 0.00148, 0.00153, 0.00156, 0.00158, 0.0016, 0.00161, 0.00163, 0.00165, 0.00167, 0.00168, 0.0017, 0.00172, 0.00174, 0.00175, 0.00177, 0.00179, 0.00181, 0.00182 1600, 0.0002, 0.00026, 0.0004, 0.00066, 0.00095, 0.00119, 0.00139, 0.00154, 0.00164, 0.00173, 0.00178, 0.00181, 0.00183, 0.00184, 0.00186, 0.00188, 0.0019, 0.00192, 0.00194, 0.00195, 0.00197, 0.00199, 0.00201, 0.00203, 0.00205, 0.00207 1800, 0.00021, 0.00028, 0.00039, 0.00067, 0.00095, 0.00124, 0.00147, 0.00166, 0.00178, 0.00189, 0.00195, 0.002, 0.00203, 0.00206, 0.00209, 0.00212, 0.00215, 0.00218, 0.00222, 0.00225, 0.00228, 0.00231, 0.00234, 0.00237, 0.0024, 0.00243 2000, 0.00023, 0.0003, 0.00038, 0.00065, 0.00096, 0.00129, 0.00156, 0.00178, 0.00195, 0.00207, 0.00215, 0.00221, 0.00227, 0.00231, 0.00234, 0.00238, 0.00241, 0.00245, 0.00249, 0.00252, 0.00256, 0.00259, 0.00263, 0.00267, 0.0027, 0.00274 2200, 0.00025, 0.00033, 0.00041, 0.00065, 0.00098, 0.0013, 0.00162, 0.00189, 0.00212, 0.00226, 0.00239, 0.00246, 0.00252, 0.00257, 0.00261, 0.00264, 0.00268, 0.00272, 0.00275, 0.00279, 0.00282, 0.00286, 0.0029, 0.00293, 0.00297, 0.003 2400, 0.00027, 0.00036, 0.00044, 0.00065, 0.00095, 0.00133, 0.00168, 0.00199, 0.00223, 0.0024, 0.00255, 0.00265, 0.00272, 0.00278, 0.00284, 0.0029, 0.00296, 0.00302, 0.00308, 0.00314, 0.00319, 0.00325, 0.00331, 0.00337, 0.00343, 0.00349 2800, 0.00033, 0.00039, 0.00046, 0.00065, 0.00097, 0.00134, 0.00174, 0.00207, 0.00239, 0.00265, 0.0028, 0.00296, 0.00307, 0.00313, 0.0032, 0.00326, 0.00331, 0.00336, 0.00342, 0.00347, 0.00352, 0.00357, 0.00363, 0.00368, 0.00373, 0.00379 3200, 0.00038, 0.00045, 0.00053, 0.00064, 0.00097, 0.00136, 0.00175, 0.00216, 0.00256, 0.00287, 0.0031, 0.00326, 0.00343, 0.00365, 0.00388, 0.0041, 0.00424, 0.00425, 0.00427, 0.00429, 0.0043, 0.00432, 0.00434, 0.00435, 0.00437, 0.00439 3600, 0.00043, 0.00052, 0.00061, 0.0007, 0.00095, 0.00137, 0.00179, 0.00221, 0.00272, 0.00315, 0.00347, 0.00384, 0.00423, 0.00463, 0.00487, 0.00495, 0.00502, 0.00509, 0.00513, 0.00514, 0.00516, 0.00517, 0.00519, 0.0052, 0.00521, 0.00523 4000, 0.00047, 0.00059, 0.00083, 0.00118, 0.00162, 0.0021, 0.00259, 0.00317, 0.00367, 0.00403, 0.00436, 0.00487, 0.00537, 0.00587, 0.00603, 0.00608, 0.00614, 0.0062, 0.00624, 0.00625, 0.00626, 0.00627, 0.00629, 0.0063, 0.00631, 0.00633 4400, 0.00051, 0.00064, 0.00085, 0.00122, 0.00165, 0.00218, 0.0027, 0.00333, 0.00392, 0.00443, 0.00477, 0.00514, 0.00568, 0.00621, 0.00675, 0.00703, 0.00709, 0.00715, 0.00721, 0.00726, 0.00731, 0.00732, 0.00733, 0.00735, 0.00736, 0.00738 4800, 0.00052, 0.00074, 0.00095, 0.00121, 0.00167, 0.00218, 0.00272, 0.00336, 0.00404, 0.00459, 0.00538, 0.0064, 0.00701, 0.00725, 0.0075, 0.00774, 0.00793, 0.00799, 0.00805, 0.00811, 0.00817, 0.00822, 0.00828, 0.00829, 0.0083, 0.00831 5200, 0.00059, 0.00078, 0.00098, 0.00117, 0.00164, 0.00216, 0.00272, 0.0034, 0.0041, 0.00505, 0.00633, 0.0069, 0.00747, 0.00779, 0.00807, 0.00835, 0.00863, 0.0088, 0.00886, 0.00891, 0.00897, 0.00903, 0.00909, 0.00914, 0.0092, 0.00926 5600, 0.00065, 0.00083, 0.001, 0.00119, 0.0016, 0.00212, 0.00273, 0.00356, 0.00462, 0.00551, 0.00638, 0.00704, 0.00762, 0.00803, 0.0083, 0.00857, 0.00885, 0.00912, 0.00925, 0.00931, 0.00937, 0.00943, 0.00949, 0.00955, 0.00961, 0.00967 5800, 0.00076, 0.0009, 0.00103, 0.00119, 0.00162, 0.00211, 0.00271, 0.00357, 0.0046, 0.00548, 0.00642, 0.00712, 0.00772, 0.00816, 0.00841, 0.00867, 0.00892, 0.00918, 0.0093, 0.00935, 0.0094, 0.00945, 0.00951, 0.00956, 0.00961, 0.00966 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Fuel Consumption Rate; 150 kW Fuel Consumption #Library : Powertrain: Fuel Consumption Rate #DataSet : 150 kW Fuel Consumption #Category: #FileID : FuelRate102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:52 #VehCode Fuel rate EXIT_PARSFILE Powertrain\Fuel_Rate\FuelRate102.par #BlueLink0 Powertrain: Fuel Consumption Rate`150 kW Fuel Consumption` ` , Fuel rate *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 24.75, 76.11, 101.37, 103.43, 104.6, 105.18, 105.38, 105.43, 105.46, 105.43 633, 29.7, 92.87, 139.66, 149.15, 150.67, 151.28, 151.5, 151.52, 151.52, 151.52 750, 0, 87.39, 148.02, 161.35, 164.95, 166.25, 166.73, 166.77, 166.77, 166.75 1107, -9.9, 70.62, 173.59, 198.66, 208.61, 212.02, 213.29, 213.4, 213.37, 213.29 1463, -14.85, 47.12, 167.31, 207.9, 221.15, 227.15, 230.09, 230.77, 231.22, 235.62 1820, -16.83, 25.74, 148.5, 211.6, 233.68, 242.29, 246.89, 248.14, 249.06, 255.42 2177, -20.17, 9.9, 117.65, 203.67, 237.6, 257.4, 260.37, 263.34, 266.31, 272.88 2533, -25.32, -6.41, 81.3, 182.08, 239.58, 267, 274.23, 279.24, 282.15, 287.1 2890, -30.14, -15.16, 56.41, 153.5, 233.12, 269.9, 285.22, 289.08, 295.02, 299.97 3247, -34.39, -22.06, 37.66, 122.49, 223.45, 267.3, 287.1, 295.02, 300.96, 306.9 3603, -38.57, -28.1, 23.48, 96.53, 201.04, 259.38, 288.09, 297, 303.93, 309.87 3960, -42.77, -33.71, 11.8, 76.42, 174.35, 248.62, 285.12, 296.01, 302.94, 306.9 4317, -47.21, -39.38, 0.28, 57.45, 150.24, 237.3, 280.17, 290.07, 297, 302.88 4673, -51.83, -45.01, -9.97, 41.19, 125.06, 220.31, 272.25, 282.15, 292.05, 297 5030, -56.74, -50.57, -19.08, 26.99, 102.65, 198.96, 262.35, 272.25, 282.15, 287.1 5387, -61.67, -56.24, -27.53, 14.45, 83.52, 176.58, 246.84, 256.41, 269.64, 272.49 5743, -67.19, -62.17, -35.72, 2.82, 66.2, 153.28, 221.41, 236.52, 243.61, 246.41 6100, -73.21, -68.41, -43.88, -8.16, 50.38, 130.66, 193.86, 207.92, 214.52, 217.05 6500, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19 6700, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 150 kW Engine #Library : Powertrain: Engine #DataSet : 150 kW Engine #Category: CS Engine Torque Curves #FileID : Engine110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine110.par #BlueLink0 Powertrain: Engine`150 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC103.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 150 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.00704273 0.1, 0.00704273 0.2, 0.00704273 0.3, 0.00704269 0.4, 0.00704199 0.5, 0.00703585 0.6, 0.00700014 0.7, 0.00684379 0.8, 0.00628652 0.9, 0.00458708 0.95, 0.00282599 0.99, 0.000673411 1.01, -0.000673411 1.05, -0.00282599 1.1, -0.00458708 1.2, -0.00628652 1.3, -0.00684379 1.4, -0.00700014 1.5, -0.00703585 1.6, -0.00704199 1.7, -0.00704269 1.8, -0.00704273 1.9, -0.00704273 2, -0.00704273 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 150 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 150 kW Engine #Category: CS Torque Converters #FileID : TC103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC103.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 150 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` #RingCtrl0 6 NGEARS 6 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.168 R_GEAR_TR(1) 3.538 R_GEAR_TR(2) 2.06 R_GEAR_TR(3) 1.404 R_GEAR_TR(4) 1.00 R_GEAR_TR(5) 0.713 R_GEAR_TR(6) 0.582 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 T_SHIFT 0.25 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift101.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 1-2 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 874 0.2, 874 0.8, 1653 1, 1653 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 699 0.4, 699 0.8, 1240 1, 1240 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 1-2 Shift #Category: 6-speed #FileID : Shift101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift101.par #BlueLink0 Powertrain: Shift Schedule`6-speed, 1-2 Shift` 6-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift102.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 2-3 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1282 0.2, 1282 0.8, 2840 1, 2840 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1026 0.4, 1026 0.8, 2130 1, 2130 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 2-3 Shift #Category: 6-speed #FileID : Shift102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift102.par #BlueLink1 Powertrain: Shift Schedule`6-speed, 2-3 Shift` 6-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift103.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 3-4 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 4167 1, 4167 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 3125 1, 3125 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 3-4 Shift #Category: 6-speed #FileID : Shift103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift103.par #BlueLink2 Powertrain: Shift Schedule`6-speed, 3-4 Shift` 6-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift104.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 4-5 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2525 0.2, 2525 0.8, 5850 1, 5850 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2020 0.4, 2020 0.8, 4388 1, 4388 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 4-5 Shift #Category: 6-speed #FileID : Shift104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift104.par #BlueLink3 Powertrain: Shift Schedule`6-speed, 4-5 Shift` 6-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift105.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 5-6 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 3093 0.2, 3093 0.8, 8205 1, 8205 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2474 0.4, 2474 0.8, 6154 1, 6154 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 5-6 Shift #Category: 6-speed #FileID : Shift105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift105.par #BlueLink4 Powertrain: Shift Schedule`6-speed, 5-6 Shift` 6-speed` , Shift schedule igear 6 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 6-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 6-Speed Transmission #Category: #FileID : Trans101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans101.par #BlueLink10 Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` ` , Transmission (Extended) IDIFF 3 ENTER_PARSFILE Powertrain\Centerdiff\XC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transfer Case`Full Time Viscous 50/50` #CheckBox0 0 LOCKED_XC_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_XC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_XC 1.00 R_EFF_F_XC 0.99 R_EFF_R_XC 0.99 R_REAR_XC 0.5 LOCKED_XC_DAMP 0.8 LOCKED_XC_K 80 R_GEAR_DIFF 1.00 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 R_REAR_BIAS 0.5 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 LOG_ENTRY Used Dataset: Powertrain: Transfer Case; Full Time Viscous 50/50 #Library : Powertrain: Transfer Case #DataSet : Full Time Viscous 50/50 #Category: #FileID : XC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transfer case EXIT_PARSFILE Powertrain\Centerdiff\XC101.par #BlueLink3 Powertrain: Transfer Case`Full Time Viscous 50/50` ` , Transfer case IDIFF 1 ENTER_PARSFILE Powertrain\Frontdiff\F_Diff103.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front Differential`Open - Gear Ratio 4.1`CS Front Differentials #CheckBox0 0 LOCKED_FD_OPT 0 #RingCtrl0 CONSTANT OPT_LOCKED_DIFF 0 M_DIFF_VISC_CONSTANT 0 #RadioCtrl0 0 M_DIFF_FD_CONSTANT 0 R_GEAR_FD 4.1 R_EFF_F_FD 0.99 R_EFF_R_FD 0.99 LOCKED_FD_DAMP 0.8 LOCKED_FD_K 80 IDS_F 0.013 IHS_LF 0.009 IHS_RF 0.009 *SCALAR 0 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Front Differential; { CS Front Differentials } Open - Gear Ratio 4.1 #Library : Powertrain: Front Differential #DataSet : Open - Gear Ratio 4.1 #Category: CS Front Differentials #FileID : F_Diff103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Front differential EXIT_PARSFILE Powertrain\Frontdiff\F_Diff103.par #BlueLink4 Powertrain: Front Differential`Open - Gear Ratio 4.1` CS Front Differentials` , Differential front IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff103.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Open - Gear Ratio 4.1`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 CONSTANT OPT_LOCKED_DIFF 0 M_DIFF_VISC_CONSTANT 0 #RadioCtrl0 0 M_DIFF_RD_CONSTANT 0 R_GEAR_RD 4.1 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 *SCALAR 0 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Open - Gear Ratio 4.1 #Library : Powertrain: Rear Differential #DataSet : Open - Gear Ratio 4.1 #Category: CS Rear Differentials #FileID : R_Diff103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff103.par #BlueLink5 Powertrain: Rear Differential`Open - Gear Ratio 4.1` CS Rear Differentials` , Differential rear LOG_ENTRY Used Dataset: Powertrain: 4-Wheel Drive; 150 kW, 6-spd., 4.1 Ratio #Library : Powertrain: 4-Wheel Drive #DataSet : 150 kW, 6-spd., 4.1 Ratio #Category: #FileID : 4WD106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:55 #VehCode 4WD ENTRY_NOTEFILE Powertrain\4wd\4WD106_note.txt Generic 150 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 150 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\4wd\4WD106_note.txt EXIT_PARSFILE Powertrain\4wd\4WD106.par #BlueLink5 Powertrain: 4-Wheel Drive`150 kW, 6-spd., 4.1 Ratio` ` , All-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W113.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`D-Class, SUV w/o ABS`CS D-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 #RingCtrl0 0 #RingCtrl1 0 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq101.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`300 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 300 MY_BRAKE_COEFFICIENT 300 LOG_ENTRY Used Dataset: Brakes: Torque; 300 N-m/MPa #Library : Brakes: Torque #DataSet : 300 N-m/MPa #Category: #FileID : BrkTrq101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq101.par #BlueLink0 Brakes: Torque`300 N-m/MPa` ` , Left front ENTER_PARSFILE Brakes\Proportioning\BrkProp101.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity Gain` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1 PBK_DL_COEFFICIENT 1 LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity Gain #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity Gain #Category: #FileID : BrkProp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve EXIT_PARSFILE Brakes\Proportioning\BrkProp101.par #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 0 iside 2 #BlueLink1 Brakes: Torque`300 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq104.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`150 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 150 MY_BRAKE_COEFFICIENT 150 LOG_ENTRY Used Dataset: Brakes: Torque; 150 N-m/MPa #Library : Brakes: Torque #DataSet : 150 N-m/MPa #Category: #FileID : BrkTrq104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq104.par #BlueLink2 Brakes: Torque`150 N-m/MPa` ` , Left rear ENTER_PARSFILE Brakes\Proportioning\BrkProp104.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 PBK_DL_TABLE LINEAR 0, 0 2, 2 3, 2.3 ENDTABLE LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity until 2.0MPa then 30% #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity until 2.0MPa then 30% #Category: #FileID : BrkProp104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve ENTRY_NOTEFILE Brakes\Proportioning\BrkProp104_note.txt Brake systems without ABS control typically have a propotioning valve that reduces pressure gains on the rear wheel when a moderate pressure is reached, to avoid locking the rear wheels with high braking and associated load transfer. They are also used on some trucks with large ranges in load. EXIT_NOTEFILE Brakes\Proportioning\BrkProp104_note.txt EXIT_PARSFILE Brakes\Proportioning\BrkProp104.par #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 0 iside 2 #BlueLink3 Brakes: Torque`150 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS D-Class } D-Class, SUV w/o ABS #Library : Brakes: Four-Wheel System #DataSet : D-Class, SUV w/o ABS #Category: CS D-Class #FileID : Brk4W113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W113.par #BlueLink6 Brakes: Four-Wheel System`D-Class, SUV w/o ABS` CS D-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2111.par`08-02-2011`16:42:43 #FullDataName Steering`D-Class, SUV: Power, Recirc. Ball`CS D-Class *I_COL 0.02 *I_GEAR_IN 0.00015 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 77.0 *L2_LKPO 0 *R1_LKPO 77.0 *R2_LKPO 0 *L1_AKPI 12.5 *L2_AKPI 0 *R1_AKPI 12.5 *R2_AKPI 0 *L1_ACAST 9.5 *L2_ACAST 0 *R1_ACAST 9.5 *R2_ACAST 0 *L1_XKPO 5.0 *L2_XKPO 0 *R1_XKPO 5.0 *R2_XKPO 0 *RSW_F 20 *D_GR_F 4 *D_RACK_F 30 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 2 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.00015 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 77.0 A_KPI 12.5 A_CASTER 9.5 X_KPO 5.0 iside 2 L_KPO 77.0 A_KPI 12.5 A_CASTER 9.5 X_KPO 5.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 0 GEAR_ROT_COEFFICIENT 0.02 ENTER_PARSFILE Steering\Compliance\StrCmp101.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`No Steer Compliance` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 STEER_COMP_CONSTANT 0 LOG_ENTRY Used Dataset: Steering System: Compliance; No Steer Compliance #Library : Steering System: Compliance #DataSet : No Steer Compliance #Category: #FileID : StrCmp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp101.par #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 0 GEAR_ROT_COEFFICIENT 1/20 D_GEAR 4 TBAR 2 ENTER_PARSFILE Steering\Kinematics2\StrKinAx102.par`08-02-2011`16:42:41 #FullDataName Steering System: Kinematics for 2 Wheels (Recirc. Ball)`D-Class, SUV Recirc. Ball Kinematics`D-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 STEER_KIN_TABLE SPLINE -30.6, -35.73321668 -30.294, -35.33074603 -29.988, -34.92888705 -29.682, -34.52765493 -29.376, -34.12706463 -29.07, -33.72713088 -28.764, -33.32786819 -28.458, -32.92929081 -28.152, -32.5314128 -27.846, -32.13424794 -27.54, -31.73780979 -27.234, -31.34211166 -26.928, -30.9471666 -26.622, -30.55298743 -26.316, -30.1595867 -26.01, -29.76697671 -25.704, -29.37516952 -25.398, -28.98417692 -25.092, -28.59401042 -24.786, -28.2046813 -24.48, -27.81620057 -24.174, -27.42857896 -23.868, -27.04182696 -23.562, -26.65595478 -23.256, -26.27097236 -22.95, -25.88688939 -22.644, -25.50371529 -22.338, -25.1214592 -22.032, -24.74013 -21.726, -24.35973631 -21.42, -23.98028649 -21.114, -23.60178863 -20.808, -23.22425053 -20.502, -22.84767977 -20.196, -22.47208363 -19.89, -22.09746916 -19.584, -21.72384311 -19.278, -21.35121202 -18.972, -20.97958212 -18.666, -20.60895943 -18.36, -20.23934968 -18.054, -19.87075836 -17.748, -19.50319072 -17.442, -19.13665174 -17.136, -18.77114616 -16.83, -18.40667849 -16.524, -18.04325296 -16.218, -17.6808736 -15.912, -17.31954418 -15.606, -16.95926823 -15.3, -16.60004905 -14.994, -16.24188972 -14.688, -15.88479308 -14.382, -15.52876174 -14.076, -15.17379809 -13.77, -14.81990432 -13.464, -14.46708236 -13.158, -14.11533397 -12.852, -13.76466066 -12.546, -13.41506376 -12.24, -13.06654437 -11.934, -12.7191034 -11.628, -12.37274156 -11.322, -12.02745937 -11.016, -11.68325713 -10.71, -11.34013497 -10.404, -10.99809284 -10.098, -10.65713047 -9.792, -10.31724746 -9.486, -9.97844318 -9.18, -9.640716858 -8.874, -9.304067538 -8.568, -8.968494097 -8.262, -8.633995246 -7.956, -8.300569533 -7.65, -7.968215349 -7.344, -7.636930926 -7.038, -7.306714344 -6.732, -6.977563533 -6.426, -6.649476276 -6.12, -6.322450212 -5.814, -5.996482841 -5.508, -5.671571523 -5.202, -5.347713486 -4.896, -5.024905823 -4.59, -4.703145503 -4.284, -4.382429366 -3.978, -4.062754131 -3.672, -3.744116397 -3.366, -3.426512647 -3.06, -3.109939249 -2.754, -2.794392461 -2.448, -2.479868432 -2.142, -2.166363208 -1.836, -1.853872728 -1.53, -1.542392837 -1.224, -1.231919277 -0.918, -0.9224477 -0.612, -0.613973663 -0.306, -0.306492635 2.20934e-14, 0 0.306, 0.305508946 0.612, 0.610038985 0.918, 0.913594981 1.224, 1.216181874 1.53, 1.517804678 1.836, 1.818468479 2.142, 2.118178435 2.448, 2.416939769 2.754, 2.714757771 3.06, 3.011637794 3.366, 3.307585251 3.672, 3.602605617 3.978, 3.89670442 4.284, 4.189887245 4.59, 4.482159732 4.896, 4.773527567 5.202, 5.06399649 5.508, 5.353572286 5.814, 5.642260785 6.12, 5.930067861 6.426, 6.216999431 6.732, 6.503061451 7.038, 6.788259915 7.344, 7.072600856 7.65, 7.356090338 7.956, 7.638734464 8.262, 7.920539366 8.568, 8.201511205 8.874, 8.481656175 9.18, 8.760980495 9.486, 9.039490412 9.792, 9.317192196 10.098, 9.594092142 10.404, 9.870196567 10.71, 10.14551181 11.016, 10.42004423 11.322, 10.69380019 11.628, 10.96678611 11.934, 11.23900837 12.24, 11.51047342 12.546, 11.78118769 12.852, 12.05115763 13.158, 12.32038971 13.464, 12.5888904 13.77, 12.8566662 14.076, 13.12372358 14.382, 13.39006906 14.688, 13.65570916 14.994, 13.92065038 15.3, 14.18489925 15.606, 14.44846229 15.912, 14.71134605 16.218, 14.97355705 16.524, 15.23510184 16.83, 15.49598695 17.136, 15.75621894 17.442, 16.01580433 17.748, 16.27474968 18.054, 16.53306152 18.36, 16.7907464 18.666, 17.04781086 18.972, 17.30426143 19.278, 17.56010466 19.584, 17.81534707 19.89, 18.06999519 20.196, 18.32405554 20.502, 18.57753465 20.808, 18.83043902 21.114, 19.08277518 21.42, 19.33454961 21.726, 19.58576883 22.032, 19.83643931 22.338, 20.08656755 22.644, 20.33616003 22.95, 20.5852232 23.256, 20.83376354 23.562, 21.08178749 23.868, 21.32930151 24.174, 21.57631204 24.48, 21.82282549 24.786, 22.06884829 25.092, 22.31438686 25.398, 22.55944759 25.704, 22.80403687 26.01, 23.0481611 26.316, 23.29182664 26.622, 23.53503986 26.928, 23.7778071 27.234, 24.02013472 27.54, 24.26202905 27.846, 24.50349641 28.152, 24.74454311 28.458, 24.98517546 28.764, 25.22539975 29.07, 25.46522226 29.376, 25.70464927 29.682, 25.94368703 29.988, 26.18234179 30.294, 26.4206198 30.6, 26.65852728 ENDTABLE iside 1 #DiagramOne1 STEER_KIN_TABLE SPLINE -30.6, -26.65852728 -30.294, -26.4206198 -29.988, -26.18234179 -29.682, -25.94368703 -29.376, -25.70464927 -29.07, -25.46522226 -28.764, -25.22539975 -28.458, -24.98517546 -28.152, -24.74454311 -27.846, -24.50349641 -27.54, -24.26202905 -27.234, -24.02013472 -26.928, -23.7778071 -26.622, -23.53503986 -26.316, -23.29182664 -26.01, -23.0481611 -25.704, -22.80403687 -25.398, -22.55944759 -25.092, -22.31438686 -24.786, -22.06884829 -24.48, -21.82282549 -24.174, -21.57631204 -23.868, -21.32930151 -23.562, -21.08178749 -23.256, -20.83376354 -22.95, -20.5852232 -22.644, -20.33616003 -22.338, -20.08656755 -22.032, -19.83643931 -21.726, -19.58576883 -21.42, -19.33454961 -21.114, -19.08277518 -20.808, -18.83043902 -20.502, -18.57753465 -20.196, -18.32405554 -19.89, -18.06999519 -19.584, -17.81534707 -19.278, -17.56010466 -18.972, -17.30426143 -18.666, -17.04781086 -18.36, -16.7907464 -18.054, -16.53306152 -17.748, -16.27474968 -17.442, -16.01580433 -17.136, -15.75621894 -16.83, -15.49598695 -16.524, -15.23510184 -16.218, -14.97355705 -15.912, -14.71134605 -15.606, -14.44846229 -15.3, -14.18489925 -14.994, -13.92065038 -14.688, -13.65570916 -14.382, -13.39006906 -14.076, -13.12372358 -13.77, -12.8566662 -13.464, -12.5888904 -13.158, -12.32038971 -12.852, -12.05115763 -12.546, -11.78118769 -12.24, -11.51047342 -11.934, -11.23900837 -11.628, -10.96678611 -11.322, -10.69380019 -11.016, -10.42004423 -10.71, -10.14551181 -10.404, -9.870196567 -10.098, -9.594092142 -9.792, -9.317192196 -9.486, -9.039490412 -9.18, -8.760980495 -8.874, -8.481656175 -8.568, -8.201511205 -8.262, -7.920539366 -7.956, -7.638734464 -7.65, -7.356090338 -7.344, -7.072600856 -7.038, -6.788259915 -6.732, -6.503061451 -6.426, -6.216999431 -6.12, -5.930067861 -5.814, -5.642260785 -5.508, -5.353572286 -5.202, -5.06399649 -4.896, -4.773527567 -4.59, -4.482159732 -4.284, -4.189887245 -3.978, -3.89670442 -3.672, -3.602605617 -3.366, -3.307585251 -3.06, -3.011637794 -2.754, -2.714757771 -2.448, -2.416939769 -2.142, -2.118178435 -1.836, -1.818468479 -1.53, -1.517804678 -1.224, -1.216181874 -0.918, -0.913594981 -0.612, -0.610038985 -0.306, -0.305508946 2.20934e-14, 0 0.306, 0.306492635 0.612, 0.613973663 0.918, 0.9224477 1.224, 1.231919277 1.53, 1.542392837 1.836, 1.853872728 2.142, 2.166363208 2.448, 2.479868432 2.754, 2.794392461 3.06, 3.109939249 3.366, 3.426512647 3.672, 3.744116397 3.978, 4.062754131 4.284, 4.382429366 4.59, 4.703145503 4.896, 5.024905823 5.202, 5.347713486 5.508, 5.671571523 5.814, 5.996482841 6.12, 6.322450212 6.426, 6.649476276 6.732, 6.977563533 7.038, 7.306714344 7.344, 7.636930926 7.65, 7.968215349 7.956, 8.300569533 8.262, 8.633995246 8.568, 8.968494097 8.874, 9.304067538 9.18, 9.640716858 9.486, 9.97844318 9.792, 10.31724746 10.098, 10.65713047 10.404, 10.99809284 10.71, 11.34013497 11.016, 11.68325713 11.322, 12.02745937 11.628, 12.37274156 11.934, 12.7191034 12.24, 13.06654437 12.546, 13.41506376 12.852, 13.76466066 13.158, 14.11533397 13.464, 14.46708236 13.77, 14.81990432 14.076, 15.17379809 14.382, 15.52876174 14.688, 15.88479308 14.994, 16.24188972 15.3, 16.60004905 15.606, 16.95926823 15.912, 17.31954418 16.218, 17.6808736 16.524, 18.04325296 16.83, 18.40667849 17.136, 18.77114616 17.442, 19.13665174 17.748, 19.50319072 18.054, 19.87075836 18.36, 20.23934968 18.666, 20.60895943 18.972, 20.97958212 19.278, 21.35121202 19.584, 21.72384311 19.89, 22.09746916 20.196, 22.47208363 20.502, 22.84767977 20.808, 23.22425053 21.114, 23.60178863 21.42, 23.98028649 21.726, 24.35973631 22.032, 24.74013 22.338, 25.1214592 22.644, 25.50371529 22.95, 25.88688939 23.256, 26.27097236 23.562, 26.65595478 23.868, 27.04182696 24.174, 27.42857896 24.48, 27.81620057 24.786, 28.2046813 25.092, 28.59401042 25.398, 28.98417692 25.704, 29.37516952 26.01, 29.76697671 26.316, 30.1595867 26.622, 30.55298743 26.928, 30.9471666 27.234, 31.34211166 27.54, 31.73780979 27.846, 32.13424794 28.152, 32.5314128 28.458, 32.92929081 28.764, 33.32786819 29.07, 33.72713088 29.376, 34.12706463 29.682, 34.52765493 29.988, 34.92888705 30.294, 35.33074603 30.6, 35.73321668 ENDTABLE #RadioCtrl0 1 #RadioCtrl1 1 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Recirc. Ball); { D-Class } D-Class, SUV Recirc. Ball Kinematics #Library : Steering System: Kinematics for 2 Wheels (Recirc. Ball) #DataSet : D-Class, SUV Recirc. Ball Kinematics #Category: D-Class #FileID : StrKinAx102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:41 #VehCode Steer kinematics ENTRY_NOTEFILE Steering\Kinematics2\StrKinAx102_note.txt D-Class SUV Recirculating Ball Kinematics data screen with 11 rows per wheel and Function Type: Spline interpolation and extrapolation. EXIT_NOTEFILE Steering\Kinematics2\StrKinAx102_note.txt EXIT_PARSFILE Steering\Kinematics2\StrKinAx102.par #BlueLink8 Steering System: Kinematics for 2 Wheels (Recirc. Ball)`D-Class, SUV Recirc. Ball Kinematics` D-Class` , Pitman arm to front wheels ENTER_PARSFILE Steering\Str_TqBoost\TqBoost101.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Torque`200 N-m` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 TC_BOOST 2 *SCALAR 200 M_BOOST_G_COEFFICIENT 200 LOG_ENTRY Used Dataset: Steering: Power Assist Torque; 200 N-m #Library : Steering: Power Assist Torque #DataSet : 200 N-m #Category: #FileID : TqBoost101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist torque EXIT_PARSFILE Steering\Str_TqBoost\TqBoost101.par #BlueLink17 Steering: Power Assist Torque`200 N-m` ` , Front boost torque ENTER_PARSFILE Steering\Compliance\StrCmp105.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`0.002 deg/N-m` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 0.002 STEER_COMP_COEFFICIENT 0.002 LOG_ENTRY Used Dataset: Steering System: Compliance; 0.002 deg/N-m #Library : Steering System: Compliance #DataSet : 0.002 deg/N-m #Category: #FileID : StrCmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp105.par #BlueLink13 Steering System: Compliance`0.002 deg/N-m` ` , Front compliance ENTER_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par`08-02-2011`16:42:40 #FullDataName Steering: Parking Torque for 2 Wheels`Zero` #RingCtrl0 CONSTANT #RingCtrl1 CONSTANT #RadioCtrl0 0 #RadioCtrl1 0 *A_MZ_BETA_R 0.1 *A_MZ_BETA_L 0.1 *SCALAR 0 *SCALAR2 0 iside 2 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 iside 1 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 LOG_ENTRY Used Dataset: Steering: Parking Torque for 2 Wheels; Zero #Library : Steering: Parking Torque for 2 Wheels #DataSet : Zero #Category: #FileID : TqPkAx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Parking Torque EXIT_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS D-Class } D-Class, SUV: Power, Recirc. Ball #Library : Steering #DataSet : D-Class, SUV: Power, Recirc. Ball #Category: CS D-Class #FileID : StrSys2111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2111_note.txt Steering for a vehicle with Wheelbase = 2600 mm Front Track = 1565 mm EXIT_NOTEFILE Steering\System2\StrSys2111_note.txt EXIT_PARSFILE Steering\System2\StrSys2111.par #BlueLink7 Steering`D-Class, SUV: Power, Recirc. Ball` CS D-Class` , Steering system *IMAGE_LINK Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS D-Class } D-Class, SUV LEO-defined #Library : Vehicle: Assembly #DataSet : D-Class, SUV LEO-defined #Category: CS D-Class #FileID : Vehicle165 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-23-2019 18:41:30 #VehCode Ind_SA EXIT_PARSFILE Vehicles\Assembly\Vehicle165.par #BlueLink2 Vehicle: Assembly`D-Class, SUV LEO-defined` CS D-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc174.par`09-03-2019`18:42:12 #FullDataName Procedures`chapt4_MPC_SSM_PathTracking`BOOK_MPC_Procedures #CheckBox0 1 OPT_INIT_CONFIG 1 #CheckBox1 1 OPT_INIT_ROAD 1 #CheckBox2 1 OPT_INIT_SPEED 1 #CheckBox3 1 #RingCtrl0 1 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 *SPEED 65 TSTOP 40 TSTART 0 SSTART 0 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 1 OPT_DIRECTION 1 Opt_SC 3 SPEED_STATION_CONSTANT 65 ENTER_PARSFILE Control\Driver\Driver122.par`09-03-2019`18:42:06 #FullDataName Control: Steering by the Closed-loop Driver Model`2 m Right, 1.5 sec. Preview`Constant Position #RingCtrl0 0 #RingCtrl1 CONSTANT LTARG_CONSTANT -2.0 #RadioCtrl0 0 AV_SW_MAX_DM 1200 TLAG_DM 0 A_SW_MAX_DM 720 *TPREV 1.5 *SCALAR -2.0 VLOW_DRIVER 20 #CheckBox0 0 OPT_DRIVER_MODEL 1 #CheckBox1 0 CREATE_PATH_OBJ off TPREV_CONSTANT 1.5 LOG_ENTRY Used Dataset: Control: Steering by the Closed-loop Driver Model; { Constant Position } 2 m Right, 1.5 sec. Preview #Library : Control: Steering by the Closed-loop Driver Model #DataSet : 2 m Right, 1.5 sec. Preview #Category: Constant Position #FileID : Driver122 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-03-2019 18:42:06 #VehCode Driver path follower EXIT_PARSFILE Control\Driver\Driver122.par #BlueLink27 Control: Steering by the Closed-loop Driver Model`2 m Right, 1.5 sec. Preview` Constant Position` , Steering ENTER_PARSFILE Control\Braking\ConBrk101.par`08-02-2011`16:43:32 #FullDataName Control: Braking (Open Loop)`No Open-Loop Braking Pressure` #RingCtrl0 CONSTANT #RadioCtrl0 0 OPT_VMIN -1 *SCALAR 0 PBK_CON_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Braking (Open Loop); No Open-Loop Braking Pressure #Library : Control: Braking (Open Loop) #DataSet : No Open-Loop Braking Pressure #Category: #FileID : ConBrk101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:32 #VehCode Brake control EXIT_PARSFILE Control\Braking\ConBrk101.par #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Gear_at\GearAT101.par`08-02-2011`16:43:31 #FullDataName Control: Shifting (Closed Loop)`AT All Gears` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR NGEARS MODE_TRANS_CONSTANT NGEARS LOG_ENTRY Used Dataset: Control: Shifting (Closed Loop); AT All Gears #Library : Control: Shifting (Closed Loop) #DataSet : AT All Gears #Category: #FileID : GearAT101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:31 #VehCode Closed-loop shift control ENTRY_NOTEFILE Control\Gear_at\GearAT101_note.txt NGEARS is the internal symbol for the number of gears in a transmission. By setting the Mode to NGEARS, CarSim is automatically told to use all of the transmission gears. EXIT_NOTEFILE Control\Gear_at\GearAT101_note.txt EXIT_PARSFILE Control\Gear_at\GearAT101.par #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow ENTER_PARSFILE Roads\3D_Road\Road135.par`09-03-2019`18:38:03 #FullDataName Road: 3D Surface (All Properties)`Alt 3 from FHWA -LEO Flat`Scenic Roads OPT_ROAD 1 iroad 1 ! obsolete March 2011 idz_road 1 RR_SURF 1 DZ_SHADOW 0.05 L_CAMERA_FRONT 0.5 L_CAMERA_REAR 0.5 ENTER_PARSFILE Roads\Center_XY\RoadXY103.par`08-02-2011`16:43:06 #FullDataName Road: X-Y Coordinates of Centerline`Alt 3 Road from FHWA`FHWA SPATH 0 #CheckBox0 0 OPT_ROAD_LOOP 0 #RadioCtrl0 0 OPT_ROAD 1 #DiagramOne0 YIN_TABLE 0, 0, 0 4.352, -2.462, 5.00013479818 8.704, -4.924, 10.0002695964 13.055, -7.386, 14.9995340423 17.407, -9.848, 19.9996688404 21.759, -12.311, 25.0002961011 26.111, -14.773, 30.0004308993 30.462, -17.235, 34.9996953452 34.814, -19.697, 39.9998301434 39.166, -22.159, 44.9999649415 43.518, -24.621, 50.0000997397 47.87, -27.083, 55.0002345379 52.221, -29.545, 59.9994989838 56.573, -32.008, 65.0001262445 60.925, -34.47, 70.0002610426 65.277, -36.932, 75.0003958408 69.628, -39.394, 79.9996602867 73.98, -41.856, 84.9997950849 78.332, -44.318, 89.9999298831 82.684, -46.78, 95.0000646813 87.036, -49.242, 100.000199479 91.387, -51.704, 104.999463925 95.739, -54.167, 110.000091186 100.091, -56.629, 115.000225984 104.443, -59.091, 120.000360782 108.794, -61.553, 124.999625228 113.146, -64.015, 129.999760026 117.498, -66.477, 134.999894825 121.85, -68.939, 140.000029623 126.202, -71.401, 145.000164421 130.553, -73.864, 149.999921415 134.905, -76.326, 155.000056213 139.257, -78.788, 160.000191011 143.609, -81.25, 165.00032581 147.96, -83.712, 169.999590256 152.312, -86.174, 174.999725054 156.664, -88.636, 179.999859852 161.016, -91.098, 184.99999465 165.368, -93.561, 190.000621911 169.719, -96.023, 194.999886357 174.071, -98.485, 200.000021155 178.423, -100.947, 205.000155953 182.775, -103.409, 210.000290751 187.126, -105.871, 214.999555197 191.478, -108.333, 219.999689995 195.83, -110.795, 224.999824793 200.182, -113.257, 229.999959592 204.534, -115.72, 235.000586852 208.885, -118.182, 239.999851298 213.237, -120.644, 244.999986096 217.589, -123.106, 250.000120895 221.941, -125.568, 255.000255693 226.292, -128.03, 259.999520139 230.644, -130.492, 264.999654937 234.996, -132.954, 269.999789735 239.348, -135.417, 275.000416996 243.7, -137.879, 280.000551794 248.057, -140.33, 284.99963671 252.478, -142.667, 290.000317664 256.971, -144.859, 294.999508898 261.533, -146.906, 299.999714194 266.158, -148.804, 304.999017045 270.842, -150.552, 309.998553024 275.581, -152.148, 314.999086695 280.368, -153.591, 319.99884849 285.199, -154.878, 324.998341464 290.069, -156.009, 329.997947549 294.973, -156.982, 334.997542032 299.906, -157.797, 339.99741343 304.863, -158.452, 344.99750083 309.838, -158.946, 349.996966901 314.827, -159.28, 354.997134598 319.824, -159.453, 359.997128398 324.823, -159.465, 364.996142801 329.821, -159.316, 369.996363296 334.811, -159.005, 374.996045386 339.789, -158.534, 379.996277881 344.748, -157.902, 384.995388302 349.685, -157.111, 389.995353302 354.594, -156.16, 394.995621494 359.469, -155.053, 399.994728815 364.309, -153.795, 404.995545148 369.139, -152.501, 409.995878737 373.968, -151.207, 414.995246397 378.798, -149.913, 419.995579986 383.627, -148.619, 424.994947646 388.457, -147.324, 429.995540111 393.287, -146.03, 434.9958737 398.116, -144.736, 439.99524136 402.946, -143.442, 444.995574949 407.776, -142.148, 449.995908537 412.605, -140.854, 454.995276197 417.435, -139.56, 459.995609786 422.264, -138.266, 464.994977446 427.094, -136.971, 469.995569911 431.924, -135.677, 474.9959035 436.753, -134.383, 479.99527116 441.583, -133.089, 484.995604749 446.413, -131.795, 489.995938338 451.242, -130.501, 494.995305998 456.072, -129.207, 499.995639587 460.901, -127.913, 504.995007247 465.731, -126.618, 509.995599712 470.561, -125.324, 514.995933301 475.39, -124.03, 519.995300961 480.22, -122.736, 524.995634549 485.049, -121.442, 529.995002209 489.879, -120.148, 534.995335798 494.709, -118.854, 539.995669387 499.538, -117.56, 544.995037047 504.386, -116.333, 549.995900273 509.271, -115.268, 554.995645266 514.188, -114.366, 559.994694476 519.133, -113.629, 564.994313861 524.1, -113.057, 569.994141158 529.084, -112.651, 574.994650332 534.078, -112.411, 579.994413927 539.077, -112.338, 584.993946905 544.076, -112.431, 589.993811903 549.069, -112.691, 594.993576798 554.05, -113.118, 599.992845744 559.015, -113.709, 604.992896344 563.957, -114.467, 609.99268914 568.871, -115.388, 614.992252821 573.752, -116.473, 619.992391419 578.594, -117.719, 624.992139412 583.391, -119.127, 629.991506672 588.139, -120.693, 634.991092655 592.833, -122.417, 639.991673821 597.466, -124.296, 644.9912068 602.034, -126.329, 649.991178099 606.531, -128.513, 654.990464549 610.954, -130.845, 659.990579847 615.296, -133.324, 664.990420345 619.553, -135.946, 669.990113635 623.72, -138.708, 674.989366879 627.793, -141.608, 679.989299779 631.767, -144.642, 684.989082974 635.638, -147.806, 689.988636654 639.402, -151.098, 694.98913263 643.053, -154.513, 699.988335166 646.588, -158.049, 704.988287266 650.004, -161.7, 709.988172965 653.296, -165.463, 714.987916258 656.461, -169.333, 719.987328724 659.496, -173.307, 724.987718808 662.396, -177.379, 729.986837131 665.24, -181.491, 734.986525121 668.084, -185.604, 739.987035595 670.928, -189.716, 744.986723585 673.772, -193.829, 749.987234059 676.616, -197.941, 754.986922049 679.459, -202.053, 759.986041272 682.303, -206.166, 764.986551746 685.147, -210.278, 769.986239736 687.991, -214.391, 774.98675021 690.835, -218.503, 779.9864382 693.679, -222.616, 784.986948674 696.523, -226.728, 789.986636664 699.367, -230.84, 794.986324655 702.211, -234.953, 799.986835129 705.055, -239.065, 804.986523119 707.899, -243.178, 809.987033593 710.743, -247.29, 814.986721583 713.647, -251.36, 819.986533179 716.71, -255.312, 824.986560479 719.928, -259.138, 829.985940441 723.297, -262.832, 834.985520123 726.811, -266.388, 839.984853279 730.464, -269.802, 844.984833779 734.251, -273.066, 849.984340254 738.166, -276.176, 854.984272754 742.201, -279.128, 859.983825634 746.352, -281.915, 864.983642631 750.61, -284.535, 869.983139005 754.97, -286.982, 874.982879899 759.425, -289.252, 879.982872399 763.966, -291.343, 884.982168549 768.588, -293.251, 889.982503338 773.282, -294.972, 894.982051017 778.041, -296.504, 899.981561493 782.857, -297.844, 904.980506982 787.724, -298.991, 909.980836771 792.632, -299.942, 914.98012322 797.575, -300.697, 919.98045061 802.543, -301.253, 924.979466513 807.53, -301.61, 929.979228307 812.527, -301.767, 934.978694079 817.527, -301.724, 939.978878975 822.521, -301.481, 944.978787474 827.501, -301.039, 949.978363856 832.459, -300.398, 954.977628302 837.388, -299.559, 959.977524501 842.279, -298.524, 964.976835054 847.125, -297.294, 969.976496642 851.918, -295.871, 974.976274437 856.65, -294.258, 979.975633696 861.314, -292.457, 984.975283384 865.905, -290.475, 989.975843853 870.473, -288.442, 994.975815152 875.041, -286.408, 999.976193138 ENDTABLE LOG_ENTRY Used Dataset: Road: X-Y Coordinates of Centerline; { FHWA } Alt 3 Road from FHWA #Library : Road: X-Y Coordinates of Centerline #DataSet : Alt 3 Road from FHWA #Category: FHWA #FileID : RoadXY103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:06 #VehCode Horizontal (X-Y) table EXIT_PARSFILE Roads\Center_XY\RoadXY103.par #BlueLink0 Road: X-Y Coordinates of Centerline`Alt 3 Road from FHWA` FHWA` , Centerline geometry ENTER_PARSFILE Roads\Center_Z\RoadZ101.par`08-02-2011`16:43:13 #FullDataName Road: Centerline Elevation`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_ZS_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Centerline Elevation; Flat #Library : Road: Centerline Elevation #DataSet : Flat #Category: #FileID : RoadZ101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Centerline elevation: Z vs S EXIT_PARSFILE Roads\Center_Z\RoadZ101.par #BlueLink1 Road: Centerline Elevation`Flat` ` , Centerline elevation ENTER_PARSFILE Roads\dZ_Map\RdElMap101.par`08-02-2011`16:43:11 #FullDataName Road: Off-Center Elevation Map, S-L Grid`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_DZ_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Off-Center Elevation Map, S-L Grid; Flat #Library : Road: Off-Center Elevation Map, S-L Grid #DataSet : Flat #Category: #FileID : RdElMap101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:11 #VehCode dZ via S-L grid EXIT_PARSFILE Roads\dZ_Map\RdElMap101.par #BlueLink2 Road: Off-Center Elevation Map, S-L Grid`Flat` ` , Off-center elevation 1 ENTER_PARSFILE Roads\Friction\RdFric101.par`08-02-2011`16:43:12 #FullDataName Road: Friction Map, S-L Grid`0.85`Constant Mu OPT_ROAD 1 #RingCtrl0 CONSTANT MU_ROAD_CONSTANT 0.85 #RadioCtrl0 0 *SCALAR 0.85 LOG_ENTRY Used Dataset: Road: Friction Map, S-L Grid; { Constant Mu } 0.85 #Library : Road: Friction Map, S-L Grid #DataSet : 0.85 #Category: Constant Mu #FileID : RdFric101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:12 #VehCode Mu via S-L grid EXIT_PARSFILE Roads\Friction\RdFric101.par #BlueLink3 Road: Friction Map, S-L Grid`0.85` Constant Mu` , Friction ENTER_PARSFILE Roads\Shapes\RdShp116.par`08-02-2011`16:43:14 #FullDataName Road: Animator Surface Shapes`Alt 3 FHWA Road`Scenic Road Shapes NLANES 5 OPTTHRESHOLD 1 #MiscYellow0 # 0.878 0.878 0.878, Road (Medium), 0.2, 50, 1, -5, m, 5, m, 5, , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 50, 1, 5, m, 7.1, m, 1, , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 50, 3.1, -7.1, m, -100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Grass (Light), 0.1, 50, 3.1, 7.1, m, 100, m, , , -100, 1200, 5, , , # 0.878 0.878 0.878, Road Transition (Light), 0.1, 50, -1, -5, m, -7.1, m, 1, , -100, 1200, 5, , , #ENDMYellow #CheckBox0 0 MIRROR 0 COLOR(1) 0.878 0.878 0.878 MATERIAL(1) Road (Medium) SPECULAR(1) 0.2 SCALE(1) 50 LTILES(1) 1 LIN(1) -5 LINUNITS(1) m LOUT(1) 5 LOUTUNITS(1) m LDIV(1) 5 SSTART(1) -100 SSTOP(1) 1200 SINT(1) 5 COLOR(2) 0.878 0.878 0.878 MATERIAL(2) Road Transition (Light) SPECULAR(2) 0.1 SCALE(2) 50 LTILES(2) 1 LIN(2) 5 LINUNITS(2) m LOUT(2) 7.1 LOUTUNITS(2) m LDIV(2) 1 SSTART(2) -100 SSTOP(2) 1200 SINT(2) 5 COLOR(3) 0.878 0.878 0.878 MATERIAL(3) Grass (Light) SPECULAR(3) 0.1 SCALE(3) 50 LTILES(3) 3.1 LIN(3) -7.1 LINUNITS(3) m LOUT(3) -100 LOUTUNITS(3) m SSTART(3) -100 SSTOP(3) 1200 SINT(3) 5 COLOR(4) 0.878 0.878 0.878 MATERIAL(4) Grass (Light) SPECULAR(4) 0.1 SCALE(4) 50 LTILES(4) 3.1 LIN(4) 7.1 LINUNITS(4) m LOUT(4) 100 LOUTUNITS(4) m SSTART(4) -100 SSTOP(4) 1200 SINT(4) 5 COLOR(5) 0.878 0.878 0.878 MATERIAL(5) Road Transition (Light) SPECULAR(5) 0.1 SCALE(5) 50 LTILES(5) -1 LIN(5) -5 LINUNITS(5) m LOUT(5) -7.1 LOUTUNITS(5) m LDIV(5) 1 SSTART(5) -100 SSTOP(5) 1200 SINT(5) 5 MTL_FILE Roads\materials\road.mtl LOG_ENTRY Used Dataset: Road: Animator Surface Shapes; { Scenic Road Shapes } Alt 3 FHWA Road #Library : Road: Animator Surface Shapes #DataSet : Alt 3 FHWA Road #Category: Scenic Road Shapes #FileID : RdShp116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:14 #VehCode Road shapes EXIT_PARSFILE Roads\Shapes\RdShp116.par #BlueLink4 Road: Animator Surface Shapes`Alt 3 FHWA Road` Scenic Road Shapes` , Road shape definitions add_reference_frame road_stuff_1 reference_frame_ghosts off ENTER_PARSFILE Roads\AniGroup\RdAniGrp109.par`08-02-2011`16:43:13 #FullDataName Road: Animator Repeated Object`Trees 2`Trees #RingCtrl0 2 #RingCtrl1 0 #DiagramOne0 *POINTS_table 0, -10 30, 10 90, -10 120, 10 150, -10 180, 10 210, -10 240, 10 270, -10 300, 10 330, -10 360, 10 390, -10 420, 10 450, -10 480, 10 510, -10 540, 10 570, -10 600, 10 630, -10 660, 10 690, -10 720, 10 750, -10 780, 10 810, -10 840, 10 870, -10 900, 10 930, -10 960, 10 990, -10 1020, 10 1050, -10 1080, 10 1100, -10 1130, 10 1160, -10 ENDTABLE #RadioCtrl0 0 #BlueLink0 Animator: Shape Assembly`Tree` Scenery` , Animator group LOG_ENTRY Used Dataset: Road: Animator Repeated Object; { Trees } Trees 2 #Library : Road: Animator Repeated Object #DataSet : Trees 2 #Category: Trees #FileID : RdAniGrp109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Road Animator Group EXIT_PARSFILE Roads\AniGroup\RdAniGrp109.par #BlueLink6 Road: Animator Repeated Object`Trees 2` Trees` , Misc. animator set add_reference_frame road_stuff_2 reference_frame_ghosts off ENTER_PARSFILE Animator\Groups\Group101.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Partly Cloudy Sky`Skies ENTER_PARSFILE Animator\Frames\Frame104.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Front Point w/o Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Front Point w/o Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camF SET_Y_NAME Y_camF SET_Z_NAME Z_camF WRT_X_camF ANI_X_camF WRT_Y_camF ANI_Y_camF WRT_Z_camF ANI_Z_camF LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Front Point w/o Yaw #Library : Animator: Reference Frame #DataSet : Camera Front Point w/o Yaw #Category: Road Tracking #FileID : Frame104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame104.par #BlueLink0 Animator: Reference Frame`Camera Front Point w/o Yaw` Road Tracking` , Animator data ENTER_PARSFILE Animator\STL\AniSTL115.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Partly Cloudy Sky`Skies #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\Slightly_Cloudy_Sky\sky_road_course.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0 SMOOTH_MAX_ANGLE 30 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 1 set_fogging off #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Skies } Partly Cloudy Sky #Library : Animator: Shape File Link #DataSet : Partly Cloudy Sky #Category: Skies #FileID : AniSTL115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL115.par #BlueLink1 Animator: Shape File Link`Partly Cloudy Sky` Skies` , Animator data ENTER_PARSFILE Animator\STL\AniSTL116.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Complex Land Bowl for Light Grass`Terrain #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\landbowls\complex_land_for_light_grass.obj #ENDMYellow SET_COLOR .8 .8 .8 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 1 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Terrain } Complex Land Bowl for Light Grass #Library : Animator: Shape File Link #DataSet : Complex Land Bowl for Light Grass #Category: Terrain #FileID : AniSTL116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL116.par #BlueLink2 Animator: Shape File Link`Complex Land Bowl for Light Grass` Terrain` , Animator data #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { Skies } Partly Cloudy Sky #Library : Animator: Group #DataSet : Partly Cloudy Sky #Category: Skies #FileID : Group101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group EXIT_PARSFILE Animator\Groups\Group101.par #BlueLink7 Animator: Group`Partly Cloudy Sky` Skies` , Misc. animator set add_reference_frame road_stuff_3 reference_frame_ghosts off ENTER_PARSFILE Roads\AniGroup\RdAniGrp110.par`08-02-2011`16:43:13 #FullDataName Road: Animator Repeated Object`S-curve (5.5 m)` #RingCtrl0 0 #RingCtrl1 0 #DiagramOne0 *POINTS_table 200, -5.5 800, -5.5 ENDTABLE #RadioCtrl0 0 #BlueLink0 Animator: Shape File Link`S-Curve` Signs` , Animator group LOG_ENTRY Used Dataset: Road: Animator Repeated Object; S-curve (5.5 m) #Library : Road: Animator Repeated Object #DataSet : S-curve (5.5 m) #Category: #FileID : RdAniGrp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Road Animator Group EXIT_PARSFILE Roads\AniGroup\RdAniGrp110.par #BlueLink8 Road: Animator Repeated Object`S-curve (5.5 m)` ` , Misc. animator set add_reference_frame road_stuff_4 reference_frame_ghosts off ENTER_PARSFILE Roads\AniGroup\RdAniGrp111.par`08-02-2011`16:43:13 #FullDataName Road: Animator Repeated Object`Speed Limit 70 (5.5 m)` #RingCtrl0 0 #RingCtrl1 0 #DiagramOne0 *POINTS_table 400, -5.5 1000, -5.5 ENDTABLE #RadioCtrl0 0 #BlueLink0 Animator: Shape File Link`Speed Limit 70` Signs` , Animator group LOG_ENTRY Used Dataset: Road: Animator Repeated Object; Speed Limit 70 (5.5 m) #Library : Road: Animator Repeated Object #DataSet : Speed Limit 70 (5.5 m) #Category: #FileID : RdAniGrp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Road Animator Group EXIT_PARSFILE Roads\AniGroup\RdAniGrp111.par #BlueLink9 Road: Animator Repeated Object`Speed Limit 70 (5.5 m)` ` , Misc. animator set iroad 2 ! obsolete March 2011 idz_road 2 ENTER_PARSFILE Animator\Cameras\Camera105.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 1 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw ENTER_PARSFILE Animator\Frames\Frame105.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Rear Point w/ Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Rear Point w/ Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camR SET_Y_NAME Y_camR SET_Z_NAME Z_camR SET_YAW_NAME Yaw_CamR WRT_X_camR ANI_X_camR WRT_Y_camR ANI_Y_camR WRT_Z_camR ANI_Z_camR WRT_Yaw_CamR ANI_Yaw_CamR LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Rear Point w/ Yaw #Library : Animator: Reference Frame #DataSet : Camera Rear Point w/ Yaw #Category: Road Tracking #FileID : Frame105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame105.par #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 5 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 5 SET_DISTANCE 49 *SET_LOOKPOINT_X 5 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 5 *SET_DISTANCE 49 GHOST_COUNT 0 *LIGHT_X -1000 *LIGHT_Y -1000 *LIGHT_Z 10000 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 30 SUN_POSITION -1000 -1000 10000 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } Rear View , Road Ref. (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View , Road Ref. (Frt. Facing) #Category: Road Reference #FileID : Camera105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera105.par #BlueLink5 Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)` Road Reference` , Camera ENTER_PARSFILE Roads\3D_Road\Road135.ani`09-03-2019`18:38:03 add_reference_frame The Road reference_frame_ghosts off add_obj Roads\3D_Road\Road135_1.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.2 0.2 0.2 add_obj Roads\3D_Road\Road135_2.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road135_3.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road135_4.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road135_5.obj set_color 0.878 0.878 0.878 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 EXIT_PARSFILE Roads\3D_Road\Road135.ani add_reference_frame road_stuff_1_1 reference_frame_ghosts off set_offset_var_yaw -29.4975751915 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x -4.92386725433 set_offset_var_y -8.70376534965 set_offset_var_z 0 ENTER_PARSFILE Animator\STL_Groups\StlGroup103.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Tree`Scenery *ANGLE_Z 180 *ANGLE_Y 0 *ANGLE_X 0 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 #CheckBox5 0 #RingCtrl0 3 #RingCtrl1 1 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL118.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Tree`Trees #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\trees_bushes\tree1.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 0.3 SET_SCALE_Y 0.3 SET_SCALE_Z 0.5 *SPECULAR 0.5 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Trees } Tree #Library : Animator: Shape File Link #DataSet : Tree #Category: Trees #FileID : AniSTL118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL118.par #BlueLink0 Animator: Shape File Link`Tree` Trees` , Shape File #MiscYellow0 translucent_fix on #ENDMYellow set_lighting off set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL119.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Tree, 90`Trees #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\trees_bushes\tree1.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 0.3 SET_SCALE_Y 0.3 SET_SCALE_Z 0.5 SET_ANGLE_Z 90 SET_ANGLE_Y 0 SET_ANGLE_X 0 *SPECULAR 0.5 #RingCtrl0 obj #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Trees } Tree, 90 #Library : Animator: Shape File Link #DataSet : Tree, 90 #Category: Trees #FileID : AniSTL119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL119.par #BlueLink1 Animator: Shape File Link`Tree, 90` Trees` , Shape File translucent_fix on set_lighting off set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL120.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Mulch (Standard)`Trees #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\trees_bushes\mulch.obj #ENDMYellow SET_COLOR 0.502 0.502 0.502 SET_SCALE_X 0.5 SET_SCALE_Y 0.5 SET_SCALE_Z 0.5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z -0.05 *SPECULAR 0 SMOOTH_MAX_ANGLE 40 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Trees } Mulch (Standard) #Library : Animator: Shape File Link #DataSet : Mulch (Standard) #Category: Trees #FileID : AniSTL120 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL120.par #BlueLink2 Animator: Shape File Link`Mulch (Standard)` Trees` , Shape File translucent_fix on set_lighting off set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL121.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Tree Shadow (Standard)`Trees #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\trees_bushes\tree_shadow.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 0.3 SET_SCALE_Y 0.3 SET_SCALE_Z 1 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0.05 *TRANSPARENCY 0.3 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.3 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Trees } Tree Shadow (Standard) #Library : Animator: Shape File Link #DataSet : Tree Shadow (Standard) #Category: Trees #FileID : AniSTL121 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL121.par #BlueLink3 Animator: Shape File Link`Tree Shadow (Standard)` Trees` , Shape File translucent_fix on set_lighting off set_angle_x 0 set_angle_y 0 set_angle_z 180 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Scenery } Tree #Library : Animator: Shape Assembly #DataSet : Tree #Category: Scenery #FileID : StlGroup103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup103.par add_reference_frame road_stuff_2_1 reference_frame_ghosts off set_offset_var_yaw 150.500613751 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 31.0349208697 set_offset_var_y -6.0692649658 set_offset_var_z 0 add_reference_frame road_stuff_3_1 reference_frame_ghosts off set_offset_var_yaw -29.497961224 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 73.4081937736 set_offset_var_y -53.0217998747 set_offset_var_z 0 add_reference_frame road_stuff_4_1 reference_frame_ghosts off set_offset_var_yaw 150.498476304 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 109.366981844 set_offset_var_y -50.3872994471 set_offset_var_z 0 add_reference_frame road_stuff_5_1 reference_frame_ghosts off set_offset_var_yaw -29.5074014665 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 125.628014981 set_offset_var_y -82.5671330269 set_offset_var_z 0 add_reference_frame road_stuff_6_1 reference_frame_ghosts off set_offset_var_yaw 150.503600257 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 161.587989259 set_offset_var_y -79.9323036669 set_offset_var_z 0 add_reference_frame road_stuff_7_1 reference_frame_ghosts off set_offset_var_yaw -29.501143793 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 177.850451092 set_offset_var_y -112.112379706 set_offset_var_z 0 add_reference_frame road_stuff_8_1 reference_frame_ghosts off set_offset_var_yaw 150.500610543 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 213.809425291 set_offset_var_y -109.478550346 set_offset_var_z 0 add_reference_frame road_stuff_9_1 reference_frame_ghosts off set_offset_var_yaw -29.5098319137 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 230.071558273 set_offset_var_y -141.657440412 set_offset_var_z 0 add_reference_frame road_stuff_10_1 reference_frame_ghosts off set_offset_var_yaw 156.760153798 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 265.47945892 set_offset_var_y -137.716242952 set_offset_var_z 0 add_reference_frame road_stuff_11_1 reference_frame_ghosts off set_offset_var_yaw -12.1477034826 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 287.966418147 set_offset_var_y -165.786793332 set_offset_var_z 0 add_reference_frame road_stuff_12_1 reference_frame_ghosts off set_offset_var_yaw 178.942061612 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 320.011736291 set_offset_var_y -149.453468002 set_offset_var_z 0 add_reference_frame road_stuff_13_1 reference_frame_ghosts off set_offset_var_yaw 10.0430782806 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 351.43228303 set_offset_var_y -166.958502448 set_offset_var_z 0 add_reference_frame road_stuff_14_1 reference_frame_ghosts off set_offset_var_yaw 194.997837117 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 376.214191279 set_offset_var_y -140.252567826 set_offset_var_z 0 add_reference_frame road_stuff_15_1 reference_frame_ghosts off set_offset_var_yaw 14.9998974517 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 410.368029396 set_offset_var_y -151.806229631 set_offset_var_z 0 add_reference_frame road_stuff_16_1 reference_frame_ghosts off set_offset_var_yaw 195.00031918 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 434.169490593 set_offset_var_y -124.722487425 set_offset_var_z 0 add_reference_frame road_stuff_17_1 reference_frame_ghosts off set_offset_var_yaw 15.0037823302 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 468.324009943 set_offset_var_y -136.275966613 set_offset_var_z 0 add_reference_frame road_stuff_18_1 reference_frame_ghosts off set_offset_var_yaw 195.052583987 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 492.125162719 set_offset_var_y -109.193571197 set_offset_var_z 0 add_reference_frame road_stuff_19_1 reference_frame_ghosts off set_offset_var_yaw 5.61126022192 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 525.083691628 set_offset_var_y -123.009894153 set_offset_var_z 0 add_reference_frame road_stuff_20_1 reference_frame_ghosts off set_offset_var_yaw 174.15608175 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 555.075922838 set_offset_var_y -103.169404641 set_offset_var_z 0 add_reference_frame road_stuff_21_1 reference_frame_ghosts off set_offset_var_yaw -17.3112596114 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 580.423449027 set_offset_var_y -128.677963631 set_offset_var_z 0 add_reference_frame road_stuff_22_1 reference_frame_ghosts off set_offset_var_yaw 151.235945449 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 615.775184656 set_offset_var_y -122.082337986 set_offset_var_z 0 add_reference_frame road_stuff_23_1 reference_frame_ghosts off set_offset_var_yaw -40.2201854838 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 629.1883514 set_offset_var_y -155.449934504 set_offset_var_z 0 add_reference_frame road_stuff_24_1 reference_frame_ghosts off set_offset_var_yaw 128.34613398 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 664.315692954 set_offset_var_y -163.141753321 set_offset_var_z 0 add_reference_frame road_stuff_25_1 reference_frame_ghosts off set_offset_var_yaw -55.3330520183 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 665.554424194 set_offset_var_y -199.527386275 set_offset_var_z 0 add_reference_frame road_stuff_26_1 reference_frame_ghosts off set_offset_var_yaw 124.666102396 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 699.067550628 set_offset_var_y -212.826267143 set_offset_var_z 0 add_reference_frame road_stuff_27_1 reference_frame_ghosts off set_offset_var_yaw -55.3841095335 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 699.681638019 set_offset_var_y -248.876715674 set_offset_var_z 0 add_reference_frame road_stuff_28_1 reference_frame_ghosts off set_offset_var_yaw 135.803113044 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 733.794212799 set_offset_var_y -259.227416025 set_offset_var_z 0 add_reference_frame road_stuff_29_1 reference_frame_ghosts off set_offset_var_yaw -30.4512038048 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 745.556277667 set_offset_var_y -293.166340772 set_offset_var_z 0 add_reference_frame road_stuff_30_1 reference_frame_ghosts off set_offset_var_yaw 163.312631513 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 780.930822282 set_offset_var_y -286.928573438 set_offset_var_z 0 add_reference_frame road_stuff_31_1 reference_frame_ghosts off set_offset_var_yaw -2.93788090212 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 807.038162824 set_offset_var_y -311.599896155 set_offset_var_z 0 add_reference_frame road_stuff_32_1 reference_frame_ghosts off set_offset_var_yaw 190.814286058 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 835.533405976 set_offset_var_y -289.73046457 set_offset_var_z 0 add_reference_frame road_stuff_33_1 reference_frame_ghosts off set_offset_var_yaw 23.9054324885 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 869.942249998 set_offset_var_y -299.623898168 set_offset_var_z 0 add_reference_frame road_stuff_34_1 reference_frame_ghosts off set_offset_var_yaw 204.002045021 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 889.265674604 set_offset_var_y -269.127621716 set_offset_var_z 0 add_reference_frame road_stuff_35_1 reference_frame_ghosts off set_offset_var_yaw 24.0020450214 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 924.806987782 set_offset_var_y -275.195163027 set_offset_var_z 0 add_reference_frame road_stuff_36_1 reference_frame_ghosts off set_offset_var_yaw 204.002045021 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 944.077530984 set_offset_var_y -244.721466751 set_offset_var_z 0 add_reference_frame road_stuff_37_1 reference_frame_ghosts off set_offset_var_yaw 24.0020450214 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 970.483534766 set_offset_var_y -254.856700557 set_offset_var_z 0 add_reference_frame road_stuff_38_1 reference_frame_ghosts off set_offset_var_yaw 204.002045021 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 989.754077968 set_offset_var_y -224.383004281 set_offset_var_z 0 add_reference_frame road_stuff_39_1 reference_frame_ghosts off set_offset_var_yaw 24.0020450214 set_offset_var_pitch 0 set_offset_var_roll 0 set_offset_var_x 1025.29539115 set_offset_var_y -230.450545592 set_offset_var_z 0 add_reference_frame road_stuff_1_3 reference_frame_ghosts off set_offset_var_x 171.362854596 set_offset_var_y -103.272060525 set_offset_var_z 0 ENTER_PARSFILE Animator\STL\AniSTL252.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`S-Curve`Signs #MiscYellow3 add_obj Animator\3D_shape_files_CS\road_signs\s_curve_car\s_curve_car.obj #ENDMYellow SET_COLOR 1 1 1 SET_ANGLE_Z 180 SET_ANGLE_Y 0 SET_ANGLE_X 0 *SPECULAR 1 SMOOTH_MAX_ANGLE 45 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Signs } S-Curve #Library : Animator: Shape File Link #DataSet : S-Curve #Category: Signs #FileID : AniSTL252 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL252.par add_reference_frame road_stuff_2_3 reference_frame_ghosts off set_offset_var_x 697.694827215 set_offset_var_y -238.092166248 set_offset_var_z 0 add_reference_frame road_stuff_1_4 reference_frame_ghosts off set_offset_var_x 360.775284314 set_offset_var_y -160.396291356 set_offset_var_z 0 ENTER_PARSFILE Animator\STL\AniSTL253.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Speed Limit 70`Signs #MiscYellow3 add_obj Animator\3D_shape_files_CS\road_signs\speed_limit\speed_limit_70.obj #ENDMYellow SET_COLOR 1 1 1 SET_ANGLE_Z 90 SET_ANGLE_Y 0 SET_ANGLE_X 0 *SPECULAR 1 SMOOTH_MAX_ANGLE 45 *IMAGE_FIT_MODE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Signs } Speed Limit 70 #Library : Animator: Shape File Link #DataSet : Speed Limit 70 #Category: Signs #FileID : AniSTL253 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL253.par add_reference_frame road_stuff_2_4 reference_frame_ghosts off set_offset_var_x 877.299979177 set_offset_var_y -291.422736269 set_offset_var_z 0 LOG_ENTRY Used Dataset: Road: 3D Surface (All Properties); { Scenic Roads } Alt 3 from FHWA -LEO Flat #Library : Road: 3D Surface (All Properties) #DataSet : Alt 3 from FHWA -LEO Flat #Category: Scenic Roads #FileID : Road135 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-03-2019 18:38:03 #VehCode 3D road EXIT_PARSFILE Roads\3D_Road\Road135.par #BlueLink0 Road: 3D Surface (All Properties)`Alt 3 from FHWA -LEO Flat` Scenic Roads` , Misc. ENTER_PARSFILE Plot\Setup\Plot109.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Longitudinal Speed`Vehicle Motion ENTER_PARSFILE Plot\Transform\PlotTfm101.par`08-02-2011`16:43:01 #FullDataName Plot: Data Transform`No Filter` #RingCtrl0 None FILTER None LOG_ENTRY Used Dataset: Plot: Data Transform; No Filter #Library : Plot: Data Transform #DataSet : No Filter #Category: #FileID : PlotTfm101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:01 #VehCode Plot data transform EXIT_PARSFILE Plot\Transform\PlotTfm101.par #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) ENTER_PARSFILE Plot\Format\PlotFmt101.par`08-02-2011`16:43:00 #FullDataName Plot: Format`Default Plot Settings` #RingCtrl0 Axes AXES Axes #RingCtrl1 Noframe FRAME Noframe #RingCtrl2 NoGrid GRID NoGrid #RingCtrl3 FileTitle LEGENDFILE FileTitle #RingCtrl4 RigidBodyName LEGENDDATA_1 RigidBodyName #RingCtrl5 AutoLocation LEGENDLOCATION AutoLocation #RingCtrl6 Regular TITLEFONTSTYLE Regular #RingCtrl7 Regular LEGENDFONTSTYLE Regular #RingCtrl8 Regular LABELFONTSTYLE Regular #RingCtrl9 Regular TICLABELFONTSTYLE Regular #RingCtrl10 0 TITLELOCATION 0 LEGENDPERCENT 40 TITLEFONTSIZE 14 LEGENDFONTSIZE 12 LABELFONTSIZE 14 TICLABELFONTSIZE 12 TITLEFONTNAME Arial LEGENDFONTNAME Arial LABELFONTNAME Arial TICLABELFONTNAME Arial SYMBOLS 10,1,2,3,4,5,6,7,8,9,10,4,1,2,3,4,5,6,7,8 LINESTYL 1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1 COLORS 8,2,3,7,4,0,6,14,8,9,10,11,12,13,14,6,1,2,0,4 LOG_ENTRY Used Dataset: Plot: Format; Default Plot Settings #Library : Plot: Format #DataSet : Default Plot Settings #Category: #FileID : PlotFmt101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot format EXIT_PARSFILE Plot\Format\PlotFmt101.par #MiscYellow0 PLOTCHANNELS Vx, Time PLOTCHANNELS VxTarget, Time PLOTCHANNELS Vx_2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Longitudinal Speed LOG_ENTRY Used Dataset: Plot: Setup; { Vehicle Motion } Longitudinal Speed #Library : Plot: Setup #DataSet : Longitudinal Speed #Category: Vehicle Motion #FileID : Plot109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot109.par #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot ENTER_PARSFILE Plot\Setup\Plot118.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Throttle: Control Input`Controls: Driver #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Throttle, Time PLOTCHANNELS Thr_Eng, Time #ENDMYellow YAXISLABEL Throttle - #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Throttle: Control Input LOG_ENTRY Used Dataset: Plot: Setup; { Controls: Driver } Throttle: Control Input #Library : Plot: Setup #DataSet : Throttle: Control Input #Category: Controls: Driver #FileID : Plot118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup ENTRY_NOTEFILE Plot\Setup\Plot118_note.txt The variable "Throttle" is the sum of any throttle control calculated by the CarSim closed loop speed controller and any specified open-loop throttle. The source of open-loop throttle command may be from internal tables, VS commmands, or external sources like Simulink or the API. By using the sum of these 2 command sources you can implement things like driver aids for active safety that augment actions taken by the driver. When switching between open loop and closed loop control, take care that no unintended open loop control is "left over" by supplying a data set that sets the open loop component to zero. The variable "Thr_Eng" is the value of "Throttle", optionally modified by the application of a time constant to simulate the transient delay in changes in engine torque. EXIT_NOTEFILE Plot\Setup\Plot118_note.txt EXIT_PARSFILE Plot\Setup\Plot118.par #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot ENTER_PARSFILE Plot\Setup\Plot203.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Wheel Cylinder Pressures`Braking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS PbkCh_L1, Time PLOTCHANNELS PbkCh_R1, Time PLOTCHANNELS PbkCh_L2, Time PLOTCHANNELS PbkCh_R2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Wheel Cylinder Pressures LOG_ENTRY Used Dataset: Plot: Setup; { Braking } Wheel Cylinder Pressures #Library : Plot: Setup #DataSet : Wheel Cylinder Pressures #Category: Braking #FileID : Plot203 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot203.par #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot ENTER_PARSFILE Plot\Setup\Plot141.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Y vs. X -- Trajectory`Tracking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Yo, Xo PLOTCHANNELS Y_Design, X_Design PLOTCHANNELS Y_Target, X_Target PLOTCHANNELS Yo_2, Xo_2 #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Y vs. X -- Trajectory LOG_ENTRY Used Dataset: Plot: Setup; { Tracking } Y vs. X -- Trajectory #Library : Plot: Setup #DataSet : Y vs. X -- Trajectory #Category: Tracking #FileID : Plot141 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot141.par #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } chapt4_MPC_SSM_PathTracking #Library : Procedures #DataSet : chapt4_MPC_SSM_PathTracking #Category: BOOK_MPC_Procedures #FileID : Proc174 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-03-2019 18:42:12 #VehCode Procedure EXIT_PARSFILE Procedures\Proc174.par #BlueLink28 Procedures`chapt4_MPC_SSM_PathTracking` BOOK_MPC_Procedures` , Procedure *IMAGE_LINK Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter4_MPC_SSM_PathTracking CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter4_MPC_SSM_PathTracking LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter4_MPC_SSM_PathTracking #Library : CarSim Run Control #DataSet : Chapter4_MPC_SSM_PathTracking #Category: BOOK_MPC_Examples #FileID : Run290 #Product : CarSim Version 8.1a, October 2011 #Last update: 09-01-2019 23:30:22 #VehCode Run EXIT_PARSFILE Runs\Run290.par END ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/MPC_SSM_CurvePathTracking.mdl ================================================ Model { Name "MPC_SSM_CurvePathTracking" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.220" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "CurvePathTracking" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [747.0, 133.0, 1036.0, 764.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [986.0, 587.0] ZoomFactor [1.5] Offset [21.180952380951624, 169.33333333333343] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Sun Sep 01 23:43:46 2019" RTWModifiedTimeStamp 489282213 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "MPC_SSM_CurvePathTracking" Array { Type "Cell" Dimension 1 Cell "MPC_SSM_CurvePathTracking" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "400" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "MPC_SSM_CurvePathTracking" Location [747, 133, 1783, 897] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "150" ReportName "simulink-default.rpt" SIDHighWatermark "140" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [1, 1] Position [330, 179, 430, 241] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "LEO_MPC_EM_PathTrackingCtrl.sim" } Block { BlockType Demux Name "Demux" SID "135" Ports [1, 2] Position [170, 361, 180, 439] ZOrder 30 BlockMirror on ShowName off Outputs "[1 7]" DisplayOption "bar" } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [245, 366, 515, 434] ZOrder 12 BlockMirror on FunctionName "Main_CurvePathTracking_CVXGEN_CurveLane" EnableBusSupport off } Block { BlockType Terminator Name "Terminator" SID "136" Position [95, 405, 130, 435] ZOrder 31 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace1" SID "115" Ports [1] Position [230, 295, 290, 325] ZOrder 19 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 116 SrcBlock "CarSim S-Function" SrcPort 1 Points [117, 0; 0, 190] DstBlock "S-Function" DstPort 1 } Line { ZOrder 130 SrcBlock "S-Function" SrcPort 1 Points [-31, 0] Branch { ZOrder 177 DstBlock "Demux" DstPort 1 } Branch { ZOrder 176 Points [0, -90] DstBlock "To Workspace1" DstPort 1 } } Line { ZOrder 178 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Line { ZOrder 188 SrcBlock "Demux" SrcPort 1 Points [-17, 0; 0, -170] DstBlock "CarSim S-Function" DstPort 1 } } } ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/Main_CurvePathTracking_CVXGEN_CurveLane.m ================================================ function [sys,x0,str,ts] =Main_CurvePathTracking_CVXGEN_CurveLane(t,x,u,flag) %***************************************************************% % This is a Simulink/Carsim joint simulation solution for safe driving % envelope control of high speed autonomous vehicle % Linearized spatial bicycle vehicle dynamic model is applied. % No successive linearizarion. No two time scale of prediction horizon % Constant high speed, curve path tracking % state vector =[beta,yawrate,e_phi,s,e_y] % control input = [steer_SW] % many other parameters are also outputed for comparision. % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 3; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 8; %S sizes.NumInputs = 7; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; VehiclePara.m = 1540; %mΪ,Kg; Sprung mass = 1370 VehiclePara.g = 9.8; VehiclePara.Lf = 1.11; %a VehiclePara.Lr = 1.67; %bǰ־복ĵľ룬в VehiclePara.L = 2.78; %VehiclePara.Lf + VehiclePara.Lr; VehiclePara.Lc = 1.59; %c,or 1.57. ע᳤lcδȷ VehiclePara.I = 2315.3; %IΪZתв VehiclePara.mu = 1.0; % 0.55; %Ħ VehiclePara.Radius = 0.261; % ̥뾶 global MPCParameters; MPCParameters.Np = 40;% predictive horizon Assume Np=Nc MPCParameters.Ts = 0.05; %Set the sample time of near term MPCParameters.Nx = 3; %the number of state variables MPCParameters.Ny = 3; %the number of output variables MPCParameters.Nu = 2; %the number of control inputs global CostWeights; CostWeights.Q = [ 10 0 0; 0 10 0; 0 0 10]; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.R = 10000; % on Du global Constraints; Constraints.dumax = 0.08; % Units: rad Constraints.umax = 0.4; % Units: rad appro.23deg global WayPoints_IndexPre; WayPoints_IndexPre = 1; global Reftraj; Reftraj = load('WayPoints_Alt3fromFHWA_Overall.mat'); % Local_reftraj = load('WayPoints_Alt3fromFHWA_Portion.mat'); % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; Ctrl_SteerSW = 0; t_Elapsed = 0; PosX = 0; PosY = 0; PosPsi = 0; Vel = 0; e_psi = 0; e_y = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control %***********Step (2). State estimation and Location **********************% %-----Update State Estimation of measured Vehicle Configuration--------% [VehStateMeasured] = func_StateEstimation(u); %uSģ Vel = VehStateMeasured.Vx; PosX = VehStateMeasured.Xc; PosY = VehStateMeasured.Yc; PosPsi = VehStateMeasured.psi; Ax = VehStateMeasured.Ax; fwa = VehStateMeasured.fwa; %********Step(3): Given reference trajectory, update vehicle state and bounds *******************% % Local vehicle coordinates, y=K[3]x^3 + K[2]x^2 + K[1]x +K[0]. [PrjP, RefP, RefU, WPIndex] = func_RefTraj_LocalPlanning( MPCParameters, WayPoints_IndexPre, Reftraj.WayPoints_Collect, VehStateMeasured ); % reference path is a straight line if ( WPIndex <= 0) % else WayPoints_IndexPre = WPIndex; end %****Step(4): MPC formulation;********************% %----Update An, Al, B, dn,dl of the StateSpaceModel [StateSpaceModel] = func_StateSpaceModel_StraightLane(VehiclePara, MPCParameters, PrjP ); Xm = [PosX; PosY; PosPsi]; %================CVXGEN solver==================================% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations params.xm = Xm; params.um = fwa; % measured front whee angle params.Pxr = [PrjP.xr; PrjP.yr; PrjP.psir]; params.Pur = PrjP.fwar; params.An = StateSpaceModel.An; params.Bn = StateSpaceModel.Bn; params.Q = CostWeights.Q; params.R = CostWeights.R; params.umax = Constraints.umax; params.dumax = Constraints.dumax; params.RefP = RefP; params.RefU = RefU; t_Start = tic; % ʼʱ [vars, status] = csolve_StraightLane(params, settings); if (1 == status.converged) %if optimization succeeded. fwa_opt = vars.u_0; % ah_des = vars.u_0(2); else fwa_opt = 0; fprintf('CVXGEN converged = 0 \n'); end %====================================================================% Ctrl_SteerSW0 = 19 * fwa_opt*180/pi; % in deg. % [Throttle, Brake] = func_AccelerationTrackingController(ah_opt); t_Elapsed = toc( t_Start ); %computation time %---4.Publish command********************% Ctrl_SteerSW = round(10*Ctrl_SteerSW0)/10; e_y = PrjP.ey; e_psi = PrjP.epsi; end % end of if Initialflag < 2 % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Vel; e_psi; e_y]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% VehStatemeasured.Vx = ModelInput(1)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.Xc = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.Yc = round(100*ModelInput(3))/100;%λΪm, 2λС VehStatemeasured.psi = (round(100*ModelInput(4))/100)*pi/180; %ǣUnitdeg-->rad2λС VehStatemeasured.Ax = 9.8*ModelInput(5);%λΪm/s^2, 2λС VehStatemeasured.fwa = (round(10*0.5*(ModelInput(6)+ ModelInput(7)))/10)*pi/180; % deg-->rad % end % end of func_StateEstimation %***************************************************************% % Augmented vehicle state space model %***************************************************************% function [StateSpaceModel] = func_StateSpaceModel_StraightLane(VehiclePara, MPCParameters, PrjP) % generate State-space model L = VehiclePara.L; %a = 1.11; Ts = MPCParameters.Ts; Nx = MPCParameters.Nx; Velr = PrjP.Velr; xr = PrjP.xr; yr = PrjP.yr; psir = PrjP.psir; fwar = PrjP.fwar; Acn = [0, 0, -Velr*sin(psir); 0, 0, Velr*cos(psir); 0, 0, 0]; Bcn = [0, 0, Velr/(L*cos(fwar)*cos(fwar))]';% % SSM discretization for the near term Adn = eye(Nx) + Ts*Acn; Bdn = Ts*Bcn; StateSpaceModel.An = Adn; StateSpaceModel.Bn = Bdn; % end % end of func_SpatialDynamicalModel ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/ReadMe ================================================ MPC for path tracking use SSM ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/func_CalPathCurve.m ================================================ function K=func_CalPathCurve(XA,YA,XB,YB,XC,YC) %% %б if XB==XA mr=inf; else mr=(YB-YA)/(XB-XA); end if XC==XB mt=inf; else mt=(YC-YB)/(XC-XB); end %% Ĵ߼ԣ׳ %ݲͬб,mtdao=1/mt;mrsubmt=1/(2*(mr-mt)); if mr==mt Rff=inf; else if mt==0 if mr==inf Rff=sqrt(power((XA-XC),2)+power((YA-YC),2))/2; else mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YA)/2-(Xff-(XB+XA)/2)/mr; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end elseif mt==inf if mr==0 Rff=sqrt(power((XA-XC),2)+power((YA-YC),2))/2; else Yff=(YB+YC)/2; Xff=(XA+XB)/2-mr*(YC-YA)/2; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end else mtdao=1/mt; if mr==0 mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YC)/2-mtdao*(Xff-(XB+XC)/2); Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); elseif mr==inf Yff=(YA+YB)/2; Xff=(XB+XC)/2+mt*(YA-YC)/2; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); else mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YC)/2-mtdao*(Xff-(XB+XC)/2); Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end end end %% %ͨжϺǵı仯жʵ K1=GetPathHeading(XA,YA,XB,YB); K2=GetPathHeading(XB,YB,XC,YC); if K2>K1 %нDZʱ Rff=Rff; else %нDZС˳ʱ룬K2Yb K=pi/2; else K=3*pi/2; end else if Yb==Yn if Xn>Xb K=0; else K=pi; end else K=atan(AngleY/AngleX); end end %****K,ʹ֮0~360֮*****% if (AngleY>0&&AngleX>0)%һ K=K; elseif (AngleY>0&&AngleX<0)||(AngleY<0&&AngleX<0)%ڶ K=K+pi; else if (AngleY<0&&AngleX>0)% K=K+2*pi; else K=K; end end end % end of function ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/func_FindBezierControlPointsND.m ================================================ % INPUT % Data: A set of "n" points (p1,p2,...pn). % Each point can be in N-dimension vector space % % (i.e. points to be approximated by Cubic Bezier Curve % e.g. p for 3D p=[0 5 0; % p1 % 1 5 0.5; % p2 % 1.3 4.5 1; % p3 % 2 5 2] % p4 % ptype(optional arg): parameterization type, defualt is chord-length % parameterization. user can pass 'u' or 'uniform', for uniform parameterization. % OUTPUT % Four Control Points: P0, P1, P2, P3, each in N-dimension space % parameterized values i.e. t (optional) % OBJECTIVE % We want to find control points of Bezier Curve that fit the data % p. % SOLUTION % Least Square Method using specified Parameterization (Chord-length % defualt) % (P0 & P3) are end points of a bezier curve segment. So they % are taken equal to first and last point of data. % (P1 & P2) are obtained by partially differeciating the Sum of Square % distance between original data and parametric curve w.r.t P1 & P2 and then % solving for two unknowns P1 & P2. function [P0, P1, P2, P3, tout]= func_FindBezierControlPointsND(p,varargin) %%% Default Values %%% ptype=''; defaultValues = {ptype}; %%% Assign Valus %%% nonemptyIdx = ~cellfun('isempty',varargin); defaultValues(nonemptyIdx) = varargin(nonemptyIdx); [ptype] = deal(defaultValues{:}); %%%------------------------------ n=size(p,1); % number of rows in p if (strcmpi(ptype,'u') || strcmpi(ptype,'uniform') ) [t]=linspace(0,1,n); % uniform parameterized values (normalized b/w 0 to 1) else [t]=ChordLengthNormND(p); % chord-length parameterized values (normalized b/w 0 to 1) end P0=p(1,:); % (at t=0 => P0=p1) P3=p(n,:); % (at t=1 => P3=pn) if (n==1) % if only one value in p P1=P0; % P1=P0 P2=P0; % P2=P0 elseif (n==2) % if only two values in p P1=P0; % P1=P0 P2=P3; % P2=P3 elseif (n==3) % if only three values in p P1=p(2,:); % middle point is P1 P2=p(2,:); % middle point is P2 else A1=0; A2=0; A12=0; C1=0; C2=0; %initialization for i=2:n-1 % for i=1:n %it will give same CPs as i=2:n-1 B0 = (1-t(i))^3 ; % Bezeir Basis B1 = ( 3*t(i)*(1-t(i))^2 ) ; B2 = ( 3*t(i)^2*(1-t(i)) ) ; B3 = t(i)^3 ; A1 = A1 + B1^2; A2 = A2 + B2^2; A12 = A12 + B1*B2; C1 = C1 + B1*( p(i,:) - B0*P0 - B3*P3 ); C2 = C2 + B2*( p(i,:) - B0*P0 - B3*P3 ); end DENOM=(A1*A2-A12*A12); % common denominator for all points if(DENOM==0) P1=P0; P2=P3; else P1=(A2*C1-A12*C2)/DENOM; P2=(A1*C2-A12*C1)/DENOM; end end % END of if-elseif-else conditon if(nargout==5) % if number of output argument=1 tout=t; end % % % -------------------------------- % % % Author: Dr. Murtaza Khan % % % Email : drkhanmurtaza@gmail.com % % % -------------------------------- ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/func_GetProjectPoint.m ================================================ function [PPx,PPy,de]=func_GetProjectPoint(Xb,Yb,Xn,Yn,Xc,Yc) if Xn==Xb x=Xn; y=Yc; de=Xc-Xn; else if Yb==Yn x=Xc; y=Yn; de=Yn-Yc; else DifX=Xn-Xb; DifY=Yn-Yb; Kindex=DifY/DifX; bindex=Yn-Kindex*Xn; K=(-1)*1/Kindex; b=Yc-K*Xc; x=(bindex-b)/(K-Kindex); y=K*x+b; de=(Kindex*Xc+bindex-Yc)/sqrt(1+Kindex*Kindex); end end PPx=x; PPy=y; end ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/func_RefTraj_LocalPlanning.m ================================================ function [PrjP, RefP, RefU, WPIndex ] = func_RefTraj_LocalPlanning( MPCParameters, WayPoints_Index, WayPoints_Collect, VehStateMeasured) %***************************************************************% % % Input: % MPCParameters % WayPoints_Index % WayPoints_Collect % VehStateMeasured % % Output: % WPIndex % > 0Normal, WPIndex = index_min; % 0:error,index_min<1 % -1: index_min = WPNum,ȫ·ľͷͣ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% %*********** Parameters Initialization *************************% L = 2.78; Np = MPCParameters.Np; Ts = MPCParameters.Ts; %------Measured or Estimated vehicle status Vel = VehStateMeasured.Vx; % 20; % PosX = VehStateMeasured.Xc; PosY = VehStateMeasured.Yc; PosPsi = VehStateMeasured.psi; Ax = VehStateMeasured.Ax; fwa = VehStateMeasured.fwa; RefP = cell(Np,1); RefU = cell(Np,1); %*********** WaypointData2VehicleCoords ************************% WPNum = length(WayPoints_Collect(:,1)); %--------ҵο·Ͼ복ĵ--------------------------% Dist_MIN = 1000; index_min = 0; for i=WayPoints_Index:1:WPNum deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; Dist = sqrt(power(deltax,2) + power(deltay,2)); %·㵽ĵľ if Dist < Dist_MIN Dist_MIN = Dist; index_min = i; end end if (index_min < 1) WPIndex = -1; %ûҵ򡣡 else if ( index_min >= WPNum) WPIndex = -2; %ûҵ򡣡 else WPIndex = index_min; end end if( WPIndex > 0 ) % ҵ %--------------ͨͶӰ--------------------------% [PPx,PPy,ey]=func_GetProjectPoint(WayPoints_Collect(index_min,2),... WayPoints_Collect(index_min,3),... WayPoints_Collect(index_min+1,2),... WayPoints_Collect(index_min+1,3),... PosX,... PosY); Psi0 = atan2(WayPoints_Collect(index_min+1,3) - PPy, WayPoints_Collect(index_min+1,2) - PPx); epsi = Psi0 - PosPsi; PrjP.ey = ey; PrjP.epsi = epsi; PrjP.xr = PPx; PrjP.yr = PPy; PrjP.psir = Psi0; PrjP.Velr = Vel; PrjP.fwar = 0; %atan(Kprj*L); %------------ݳȫֲο·ѡο--------------------% StepLength = Vel * Ts * (Np+1);% һΪʱ׼ count = 1; % ͶӰΪߵ deltax = PPx - PosX; deltay = PPy - PosY; Local_x(count) = deltax * cos(PosPsi) + deltay * sin(PosPsi); Local_y(count) = deltay * cos(PosPsi) - deltax * sin(PosPsi); Dist_Sum = 0; % count = count + 1; % ͶӰ֮ĵһתֲ deltax = WayPoints_Collect(index_min+1,2) - PosX; deltay = WayPoints_Collect(index_min+1,3) - PosY; Local_x(count) = deltax * cos(PosPsi) + deltay * sin(PosPsi); Local_y(count) = deltay * cos(PosPsi) - deltax * sin(PosPsi); tempDx = WayPoints_Collect(index_min+1,2) - PPx; tempDy = WayPoints_Collect(index_min+1,3) - PPy; DistBtn = sqrt(power(tempDx,2) + power(tempDy,2)); %·㵽ͶӰľ Dist_Sum = Dist_Sum + DistBtn; for i=index_min+2:1:WPNum %ڲο·ѡο,ͨתתϵ count = count + 1; deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; Local_x(count) = deltax * cos(PosPsi) + deltay * sin(PosPsi); Local_y(count) = deltay * cos(PosPsi) - deltax * sin(PosPsi); % תֲ tempDx = WayPoints_Collect(i,2) - WayPoints_Collect(i-1,2); tempDy = WayPoints_Collect(i,3) - WayPoints_Collect(i-1,3); DistBtn = sqrt(power(tempDx,2) + power(tempDy,2)); %·㵽ǰһ·ľ Dist_Sum = Dist_Sum + DistBtn; if(Dist_Sum > StepLength) break; end end % end of for j=index_min+1:1:WPNum %------------ʽ------------% if(Dist_Sum < StepLength) WPIndex = 0; %ûҵ򡣡 % reaching the end ... %--ûпȫ·󼸸ʱ걸пܻᱨ else %ȫ·ҵ˺ʵIJο㣬ʽ %----BezierϣŵڿԶ-----% Mat(:,1)=Local_x'; Mat(:,2)=Local_y'; [p0,p1,p2,p3,t] = func_FindBezierControlPointsND(Mat,'u'); %uniform parameterization tloc = linspace(0,1,Np+2); %㵽յȾ,Np+1ΣNp+2 MatLocalInterp = func_bezierInterp( p0, p1, p2, p3,tloc); % ֵ߲õ Bezier_x = zeros(Np,1); Bezier_y = zeros(Np,1); Bezier_psi = zeros(Np,1); Bezier_K = zeros(Np,1); for i = 2:1:length(MatLocalInterp(:,1))-1 Bezier_x(i-1) = MatLocalInterp(i,1); Bezier_y(i-1) = MatLocalInterp(i,2); tempDx = MatLocalInterp(i+1,1) - MatLocalInterp(i,1); tempDy = MatLocalInterp(i+1,2) - MatLocalInterp(i,2); Bezier_psi(i-1) = atan2(tempDy, tempDx); Bezier_K(i-1) = func_CalPathCurve(MatLocalInterp(i-1,1),... % XA MatLocalInterp(i-1,2),... % YA MatLocalInterp(i,1),... % XB MatLocalInterp(i,2),... % YB MatLocalInterp(i+1,1),... % XC MatLocalInterp(i+1,2)); % YC end % end of for i = 2:1:length(MatLocalInterp(:,1))-1 end % end of if(Dist_Sum < StepLength) for i = 1:1:Np RefP{i,1} = [Bezier_x(i); Bezier_y(i); Bezier_psi(i)]; end for i = 1:1:Np RefU{i,1} = atan(Bezier_K(i)*L); end end % end of if (index_min < 1) || ( index_min > WPNum) end % end of function %==============================================================% % sub functions %==============================================================% %--------Plot local points and the fitted polynomial----------------% % Fitted_y = K(1)*Local_x.*Local_x.*Local_x + K(2)*Local_x.*Local_x + K(3)*Local_x + K(4); % % y = K(4)*x.*x.*x+K(3)*x.*x+K(2)*x+K(1); % figure(1) % plot(Local_x,Local_y,'b') % hold on % plot(Local_x,Fitted_y,'r'); ================================================ FILE: Chapter-4/chap4_MPC_SSM_PathTracking/func_bezierInterp.m ================================================ % Bezier interpolation for given four control points. % Each control point can be in N-Dimensional vector space. % Input: % P0,P1,P2,P3: four control points of bezier curve, % control points can have any number of coordinates % t(optional arg):vector that holds paramter t values b/w 0 and 1 at which % bezier curve is evaluated (default 101 values between 0 % and 1.) % Output: % Q evaluated values of bezier curves. Number of columns of Q are equal to % number of coordinates in control point. For example for 2-D, Q has two % columns. Column 1 for x value and column 2 for y values. Similarly for % 3-D, Q will have three columns function Q=func_bezierInterp(P0,P1,P2,P3,varargin) %%% Default Values %%% t=linspace(0,1,101); % uniform parameterization defaultValues = {t}; %%% Assign Valus %%% nonemptyIdx = ~cellfun('isempty',varargin); defaultValues(nonemptyIdx) = varargin(nonemptyIdx); [t] = deal(defaultValues{:}); % % -------------------------------- M=[-1 3 -3 1; 3 -6 3 0; -3 3 0 0; 1 0 0 0]; for k=1:length(t) Q(k,:)=[t(k)^3 t(k)^2 t(k) 1]*M*[P0;P1;P2;P3]; end % % Ref: Mathematical Elements of Computer Graphics by % % David F. Rogers and J. Alan Adams (pg. 296) % % -------------------------------- % % OR % % Equation of Bezier Curve, utilizes Horner's rule for efficient computation. % % Q(t)=(-P0 + 3*(P1-P2) + P3)*t^3 + 3*(P0-2*P1+P2)*t^2 + 3*(P1-P0)*t + Px0 % c3 = -P0 + 3*(P1-P2) + P3; % c2 = 3*(P0 - (2*P1)+P2); % c1 = 3*(P1 - P0); % c0 = P0; % for k=1:length(t) % Q(k,:)=((c3*t(k)+c2)*t(k)+c1)*t(k) + c0; % end % % % -------------------------------- % % % Author: Dr. Murtaza Khan % % % Email : drkhanmurtaza@gmail.com % % % -------------------------------- ================================================ FILE: Chapter-4/chapter4_4_2.m ================================================ function [sys,x0,str,ts] = MY_MPCController3(t,x,u,flag) % úдĵ3S(MATLAB汾R2011a) % ޶ڳ˶ѧģͣΪٶȺǰƫǣʹõQPΪ°汾QPⷨ % [sys,x0,str,ts] = MY_MPCController3(t,x,u,flag) % % is an S-function implementing the MPC controller intended for use % with Simulink. The argument md, which is the only user supplied % argument, contains the data structures needed by the controller. The % input to the S-function block is a vector signal consisting of the % measured outputs and the reference values for the controlled % outputs. The output of the S-function block is a vector signal % consisting of the control variables and the estimated state vector, % potentially including estimated disturbance states. switch flag, case 0 [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 sys = mdlUpdates(t,x,u); % Update discrete states case 3 sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise error(['unhandled flag = ',num2str(flag)]); % Error handling end % End of dsfunc. %============================================================== % Initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 3; % this parameter doesn't matter sizes.NumOutputs = 2; %[speed, steering] sizes.NumInputs = 5; sizes.DirFeedthrough = 1; % Matrix D is non-empty. sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 =[0;0;0]; global U; % store current ctrl vector:[vel_m, delta_m] U=[0;0]; % Initialize the discrete states. str = []; % Set str to an empty matrix. ts = [0.05 0]; % sample time: [period, offset] %End of mdlInitializeSizes %============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u) sys = x; %End of mdlUpdate. %============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u) global a b u_piao; global U; %store chi_tilde=[vel-vel_ref; delta - delta_ref] global kesi; tic Nx=3;%״̬ĸ Nu =2;%ĸ Np =60;%Ԥⲽ Nc=30;%Ʋ Row=10;%ɳ fprintf('Update start, t=%6.3f\n',t) yaw_angle =u(3)*3.1415926/180;%CarSimYaw angleΪǶȣǶתΪ % %ֱ· r(1)=5*t; %ref_x-axis r(2)=5;%ref_y-axis r(3)=0;%ref_heading_angle vd1=5;% ref_velocity vd2=0;% ref_steering %뾶Ϊ25mԲι켣, ԲΪ(0, 35), ٶΪ5m/s % r(1)=25*sin(0.2*t); % r(2)=35-25*cos(0.2*t); % r(3)=0.2*t; % vd1=5; % vd2=0.104; % %뾶Ϊ35mԲι켣, ԲΪ(0, 35), ٶΪ3m/s % r(1)=25*sin(0.12*t); % r(2)=25+10-25*cos(0.12*t); % r(3)=0.12*t; % vd1=3; % vd2=0.104; %뾶Ϊ25mԲι켣, ԲΪ(0, 35), ٶΪ10m/s % r(1)=25*sin(0.4*t); % r(2)=25+10-25*cos(0.4*t); % r(3)=0.4*t; % vd1=10; % vd2=0.104; % %뾶Ϊ25mԲι켣, ԲΪ(0, 35), ٶΪ4m/s % r(1)=25*sin(0.16*t); % r(2)=25+10-25*cos(0.16*t); % r(3)=0.16*t; % vd1=4; % vd2=0.104; t_d = r(3); kesi=zeros(Nx+Nu,1); kesi(1) = u(1)-r(1);%u(1)==X(1),x_offset kesi(2) = u(2)-r(2);%u(2)==X(2),y_offset heading_offset = yaw_angle - r(3); %u(3)==X(3),heading_angle_offset if (heading_offset < -pi) heading_offset = heading_offset + 2*pi; end if (heading_offset > pi) heading_offset = heading_offset - 2*pi; end kesi(3)=heading_offset; U(1) = u(4)/3.6 - vd1; % vel, km/h-->m/s steer_SW = u(5)*pi/180; steering_angle = steer_SW/18.0; U(2) = steering_angle - vd2; kesi(4)=U(1); % vel-vel_ref kesi(5)=U(2); % steer_angle - steering_ref fprintf('vel-offset=%4.2f, steering-offset, U(2)=%4.2f\n',U(1), U(2)) T=0.05; T_all=40;%ʱ趨ܵķʱ䣬ҪǷֹ켣Խ % Mobile Robot Parameters L = 2.6; % wheelbase of carsim vehicle % Mobile Robot variable %ʼ u_piao=zeros(Nx+Nu, 1); Q=10 * eye(Nx*Np,Nx*Np); R=0.1*eye(Nu*Nc); a=[1 0 -vd1*sin(t_d)*T; 0 1 vd1*cos(t_d)*T; 0 0 1;]; b=[cos(t_d)*T 0; sin(t_d)*T 0; tan(vd2)*T/L vd1*T/(cos(vd2)^2)]; A_cell=cell(2,2); B_cell=cell(2,1); A_cell{1,1}=a; A_cell{1,2}=b; A_cell{2,1}=zeros(Nu,Nx); A_cell{2,2}=eye(Nu); B_cell{1,1}=b; B_cell{2,1}=eye(Nu); A=cell2mat(A_cell); B=cell2mat(B_cell); C=[ 1 0 0 0 0; 0 1 0 0 0; 0 0 1 0 0]; PHI_cell=cell(Np,1); THETA_cell=cell(Np,Nc); for j=1:1:Np PHI_cell{j,1}=C*A^j; for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; else THETA_cell{j,k}=zeros(Nx,Nu); end end end PHI=cell2mat(PHI_cell);%size(PHI)=[Nx*Np Nx+Nu] THETA=cell2mat(THETA_cell);%size(THETA)=[Nx*Np Nu*(Nc+1)] H_cell=cell(2,2); H_cell{1,1}=THETA'*Q*THETA+R; H_cell{1,2}=zeros(Nu*Nc,1); H_cell{2,1}=zeros(1,Nu*Nc); H_cell{2,2}=Row; H=cell2mat(H_cell); H=(H+H')/2; error=PHI*kesi; f_cell=cell(1,2); f_cell{1,1} = (error'*Q*THETA); f_cell{1,2} = 0; f=cell2mat(f_cell); %% ΪԼ %ʽԼ A_t=zeros(Nc,Nc);%falcone P181 for p=1:1:Nc for q=1:1:Nc if q<=p A_t(p,q)=1; else A_t(p,q)=0; end end end A_I=kron(A_t,eye(Nu));%ӦfalconeԼľA,ڿ˻ Ut=kron(ones(Nc,1), U);% umin=[-10.5; -0.436];%[min_vel, min_steer]άƱĸͬ umax=[10.0; 0.436]; %[max_vel, max_steer],%0.436rad = 25deg delta_umin = [-0.5; -0.082]; % 0.0082rad = 0.47deg delta_umax = [0.5; 0.082]; Umin=kron(ones(Nc,1),umin); Umax=kron(ones(Nc,1),umax); A_cons_cell={A_I zeros(Nu*Nc, 1); -A_I zeros(Nu*Nc, 1)}; b_cons_cell={Umax-Ut;-Umin+Ut}; A_cons=cell2mat(A_cons_cell);%̣ⷽ״̬ʽԼתΪֵȡֵΧ b_cons=cell2mat(b_cons_cell);%̣ⷽ״̬ʽԼȡֵ % ״̬Լ delta_Umin = kron(ones(Nc,1),delta_umin); delta_Umax = kron(ones(Nc,1),delta_umax); lb = [delta_Umin; 0];%̣ⷽ״̬½ ub = [delta_Umax; 10];%̣ⷽ״̬Ͻ %% ʼ % options = optimset('Algorithm','active-set'); options = optimset('Algorithm','interior-point-convex'); warning off all % close the warnings during computation [X, fval,exitflag]=quadprog(H, f, A_cons, b_cons,[], [],lb,ub,[],options); fprintf('quadprog EXITFLAG = %d\n',exitflag); %% u_piao(1)=X(1); u_piao(2)=X(2); U(1)=kesi(4)+u_piao(1);%ڴ洢һʱ̵Ŀ U(2)=kesi(5)+u_piao(2); u_real(1) = U(1) + vd1; u_real(2) = U(2) + vd2; sys= [u_real(1); u_real(2)]; % vel, steering, x, y toc % End of mdlOutputs. ================================================ FILE: Chapter-5/ReadMe ================================================ This folder holds simulation codes for Chapter 5 * chapter5_1_1.m: Matlab code for nonlinear dynamic model linearization and discretization * chapter5_2_2.m: Matlab code for AFS use MPC * chapter5_5_2.m: Matlab code for Tire Cornering Stiffness Estimation * chap5_DynamicModel_AFS :Matlab code for MPC of AFS * chap5_TireStiffness_Estimation: Matlab code for Tire Cornering Stiffness Estimation use RLS method * chap5_CorneringStiffness_Estimation: another Matlab code for Tire Cornering Stiffness Estimation use RLS method ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/Chapter5_CorneringStiffness_Estimation.par ================================================ PARSFILE #EXPANDED_PARSFILE 2.0 ! This is an expansion of the parsfile: "Runs\Run274.par" ! It contains the contents of that file plus the contents of any files linked ! with the "PARSFILE" or "SPECIAL_PARSFILE" keywords. ! File created: 03:45 on August 24, 2019 by CarSim Version 8.1a, October 2011 PRODUCT_NAME CarSim ENTER_PARSFILE Runs\Run274.par`08-24-2019`03:12:26 #FullDataName CarSim Run Control`Chapter5_CorneringStiffness_Estimation`BOOK_MPC_Examples #VehicleCode Ind_SA OPT_ALL_WRITE 0 IOBJECT 0 OPT_INT_METHOD 2 ENTER_PARSFILE Models\Simulink\Cmex124.par`08-24-2019`03:12:04 #FullDataName Models: Simulink`Solver_TireCorneringStiffness_RLS`BOOK_MPC_Models #RunMdlFile e:\Carsim\Book_examples\chap5_CorneringStiffness_Estimation\CorneringStiffness_Estimation.mdl #RingCtrl1 2 OPT_INT_METHOD 2 #RingCtrl2 1 *X64SOLVER 1 #CheckBox0 1 *USE_ALT_DIR 1 #CheckBox1 0 *USE_DIFF_SOLVERS 0 #CheckBox2 0 OPT_IO_UPDATE 0 #CheckBox3 1 *TSTEP 0.001 *FREQ_MODEL 1000 *TSTEP_OUT 0.025 *FREQ_OUT 40 tstep 0.001 iprint 25 #AltPath E:\Carsim\Book_examples\chap5_CorneringStiffness_Estimation *ALTERNATE_PATH E:\Carsim\Book_examples\chap5_CorneringStiffness_Estimation ENTER_PARSFILE IO_Channels\O_Channels\O_Ch122.par`08-24-2019`03:17:45 #FullDataName I/O Channels: Export`CorneringStiffness_Estimation_Exports`MPC_BOOK_Sim_Exports *README_FILE Programs\solvers\ReadMe\i_i_outputs_tab.txt #CheckBox0 0 #RingCtrl0 2 EXP_Vx EXP_Vy EXP_AV_Y EXP_Steer_L1 EXP_Steer_R1 EXP_Alpha_L1 EXP_Alpha_L2 EXP_Alpha_R1 EXP_Alpha_R2 EXP_Fy_L1 EXP_Fy_L2 EXP_Fy_R1 EXP_Fy_R2 #MiscYellow0 #Number of Selected Channels: 13 #CHN_NAME: Vx #CHN_NAME: Vy #CHN_NAME: AV_Y #CHN_NAME: Steer_L1 #CHN_NAME: Steer_R1 #CHN_NAME: Alpha_L1 #CHN_NAME: Alpha_L2 #CHN_NAME: Alpha_R1 #CHN_NAME: Alpha_R2 #CHN_NAME: Fy_L1 #CHN_NAME: Fy_L2 #CHN_NAME: Fy_R1 #CHN_NAME: Fy_R2 #ENDMYellow LOG_ENTRY Used Dataset: I/O Channels: Export; { MPC_BOOK_Sim_Exports } CorneringStiffness_Estimation_Exports #Library : I/O Channels: Export #DataSet : CorneringStiffness_Estimation_Exports #Category: MPC_BOOK_Sim_Exports #FileID : O_Ch122 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-24-2019 03:17:45 #VehCode Export Channels EXIT_PARSFILE IO_Channels\O_Channels\O_Ch122.par #BlueLink1 I/O Channels: Export`CorneringStiffness_Estimation_Exports` MPC_BOOK_Sim_Exports` , Export #MiscYellow1 simfile LEO_CornerStiffness_Estimation.sim #ENDMYellow LOG_ENTRY Used Dataset: Models: Simulink; { BOOK_MPC_Models } Solver_TireCorneringStiffness_RLS #Library : Models: Simulink #DataSet : Solver_TireCorneringStiffness_RLS #Category: BOOK_MPC_Models #FileID : Cmex124 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-24-2019 03:12:04 #VehCode EXIT_PARSFILE Models\Simulink\Cmex124.par #BlueLink12 Models: Simulink`Solver_TireCorneringStiffness_RLS` BOOK_MPC_Models` , Models ENTER_PARSFILE Animator\Cameras\Camera107.par`08-02-2011`16:43:55 #FullDataName Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)`Vehicle Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw ENTER_PARSFILE Animator\Frames\Frame106.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw`Cameras ADD_REFERENCE_FRAME Cameras Camera Tracking X-Y-Z-Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME Xo SET_Y_NAME Yo SET_Z_NAME Zo SET_YAW_NAME yaw #MiscYellow0 cam_global_ambient .4 .4 .4 1 #ENDMYellow WRT_Xo ANI_Xo WRT_Yo ANI_Yo WRT_Zo ANI_Zo WRT_yaw ANI_yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Cameras } Camera Tracking X-Y-Z-Yaw #Library : Animator: Reference Frame #DataSet : Camera Tracking X-Y-Z-Yaw #Category: Cameras #FileID : Frame106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame106.par #BlueLink0 Animator: Reference Frame`Camera Tracking X-Y-Z-Yaw` Cameras` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Cameras Camera Tracking X-Y-Z-Yaw SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 15 SET_DISTANCE 36 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 15 *SET_DISTANCE 36 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 37 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Vehicle Reference } Rear View High, Veh. Ref., (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View High, Veh. Ref., (Frt. Facing) #Category: Vehicle Reference #FileID : Camera107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera107.par #BlueLink0 Animator: Camera Setup`Rear View High, Veh. Ref., (Frt. Facing)` Vehicle Reference` , Animator camera #CheckBox0 1 #CheckBox1 1 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 0 #CheckBox6 0 #CheckBox7 0 #CheckBox8 0 #CheckBox9 0 #RingCtrl0 4 #RingCtrl1 1 #RingCtrl3 0 #RingCtrl6 0 *RUN_COLOR 0.753 0.753 0.753 SET_RUN_COLOR 0.753 0.753 0.753 FLAG_10 274 ID_RUN 274 #RingCtrl4 off RT_WINDOW_CLOSE off #RingCtrl5 0 LIVE_SERVER_MAX_CONNECTIONS 0 ENTER_PARSFILE Vehicles\Assembly\Vehicle165.par`08-23-2019`18:41:30 #FullDataName Vehicle: Assembly`D-Class, SUV LEO-defined`CS D-Class #VehCode Ind_SA #CheckBox0 0 #RingCtrl0 3 OPT_PT 3 #RingCtrl1 1 #RingCtrl2 3 * Front components iaxle 1 symbol_push <> 1 ENTER_PARSFILE Suspensions\Compliance\SuspCmp119.par`08-02-2011`16:42:38 #FullDataName Suspension: Independent Compliance, Springs, and Dampers`D-Class, SUV - Front Comp.`CS D-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 *R_SPRING_L 0.611 *R_SPRING_R 0.611 *R_DAMPER_L 0.614 *R_DAMPER_R 0.614 *CT_FX_L 4.45e-6 *CT_FX_R 4.45e-6 *CS_FY_L -1.0e-06 *CS_FY_R -1.0e-06 *CS_MZ_L 3.8e-4 *CS_MZ_R 3.8e-4 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 1.5e-5 *CI_FY_R 1.5e-5 *CI_MZ_L 3.1e-5 *CI_MZ_R 3.1e-5 *C_LONG_L 1.6e-5 *C_LONG_R 1.6e-5 *C_LAT_L 1.6e-5 *C_LAT_R 1.6e-5 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 *R_JOUNCE_L 0.614 *R_JOUNCE_R 0.614 *R_REBOUND_L 0.614 *R_REBOUND_R 0.614 ENTER_PARSFILE Suspensions\Shocks\Shock102.par`08-02-2011`16:42:34 #FullDataName Suspension: Shock Absorber`Big SUV Damping` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FD_TABLE SPLINE -1410, -7316 -720, -5019 -390, -3395 -210, -2618 -90, -1472 -20, -333 20, 333 90, 870 200, 1145 390, 1607 760, 2623 1160, 3740 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Shock Absorber; Big SUV Damping #Library : Suspension: Shock Absorber #DataSet : Big SUV Damping #Category: #FileID : Shock102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Shock absorber EXIT_PARSFILE Suspensions\Shocks\Shock102.par #BlueLink1 Suspension: Shock Absorber`Big SUV Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx107.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`Linear 569 N-m/deg` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 569 MX_AUX_COEFFICIENT 569 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; Linear 569 N-m/deg #Library : Suspension: Auxiliary Roll Moment #DataSet : Linear 569 N-m/deg #Category: #FileID : AuxMx107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx107.par #BlueLink2 Suspension: Auxiliary Roll Moment`Linear 569 N-m/deg` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+70 mm / -50 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 68, 0 69, 0 70, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -70, -10000 -69, 0 -68, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +70 mm / -50 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +70 mm / -50 mm #Category: Jounce and Rebound Stops #FileID : JncRb102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb102.par #BlueLink5 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.614 CT_FX_COEFFICIENT 4.45e-6 CS_FY_COEFFICIENT -1.0e-06 CS_MZ_COEFFICIENT 3.8e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.5e-5 CI_MZ_COEFFICIENT 3.1e-5 C_LONG_COEFFICIENT 1.6e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.614 CMP_RSTOP_COEFFICIENT 0.614 ENTER_PARSFILE Suspensions\Springs\Spring117.par`08-02-2011`16:42:33 #FullDataName Suspension: Spring`130 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 130 FS_EXT_COEFFICIENT 130 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 130 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 130 N/mm #Library : Suspension: Spring #DataSet : 130 N/mm #Category: #FileID : Spring117 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring117.par #BlueLink0 Suspension: Spring`130 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big SUV Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+70 mm / -50 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.611 CMP_DAMP_COEFFICIENT 0.614 CT_FX_COEFFICIENT 4.45e-6 CS_FY_COEFFICIENT -1.0e-06 CS_MZ_COEFFICIENT 3.8e-4 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 1.5e-5 CI_MZ_COEFFICIENT 3.1e-5 C_LONG_COEFFICIENT 1.6e-5 C_LAT_COEFFICIENT 1.6e-5 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 0.614 CMP_RSTOP_COEFFICIENT 0.614 #BlueLink3 Suspension: Spring`130 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Independent Compliance, Springs, and Dampers; { CS D-Class } D-Class, SUV - Front Comp. #Library : Suspension: Independent Compliance, Springs, and Dampers #DataSet : D-Class, SUV - Front Comp. #Category: CS D-Class #FileID : SuspCmp119 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:38 #VehCode Independent ENTRY_NOTEFILE Suspensions\Compliance\SuspCmp119_note.txt Front spring rate chosen for a front ride frequency of 1.7 Hz and a front corner weight of 428 kg. EXIT_NOTEFILE Suspensions\Compliance\SuspCmp119_note.txt EXIT_PARSFILE Suspensions\Compliance\SuspCmp119.par #BlueLink16 Suspension: Independent Compliance, Springs, and Dampers`D-Class, SUV - Front Comp.` CS D-Class` , Front compliance ENTER_PARSFILE Suspensions\Kin_Indy\IndKin115.par`08-02-2011`16:42:39 #FullDataName Suspension: Independent System Kinematics`D-Class, SUV - Front Suspension`CS D-Class iside 1 L_TRACK 1565 Y_CL_SUSP 0 M_US 80 *IW_L 0.9 *JNC_DESIGN_L 0 *IW_R 0.9 *JNC_DESIGN_R 0 *TOE_L -0.2 *TOE_R -0.2 *CAMBER_L -0.3 *CAMBER_R -0.3 R_US_STR 0.8 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 0 ENTER_PARSFILE Suspensions\Dive\Dive103.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_DIVE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE #RadioCtrl0 0 SUSP_DIVE_AXLE_TABLE SPLINE -70, 2.07166 -60, 1.77237 -50, 1.47431 -40, 1.17742 -30, 0.881618 -20, 0.586832 -10, 0.292987 0, 0 10, -0.292218 20, -0.583766 30, -0.874758 40, -1.16532 50, -1.45561 60, -1.7458 70, -2.03611 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { SLA } Front SLA - Dive Angle #Library : Suspension: Dive Angle (Caster Change) #DataSet : Front SLA - Dive Angle #Category: SLA #FileID : Dive103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive103_note.txt NOTE: Sign convention of the CS 7.01b and earlier datasets was reversed and demonstrated a pro-dive suspension. This dataset represents an anti-dive suspension. EXIT_NOTEFILE Suspensions\Dive\Dive103_note.txt EXIT_PARSFILE Suspensions\Dive\Dive103.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Left wheel dive (caster change) ENTER_PARSFILE Suspensions\Longitudinal\SusX103.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Front SLA - Longitudinal Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -70, -0.729904 -60, -0.634454 -50, -0.536096 -40, -0.434813 -30, -0.330589 -20, -0.2234 -10, -0.113217 0, 0 10, 0.116308 20, 0.235783 30, 0.358522 40, 0.484654 50, 0.61434 60, 0.747787 70, 0.885253 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { SLA } Front SLA - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Front SLA - Longitudinal Movement #Category: SLA #FileID : SusX103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt Generic SLA Longitudinal movement vs. Jounce EXIT_NOTEFILE Suspensions\Longitudinal\SusX103_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX103.par #BlueLink1 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Left wheel X ENTER_PARSFILE Suspensions\Camber\Camber103.par`08-02-2011`16:42:36 #FullDataName Suspension: Camber Angle`Front SLA - Camber Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 CAMBER_TABLE SPLINE -70, 1.08171 -60, 0.996827 -50, 0.88789 -40, 0.755642 -30, 0.600569 -20, 0.422934 -10, 0.222791 0, 0 10, -0.245764 20, -0.515012 30, -0.808436 40, -1.12692 50, -1.47156 60, -1.84365 70, -2.24474 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Camber Angle; { SLA } Front SLA - Camber Change #Library : Suspension: Camber Angle #DataSet : Front SLA - Camber Change #Category: SLA #FileID : Camber103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Camber ENTRY_NOTEFILE Suspensions\Camber\Camber103_note.txt Generic SLA Camber change vs. Jounce EXIT_NOTEFILE Suspensions\Camber\Camber103_note.txt EXIT_PARSFILE Suspensions\Camber\Camber103.par #BlueLink2 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Left wheel camber ENTER_PARSFILE Suspensions\Lateral\SusLat103.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Front SLA - Lateral Movement`SLA #RingCtrl0 SPLINE #DiagramOne0 SUSP_LAT_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE SUSP_LAT_AXLE_JOUNCE_TABLE SPLINE -70, 4.74662 -60, 3.12302 -50, 1.82181 -40, 0.837522 -30, 0.165882 -20, -0.196302 -10, -0.251197 0, 0 10, 0.557037 20, 1.42059 30, 2.59226 40, 4.07461 50, 5.87116 60, 7.98647 70, 10.4262 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { SLA } Front SLA - Lateral Movement #Library : Suspension: Lateral Position #DataSet : Front SLA - Lateral Movement #Category: SLA #FileID : SusLat103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat103_note.txt Generic SLA Lateral movement vs. Jounce EXIT_NOTEFILE Suspensions\Lateral\SusLat103_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat103.par #BlueLink3 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Left wheel lateral (-Y) ENTER_PARSFILE Suspensions\Toe\Toe103.par`08-02-2011`16:42:33 #FullDataName Suspension: Toe Angle`Front SLA - Toe Change`SLA #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 TOE_TABLE SPLINE -70, 0.292407 -60, 0.237822 -50, 0.187561 -40, 0.141604 -30, 0.099916 -20, 0.062452 -10, 0.029164 0, 0 10, -0.025093 20, -0.046165 30, -0.063264 40, -0.076429 50, -0.085696 60, -0.091086 70, -0.09261 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Toe Angle; { SLA } Front SLA - Toe Change #Library : Suspension: Toe Angle #DataSet : Front SLA - Toe Change #Category: SLA #FileID : Toe103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Toe ENTRY_NOTEFILE Suspensions\Toe\Toe103_note.txt Generic SLA Toe change vs. Jounce EXIT_NOTEFILE Suspensions\Toe\Toe103_note.txt EXIT_PARSFILE Suspensions\Toe\Toe103.par #BlueLink4 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Left wheel toe IW 0.9 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -0.3 iside 2 #BlueLink5 Suspension: Dive Angle (Caster Change)`Front SLA - Dive Angle` SLA` , Right wheel dive (caster change) #BlueLink6 Suspension: Longitudinal Position`Front SLA - Longitudinal Movement` SLA` , Right wheel X #BlueLink7 Suspension: Camber Angle`Front SLA - Camber Change` SLA` , Right wheel camber #BlueLink8 Suspension: Lateral Position`Front SLA - Lateral Movement` SLA` , Right wheel lateral (+Y) #BlueLink9 Suspension: Toe Angle`Front SLA - Toe Change` SLA` , Right wheel toe IW 0.9 JNC_DESIGN 0 A_TOE -0.2 A_CAMBER -0.3 LOG_ENTRY Used Dataset: Suspension: Independent System Kinematics; { CS D-Class } D-Class, SUV - Front Suspension #Library : Suspension: Independent System Kinematics #DataSet : D-Class, SUV - Front Suspension #Category: CS D-Class #FileID : IndKin115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:39 #VehCode Independent ENTRY_NOTEFILE Suspensions\Kin_Indy\IndKin115_note.txt Generic Front SLA suspension kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Indy\IndKin115_note.txt EXIT_PARSFILE Suspensions\Kin_Indy\IndKin115.par #BlueLink19 Suspension: Independent System Kinematics`D-Class, SUV - Front Suspension` CS D-Class` , Front kinematics * LF tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> ENTER_PARSFILE Tires\Tire\Tire112.par`08-02-2011`16:42:33 #FullDataName Tire`255/75 R16`Touring Tires X_LENGTH 394 Z_LENGTH 394 Y_LENGTH 255 #CheckBox1 1 #CheckBox2 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 1 OPT_TIRE_MODEL 1 ENTER_PARSFILE Animator\STL_Groups\StlGroup140.par`08-02-2011`16:43:39 #FullDataName Animator: Shape Assembly`Small SUV`Tires *ANGLE_Z 180 *ANGLE_Y 0 *ANGLE_X 0 *X_REF_LENGTH 334 *Y_REF_LENGTH 205 *Z_REF_LENGTH 334 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL257.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive ENTER_PARSFILE Animator\Cameras\Camera103.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Top)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Fixed ENTER_PARSFILE Animator\Frames\Frame103.par`08-02-2011`16:43:50 #FullDataName Animator: Reference Frame`Fixed` ADD_REFERENCE_FRAME Fixed #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll LOG_ENTRY Used Dataset: Animator: Reference Frame; Fixed #Library : Animator: Reference Frame #DataSet : Fixed #Category: #FileID : Frame103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame103.par #BlueLink0 Animator: Reference Frame`Fixed` ` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Fixed SET_LOOKPOINT_X -1.2 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 180 SET_ELEVATION 90 SET_DISTANCE 35 *SET_LOOKPOINT_X -1.2 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 180 *SET_ELEVATION 90 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Top) #Library : Animator: Camera Setup #DataSet : Shape Preview (Top) #Category: Shape Preview #FileID : Camera103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera103.par #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Tire #Library : Animator: Shape File Link #DataSet : Small SUV Tire #Category: Tires #FileID : AniSTL257 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL257.par #BlueLink0 Animator: Shape File Link`Small SUV Tire` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL258.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Wheel`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\wheel.obj #ENDMYellow SET_COLOR .6 .6 .6 *SPECULAR 0.5 SMOOTH_MAX_ANGLE 50 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.5 0.5 0.5 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Wheel #Library : Animator: Shape File Link #DataSet : Small SUV Wheel #Category: Tires #FileID : AniSTL258 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL258.par #BlueLink1 Animator: Shape File Link`Small SUV Wheel` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL259.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Stripe`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\stripe.obj #ENDMYellow SET_COLOR white SET_OFFSET_X 0 SET_OFFSET_Y -0.01 SET_OFFSET_Z 0.01 *SPECULAR 0 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back on SET_SPECULAR 0 0 0 #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Stripe #Library : Animator: Shape File Link #DataSet : Small SUV Stripe #Category: Tires #FileID : AniSTL259 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL259.par #BlueLink2 Animator: Shape File Link`Small SUV Stripe` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 ENTER_PARSFILE Animator\STL\AniSTL260.par`08-02-2011`16:43:49 #FullDataName Animator: Shape File Link`Small SUV Rotor`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\205_70R15\rotor.obj #ENDMYellow SET_COLOR .1 .1 .1 *SPECULAR 0 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Small SUV Rotor #Library : Animator: Shape File Link #DataSet : Small SUV Rotor #Category: Tires #FileID : AniSTL260 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:49 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL260.par #BlueLink3 Animator: Shape File Link`Small SUV Rotor` Tires` , Shape File set_angle_x 0 set_angle_y 0 set_angle_z 180 x_ref_length 334 y_ref_length 205 z_ref_length 334 ENTER_PARSFILE Animator\Cameras\Camera104.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Shape Preview (Side)`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview ENTER_PARSFILE Animator\Frames\Frame101.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Yaw for Shape Preview`Shape Preview ADD_REFERENCE_FRAME Shape Preview Yaw for Shape Preview #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_YAW_NAME Yaw WRT_Yaw ANI_Yaw LOG_ENTRY Used Dataset: Animator: Reference Frame; { Shape Preview } Yaw for Shape Preview #Library : Animator: Reference Frame #DataSet : Yaw for Shape Preview #Category: Shape Preview #FileID : Frame101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame101.par #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 0 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0 SET_AZIMUTH 0 SET_ELEVATION 0 SET_DISTANCE 35 *SET_LOOKPOINT_X 0 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0 *SET_AZIMUTH 0 *SET_ELEVATION 0 *SET_DISTANCE 35 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Shape Preview (Side) #Library : Animator: Camera Setup #DataSet : Shape Preview (Side) #Category: Shape Preview #FileID : Camera104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera104.par #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { Tires } Small SUV #Library : Animator: Shape Assembly #DataSet : Small SUV #Category: Tires #FileID : StlGroup140 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:39 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup140.par #BlueLink4 Animator: Shape Assembly`Small SUV` Tires` , Animator WRITE_WHEEL_OFFSET SET_NUM_POINTS 12 SET_THICKNESS_SGUI 255 ENTER_PARSFILE Animator\Sound\Set\SndSet106.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Tire Sounds - 1150 kg Rated Load`Tire Sounds #MiscYellow0 define_parameter rated_load_<> 1150; units = kg; #ENDMYellow ENTER_PARSFILE Animator\Sound\Sample\SndSmp112.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Lateral Slip`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 0.7 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod129.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Force Effects`Tire Lateral Slip Sound Modifiers #MiscYellow0 define_output mod1_<> = abs(fy_<>) /(rated_load_<> * 9.80665) * MuY_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod1_<> SOUNDMOD_INPUT_MIN 0.3 SOUNDMOD_INPUT_LOW 0.6 SOUNDMOD_INPUT_HIGH 0.9 SOUNDMOD_INPUT_MAX 1.2 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod1_<> ANI_mod1_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Lateral Slip Sound Modifiers } Loudness: Lateral Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Force Effects #Category: Tire Lateral Slip Sound Modifiers #FileID : SndMod129 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod129.par #BlueLink0 Animator: Sound Modifier`Loudness: Lateral Force Effects` Tire Lateral Slip Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod130.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Lateral Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod2_<> = sin(min(abs(alphL_<>), 15 / dr) * abs(vxcen<>); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod2_<> SOUNDMOD_INPUT_MIN 0.1 SOUNDMOD_INPUT_LOW 0.5 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.5 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_mod2_<> ANI_mod2_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Lateral Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Lateral Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod130 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod130.par #BlueLink1 Animator: Sound Modifier`Loudness: Lateral Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Lateral Slip #Library : Animator: Sound Sample #DataSet : Lateral Slip #Category: Tire Sounds #FileID : SndSmp112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp112.par #BlueLink0 Animator: Sound Sample`Lateral Slip` Tire Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp113.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wheelspin / Brake Lockup`Tire Sounds ADD_3D_SOUND Animator\Audio\Tire\Generic-Tire-01_Skid-01.wav #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.0 SOUND_VOL_MAX 4.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 1.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod131.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Force Effects`Wheelspin / Lockup Sound Modifiers #MiscYellow0 define_output mod3_<> = abs(fx_<>) / (rated_load_<> * 9.80665) * MuX_<>; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod3_<> SOUNDMOD_INPUT_MIN 0.2 SOUNDMOD_INPUT_LOW 0.4 SOUNDMOD_INPUT_HIGH 0.6 SOUNDMOD_INPUT_MAX 0.8 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_mod3_<> ANI_mod3_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wheelspin / Lockup Sound Modifiers } Loudness: Longitudinal Force Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Force Effects #Category: Wheelspin / Lockup Sound Modifiers #FileID : SndMod131 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod131.par #BlueLink0 Animator: Sound Modifier`Loudness: Longitudinal Force Effects` Wheelspin / Lockup Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod132.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Longitudinal Speed Effects`Tire Speed Sound Modifiers #MiscYellow0 define_output mod4_<> = min(abs(KappL_<>), 1.0) * abs(vxcen<>) ; #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME mod4_<> SOUNDMOD_INPUT_MIN 1.5 SOUNDMOD_INPUT_LOW 2.0 SOUNDMOD_INPUT_HIGH 2.5 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.3333 SOUNDMOD_OUTPUT_HIGH 0.6667 SOUNDMOD_OUTPUT_MAX 1.0 WRT_mod4_<> ANI_mod4_<> LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Tire Speed Sound Modifiers } Loudness: Longitudinal Speed Effects #Library : Animator: Sound Modifier #DataSet : Loudness: Longitudinal Speed Effects #Category: Tire Speed Sound Modifiers #FileID : SndMod132 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod132.par #BlueLink1 Animator: Sound Modifier`Loudness: Longitudinal Speed Effects` Tire Speed Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Tire Sounds } Wheelspin / Brake Lockup #Library : Animator: Sound Sample #DataSet : Wheelspin / Brake Lockup #Category: Tire Sounds #FileID : SndSmp113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp113.par #BlueLink1 Animator: Sound Sample`Wheelspin / Brake Lockup` Tire Sounds` , Sample 2 LOG_ENTRY Used Dataset: Animator: Sound Set; { Tire Sounds } Tire Sounds - 1150 kg Rated Load #Library : Animator: Sound Set #DataSet : Tire Sounds - 1150 kg Rated Load #Category: Tire Sounds #FileID : SndSet106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set EXIT_PARSFILE Animator\Sound\Set\SndSet106.par #BlueLink13 Animator: Sound Set`Tire Sounds - 1150 kg Rated Load` Tire Sounds` , Animator RRE 379 R0 394 FZ_TIRE_COEFFICIENT 470 FZ_MAX 100000 IT 0 L_RELAX_X 38 L_RELAX_Y 780 VLOW_ALPHA 5 RR_C 0.0042 RR_V 0.000032 RR_FX 1 OPT_TIRE_COMB 1 R_TIRE_COMB 1.5 ENTER_PARSFILE Tires\Mz\TireMz109.par`08-02-2011`16:42:32 #FullDataName Tire: Aligning Moment`255/75 R16`Touring Tires #RadioCtrl0 0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Aligning moment (N-m) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows MZ_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.5, 14.18, 27.44, 39.66, 50.77, 60.75, 69.58, 77.28, 83.85 1, 28.61, 55.37, 80.02, 102.45, 122.6, 140.44, 155.97, 169.22 1.5, 42.17, 81.77, 118.43, 151.95, 182.2, 209.12, 232.69, 252.89 2, 52.19, 101.72, 148.12, 191.09, 230.41, 265.9, 297.44, 324.92 2.5, 56.3, 110.58, 162.37, 211.32, 257.09, 299.38, 337.91, 372.43 3, 54.51, 107.99, 160.11, 210.54, 258.91, 304.87, 348.02, 387.99 3.5, 48.92, 97.71, 146.21, 194.18, 241.35, 287.38, 331.9, 374.51 4, 41.89, 84.25, 127.05, 170.2, 213.52, 256.78, 299.72, 341.99 4.5, 34.92, 70.64, 107.23, 144.67, 182.91, 221.83, 261.26, 300.98 5, 28.7, 58.33, 89.04, 120.86, 153.81, 187.85, 222.93, 258.91 5.5, 23.39, 47.76, 73.27, 99.99, 127.99, 157.28, 187.88, 219.73 6, 18.96, 38.88, 59.94, 82.23, 105.83, 130.8, 157.18, 184.99 6.5, 15.28, 31.48, 48.78, 67.28, 87.08, 108.26, 130.86, 154.95 7, 12.21, 25.31, 39.45, 54.74, 71.3, 89.18, 108.48, 129.26 7.5, 9.65, 20.13, 31.61, 44.2, 57.98, 73.05, 89.48, 107.35 8, 7.49, 15.77, 25, 35.28, 46.7, 59.35, 73.31, 88.65 8.5, 5.65, 12.07, 19.38, 27.69, 37.09, 47.67, 59.49, 72.64 9, 4.09, 8.89, 14.56, 21.19, 28.85, 37.63, 47.61, 58.86 9.5, 2.73, 6.16, 10.41, 15.57, 21.73, 28.96, 37.34, 46.92 10, 1.56, 3.78, 6.8, 10.7, 15.55, 21.43, 28.4, 36.54 10.5, 0.53, 1.71, 3.64, 6.43, 10.14, 14.83, 20.58, 27.44 11, -0.37, -0.12, 0.87, 2.68, 5.37, 9.02, 13.69, 19.43 11.5, -1.17, -1.74, -1.59, -0.65, 1.16, 3.88, 7.59, 12.34 12, -1.89, -3.18, -3.78, -3.61, -2.6, -0.69, 2.16, 6.03 12.5, -2.53, -4.48, -5.74, -6.26, -5.96, -4.78, -2.69, 0.39 13, -3.1, -5.64, -7.5, -8.64, -8.97, -8.46, -7.05, -4.69 13.5, -3.62, -6.68, -9.1, -10.79, -11.7, -11.78, -10.99, -9.26 14, -4.09, -7.64, -10.54, -12.74, -14.17, -14.79, -14.55, -13.41 14.5, -4.52, -8.5, -11.85, -14.51, -16.42, -17.53, -17.8, -17.18 15, -4.91, -9.29, -13.05, -16.13, -18.47, -20.03, -20.76, -20.62 15.5, -5.27, -10.02, -14.16, -17.62, -20.35, -22.32, -23.48, -23.78 16, -5.6, -10.69, -15.17, -18.98, -22.09, -24.43, -25.97, -26.67 16.5, -5.91, -11.3, -16.1, -20.24, -23.68, -26.37, -28.27, -29.34 17, -6.19, -11.87, -16.97, -21.41, -25.16, -28.16, -30.39, -31.81 17.5, -6.45, -12.4, -17.77, -22.49, -26.52, -29.83, -32.36, -34.09 18, -6.7, -12.9, -18.51, -23.5, -27.8, -31.37, -34.19, -36.21 18.5, -6.92, -13.35, -19.21, -24.43, -28.98, -32.81, -35.89, -38.19 19, -7.14, -13.78, -19.86, -25.31, -30.09, -34.16, -37.48, -40.03 19.5, -7.33, -14.18, -20.47, -26.13, -31.12, -35.41, -38.97, -41.75 20, -7.52, -14.56, -21.04, -26.89, -32.09, -36.59, -40.36, -43.36 20.5, -7.7, -14.91, -21.57, -27.61, -33, -37.7, -41.67, -44.88 21, -7.86, -15.25, -22.07, -28.29, -33.86, -38.74, -42.9, -46.3 21.5, -8.02, -15.56, -22.55, -28.93, -34.67, -39.72, -44.05, -47.64 22, -8.16, -15.86, -23, -29.53, -35.43, -40.64, -45.14, -48.91 22.5, -8.3, -16.14, -23.42, -30.1, -36.15, -41.51, -46.18, -50.1 23, -8.43, -16.4, -23.82, -30.64, -36.83, -42.34, -47.15, -51.23 23.5, -8.56, -16.65, -24.2, -31.16, -37.47, -43.13, -48.08, -52.3 24, -8.68, -16.89, -24.56, -31.64, -38.09, -43.87, -48.95, -53.32 24.5, -8.79, -17.12, -24.91, -32.1, -38.67, -44.58, -49.79, -54.28 25, -8.9, -17.33, -25.23, -32.54, -39.23, -45.25, -50.58, -55.2 26, -8.9, -17.33, -25.23, -32.54, -39.23, -45.25, -50.58, -55.2 ENDTABLE LOG_ENTRY Used Dataset: Tire: Aligning Moment; { Touring Tires } 255/75 R16 #Library : Tire: Aligning Moment #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireMz109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:32 #VehCode Tire: Mz EXIT_PARSFILE Tires\Mz\TireMz109.par #BlueLink0 Tire: Aligning Moment`255/75 R16` Touring Tires` , Aligning moment ENTER_PARSFILE Tires\Fy\TireFy109.par`08-02-2011`16:42:29 #FullDataName Tire: Lateral Force`255/75 R16`Touring Tires #RadioCtrl0 0 MU_REF_Y 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Slip angle [Alpha] (deg) *3D_ZLabel Absolute lateral tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FY_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.5, 306.2, 600.88, 882.3, 1149.48, 1401.78, 1638.74, 1860.01, 2065.37 1, 605.83, 1189, 1746.07, 2275.1, 2774.82, 3244.29, 3682.86, 4090.04 1.5, 892.78, 1752.48, 2574.01, 3354.57, 4092.23, 4785.63, 5433.75, 6035.88 2, 1161.8, 2281.06, 3351.23, 4368.63, 5330.76, 6235.81, 7082.44, 7869.65 2.5, 1408.82, 2766.79, 4066.08, 5302.21, 6472.14, 7573.62, 8604.98, 9564.94 3, 1631.13, 3204.39, 4710.78, 6145.16, 7503.95, 8784.53, 9984.87, 11103.43 3.5, 1827.46, 3591.29, 5281.5, 6892.37, 8419.86, 9860.96, 11213.35, 12475.2 4, 1997.83, 3927.42, 5778.04, 7543.42, 9219.14, 10801.85, 12288.92, 13678.27 4.5, 2143.28, 4214.8, 6203.19, 8101.76, 9905.76, 11611.53, 13216.18, 14717.36 5, 2265.63, 4456.89, 6561.91, 8573.68, 10487.15, 12298.4, 14004.3, 15602.28 5.5, 2367.15, 4658.08, 6860.54, 8967.25, 10972.93, 12873.45, 14665.46, 16346.2 6, 2450.32, 4823.16, 7106.01, 9291.39, 11373.81, 13348.99, 15213.38, 16964.05 6.5, 2517.61, 4956.95, 7305.33, 9555.12, 11700.69, 13737.6, 15662.17, 17471.29 7, 2571.36, 5064.02, 7465.19, 9767.1, 11964.03, 14051.42, 16025.47, 17882.95 7.5, 2613.7, 5148.56, 7591.68, 9935.26, 12173.47, 14301.67, 16315.97, 18213.03 8, 2646.53, 5214.25, 7690.26, 10066.67, 12337.64, 14498.42, 16545.06, 18474.15 8.5, 2671.48, 5264.33, 7765.64, 10167.52, 12464.06, 14650.49, 16722.78, 18677.46 9, 2689.94, 5301.54, 7821.89, 10243.09, 12559.22, 14765.48, 16857.78, 18832.62 9.5, 2703.09, 5328.18, 7862.41, 10297.87, 12628.63, 14849.86, 16957.46, 18947.88 10, 2711.91, 5346.21, 7890.07, 10335.61, 12676.9, 14909.09, 17028.06, 19030.22 10.5, 2717.21, 5357.22, 7907.26, 10359.46, 12707.9, 14947.72, 17074.79, 19085.51 11, 2719.66, 5362.55, 7915.95, 10372.01, 12724.83, 14969.54, 17102.02, 19118.65 11.5, 2719.82, 5363.29, 7917.76, 10375.41, 12730.34, 14977.71, 17113.38, 19133.71 12, 2718.14, 5360.35, 7914.04, 10371.43, 12726.63, 14974.81, 17111.84, 19134.07 12.5, 2714.98, 5354.46, 7905.89, 10361.53, 12715.5, 14963, 17099.89, 19122.53 13, 2710.66, 5346.22, 7894.2, 10346.89, 12698.43, 14944.03, 17079.56, 19101.4 13.5, 2705.42, 5336.13, 7879.72, 10328.49, 12676.64, 14919.36, 17052.55, 19072.58 14, 2699.47, 5324.6, 7863.04, 10307.15, 12651.12, 14890.18, 17020.22, 19037.64 14.5, 2692.97, 5311.96, 7844.68, 10283.53, 12622.71, 14857.47, 16983.73, 18997.87 15, 2686.05, 5298.47, 7825.03, 10258.15, 12592.06, 14822.04, 16944, 18954.35 15.5, 2678.82, 5284.36, 7804.42, 10231.46, 12559.74, 14784.54, 16901.81, 18907.95 16, 2671.39, 5269.8, 7783.12, 10203.82, 12526.19, 14745.53, 16857.79, 18859.39 16.5, 2663.81, 5254.95, 7761.36, 10175.53, 12491.79, 14705.44, 16812.45, 18809.27 17, 2656.15, 5239.92, 7739.31, 10146.83, 12456.83, 14664.64, 16766.24, 18758.07 17.5, 2648.45, 5224.82, 7717.11, 10117.91, 12421.57, 14623.42, 16719.48, 18706.2 18, 2640.76, 5209.71, 7694.9, 10088.94, 12386.19, 14582.03, 16672.46, 18653.97 18.5, 2633.11, 5194.66, 7672.76, 10060.03, 12350.87, 14540.66, 16625.43, 18601.65 19, 2625.51, 5179.72, 7650.77, 10031.3, 12315.73, 14499.47, 16578.55, 18549.47 19.5, 2618, 5164.94, 7628.98, 10002.82, 12280.89, 14458.59, 16531.99, 18497.6 20, 2610.59, 5150.33, 7607.46, 9974.67, 12246.41, 14418.12, 16485.87, 18446.16 20.5, 2603.28, 5135.93, 7586.23, 9946.89, 12212.37, 14378.14, 16440.27, 18395.29 21, 2596.09, 5121.76, 7565.32, 9919.51, 12178.83, 14338.72, 16395.28, 18345.07 21.5, 2589.02, 5107.83, 7544.76, 9892.59, 12145.8, 14299.89, 16350.96, 18295.56 22, 2582.08, 5094.15, 7524.57, 9866.12, 12113.34, 14261.7, 16307.34, 18246.82 22.5, 2575.28, 5080.72, 7504.74, 9840.14, 12081.45, 14224.18, 16264.47, 18198.88 23, 2568.6, 5067.56, 7485.29, 9814.64, 12050.15, 14187.34, 16222.36, 18151.78 23.5, 2562.07, 5054.66, 7466.23, 9789.64, 12019.45, 14151.19, 16181.02, 18105.54 24, 2555.66, 5042.02, 7447.55, 9765.14, 11989.35, 14115.74, 16140.48, 18060.16 24.5, 2549.39, 5029.64, 7429.26, 9741.13, 11959.86, 14080.99, 16100.72, 18015.65 25, 2543.26, 5017.52, 7411.34, 9717.62, 11930.96, 14046.94, 16061.75, 17972.01 26, 2543.26, 5017.52, 7411.34, 9717.62, 11930.96, 14046.94, 16061.75, 17972.01 ENDTABLE LOG_ENTRY Used Dataset: Tire: Lateral Force; { Touring Tires } 255/75 R16 #Library : Tire: Lateral Force #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireFy109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:29 #VehCode Tire: Fy EXIT_PARSFILE Tires\Fy\TireFy109.par #BlueLink1 Tire: Lateral Force`255/75 R16` Touring Tires` , Lateral force ENTER_PARSFILE Tires\Fx\TireFx109.par`08-02-2011`16:42:28 #FullDataName Tire: Longitudinal Force`255/75 R16`Touring Tires #RadioCtrl0 0 MU_REF_X 1.0 *3D_XLabel Vertical load (N) *3D_YLabel Abs. slip ratio [Kappa] (-) *3D_ZLabel Absolute longitudinal tire force (N) #DiagramTwo0 *3D_DATA 8, 51 ! columns x rows FX_TIRE_CARPET 0, 2819.41, 5638.82, 8458.24, 11277.65, 14097.06, 16916.47, 19735.88, 22555.3 0.02, 1258.94, 2468.09, 3619.86, 4710.05, 5735.83, 6695.23, 7586.84, 8409.7 0.04, 1993.59, 3916.87, 5758.7, 7512.6, 9173.94, 10739.23, 12205.7, 13571.17 0.06, 2344.28, 4612.4, 6792.08, 8875.96, 10858.65, 12735.94, 14504.35, 16161.01 0.08, 2516.82, 4955.83, 7304.36, 9554.74, 11701.28, 13739.45, 15665.47, 17476.15 0.1, 2608.63, 5139.03, 7578.4, 9918.95, 12154.85, 14281.44, 16294.79, 18191.53 0.12, 2660.42, 5242.66, 7733.87, 10126.21, 12413.81, 14591.92, 16656.52, 18604.16 0.14, 2690.36, 5302.78, 7824.43, 10247.46, 12565.96, 14775.15, 16870.97, 18849.91 0.16, 2707.35, 5337.12, 7876.51, 10317.67, 12654.69, 14882.77, 16997.83, 18996.3 0.18, 2716.2, 5355.23, 7904.34, 10355.71, 12703.42, 14942.66, 17069.34, 19079.87 0.2, 2719.69, 5362.66, 7916.21, 10372.54, 12725.75, 14971.02, 17104.25, 19121.85 0.22, 2719.56, 5362.84, 7917.22, 10374.93, 12730.08, 14977.86, 17114.17, 19135.39 0.24, 2716.91, 5357.99, 7910.7, 10367.29, 12721.88, 14969.69, 17106.6, 19129.01 0.26, 2712.5, 5349.62, 7898.89, 10352.57, 12704.84, 14950.89, 17086.64, 19108.47 0.28, 2706.85, 5338.77, 7883.33, 10332.85, 12681.51, 14924.53, 17057.82, 19077.79 0.3, 2700.35, 5326.18, 7865.15, 10309.6, 12653.73, 14892.78, 17022.68, 19039.82 0.32, 2693.25, 5312.4, 7845.14, 10283.88, 12622.82, 14857.24, 16983.05, 18996.67 0.34, 2685.76, 5297.81, 7823.91, 10256.48, 12589.77, 14819.06, 16940.29, 18949.87 0.36, 2678.02, 5282.71, 7801.88, 10227.99, 12555.32, 14779.14, 16895.42, 18900.59 0.38, 2670.15, 5267.33, 7779.4, 10198.86, 12520, 14738.13, 16849.22, 18849.7 0.4, 2662.23, 5251.82, 7756.71, 10169.41, 12484.24, 14696.53, 16802.26, 18797.88 0.42, 2654.32, 5236.32, 7734, 10139.9, 12448.36, 14654.73, 16755, 18745.62 0.44, 2646.46, 5220.92, 7711.41, 10110.51, 12412.59, 14613.01, 16707.76, 18693.33 0.46, 2638.7, 5205.69, 7689.05, 10081.4, 12377.13, 14571.59, 16660.82, 18641.29 0.48, 2631.05, 5190.68, 7667, 10052.68, 12342.09, 14530.64, 16614.36, 18589.74 0.5, 2623.54, 5175.93, 7645.33, 10024.41, 12307.6, 14490.29, 16568.55, 18538.86 0.52, 2616.18, 5161.47, 7624.06, 9996.66, 12273.71, 14450.63, 16523.48, 18488.76 0.54, 2608.98, 5147.31, 7603.24, 9969.48, 12240.5, 14411.72, 16479.23, 18439.55 0.56, 2601.95, 5133.48, 7582.88, 9942.89, 12207.98, 14373.62, 16435.88, 18391.3 0.58, 2595.09, 5119.98, 7563, 9916.91, 12176.2, 14336.35, 16393.45, 18344.04 0.6, 2588.4, 5106.81, 7543.6, 9891.54, 12145.16, 14299.94, 16351.97, 18297.83 0.62, 2581.88, 5093.97, 7524.68, 9866.8, 12114.87, 14264.38, 16311.46, 18252.66 0.64, 2575.53, 5081.47, 7506.24, 9842.68, 12085.33, 14229.7, 16271.92, 18208.56 0.66, 2569.35, 5069.29, 7488.28, 9819.18, 12056.54, 14195.87, 16233.34, 18165.51 0.68, 2563.33, 5057.43, 7470.79, 9796.28, 12028.47, 14162.9, 16195.72, 18123.52 0.7, 2557.47, 5045.89, 7453.76, 9773.98, 12001.14, 14130.77, 16159.05, 18082.57 0.72, 2551.78, 5034.66, 7437.19, 9752.27, 11974.51, 14099.47, 16123.31, 18042.65 0.74, 2546.23, 5023.73, 7421.05, 9731.13, 11948.58, 14068.97, 16088.48, 18003.73 0.76, 2540.84, 5013.09, 7405.35, 9710.55, 11923.33, 14039.26, 16054.54, 17965.8 0.78, 2535.59, 5002.74, 7390.06, 9690.52, 11898.74, 14010.33, 16021.48, 17928.83 0.8, 2530.49, 4992.66, 7375.18, 9671.01, 11874.79, 13982.14, 15989.26, 17892.79 0.82, 2525.52, 4982.86, 7360.7, 9652.01, 11851.47, 13954.68, 15957.87, 17857.68 0.84, 2520.68, 4973.31, 7346.59, 9633.52, 11828.76, 13927.93, 15927.28, 17823.45 0.86, 2515.97, 4964.02, 7332.86, 9615.5, 11806.63, 13901.87, 15897.47, 17790.09 0.88, 2511.39, 4954.98, 7319.49, 9597.96, 11785.07, 13876.48, 15868.42, 17757.57 0.9, 2506.93, 4946.16, 7306.46, 9580.86, 11764.07, 13851.73, 15840.1, 17725.87 0.92, 2502.58, 4937.58, 7293.77, 9564.21, 11743.6, 13827.61, 15812.5, 17694.95 0.94, 2498.35, 4929.22, 7281.41, 9547.98, 11723.65, 13804.1, 15785.58, 17664.8 0.96, 2494.22, 4921.07, 7269.36, 9532.16, 11704.21, 13781.17, 15759.34, 17635.4 0.98, 2490.2, 4913.13, 7257.62, 9516.74, 11685.25, 13758.82, 15733.74, 17606.72 1, 2486.29, 4905.39, 7246.17, 9501.7, 11666.76, 13737.01, 15708.77, 17578.73 1.02, 2486.29, 4905.39, 7246.17, 9501.7, 11666.76, 13737.01, 15708.77, 17578.73 ENDTABLE LOG_ENTRY Used Dataset: Tire: Longitudinal Force; { Touring Tires } 255/75 R16 #Library : Tire: Longitudinal Force #DataSet : 255/75 R16 #Category: Touring Tires #FileID : TireFx109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:28 #VehCode Tire: Fx EXIT_PARSFILE Tires\Fx\TireFx109.par #BlueLink2 Tire: Longitudinal Force`255/75 R16` Touring Tires` , Longitudinal force ENTER_PARSFILE Tires\Camber_Thrust\CamStiff109.par`08-02-2011`16:42:30 #FullDataName Tire: Camber Thrust Coefficient`255/75 R16`Touring Tires #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 KGAMMA_TABLE LINEAR 0, 0 1127.76475, -5.0637 2255.5295, -9.5404 3383.29425, -13.704 4511.059, -17.6355 5638.82375, -21.3781 6766.5885, -24.9597 7894.35325, -28.3995 9022.118, -31.7123 10149.88275, -34.9094 11277.6475, -38 12405.41225, -40.9917 13533.177, -43.8909 14660.94175, -46.7031 15788.7065, -49.433 16916.47125, -52.0848 18044.236, -54.6622 19172.00075, -57.1685 20299.7655, -59.6066 21427.53025, -61.9791 22555.295, -64.2887 ENDTABLE LOG_ENTRY Used Dataset: Tire: Camber Thrust Coefficient; { Touring Tires } 255/75 R16 #Library : Tire: Camber Thrust Coefficient #DataSet : 255/75 R16 #Category: Touring Tires #FileID : CamStiff109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:30 #VehCode Camber thrust EXIT_PARSFILE Tires\Camber_Thrust\CamStiff109.par #BlueLink3 Tire: Camber Thrust Coefficient`255/75 R16` Touring Tires` , Camber thrust LOG_ENTRY Used Dataset: Tire; { Touring Tires } 255/75 R16 #Library : Tire #DataSet : 255/75 R16 #Category: Touring Tires #FileID : Tire112 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:33 #VehCode Tire ENTRY_NOTEFILE Tires\Tire\Tire112_note.txt 1150 kg rated load EXIT_NOTEFILE Tires\Tire\Tire112_note.txt EXIT_PARSFILE Tires\Tire\Tire112.par #BlueLink9 Tire`255/75 R16` Touring Tires` , Left-front tire * RF tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink10 Tire`255/75 R16` Touring Tires` , Right-front tire * Rear components iaxle 2 symbol_add <> 1 WRITE_ADD_REFERENCE_FRAME_AXLE ENTER_PARSFILE Suspensions\Compliance_SA\SuspCmpSA105.par`08-02-2011`16:42:37 #FullDataName Suspension: Solid Axle Compliance, Springs, and Dampers`D-Class, SUV - Rear Solid Axle Comp.`CS D-Class #RingCtrl0 0 *OPT_SPR 0 iside 1 L_SPRINGS 1103.33 L_DAMPERS 1103.33 *R_SPRING_L 0.9989 *R_SPRING_R 1.0001 *R_DAMPER_L 1.003 *R_DAMPER_R 0.995 *CT_FX_L 0 *CT_FX_R 0 *CS_FY_L 0 *CS_FY_R 0 *CS_MZ_L 0 *CS_MZ_R 0 *CC_FX_L 0 *CC_FX_R 0 *CI_FY_L 0 *CI_FY_R 0 *CI_MZ_L 0 *CI_MZ_R 0 *C_LAT_AXLE 5.3133E-04 *C_LONG_AXLE 4.6049E-04 *L_SPG_ADJ_L 0 *L_SPG_ADJ_R 0 DAUX 0 L_JNC_STOPS 1100 L_REB_STOPS 1100 *R_JOUNCE_L 1 *R_JOUNCE_R 1 *R_REBOUND_L 1 *R_REBOUND_R 1 C_LAT_AXLE_COEFFICIENT 5.3133E-04 C_LONG_AXLE_COEFFICIENT 4.6049E-04 L_SPG_ADJ 0 #BlueLink1 Suspension: Shock Absorber`Big SUV Damping` ` , Left shock absorber ENTER_PARSFILE Suspensions\Aux_Roll\AuxMx108.par`08-02-2011`16:42:37 #FullDataName Suspension: Auxiliary Roll Moment`No Auxiliary Roll Moment` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 MX_AUX_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Auxiliary Roll Moment; No Auxiliary Roll Moment #Library : Suspension: Auxiliary Roll Moment #DataSet : No Auxiliary Roll Moment #Category: #FileID : AuxMx108 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Aux. Roll Moment EXIT_PARSFILE Suspensions\Aux_Roll\AuxMx108.par #BlueLink2 Suspension: Auxiliary Roll Moment`No Auxiliary Roll Moment` ` , Roll moment ENTER_PARSFILE Suspensions\Jounce_Rebound\JncRb107.par`08-02-2011`16:42:36 #FullDataName Suspension: Jounce and Rebound Stops`+120 mm / -60 mm`Jounce and Rebound Stops #RingCtrl0 LINEAR #RingCtrl1 LINEAR #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 F_JNC_STOP_TABLE LINEAR 118, 0 119, 0 120, 10000 ENDTABLE #DiagramOne1 F_REB_STOP_TABLE LINEAR -60, -10000 -59, 0 -58, 0 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Jounce and Rebound Stops; { Jounce and Rebound Stops } +120 mm / -60 mm #Library : Suspension: Jounce and Rebound Stops #DataSet : +120 mm / -60 mm #Category: Jounce and Rebound Stops #FileID : JncRb107 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode EXIT_PARSFILE Suspensions\Jounce_Rebound\JncRb107.par #BlueLink5 Suspension: Jounce and Rebound Stops`+120 mm / -60 mm` Jounce and Rebound Stops` , Left jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 0.9989 CMP_DAMP_COEFFICIENT 1.003 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT 0 CS_MZ_COEFFICIENT 0 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 0 CI_MZ_COEFFICIENT 0 CMP_JSTOP_COEFFICIENT 1 CMP_RSTOP_COEFFICIENT 1 ENTER_PARSFILE Suspensions\Springs\Spring118.par`08-02-2011`16:42:34 #FullDataName Suspension: Spring`40 N/mm` #RingCtrl0 COEFFICIENT FS_COMP_COEFFICIENT 40 FS_EXT_COEFFICIENT 40 #RadioCtrl0 0 #RadioCtrl1 0 SPRING_COMP_BETA 2 SPRING_EXT_BETA 2 *SCALAR 40 *OFFSET 20 FS_COMP_OFFSET 20 FS_EXT_OFFSET -20 LOG_ENTRY Used Dataset: Suspension: Spring; 40 N/mm #Library : Suspension: Spring #DataSet : 40 N/mm #Category: #FileID : Spring118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:34 #VehCode Spring Alone EXIT_PARSFILE Suspensions\Springs\Spring118.par #BlueLink0 Suspension: Spring`40 N/mm` ` , Left OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 iside 2 #BlueLink4 Suspension: Shock Absorber`Big SUV Damping` ` , Right shock absorber #BlueLink6 Suspension: Jounce and Rebound Stops`+120 mm / -60 mm` Jounce and Rebound Stops` , Right jounce / rebound stops CMP_SPR_SEAT_COEFFICIENT 1.0001 CMP_DAMP_COEFFICIENT 0.995 CT_FX_COEFFICIENT 0 CS_FY_COEFFICIENT 0 CS_MZ_COEFFICIENT 0 CC_FX_COEFFICIENT 0 CI_FY_COEFFICIENT 0 CI_MZ_COEFFICIENT 0 L_SPG_ADJ 0 CMP_JSTOP_COEFFICIENT 1 CMP_RSTOP_COEFFICIENT 1 #BlueLink3 Suspension: Spring`40 N/mm` ` , Right OPT_EXT_SP 0 FS_OFFSET 0 CMP_OFFSET 0 LOG_ENTRY Used Dataset: Suspension: Solid Axle Compliance, Springs, and Dampers; { CS D-Class } D-Class, SUV - Rear Solid Axle Comp. #Library : Suspension: Solid Axle Compliance, Springs, and Dampers #DataSet : D-Class, SUV - Rear Solid Axle Comp. #Category: CS D-Class #FileID : SuspCmpSA105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Solid axle EXIT_PARSFILE Suspensions\Compliance_SA\SuspCmpSA105.par #BlueLink22 Suspension: Solid Axle Compliance, Springs, and Dampers`D-Class, SUV - Rear Solid Axle Comp.` CS D-Class` , Rear compliance ENTER_PARSFILE Suspensions\Kin_Solid\SaKin105.par`08-02-2011`16:42:37 #FullDataName Suspension: Solid Axle System Kinematics`D-Class, SUV - Rear Suspension`CS D-Class OPT_NL_AXLE 1 iside 1 L_TRACK 1565 M_US 100 IA 1.5 *IW_L 0.9 *IW_R 0.9 R_ROLL_STEER 0.1 Y_CL_SUSP 0 *TOE_L 0 *TOE_R 0 *CAMBER_L 0 *CAMBER_R 0 H_CG_AXLE 360 *JNC_DESIGN_L 0 *JNC_DESIGN_R 0 R_US_STR 0 #RingCtrl0 1 OPT_JNC_DESIGN 1 #CheckBox0 1 #CheckBox1 0 ENTER_PARSFILE Suspensions\Dive\Dive105.par`08-02-2011`16:42:36 #FullDataName Suspension: Dive Angle (Caster Change)`Rear Hotchkiss - No Dive`Hotchkiss Rear Axle #RingCtrl0 CONSTANT *SCALAR 0 SUSP_DIVE_CONSTANT 0 #RadioCtrl0 0 SUSP_DIVE_AXLE_CONSTANT 0 LOG_ENTRY Used Dataset: Suspension: Dive Angle (Caster Change); { Hotchkiss Rear Axle } Rear Hotchkiss - No Dive #Library : Suspension: Dive Angle (Caster Change) #DataSet : Rear Hotchkiss - No Dive #Category: Hotchkiss Rear Axle #FileID : Dive105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Dive table ENTRY_NOTEFILE Suspensions\Dive\Dive105_note.txt Generic Hotchkiss Rear Axle Dive angle change vs. Jounce. EXIT_NOTEFILE Suspensions\Dive\Dive105_note.txt EXIT_PARSFILE Suspensions\Dive\Dive105.par #BlueLink0 Suspension: Dive Angle (Caster Change)`Rear Hotchkiss - No Dive` Hotchkiss Rear Axle` , Axle dive ENTER_PARSFILE Suspensions\Longitudinal\SusX105.par`08-02-2011`16:42:35 #FullDataName Suspension: Longitudinal Position`Rear Hotchkiss - Longitudinal Movement`Hotchkiss Rear Axle #RingCtrl0 SPLINE #DiagramOne0 SUSP_X_TABLE SPLINE -150, 5.1612 -135, 2.79277 -120, 0.841255 -105, -0.695023 -90, -1.8184 -75, -2.53133 -60, -2.83607 -45, -2.73441 -30, -2.22759 -15, -1.3162 0, 0 15, 1.72199 30, 3.85147 45, 6.39054 60, 9.34103 75, 12.703 90, 16.4714 105, 20.6284 120, 25.1262 135, 29.8517 150, 34.583 ENDTABLE #RadioCtrl0 0 SUSP_X_AXLE_TABLE SPLINE -150, 5.1612 -135, 2.79277 -120, 0.841255 -105, -0.695023 -90, -1.8184 -75, -2.53133 -60, -2.83607 -45, -2.73441 -30, -2.22759 -15, -1.3162 0, 0 15, 1.72199 30, 3.85147 45, 6.39054 60, 9.34103 75, 12.703 90, 16.4714 105, 20.6284 120, 25.1262 135, 29.8517 150, 34.583 ENDTABLE LOG_ENTRY Used Dataset: Suspension: Longitudinal Position; { Hotchkiss Rear Axle } Rear Hotchkiss - Longitudinal Movement #Library : Suspension: Longitudinal Position #DataSet : Rear Hotchkiss - Longitudinal Movement #Category: Hotchkiss Rear Axle #FileID : SusX105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:35 #VehCode Longitudinal Movement ENTRY_NOTEFILE Suspensions\Longitudinal\SusX105_note.txt Generic Hotchkiss Rear Axle Longitudinal movement vs. Jounce. EXIT_NOTEFILE Suspensions\Longitudinal\SusX105_note.txt EXIT_PARSFILE Suspensions\Longitudinal\SusX105.par #BlueLink1 Suspension: Longitudinal Position`Rear Hotchkiss - Longitudinal Movement` Hotchkiss Rear Axle` , Axle X movement ENTER_PARSFILE Animator\STL\AniSTL204.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Rear Solid Drive Axle`Misc. Parts #MiscYellow3 add_obj Animator\3D_shape_files_CS\misc\solid_axle.obj #ENDMYellow SET_COLOR 0.502 0.502 0.502 SET_OFFSET_X 0 SET_OFFSET_Y -0.007 SET_OFFSET_Z 0 X_REF_LENGTH 1 Y_REF_LENGTH 1700 Z_REF_LENGTH 1 *SPECULAR 0 SMOOTH_MAX_ANGLE 55 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Misc. Parts } Rear Solid Drive Axle #Library : Animator: Shape File Link #DataSet : Rear Solid Drive Axle #Category: Misc. Parts #FileID : AniSTL204 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL204.par #BlueLink2 Animator: Shape File Link`Rear Solid Drive Axle` Misc. Parts` , Animator ENTER_PARSFILE Suspensions\Lateral\SusLat105.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position`Rear Hotchkiss - No Lateral Movement`Hotchkiss Rear Axle #RingCtrl0 CONSTANT SUSP_LAT_CONSTANT 0 SUSP_LAT_AXLE_JOUNCE_CONSTANT 0 #RadioCtrl0 1 *SCALAR 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position; { Hotchkiss Rear Axle } Rear Hotchkiss - No Lateral Movement #Library : Suspension: Lateral Position #DataSet : Rear Hotchkiss - No Lateral Movement #Category: Hotchkiss Rear Axle #FileID : SusLat105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral\SusLat105_note.txt Generic Hotchkiss Rear Axle Lateral Movement vs. Jounce. EXIT_NOTEFILE Suspensions\Lateral\SusLat105_note.txt EXIT_PARSFILE Suspensions\Lateral\SusLat105.par #BlueLink3 Suspension: Lateral Position`Rear Hotchkiss - No Lateral Movement` Hotchkiss Rear Axle` , Axle Y movement - jounce ENTER_PARSFILE Suspensions\Lateral_Roll\SusLatR101.par`08-02-2011`16:42:36 #FullDataName Suspension: Lateral Position with Roll`Rear Hotchkiss - Lat. Movement vs. Roll`Hotchiss Rear Axle #RingCtrl0 SPLINE ! Note: if *TABLE_KEYWORD is not set to "SUSP_Y_AXLE_ROLL" then Y values read from the table will be reversed. *TABLE_KEYWORD SUSP_Y_AXLE_ROLL #DiagramOne0 SUSP_Y_AXLE_ROLL_TABLE SPLINE -10.0528, -16.7928 -8.3636, -14.0137 -6.68194, -11.2296 -5.00627, -8.43574 -3.33505, -5.63126 -1.66679, -2.81808 0, 0 1.66679, 2.81808 3.33505, 5.63126 5.00627, 8.43574 6.68194, 11.2296 8.3636, 14.0137 10.0528, 16.7928 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Suspension: Lateral Position with Roll; { Hotchiss Rear Axle } Rear Hotchkiss - Lat. Movement vs. Roll #Library : Suspension: Lateral Position with Roll #DataSet : Rear Hotchkiss - Lat. Movement vs. Roll #Category: Hotchiss Rear Axle #FileID : SusLatR101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:36 #VehCode Lateral Movement ENTRY_NOTEFILE Suspensions\Lateral_Roll\SusLatR101_note.txt Generic Hotchkiss Rear Axle Lateral Movement vs. Roll EXIT_NOTEFILE Suspensions\Lateral_Roll\SusLatR101_note.txt EXIT_PARSFILE Suspensions\Lateral_Roll\SusLatR101.par #BlueLink4 Suspension: Lateral Position with Roll`Rear Hotchkiss - Lat. Movement vs. Roll` Hotchiss Rear Axle` , Axle Y movement - roll SUSP_AXLE_ROLL_STEER_COEFFICIENT 0.1 Y_LENGTH 1565 IW 0.9 A_TOE 0 A_CAMBER 0 JNC_DESIGN 0 iside 2 IW 0.9 A_TOE 0 A_CAMBER 0 JNC_DESIGN 0 LOG_ENTRY Used Dataset: Suspension: Solid Axle System Kinematics; { CS D-Class } D-Class, SUV - Rear Suspension #Library : Suspension: Solid Axle System Kinematics #DataSet : D-Class, SUV - Rear Suspension #Category: CS D-Class #FileID : SaKin105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:37 #VehCode Solid Axle ENTRY_NOTEFILE Suspensions\Kin_Solid\SaKin105_note.txt Generic Hotchkiss Rear Axle kinematics generated by SuspensionSim. EXIT_NOTEFILE Suspensions\Kin_Solid\SaKin105_note.txt EXIT_PARSFILE Suspensions\Kin_Solid\SaKin105.par #BlueLink23 Suspension: Solid Axle System Kinematics`D-Class, SUV - Rear Suspension` CS D-Class` , Rear kinematics (solid axle) * LR tire iside 1 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> L<> #BlueLink13 Tire`255/75 R16` Touring Tires` , Left-rear tire * RR tire iside 2 WRITE_ADD_REFERENCE_FRAME_WHEEL symbol_push <> R<> #BlueLink14 Tire`255/75 R16` Touring Tires` , Right-rear tire WRITE_ADD_REFERENCE_FRAME_BODY ENTER_PARSFILE Vehicles\Sprung_Mass\SprMass113.par`08-02-2011`16:42:22 #FullDataName Vehicle: Sprung Mass`D-Class, SUV Sprung Mass`CS D-Class #VehCode Rigid Sprung Mass #RingCtrl0 0 X_LENGTH 2600 Y_LENGTH 1500 iaxle 2 iside 1 LX_H 3725 H_H 550 H_CG_SU 650 LX_AXLE 2600 LX_CG_SU 1050 M_SU 1430 IXX_SU 700.7 IYY_SU 2059.2 IZZ_SU 2059.2 IXZ_SU 0 RX_SGUI 0.700 RY_SGUI 1.200 RZ_SGUI 1.200 Y_CG_SU 0 Y_H 0 IXY_SU 0 IYZ_SU 0 Z_LENGTH 1679 Y_LENGTH 1820 *HWC_LF 350 *HWC_RF 350 *HWC_LR 330 *HWC_RR 330 H_WC 330 iside 2 H_WC 330 iaxle 1 iside 1 H_WC 350 iside 2 H_WC 350 iaxle 2 iside 1 LOG_ENTRY Used Dataset: Vehicle: Sprung Mass; { CS D-Class } D-Class, SUV Sprung Mass #Library : Vehicle: Sprung Mass #DataSet : D-Class, SUV Sprung Mass #Category: CS D-Class #FileID : SprMass113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:22 #VehCode Rigid Sprung Mass EXIT_PARSFILE Vehicles\Sprung_Mass\SprMass113.par #BlueLink0 Vehicle: Sprung Mass`D-Class, SUV Sprung Mass` CS D-Class` , Sprung mass ENTER_PARSFILE Aerodynamics\Aero_Main\Aero110.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Basic`D-Class, SUV Aero`CS D-Class #CheckBox0 0 X_REF_AERO -1300 Y_REF_AERO 0 H_REF_AERO 0 L_REF_AERO 2600 AREA_AERO 2.8 D_AIR 1.206 ENTER_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FX_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.45 -160, -0.45 -90, 0 -20, 0.325 0, 0.3 20, 0.325 90, 0 160, -0.45 180, -0.45 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fx (Drag) Coefficient; Drag Coefficient = 0.30 #Library : Aerodynamics: Fx (Drag) Coefficient #DataSet : Drag Coefficient = 0.30 #Category: #FileID : AirCFx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Drag vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt A nominal drag coefficent of 0.3 is typical of contemporary mid-size sedans, such as Honda Accord, Toyota Camry, and Ford Fusion. The drag coefficient typically increases a few percent as the vehicle develops an aerodynamic sidelsip angle, peaking around 20 degrees. Drag reduces as sidelip increases because the component of the airspeed in the vehicle X direction reduces. EXIT_NOTEFILE Aerodynamics\Aero_Fx\AirCFx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fx\AirCFx104.par #BlueLink0 Aerodynamics: Fx (Drag) Coefficient`Drag Coefficient = 0.30` ` , Long. force ENTER_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par`08-02-2011`16:43:56 #FullDataName Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 FY_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.5 0, 0 90, 0.5 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fy (Side Force) Coefficient; Side Force Coefficient = 0.5 at 90 deg #Library : Aerodynamics: Fy (Side Force) Coefficient #DataSet : Side Force Coefficient = 0.5 at 90 deg #Category: #FileID : AirCFy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aero side force vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt The side force coefficient is typically larger then the drag coefficent, because the width of the vehiicle is less than the length, contirbuting to drag in the lateral direction. Also, the calculation of the coefficient is based on the projected frontal area of the car, while the side force is developed against the larger side area. EXIT_NOTEFILE Aerodynamics\Aero_Fy\AirCFy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fy\AirCFy104.par #BlueLink1 Aerodynamics: Fy (Side Force) Coefficient`Side Force Coefficient = 0.5 at 90 deg` ` , Lateral force ENTER_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par`08-03-2011`08:02:01 #FullDataName Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 FZ_AERO_SHAPING_TABLE SPLINE_FLAT -180, 0.4 -135, 0.45 -90, 0.35 -20, 0.185 0, 0.18 20, 0.185 90, 0.35 135, 0.45 180, 0.4 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Fz (Lift) Coefficient; Lift Coefficient = 0.18 #Library : Aerodynamics: Fz (Lift) Coefficient #DataSet : Lift Coefficient = 0.18 #Category: #FileID : AirCFz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:01 #VehCode Lift vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt Nearly all passenger cars develop a small positive lift force at highway speeeds. EXIT_NOTEFILE Aerodynamics\Aero_Fz\AirCFz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Fz\AirCFz104.par #BlueLink2 Aerodynamics: Fz (Lift) Coefficient`Lift Coefficient = 0.18` ` , Vertical force ENTER_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par`08-02-2011`16:43:55 #FullDataName Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MX_AERO_SHAPING_TABLE SPLINE -180, 0 -90, -0.3 0, 0 90, 0.3 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mx (Roll Moment) Coefficient; Roll Moment Coefficient = 0.3 at 90 deg #Library : Aerodynamics: Mx (Roll Moment) Coefficient #DataSet : Roll Moment Coefficient = 0.3 at 90 deg #Category: #FileID : AirCMx104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:55 #VehCode Aero Mx vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mx\AirCMx104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mx\AirCMx104.par #BlueLink3 Aerodynamics: Mx (Roll Moment) Coefficient`Roll Moment Coefficient = 0.3 at 90 deg` ` , Roll moment ENTER_PARSFILE Aerodynamics\Aero_My\AirCMy104.par`08-03-2011`08:02:56 #FullDataName Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` #RingCtrl0 SPLINE_FLAT #RadioCtrl0 0 #DiagramOne0 MY_AERO_SHAPING_TABLE SPLINE_FLAT -180, -0.25 -160, -0.25 -90, 0 -20, 0.17 0, 0.15 20, 0.17 90, 0 160, -0.25 180, -0.25 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: My (Pitch Moment) Coefficient; Pitch Moment Coefficient = -0.15 #Library : Aerodynamics: My (Pitch Moment) Coefficient #DataSet : Pitch Moment Coefficient = -0.15 #Category: #FileID : AirCMy104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:02:56 #VehCode Aero My vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_My\AirCMy104_note.txt EXIT_PARSFILE Aerodynamics\Aero_My\AirCMy104.par #BlueLink4 Aerodynamics: My (Pitch Moment) Coefficient`Pitch Moment Coefficient = -0.15` ` , Pitch moment ENTER_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par`08-03-2011`08:03:05 #FullDataName Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` #RingCtrl0 SPLINE #RadioCtrl0 0 #DiagramOne0 MZ_AERO_SHAPING_TABLE SPLINE -180, 0 -90, 0.05 0, 0 90, -0.05 180, 0 ENDTABLE LOG_ENTRY Used Dataset: Aerodynamics: Mz (Yaw Moment) Coefficient; Yaw Moment Coefficent = 0.05 at 90 deg #Library : Aerodynamics: Mz (Yaw Moment) Coefficient #DataSet : Yaw Moment Coefficent = 0.05 at 90 deg #Category: #FileID : AirCMz104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-03-2011 08:03:05 #VehCode Aero Mz vs aero slip ENTRY_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt The aerodynamic moments relate the location of the aerodynamic center of pressure to the location of the aerodynamic reference point. EXIT_NOTEFILE Aerodynamics\Aero_Mz\AirCMz104_note.txt EXIT_PARSFILE Aerodynamics\Aero_Mz\AirCMz104.par #BlueLink5 Aerodynamics: Mz (Yaw Moment) Coefficient`Yaw Moment Coefficent = 0.05 at 90 deg` ` , Yaw moment LOG_ENTRY Used Dataset: Aerodynamics: Basic; { CS D-Class } D-Class, SUV Aero #Library : Aerodynamics: Basic #DataSet : D-Class, SUV Aero #Category: CS D-Class #FileID : Aero110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:56 #VehCode Aerodynamics ENTRY_NOTEFILE Aerodynamics\Aero_Main\Aero110_note.txt According to SAE convention, the reference point is located at the midpoint of the wheelbase, the midpoint of the track, at ground level., and the reference length is equal to the wheelbase. EXIT_NOTEFILE Aerodynamics\Aero_Main\Aero110_note.txt EXIT_PARSFILE Aerodynamics\Aero_Main\Aero110.par #BlueLink1 Aerodynamics: Basic`D-Class, SUV Aero` CS D-Class` , Aerodynamics ENTER_PARSFILE Animator\Vehicles\AniVeh116.par`08-02-2011`16:43:35 #FullDataName Animator: Vehicles and Sensor Targets`D-Class, SUV`D-Class Vehicles #CheckBox0 1 #CheckBox1 0 #CheckBox2 1 #CheckBox3 0 #CheckBox4 0 OBJ_X_LENGTH 2619 OBJ_Y_LENGTH 1820 OBJ_Z_LENGTH 1679 *DZ_V -40 *LAT_WC 1600 *LAT_WC_2 1600 *HWC 280 *WHEEL_RATIO 1.25 DZ_OBJECT 0 WRITE_ADD_REFERENCE_FRAME_OBJECT TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_OFFSET_X 0 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_ANGLE_X 180 SET_OFFSET_X 0 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_OFFSET_X -2.619 SET_OFFSET_Y 0.8 SET_OFFSET_Z 0.266 TIRE_ANI_PARSFILE Animator\STL\AniSTL114.par SET_SCALE_X 1.25 SET_SCALE_Y 1.25 SET_SCALE_Z 1.25 SET_ANGLE_X 180 SET_OFFSET_X -2.619 SET_OFFSET_Y -0.8 SET_OFFSET_Z 0.266 WRITE_ADD_REFERENCE_FRAME_SHADOW ENTER_PARSFILE Animator\STL\AniSTL104.par`08-02-2011`16:43:50 #FullDataName Animator: Shape File Link`Vehicle Shadow Shape`Vehicle Shadow #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\vehicle_shadows\shadow.obj #ENDMYellow SET_COLOR 0.125 0.125 0.125 X_REF_LENGTH 2690 Y_REF_LENGTH 1900 Z_REF_LENGTH 1220 *TRANSPARENCY 0.8 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 set_transparency 0.8 show_front on show_back off #MiscYellow0 tranclucent_fix on #ENDMYellow #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Vehicle Shadow } Vehicle Shadow Shape #Library : Animator: Shape File Link #DataSet : Vehicle Shadow Shape #Category: Vehicle Shadow #FileID : AniSTL104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:50 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL104.par #BlueLink0 Animator: Shape File Link`Vehicle Shadow Shape` Vehicle Shadow` , Shadow WRITE_REFERENCE_FRAME_SIZE DZ_OBJECT -0.04 WRITE_ADD_REFERENCE_FRAME_OBJECT ENTER_PARSFILE Animator\STL_Groups\StlGroup138.par`08-02-2011`16:43:38 #FullDataName Animator: Shape Assembly`D-Class, SUV`CS D-Class *COLOR .36 .117 .117 *OFFSET_X 0 *OFFSET_Y 0 *OFFSET_Z 0.3 *X_REF_LENGTH 2850 *Y_REF_LENGTH 1900 *Z_REF_LENGTH 1700 *IMAGE_FIT_MODE 3 #CheckBox0 0 #CheckBox2 0 #CheckBox3 0 #CheckBox4 1 #CheckBox5 1 #RingCtrl0 3 #RingCtrl1 2 #RingCtrl2 2 ENTER_PARSFILE Animator\STL\AniSTL170.par`08-02-2011`16:43:43 #FullDataName Animator: Shape File Link`SUV: Body`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\body.obj #ENDMYellow SET_COLOR 0 0 .5 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 1 USE_RUN_COLOR #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Body #Library : Animator: Shape File Link #DataSet : SUV: Body #Category: CS SUV #FileID : AniSTL170 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:43 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL170.par #BlueLink0 Animator: Shape File Link`SUV: Body` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL174.par`08-02-2011`16:43:43 #FullDataName Animator: Shape File Link`SUV: Body Trim (Gray)`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\body_trim.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Body Trim (Gray) #Library : Animator: Shape File Link #DataSet : SUV: Body Trim (Gray) #Category: CS SUV #FileID : AniSTL174 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:43 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL174.par #BlueLink1 Animator: Shape File Link`SUV: Body Trim (Gray)` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL171.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Details`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\details.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 1 1 1 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Details #Library : Animator: Shape File Link #DataSet : SUV: Details #Category: CS SUV #FileID : AniSTL171 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL171.par #BlueLink2 Animator: Shape File Link`SUV: Details` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL172.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Interior`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\interior.obj #ENDMYellow SET_COLOR 0.314 0.314 0.314 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Interior #Library : Animator: Shape File Link #DataSet : SUV: Interior #Category: CS SUV #FileID : AniSTL172 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL172.par #BlueLink3 Animator: Shape File Link`SUV: Interior` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL175.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Seats`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\seats.obj #ENDMYellow SET_COLOR 0.753 0.753 0.753 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Seats #Library : Animator: Shape File Link #DataSet : SUV: Seats #Category: CS SUV #FileID : AniSTL175 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL175.par #BlueLink4 Animator: Shape File Link`SUV: Seats` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL176.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Steering Wheel`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\steering_wheel.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Steering Wheel #Library : Animator: Shape File Link #DataSet : SUV: Steering Wheel #Category: CS SUV #FileID : AniSTL176 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL176.par #BlueLink5 Animator: Shape File Link`SUV: Steering Wheel` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL173.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Windows`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\windows.obj #ENDMYellow SET_COLOR 0.188 0.188 0.188 *SPECULAR 0.9 *TRANSPARENCY 0.85 SMOOTH_MAX_ANGLE 45 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 set_transparency 0.85 show_front on show_back off SET_SPECULAR 0.9 0.9 0.9 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Windows #Library : Animator: Shape File Link #DataSet : SUV: Windows #Category: CS SUV #FileID : AniSTL173 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL173.par #BlueLink6 Animator: Shape File Link`SUV: Windows` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 ENTER_PARSFILE Animator\STL\AniSTL177.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Driver`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\driver\driver.obj #ENDMYellow SET_COLOR 0.878 0.878 0.878 *SPECULAR 0 SMOOTH_MAX_ANGLE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back off SET_SPECULAR 0 0 0 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Driver #Library : Animator: Shape File Link #DataSet : SUV: Driver #Category: CS SUV #FileID : AniSTL177 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL177.par #BlueLink13 Animator: Shape File Link`SUV: Driver` CS SUV` , Shape File set_offset_x 0 set_offset_y 0 set_offset_z 0.3 x_ref_length 2850 y_ref_length 1900 z_ref_length 1700 #BlueLink17 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape Assembly; { CS D-Class } D-Class, SUV #Library : Animator: Shape Assembly #DataSet : D-Class, SUV #Category: CS D-Class #FileID : StlGroup138 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:38 #VehCode Shape Group EXIT_PARSFILE Animator\STL_Groups\StlGroup138.par #BlueLink1 Animator: Shape Assembly`D-Class, SUV` CS D-Class` , Vehicle body ENTER_PARSFILE Animator\Sound\Set\SndSet105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Set`Gasoline Engine Vehicle`General Vehicle Sounds ENTER_PARSFILE Animator\Sound\Sample\SndSmp110.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power Off`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_0.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod124.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_brake_torque -50; ! maximum engine braking torque define_output v_mod2 = if_gt_0_then(m_engout, 0, pow(m_engout/max_brake_torque, 0.5)); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod2 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod2 ANI_v_mod2 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod124 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod124.par #BlueLink0 Animator: Sound Modifier`Power Off Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod125.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Power Off Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 4000 SOUNDMOD_INPUT_HIGH 8000 SOUNDMOD_INPUT_MAX 12000 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power Off Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power Off Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod125 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod125.par #BlueLink1 Animator: Sound Modifier`Power Off Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 ENTER_PARSFILE Animator\Sound\Modifier\SndMod126.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Modifier`Frequency with RPM`Gas Engine Sound Modifiers #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Frequency with RPM #Library : Animator: Sound Modifier #DataSet : Frequency with RPM #Category: Gas Engine Sound Modifiers #FileID : SndMod126 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt This modifier is based on a recording of a 4 cyl engine at 3500 RPM EXIT_NOTEFILE Animator\Sound\Modifier\SndMod126_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod126.par #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power Off #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power Off #Category: Gas Engine Sounds #FileID : SndSmp110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt This sound set uses a sample recorded at closed throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp110_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp110.par #BlueLink0 Animator: Sound Sample`4 Cyl. - Power Off` Gas Engine Sounds` , Sample 1 ENTER_PARSFILE Animator\Sound\Sample\SndSmp111.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`4 Cyl. - Power On`Gas Engine Sounds ADD_3D_SOUND Animator\Audio\Engine\Generic-Engine-02_L4_2.4L_1.0-Load_03-Mid-RPM.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 1.0 SOUND_VOL_MIN 0.9 SOUND_VOL_MAX 10.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.0 SOUND_FREQ_MAX 20.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod127.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Load Effect`Gas Engine Sound Modifiers #MiscYellow0 define_parameter max_torque 265 define_output v_mod1 = if_gt_0_then(m_engout, pow(m_engout/max_torque, 0.5), 0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod1 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 1.0 SOUNDMOD_INPUT_MAX 1.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.0 WRT_v_mod1 ANI_v_mod1 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Load Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Load Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod127 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier ENTRY_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt This modifer is to be applied to power-on conditions, i.e, when the engine torque is positive. EXIT_NOTEFILE Animator\Sound\Modifier\SndMod127_note.txt EXIT_PARSFILE Animator\Sound\Modifier\SndMod127.par #BlueLink0 Animator: Sound Modifier`Power On Loudness: Load Effect` Gas Engine Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod128.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Power On Loudness: Speed Effect`Gas Engine Sound Modifiers #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME av_eng SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 3500.0 SOUNDMOD_INPUT_HIGH 7000.0 SOUNDMOD_INPUT_MAX 70000.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 20.0 WRT_av_eng ANI_av_eng LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Gas Engine Sound Modifiers } Power On Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Power On Loudness: Speed Effect #Category: Gas Engine Sound Modifiers #FileID : SndMod128 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod128.par #BlueLink1 Animator: Sound Modifier`Power On Loudness: Speed Effect` Gas Engine Sound Modifiers` , Playback modification 2 #BlueLink2 Animator: Sound Modifier`Frequency with RPM` Gas Engine Sound Modifiers` , Playback modification 3 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Gas Engine Sounds } 4 Cyl. - Power On #Library : Animator: Sound Sample #DataSet : 4 Cyl. - Power On #Category: Gas Engine Sounds #FileID : SndSmp111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample ENTRY_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt This sound set uses a sample recorded at wide open throttle and 3500 RPM, for a 4 cylinder engine. EXIT_NOTEFILE Animator\Sound\Sample\SndSmp111_note.txt EXIT_PARSFILE Animator\Sound\Sample\SndSmp111.par #BlueLink1 Animator: Sound Sample`4 Cyl. - Power On` Gas Engine Sounds` , Sample 2 ENTER_PARSFILE Animator\Sound\Sample\SndSmp105.par`08-02-2011`16:43:36 #FullDataName Animator: Sound Sample`Wind Noise`Wind Noise ADD_3D_SOUND Animator\Audio\Environment\Wind_1_Mono.WAV #CheckBox0 1 LOOP_SOUND on #RingCtrl0 Default SOUND_AUTO_START Default SOUND_VOL_MULT 0.3 SOUND_VOL_MIN 0.01 SOUND_VOL_MAX 9.0 SOUND_FREQ_MULT 1.0 SOUND_FREQ_MIN 0.01 SOUND_FREQ_MAX 9.0 ENTER_PARSFILE Animator\Sound\Modifier\SndMod122.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Loudness: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_parameter air_speed_ref 50; units = km/h; define_output v_mod3 = pow(vAir/air_speed_ref, 3.0); #ENDMYellow #RingCtrl0 VOLUME ADD_SOUND_MODIFIER VOLUME SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod3 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 1.0 SOUNDMOD_OUTPUT_HIGH 2.0 SOUNDMOD_OUTPUT_MAX 3.0 WRT_v_mod3 ANI_v_mod3 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Loudness: Speed Effect #Library : Animator: Sound Modifier #DataSet : Loudness: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod122.par #BlueLink0 Animator: Sound Modifier`Loudness: Speed Effect` Wind Sound Modifiers` , Playback modification 1 ENTER_PARSFILE Animator\Sound\Modifier\SndMod123.par`08-02-2011`16:43:37 #FullDataName Animator: Sound Modifier`Frequency: Speed Effect`Wind Sound Modifiers #MiscYellow0 define_output v_mod4 = pow(vAir/air_speed_ref, 0.5); #ENDMYellow #RingCtrl0 FREQUENCY ADD_SOUND_MODIFIER FREQUENCY SOUNDMOD_OPERATION mult SOUNDMOD_INPUT_NAME v_mod4 SOUNDMOD_INPUT_MIN 0.0 SOUNDMOD_INPUT_LOW 1.0 SOUNDMOD_INPUT_HIGH 2.0 SOUNDMOD_INPUT_MAX 3.0 SOUNDMOD_OUTPUT_MIN 0.0 SOUNDMOD_OUTPUT_LOW 0.5 SOUNDMOD_OUTPUT_HIGH 1.0 SOUNDMOD_OUTPUT_MAX 1.5 WRT_v_mod4 ANI_v_mod4 LOG_ENTRY Used Dataset: Animator: Sound Modifier; { Wind Sound Modifiers } Frequency: Speed Effect #Library : Animator: Sound Modifier #DataSet : Frequency: Speed Effect #Category: Wind Sound Modifiers #FileID : SndMod123 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:37 #VehCode Sound Modifier EXIT_PARSFILE Animator\Sound\Modifier\SndMod123.par #BlueLink1 Animator: Sound Modifier`Frequency: Speed Effect` Wind Sound Modifiers` , Playback modification 2 LOG_ENTRY Used Dataset: Animator: Sound Sample; { Wind Noise } Wind Noise #Library : Animator: Sound Sample #DataSet : Wind Noise #Category: Wind Noise #FileID : SndSmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Sample EXIT_PARSFILE Animator\Sound\Sample\SndSmp105.par #BlueLink2 Animator: Sound Sample`Wind Noise` Wind Noise` , Sample 3 LOG_ENTRY Used Dataset: Animator: Sound Set; { General Vehicle Sounds } Gasoline Engine Vehicle #Library : Animator: Sound Set #DataSet : Gasoline Engine Vehicle #Category: General Vehicle Sounds #FileID : SndSet105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:36 #VehCode Sound Set ENTRY_NOTEFILE Animator\Sound\Set\SndSet105_note.txt The sound samples are based on a 4 cylinder engine. The frequency can be scaled for a different number of cylinders by setting the ncyls parameter here. EXIT_NOTEFILE Animator\Sound\Set\SndSet105_note.txt EXIT_PARSFILE Animator\Sound\Set\SndSet105.par #BlueLink6 Animator: Sound Set`Gasoline Engine Vehicle` General Vehicle Sounds` , Sound Set WRITE_REFERENCE_FRAME_SIZE WRITE_ADD_REFERENCE_FRAME_BRAKES ENTER_PARSFILE Animator\STL\AniSTL261.par`08-02-2011`16:43:44 #FullDataName Animator: Shape File Link`SUV: Brake Lights (D-Class)`CS SUV #MiscYellow3 add_obj Animator\3D_shape_files_CS\vehicles\suv\brakes_on.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 1 SET_SCALE_Y 1.005 SET_SCALE_Z 1 SET_OFFSET_X -0.01 SET_OFFSET_Y 0 SET_OFFSET_Z 0.3 X_REF_LENGTH 2850 Y_REF_LENGTH 1900 Z_REF_LENGTH 1700 *SPECULAR 1 SMOOTH_MAX_ANGLE 1 *IMAGE_FIT_MODE 1 #RingCtrl0 1 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 0 show_front on show_back off SET_SPECULAR 1 1 1 #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { CS SUV } SUV: Brake Lights (D-Class) #Library : Animator: Shape File Link #DataSet : SUV: Brake Lights (D-Class) #Category: CS SUV #FileID : AniSTL261 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:44 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL261.par #BlueLink3 Animator: Shape File Link`SUV: Brake Lights (D-Class)` CS SUV` , Brake lights WRITE_REFERENCE_FRAME_SIZE ENTER_PARSFILE Animator\Cameras\Camera101.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Vehicle Pictures`Shape Preview #RingCtrl1 0 #CheckBox0 0 #CheckBox1 0 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Shape Preview Yaw for Shape Preview #BlueLink0 Animator: Reference Frame`Yaw for Shape Preview` Shape Preview` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Shape Preview Yaw for Shape Preview SET_LOOKPOINT_X 1 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 0.5 SET_AZIMUTH 230 SET_ELEVATION 6 SET_DISTANCE 12 *SET_LOOKPOINT_X 1 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 0.5 *SET_AZIMUTH 230 *SET_ELEVATION 6 *SET_DISTANCE 12 GHOST_COUNT 0 FOG_SCALE 0 SET_FIELD_OF_VIEW 21.1 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Shape Preview } Vehicle Pictures #Library : Animator: Camera Setup #DataSet : Vehicle Pictures #Category: Shape Preview #FileID : Camera101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera ENTRY_NOTEFILE Animator\Cameras\Camera101_note.txt Pause the animation at the very start and center the vehicle in the animator to take a picture for the Animator: Vehicle screen. EXIT_NOTEFILE Animator\Cameras\Camera101_note.txt EXIT_PARSFILE Animator\Cameras\Camera101.par #BlueLink5 Animator: Camera Setup`Vehicle Pictures` Shape Preview` , Animator camera ENTER_PARSFILE Animator\STL\AniSTL114.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Blurred Tire`Tires #MiscYellow3 add_obj Animator\3D_shape_files_CS\tires\blurred_tire\blurred_tire.obj #ENDMYellow SET_COLOR 1 1 1 *SPECULAR 0.3 SMOOTH_MAX_ANGLE 1 #RingCtrl0 0 #CheckBox0 0 set_lighting on #CheckBox1 0 set_fogging on #CheckBox2 1 mtl_ns_old on #CheckBox3 0 #CheckBox4 1 show_front on show_back on SET_SPECULAR 0.3 0.3 0.3 vsv_enable_shadows_recursive #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Tires } Blurred Tire #Library : Animator: Shape File Link #DataSet : Blurred Tire #Category: Tires #FileID : AniSTL114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL114.par #BlueLink2 Animator: Shape File Link`Blurred Tire` Tires` , Tire for traffic vehicle LOG_ENTRY Used Dataset: Animator: Vehicles and Sensor Targets; { D-Class Vehicles } D-Class, SUV #Library : Animator: Vehicles and Sensor Targets #DataSet : D-Class, SUV #Category: D-Class Vehicles #FileID : AniVeh116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:35 #VehCode Vehicle Shape ENTRY_NOTEFILE Animator\Vehicles\AniVeh116_note.txt The Animator: Vehicles and Other Moving Objects screen is used to define animation shapes to be used with the animator. EXIT_NOTEFILE Animator\Vehicles\AniVeh116_note.txt EXIT_PARSFILE Animator\Vehicles\AniVeh116.par #BlueLink2 Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` , Vehicle animator data ENTER_PARSFILE Powertrain\4wd\4WD106.par`08-02-2011`16:42:55 #FullDataName Powertrain: 4-Wheel Drive`150 kW, 6-spd., 4.1 Ratio` OPT_PT 3 OPT_ENGINE_PITCH_REACTION(1) 0 OPT_ENGINE_PITCH_REACTION(2) 0 #RingCtrl0 1 R_MDRIVE 1 #RingCtrl1 1 OPT_ENGINE_INTERNAL 1 #RingCtrl2 1 #RingCtrl3 2 #RingCtrl4 1 OPT_DIFF_INTERNAL(3) 1 #RingCtrl5 1 #RingCtrl6 1 DRIVELINE_FREQ 9 DRIVELINE_ZETA 0.9 #CheckBox0 0 #CheckBox1 0 OPT_PWR_CPL_INTERNAL 1 OPT_TRANS_INTERNAL 1 OPT_DIFF_INTERNAL(1) 1 OPT_DIFF_INTERNAL(2) 1 ENTER_PARSFILE Powertrain\Engine\Engine110.par`08-02-2011`16:42:54 #FullDataName Powertrain: Engine`150 kW Engine`CS Engine Torque Curves #RingCtrl0 CARPET #RadioCtrl0 0 AV_ENG_IDLE 750 IENG 0.2 #CheckBox0 0 OPT_THROTTLE_DELAY 0 ENTER_PARSFILE Powertrain\Fuel_Rate\FuelRate102.par`08-02-2011`16:42:52 #FullDataName Powertrain: Fuel Consumption Rate`150 kW Fuel Consumption` #RingCtrl0 CARPET #RadioCtrl0 0 *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Fuel rate (kg/sec) #DiagramTwo0 *3D_DATA 26, 19 ! columns x rows FUEL_RATE_CARPET 0, 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28, 0.32, 0.36, 0.4, 0.44, 0.48, 0.52, 0.56, 0.6, 0.64, 0.68, 0.72, 0.76, 0.8, 0.84, 0.88, 0.92, 0.96, 1 600, 8e-05, 0.0002, 0.0003, 0.00032, 0.00034, 0.00037, 0.00039, 0.00041, 0.00043, 0.00046, 0.00048, 0.0005, 0.00052, 0.00055, 0.00057, 0.00059, 0.00061, 0.00064, 0.00066, 0.00068, 0.0007, 0.00073, 0.00075, 0.00077, 0.00079, 0.00082 800, 0.00013, 0.0002, 0.0004, 0.00059, 0.00071, 0.0008, 0.00083, 0.00085, 0.00086, 0.00087, 0.00088, 0.00089, 0.0009, 0.00091, 0.00092, 0.00093, 0.00094, 0.00096, 0.00097, 0.00098, 0.00099, 0.001, 0.00101, 0.00102, 0.00103, 0.00104 1000, 0.00016, 0.0002, 0.00039, 0.00062, 0.00079, 0.00091, 0.00099, 0.00104, 0.00107, 0.00108, 0.00109, 0.00111, 0.00112, 0.00113, 0.00114, 0.00115, 0.00117, 0.00118, 0.00119, 0.0012, 0.00121, 0.00123, 0.00124, 0.00125, 0.00126, 0.00127 1200, 0.00016, 0.00021, 0.00039, 0.00064, 0.00088, 0.00104, 0.00114, 0.00123, 0.00128, 0.00131, 0.00133, 0.00134, 0.00135, 0.00137, 0.00138, 0.0014, 0.00141, 0.00142, 0.00144, 0.00145, 0.00147, 0.00148, 0.00149, 0.00151, 0.00152, 0.00154 1400, 0.00017, 0.00023, 0.00039, 0.00066, 0.00091, 0.00113, 0.0013, 0.0014, 0.00148, 0.00153, 0.00156, 0.00158, 0.0016, 0.00161, 0.00163, 0.00165, 0.00167, 0.00168, 0.0017, 0.00172, 0.00174, 0.00175, 0.00177, 0.00179, 0.00181, 0.00182 1600, 0.0002, 0.00026, 0.0004, 0.00066, 0.00095, 0.00119, 0.00139, 0.00154, 0.00164, 0.00173, 0.00178, 0.00181, 0.00183, 0.00184, 0.00186, 0.00188, 0.0019, 0.00192, 0.00194, 0.00195, 0.00197, 0.00199, 0.00201, 0.00203, 0.00205, 0.00207 1800, 0.00021, 0.00028, 0.00039, 0.00067, 0.00095, 0.00124, 0.00147, 0.00166, 0.00178, 0.00189, 0.00195, 0.002, 0.00203, 0.00206, 0.00209, 0.00212, 0.00215, 0.00218, 0.00222, 0.00225, 0.00228, 0.00231, 0.00234, 0.00237, 0.0024, 0.00243 2000, 0.00023, 0.0003, 0.00038, 0.00065, 0.00096, 0.00129, 0.00156, 0.00178, 0.00195, 0.00207, 0.00215, 0.00221, 0.00227, 0.00231, 0.00234, 0.00238, 0.00241, 0.00245, 0.00249, 0.00252, 0.00256, 0.00259, 0.00263, 0.00267, 0.0027, 0.00274 2200, 0.00025, 0.00033, 0.00041, 0.00065, 0.00098, 0.0013, 0.00162, 0.00189, 0.00212, 0.00226, 0.00239, 0.00246, 0.00252, 0.00257, 0.00261, 0.00264, 0.00268, 0.00272, 0.00275, 0.00279, 0.00282, 0.00286, 0.0029, 0.00293, 0.00297, 0.003 2400, 0.00027, 0.00036, 0.00044, 0.00065, 0.00095, 0.00133, 0.00168, 0.00199, 0.00223, 0.0024, 0.00255, 0.00265, 0.00272, 0.00278, 0.00284, 0.0029, 0.00296, 0.00302, 0.00308, 0.00314, 0.00319, 0.00325, 0.00331, 0.00337, 0.00343, 0.00349 2800, 0.00033, 0.00039, 0.00046, 0.00065, 0.00097, 0.00134, 0.00174, 0.00207, 0.00239, 0.00265, 0.0028, 0.00296, 0.00307, 0.00313, 0.0032, 0.00326, 0.00331, 0.00336, 0.00342, 0.00347, 0.00352, 0.00357, 0.00363, 0.00368, 0.00373, 0.00379 3200, 0.00038, 0.00045, 0.00053, 0.00064, 0.00097, 0.00136, 0.00175, 0.00216, 0.00256, 0.00287, 0.0031, 0.00326, 0.00343, 0.00365, 0.00388, 0.0041, 0.00424, 0.00425, 0.00427, 0.00429, 0.0043, 0.00432, 0.00434, 0.00435, 0.00437, 0.00439 3600, 0.00043, 0.00052, 0.00061, 0.0007, 0.00095, 0.00137, 0.00179, 0.00221, 0.00272, 0.00315, 0.00347, 0.00384, 0.00423, 0.00463, 0.00487, 0.00495, 0.00502, 0.00509, 0.00513, 0.00514, 0.00516, 0.00517, 0.00519, 0.0052, 0.00521, 0.00523 4000, 0.00047, 0.00059, 0.00083, 0.00118, 0.00162, 0.0021, 0.00259, 0.00317, 0.00367, 0.00403, 0.00436, 0.00487, 0.00537, 0.00587, 0.00603, 0.00608, 0.00614, 0.0062, 0.00624, 0.00625, 0.00626, 0.00627, 0.00629, 0.0063, 0.00631, 0.00633 4400, 0.00051, 0.00064, 0.00085, 0.00122, 0.00165, 0.00218, 0.0027, 0.00333, 0.00392, 0.00443, 0.00477, 0.00514, 0.00568, 0.00621, 0.00675, 0.00703, 0.00709, 0.00715, 0.00721, 0.00726, 0.00731, 0.00732, 0.00733, 0.00735, 0.00736, 0.00738 4800, 0.00052, 0.00074, 0.00095, 0.00121, 0.00167, 0.00218, 0.00272, 0.00336, 0.00404, 0.00459, 0.00538, 0.0064, 0.00701, 0.00725, 0.0075, 0.00774, 0.00793, 0.00799, 0.00805, 0.00811, 0.00817, 0.00822, 0.00828, 0.00829, 0.0083, 0.00831 5200, 0.00059, 0.00078, 0.00098, 0.00117, 0.00164, 0.00216, 0.00272, 0.0034, 0.0041, 0.00505, 0.00633, 0.0069, 0.00747, 0.00779, 0.00807, 0.00835, 0.00863, 0.0088, 0.00886, 0.00891, 0.00897, 0.00903, 0.00909, 0.00914, 0.0092, 0.00926 5600, 0.00065, 0.00083, 0.001, 0.00119, 0.0016, 0.00212, 0.00273, 0.00356, 0.00462, 0.00551, 0.00638, 0.00704, 0.00762, 0.00803, 0.0083, 0.00857, 0.00885, 0.00912, 0.00925, 0.00931, 0.00937, 0.00943, 0.00949, 0.00955, 0.00961, 0.00967 5800, 0.00076, 0.0009, 0.00103, 0.00119, 0.00162, 0.00211, 0.00271, 0.00357, 0.0046, 0.00548, 0.00642, 0.00712, 0.00772, 0.00816, 0.00841, 0.00867, 0.00892, 0.00918, 0.0093, 0.00935, 0.0094, 0.00945, 0.00951, 0.00956, 0.00961, 0.00966 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Fuel Consumption Rate; 150 kW Fuel Consumption #Library : Powertrain: Fuel Consumption Rate #DataSet : 150 kW Fuel Consumption #Category: #FileID : FuelRate102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:52 #VehCode Fuel rate EXIT_PARSFILE Powertrain\Fuel_Rate\FuelRate102.par #BlueLink0 Powertrain: Fuel Consumption Rate`150 kW Fuel Consumption` ` , Fuel rate *3D_XLabel Throttle (-) *3D_YLabel Engine speed (rpm) *3D_ZLabel Engine torque (N-m) #DiagramTwo0 *3D_DATA 10, 22 ! columns x rows MENGINE_CARPET 0, 0, 0.1, 0.15, 0.2, 0.35, 0.5, 0.7, 0.85, 0.95, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 517, 24.75, 76.11, 101.37, 103.43, 104.6, 105.18, 105.38, 105.43, 105.46, 105.43 633, 29.7, 92.87, 139.66, 149.15, 150.67, 151.28, 151.5, 151.52, 151.52, 151.52 750, 0, 87.39, 148.02, 161.35, 164.95, 166.25, 166.73, 166.77, 166.77, 166.75 1107, -9.9, 70.62, 173.59, 198.66, 208.61, 212.02, 213.29, 213.4, 213.37, 213.29 1463, -14.85, 47.12, 167.31, 207.9, 221.15, 227.15, 230.09, 230.77, 231.22, 235.62 1820, -16.83, 25.74, 148.5, 211.6, 233.68, 242.29, 246.89, 248.14, 249.06, 255.42 2177, -20.17, 9.9, 117.65, 203.67, 237.6, 257.4, 260.37, 263.34, 266.31, 272.88 2533, -25.32, -6.41, 81.3, 182.08, 239.58, 267, 274.23, 279.24, 282.15, 287.1 2890, -30.14, -15.16, 56.41, 153.5, 233.12, 269.9, 285.22, 289.08, 295.02, 299.97 3247, -34.39, -22.06, 37.66, 122.49, 223.45, 267.3, 287.1, 295.02, 300.96, 306.9 3603, -38.57, -28.1, 23.48, 96.53, 201.04, 259.38, 288.09, 297, 303.93, 309.87 3960, -42.77, -33.71, 11.8, 76.42, 174.35, 248.62, 285.12, 296.01, 302.94, 306.9 4317, -47.21, -39.38, 0.28, 57.45, 150.24, 237.3, 280.17, 290.07, 297, 302.88 4673, -51.83, -45.01, -9.97, 41.19, 125.06, 220.31, 272.25, 282.15, 292.05, 297 5030, -56.74, -50.57, -19.08, 26.99, 102.65, 198.96, 262.35, 272.25, 282.15, 287.1 5387, -61.67, -56.24, -27.53, 14.45, 83.52, 176.58, 246.84, 256.41, 269.64, 272.49 5743, -67.19, -62.17, -35.72, 2.82, 66.2, 153.28, 221.41, 236.52, 243.61, 246.41 6100, -73.21, -68.41, -43.88, -8.16, 50.38, 130.66, 193.86, 207.92, 214.52, 217.05 6500, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19, -80.19 6700, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18, -81.18 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Engine; { CS Engine Torque Curves } 150 kW Engine #Library : Powertrain: Engine #DataSet : 150 kW Engine #Category: CS Engine Torque Curves #FileID : Engine110 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode 2D Table EXIT_PARSFILE Powertrain\Engine\Engine110.par #BlueLink0 Powertrain: Engine`150 kW Engine` CS Engine Torque Curves` , Engine ENTER_PARSFILE Powertrain\TConv\TC103.par`08-02-2011`16:42:53 #FullDataName Powertrain: Torque Converter`Torque Converter for 150 kW Engine`CS Torque Converters #RingCtrl0 SPLINE_FLAT #RingCtrl1 SPLINE_FLAT #RadioCtrl0 0 #RadioCtrl1 0 ITC_INPUT_SHAFT 0.015 ITC_OUTPUT_SHAFT 0.015 #DiagramOne0 INV_CAP_TC_TABLE SPLINE_FLAT 0, 0.00704273 0.1, 0.00704273 0.2, 0.00704273 0.3, 0.00704269 0.4, 0.00704199 0.5, 0.00703585 0.6, 0.00700014 0.7, 0.00684379 0.8, 0.00628652 0.9, 0.00458708 0.95, 0.00282599 0.99, 0.000673411 1.01, -0.000673411 1.05, -0.00282599 1.1, -0.00458708 1.2, -0.00628652 1.3, -0.00684379 1.4, -0.00700014 1.5, -0.00703585 1.6, -0.00704199 1.7, -0.00704269 1.8, -0.00704273 1.9, -0.00704273 2, -0.00704273 ENDTABLE #DiagramOne1 RM_TC_TABLE SPLINE_FLAT 0, 1.864 0.102, 1.78 0.202, 1.701 0.306, 1.608 0.353, 1.56 0.4, 1.519 0.452, 1.464 0.502, 1.412 0.551, 1.356 0.6, 1.309 0.65, 1.259 0.7, 1.203 0.75, 1.151 0.801, 1.098 0.82, 1.074 0.84, 1.048 0.849, 1.041 0.861, 1.027 0.87, 1.014 0.881, 0.996 0.89, 0.996 0.9, 0.993 0.91, 0.998 0.921, 0.986 0.928, 0.993 0.94, 0.996 0.951, 0.981 0.99, 1 1, 1 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Torque Converter; { CS Torque Converters } Torque Converter for 150 kW Engine #Library : Powertrain: Torque Converter #DataSet : Torque Converter for 150 kW Engine #Category: CS Torque Converters #FileID : TC103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Torque converter EXIT_PARSFILE Powertrain\TConv\TC103.par #BlueLink1 Powertrain: Torque Converter`Torque Converter for 150 kW Engine` CS Torque Converters` , Torque Conv. ENTER_PARSFILE Powertrain\TransExt\Trans101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` #RingCtrl0 6 NGEARS 6 #RingCtrl1 1 OPT_SHIFT_INTERNAL 1 #RingCtrl2 1 OPT_TR_GEAR_INTERNAL 1 #CheckBox0 0 R_GEAR_TR_REVERSE -3.168 R_GEAR_TR(1) 3.538 R_GEAR_TR(2) 2.06 R_GEAR_TR(3) 1.404 R_GEAR_TR(4) 1.00 R_GEAR_TR(5) 0.713 R_GEAR_TR(6) 0.582 ITR_REVERSE 0.034 ITR_NEUTRAL 0.034 ITR(1) 0.037 ITR(2) 0.034 ITR(3) 0.042 ITR(4) 0.04 ITR(5) 0.04 ITR(6) 0.04 R_EFF_TR_F_REVERSE 0.9 R_EFF_TR_F(1) 0.92 R_EFF_TR_F(2) 0.92 R_EFF_TR_F(3) 0.95 R_EFF_TR_F(4) 0.95 R_EFF_TR_F(5) 0.98 R_EFF_TR_F(6) 0.99 R_EFF_TR_R_REVERSE 0.9 R_EFF_TR_R(1) 0.92 R_EFF_TR_R(2) 0.92 R_EFF_TR_R(3) 0.95 R_EFF_TR_R(4) 0.95 R_EFF_TR_R(5) 0.98 R_EFF_TR_R(6) 0.99 T_SHIFT 0.25 igear 1 ENTER_PARSFILE Powertrain\Shift\Shift101.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 1-2 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 874 0.2, 874 0.8, 1653 1, 1653 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 699 0.4, 699 0.8, 1240 1, 1240 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 1-2 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 1-2 Shift #Category: 6-speed #FileID : Shift101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift101.par #BlueLink0 Powertrain: Shift Schedule`6-speed, 1-2 Shift` 6-speed` , Shift schedule igear 2 ENTER_PARSFILE Powertrain\Shift\Shift102.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 2-3 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1282 0.2, 1282 0.8, 2840 1, 2840 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1026 0.4, 1026 0.8, 2130 1, 2130 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 2-3 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 2-3 Shift #Category: 6-speed #FileID : Shift102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift102.par #BlueLink1 Powertrain: Shift Schedule`6-speed, 2-3 Shift` 6-speed` , Shift schedule igear 3 ENTER_PARSFILE Powertrain\Shift\Shift103.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 3-4 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 1800 0.2, 1800 0.8, 4167 1, 4167 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 1440 0.4, 1440 0.8, 3125 1, 3125 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 3-4 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 3-4 Shift #Category: 6-speed #FileID : Shift103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift103.par #BlueLink2 Powertrain: Shift Schedule`6-speed, 3-4 Shift` 6-speed` , Shift schedule igear 4 ENTER_PARSFILE Powertrain\Shift\Shift104.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 4-5 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 2525 0.2, 2525 0.8, 5850 1, 5850 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2020 0.4, 2020 0.8, 4388 1, 4388 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 4-5 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 4-5 Shift #Category: 6-speed #FileID : Shift104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift104.par #BlueLink3 Powertrain: Shift Schedule`6-speed, 4-5 Shift` 6-speed` , Shift schedule igear 5 ENTER_PARSFILE Powertrain\Shift\Shift105.par`08-02-2011`16:42:51 #FullDataName Powertrain: Shift Schedule`6-speed, 5-6 Shift`6-speed #RadioCtrl0 0 #RadioCtrl1 0 #DiagramOne0 UPSHIFT_TRANS_table 0, 3093 0.2, 3093 0.8, 8205 1, 8205 ENDTABLE #DiagramOne1 DOWNSHIFT_TRANS_table 0, 2474 0.4, 2474 0.8, 6154 1, 6154 ENDTABLE LOG_ENTRY Used Dataset: Powertrain: Shift Schedule; { 6-speed } 6-speed, 5-6 Shift #Library : Powertrain: Shift Schedule #DataSet : 6-speed, 5-6 Shift #Category: 6-speed #FileID : Shift105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:51 #VehCode Shift schedule EXIT_PARSFILE Powertrain\Shift\Shift105.par #BlueLink4 Powertrain: Shift Schedule`6-speed, 5-6 Shift` 6-speed` , Shift schedule igear 6 LOG_ENTRY Used Dataset: Powertrain: Transmission (18 Gears or CVT); 6-Speed Transmission #Library : Powertrain: Transmission (18 Gears or CVT) #DataSet : 6-Speed Transmission #Category: #FileID : Trans101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transmission EXIT_PARSFILE Powertrain\TransExt\Trans101.par #BlueLink10 Powertrain: Transmission (18 Gears or CVT)`6-Speed Transmission` ` , Transmission (Extended) IDIFF 3 ENTER_PARSFILE Powertrain\Centerdiff\XC101.par`08-02-2011`16:42:53 #FullDataName Powertrain: Transfer Case`Full Time Viscous 50/50` #CheckBox0 0 LOCKED_XC_OPT 0 #RingCtrl0 SPLINE OPT_LOCKED_DIFF 0 #DiagramOne0 M_DIFF_VISC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE #RadioCtrl0 0 M_DIFF_XC_TABLE SPLINE -1200, 402.88 -1080, 382.21 -960, 360.35 -840, 337.07 -720, 312.07 -600, 284.88 -540, 270.26 -480, 254.8 -420, 238.35 -360, 220.67 -300, 201.44 -240, 180.17 -180, 156.03 -120, 127.4 -60, 90.09 0, 0 60, -90.09 120, -127.4 180, -156.03 240, -180.17 300, -201.44 360, -220.67 420, -238.35 480, -254.8 540, -270.26 600, -284.88 720, -312.07 840, -337.07 960, -360.35 1080, -382.21 1200, -402.88 ENDTABLE R_GEAR_XC 1.00 R_EFF_F_XC 0.99 R_EFF_R_XC 0.99 R_REAR_XC 0.5 LOCKED_XC_DAMP 0.8 LOCKED_XC_K 80 R_GEAR_DIFF 1.00 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 R_REAR_BIAS 0.5 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 LOG_ENTRY Used Dataset: Powertrain: Transfer Case; Full Time Viscous 50/50 #Library : Powertrain: Transfer Case #DataSet : Full Time Viscous 50/50 #Category: #FileID : XC101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:53 #VehCode Transfer case EXIT_PARSFILE Powertrain\Centerdiff\XC101.par #BlueLink3 Powertrain: Transfer Case`Full Time Viscous 50/50` ` , Transfer case IDIFF 1 ENTER_PARSFILE Powertrain\Frontdiff\F_Diff103.par`08-02-2011`16:42:54 #FullDataName Powertrain: Front Differential`Open - Gear Ratio 4.1`CS Front Differentials #CheckBox0 0 LOCKED_FD_OPT 0 #RingCtrl0 CONSTANT OPT_LOCKED_DIFF 0 M_DIFF_VISC_CONSTANT 0 #RadioCtrl0 0 M_DIFF_FD_CONSTANT 0 R_GEAR_FD 4.1 R_EFF_F_FD 0.99 R_EFF_R_FD 0.99 LOCKED_FD_DAMP 0.8 LOCKED_FD_K 80 IDS_F 0.013 IHS_LF 0.009 IHS_RF 0.009 *SCALAR 0 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Front Differential; { CS Front Differentials } Open - Gear Ratio 4.1 #Library : Powertrain: Front Differential #DataSet : Open - Gear Ratio 4.1 #Category: CS Front Differentials #FileID : F_Diff103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Front differential EXIT_PARSFILE Powertrain\Frontdiff\F_Diff103.par #BlueLink4 Powertrain: Front Differential`Open - Gear Ratio 4.1` CS Front Differentials` , Differential front IDIFF 2 ENTER_PARSFILE Powertrain\Reardiff\R_Diff103.par`08-02-2011`16:42:54 #FullDataName Powertrain: Rear Differential`Open - Gear Ratio 4.1`CS Rear Differentials #CheckBox0 0 LOCKED_RD_OPT 0 #RingCtrl0 CONSTANT OPT_LOCKED_DIFF 0 M_DIFF_VISC_CONSTANT 0 #RadioCtrl0 0 M_DIFF_RD_CONSTANT 0 R_GEAR_RD 4.1 R_EFF_F_RD 0.99 R_EFF_R_RD 0.99 LOCKED_RD_DAMP 0.8 LOCKED_RD_K 80 IDS_R 0.013 IHS_LR 0.009 IHS_RR 0.009 *SCALAR 0 R_GEAR_DIFF 4.1 R_EFF_F_DIFF 0.99 R_EFF_R_DIFF 0.99 LOCKED_DIFF_DAMP 0.8 LOCKED_DIFF_K 80 IDS 0.013 IHS_L 0.009 IHS_R 0.009 LOG_ENTRY Used Dataset: Powertrain: Rear Differential; { CS Rear Differentials } Open - Gear Ratio 4.1 #Library : Powertrain: Rear Differential #DataSet : Open - Gear Ratio 4.1 #Category: CS Rear Differentials #FileID : R_Diff103 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:54 #VehCode Rear differential EXIT_PARSFILE Powertrain\Reardiff\R_Diff103.par #BlueLink5 Powertrain: Rear Differential`Open - Gear Ratio 4.1` CS Rear Differentials` , Differential rear LOG_ENTRY Used Dataset: Powertrain: 4-Wheel Drive; 150 kW, 6-spd., 4.1 Ratio #Library : Powertrain: 4-Wheel Drive #DataSet : 150 kW, 6-spd., 4.1 Ratio #Category: #FileID : 4WD106 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:55 #VehCode 4WD ENTRY_NOTEFILE Powertrain\4wd\4WD106_note.txt Generic 150 kW powertrain with an automatic transmission. The torque converter data has been tuned to work with the 150 kW engine to give reasonable performance. EXIT_NOTEFILE Powertrain\4wd\4WD106_note.txt EXIT_PARSFILE Powertrain\4wd\4WD106.par #BlueLink5 Powertrain: 4-Wheel Drive`150 kW, 6-spd., 4.1 Ratio` ` , All-wheel drive ENTER_PARSFILE Brakes\4W_System\Brk4W113.par`08-02-2011`16:43:34 #FullDataName Brakes: Four-Wheel System`D-Class, SUV w/o ABS`CS D-Class TC_L1 0.06 TC_R1 0.06 TC_L2 0.06 TC_R2 0.06 TL_L1 0 TL_R1 0 TL_L2 0 TL_R2 0 #RingCtrl0 0 #RingCtrl1 0 iaxle 1 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq101.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`300 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 300 MY_BRAKE_COEFFICIENT 300 LOG_ENTRY Used Dataset: Brakes: Torque; 300 N-m/MPa #Library : Brakes: Torque #DataSet : 300 N-m/MPa #Category: #FileID : BrkTrq101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq101.par #BlueLink0 Brakes: Torque`300 N-m/MPa` ` , Left front ENTER_PARSFILE Brakes\Proportioning\BrkProp101.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity Gain` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 1 PBK_DL_COEFFICIENT 1 LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity Gain #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity Gain #Category: #FileID : BrkProp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve EXIT_PARSFILE Brakes\Proportioning\BrkProp101.par #BlueLink4 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Left front TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 0 iside 2 #BlueLink1 Brakes: Torque`300 N-m/MPa` ` , Right front #BlueLink5 Brakes: Proportioning / Limiting Valve`Unity Gain` ` , Right front TC_BK 0.06 TLAG_BK 0 iaxle 2 iside 1 ENTER_PARSFILE Brakes\Torque\BrkTrq104.par`08-02-2011`16:43:33 #FullDataName Brakes: Torque`150 N-m/MPa` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 150 MY_BRAKE_COEFFICIENT 150 LOG_ENTRY Used Dataset: Brakes: Torque; 150 N-m/MPa #Library : Brakes: Torque #DataSet : 150 N-m/MPa #Category: #FileID : BrkTrq104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Brake torque EXIT_PARSFILE Brakes\Torque\BrkTrq104.par #BlueLink2 Brakes: Torque`150 N-m/MPa` ` , Left rear ENTER_PARSFILE Brakes\Proportioning\BrkProp104.par`08-02-2011`16:43:33 #FullDataName Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` #RingCtrl0 LINEAR #RadioCtrl0 0 #DiagramOne0 PBK_DL_TABLE LINEAR 0, 0 2, 2 3, 2.3 ENDTABLE LOG_ENTRY Used Dataset: Brakes: Proportioning / Limiting Valve; Unity until 2.0MPa then 30% #Library : Brakes: Proportioning / Limiting Valve #DataSet : Unity until 2.0MPa then 30% #Category: #FileID : BrkProp104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:33 #VehCode Prop. / limit. valve ENTRY_NOTEFILE Brakes\Proportioning\BrkProp104_note.txt Brake systems without ABS control typically have a propotioning valve that reduces pressure gains on the rear wheel when a moderate pressure is reached, to avoid locking the rear wheels with high braking and associated load transfer. They are also used on some trucks with large ranges in load. EXIT_NOTEFILE Brakes\Proportioning\BrkProp104_note.txt EXIT_PARSFILE Brakes\Proportioning\BrkProp104.par #BlueLink6 Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` ` , Left rear TC_BK 0.06 TLAG_BK 0 OPT_ABS_CTRL 0 iside 2 #BlueLink3 Brakes: Torque`150 N-m/MPa` ` , Right rear #BlueLink7 Brakes: Proportioning / Limiting Valve`Unity until 2.0MPa then 30%` ` , Right rear TC_BK 0.06 TLAG_BK 0 LOG_ENTRY Used Dataset: Brakes: Four-Wheel System; { CS D-Class } D-Class, SUV w/o ABS #Library : Brakes: Four-Wheel System #DataSet : D-Class, SUV w/o ABS #Category: CS D-Class #FileID : Brk4W113 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:34 #VehCode 4-wheel system EXIT_PARSFILE Brakes\4W_System\Brk4W113.par #BlueLink6 Brakes: Four-Wheel System`D-Class, SUV w/o ABS` CS D-Class` , Brake system ENTER_PARSFILE Steering\System2\StrSys2111.par`08-02-2011`16:42:43 #FullDataName Steering`D-Class, SUV: Power, Recirc. Ball`CS D-Class *I_COL 0.02 *I_GEAR_IN 0.00015 *D_COL 0.01 *HYS_COL 0.1 *BETA_COL 0.5 *L1_LKPO 77.0 *L2_LKPO 0 *R1_LKPO 77.0 *R2_LKPO 0 *L1_AKPI 12.5 *L2_AKPI 0 *R1_AKPI 12.5 *R2_AKPI 0 *L1_ACAST 9.5 *L2_ACAST 0 *R1_ACAST 9.5 *R2_ACAST 0 *L1_XKPO 5.0 *L2_XKPO 0 *R1_XKPO 5.0 *R2_XKPO 0 *RSW_F 20 *D_GR_F 4 *D_RACK_F 30 *K_TBAR 2 #RingCtrl0 1 #RingCtrl1 2 #RingCtrl2 0 #RingCtrl3 0 #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 1 I_COL 0.02 I_GEAR_IN 0.00015 D_COL 0.01 HYS_COL 0.1 BETA_COL 0.5 OPT_STEER_DEF 1 OPT_M_SW_CALC 1 iside 1 iaxle 1 L_KPO 77.0 A_KPI 12.5 A_CASTER 9.5 X_KPO 5.0 iside 2 L_KPO 77.0 A_KPI 12.5 A_CASTER 9.5 X_KPO 5.0 iaxle 2 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iside 1 L_KPO 0 A_KPI 0 A_CASTER 0 X_KPO 0 iaxle 2 OPT_RACK 0 GEAR_ROT_COEFFICIENT 0.02 ENTER_PARSFILE Steering\Compliance\StrCmp101.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`No Steer Compliance` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR 0 STEER_COMP_CONSTANT 0 LOG_ENTRY Used Dataset: Steering System: Compliance; No Steer Compliance #Library : Steering System: Compliance #DataSet : No Steer Compliance #Category: #FileID : StrCmp101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp101.par #BlueLink14 Steering System: Compliance`No Steer Compliance` ` , Rear compliance iaxle 1 OPT_POWER 1 OPT_RACK 0 GEAR_ROT_COEFFICIENT 1/20 D_GEAR 4 TBAR 2 ENTER_PARSFILE Steering\Kinematics2\StrKinAx102.par`08-02-2011`16:42:41 #FullDataName Steering System: Kinematics for 2 Wheels (Recirc. Ball)`D-Class, SUV Recirc. Ball Kinematics`D-Class #RingCtrl0 SPLINE #RingCtrl1 SPLINE iside 2 #DiagramOne0 STEER_KIN_TABLE SPLINE -30.6, -35.73321668 -30.294, -35.33074603 -29.988, -34.92888705 -29.682, -34.52765493 -29.376, -34.12706463 -29.07, -33.72713088 -28.764, -33.32786819 -28.458, -32.92929081 -28.152, -32.5314128 -27.846, -32.13424794 -27.54, -31.73780979 -27.234, -31.34211166 -26.928, -30.9471666 -26.622, -30.55298743 -26.316, -30.1595867 -26.01, -29.76697671 -25.704, -29.37516952 -25.398, -28.98417692 -25.092, -28.59401042 -24.786, -28.2046813 -24.48, -27.81620057 -24.174, -27.42857896 -23.868, -27.04182696 -23.562, -26.65595478 -23.256, -26.27097236 -22.95, -25.88688939 -22.644, -25.50371529 -22.338, -25.1214592 -22.032, -24.74013 -21.726, -24.35973631 -21.42, -23.98028649 -21.114, -23.60178863 -20.808, -23.22425053 -20.502, -22.84767977 -20.196, -22.47208363 -19.89, -22.09746916 -19.584, -21.72384311 -19.278, -21.35121202 -18.972, -20.97958212 -18.666, -20.60895943 -18.36, -20.23934968 -18.054, -19.87075836 -17.748, -19.50319072 -17.442, -19.13665174 -17.136, -18.77114616 -16.83, -18.40667849 -16.524, -18.04325296 -16.218, -17.6808736 -15.912, -17.31954418 -15.606, -16.95926823 -15.3, -16.60004905 -14.994, -16.24188972 -14.688, -15.88479308 -14.382, -15.52876174 -14.076, -15.17379809 -13.77, -14.81990432 -13.464, -14.46708236 -13.158, -14.11533397 -12.852, -13.76466066 -12.546, -13.41506376 -12.24, -13.06654437 -11.934, -12.7191034 -11.628, -12.37274156 -11.322, -12.02745937 -11.016, -11.68325713 -10.71, -11.34013497 -10.404, -10.99809284 -10.098, -10.65713047 -9.792, -10.31724746 -9.486, -9.97844318 -9.18, -9.640716858 -8.874, -9.304067538 -8.568, -8.968494097 -8.262, -8.633995246 -7.956, -8.300569533 -7.65, -7.968215349 -7.344, -7.636930926 -7.038, -7.306714344 -6.732, -6.977563533 -6.426, -6.649476276 -6.12, -6.322450212 -5.814, -5.996482841 -5.508, -5.671571523 -5.202, -5.347713486 -4.896, -5.024905823 -4.59, -4.703145503 -4.284, -4.382429366 -3.978, -4.062754131 -3.672, -3.744116397 -3.366, -3.426512647 -3.06, -3.109939249 -2.754, -2.794392461 -2.448, -2.479868432 -2.142, -2.166363208 -1.836, -1.853872728 -1.53, -1.542392837 -1.224, -1.231919277 -0.918, -0.9224477 -0.612, -0.613973663 -0.306, -0.306492635 2.20934e-14, 0 0.306, 0.305508946 0.612, 0.610038985 0.918, 0.913594981 1.224, 1.216181874 1.53, 1.517804678 1.836, 1.818468479 2.142, 2.118178435 2.448, 2.416939769 2.754, 2.714757771 3.06, 3.011637794 3.366, 3.307585251 3.672, 3.602605617 3.978, 3.89670442 4.284, 4.189887245 4.59, 4.482159732 4.896, 4.773527567 5.202, 5.06399649 5.508, 5.353572286 5.814, 5.642260785 6.12, 5.930067861 6.426, 6.216999431 6.732, 6.503061451 7.038, 6.788259915 7.344, 7.072600856 7.65, 7.356090338 7.956, 7.638734464 8.262, 7.920539366 8.568, 8.201511205 8.874, 8.481656175 9.18, 8.760980495 9.486, 9.039490412 9.792, 9.317192196 10.098, 9.594092142 10.404, 9.870196567 10.71, 10.14551181 11.016, 10.42004423 11.322, 10.69380019 11.628, 10.96678611 11.934, 11.23900837 12.24, 11.51047342 12.546, 11.78118769 12.852, 12.05115763 13.158, 12.32038971 13.464, 12.5888904 13.77, 12.8566662 14.076, 13.12372358 14.382, 13.39006906 14.688, 13.65570916 14.994, 13.92065038 15.3, 14.18489925 15.606, 14.44846229 15.912, 14.71134605 16.218, 14.97355705 16.524, 15.23510184 16.83, 15.49598695 17.136, 15.75621894 17.442, 16.01580433 17.748, 16.27474968 18.054, 16.53306152 18.36, 16.7907464 18.666, 17.04781086 18.972, 17.30426143 19.278, 17.56010466 19.584, 17.81534707 19.89, 18.06999519 20.196, 18.32405554 20.502, 18.57753465 20.808, 18.83043902 21.114, 19.08277518 21.42, 19.33454961 21.726, 19.58576883 22.032, 19.83643931 22.338, 20.08656755 22.644, 20.33616003 22.95, 20.5852232 23.256, 20.83376354 23.562, 21.08178749 23.868, 21.32930151 24.174, 21.57631204 24.48, 21.82282549 24.786, 22.06884829 25.092, 22.31438686 25.398, 22.55944759 25.704, 22.80403687 26.01, 23.0481611 26.316, 23.29182664 26.622, 23.53503986 26.928, 23.7778071 27.234, 24.02013472 27.54, 24.26202905 27.846, 24.50349641 28.152, 24.74454311 28.458, 24.98517546 28.764, 25.22539975 29.07, 25.46522226 29.376, 25.70464927 29.682, 25.94368703 29.988, 26.18234179 30.294, 26.4206198 30.6, 26.65852728 ENDTABLE iside 1 #DiagramOne1 STEER_KIN_TABLE SPLINE -30.6, -26.65852728 -30.294, -26.4206198 -29.988, -26.18234179 -29.682, -25.94368703 -29.376, -25.70464927 -29.07, -25.46522226 -28.764, -25.22539975 -28.458, -24.98517546 -28.152, -24.74454311 -27.846, -24.50349641 -27.54, -24.26202905 -27.234, -24.02013472 -26.928, -23.7778071 -26.622, -23.53503986 -26.316, -23.29182664 -26.01, -23.0481611 -25.704, -22.80403687 -25.398, -22.55944759 -25.092, -22.31438686 -24.786, -22.06884829 -24.48, -21.82282549 -24.174, -21.57631204 -23.868, -21.32930151 -23.562, -21.08178749 -23.256, -20.83376354 -22.95, -20.5852232 -22.644, -20.33616003 -22.338, -20.08656755 -22.032, -19.83643931 -21.726, -19.58576883 -21.42, -19.33454961 -21.114, -19.08277518 -20.808, -18.83043902 -20.502, -18.57753465 -20.196, -18.32405554 -19.89, -18.06999519 -19.584, -17.81534707 -19.278, -17.56010466 -18.972, -17.30426143 -18.666, -17.04781086 -18.36, -16.7907464 -18.054, -16.53306152 -17.748, -16.27474968 -17.442, -16.01580433 -17.136, -15.75621894 -16.83, -15.49598695 -16.524, -15.23510184 -16.218, -14.97355705 -15.912, -14.71134605 -15.606, -14.44846229 -15.3, -14.18489925 -14.994, -13.92065038 -14.688, -13.65570916 -14.382, -13.39006906 -14.076, -13.12372358 -13.77, -12.8566662 -13.464, -12.5888904 -13.158, -12.32038971 -12.852, -12.05115763 -12.546, -11.78118769 -12.24, -11.51047342 -11.934, -11.23900837 -11.628, -10.96678611 -11.322, -10.69380019 -11.016, -10.42004423 -10.71, -10.14551181 -10.404, -9.870196567 -10.098, -9.594092142 -9.792, -9.317192196 -9.486, -9.039490412 -9.18, -8.760980495 -8.874, -8.481656175 -8.568, -8.201511205 -8.262, -7.920539366 -7.956, -7.638734464 -7.65, -7.356090338 -7.344, -7.072600856 -7.038, -6.788259915 -6.732, -6.503061451 -6.426, -6.216999431 -6.12, -5.930067861 -5.814, -5.642260785 -5.508, -5.353572286 -5.202, -5.06399649 -4.896, -4.773527567 -4.59, -4.482159732 -4.284, -4.189887245 -3.978, -3.89670442 -3.672, -3.602605617 -3.366, -3.307585251 -3.06, -3.011637794 -2.754, -2.714757771 -2.448, -2.416939769 -2.142, -2.118178435 -1.836, -1.818468479 -1.53, -1.517804678 -1.224, -1.216181874 -0.918, -0.913594981 -0.612, -0.610038985 -0.306, -0.305508946 2.20934e-14, 0 0.306, 0.306492635 0.612, 0.613973663 0.918, 0.9224477 1.224, 1.231919277 1.53, 1.542392837 1.836, 1.853872728 2.142, 2.166363208 2.448, 2.479868432 2.754, 2.794392461 3.06, 3.109939249 3.366, 3.426512647 3.672, 3.744116397 3.978, 4.062754131 4.284, 4.382429366 4.59, 4.703145503 4.896, 5.024905823 5.202, 5.347713486 5.508, 5.671571523 5.814, 5.996482841 6.12, 6.322450212 6.426, 6.649476276 6.732, 6.977563533 7.038, 7.306714344 7.344, 7.636930926 7.65, 7.968215349 7.956, 8.300569533 8.262, 8.633995246 8.568, 8.968494097 8.874, 9.304067538 9.18, 9.640716858 9.486, 9.97844318 9.792, 10.31724746 10.098, 10.65713047 10.404, 10.99809284 10.71, 11.34013497 11.016, 11.68325713 11.322, 12.02745937 11.628, 12.37274156 11.934, 12.7191034 12.24, 13.06654437 12.546, 13.41506376 12.852, 13.76466066 13.158, 14.11533397 13.464, 14.46708236 13.77, 14.81990432 14.076, 15.17379809 14.382, 15.52876174 14.688, 15.88479308 14.994, 16.24188972 15.3, 16.60004905 15.606, 16.95926823 15.912, 17.31954418 16.218, 17.6808736 16.524, 18.04325296 16.83, 18.40667849 17.136, 18.77114616 17.442, 19.13665174 17.748, 19.50319072 18.054, 19.87075836 18.36, 20.23934968 18.666, 20.60895943 18.972, 20.97958212 19.278, 21.35121202 19.584, 21.72384311 19.89, 22.09746916 20.196, 22.47208363 20.502, 22.84767977 20.808, 23.22425053 21.114, 23.60178863 21.42, 23.98028649 21.726, 24.35973631 22.032, 24.74013 22.338, 25.1214592 22.644, 25.50371529 22.95, 25.88688939 23.256, 26.27097236 23.562, 26.65595478 23.868, 27.04182696 24.174, 27.42857896 24.48, 27.81620057 24.786, 28.2046813 25.092, 28.59401042 25.398, 28.98417692 25.704, 29.37516952 26.01, 29.76697671 26.316, 30.1595867 26.622, 30.55298743 26.928, 30.9471666 27.234, 31.34211166 27.54, 31.73780979 27.846, 32.13424794 28.152, 32.5314128 28.458, 32.92929081 28.764, 33.32786819 29.07, 33.72713088 29.376, 34.12706463 29.682, 34.52765493 29.988, 34.92888705 30.294, 35.33074603 30.6, 35.73321668 ENDTABLE #RadioCtrl0 1 #RadioCtrl1 1 LOG_ENTRY Used Dataset: Steering System: Kinematics for 2 Wheels (Recirc. Ball); { D-Class } D-Class, SUV Recirc. Ball Kinematics #Library : Steering System: Kinematics for 2 Wheels (Recirc. Ball) #DataSet : D-Class, SUV Recirc. Ball Kinematics #Category: D-Class #FileID : StrKinAx102 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:41 #VehCode Steer kinematics ENTRY_NOTEFILE Steering\Kinematics2\StrKinAx102_note.txt D-Class SUV Recirculating Ball Kinematics data screen with 11 rows per wheel and Function Type: Spline interpolation and extrapolation. EXIT_NOTEFILE Steering\Kinematics2\StrKinAx102_note.txt EXIT_PARSFILE Steering\Kinematics2\StrKinAx102.par #BlueLink8 Steering System: Kinematics for 2 Wheels (Recirc. Ball)`D-Class, SUV Recirc. Ball Kinematics` D-Class` , Pitman arm to front wheels ENTER_PARSFILE Steering\Str_TqBoost\TqBoost101.par`08-02-2011`16:42:40 #FullDataName Steering: Power Assist Torque`200 N-m` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 TC_BOOST 2 *SCALAR 200 M_BOOST_G_COEFFICIENT 200 LOG_ENTRY Used Dataset: Steering: Power Assist Torque; 200 N-m #Library : Steering: Power Assist Torque #DataSet : 200 N-m #Category: #FileID : TqBoost101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Power assist torque EXIT_PARSFILE Steering\Str_TqBoost\TqBoost101.par #BlueLink17 Steering: Power Assist Torque`200 N-m` ` , Front boost torque ENTER_PARSFILE Steering\Compliance\StrCmp105.par`08-02-2011`16:42:43 #FullDataName Steering System: Compliance`0.002 deg/N-m` #RingCtrl0 COEFFICIENT #RadioCtrl0 0 *SCALAR 0.002 STEER_COMP_COEFFICIENT 0.002 LOG_ENTRY Used Dataset: Steering System: Compliance; 0.002 deg/N-m #Library : Steering System: Compliance #DataSet : 0.002 deg/N-m #Category: #FileID : StrCmp105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode Steering compliance EXIT_PARSFILE Steering\Compliance\StrCmp105.par #BlueLink13 Steering System: Compliance`0.002 deg/N-m` ` , Front compliance ENTER_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par`08-02-2011`16:42:40 #FullDataName Steering: Parking Torque for 2 Wheels`Zero` #RingCtrl0 CONSTANT #RingCtrl1 CONSTANT #RadioCtrl0 0 #RadioCtrl1 0 *A_MZ_BETA_R 0.1 *A_MZ_BETA_L 0.1 *SCALAR 0 *SCALAR2 0 iside 2 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 iside 1 A_MZ_BETA 0.1 MZ_PARKING_STEER_CONSTANT 0 LOG_ENTRY Used Dataset: Steering: Parking Torque for 2 Wheels; Zero #Library : Steering: Parking Torque for 2 Wheels #DataSet : Zero #Category: #FileID : TqPkAx101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:40 #VehCode Parking Torque EXIT_PARSFILE Steering\Str_Park_Trq2\TqPkAx101.par #BlueLink15 Steering: Parking Torque for 2 Wheels`Zero` ` , Front wheels LOG_ENTRY Used Dataset: Steering; { CS D-Class } D-Class, SUV: Power, Recirc. Ball #Library : Steering #DataSet : D-Class, SUV: Power, Recirc. Ball #Category: CS D-Class #FileID : StrSys2111 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:43 #VehCode 4-wheel steer ENTRY_NOTEFILE Steering\System2\StrSys2111_note.txt Steering for a vehicle with Wheelbase = 2600 mm Front Track = 1565 mm EXIT_NOTEFILE Steering\System2\StrSys2111_note.txt EXIT_PARSFILE Steering\System2\StrSys2111.par #BlueLink7 Steering`D-Class, SUV: Power, Recirc. Ball` CS D-Class` , Steering system *IMAGE_LINK Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` LOG_ENTRY Used Dataset: Vehicle: Assembly; { CS D-Class } D-Class, SUV LEO-defined #Library : Vehicle: Assembly #DataSet : D-Class, SUV LEO-defined #Category: CS D-Class #FileID : Vehicle165 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-23-2019 18:41:30 #VehCode Ind_SA EXIT_PARSFILE Vehicles\Assembly\Vehicle165.par #BlueLink2 Vehicle: Assembly`D-Class, SUV LEO-defined` CS D-Class` , Vehicle configuration ENTER_PARSFILE Procedures\Proc162.par`08-24-2019`03:04:50 #FullDataName Procedures`SinSteeer_CorneringStiffness_Hat`BOOK_MPC_Procedures #CheckBox0 1 OPT_INIT_CONFIG 1 #CheckBox1 1 OPT_INIT_ROAD 1 #CheckBox2 1 OPT_INIT_SPEED 1 #CheckBox3 1 #RingCtrl0 1 #RingCtrl1 0 OPT_SSTOP 0 #RingCtrl2 0 *SPEED 65 TSTOP 40 TSTART 0 SSTART 0 SGUI_SSTOP 2235 TSTART_WRITE = TSTART; #RingCtrl2 0 SSTOP 1 OPT_DIRECTION 1 Opt_SC 3 SPEED_STATION_CONSTANT 65 ENTER_PARSFILE Control\Steer\Steer114.par`08-02-2011`16:43:30 #FullDataName Control: Steering (Open Loop)`Sine Wave for Test`Sine Wave OPT_DRIVER_MODEL 0 OPT_STEER 0 #RingCtrl0 SPLINE_FLAT #DiagramOne0 STEER_SW_TABLE SPLINE_FLAT 0, 0 0.1, 14.0791 0.2, 27.8116 0.3, 40.8592 0.4, 52.9008 0.5, 63.6397 0.6, 72.8116 0.7, 80.1907 0.8, 85.5952 0.9, 88.892 1, 90 1.1, 88.8919 1.2, 85.595 1.3, 80.1904 1.4, 72.8113 1.5, 63.6393 1.6, 52.9002 1.7, 40.8586 1.8, 27.811 1.9, 14.0785 2, -0.000661 2.1, -14.0798 2.2, -27.8122 2.3, -40.8598 2.4, -52.9013 2.5, -63.6402 2.6, -72.812 2.7, -80.191 2.8, -85.5954 2.9, -88.8921 3, -90 3.1, -88.8918 3.2, -85.5948 3.3, -80.1901 3.4, -72.8109 3.5, -63.6388 3.6, -52.8997 3.7, -40.8581 3.8, -27.8103 3.9, -14.0778 4, 0.001322 4.1, 14.0804 4.2, 27.8129 4.3, 40.8604 4.4, 52.9018 4.5, 63.6407 4.6, 72.8124 4.7, 80.1913 4.8, 85.5956 4.9, 88.8922 5, 90 5.1, 88.8917 5.2, 85.5946 5.3, 80.1898 5.4, 72.8105 5.5, 63.6383 5.6, 52.8992 5.7, 40.8575 5.8, 27.8097 5.9, 14.0772 6, -0.001984 6.1, -14.0811 6.2, -27.8135 6.3, -40.861 6.4, -52.9024 6.5, -63.6411 6.6, -72.8128 6.7, -80.1916 6.8, -85.5958 6.9, -88.8923 7, -90 7.1, -88.8916 7.2, -85.5944 7.3, -80.1895 7.4, -72.8101 7.5, -63.6379 7.6, -52.8986 7.7, -40.8569 7.8, -27.8091 7.9, -14.0765 8, 0.002645 8.1, 14.0817 8.2, 27.8141 8.3, 40.8616 8.4, 52.9029 8.5, 63.6416 8.6, 72.8132 8.7, 80.1919 8.8, 85.596 8.9, 88.8924 9, 90 9.1, 88.8915 9.2, 85.5941 9.3, 80.1892 9.4, 72.8097 9.5, 63.6374 9.6, 52.8981 9.7, 40.8563 9.8, 27.8084 9.9, 14.0759 10, -0.003306 10.1, -14.0824 10.2, -27.8147 10.3, -40.8622 10.4, -52.9035 10.5, -63.6421 10.6, -72.8136 10.7, -80.1922 10.8, -85.5962 10.9, -88.8925 11, -90 11.1, -88.8914 11.2, -85.5939 11.3, -80.1889 11.4, -72.8093 11.5, -63.6369 11.6, -52.8976 11.7, -40.8557 11.8, -27.8078 11.9, -14.0752 12, 0.003967 12.1, 14.0831 12.2, 27.8154 12.3, 40.8628 12.4, 52.904 12.5, 63.6425 12.6, 72.814 12.7, 80.1925 12.8, 85.5964 12.9, 88.8926 13, 90 13.1, 88.8913 13.2, 85.5937 13.3, 80.1886 13.4, 72.8089 13.5, 63.6365 13.6, 52.897 13.7, 40.8551 13.8, 27.8072 13.9, 14.0746 14, -0.004628 14.1, -14.0837 14.2, -27.816 14.3, -40.8634 14.4, -52.9045 14.5, -63.643 14.6, -72.8144 14.7, -80.1928 14.8, -85.5966 14.9, -88.8927 15, -90 15.1, -88.8912 15.2, -85.5935 15.3, -80.1883 15.4, -72.8085 15.5, -63.636 15.6, -52.8965 15.7, -40.8545 15.8, -27.8066 15.9, -14.0739 16, 0.005289 16.1, 14.0844 16.2, 27.8166 16.3, 40.8639 16.4, 52.9051 16.5, 63.6435 16.6, 72.8148 16.7, 80.1931 16.8, 85.5968 16.9, 88.8928 17, 90 17.1, 88.8911 17.2, 85.5933 17.3, 80.188 17.4, 72.8081 17.5, 63.6355 17.6, 52.896 17.7, 40.8539 17.8, 27.8059 17.9, 14.0733 18, -0.005951 18.1, -14.085 18.2, -27.8173 18.3, -40.8645 18.4, -52.9056 18.5, -63.6439 18.6, -72.8151 18.7, -80.1934 18.8, -85.597 18.9, -88.8929 19, -90 19.1, -88.891 19.2, -85.5931 19.3, -80.1877 19.4, -72.8078 19.5, -63.6351 19.6, -52.8954 19.7, -40.8533 19.8, -27.8053 19.9, -14.0726 20, 0.006612 20.1, 14.0857 20.2, 27.8179 20.3, 40.8651 20.4, 52.9061 20.5, 63.6444 20.6, 72.8155 20.7, 80.1937 20.8, 85.5972 20.9, 88.893 21, 90 21.1, 88.8909 21.2, 85.5929 21.3, 80.1874 21.4, 72.8074 21.5, 63.6346 21.6, 52.8949 21.7, 40.8528 21.8, 27.8047 21.9, 14.072 22, -0.007273 22.1, -14.0863 22.2, -27.8185 22.3, -40.8657 22.4, -52.9067 22.5, -63.6449 22.6, -72.8159 22.7, -80.194 22.8, -85.5974 22.9, -88.8931 23, -90 23.1, -88.8908 23.2, -85.5927 23.3, -80.1871 23.4, -72.807 23.5, -63.6341 23.6, -52.8944 23.7, -40.8522 23.8, -27.804 23.9, -14.0713 24, 0.007934 24.1, 14.087 24.2, 27.8191 24.3, 40.8663 24.4, 52.9072 24.5, 63.6453 24.6, 72.8163 24.7, 80.1943 24.8, 85.5976 24.9, 88.8932 25, 90 25.1, 88.8907 25.2, 85.5925 25.3, 80.1868 25.4, 72.8066 25.5, 63.6336 25.6, 52.8938 25.7, 40.8516 25.8, 27.8034 25.9, 14.0706 26, -0.008595 26.1, -14.0876 26.2, -27.8198 26.3, -40.8669 26.4, -52.9077 26.5, -63.6458 26.6, -72.8167 26.7, -80.1946 26.8, -85.5978 26.9, -88.8933 27, -90 27.1, -88.8905 27.2, -85.5923 27.3, -80.1865 27.4, -72.8062 27.5, -63.6332 27.6, -52.8933 27.7, -40.851 27.8, -27.8028 27.9, -14.07 28, 0.009256 28.1, 14.0883 28.2, 27.8204 28.3, 40.8675 28.4, 52.9083 28.5, 63.6463 28.6, 72.8171 28.7, 80.1949 28.8, 85.598 28.9, 88.8934 29, 90 29.1, 88.8904 29.2, 85.5921 29.3, 80.1862 29.4, 72.8058 29.5, 63.6327 29.6, 52.8928 29.7, 40.8504 29.8, 27.8022 29.9, 14.0693 30, -0.009918 30.1, -14.0889 30.2, -27.821 30.3, -40.8681 30.4, -52.9088 30.5, -63.6467 30.6, -72.8175 30.7, -80.1952 30.8, -85.5982 30.9, -88.8935 31, -90 31.1, -88.8903 31.2, -85.5919 31.3, -80.1859 31.4, -72.8054 31.5, -63.6322 31.6, -52.8922 31.7, -40.8498 31.8, -27.8015 31.9, -14.0687 32, 0.010579 32.1, 14.0896 32.2, 27.8217 32.3, 40.8687 32.4, 52.9093 32.5, 63.6472 32.6, 72.8179 32.7, 80.1955 32.8, 85.5984 32.9, 88.8937 33, 90 33.1, 88.8902 33.2, 85.5917 33.3, 80.1856 33.4, 72.805 33.5, 63.6318 33.6, 52.8917 33.7, 40.8492 33.8, 27.8009 33.9, 14.068 34, -0.01124 34.1, -14.0902 34.2, -27.8223 34.3, -40.8692 34.4, -52.9099 34.5, -63.6477 34.6, -72.8183 34.7, -80.1958 34.8, -85.5986 34.9, -88.8938 35, -90 35.1, -88.8901 35.2, -85.5915 35.3, -80.1853 35.4, -72.8047 35.5, -63.6313 35.6, -52.8912 35.7, -40.8486 35.8, -27.8003 35.9, -14.0674 36, 0.011901 36.1, 14.0909 36.2, 27.8229 36.3, 40.8698 36.4, 52.9104 36.5, 63.6481 36.6, 72.8186 36.7, 80.1961 36.8, 85.5988 36.9, 88.8939 37, 90 37.1, 88.89 37.2, 85.5913 37.3, 80.185 37.4, 72.8043 37.5, 63.6308 37.6, 52.8906 37.7, 40.848 37.8, 27.7996 37.9, 14.0667 38, -0.012562 38.1, -14.0915 38.2, -27.8235 38.3, -40.8704 38.4, -52.9109 38.5, -63.6486 38.6, -72.819 38.7, -80.1964 38.8, -85.599 38.9, -88.894 39, -90 39.1, -88.8899 39.2, -85.5911 39.3, -80.1847 39.4, -72.8039 39.5, -63.6304 39.6, -52.8901 39.7, -40.8475 39.8, -27.799 39.9, -14.0661 40, 0.013224 40.1, 14.0922 40.2, 27.8242 40.3, 40.871 40.4, 52.9115 40.5, 63.6491 40.6, 72.8194 40.7, 80.1967 40.8, 85.5993 40.9, 88.8941 41, 90 41.1, 88.8898 41.2, 85.5909 41.3, 80.1844 41.4, 72.8035 41.5, 63.6299 41.6, 52.8895 41.7, 40.8469 41.8, 27.7984 41.9, 14.0654 42, -0.013885 42.1, -14.0928 42.2, -27.8248 42.3, -40.8716 42.4, -52.912 42.5, -63.6495 42.6, -72.8198 42.7, -80.197 42.8, -85.5995 42.9, -88.8942 43, -90 43.1, -88.8897 43.2, -85.5907 43.3, -80.1841 43.4, -72.8031 43.5, -63.6294 43.6, -52.889 43.7, -40.8463 43.8, -27.7978 43.9, -14.0648 44, 0.014546 44.1, 14.0935 44.2, 27.8254 44.3, 40.8722 44.4, 52.9125 44.5, 63.65 44.6, 72.8202 44.7, 80.1973 44.8, 85.5997 44.9, 88.8943 45, 90 45.1, 88.8896 45.2, 85.5905 45.3, 80.1838 45.4, 72.8027 45.5, 63.629 45.6, 52.8885 45.7, 40.8457 45.8, 27.7971 45.9, 14.0641 46, -0.015207 46.1, -14.0942 46.2, -27.8261 46.3, -40.8728 46.4, -52.9131 46.5, -63.6505 46.6, -72.8206 46.7, -80.1976 46.8, -85.5999 46.9, -88.8944 47, -90 47.1, -88.8895 47.2, -85.5903 47.3, -80.1835 47.4, -72.8023 47.5, -63.6285 47.6, -52.8879 47.7, -40.8451 47.8, -27.7965 47.9, -14.0635 48, 0.015868 48.1, 14.0948 48.2, 27.8267 48.3, 40.8734 48.4, 52.9136 48.5, 63.6509 48.6, 72.821 48.7, 80.1979 48.8, 85.6001 48.9, 88.8945 49, 90 49.1, 88.8894 49.2, 85.5901 49.3, 80.1832 49.4, 72.8019 49.5, 63.628 49.6, 52.8874 49.7, 40.8445 49.8, 27.7959 49.9, 14.0628 50, -0.016529 50.1, -14.0955 50.2, -27.8273 50.3, -40.874 50.4, -52.9142 50.5, -63.6514 50.6, -72.8214 50.7, -80.1982 50.8, -85.6003 50.9, -88.8946 51, -90 51.1, -88.8893 51.2, -85.5899 51.3, -80.1829 51.4, -72.8015 51.5, -63.6276 51.6, -52.8869 51.7, -40.8439 51.8, -27.7952 51.9, -14.0622 52, 0.017191 52.1, 14.0961 52.2, 27.8279 52.3, 40.8746 52.4, 52.9147 52.5, 63.6519 52.6, 72.8217 52.7, 80.1985 52.8, 85.6005 52.9, 88.8947 53, 90 53.1, 88.8892 53.2, 85.5897 53.3, 80.1826 53.4, 72.8012 53.5, 63.6271 53.6, 52.8863 53.7, 40.8433 53.8, 27.7946 53.9, 14.0615 54, -0.017852 54.1, -14.0968 54.2, -27.8286 54.3, -40.8751 54.4, -52.9152 54.5, -63.6523 54.6, -72.8221 54.7, -80.1988 54.8, -85.6007 54.9, -88.8948 55, -90 55.1, -88.8891 55.2, -85.5894 55.3, -80.1823 55.4, -72.8008 55.5, -63.6266 55.6, -52.8858 55.7, -40.8427 55.8, -27.794 55.9, -14.0608 56, 0.018513 56.1, 14.0974 56.2, 27.8292 56.3, 40.8757 56.4, 52.9158 56.5, 63.6528 56.6, 72.8225 56.7, 80.1991 56.8, 85.6009 56.9, 88.8949 57, 90 57.1, 88.889 57.2, 85.5892 57.3, 80.182 57.4, 72.8004 57.5, 63.6262 57.6, 52.8853 57.7, 40.8421 57.8, 27.7934 57.9, 14.0602 58, -0.019174 58.1, -14.0981 58.2, -27.8298 58.3, -40.8763 58.4, -52.9163 58.5, -63.6533 58.6, -72.8229 58.7, -80.1994 58.8, -85.6011 58.9, -88.895 59, -90 59.1, -88.8889 59.2, -85.589 59.3, -80.1817 59.4, -72.8 59.5, -63.6257 59.6, -52.8847 59.7, -40.8416 59.8, -27.7927 59.9, -14.0595 60, 0.019835 60.1, 14.0987 60.2, 27.8305 60.3, 40.8769 60.4, 52.9168 60.5, 63.6538 60.6, 72.8233 60.7, 80.1997 60.8, 85.6013 60.9, 88.8951 61, 90 61.1, 88.8888 61.2, 85.5888 61.3, 80.1814 61.4, 72.7996 61.5, 63.6252 61.6, 52.8842 61.7, 40.841 61.8, 27.7921 61.9, 14.0589 62, -0.020496 62.1, -14.0994 62.2, -27.8311 62.3, -40.8775 62.4, -52.9174 62.5, -63.6542 62.6, -72.8237 62.7, -80.2 62.8, -85.6015 62.9, -88.8952 63, -90 63.1, -88.8887 63.2, -85.5886 63.3, -80.1811 63.4, -72.7992 63.5, -63.6248 63.6, -52.8837 63.7, -40.8404 63.8, -27.7915 63.9, -14.0582 64, 0.021158 64.1, 14.1 64.2, 27.8317 64.3, 40.8781 64.4, 52.9179 64.5, 63.6547 64.6, 72.8241 64.7, 80.2003 64.8, 85.6017 64.9, 88.8953 65, 90 65.1, 88.8886 65.2, 85.5884 65.3, 80.1808 65.4, 72.7988 65.5, 63.6243 65.6, 52.8831 65.7, 40.8398 65.8, 27.7908 65.9, 14.0576 66, -0.021819 66.1, -14.1007 66.2, -27.8323 66.3, -40.8787 66.4, -52.9184 66.5, -63.6552 66.6, -72.8245 66.7, -80.2006 66.8, -85.6019 66.9, -88.8954 67, -90 67.1, -88.8885 67.2, -85.5882 67.3, -80.1805 67.4, -72.7984 67.5, -63.6238 67.6, -52.8826 67.7, -40.8392 67.8, -27.7902 67.9, -14.0569 68, 0.02248 68.1, 14.1013 68.2, 27.833 68.3, 40.8793 68.4, 52.919 68.5, 63.6556 68.6, 72.8249 68.7, 80.2009 68.8, 85.6021 68.9, 88.8955 69, 90 69.1, 88.8884 69.2, 85.588 69.3, 80.1802 69.4, 72.798 69.5, 63.6234 69.6, 52.8821 69.7, 40.8386 69.8, 27.7896 69.9, 14.0563 70, -0.023141 70.1, -14.102 70.2, -27.8336 70.3, -40.8799 70.4, -52.9195 70.5, -63.6561 70.6, -72.8252 70.7, -80.2012 70.8, -85.6023 70.9, -88.8956 71, -90 71.1, -88.8883 71.2, -85.5878 71.3, -80.1799 71.4, -72.7977 71.5, -63.6229 71.6, -52.8815 71.7, -40.838 71.8, -27.789 71.9, -14.0556 72, 0.023802 72.1, 14.1026 72.2, 27.8342 72.3, 40.8804 72.4, 52.92 72.5, 63.6566 72.6, 72.8256 72.7, 80.2015 72.8, 85.6025 72.9, 88.8957 73, 90 73.1, 88.8882 73.2, 85.5876 73.3, 80.1796 73.4, 72.7973 73.5, 63.6224 73.6, 52.881 73.7, 40.8374 73.8, 27.7883 73.9, 14.055 74, -0.024464 74.1, -14.1033 74.2, -27.8349 74.3, -40.881 74.4, -52.9206 74.5, -63.657 74.6, -72.826 74.7, -80.2018 74.8, -85.6027 74.9, -88.8958 75, -90 75.1, -88.8881 75.2, -85.5874 75.3, -80.1793 75.4, -72.7969 75.5, -63.622 75.6, -52.8805 75.7, -40.8368 75.8, -27.7877 75.9, -14.0543 76, 0.025125 76.1, 14.1039 76.2, 27.8355 76.3, 40.8816 76.4, 52.9211 76.5, 63.6575 76.6, 72.8264 76.7, 80.2021 76.8, 85.6029 76.9, 88.8959 77, 90 77.1, 88.888 77.2, 85.5872 77.3, 80.179 77.4, 72.7965 77.5, 63.6215 77.6, 52.8799 77.7, 40.8363 77.8, 27.7871 77.9, 14.0537 78, -0.025786 78.1, -14.1046 78.2, -27.8361 78.3, -40.8822 78.4, -52.9216 78.5, -63.658 78.6, -72.8268 78.7, -80.2024 78.8, -85.6031 78.9, -88.896 79, -90 79.1, -88.8879 79.2, -85.587 79.3, -80.1787 79.4, -72.7961 79.5, -63.621 79.6, -52.8794 79.7, -40.8357 79.8, -27.7864 79.9, -14.053 80, 0.026447 80.1, 14.1053 80.2, 27.8367 80.3, 40.8828 80.4, 52.9222 80.5, 63.6584 80.6, 72.8272 80.7, 80.2027 80.8, 85.6033 80.9, 88.8961 81, 90 81.1, 88.8878 81.2, 85.5868 81.3, 80.1784 81.4, 72.7957 81.5, 63.6206 81.6, 52.8788 81.7, 40.8351 81.8, 27.7858 81.9, 14.0524 82, -0.027108 82.1, -14.1059 82.2, -27.8374 82.3, -40.8834 82.4, -52.9227 82.5, -63.6589 82.6, -72.8276 82.7, -80.203 82.8, -85.6035 82.9, -88.8962 83, -90 83.1, -88.8876 83.2, -85.5866 83.3, -80.1781 83.4, -72.7953 83.5, -63.6201 83.6, -52.8783 83.7, -40.8345 83.8, -27.7852 83.9, -14.0517 84, 0.027769 84.1, 14.1066 84.2, 27.838 84.3, 40.884 84.4, 52.9232 84.5, 63.6594 84.6, 72.828 84.7, 80.2033 84.8, 85.6037 84.9, 88.8963 85, 90 85.1, 88.8875 85.2, 85.5864 85.3, 80.1778 85.4, 72.7949 85.5, 63.6196 85.6, 52.8778 85.7, 40.8339 85.8, 27.7846 85.9, 14.0511 86, -0.028431 86.1, -14.1072 86.2, -27.8386 86.3, -40.8846 86.4, -52.9238 86.5, -63.6598 86.6, -72.8284 86.7, -80.2036 86.8, -85.6039 86.9, -88.8964 87, -90 87.1, -88.8874 87.2, -85.5862 87.3, -80.1775 87.4, -72.7945 87.5, -63.6192 87.6, -52.8772 87.7, -40.8333 87.8, -27.7839 87.9, -14.0504 88, 0.029092 88.1, 14.1079 88.2, 27.8393 88.3, 40.8852 88.4, 52.9243 88.5, 63.6603 88.6, 72.8287 88.7, 80.2039 88.8, 85.6042 88.9, 88.8965 89, 90 89.1, 88.8873 89.2, 85.586 89.3, 80.1772 89.4, 72.7942 89.5, 63.6187 89.6, 52.8767 89.7, 40.8327 89.8, 27.7833 89.9, 14.0497 90, -0.029753 90.1, -14.1085 90.2, -27.8399 90.3, -40.8857 90.4, -52.9248 90.5, -63.6608 90.6, -72.8291 90.7, -80.2042 90.8, -85.6044 90.9, -88.8966 91, -90 91.1, -88.8872 91.2, -85.5858 91.3, -80.1769 91.4, -72.7938 91.5, -63.6182 91.6, -52.8762 91.7, -40.8321 91.8, -27.7827 91.9, -14.0491 92, 0.030414 92.1, 14.1092 92.2, 27.8405 92.3, 40.8863 92.4, 52.9254 92.5, 63.6612 92.6, 72.8295 92.7, 80.2045 92.8, 85.6046 92.9, 88.8968 93, 90 93.1, 88.8871 93.2, 85.5856 93.3, 80.1766 93.4, 72.7934 93.5, 63.6178 93.6, 52.8756 93.7, 40.8315 93.8, 27.782 93.9, 14.0484 94, -0.031075 94.1, -14.1098 94.2, -27.8411 94.3, -40.8869 94.4, -52.9259 94.5, -63.6617 94.6, -72.8299 94.7, -80.2048 94.8, -85.6048 94.9, -88.8969 95, -90 95.1, -88.887 95.2, -85.5854 95.3, -80.1763 95.4, -72.793 95.5, -63.6173 95.6, -52.8751 95.7, -40.831 95.8, -27.7814 95.9, -14.0478 96, 0.031736 96.1, 14.1105 96.2, 27.8418 96.3, 40.8875 96.4, 52.9265 96.5, 63.6622 96.6, 72.8303 96.7, 80.2051 96.8, 85.605 96.9, 88.897 97, 90 97.1, 88.8869 97.2, 85.5852 97.3, 80.176 97.4, 72.7926 97.5, 63.6168 97.6, 52.8746 97.7, 40.8304 97.8, 27.7808 97.9, 14.0471 98, -0.032398 98.1, -14.1111 98.2, -27.8424 98.3, -40.8881 98.4, -52.927 98.5, -63.6626 98.6, -72.8307 98.7, -80.2054 98.8, -85.6052 98.9, -88.8971 99, -90 99.1, -88.8868 99.2, -85.5849 99.3, -80.1757 99.4, -72.7922 99.5, -63.6163 99.6, -52.874 99.7, -40.8298 99.8, -27.7802 99.9, -14.0465 100, 0.033059 100.1, 14.1118 100.2, 27.843 100.3, 40.8887 100.4, 52.9275 100.5, 63.6631 100.6, 72.8311 100.7, 80.2057 100.8, 85.6054 100.9, 88.8972 101, 90 101.1, 88.8867 101.2, 85.5847 101.3, 80.1754 101.4, 72.7918 101.5, 63.6159 101.6, 52.8735 101.7, 40.8292 101.8, 27.7795 101.9, 14.0458 102, -0.03372 102.1, -14.1124 102.2, -27.8437 102.3, -40.8893 102.4, -52.9281 102.5, -63.6636 102.6, -72.8315 102.7, -80.206 102.8, -85.6056 102.9, -88.8973 103, -90 103.1, -88.8866 103.2, -85.5845 103.3, -80.1751 103.4, -72.7914 103.5, -63.6154 103.6, -52.873 103.7, -40.8286 103.8, -27.7789 103.9, -14.0452 104, 0.034381 104.1, 14.1131 104.2, 27.8443 104.3, 40.8899 104.4, 52.9286 104.5, 63.664 104.6, 72.8318 104.7, 80.2063 104.8, 85.6058 104.9, 88.8974 105, 90 105.1, 88.8865 105.2, 85.5843 105.3, 80.1748 105.4, 72.791 105.5, 63.6149 105.6, 52.8724 105.7, 40.828 105.8, 27.7783 105.9, 14.0445 106, -0.035042 106.1, -14.1137 106.2, -27.8449 106.3, -40.8905 106.4, -52.9291 106.5, -63.6645 106.6, -72.8322 106.7, -80.2066 106.8, -85.606 106.9, -88.8975 107, -90 107.1, -88.8864 107.2, -85.5841 107.3, -80.1745 107.4, -72.7907 107.5, -63.6145 107.6, -52.8719 107.7, -40.8274 107.8, -27.7776 107.9, -14.0439 108, 0.035704 108.1, 14.1144 108.2, 27.8455 108.3, 40.891 108.4, 52.9297 108.5, 63.665 108.6, 72.8326 108.7, 80.2069 108.8, 85.6062 108.9, 88.8976 109, 90 109.1, 88.8863 109.2, 85.5839 109.3, 80.1742 109.4, 72.7903 109.5, 63.614 109.6, 52.8714 109.7, 40.8268 109.8, 27.777 109.9, 14.0432 110, -0.036365 110.1, -14.1151 110.2, -27.8462 110.3, -40.8916 110.4, -52.9302 110.5, -63.6654 110.6, -72.833 110.7, -80.2072 110.8, -85.6064 110.9, -88.8977 111, -90 111.1, -88.8862 111.2, -85.5837 111.3, -80.1739 111.4, -72.7899 111.5, -63.6135 111.6, -52.8708 111.7, -40.8262 111.8, -27.7764 111.9, -14.0426 112, 0.037026 112.1, 14.1157 112.2, 27.8468 112.3, 40.8922 112.4, 52.9307 112.5, 63.6659 112.6, 72.8334 112.7, 80.2075 112.8, 85.6066 112.9, 88.8978 113, 90 113.1, 88.8861 113.2, 85.5835 113.3, 80.1736 113.4, 72.7895 113.5, 63.6131 113.6, 52.8703 113.7, 40.8257 113.8, 27.7757 113.9, 14.0419 114, -0.037687 114.1, -14.1164 114.2, -27.8474 114.3, -40.8928 114.4, -52.9313 114.5, -63.6664 114.6, -72.8338 114.7, -80.2078 114.8, -85.6068 114.9, -88.8979 115, -90 115.1, -88.886 115.2, -85.5833 115.3, -80.1733 115.4, -72.7891 115.5, -63.6126 115.6, -52.8698 115.7, -40.8251 115.8, -27.7751 115.9, -14.0413 116, 0.038348 116.1, 14.117 116.2, 27.8481 116.3, 40.8934 116.4, 52.9318 116.5, 63.6668 116.6, 72.8342 116.7, 80.2081 116.8, 85.607 116.9, 88.898 117, 90 117.1, 88.8859 117.2, 85.5831 117.3, 80.173 117.4, 72.7887 117.5, 63.6121 117.6, 52.8692 117.7, 40.8245 117.8, 27.7745 117.9, 14.0406 118, -0.039009 118.1, -14.1177 118.2, -27.8487 118.3, -40.894 118.4, -52.9323 118.5, -63.6673 118.6, -72.8346 118.7, -80.2084 118.8, -85.6072 118.9, -88.8981 119, -90 119.1, -88.8858 119.2, -85.5829 119.3, -80.1727 119.4, -72.7883 119.5, -63.6117 119.6, -52.8687 119.7, -40.8239 119.8, -27.7739 119.9, -14.04 ENDTABLE #RadioCtrl0 0 LOG_ENTRY Used Dataset: Control: Steering (Open Loop); { Sine Wave } Sine Wave for Test #Library : Control: Steering (Open Loop) #DataSet : Sine Wave for Test #Category: Sine Wave #FileID : Steer114 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:30 #VehCode Open-loop steer control EXIT_PARSFILE Control\Steer\Steer114.par #BlueLink27 Control: Steering (Open Loop)`Sine Wave for Test` Sine Wave` , Steering ENTER_PARSFILE Control\Braking\ConBrk101.par`08-02-2011`16:43:32 #FullDataName Control: Braking (Open Loop)`No Open-Loop Braking Pressure` #RingCtrl0 CONSTANT #RadioCtrl0 0 OPT_VMIN -1 *SCALAR 0 PBK_CON_CONSTANT 0 LOG_ENTRY Used Dataset: Control: Braking (Open Loop); No Open-Loop Braking Pressure #Library : Control: Braking (Open Loop) #DataSet : No Open-Loop Braking Pressure #Category: #FileID : ConBrk101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:32 #VehCode Brake control EXIT_PARSFILE Control\Braking\ConBrk101.par #BlueLink28 Control: Braking (Open Loop)`No Open-Loop Braking Pressure` ` , Braking ENTER_PARSFILE Control\Gear_at\GearAT101.par`08-02-2011`16:43:31 #FullDataName Control: Shifting (Closed Loop)`AT All Gears` #RingCtrl0 CONSTANT #RadioCtrl0 0 *SCALAR NGEARS MODE_TRANS_CONSTANT NGEARS LOG_ENTRY Used Dataset: Control: Shifting (Closed Loop); AT All Gears #Library : Control: Shifting (Closed Loop) #DataSet : AT All Gears #Category: #FileID : GearAT101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:31 #VehCode Closed-loop shift control ENTRY_NOTEFILE Control\Gear_at\GearAT101_note.txt NGEARS is the internal symbol for the number of gears in a transmission. By setting the Mode to NGEARS, CarSim is automatically told to use all of the transmission gears. EXIT_NOTEFILE Control\Gear_at\GearAT101_note.txt EXIT_PARSFILE Control\Gear_at\GearAT101.par #BlueLink30 Control: Shifting (Closed Loop)`AT All Gears` ` , Shifting control #MiscYellow0 ! Improve animation of sensor beams ani_global_interpolation off #ENDMYellow ENTER_PARSFILE Roads\3D_Road\Road122.par`08-02-2011`16:43:16 #FullDataName Road: 3D Surface (All Properties)`1 km Square`3D Grid OPT_ROAD 1 iroad 1 ! obsolete March 2011 idz_road 1 RR_SURF 1 DZ_SHADOW 0.02 L_CAMERA_FRONT 0.5 L_CAMERA_REAR 0.5 ENTER_PARSFILE Roads\Center_XY\RoadXY101.par`08-02-2011`16:43:06 #FullDataName Road: X-Y Coordinates of Centerline`Straight` SPATH 0 #CheckBox0 0 OPT_ROAD_LOOP 0 #RadioCtrl0 0 OPT_ROAD 1 #DiagramOne0 YIN_TABLE 0, 0, 0 100, 0, 100 ENDTABLE LOG_ENTRY Used Dataset: Road: X-Y Coordinates of Centerline; Straight #Library : Road: X-Y Coordinates of Centerline #DataSet : Straight #Category: #FileID : RoadXY101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:06 #VehCode Horizontal (X-Y) table EXIT_PARSFILE Roads\Center_XY\RoadXY101.par #BlueLink0 Road: X-Y Coordinates of Centerline`Straight` ` , Centerline geometry ENTER_PARSFILE Roads\Center_Z\RoadZ101.par`08-02-2011`16:43:13 #FullDataName Road: Centerline Elevation`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_ZS_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Centerline Elevation; Flat #Library : Road: Centerline Elevation #DataSet : Flat #Category: #FileID : RoadZ101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Centerline elevation: Z vs S EXIT_PARSFILE Roads\Center_Z\RoadZ101.par #BlueLink1 Road: Centerline Elevation`Flat` ` , Centerline elevation ENTER_PARSFILE Roads\dZ_Map\RdElMap101.par`08-02-2011`16:43:11 #FullDataName Road: Off-Center Elevation Map, S-L Grid`Flat` OPT_ROAD 1 #RingCtrl0 CONSTANT ROAD_DZ_CONSTANT 0 #RadioCtrl0 0 *SCALAR 0 LOG_ENTRY Used Dataset: Road: Off-Center Elevation Map, S-L Grid; Flat #Library : Road: Off-Center Elevation Map, S-L Grid #DataSet : Flat #Category: #FileID : RdElMap101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:11 #VehCode dZ via S-L grid EXIT_PARSFILE Roads\dZ_Map\RdElMap101.par #BlueLink2 Road: Off-Center Elevation Map, S-L Grid`Flat` ` , Off-center elevation 1 ENTER_PARSFILE Roads\Friction\RdFric101.par`08-02-2011`16:43:12 #FullDataName Road: Friction Map, S-L Grid`0.85`Constant Mu OPT_ROAD 1 #RingCtrl0 CONSTANT MU_ROAD_CONSTANT 0.85 #RadioCtrl0 0 *SCALAR 0.85 LOG_ENTRY Used Dataset: Road: Friction Map, S-L Grid; { Constant Mu } 0.85 #Library : Road: Friction Map, S-L Grid #DataSet : 0.85 #Category: Constant Mu #FileID : RdFric101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:12 #VehCode Mu via S-L grid EXIT_PARSFILE Roads\Friction\RdFric101.par #BlueLink3 Road: Friction Map, S-L Grid`0.85` Constant Mu` , Friction ENTER_PARSFILE Roads\Shapes\RdShp109.par`08-02-2011`16:43:13 #FullDataName Road: Animator Surface Shapes`1 km Square Checkerboard`3D Grid NLANES 4 #MiscYellow0 # 0.9 0.9 0.9, Pavement, 0.15, 10, 100, -500, m, 500, m, 99, 2, -500, 500, 10, 2, 0, # 0.9 0.9 0.9, Pavement, 0.15, 10, 99, -500, m, 490, m, 98, 2, -490, 500, 10, 2, 0, # 0.9 0.9 0.9, Slate (White), 0.10, 10, 99, -490, m, 500, m, 98, 2, -490, 500, 10, 2, 0, # 0.9 0.9 0.9, Slate (White), 0.10, 10, 99, -500, m, 490, m, 98, 2, -500, 500, 10, 2, 0, #ENDMYellow #CheckBox0 0 MIRROR 0 COLOR(1) 0.9 0.9 0.9 MATERIAL(1) Pavement SPECULAR(1) 0.15 SCALE(1) 10 LTILES(1) 100 LIN(1) -500 LINUNITS(1) m LOUT(1) 500 LOUTUNITS(1) m LDIV(1) 99 LIPRINT(1) 2 SSTART(1) -500 SSTOP(1) 500 SINT(1) 10 IPRINT(1) 2 DZ(1) 0 COLOR(2) 0.9 0.9 0.9 MATERIAL(2) Pavement SPECULAR(2) 0.15 SCALE(2) 10 LTILES(2) 99 LIN(2) -500 LINUNITS(2) m LOUT(2) 490 LOUTUNITS(2) m LDIV(2) 98 LIPRINT(2) 2 SSTART(2) -490 SSTOP(2) 500 SINT(2) 10 IPRINT(2) 2 DZ(2) 0 COLOR(3) 0.9 0.9 0.9 MATERIAL(3) Slate (White) SPECULAR(3) 0.10 SCALE(3) 10 LTILES(3) 99 LIN(3) -490 LINUNITS(3) m LOUT(3) 500 LOUTUNITS(3) m LDIV(3) 98 LIPRINT(3) 2 SSTART(3) -490 SSTOP(3) 500 SINT(3) 10 IPRINT(3) 2 DZ(3) 0 COLOR(4) 0.9 0.9 0.9 MATERIAL(4) Slate (White) SPECULAR(4) 0.10 SCALE(4) 10 LTILES(4) 99 LIN(4) -500 LINUNITS(4) m LOUT(4) 490 LOUTUNITS(4) m LDIV(4) 98 LIPRINT(4) 2 SSTART(4) -500 SSTOP(4) 500 SINT(4) 10 IPRINT(4) 2 DZ(4) 0 MTL_FILE Roads\materials\road.mtl LOG_ENTRY Used Dataset: Road: Animator Surface Shapes; { 3D Grid } 1 km Square Checkerboard #Library : Road: Animator Surface Shapes #DataSet : 1 km Square Checkerboard #Category: 3D Grid #FileID : RdShp109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:13 #VehCode Road shapes EXIT_PARSFILE Roads\Shapes\RdShp109.par #BlueLink4 Road: Animator Surface Shapes`1 km Square Checkerboard` 3D Grid` , Road shape definitions add_reference_frame road_stuff_1 reference_frame_ghosts off ENTER_PARSFILE Animator\Groups\Group101.par`08-02-2011`16:43:52 #FullDataName Animator: Group`Partly Cloudy Sky`Skies ENTER_PARSFILE Animator\Frames\Frame104.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Front Point w/o Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Front Point w/o Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camF SET_Y_NAME Y_camF SET_Z_NAME Z_camF WRT_X_camF ANI_X_camF WRT_Y_camF ANI_Y_camF WRT_Z_camF ANI_Z_camF LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Front Point w/o Yaw #Library : Animator: Reference Frame #DataSet : Camera Front Point w/o Yaw #Category: Road Tracking #FileID : Frame104 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame104.par #BlueLink0 Animator: Reference Frame`Camera Front Point w/o Yaw` Road Tracking` , Animator data ENTER_PARSFILE Animator\STL\AniSTL115.par`08-02-2011`16:43:47 #FullDataName Animator: Shape File Link`Partly Cloudy Sky`Skies #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\Slightly_Cloudy_Sky\sky_road_course.obj #ENDMYellow SET_COLOR 1 1 1 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 5 SET_OFFSET_X 0 SET_OFFSET_Y 0 SET_OFFSET_Z 0 SMOOTH_MAX_ANGLE 30 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 1 set_fogging off #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Skies } Partly Cloudy Sky #Library : Animator: Shape File Link #DataSet : Partly Cloudy Sky #Category: Skies #FileID : AniSTL115 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:47 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL115.par #BlueLink1 Animator: Shape File Link`Partly Cloudy Sky` Skies` , Animator data ENTER_PARSFILE Animator\STL\AniSTL116.par`08-02-2011`16:43:48 #FullDataName Animator: Shape File Link`Complex Land Bowl for Light Grass`Terrain #MiscYellow3 add_obj Animator\3D_shape_files_CS\scenery\landbowls\complex_land_for_light_grass.obj #ENDMYellow SET_COLOR .8 .8 .8 SET_SCALE_X 15 SET_SCALE_Y 15 SET_SCALE_Z 1 #RingCtrl0 1 #CheckBox0 1 set_lighting off #CheckBox1 0 set_fogging on #CheckBox3 0 #CheckBox4 0 show_front on show_back off #BlueLink2 Animator: Camera Setup`Shape Preview (Top)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Shape File Link; { Terrain } Complex Land Bowl for Light Grass #Library : Animator: Shape File Link #DataSet : Complex Land Bowl for Light Grass #Category: Terrain #FileID : AniSTL116 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:48 #VehCode Shape File EXIT_PARSFILE Animator\STL\AniSTL116.par #BlueLink2 Animator: Shape File Link`Complex Land Bowl for Light Grass` Terrain` , Animator data #CheckBox0 0 #BlueLink20 Animator: Camera Setup`Shape Preview (Side)` Shape Preview` , Animator camera LOG_ENTRY Used Dataset: Animator: Group; { Skies } Partly Cloudy Sky #Library : Animator: Group #DataSet : Partly Cloudy Sky #Category: Skies #FileID : Group101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:52 #VehCode Animator Group EXIT_PARSFILE Animator\Groups\Group101.par #BlueLink6 Animator: Group`Partly Cloudy Sky` Skies` , Misc. animator set add_reference_frame road_stuff_2 reference_frame_ghosts off add_reference_frame road_stuff_3 reference_frame_ghosts off add_reference_frame road_stuff_4 reference_frame_ghosts off iroad 2 ! obsolete March 2011 idz_road 2 ENTER_PARSFILE Animator\Cameras\Camera105.par`08-02-2011`16:43:54 #FullDataName Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)`Road Reference #RingCtrl1 0 #CheckBox0 0 #CheckBox1 1 GHOST_COUNT 0 SET_CAMERA_Reference_Frame Road Tracking Camera Rear Point w/ Yaw ENTER_PARSFILE Animator\Frames\Frame105.par`08-02-2011`16:43:51 #FullDataName Animator: Reference Frame`Camera Rear Point w/ Yaw`Road Tracking ADD_REFERENCE_FRAME Road Tracking Camera Rear Point w/ Yaw #RingCtrl0 yaw_pitch_roll SET_EULER_ANGLES yaw_pitch_roll SET_X_NAME X_camR SET_Y_NAME Y_camR SET_Z_NAME Z_camR SET_YAW_NAME Yaw_CamR WRT_X_camR ANI_X_camR WRT_Y_camR ANI_Y_camR WRT_Z_camR ANI_Z_camR WRT_Yaw_CamR ANI_Yaw_CamR LOG_ENTRY Used Dataset: Animator: Reference Frame; { Road Tracking } Camera Rear Point w/ Yaw #Library : Animator: Reference Frame #DataSet : Camera Rear Point w/ Yaw #Category: Road Tracking #FileID : Frame105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:51 #VehCode Reference frame EXIT_PARSFILE Animator\Frames\Frame105.par #BlueLink0 Animator: Reference Frame`Camera Rear Point w/ Yaw` Road Tracking` , Reference frame for outside camera SET_LOOKPOINT_Reference_Frame Road Tracking Camera Rear Point w/ Yaw SET_LOOKPOINT_X 5 SET_LOOKPOINT_Y 0 SET_LOOKPOINT_Z 1 SET_AZIMUTH 180 SET_ELEVATION 5 SET_DISTANCE 49 *SET_LOOKPOINT_X 5 *SET_LOOKPOINT_Y 0 *SET_LOOKPOINT_Z 1 *SET_AZIMUTH 180 *SET_ELEVATION 5 *SET_DISTANCE 49 GHOST_COUNT 0 *LIGHT_X -1000 *LIGHT_Y -1000 *LIGHT_Z 10000 FOG_SCALE 0.2 SET_FIELD_OF_VIEW 30 SUN_POSITION -1000 -1000 10000 LOG_ENTRY Used Dataset: Animator: Camera Setup; { Road Reference } Rear View , Road Ref. (Frt. Facing) #Library : Animator: Camera Setup #DataSet : Rear View , Road Ref. (Frt. Facing) #Category: Road Reference #FileID : Camera105 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:54 #VehCode Camera EXIT_PARSFILE Animator\Cameras\Camera105.par #BlueLink5 Animator: Camera Setup`Rear View , Road Ref. (Frt. Facing)` Road Reference` , Camera ENTER_PARSFILE Roads\3D_Road\Road122.ani`07-20-2011`03:07:16 add_reference_frame The Road reference_frame_ghosts off add_obj Roads\3D_Road\Road122_1.obj set_color 0.9 0.9 0.9 show_front on show_back off compute_normals on set_specular 0.15 0.15 0.15 add_obj Roads\3D_Road\Road122_2.obj set_color 0.9 0.9 0.9 show_front on show_back off compute_normals on set_specular 0.15 0.15 0.15 add_obj Roads\3D_Road\Road122_3.obj set_color 0.9 0.9 0.9 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 add_obj Roads\3D_Road\Road122_4.obj set_color 0.9 0.9 0.9 show_front on show_back off compute_normals on set_specular 0.1 0.1 0.1 EXIT_PARSFILE Roads\3D_Road\Road122.ani LOG_ENTRY Used Dataset: Road: 3D Surface (All Properties); { 3D Grid } 1 km Square #Library : Road: 3D Surface (All Properties) #DataSet : 1 km Square #Category: 3D Grid #FileID : Road122 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:16 #VehCode 3D road EXIT_PARSFILE Roads\3D_Road\Road122.par #BlueLink0 Road: 3D Surface (All Properties)`1 km Square` 3D Grid` , Misc. ENTER_PARSFILE Plot\Setup\Plot109.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Longitudinal Speed`Vehicle Motion ENTER_PARSFILE Plot\Transform\PlotTfm101.par`08-02-2011`16:43:01 #FullDataName Plot: Data Transform`No Filter` #RingCtrl0 None FILTER None LOG_ENTRY Used Dataset: Plot: Data Transform; No Filter #Library : Plot: Data Transform #DataSet : No Filter #Category: #FileID : PlotTfm101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:01 #VehCode Plot data transform EXIT_PARSFILE Plot\Transform\PlotTfm101.par #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) ENTER_PARSFILE Plot\Format\PlotFmt101.par`08-02-2011`16:43:00 #FullDataName Plot: Format`Default Plot Settings` #RingCtrl0 Axes AXES Axes #RingCtrl1 Noframe FRAME Noframe #RingCtrl2 NoGrid GRID NoGrid #RingCtrl3 FileTitle LEGENDFILE FileTitle #RingCtrl4 RigidBodyName LEGENDDATA_1 RigidBodyName #RingCtrl5 AutoLocation LEGENDLOCATION AutoLocation #RingCtrl6 Regular TITLEFONTSTYLE Regular #RingCtrl7 Regular LEGENDFONTSTYLE Regular #RingCtrl8 Regular LABELFONTSTYLE Regular #RingCtrl9 Regular TICLABELFONTSTYLE Regular #RingCtrl10 0 TITLELOCATION 0 LEGENDPERCENT 40 TITLEFONTSIZE 14 LEGENDFONTSIZE 12 LABELFONTSIZE 14 TICLABELFONTSIZE 12 TITLEFONTNAME Arial LEGENDFONTNAME Arial LABELFONTNAME Arial TICLABELFONTNAME Arial SYMBOLS 10,1,2,3,4,5,6,7,8,9,10,4,1,2,3,4,5,6,7,8 LINESTYL 1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2,1 COLORS 8,2,3,7,4,0,6,14,8,9,10,11,12,13,14,6,1,2,0,4 LOG_ENTRY Used Dataset: Plot: Format; Default Plot Settings #Library : Plot: Format #DataSet : Default Plot Settings #Category: #FileID : PlotFmt101 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot format EXIT_PARSFILE Plot\Format\PlotFmt101.par #MiscYellow0 PLOTCHANNELS Vx, Time PLOTCHANNELS VxTarget, Time PLOTCHANNELS Vx_2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Longitudinal Speed LOG_ENTRY Used Dataset: Plot: Setup; { Vehicle Motion } Longitudinal Speed #Library : Plot: Setup #DataSet : Longitudinal Speed #Category: Vehicle Motion #FileID : Plot109 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot109.par #BlueLink8 Plot: Setup`Longitudinal Speed` Vehicle Motion` , Plot ENTER_PARSFILE Plot\Setup\Plot118.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Throttle: Control Input`Controls: Driver #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Throttle, Time PLOTCHANNELS Thr_Eng, Time #ENDMYellow YAXISLABEL Throttle - #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Throttle: Control Input LOG_ENTRY Used Dataset: Plot: Setup; { Controls: Driver } Throttle: Control Input #Library : Plot: Setup #DataSet : Throttle: Control Input #Category: Controls: Driver #FileID : Plot118 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup ENTRY_NOTEFILE Plot\Setup\Plot118_note.txt The variable "Throttle" is the sum of any throttle control calculated by the CarSim closed loop speed controller and any specified open-loop throttle. The source of open-loop throttle command may be from internal tables, VS commmands, or external sources like Simulink or the API. By using the sum of these 2 command sources you can implement things like driver aids for active safety that augment actions taken by the driver. When switching between open loop and closed loop control, take care that no unintended open loop control is "left over" by supplying a data set that sets the open loop component to zero. The variable "Thr_Eng" is the value of "Throttle", optionally modified by the application of a time constant to simulate the transient delay in changes in engine torque. EXIT_NOTEFILE Plot\Setup\Plot118_note.txt EXIT_PARSFILE Plot\Setup\Plot118.par #BlueLink9 Plot: Setup`Throttle: Control Input` Controls: Driver` , Plot ENTER_PARSFILE Plot\Setup\Plot203.par`08-02-2011`16:42:56 #FullDataName Plot: Setup`Wheel Cylinder Pressures`Braking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS PbkCh_L1, Time PLOTCHANNELS PbkCh_R1, Time PLOTCHANNELS PbkCh_L2, Time PLOTCHANNELS PbkCh_R2, Time #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Wheel Cylinder Pressures LOG_ENTRY Used Dataset: Plot: Setup; { Braking } Wheel Cylinder Pressures #Library : Plot: Setup #DataSet : Wheel Cylinder Pressures #Category: Braking #FileID : Plot203 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:42:56 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot203.par #BlueLink10 Plot: Setup`Wheel Cylinder Pressures` Braking` , Plot ENTER_PARSFILE Plot\Setup\Plot141.par`08-02-2011`16:43:00 #FullDataName Plot: Setup`Y vs. X -- Trajectory`Tracking #BlueLink1 Plot: Data Transform`No Filter` ` , Data transform (optional) #MiscYellow0 PLOTCHANNELS Yo, Xo PLOTCHANNELS Y_Design, X_Design PLOTCHANNELS Y_Target, X_Target PLOTCHANNELS Yo_2, Xo_2 #ENDMYellow #RingCtrl0 Linear YLINEAR Linear #RingCtrl1 Linear XLINEAR Linear #RingCtrl2 Auto YMaxmin Auto #RingCtrl3 Auto XMaxmin Auto #RingCtrl4 0 #RingCtrl5 0 #RingCtrl6 0 #RingCtrl7 0 PTITLE Y vs. X -- Trajectory LOG_ENTRY Used Dataset: Plot: Setup; { Tracking } Y vs. X -- Trajectory #Library : Plot: Setup #DataSet : Y vs. X -- Trajectory #Category: Tracking #FileID : Plot141 #Product : CarSim Version 8.1, August 2011 #Last update: 08-02-2011 16:43:00 #VehCode Plot setup EXIT_PARSFILE Plot\Setup\Plot141.par #BlueLink11 Plot: Setup`Y vs. X -- Trajectory` Tracking` , Plot LOG_ENTRY Used Dataset: Procedures; { BOOK_MPC_Procedures } SinSteeer_CorneringStiffness_Hat #Library : Procedures #DataSet : SinSteeer_CorneringStiffness_Hat #Category: BOOK_MPC_Procedures #FileID : Proc162 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-24-2019 03:04:50 #VehCode Procedure EXIT_PARSFILE Procedures\Proc162.par #BlueLink28 Procedures`SinSteeer_CorneringStiffness_Hat` BOOK_MPC_Procedures` , Procedure *IMAGE_LINK Animator: Vehicles and Sensor Targets`D-Class, SUV` D-Class Vehicles` WRITE_SENSOR_DETECT Title Chapter5_CorneringStiffness_Estimation CATEGORY BOOK_MPC_Examples DATASET_TITLE Chapter5_CorneringStiffness_Estimation LOG_ENTRY Used Dataset: CarSim Run Control; { BOOK_MPC_Examples } Chapter5_CorneringStiffness_Estimation #Library : CarSim Run Control #DataSet : Chapter5_CorneringStiffness_Estimation #Category: BOOK_MPC_Examples #FileID : Run274 #Product : CarSim Version 8.1a, October 2011 #Last update: 08-24-2019 03:12:26 #VehCode Run EXIT_PARSFILE Runs\Run274.par END ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/CorneringStiffness_Estimation.mdl ================================================ Model { Name "CorneringStiffness_Estimation" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.296" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "DynamicsEstimation" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [1018.0, 316.0, 809.0, 544.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [759.0, 367.0] ZoomFactor [1.25] Offset [268.00714285714218, 235.39999999999998] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Sat Aug 24 03:16:12 2019" RTWModifiedTimeStamp 488517221 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "CorneringStiffness_Estimation" Array { Type "Cell" Dimension 1 Cell "CorneringStiffness_Estimation" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "40" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "CorneringStiffness_Estimation" Location [1018, 316, 1827, 860] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" SIDHighWatermark "146" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [1, 1] Position [350, 286, 445, 354] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "LEO_CornerStiffness_Estimation.sim" } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [475, 287, 705, 353] ZOrder 12 FunctionName "Main_CorneringStiffness_Estimation" EnableBusSupport off } Block { BlockType ToWorkspace Name "To Workspace" SID "115" Ports [1] Position [735, 302, 830, 338] ZOrder 19 VariableName "Outputed_Data" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 131 SrcBlock "CarSim S-Function" SrcPort 1 DstBlock "S-Function" DstPort 1 } Line { ZOrder 132 SrcBlock "S-Function" SrcPort 1 DstBlock "To Workspace" DstPort 1 } } } ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/Main_CorneringStiffness_Comparison_RLS_Alt_new.m ================================================ function [sys,x0,str,ts] =Main_CorneringStiffness_Comparison_RLS_Alt_new(t,x,u,flag) %***************************************************************% % lf, lr are known; % ay, ax, delta_f and Beta are measurable % Using RLS to online identification [C_alpha_f_hat, C_alpha_r_hat] % %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 4; %S sizes.NumInputs = 13; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %------------Global parameters and initialization--------------------% % online identification RLS initialization [y, e] = func_RLSFilter_Calpha_f_useFyf('initial', 0.95, 10, 10); [y, e] = func_RLSFilter_Calpha_r_useFyr('initial', 0.95, 10, 10); global params; params.nCoefficients = 1; params.delta = 10; params.initialCoefficients = [-110000]; params.lambda = 0.95; % params.nDataTuple = 2; %filter order, number of data tuple [y, e, c] = func_RLS_Alt_New('initial', 0, params); global pre_regressor; nc = 1; nd = 10; pre_regressor.input = zeros(nc,nd); pre_regressor.d = zeros(nd,1); % vehicle parameters initialization global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehicleParams; % for SUV VehicleParams.Lf = 1.12; % 1.05 VehicleParams.Lr = 1.48; % 1.55 VehicleParams.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; global DataTupleFlag; DataTupleFlag = 0; % the first few inputs don't count. Gap it. % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% % global Initial_State; % global P; % global PreviousYawrate; global InitialGapflag; global VehicleParams; global params; global pre_regressor; global DataTupleFlag; Cf_Hat = 0; Cr_Hat = 0; C_alpha_f_Alt = 0; C_alpha_r_Alt = 0; t_Elapsed = 0; Ay_G_SM = 0; Ax = 0; fwa = 0; Beta = 0; alphaf = 0; alphar = 0; Arfa_f = 0; Arfa_r = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %***********Step (2). State estimation and Location **********************% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration--------% [Carsim_export] = func_CarsimData_Parse(u); Vx = Carsim_export.x_dot; Vy = Carsim_export.y_dot; yawrate = Carsim_export.phi_dot; % rad/s fwa = Carsim_export.fwa; Fyf = Carsim_export.Fyf; Fyr = Carsim_export.Fyr; alphaf_Direct = Carsim_export.alphaf; alphar_Direct = Carsim_export.alphar; %-----I. Estimate Cornering stiffness using old method----------------% alphaf_Hat = (Vy + yawrate*VehicleParams.Lf)/Vx - fwa; [yf, Calpha_f] = func_RLSFilter_Calpha_f_useFyf(alphaf_Hat, Fyf); Cf_Hat = sum(Calpha_f); %for rear tire alphar_Hat = (Vy - yawrate*VehicleParams.Lr)/Vx; [yr, Calpha_r] = func_RLSFilter_Calpha_r_useFyr(alphar_Hat, Fyr); Cr_Hat =sum(Calpha_r); %-----II. Estimate Cornering stiffness using Matrix method----------% if (DataTupleFlag < 10 ) for J = 10:-1:2 pre_regressor.input(J) = pre_regressor.input(J-1); pre_regressor.d(J) = pre_regressor.d(J-1); end; pre_regressor.input(1) = alphar_Direct; pre_regressor.d(1) = Fyr; DataTupleFlag = DataTupleFlag + 1; else for J = 10:-1:2 pre_regressor.input(J) = pre_regressor.input(J-1); pre_regressor.d(J) = pre_regressor.d(J-1); end; pre_regressor.input(1) = alphar_Direct; pre_regressor.d(1) = Fyr; [outputVector, errorVector, coefficientVector] = func_RLS_Alt_New(pre_regressor.d, pre_regressor.input, params); params.initialCoefficients = coefficientVector; C_alpha_f_Alt = 0; C_alpha_r_Alt = coefficientVector; end t_Elapsed = toc(t_Start); end % end of if Initialflag < 2 % sys = [Cf_Hat; Cr_Hat; C_alpha_f_Alt; C_alpha_r_Alt]; % % sys = [t_Elapsed; Ax; Ay_G_SM; fwa; Beta; Vel; Vy; yawrate; Roll; Rollrate; vx_hat; vy_hat; yawrate_hat; roll_hat; rollrate_hat; CafHat; CarHat; C_alpha_f_hat_ay; C_alpha_r_hat_ay]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [Sparsed_Carsim_Data] = func_CarsimData_Parse(CarsimData) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% Sparsed_Carsim_Data.x_dot = CarsimData(1)/3.6; %Unit:km/h-->m/s1λС Sparsed_Carsim_Data.y_dot = CarsimData(2)/3.6; %Unit:km/h-->m/s1λС Sparsed_Carsim_Data.phi_dot = (round(10*CarsimData(3))/10)*pi/180; %Unitdeg/s-->rad/s1λС Sparsed_Carsim_Data.fwa = (round(10*0.5*(CarsimData(4)+ CarsimData(5)))/10)*pi/180; % deg-->rad Sparsed_Carsim_Data.alphaf = (round(10*0.5 * (CarsimData(6)+ CarsimData(8)))/10)*pi/180; % deg-->rad1λС Sparsed_Carsim_Data.alphar = (round(10*0.5 * (CarsimData(7)+ CarsimData(9)))/10)*pi/180; % deg-->rad1λС Fy_l1 = round(10*CarsimData(10))/10; %Unit:N1λС Fy_l2 = round(10*CarsimData(11))/10; %Unit:N1λС Fy_r1 = round(10*CarsimData(12))/10; %Unit:N1λС Fy_r2 = round(10*CarsimData(13))/10; %Unit:N1λС Sparsed_Carsim_Data.Fyf = Fy_l1 + Fy_r1; Sparsed_Carsim_Data.Fyr = Fy_l2 + Fy_r2; % end % end of func_StateEstimation ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/Main_CorneringStiffness_Estimation.m ================================================ function [sys,x0,str,ts] =Main_CorneringStiffness_Estimation(t,x,u,flag) %***************************************************************% % Simulation for estimation of cornering stiffness using RLS method % Assume: lf, lr are known; % Assume: Vy, Vel, steering_angle and side-slip angle are measurable %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵ sizes.NumOutputs = 10; %Sеĸ sizes.NumInputs = 13; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05s %------------Global parameters and initialization--------------------% global InitialGapflag; InitialGapflag = 0; % Ignore the first few inputs from CarSim % vehicle parameters initialization global VehicleParams; % for SUV VehicleParams.Lf = 1.12; % 1.05 VehicleParams.Lr = 1.48; % 1.55 % RLS initialization [y, c] = func_RLSEstimation_Cf('initial', 0.95, 1, 10); [y, c] = func_RLSEstimation_Cr('initial', 0.95, 1, 10); % % global RLS_params; % RLS_params.nDataTuple = 10; % RLS_params.nCoefficients = 1; % RLS_params.initialCoefficients = -90000* ones(RLS_params.nCoefficients,1); % RLS_params.delta = 10; % RLS_params.lambda = 0.95; % [y, e, c] = func_RLS_Alt_New('initial', 0, params); % % global pre_regressor; % nc = 1; % nd = 10; % pre_regressor.input = zeros(nc,nd); % pre_regressor.d = zeros(nd,1); % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % Ŀǰûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== global InitialGapflag; global VehicleParams; Cf_Hat = 0; Cr_Hat = 0; Rinv_f = 0; Rinv_r = 0; Hat_err_f = 0; Hat_err_r = 0; alpha_f_Hat = 0; alpha_r_Hat = 0; alpha_f_Direct = 0; alpha_r_Direct = 0; if InitialGapflag < 3 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %-----Update State Estimation of measured Vehicle Configuration------% [Carsim_export] = func_CarsimData_Parse(u); Vx = Carsim_export.x_dot; Vy = Carsim_export.y_dot; yawrate = Carsim_export.phi_dot; % rad/s fwa = Carsim_export.fwa; Fyf_Direct = Carsim_export.Fyf; Fyr_Direct = Carsim_export.Fyr; alpha_f_Direct = Carsim_export.alphaf; alpha_r_Direct = Carsim_export.alphar; %-----Estimate Cornering stiffness use estimated sideslip angle-----% %for front tire alpha_f_Hat = (Vy + yawrate*VehicleParams.Lf)/Vx - fwa; [Fyf_hat, Cf_Hat, Rinv_f] = func_RLSEstimation_Cf(alpha_f_Hat, Fyf_Direct); Hat_err_f = Fyf_hat - Fyf_Direct; %for rear tire alpha_r_Hat = (Vy - yawrate*VehicleParams.Lr)/Vx; [Fyr_hat, Cr_Hat, Rinv_r] = func_RLSEstimation_Cr(alpha_r_Hat, Fyr_Direct); Hat_err_r = Fyr_hat - Fyr_Direct; %-Estimate Cornering stiffness use direct sideslip angle from CarSim-% end % end of if Initialflag < 2 % sys = [Cf_Hat; Cr_Hat; Rinv_f; Hat_err_f; Rinv_r; Hat_err_r; alpha_f_Hat; alpha_r_Hat; alpha_f_Direct; alpha_r_Direct]; % % sys = [t_Elapsed; Ax; Ay_G_SM; fwa; Beta; Vel; Vy; yawrate; Roll; Rollrate; vx_hat; vy_hat; yawrate_hat; roll_hat; rollrate_hat; CafHat; CarHat; C_alpha_f_hat_ay; C_alpha_r_hat_ay]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [Sparsed_Carsim_Data] = func_CarsimData_Parse(CarsimData) %***************************************************************% % Parse data exported from CarSim, ˳CarSimһ %***************************************************************% Sparsed_Carsim_Data.x_dot = CarsimData(1)/3.6; %Unit:km/h-->m/s1λС Sparsed_Carsim_Data.y_dot = CarsimData(2)/3.6; %Unit:km/h-->m/s1λС Sparsed_Carsim_Data.phi_dot = (round(10*CarsimData(3))/10)*pi/180; %Unitdeg/s-->rad/s1λС Sparsed_Carsim_Data.fwa = (round(10*0.5*(CarsimData(4)+ CarsimData(5)))/10)*pi/180; % deg-->rad Sparsed_Carsim_Data.alphaf = (round(10*0.5 * (CarsimData(6)+ CarsimData(8)))/10)*pi/180; % deg-->rad1λС Sparsed_Carsim_Data.alphar = (round(10*0.5 * (CarsimData(7)+ CarsimData(9)))/10)*pi/180; % deg-->rad1λС Fy_l1 = round(10*CarsimData(10))/10; %Unit:N1λС Fy_l2 = round(10*CarsimData(11))/10; %Unit:N1λС Fy_r1 = round(10*CarsimData(12))/10; %Unit:N1λС Fy_r2 = round(10*CarsimData(13))/10; %Unit:N1λС Sparsed_Carsim_Data.Fyf = Fy_l1 + Fy_r1; Sparsed_Carsim_Data.Fyr = Fy_l2 + Fy_r2; % end % end of func_StateEstimation ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/ReadMe ================================================ Tire Cornering Stiffness Estimation use RLS method ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/func_RLSEstimation_Cf.m ================================================ function [y, Bout, R_f_out] = func_RLSEstimation_Cf(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_f, Num_f, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_f: is also called the "forgetting" exponential weight factor % Num_f is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_f F_f B_f lambda_f Num_f Rinv_f %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f, 'initial')) % Initial lambda_f = d; % delta = delta_n; Num_f = FIR_Num; Rinv_f = delta_n*eye(Num_f); F_f = zeros(Num_f,1); Y_f = zeros(1, Num_f); B_f = -92000; %zeros(1,1); y = 0; Bout = 0; else % Filtering: for J = Num_f:-1:2 F_f(J) = F_f(J-1); Y_f(J) = Y_f(J-1); end; F_f(1) = f; Y_f(1) = d; % Perform the convolution y= F_f'*B_f; error=Y_f-y;% 1*nd % Kalman gains K = Rinv_f*F_f/(lambda_f + F_f'*Rinv_f*F_f); % Update Rinv_f Rinvn = (Rinv_f - K*F_f'*Rinv_f)/lambda_f; % Update the filter coefficients B_f = B_f + K*error; Rinv_f = Rinvn; Bout = B_f; R_f_out = Rinv_f; end end ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/func_RLSEstimation_Cr.m ================================================ function [y, Bout, R_r_out] = func_RLSEstimation_Cr(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_r, Num_r, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_r: is also called the "forgetting" exponential weight factor % Num_r is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_r F_r B_r lambda_r Num_r Rinv_r %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_r = d; % delta = delta_n; Num_r = FIR_Num; Rinv_r = delta_n*eye(Num_r); F_r = zeros(Num_r,1); Y_r = zeros(1, Num_r); B_r = -92000; %zeros(Num_r,1); y = 0; Bout = 0; else % Filtering: for J = Num_r:-1:2 F_r(J) = F_r(J-1); Y_r(J) = Y_r(J-1); end; F_r(1) = f; Y_r(1) = d; % Perform the convolution y= F_r'*B_r; error=Y_r-y; % Kalman gains K = Rinv_r*F_r/(lambda_r + F_r'*Rinv_r*F_r); % Update Rinv_r Rinvn = (Rinv_r - K*F_r'*Rinv_r)/lambda_r; % Update the filter coefficients B_r = B_r + K*error; Rinv_r = Rinvn; Bout = B_r; R_r_out = Rinv_r; end end ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/func_RLSFilter_Calpha_f.m ================================================ function [y, Bout] = func_RLSFilter_Calpha_f(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_f, Num_f, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_f: is also called the "forgetting" exponential weight factor % Num_f is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent F_f B_f lambda_f Num_f Rinv_f %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_f = d; % delta = delta_n; Num_f = FIR_Num; Rinv_f = delta_n*eye(Num_f); F_f = zeros(Num_f,1); B_f = zeros(Num_f,1); y = 0; Bout = 0; else % Filtering: for J = Num_f:-1:2 F_f(J) = F_f(J-1); end; F_f(1) = f; % Perform the convolution y= F_f'*B_f; error=d-y; % Kalman gains K = Rinv_f*F_f/(lambda_f + F_f'*Rinv_f*F_f); % Update Rinv_f Rinvn = (Rinv_f - K*F_f'*Rinv_f)/lambda_f; % Update the filter coefficients B_f = B_f + K*error; Bout = B_f; Rinv_f = Rinvn; end end ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/func_RLSFilter_Calpha_f_useFyf.m ================================================ function [y, Bout] = func_RLSFilter_Calpha_f_useFyf(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_f, Num_f, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_f: is also called the "forgetting" exponential weight factor % Num_f is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_f F_f B_f lambda_f Num_f Rinv_f %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f, 'initial')) % Initial lambda_f = d; % delta = delta_n; Num_f = FIR_Num; Rinv_f = delta_n*eye(Num_f); F_f = zeros(Num_f,1); Y_f = zeros(1, Num_f); B_f = -90000; % zeros(Num_f,1); y = 0; Bout = 0; else % Filtering: for J = Num_f:-1:2 F_f(J) = F_f(J-1); Y_f(J) = Y_f(J-1); end; F_f(1) = f; Y_f(1) = d; % Perform the convolution y= F_f'*B_f; error=Y_f-y; % 1*nd % Kalman gains K = Rinv_f*F_f/(lambda_f + F_f'*Rinv_f*F_f); % Update Rinv_f Rinvn = (Rinv_f - K*F_f'*Rinv_f)/lambda_f; % Update the filter coefficients B_f = B_f +error *K; Bout = B_f; Rinv_f = Rinvn; end end ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/func_RLSFilter_Calpha_r.m ================================================ function [y, Bout] = func_RLSFilter_Calpha_r(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_r, Num_r, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_r: is also called the "forgetting" exponential weight factor % Num_r is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent F_r B_r lambda_r Num_r Rinv_r %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_r = d; % delta = delta_n; Num_r = FIR_Num; Rinv_r = delta_n*eye(Num_r); F_r = zeros(Num_r,1); B_r = zeros(Num_r,1); y = 0; Bout = 0; else % Filtering: for J = Num_r:-1:2 F_r(J) = F_r(J-1); end; F_r(1) = f; % Perform the convolution y= F_r'*B_r; error=d-y; % Kalman gains K = Rinv_r*F_r/(lambda_r + F_r'*Rinv_r*F_r); % Update Rinv_r Rinvn = (Rinv_r - K*F_r'*Rinv_r)/lambda_r; % Update the filter coefficients B_r = B_r + K*error; Bout = B_r; Rinv_r = Rinvn; end end ================================================ FILE: Chapter-5/chap5_CorneringStiffness_Estimation/func_RLSFilter_Calpha_r_useFyr.m ================================================ function [y, Bout] = func_RLSFilter_Calpha_r_useFyr(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_r, Num_r, delta) % d = lambda_r: is the convergence rate parameter, % also called the "forgetting" exponential weight factor % FIR_Num is the filter length % delta_n are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent F_r B_r lambda_r Num_r Rinv_r %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_r = d; % delta = delta_n; Num_r = FIR_Num; Rinv_r = delta_n*eye(Num_r); F_r = zeros(Num_r,1); B_r = zeros(Num_r,1); y = 0; Bout = 0; else % Filtering: for J = Num_r:-1:2 F_r(J) = F_r(J-1); end; F_r(1) = f; % Perform the convolution y= F_r'*B_r; error=d-y; % Kalman gains K = Rinv_r*F_r/(lambda_r + F_r'*Rinv_r*F_r); % Update Rinv_r Rinvn = (Rinv_r - K*F_r'*Rinv_r)/lambda_r; % Update the filter coefficients B_r = B_r + K*error; Bout = B_r; Rinv_r = Rinvn; end end ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/Generate_Double_Line_Shift_refpath.m ================================================ %***************************************************************% % ˫IJο· % 趨ٶΪ1m/s, ʱΪ0.1s, ÿ·xϵľΪ0.1m % IJο·.matļ[X_ref, Yref, Heading_ref] %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My homepage: https://sites.google.com/site/kailiumiracle/ %***************************************************************% %---------------˫߹켣״-------% shape = 2.4;%ƣڲο켣 dx1 = 25; dx2 = 21.95;%ûκʵ壬ֻDz dy1 = 4.05; dy2 = 5.7;%ûκʵ壬ֻDz Xs1 = 27.19; Xs2 = 56.46;% DataNum = 3000; % DLS_path_cell = cell(DataNum,1); Ts = 0.1; X_DOT = 1.0; %ϵٶ %% X_0 = -50; % ο·Xʼ Line_segment_Num = 500; for p = 1 : 1 : Line_segment_Num X_ref = X_0 + X_DOT * p * Ts; %ȼδXλ Y_ref = 0; Heading_ref = 0; DLS_path_cell{p,1} = [X_ref, Y_ref, Heading_ref]; end X_0 = 0; for p = 1 : 1 : DataNum-Line_segment_Num X_ref = X_0 + X_DOT * p * Ts; %ȼδXλ z1 = shape/dx1*(X_ref - Xs1) - shape/2; z2 = shape/dx2*(X_ref - Xs2) - shape/2; Y_ref = dy1/2*(1+tanh(z1)) - dy2/2*(1+tanh(z2)); Heading_ref = atan(dy1*(1/cosh(z1))^2*(1.2/dx1) - dy2*(1/cosh(z2))^2*(1.2/dx2)); DLS_path_cell{Line_segment_Num + p,1} = [X_ref, Y_ref, Heading_ref]; end DLS_path=cell2mat(DLS_path_cell); save Waypoints_Double_Line_Shift.mat DLS_path; %% figure(1) plot(DLS_path(:,1), DLS_path(:,2), 'k'); figure(2) plot(1:DataNum, DLS_path(:,3), 'b'); ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/Main_MPC_Dynamics_AFS.m ================================================ function [sys,x0,str,ts] =Main_MPC_Dynamics_AFS(t,x,u,flag) %***************************************************************% % óܣԻijѧģͣСǶȼ裩MPC % ʵֲͬ·µ˫߸٣Simulink/CarSimʵϷ % MATLAB汾R2013b,CarSim汾8.1 % ״̬=[y_dot,x_dot,phi,phi_dot,Y,X]Ϊǰƫdelta_f % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 7; %S sizes.NumInputs = 25; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05s %--Global parameters and initialization % [y, e] = func_RLSFilter_Ccf('initial', 0.95, 10, 10); % [y, e] = func_RLSFilter_Ccr('initial', 0.95, 10, 10); % [y, e] = func_RLSFilter_Clf('initial', 0.95, 10, 10); % [y, e] = func_RLSFilter_Clr('initial', 0.95, 10, 10); global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; % for SUV VehiclePara.m = 1600; %mΪ,Kg; Sprung mass = 1370 VehiclePara.g = 9.81; VehiclePara.hCG = 0.65;%m VehiclePara.Lf = 1.12; % 1.05 VehiclePara.Lr = 1.48; % 1.55 VehiclePara.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; VehiclePara.Tr = 1.565; %c,or 1.57. ע᳤lcδȷ VehiclePara.mu = 0.85; % 0.55; %Ħ VehiclePara.Iz = 2059.2; %IΪZתв VehiclePara.Ix = 700.7; %IΪZתв VehiclePara.Radius = 0.387; % ̥뾶 global MPCParameters; MPCParameters.Np = 25;% predictive horizon Assume Np=Nc MPCParameters.Nc = 15; % Tsplit MPCParameters.Ts = 0.05; % the sample time of near term MPCParameters.Nx = 6; %the number of state variables MPCParameters.Ny = 2; %the number of output variables MPCParameters.Nu = 1; %the number of control inputs global WarmStart; WarmStart = zeros(MPCParameters.Nu * MPCParameters.Nc,1); global CostWeights; CostWeights.Wephi = 100; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.Wey = 100; CostWeights.WDdeltaf = 1000; global Constraints; % Constraints.dumax = 0.08; % Units: rad,0.08rad=4.6deg % Constraints.dumax = 0.1; % Units: rad,0.1rad=5.7deg Constraints.dumax = 0.0148; % Units: rad,0.0148rad = 0.8deg Constraints.umax = 0.4; % Units: rad, 0.4rad=23deg Constraints.ycmin = [-0.5; -5]; Constraints.ycmax = [0.5; 5]; global WayPoints_IndexPre; WayPoints_IndexPre = 1; global Reftraj; Reftraj = load('Waypoints_Double_Line_Shift.mat'); % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global WarmStart; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; Ts = MPCParameters.Ts; Np = MPCParameters.Np; Nc = MPCParameters.Nc; Nx = MPCParameters.Nx; Ny = MPCParameters.Ny; Nu = MPCParameters.Nu; Naug = Nx + Nu; Steer_SW_deg = 0; t_Elapsed = 0; PosX = 0; PosY = 0; PosPhi = 0; e_psi = 0; e_y = 0; if InitialGapflag < 2 % get rid of the first two inputs InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %**********Step (2). Update state and tire-stiffness estimation ******% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration-------% y_dot = u(1)/3.6; %CarSimkm/hתΪm/s x_dot = u(2)/3.6;%CarSimkm/hתΪm/s if (0 == x_dot) %x_dot=0ΪһdzСַֹĸΪ x_dot = 0.001; end PosPhi = u(3)*pi/180; %CarSimΪǶȣǶתΪ phi_dot = u(4)*pi/180;% deg/s-->rad/s PosY = u(5);%λΪm PosX = u(6);%λΪ steer_L1 = u(7); steer_R1 = u(8); steer_deg = 0.5*(steer_L1 + steer_R1); delta_f_rad = steer_deg*pi/180; Beta = u(9)*pi/180;% IJƫ, Unit:deg-->rad slip_ratio_L1 = u(10); slip_ratio_L2 = u(11); slip_ratio_R1 = u(12); slip_ratio_R2 = u(13); Sf = 0.5*(slip_ratio_L1 +slip_ratio_R1);%ǰֵĻ Sr = 0.5*(slip_ratio_L2 +slip_ratio_R2);%ֵĻ alpha_L1 = u(14); alpha_L2 = u(15); alpha_R1 = u(16); alpha_R2 = u(17); alpha_f = 0.5*(alpha_L1 + alpha_R1); alpha_r = 0.5*(alpha_L2 + alpha_R2); Fy_l1 = round(10*u(18))/10; % N Fy_l2 = round(10*u(19))/10; % N Fy_r1 = round(10*u(20))/10; % N Fy_r2 = round(10*u(21))/10; % N Fyf = Fy_l1 + Fy_r1; Fyr = Fy_l2 + Fy_r2; Fx_L1 = u(22); Fx_L2 = u(23); Fx_R1 = u(24); Fx_R2 = u(25); Fxf = Fx_L1 + Fx_R1; Fxr = Fx_L2 + Fx_R2; %-----Update augmented state vector--------------% kesi = zeros(Naug, 1); kesi(1) = y_dot; kesi(2) = x_dot; kesi(3) = PosPhi; kesi(4) = phi_dot; kesi(5) = PosY; kesi(6) = PosX; kesi(7) = delta_f_rad; % C_cf C_cr C_lf C_lrֱΪǰֵݺƫնȣв %----Estimate Lateral Cornering stiffness with RLS-------------------% alpha_f_Hat = (Beta + phi_dot*VehiclePara.Lf/x_dot - delta_f_rad); [Fyf_hat, Ccf_1] = func_RLSEstimation_Ccf(alpha_f_Hat, Fyf); C_cf = sum(Ccf_1); if C_cf > -30000 C_cf = -110000; end alpha_r_Hat = (Beta - phi_dot*VehiclePara.Lr/x_dot); [Fyr_hat, Ccr_1] = func_RLSEstimation_Ccr(alpha_r_Hat, Fyr); C_cr = sum(Ccr_1); if C_cr > -30000 C_cr = -92000; end %-----Estimate Longitudinal Cornering stiffness with RLS--------------% Sf_Hat = Sf; [Fxf_hat, Clf_1] = func_RLSEstimation_Clf(Sf_Hat, Fxf); C_lf = sum(Clf_1); Sr_Hat = Sr; [Fxr_hat, Clr_1] = func_RLSEstimation_Clf(Sr_Hat, Fxr); C_lr = sum(Clr_1); %-----Use Constant tire stiffness -------------------% % C_cf = -57218; % C_cr = -67587; % % C_lf = 12650; % C_lr = 99141; %*******Step(3): ״̬ **********************************% % ҲҪľǿĻöѧģ % þ복أͨԶѧſ˱Ⱦõ [Ad, Bd] = func_Model_linearization_Jacobian(kesi, Sf, Sr, C_cf, ... C_cr, C_lf, C_lr, ... MPCParameters, VehiclePara); A_cell = cell(2,2); A_cell{1,1} = Ad; A_cell{1,2} = Bd; A_cell{2,1} = zeros(Nu,Nx); A_cell{2,2} = eye(Nu); A = cell2mat(A_cell); B_cell = cell(2,1); B_cell{1,1} = Bd; B_cell{2,1} = eye(Nu); B = cell2mat(B_cell); C = [0 0 1 0 0 0 0; 0 0 0 0 1 0 0]; %*******Step(4): ο켣 **********************************% % %¼ΪɢģԤһʱ״̬ % [state_k1, Yita_ref] = func_Reftraj_doublelane(kesi, Sf, Sr, MPCParameters, ... % VehiclePara, C_cf, C_cr, C_lf, C_lr); % d_k = state_k1-Ad*kesi(1:6,1)-Bd*kesi(7,1);%falconeʽ2.11bd(k,t) % d_piao_k = zeros(Nx+Nu, 1);%d_kʽ % d_piao_k(1:6,1) = d_k; % d_piao_k(7,1) = 0; % e_psi = kesi(3) - state_k1(3); % if(e_psi > pi) % e_psi = e_psi - 2*pi; % end % if(e_psi < -pi) % e_psi = e_psi + 2*pi; % end % e_y = kesi(5) - state_k1(5); [WPIndex, Yita_ref, RefU] = func_RefTraj_LocalPlanning_DSL(MPCParameters,... VehiclePara,... WayPoints_IndexPre,... Reftraj.DLS_path,... kesi); if ( WPIndex <= 0) fprintf('Error: WPIndex <= 0 \n'); % else WayPoints_IndexPre = WPIndex; end d_piao_k = zeros(Nx+Nu, 1);%d_kʽ %****Step(5): MPC formulation;********************% %------Update prediction, ETA = PSI*kesi + GAMMA*PHI - Yref ----% PSI_cell=cell(Np,1); THETA_cell=cell(Np,Nc); GAMMA_cell=cell(Np,Np); PHI_cell=cell(Np,1); for p=1:1:Np; PHI_cell{p,1}=d_piao_k;%˵ҪʵʱµģΪ˼㣬һν for q=1:1:Np; if q<=p; GAMMA_cell{p,q}=C*A^(p-q); else GAMMA_cell{p,q}=zeros(Ny,Nx+Nu); end end end for j=1:1:Np PSI_cell{j,1}=C*A^j; for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; else THETA_cell{j,k}=zeros(Ny,Nu); end end end PSI=cell2mat(PSI_cell);%size(PSI)=[Ny*Np Nx+Nu] THETA=cell2mat(THETA_cell);%size(THETA)=[Ny*Np Nu*Nc] GAMMA=cell2mat(GAMMA_cell);%дGAMMA PHI=cell2mat(PHI_cell); %------Update Q and R temp = [CostWeights.Wephi, CostWeights.Wey]; Qq = diag(temp); Q = kron(eye(Np), Qq); R = kron(eye(Nc), CostWeights.WDdeltaf); %------Update H and f, J=0.5*DU'*H*DU + f'*DU H = THETA'*Q*THETA + R; H = 0.5*(H+H'); error_1 = PSI*kesi + GAMMA*PHI - Yita_ref; %ƫ f = error_1'*Q*THETA; g = f'; %------Update Constaints and bounds Լ---% %Լ A_t = zeros(Nc,Nc);%falcone P181 for p = 1:1:Nc for q = 1:1:Nc if (p >= q) A_t(p,q) = 1; else A_t(p,q) = 0; end end end A_I = kron(A_t,eye(Nu));%ڿ˻ Ut=kron(ones(Nc,1), delta_f_rad); umin = -Constraints.umax;%άƱĸͬ umax = Constraints.umax; Umin=kron(ones(Nc,1), umin); Umax=kron(ones(Nc,1), umax); A_cons_cell = { A_I; -A_I}; A_cons=cell2mat(A_cons_cell);%̣ⷽ״̬ʽԼתΪֵȡֵΧ b_cons_cell = { Umax - Ut; -Umin + Ut}; b_cons = cell2mat(b_cons_cell);%̣ⷽ״̬ʽԼȡֵ % ycmax = Constraints.ycmax; % ycmin = Constraints.ycmin; % Ycmax = kron(ones(Np,1),ycmax); % Ycmin = kron(ones(Np,1),ycmin); %Լ % % A_cons_cell = { A_I; % -A_I; % THETA; % -THETA}; % A_cons=cell2mat(A_cons_cell);%̣ⷽ״̬ʽԼתΪֵȡֵΧ % % b_cons_cell = { Umax - Ut; % -Umin + Ut; % Ycmax - error_1; % -Ycmin + error_1}; % b_cons = cell2mat(b_cons_cell);%̣ⷽ״̬ʽԼȡֵ lb=kron(ones(Nc,1), -Constraints.dumax); ub=kron(ones(Nc,1), Constraints.dumax); %****Step(9): Call quadprog for MPC solver;********************% % options = optimset('quadprog', 'Algorithm', 'active-set'); options = optimoptions('quadprog', 'Display','off', ... 'Algorithm', 'active-set'); DU0 = WarmStart; [DU, FVAL, EXITFLAG] = quadprog(H, g, A_cons, b_cons, [], [], lb, ub, DU0, options); % % [DU, FVAL, EXITFLAG] = quadprog(H, g, [], [], [], [], lb, ub, DU0, options); % WarmStart = shiftHorizon(DU, Nu); % Prepare restart, nominal close loop Steer_SW_deg = 18 * (delta_f_rad + DU(1))*180/pi; t_Elapsed = toc( t_Start ); %computation time end % end of if Initialflag < 2 % sys = [Steer_SW_deg; t_Elapsed; PosX; PosY; PosPhi; e_psi; e_y]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== function U0 = shiftHorizon(U, Nu) %shift control horizon U0 = [U(Nu+1:size(U,1)); zeros(Nu,1)]; % shiftHorizonPrepare restart function [WPIndex, Yita_ref, RefU] = func_RefTraj_LocalPlanning_DSL( MPCParameters, VehiclePara, WayPoints_Index, WayPoints_Collect, VehStateVector) lf = VehiclePara.Lf; lr = VehiclePara.Lr; lfr = VehiclePara.L; m = VehiclePara.m; Iz = VehiclePara.Iz; %IΪZתв Ts = MPCParameters.Ts; Np = MPCParameters.Np; Nx = MPCParameters.Nx; Nu = MPCParameters.Nu; PosPsi = VehStateVector(3); PosY = VehStateVector(5); PosX = VehStateVector(6); %*********** WaypointData2VehicleCoords ************************% ds = 0.1;%m WPNum = length(WayPoints_Collect(:,1)); %--------ҵο·Ͼ복ĵ--------------------------% Dist_MIN = 1000; index_min = 0; for i=WayPoints_Index:1:WPNum deltax = WayPoints_Collect(i,1) - PosX; deltay = WayPoints_Collect(i,2) - PosY; Dist = sqrt(power(deltax,2) + power(deltay,2)); %·㵽ĵľ if Dist < Dist_MIN Dist_MIN = Dist; index_min = i; end end if (index_min < 1) WPIndex = -1; %ûҵ򡣡 else if ( index_min >= WPNum) WPIndex = -2; %ûҵ򡣡 else WPIndex = index_min; end end Yita_ref_cell=cell(Np,1); for p=1:1:Np % X_ref = WayPoints_Collect(WPIndex+p, 1); Y_ref = WayPoints_Collect(WPIndex+p, 2); Heading_ref = WayPoints_Collect(WPIndex+p, 2); Yita_ref_cell{p,1} = [Heading_ref; Y_ref]; end Yita_ref=cell2mat(Yita_ref_cell); RefU = zeros(Np,1); % end % End of func function [state_k1, Yita_ref] = func_Reftraj_doublelane(kesi, Sf, Sr, MPCParameters, VehiclePara, Ccf, Ccr, Clf, Clr) % ˫߹켣״ shape=2.4;%ƣڲο켣 dx1=25; dx2=21.95;%ûκʵ壬ֻDz dy1=4.05; dy2=5.7;%ûκʵ壬ֻDz Xs1=27.19; Xs2=56.46;% lf = VehiclePara.Lf; lr = VehiclePara.Lr; lfr = VehiclePara.L; m = VehiclePara.m; Iz = VehiclePara.Iz; %IΪZתв Ts = MPCParameters.Ts; Np = MPCParameters.Np; Nx = MPCParameters.Nx; Nu = MPCParameters.Nu; y_dot = kesi(1);%u(1)==X(1) x_dot = kesi(2);%u(2)==X(2) phi = kesi(3); %u(3)==X(3) phi_dot = kesi(4); Y = kesi(5); X = kesi(6); delta_f = kesi(7); state_k1 = zeros(Nx, 1); state_k1(1,1)=y_dot+Ts*(-x_dot*phi_dot+2*(Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)+Ccr*(lr*phi_dot-y_dot)/x_dot)/m); state_k1(2,1)=x_dot+Ts*(y_dot*phi_dot+2*(Clf*Sf+Clr*Sr+Ccf*delta_f*(delta_f-(y_dot+phi_dot*lf)/x_dot))/m); state_k1(3,1)=phi+Ts*phi_dot; state_k1(4,1)=phi_dot+Ts*((2*lf*Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)-2*lr*Ccr*(lr*phi_dot-y_dot)/x_dot)/Iz); state_k1(5,1)=Y+Ts*(x_dot*sin(phi)+y_dot*cos(phi)); state_k1(6,1)=X+Ts*(x_dot*cos(phi)-y_dot*sin(phi)); % T_all = 20.0; Yita_ref_cell=cell(Np,1); X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ for p=1:1:Np X_predict = X+X_DOT*p*Ts;%ȼδXλ z1 = shape/dx1*(X_predict-Xs1) - shape/2; z2 = shape/dx2*(X_predict-Xs2) - shape/2; Y_ref = dy1/2*(1+tanh(z1)) - dy2/2*(1+tanh(z2)); phi_ref = atan(dy1*(1/cosh(z1))^2*(1.2/dx1) - dy2*(1/cosh(z2))^2*(1.2/dx2)); Yita_ref_cell{p,1} = [phi_ref; Y_ref]; end Yita_ref=cell2mat(Yita_ref_cell); % end % End of func ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/ReadMe ================================================ MPC for AFS use dynamic model ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/chapt5_MPC_Dynamics_AFS.mdl ================================================ Model { Name "chapt5_MPC_Dynamics_AFS" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.97" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "FinalMPCModelDynamicCarsimWithPlan_1218" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [2469.0, 235.0, 988.0, 611.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [938.0, 434.0] ZoomFactor [1.0] Offset [85.150000000000546, -66.883333333334008] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Thu Sep 19 22:28:53 2019" RTWModifiedTimeStamp 490832404 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "chapt5_MPC_Dynamics_AFS" Array { Type "Cell" Dimension 1 Cell "chapt5_MPC_Dynamics_AFS" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "20" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Scope ModelBased off TickLabels "OneTimeTick" ZoomMode "on" Grid "on" TimeRange "auto" YMin "-5" YMax "5" SaveToWorkspace off SaveName "ScopeData" DataFormat "Array" LimitDataPoints on MaxDataPoints "5000" Decimation "1" SampleInput off SampleTime "-1" } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } Block { BlockType UnitDelay InitialCondition "0" InputProcessing "Inherited" SampleTime "1" StateMustResolveToSignalObject off CodeGenStateStorageClass "Auto" HasFrameUpgradeWarning on } } System { Name "chapt5_MPC_Dynamics_AFS" Location [2469, 235, 3457, 846] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" ReportName "simulink-default.rpt" SIDHighWatermark "90" Block { BlockType Reference Name "CarSim S-Function" SID "47" Ports [1, 1] Position [485, 74, 585, 136] ZOrder -1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "chapt5_Dynamics_AFS.sim" } Block { BlockType S-Function Name "Controller" SID "1" Ports [1, 1] Position [340, 288, 500, 392] ZOrder -3 BlockMirror on BackgroundColor "lightBlue" DropShadow on FunctionName "Main_MPC_Dynamics_AFS" EnableBusSupport off } Block { BlockType Demux Name "Demux" SID "89" Ports [1, 2] Position [280, 196, 285, 234] ZOrder 3 BlockMirror on ShowName off Outputs "[1, 6]" DisplayOption "bar" } Block { BlockType Demux Name "Demux1" SID "54" Ports [1, 6] Position [645, 154, 660, 251] ZOrder -4 ShowName off Outputs "6" DisplayOption "bar" } Block { BlockType Scope Name "Scope2" SID "41" Ports [6] Position [880, 162, 945, 243] ZOrder -9 Floating off Location [6, 48, 1286, 759] Open off NumInputPorts "6" ZoomMode "xonly" List { ListType AxesTitles axes1 "%" axes2 "%" axes3 "%" axes4 "%" axes5 "%" axes6 "%" } List { ListType ScopeGraphics FigureColor "[0.5 0.5 0.5]" AxesColor "[0 0 0]" AxesTickColor "[1 1 1]" LineColors "[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]" LineStyles "-|-|-|-|-|-" LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" MarkerStyles "none|none|none|none|none|none" } ShowLegends off TimeRange "20" YMin "-1~35~-10~-20~-4~0" YMax "1~36.5~5~20~2~200" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Block { BlockType Terminator Name "Terminator" SID "90" Position [165, 210, 230, 240] ZOrder 4 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace" SID "42" Ports [1] Position [785, 77, 950, 133] ZOrder -11 VariableName "CarSim_Exports" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Block { BlockType ToWorkspace Name "To Workspace1" SID "52" Ports [1] Position [165, 325, 225, 355] ZOrder -12 BlockMirror on VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Block { BlockType UnitDelay Name "Unit Delay" SID "57" Position [540, 323, 575, 357] ZOrder -13 BlockMirror on InputProcessing "Elements as channels (sample based)" SampleTime "-1" } Line { ZOrder 1 SrcBlock "CarSim S-Function" SrcPort 1 Points [15, 0] Branch { ZOrder 64 Points [0, 100] Branch { ZOrder 107 Points [0, 135] DstBlock "Unit Delay" DstPort 1 } Branch { ZOrder 62 DstBlock "Demux1" DstPort 1 } } Branch { ZOrder 2 DstBlock "To Workspace" DstPort 1 } } Line { ZOrder 21 SrcBlock "Demux1" SrcPort 1 DstBlock "Scope2" DstPort 1 } Line { ZOrder 22 SrcBlock "Demux1" SrcPort 2 DstBlock "Scope2" DstPort 2 } Line { ZOrder 23 SrcBlock "Demux1" SrcPort 3 DstBlock "Scope2" DstPort 3 } Line { ZOrder 24 SrcBlock "Demux1" SrcPort 4 DstBlock "Scope2" DstPort 4 } Line { ZOrder 25 SrcBlock "Demux1" SrcPort 5 DstBlock "Scope2" DstPort 5 } Line { ZOrder 28 SrcBlock "Demux1" SrcPort 6 DstBlock "Scope2" DstPort 6 } Line { ZOrder 32 SrcBlock "Unit Delay" SrcPort 1 DstBlock "Controller" DstPort 1 } Line { ZOrder 75 SrcBlock "Controller" SrcPort 1 Points [-27, 0] Branch { ZOrder 81 Points [0, -125] DstBlock "Demux" DstPort 1 } Branch { ZOrder 80 DstBlock "To Workspace1" DstPort 1 } } Line { ZOrder 83 SrcBlock "Demux" SrcPort 1 Points [-28, 0; 0, -100] DstBlock "CarSim S-Function" DstPort 1 } Line { ZOrder 84 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Annotation { SID "79" Name "y_dot" Position [734, 155, 760, 170] AutoSize on WordWrap off ZOrder -4 } Annotation { SID "80" Name "x_dot" Position [736, 173, 761, 188] AutoSize on WordWrap off ZOrder -5 } Annotation { SID "81" Name "phi" Position [739, 189, 753, 204] AutoSize on WordWrap off ZOrder -6 } Annotation { SID "82" Name "phi_dot" Position [739, 204, 773, 219] AutoSize on WordWrap off ZOrder -7 } Annotation { SID "83" Name "Y" Position [735, 222, 743, 237] AutoSize on WordWrap off ZOrder -8 } Annotation { SID "84" Name "X" Position [736, 236, 744, 251] AutoSize on WordWrap off ZOrder -9 } } } ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/chapter5_1_1.m ================================================ %% ˳ܣݼ򻯶ѧģ(СǶȼ)ſ˱Ⱦ % 汾V1.0дʱ2013.12.11 % ſ˱Ⱦ복вصģ仯ˣſ˱ȾҲӦ仯 % ֻһֵбҪ clc clear all; %% Ϊ % syms x_dot y_dot phi phi_dot Y X;%״̬ syms delta_f %ǰƫ, %syms sf sr;%ֱΪǰֵĻ,Ҫṩ Sf=0.2; Sr=0.2; %syms a b;%ǰ־복ĵľ룬в a=1.232;b=1.468; %syms C_cf C_cr C_lf C_lr;%ֱΪǰֵݺƫնȣв Ccf=66900;Ccr=62700;Clf=66900;Clr=62700; %syms m g I;%mΪgΪٶȣIΪZתв m=1723;g=9.8;I=4175; % ѧģ dy_dot=-x_dot*phi_dot+2*(Ccf*(delta_f-(y_dot+a*phi_dot)/x_dot)+Ccr*(b*phi_dot-y_dot)/x_dot)/m; dx_dot=y_dot*phi_dot+2*(Clf*Sf+Clr*Sr+Ccf*delta_f*(delta_f-(y_dot+phi_dot*a)/x_dot))/m; %dphi_dot=dphi_dot; dphi_dot=(2*a*Ccf*(delta_f-(y_dot+a*phi_dot)/x_dot)-2*b*Ccr*(b*phi_dot-y_dot)/x_dot)/I; Y_dot=x_dot*sin(phi)+y_dot*cos(phi); X_dot=x_dot*cos(phi)-y_dot*sin(phi); % ſ˱Ⱦ f=[dy_dot;dx_dot;phi_dot;dphi_dot;Y_dot;X_dot];%ѧģ kesi=[y_dot,x_dot,phi,phi_dot,Y,X];%ϵͳ״̬ v=delta_f; R=jacobian(f,kesi);%A(t)- R2=jacobian(f,v);%B(t)- % ƾ(תΪɢ󣬲ý㷨 A=I+T*A(t),B=T*B(t)) I=eye(6); syms T; A=I+T*R; B=T*R2; % A1=vpa(A,3); % B1=vpa(B,3); ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/chapter5_2_2.m ================================================ function [sys,x0,str,ts] = chapter5_2_2(t,x,u,flag) % óܣLTV MPC ͳ򻯶ѧģͣСǶȼ裩ƿΪSimulinkĿ % 汾 V1.0MATLAB汾R2011a,Sı׼ʽ % д 2013.12.11 % һθд 2013.12.16 % ״̬=[y_dot,x_dot,phi,phi_dot,Y,X]Ϊǰƫdelta_f switch flag, case 0 [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 sys = mdlUpdates(t,x,u); % Update discrete states case 3 sys = mdlOutputs(t,x,u); % Calculate outputs % case 4 % sys = mdlGetTimeOfNextVarHit(t,x,u); % Get next sample time case {1,4,9} % Unused flags sys = []; otherwise error(['unhandled flag = ',num2str(flag)]); % Error handling end % End of dsfunc. %============================================================== % Initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 6; sizes.NumOutputs = 6; sizes.NumInputs = 10; sizes.DirFeedthrough = 1; % Matrix D is non-empty. sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = zeros(sizes.NumDiscStates, 1); str = []; % Set str to an empty matrix. ts = [0.05 0]; % sample time: [period, offset] %End of mdlInitializeSizes %============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u) sys = x; %End of mdlUpdate. %============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u) global a b; %global kesi; tic Nx=6;%״̬ĸ Nu=1;%ĸ Ny=2;%ĸ Np =20;%Ԥⲽ Nc=5;%Ʋ Row=1000;%ɳȨ fprintf('Update start, t=%6.3f\n',t) %ӿת,x_dotһdzСǷַֹĸΪ y_dot=u(1)/3.6; %CarSimkm/hתΪm/s x_dot=u(2)/3.6;%CarSimkm/hתΪm/s if (0 == x_dot) x_dot = 0.001; end phi=u(3)*pi/180; %CarSimΪǶȣǶתΪ phi_dot=u(4)*3.141592654/180;% deg/s-->rad/s Y=u(5);%λΪm X=u(6);%λΪ slip_ratio_L1=u(7); slip_ratio_R1=u(8); steer_L1=u(9); steer_R1=u(10); steer_deg = 0.5*(steer_L1 + steer_R1); steer_rad = steer_deg*pi/180; %% %syms sf sr;%ֱΪǰֵĻ,Ҫṩ Sf=0.2; Sr=0.2; %syms lf lr;%ǰ־복ĵľ룬в lf = 1.11; lr = 1.67; lfr = 2.78; %syms C_cf C_cr C_lf C_lr;%ֱΪǰֵݺƫնȣв Ccf=66900; Ccr=62700; Clf=66900; Clr=62700; %syms m g I;%mΪgΪٶȣIΪZתв m = 1600;%ms = 1370; g = 9.8; I = 2315.3; %% ο켣 shape=2.4;%ƣڲο켣 dx1=25;dx2=21.95;%ûκʵ壬ֻDz dy1=4.05;dy2=5.7;%ûκʵ壬ֻDz Xs1=27.19;Xs2=56.46;% X_predict=zeros(Np,1);%ڱԤʱڵλϢǼ켣Ļ phi_ref=zeros(Np,1);%ڱԤʱڵ켣 Y_ref=zeros(Np,1);%ڱԤʱڵ켣 % ¼kesi,״̬һ kesi=zeros(Nx+Nu,1); kesi(1)=y_dot;%u(1)==X(1) kesi(2)=x_dot;%u(2)==X(2) kesi(3)=phi; %u(3)==X(3) kesi(4)=phi_dot; kesi(5)=Y; kesi(6)=X; kesi(7) = steer_rad; delta_f = steer_rad; fprintf('Update start, u(1)=%4.2f\n',steer_rad) T=0.05;%沽 T_all=20;%ܵķʱ䣬ҪǷֹ켣Խ %Ȩؾ Q_cell=cell(Np,Np); for i=1:1:Np; for j=1:1:Np; if i==j %Q_cell{i,j}=[200 0;0 100;]; Q_cell{i,j}=[2000 0;0 10000;]; else Q_cell{i,j}=zeros(Ny,Ny); end end end Q = cell2mat(Q_cell); %R=5*10^4*eye(Nu*Nc); R=5*10^5*eye(Nu*Nc); %ҲҪľǿĻöѧģͣþ복أͨԶѧſ˱Ⱦõ a=[ 1 - (259200*T)/(1723*x_dot), -T*(phi_dot + (2*((460218*phi_dot)/5 - 62700*y_dot))/(1723*x_dot^2) - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2)), 0, -T*(x_dot - 96228/(8615*x_dot)), 0, 0; T*(phi_dot - (133800*delta_f)/(1723*x_dot)), (133800*T*delta_f*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2) + 1, 0, T*(y_dot - (824208*delta_f)/(8615*x_dot)), 0, 0; 0, 0, 1, T, 0, 0; (33063689036759*T)/(7172595384320*x_dot), T*(((2321344006605451863*phi_dot)/8589934592000 - (6325188028897689*y_dot)/34359738368)/(4175*x_dot^2) + (5663914248162509*((154*phi_dot)/125 + y_dot))/(143451907686400*x_dot^2)), 0, 1 - (813165919007900927*T)/(7172595384320000*x_dot), 0, 0; T*cos(phi), T*sin(phi), T*(x_dot*cos(phi) - y_dot*sin(phi)), 0, 1, 0; -T*sin(phi), T*cos(phi), -T*(y_dot*cos(phi) + x_dot*sin(phi)), 0, 0, 1]; b=[ 133800*T/1723; T*((267600*delta_f)/1723 - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot)); 0; 5663914248162509*T/143451907686400; 0; 0]; d_k=zeros(Nx,1);%ƫ state_k1=zeros(Nx,1);%Ԥһʱ״̬ڼƫ %¼ΪɢģԤһʱ״̬ %ע⣬Ϊǰıʽa,ba,bͻǰıʽΪlflr state_k1(1,1)=y_dot+T*(-x_dot*phi_dot+2*(Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)+Ccr*(lr*phi_dot-y_dot)/x_dot)/m); state_k1(2,1)=x_dot+T*(y_dot*phi_dot+2*(Clf*Sf+Clr*Sr+Ccf*delta_f*(delta_f-(y_dot+phi_dot*lf)/x_dot))/m); state_k1(3,1)=phi+T*phi_dot; state_k1(4,1)=phi_dot+T*((2*lf*Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)-2*lr*Ccr*(lr*phi_dot-y_dot)/x_dot)/I); state_k1(5,1)=Y+T*(x_dot*sin(phi)+y_dot*cos(phi)); state_k1(6,1)=X+T*(x_dot*cos(phi)-y_dot*sin(phi)); d_k=state_k1-a*kesi(1:6,1)-b*kesi(7,1);%falconeʽ2.11bd(k,t) d_piao_k=zeros(Nx+Nu,1);%d_kʽοfalcone(B,4c) d_piao_k(1:6,1)=d_k; d_piao_k(7,1)=0; A_cell=cell(2,2); B_cell=cell(2,1); A_cell{1,1}=a; A_cell{1,2}=b; A_cell{2,1}=zeros(Nu,Nx); A_cell{2,2}=eye(Nu); B_cell{1,1}=b; B_cell{2,1}=eye(Nu); %A=zeros(Nu+Nx,Nu+Nx); A=cell2mat(A_cell); B=cell2mat(B_cell); % C=[0 0 1 0 0 0 0;0 0 0 1 0 0 0;0 0 0 0 1 0 0;];%Ǻܹ C = [0 0 1 0 0 0 0; 0 0 0 0 1 0 0;]; PSI_cell=cell(Np,1); THETA_cell=cell(Np,Nc); GAMMA_cell=cell(Np,Np); PHI_cell=cell(Np,1); for p=1:1:Np; PHI_cell{p,1}=d_piao_k;%˵ҪʵʱµģΪ˼㣬һν for q=1:1:Np; if q<=p; GAMMA_cell{p,q}=C*A^(p-q); else GAMMA_cell{p,q}=zeros(Ny,Nx+Nu); end end end for j=1:1:Np PSI_cell{j,1}=C*A^j; for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; else THETA_cell{j,k}=zeros(Ny,Nu); end end end PSI=cell2mat(PSI_cell);%size(PSI)=[Ny*Np Nx+Nu] THETA=cell2mat(THETA_cell);%size(THETA)=[Ny*Np Nu*Nc] GAMMA=cell2mat(GAMMA_cell);%дGAMMA PHI=cell2mat(PHI_cell); H_cell=cell(2,2); H_cell{1,1}=THETA'*Q*THETA + R; H_cell{1,2}=zeros(Nu*Nc,1); H_cell{2,1}=zeros(1,Nu*Nc); H_cell{2,2}=Row; H=cell2mat(H_cell); error_1=zeros(Ny*Np,1); Yita_ref_cell=cell(Np,1); for p=1:1:Np if t+p*T>T_all X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ X_predict(Np,1)=X+X_DOT*Np*T; %X_predict(Np,1)=X+X_dot*Np*t; z1=shape/dx1*(X_predict(Np,1)-Xs1)-shape/2; z2=shape/dx2*(X_predict(Np,1)-Xs2)-shape/2; Y_ref(p,1)=dy1/2*(1+tanh(z1))-dy2/2*(1+tanh(z2)); phi_ref(p,1)=atan(dy1*(1/cosh(z1))^2*(1.2/dx1)-dy2*(1/cosh(z2))^2*(1.2/dx2)); Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)]; else X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ X_predict(p,1)=X+X_DOT*p*T;%ȼδXλãX(t)=X+X_dot*t z1=shape/dx1*(X_predict(p,1)-Xs1)-shape/2; z2=shape/dx2*(X_predict(p,1)-Xs2)-shape/2; Y_ref(p,1)=dy1/2*(1+tanh(z1))-dy2/2*(1+tanh(z2)); phi_ref(p,1)=atan(dy1*(1/cosh(z1))^2*(1.2/dx1)-dy2*(1/cosh(z2))^2*(1.2/dx2)); Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)]; end end Yita_ref=cell2mat(Yita_ref_cell); error_1 = PSI*kesi + GAMMA*PHI - Yita_ref; %ƫ f_cell=cell(1,2); f_cell{1,1}=error_1'*Q*THETA; f_cell{1,2}=0; f=cell2mat(f_cell)'; %% ΪԼ %Լ A_t=zeros(Nc,Nc);%falcone P181 for p=1:1:Nc for q=1:1:Nc if q<=p A_t(p,q)=1; else A_t(p,q)=0; end end end A_I=kron(A_t,eye(Nu));%ڿ˻ Ut=kron(ones(Nc,1), steer_rad); umin = -0.1744;%άƱĸͬ umax = 0.1744; % 0.1744rad = 10deg Umin=kron(ones(Nc,1),umin); Umax=kron(ones(Nc,1),umax); %Լ ycmax=[0.21;5]; ycmin=[-0.3;-3]; Ycmax=kron(ones(Np,1),ycmax); Ycmin=kron(ones(Np,1),ycmin); %ϿԼԼ A_cons_cell={A_I zeros(Nu*Nc,1); -A_I zeros(Nu*Nc,1);THETA zeros(Ny*Np,1);-THETA zeros(Ny*Np,1)}; b_cons_cell={Umax-Ut; -Umin+Ut; Ycmax-PSI*kesi-GAMMA*PHI; -Ycmin+PSI*kesi+GAMMA*PHI}; A_cons=cell2mat(A_cons_cell);%̣ⷽ״̬ʽԼתΪֵȡֵΧ b_cons=cell2mat(b_cons_cell);%̣ⷽ״̬ʽԼȡֵ %״̬Լ M=10; delta_umin=-0.0148; % 0.0148rad = 0.8deg delta_umax=0.0148; delta_Umin=kron(ones(Nc,1),delta_umin); delta_Umax=kron(ones(Nc,1),delta_umax); lb=[delta_Umin;0];%̣ⷽ״̬½磬ʱڿɳ ub=[delta_Umax;M];%̣ⷽ״̬Ͻ磬ʱڿɳ %% ʼ options = optimset('Algorithm','active-set'); x_start=zeros(Nc+1,1);%һʼ [DU,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options); fprintf('exitflag=%d\n',exitflag); fprintf('H=%4.2f\n',H(1,1)); fprintf('f=%4.2f\n',f(1,1)); %% % u_piao=DU(1);%õ % U(1)=kesi(7,1)+u_piao;%ǰʱ̵ĿΪһʱ̿+ %U(2)=Yita_ref(2);%dphi_ref % sys= U; steer_des = steer_rad + DU(1); steer_des_deg = steer_des*180/pi; sys= [steer_des_deg; steer_des_deg; 0; 0;Y; X]; toc % End of mdlOutputs. ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/func_Model_linearization_Jacobian.m ================================================ function [Ad, Bd] = func_Model_linearization_Jacobian(kesi, Sf, Sr, Ccf, Ccr, Clf, Clr, MPCParameters, VehiclePara) %***************************************************************% % ݼ򻯶ѧģ(СǶȼ)ſ˱Ⱦ % ſ˱Ⱦ복в %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My homepage: https://sites.google.com/site/kailiumiracle/ %***************************************************************% %---------- -----------% syms y_dot x_dot phi phi_dot Y X;%״̬ syms delta_f %ǰƫ, Ts = MPCParameters.Ts; a = VehiclePara.Lf; b = VehiclePara.Lr; m = VehiclePara.m; Iz = VehiclePara.Iz; %----ѧģ-------------% dy_dot = -x_dot*phi_dot + 2*(Ccf*((y_dot+a*phi_dot)/x_dot - delta_f) + Ccr*(y_dot - b*phi_dot)/x_dot)/m; dx_dot = y_dot*phi_dot + 2*(Clf*Sf + Clr*Sr + Ccf*((y_dot + phi_dot*a)/x_dot - delta_f)*delta_f)/m; dphi_dot = (2*a*Ccf*((y_dot+a*phi_dot)/x_dot - delta_f) - 2*b*Ccr*(y_dot - b*phi_dot)/x_dot)/Iz; Y_dot = x_dot*sin(phi) + y_dot*cos(phi); X_dot = x_dot*cos(phi) - y_dot*sin(phi); %----ſ˱Ⱦ-------------% Dynamics_func = [dy_dot; dx_dot; phi_dot; dphi_dot; Y_dot; X_dot];%ѧģ state_vector = [y_dot,x_dot,phi,phi_dot,Y,X];%ϵͳ״̬ control_input = delta_f; A_t = jacobian(Dynamics_func, state_vector); %A(t)- B_t = jacobian(Dynamics_func, control_input); %B(t)- %----תΪɢ-------------% % Forward Euler Method㷨 A = I+Ts*A(t),B = Ts*B(t) I_6 = eye(6); Ad_temp = I_6 + Ts * A_t; Bd_temp = Ts * B_t; %----ȡ״̬-------------% y_dot = kesi(1); x_dot = kesi(2); phi = kesi(3); phi_dot = kesi(4); Y = kesi(5); X = kesi(6); delta_f = kesi(7); Ad = eval(Ad_temp); Bd = eval(Bd_temp); end % end of func. ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/func_RLSEstimation_Ccf.m ================================================ function [y, Bout] = func_RLSEstimation_Ccf(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_cf, Num_cf, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_cf: is also called the "forgetting" exponential weight factor % Num_cf is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_cf F_cf B_cf lambda_cf Num_cf Rinv_cf %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f, 'initial')) % Initial lambda_cf = d; % delta = delta_n; Num_cf = FIR_Num; Rinv_cf = delta_n*eye(Num_cf); F_cf = zeros(Num_cf,1); Y_cf = zeros(1, Num_cf); B_cf = -92000; %zeros(1,1); y = 0; Bout = 0; else % Filtering: for J = Num_cf:-1:2 F_cf(J) = F_cf(J-1); Y_cf(J) = Y_cf(J-1); end; F_cf(1) = f; Y_cf(1) = d; % Perform the convolution y= F_cf'*B_cf; error=Y_cf-y;% 1*nd % Kalman gains K = Rinv_cf*F_cf/(lambda_cf + F_cf'*Rinv_cf*F_cf); % Update Rinv_cf Rinvn = (Rinv_cf - K*F_cf'*Rinv_cf)/lambda_cf; % Update the filter coefficients B_cf = B_cf + K* error; Rinv_cf = Rinvn; Bout = B_cf; % R_f_out = Rinv_cf; end end ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/func_RLSEstimation_Ccr.m ================================================ function [y, Bout] = func_RLSEstimation_Ccr(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_cr, Num_cr, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_cr: is also called the "forgetting" exponential weight factor % Num_cr is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_cr F_cr B_cr lambda_cr Num_cr Rinv_cr %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_cr = d; % delta = delta_n; Num_cr = FIR_Num; Rinv_cr = delta_n*eye(Num_cr); F_cr = zeros(Num_cr,1); Y_cr = zeros(1, Num_cr); B_cr = -92000; %zeros(Num_cr,1); y = 0; Bout = 0; else % Filtering: for J = Num_cr:-1:2 F_cr(J) = F_cr(J-1); Y_cr(J) = Y_cr(J-1); end; F_cr(1) = f; Y_cr(1) = d; % Perform the convolution y= F_cr'*B_cr; error=Y_cr-y; % Kalman gains K = Rinv_cr*F_cr/(lambda_cr + F_cr'*Rinv_cr*F_cr); % Update Rinv_cr Rinvn = (Rinv_cr - K*F_cr'*Rinv_cr)/lambda_cr; % Update the filter coefficients B_cr = B_cr + K * error; Rinv_cr = Rinvn; Bout = B_cr; % R_r_out = Rinv_cr; end end ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/func_RLSEstimation_Clf.m ================================================ function [y, Bout] = func_RLSEstimation_Clf(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_lf, Num_lf, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_lf: is also called the "forgetting" exponential weight factor % Num_lf is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_lf F_lf B_lf lambda_lf Num_lf Rinv_lf %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f, 'initial')) % Initial lambda_lf = d; Num_lf = FIR_Num; Rinv_lf = delta_n*eye(Num_lf); F_lf = zeros(Num_lf,1); Y_lf = zeros(1, Num_lf); B_lf = -92000; %zeros(1,1); y = 0; Bout = 0; else % Filtering: for J = Num_lf:-1:2 F_lf(J) = F_lf(J-1); Y_lf(J) = Y_lf(J-1); end; F_lf(1) = f; Y_lf(1) = d; % Perform the convolution y= F_lf'*B_lf; error=Y_lf-y;% 1*nd % Kalman gains K = Rinv_lf*F_lf/(lambda_lf + F_lf'*Rinv_lf*F_lf); % Update Rinv_lf Rinvn = (Rinv_lf - K*F_lf'*Rinv_lf)/lambda_lf; % Update the filter coefficients B_lf = B_lf + K* error; Rinv_lf = Rinvn; Bout = B_lf; end end ================================================ FILE: Chapter-5/chap5_DynamicModel_AFS/func_RLSEstimation_Clr.m ================================================ function [y, Bout, R_r_out] = func_RLSEstimation_Clr(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_lr, Num_lr, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_lr: is also called the "forgetting" exponential weight factor % Num_lr is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_lr F_lr B_lr lambda_lr Num_lr Rinv_lr %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_lr = d; % delta = delta_n; Num_lr = FIR_Num; Rinv_lr = delta_n*eye(Num_lr); F_lr = zeros(Num_lr,1); Y_lr = zeros(1, Num_lr); B_lr = -92000; %zeros(Num_lr,1); y = 0; Bout = 0; else % Filtering: for J = Num_lr:-1:2 F_lr(J) = F_lr(J-1); Y_lr(J) = Y_lr(J-1); end; F_lr(1) = f; Y_lr(1) = d; % Perform the convolution y= F_lr'*B_lr; error=Y_lr-y; % Kalman gains K = Rinv_lr*F_lr/(lambda_lr + F_lr'*Rinv_lr*F_lr); % Update Rinv_lr Rinvn = (Rinv_lr - K*F_lr'*Rinv_lr)/lambda_lr; % Update the filter coefficients B_lr = B_lr + K * error; Rinv_lr = Rinvn; Bout = B_lr; R_r_out = Rinv_lr; end end ================================================ FILE: Chapter-5/chap5_TireStiffness_Estimation/Main_TireStiffness_Estimation.m ================================================ function [sys,x0,str,ts] =Main_TireStiffness_Estimation(t,x,u,flag) %***************************************************************% % Simulation for estimation of cornering stiffness using RLS method % Assume: lf, lr are known; % Assume: Vy, Vel, steering_angle and side-slip angle are measurable %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵ sizes.NumOutputs = 12; %Sеĸ sizes.NumInputs = 21; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05s %------------Global parameters and initialization--------------------% global InitialGapflag; InitialGapflag = 0; % Ignore the first few inputs from CarSim % vehicle parameters initialization global VehicleParams; % for SUV VehicleParams.Lf = 1.12; % 1.05 VehicleParams.Lr = 1.48; % 1.55 % RLS for longitudinal stiffness initialization [y, Ccf] = func_RLSEstimation_Clf('initial', 0.95, 1, 10); [y, Ccr] = func_RLSEstimation_Clr('initial', 0.95, 1, 10); % RLS for cornering stiffness initialization [y, Clf] = func_RLSEstimation_Ccf('initial', 0.95, 1, 10); [y, Clr] = func_RLSEstimation_Ccr('initial', 0.95, 1, 10); % global RLS_params; % RLS_params.nDataTuple = 10; % RLS_params.nCoefficients = 1; % RLS_params.initialCoefficients = -90000* ones(RLS_params.nCoefficients,1); % RLS_params.delta = 10; % RLS_params.lambda = 0.95; % [y, e, c] = func_RLS_Alt_New('initial', 0, params); % % global pre_regressor; % nc = 1; % nd = 10; % pre_regressor.input = zeros(nc,nd); % pre_regressor.d = zeros(nd,1); % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % Ŀǰûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== global InitialGapflag; global VehicleParams; Ccf_Hat = 0; Ccr_Hat = 0; Clf_Hat = 0; Clr_Hat = 0; Fyf_Hat_err = 0; Fyr_Hat_err = 0; Fxf_Hat_err = 0; Fxr_Hat_err = 0; alpha_f_Hat = 0; alpha_r_Hat = 0; alpha_f_Direct = 0; alpha_r_Direct = 0; if InitialGapflag < 3 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %-----Update State Estimation of measured Vehicle Configuration------% [Carsim_export] = func_CarsimData_Parse(u); Vx = Carsim_export.x_dot; Vy = Carsim_export.y_dot; yawrate = Carsim_export.phi_dot; % rad/s fwa = Carsim_export.fwa; Fyf_Direct = Carsim_export.Fyf; Fyr_Direct = Carsim_export.Fyr; alpha_f_Direct = Carsim_export.alphaf; alpha_r_Direct = Carsim_export.alphar; kappa_f_Direct = Carsim_export.kappa_f; kappa_r_Direct = Carsim_export.kappa_r; Fxf_Direct = Carsim_export.Fxf; Fxr_Direct = Carsim_export.Fxr; %-----1. Estimate Cornering stiffness use estimated sideslip angle----% %for front tire alpha_f_Hat = (Vy + yawrate*VehicleParams.Lf)/Vx - fwa; [Fyf_hat, Ccf_Hat] = func_RLSEstimation_Ccf(alpha_f_Hat, Fyf_Direct); Fyf_Hat_err = Fyf_hat - Fyf_Direct; %for rear tire alpha_r_Hat = (Vy - yawrate*VehicleParams.Lr)/Vx; [Fyr_hat, Ccr_Hat] = func_RLSEstimation_Ccr(alpha_r_Hat, Fyr_Direct); Fyr_Hat_err = Fyr_hat - Fyr_Direct; %-----2. Estimate longitudinal stiffness use direct tire slip ratio---% %for front tire [Fxf_hat, Clf_Hat] = func_RLSEstimation_Clf(kappa_f_Direct, Fxf_Direct); Fxf_Hat_err = Fxf_hat - Fxf_Direct; %for rear tire [Fxr_hat, Clr_Hat] = func_RLSEstimation_Clr(kappa_r_Direct, Fxr_Direct); Fxr_Hat_err = Fxr_hat - Fxr_Direct; end % end of if Initialflag < 2 % sys = [Ccf_Hat; Ccr_Hat; Fyf_Hat_err; Fyr_Hat_err; Clf_Hat; Clr_Hat; Fxf_Hat_err; Fxr_Hat_err; alpha_f_Hat; alpha_r_Hat; alpha_f_Direct; alpha_r_Direct]; % % sys = [t_Elapsed; Ax; Ay_G_SM; fwa; Beta; Vel; Vy; yawrate; Roll; Rollrate; vx_hat; vy_hat; yawrate_hat; roll_hat; rollrate_hat; CafHat; CarHat; C_alpha_f_hat_ay; C_alpha_r_hat_ay]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [Sparsed_Carsim_Data] = func_CarsimData_Parse(CarsimData) %***************************************************************% % Parse data exported from CarSim, ˳CarSimһ %***************************************************************% Sparsed_Carsim_Data.x_dot = CarsimData(1)/3.6; %Unit:km/h-->m/s1λС Sparsed_Carsim_Data.y_dot = CarsimData(2)/3.6; %Unit:km/h-->m/s1λС Sparsed_Carsim_Data.phi_dot = (round(10*CarsimData(3))/10)*pi/180; %Unitdeg/s-->rad/s1λС Sparsed_Carsim_Data.fwa = (round(10*0.5*(CarsimData(4)+ CarsimData(5)))/10)*pi/180; % deg-->rad Sparsed_Carsim_Data.alphaf = (round(10*0.5 * (CarsimData(6)+ CarsimData(8)))/10)*pi/180; % deg-->rad1λС Sparsed_Carsim_Data.alphar = (round(10*0.5 * (CarsimData(7)+ CarsimData(9)))/10)*pi/180; % deg-->rad1λС Fy_l1 = round(10*CarsimData(10))/10; %Unit:N1λС Fy_l2 = round(10*CarsimData(11))/10; %Unit:N1λС Fy_r1 = round(10*CarsimData(12))/10; %Unit:N1λС Fy_r2 = round(10*CarsimData(13))/10; %Unit:N1λС Sparsed_Carsim_Data.Fyf = Fy_l1 + Fy_r1; Sparsed_Carsim_Data.Fyr = Fy_l2 + Fy_r2; KappaL1 = CarsimData(14); KappaL2 = CarsimData(15); KappaR1 = CarsimData(16); KappaR2 = CarsimData(17); Sparsed_Carsim_Data.kappa_f = 0.5*(KappaL1 + KappaR1); Sparsed_Carsim_Data.kappa_r = 0.5*(KappaL2 + KappaR2); Fx_l1 = round(10*CarsimData(18))/10; %Unit:N1λС Fx_l2 = round(10*CarsimData(19))/10; %Unit:N1λС Fx_r1 = round(10*CarsimData(20))/10; %Unit:N1λС Fx_r2 = round(10*CarsimData(21))/10; %Unit:N1λС Sparsed_Carsim_Data.Fxf = Fx_l1 + Fx_r1; Sparsed_Carsim_Data.Fxr = Fx_l2 + Fx_r2; % end % end of func_StateEstimation ================================================ FILE: Chapter-5/chap5_TireStiffness_Estimation/SaveSimData2Mat.m ================================================ % Sim_Data_Both_ConstantCorneringStiff = Sim_Data_Both_ConstantCornering; % save SimResult_Both.mat Sim_Data; % save SimResult_OnlyBank.mat Sim_Data; % save SimResult_OnlyCurvature.mat Sim_Data; % Outputed_Data = Outputed_Data.signals.values(:,:); save TireStiffnessEstimation_Data.mat Outputed_Data; ================================================ FILE: Chapter-5/chap5_TireStiffness_Estimation/TireStiffness_Estimation.mdl ================================================ Model { Name "TireStiffness_Estimation" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.297" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "DynamicsEstimation" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [1018.0, 316.0, 809.0, 544.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [759.0, 367.0] ZoomFactor [1.25] Offset [268.00714285714218, 235.39999999999998] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Wed Sep 18 09:17:29 2019" RTWModifiedTimeStamp 490697735 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "TireStiffness_Estimation" Array { Type "Cell" Dimension 1 Cell "TireStiffness_Estimation" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "40" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "TireStiffness_Estimation" Location [1018, 316, 1827, 860] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "125" ReportName "simulink-default.rpt" SIDHighWatermark "146" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [0, 1] Position [350, 286, 445, 354] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "LEO_TireStiffness_Estimation.sim" } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [475, 287, 705, 353] ZOrder 12 FunctionName "Main_TireStiffness_Estimation" EnableBusSupport off } Block { BlockType ToWorkspace Name "To Workspace" SID "115" Ports [1] Position [735, 302, 830, 338] ZOrder 19 VariableName "Outputed_Data" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 131 SrcBlock "CarSim S-Function" SrcPort 1 DstBlock "S-Function" DstPort 1 } Line { ZOrder 132 SrcBlock "S-Function" SrcPort 1 DstBlock "To Workspace" DstPort 1 } } } ================================================ FILE: Chapter-5/chap5_TireStiffness_Estimation/func_RLSEstimation_Ccf.m ================================================ function [y, Bout] = func_RLSEstimation_Ccf(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_cf, Num_cf, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_cf: is also called the "forgetting" exponential weight factor % Num_cf is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_cf F_cf B_cf lambda_cf Num_cf Rinv_cf %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f, 'initial')) % Initial lambda_cf = d; % delta = delta_n; Num_cf = FIR_Num; Rinv_cf = delta_n*eye(Num_cf); F_cf = zeros(Num_cf,1); Y_cf = zeros(1, Num_cf); B_cf = -92000; %zeros(1,1); y = 0; Bout = 0; else % Filtering: for J = Num_cf:-1:2 F_cf(J) = F_cf(J-1); Y_cf(J) = Y_cf(J-1); end; F_cf(1) = f; Y_cf(1) = d; % Perform the convolution y= F_cf'*B_cf; error=Y_cf-y;% 1*nd % Kalman gains K = Rinv_cf*F_cf/(lambda_cf + F_cf'*Rinv_cf*F_cf); % Update Rinv_cf Rinvn = (Rinv_cf - K*F_cf'*Rinv_cf)/lambda_cf; % Update the filter coefficients B_cf = B_cf + K* error; Rinv_cf = Rinvn; Bout = B_cf; % R_f_out = Rinv_cf; end end ================================================ FILE: Chapter-5/chap5_TireStiffness_Estimation/func_RLSEstimation_Ccr.m ================================================ function [y, Bout] = func_RLSEstimation_Ccr(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_cr, Num_cr, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_cr: is also called the "forgetting" exponential weight factor % Num_cr is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_cr F_cr B_cr lambda_cr Num_cr Rinv_cr %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_cr = d; % delta = delta_n; Num_cr = FIR_Num; Rinv_cr = delta_n*eye(Num_cr); F_cr = zeros(Num_cr,1); Y_cr = zeros(1, Num_cr); B_cr = -92000; %zeros(Num_cr,1); y = 0; Bout = 0; else % Filtering: for J = Num_cr:-1:2 F_cr(J) = F_cr(J-1); Y_cr(J) = Y_cr(J-1); end; F_cr(1) = f; Y_cr(1) = d; % Perform the convolution y= F_cr'*B_cr; error=Y_cr-y; % Kalman gains K = Rinv_cr*F_cr/(lambda_cr + F_cr'*Rinv_cr*F_cr); % Update Rinv_cr Rinvn = (Rinv_cr - K*F_cr'*Rinv_cr)/lambda_cr; % Update the filter coefficients B_cr = B_cr + K * error; Rinv_cr = Rinvn; Bout = B_cr; % R_r_out = Rinv_cr; end end ================================================ FILE: Chapter-5/chap5_TireStiffness_Estimation/func_RLSEstimation_Clf.m ================================================ function [y, Bout] = func_RLSEstimation_Clf(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_lf, Num_lf, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_lf: is also called the "forgetting" exponential weight factor % Num_lf is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_lf F_lf B_lf lambda_lf Num_lf Rinv_lf %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f, 'initial')) % Initial lambda_lf = d; Num_lf = FIR_Num; Rinv_lf = delta_n*eye(Num_lf); F_lf = zeros(Num_lf,1); Y_lf = zeros(1, Num_lf); B_lf = -92000; %zeros(1,1); y = 0; Bout = 0; else % Filtering: for J = Num_lf:-1:2 F_lf(J) = F_lf(J-1); Y_lf(J) = Y_lf(J-1); end; F_lf(1) = f; Y_lf(1) = d; % Perform the convolution y= F_lf'*B_lf; error=Y_lf-y;% 1*nd % Kalman gains K = Rinv_lf*F_lf/(lambda_lf + F_lf'*Rinv_lf*F_lf); % Update Rinv_lf Rinvn = (Rinv_lf - K*F_lf'*Rinv_lf)/lambda_lf; % Update the filter coefficients B_lf = B_lf + K* error; Rinv_lf = Rinvn; Bout = B_lf; end end ================================================ FILE: Chapter-5/chap5_TireStiffness_Estimation/func_RLSEstimation_Clr.m ================================================ function [y, Bout, R_r_out] = func_RLSEstimation_Clr(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_lr, Num_lr, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_lr: is also called the "forgetting" exponential weight factor % Num_lr is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent Y_lr F_lr B_lr lambda_lr Num_lr Rinv_lr %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_lr = d; % delta = delta_n; Num_lr = FIR_Num; Rinv_lr = delta_n*eye(Num_lr); F_lr = zeros(Num_lr,1); Y_lr = zeros(1, Num_lr); B_lr = -92000; %zeros(Num_lr,1); y = 0; Bout = 0; else % Filtering: for J = Num_lr:-1:2 F_lr(J) = F_lr(J-1); Y_lr(J) = Y_lr(J-1); end; F_lr(1) = f; Y_lr(1) = d; % Perform the convolution y= F_lr'*B_lr; error=Y_lr-y; % Kalman gains K = Rinv_lr*F_lr/(lambda_lr + F_lr'*Rinv_lr*F_lr); % Update Rinv_lr Rinvn = (Rinv_lr - K*F_lr'*Rinv_lr)/lambda_lr; % Update the filter coefficients B_lr = B_lr + K * error; Rinv_lr = Rinvn; Bout = B_lr; R_r_out = Rinv_lr; end end ================================================ FILE: Chapter-5/chapter5_1_1.m ================================================ %% ˳ܣݼ򻯶ѧģ(СǶȼ)ſ˱Ⱦ % 汾V1.0дʱ2013.12.11 % ſ˱Ⱦ복вصģ仯ˣſ˱ȾҲӦ仯 % ֻһֵбҪ clc clear all; %% Ϊ % syms x_dot y_dot phi phi_dot Y X;%״̬ syms delta_f %ǰƫ, %syms sf sr;%ֱΪǰֵĻ,Ҫṩ Sf=0.2; Sr=0.2; %syms a b;%ǰ־복ĵľ룬в a=1.232;b=1.468; %syms C_cf C_cr C_lf C_lr;%ֱΪǰֵݺƫնȣв Ccf=66900;Ccr=62700;Clf=66900;Clr=62700; %syms m g I;%mΪgΪٶȣIΪZתв m=1723;g=9.8;I=4175; % ѧģ dy_dot=-x_dot*phi_dot+2*(Ccf*(delta_f-(y_dot+a*phi_dot)/x_dot)+Ccr*(b*phi_dot-y_dot)/x_dot)/m; dx_dot=y_dot*phi_dot+2*(Clf*Sf+Clr*Sr+Ccf*delta_f*(delta_f-(y_dot+phi_dot*a)/x_dot))/m; %dphi_dot=dphi_dot; dphi_dot=(2*a*Ccf*(delta_f-(y_dot+a*phi_dot)/x_dot)-2*b*Ccr*(b*phi_dot-y_dot)/x_dot)/I; Y_dot=x_dot*sin(phi)+y_dot*cos(phi); X_dot=x_dot*cos(phi)-y_dot*sin(phi); % ſ˱Ⱦ f=[dy_dot;dx_dot;phi_dot;dphi_dot;Y_dot;X_dot];%ѧģ kesi=[y_dot,x_dot,phi,phi_dot,Y,X];%ϵͳ״̬ v=delta_f; R=jacobian(f,kesi);%A(t)- R2=jacobian(f,v);%B(t)- % ƾ(תΪɢ󣬲ý㷨 A=I+T*A(t),B=T*B(t)) I=eye(6); syms T; A=I+T*R; B=T*R2; A1=vpa(A,3); B1=vpa(B,3); ================================================ FILE: Chapter-5/chapter5_2_2.m ================================================ function [sys,x0,str,ts] = chapter5_2_2(t,x,u,flag) % óܣLTV MPC ͳ򻯶ѧģͣСǶȼ裩ƿΪSimulinkĿ % 汾 V1.0MATLAB汾R2011a,Sı׼ʽ % д 2013.12.11 % һθд 2013.12.16 % ״̬=[y_dot,x_dot,phi,phi_dot,Y,X]Ϊǰƫdelta_f switch flag, case 0 [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 sys = mdlUpdates(t,x,u); % Update discrete states case 3 sys = mdlOutputs(t,x,u); % Calculate outputs % case 4 % sys = mdlGetTimeOfNextVarHit(t,x,u); % Get next sample time case {1,4,9} % Unused flags sys = []; otherwise error(['unhandled flag = ',num2str(flag)]); % Error handling end % End of dsfunc. %============================================================== % Initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 6; sizes.NumOutputs = 6; sizes.NumInputs = 10; sizes.DirFeedthrough = 1; % Matrix D is non-empty. sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = zeros(sizes.NumDiscStates, 1); str = []; % Set str to an empty matrix. ts = [0.05 0]; % sample time: [period, offset] %End of mdlInitializeSizes %============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u) sys = x; %End of mdlUpdate. %============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u) global a b; %global kesi; tic Nx=6;%״̬ĸ Nu=1;%ĸ Ny=2;%ĸ Np =20;%Ԥⲽ Nc=5;%Ʋ Row=1000;%ɳȨ fprintf('Update start, t=%6.3f\n',t) %ӿת,x_dotһdzСǷַֹĸΪ y_dot=u(1)/3.6; %CarSimkm/hתΪm/s x_dot=u(2)/3.6;%CarSimkm/hתΪm/s if (0 == x_dot) x_dot = 0.001; end phi=u(3)*pi/180; %CarSimΪǶȣǶתΪ phi_dot=u(4)*3.141592654/180;% deg/s-->rad/s Y=u(5);%λΪm X=u(6);%λΪ slip_ratio_L1=u(7); slip_ratio_R1=u(8); steer_L1=u(9); steer_R1=u(10); steer_deg = 0.5*(steer_L1 + steer_R1); steer_rad = steer_deg*pi/180; %% %syms sf sr;%ֱΪǰֵĻ,Ҫṩ Sf=0.2; Sr=0.2; %syms lf lr;%ǰ־복ĵľ룬в lf = 1.11; lr = 1.67; lfr = 2.78; %syms C_cf C_cr C_lf C_lr;%ֱΪǰֵݺƫնȣв Ccf=66900; Ccr=62700; Clf=66900; Clr=62700; %syms m g I;%mΪgΪٶȣIΪZתв m = 1600;%ms = 1370; g = 9.8; I = 2315.3; %% ο켣 shape=2.4;%ƣڲο켣 dx1=25;dx2=21.95;%ûκʵ壬ֻDz dy1=4.05;dy2=5.7;%ûκʵ壬ֻDz Xs1=27.19;Xs2=56.46;% X_predict=zeros(Np,1);%ڱԤʱڵλϢǼ켣Ļ phi_ref=zeros(Np,1);%ڱԤʱڵ켣 Y_ref=zeros(Np,1);%ڱԤʱڵ켣 % ¼kesi,״̬һ kesi=zeros(Nx+Nu,1); kesi(1)=y_dot;%u(1)==X(1) kesi(2)=x_dot;%u(2)==X(2) kesi(3)=phi; %u(3)==X(3) kesi(4)=phi_dot; kesi(5)=Y; kesi(6)=X; kesi(7) = steer_rad; delta_f = steer_rad; fprintf('Update start, u(1)=%4.2f\n',steer_rad) T=0.05;%沽 T_all=20;%ܵķʱ䣬ҪǷֹ켣Խ %Ȩؾ Q_cell=cell(Np,Np); for i=1:1:Np; for j=1:1:Np; if i==j %Q_cell{i,j}=[200 0;0 100;]; Q_cell{i,j}=[2000 0;0 10000;]; else Q_cell{i,j}=zeros(Ny,Ny); end end end Q = cell2mat(Q_cell); %R=5*10^4*eye(Nu*Nc); R=5*10^5*eye(Nu*Nc); %ҲҪľǿĻöѧģͣþ복أͨԶѧſ˱Ⱦõ a=[ 1 - (259200*T)/(1723*x_dot), -T*(phi_dot + (2*((460218*phi_dot)/5 - 62700*y_dot))/(1723*x_dot^2) - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2)), 0, -T*(x_dot - 96228/(8615*x_dot)), 0, 0; T*(phi_dot - (133800*delta_f)/(1723*x_dot)), (133800*T*delta_f*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2) + 1, 0, T*(y_dot - (824208*delta_f)/(8615*x_dot)), 0, 0; 0, 0, 1, T, 0, 0; (33063689036759*T)/(7172595384320*x_dot), T*(((2321344006605451863*phi_dot)/8589934592000 - (6325188028897689*y_dot)/34359738368)/(4175*x_dot^2) + (5663914248162509*((154*phi_dot)/125 + y_dot))/(143451907686400*x_dot^2)), 0, 1 - (813165919007900927*T)/(7172595384320000*x_dot), 0, 0; T*cos(phi), T*sin(phi), T*(x_dot*cos(phi) - y_dot*sin(phi)), 0, 1, 0; -T*sin(phi), T*cos(phi), -T*(y_dot*cos(phi) + x_dot*sin(phi)), 0, 0, 1]; b=[ 133800*T/1723; T*((267600*delta_f)/1723 - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot)); 0; 5663914248162509*T/143451907686400; 0; 0]; d_k=zeros(Nx,1);%ƫ state_k1=zeros(Nx,1);%Ԥһʱ״̬ڼƫ %¼ΪɢģԤһʱ״̬ %ע⣬Ϊǰıʽa,ba,bͻǰıʽΪlflr state_k1(1,1)=y_dot+T*(-x_dot*phi_dot+2*(Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)+Ccr*(lr*phi_dot-y_dot)/x_dot)/m); state_k1(2,1)=x_dot+T*(y_dot*phi_dot+2*(Clf*Sf+Clr*Sr+Ccf*delta_f*(delta_f-(y_dot+phi_dot*lf)/x_dot))/m); state_k1(3,1)=phi+T*phi_dot; state_k1(4,1)=phi_dot+T*((2*lf*Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)-2*lr*Ccr*(lr*phi_dot-y_dot)/x_dot)/I); state_k1(5,1)=Y+T*(x_dot*sin(phi)+y_dot*cos(phi)); state_k1(6,1)=X+T*(x_dot*cos(phi)-y_dot*sin(phi)); d_k=state_k1-a*kesi(1:6,1)-b*kesi(7,1);%falconeʽ2.11bd(k,t) d_piao_k=zeros(Nx+Nu,1);%d_kʽοfalcone(B,4c) d_piao_k(1:6,1)=d_k; d_piao_k(7,1)=0; A_cell=cell(2,2); B_cell=cell(2,1); A_cell{1,1}=a; A_cell{1,2}=b; A_cell{2,1}=zeros(Nu,Nx); A_cell{2,2}=eye(Nu); B_cell{1,1}=b; B_cell{2,1}=eye(Nu); %A=zeros(Nu+Nx,Nu+Nx); A=cell2mat(A_cell); B=cell2mat(B_cell); % C=[0 0 1 0 0 0 0;0 0 0 1 0 0 0;0 0 0 0 1 0 0;];%Ǻܹ C = [0 0 1 0 0 0 0; 0 0 0 0 1 0 0;]; PSI_cell=cell(Np,1); THETA_cell=cell(Np,Nc); GAMMA_cell=cell(Np,Np); PHI_cell=cell(Np,1); for p=1:1:Np; PHI_cell{p,1}=d_piao_k;%˵ҪʵʱµģΪ˼㣬һν for q=1:1:Np; if q<=p; GAMMA_cell{p,q}=C*A^(p-q); else GAMMA_cell{p,q}=zeros(Ny,Nx+Nu); end end end for j=1:1:Np PSI_cell{j,1}=C*A^j; for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; else THETA_cell{j,k}=zeros(Ny,Nu); end end end PSI=cell2mat(PSI_cell);%size(PSI)=[Ny*Np Nx+Nu] THETA=cell2mat(THETA_cell);%size(THETA)=[Ny*Np Nu*Nc] GAMMA=cell2mat(GAMMA_cell);%дGAMMA PHI=cell2mat(PHI_cell); H_cell=cell(2,2); H_cell{1,1}=THETA'*Q*THETA + R; H_cell{1,2}=zeros(Nu*Nc,1); H_cell{2,1}=zeros(1,Nu*Nc); H_cell{2,2}=Row; H=cell2mat(H_cell); error_1=zeros(Ny*Np,1); Yita_ref_cell=cell(Np,1); for p=1:1:Np if t+p*T>T_all X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ X_predict(Np,1)=X+X_DOT*Np*T; %X_predict(Np,1)=X+X_dot*Np*t; z1=shape/dx1*(X_predict(Np,1)-Xs1)-shape/2; z2=shape/dx2*(X_predict(Np,1)-Xs2)-shape/2; Y_ref(p,1)=dy1/2*(1+tanh(z1))-dy2/2*(1+tanh(z2)); phi_ref(p,1)=atan(dy1*(1/cosh(z1))^2*(1.2/dx1)-dy2*(1/cosh(z2))^2*(1.2/dx2)); Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)]; else X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ X_predict(p,1)=X+X_DOT*p*T;%ȼδXλãX(t)=X+X_dot*t z1=shape/dx1*(X_predict(p,1)-Xs1)-shape/2; z2=shape/dx2*(X_predict(p,1)-Xs2)-shape/2; Y_ref(p,1)=dy1/2*(1+tanh(z1))-dy2/2*(1+tanh(z2)); phi_ref(p,1)=atan(dy1*(1/cosh(z1))^2*(1.2/dx1)-dy2*(1/cosh(z2))^2*(1.2/dx2)); Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)]; end end Yita_ref=cell2mat(Yita_ref_cell); error_1 = PSI*kesi + GAMMA*PHI - Yita_ref; %ƫ f_cell=cell(1,2); f_cell{1,1}=error_1'*Q*THETA; f_cell{1,2}=0; f=cell2mat(f_cell)'; %% ΪԼ %Լ A_t=zeros(Nc,Nc);%falcone P181 for p=1:1:Nc for q=1:1:Nc if q<=p A_t(p,q)=1; else A_t(p,q)=0; end end end A_I=kron(A_t,eye(Nu));%ڿ˻ Ut=kron(ones(Nc,1), steer_rad); umin = -0.1744;%άƱĸͬ umax = 0.1744; % 0.1744rad = 10deg Umin=kron(ones(Nc,1),umin); Umax=kron(ones(Nc,1),umax); %Լ ycmax=[0.21;5]; ycmin=[-0.3;-3]; Ycmax=kron(ones(Np,1),ycmax); Ycmin=kron(ones(Np,1),ycmin); %ϿԼԼ A_cons_cell={A_I zeros(Nu*Nc,1); -A_I zeros(Nu*Nc,1);THETA zeros(Ny*Np,1);-THETA zeros(Ny*Np,1)}; b_cons_cell={Umax-Ut; -Umin+Ut; Ycmax-PSI*kesi-GAMMA*PHI; -Ycmin+PSI*kesi+GAMMA*PHI}; A_cons=cell2mat(A_cons_cell);%̣ⷽ״̬ʽԼתΪֵȡֵΧ b_cons=cell2mat(b_cons_cell);%̣ⷽ״̬ʽԼȡֵ %״̬Լ M=10; delta_umin=-0.0148; % 0.0148rad = 0.8deg delta_umax=0.0148; delta_Umin=kron(ones(Nc,1),delta_umin); delta_Umax=kron(ones(Nc,1),delta_umax); lb=[delta_Umin;0];%̣ⷽ״̬½磬ʱڿɳ ub=[delta_Umax;M];%̣ⷽ״̬Ͻ磬ʱڿɳ %% ʼ options = optimset('Algorithm','active-set'); x_start=zeros(Nc+1,1);%һʼ [DU,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options); fprintf('exitflag=%d\n',exitflag); fprintf('H=%4.2f\n',H(1,1)); fprintf('f=%4.2f\n',f(1,1)); %% % u_piao=DU(1);%õ % U(1)=kesi(7,1)+u_piao;%ǰʱ̵ĿΪһʱ̿+ %U(2)=Yita_ref(2);%dphi_ref % sys= U; steer_des = steer_rad + DU(1); steer_des_deg = steer_des*180/pi; sys= [steer_des_deg; steer_des_deg; 0; 0;Y; X]; toc % End of mdlOutputs. ================================================ FILE: Chapter-5/chapter5_5_2.m ================================================ function [sys,x0,str,ts] =Main_TireStiffness_Estimation(t,x,u,flag) %***************************************************************% % Simulation for estimation of cornering stiffness using RLS method % Assume: lf, lr are known; % Assume: Vy, Vel, steering_angle and side-slip angle are measurable %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵ sizes.NumOutputs = 12; %Sеĸ sizes.NumInputs = 21; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05s %------------Global parameters and initialization--------------------% global InitialGapflag; InitialGapflag = 0; % Ignore the first few inputs from CarSim % vehicle parameters initialization global VehicleParams; % for SUV VehicleParams.Lf = 1.12; % 1.05 VehicleParams.Lr = 1.48; % 1.55 % RLS for longitudinal stiffness initialization [y, Ccf] = func_RLSEstimation_Clf('initial', 0.95, 1, 10); [y, Ccr] = func_RLSEstimation_Clr('initial', 0.95, 1, 10); % RLS for cornering stiffness initialization [y, Clf] = func_RLSEstimation_Ccf('initial', 0.95, 1, 10); [y, Clr] = func_RLSEstimation_Ccr('initial', 0.95, 1, 10); % global RLS_params; % RLS_params.nDataTuple = 10; % RLS_params.nCoefficients = 1; % RLS_params.initialCoefficients = -90000* ones(RLS_params.nCoefficients,1); % RLS_params.delta = 10; % RLS_params.lambda = 0.95; % [y, e, c] = func_RLS_Alt_New('initial', 0, params); % % global pre_regressor; % nc = 1; % nd = 10; % pre_regressor.input = zeros(nc,nd); % pre_regressor.d = zeros(nd,1); % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % Ŀǰûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== global InitialGapflag; global VehicleParams; Ccf_Hat = 0; Ccr_Hat = 0; Clf_Hat = 0; Clr_Hat = 0; Fyf_Hat_err = 0; Fyr_Hat_err = 0; Fxf_Hat_err = 0; Fxr_Hat_err = 0; alpha_f_Hat = 0; alpha_r_Hat = 0; alpha_f_Direct = 0; alpha_r_Direct = 0; if InitialGapflag < 3 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %-----Update State Estimation of measured Vehicle Configuration------% [Carsim_export] = func_CarsimData_Parse(u); Vx = Carsim_export.x_dot; Vy = Carsim_export.y_dot; yawrate = Carsim_export.phi_dot; % rad/s fwa = Carsim_export.fwa; Fyf_Direct = Carsim_export.Fyf; Fyr_Direct = Carsim_export.Fyr; alpha_f_Direct = Carsim_export.alphaf; alpha_r_Direct = Carsim_export.alphar; kappa_f_Direct = Carsim_export.kappa_f; kappa_r_Direct = Carsim_export.kappa_r; Fxf_Direct = Carsim_export.Fxf; Fxr_Direct = Carsim_export.Fxr; %-----1. Estimate Cornering stiffness use estimated sideslip angle----% %for front tire alpha_f_Hat = (Vy + yawrate*VehicleParams.Lf)/Vx - fwa; [Fyf_hat, Ccf_Hat] = func_RLSEstimation_Ccf(alpha_f_Hat, Fyf_Direct); Fyf_Hat_err = Fyf_hat - Fyf_Direct; %for rear tire alpha_r_Hat = (Vy - yawrate*VehicleParams.Lr)/Vx; [Fyr_hat, Ccr_Hat] = func_RLSEstimation_Ccr(alpha_r_Hat, Fyr_Direct); Fyr_Hat_err = Fyr_hat - Fyr_Direct; %-----2. Estimate longitudinal stiffness use direct tire slip ratio---% %for front tire [Fxf_hat, Clf_Hat] = func_RLSEstimation_Clf(kappa_f_Direct, Fxf_Direct); Fxf_Hat_err = Fxf_hat - Fxf_Direct; %for rear tire [Fxr_hat, Clr_Hat] = func_RLSEstimation_Clr(kappa_r_Direct, Fxr_Direct); Fxr_Hat_err = Fxr_hat - Fxr_Direct; end % end of if Initialflag < 2 % sys = [Ccf_Hat; Ccr_Hat; Fyf_Hat_err; Fyr_Hat_err; Clf_Hat; Clr_Hat; Fxf_Hat_err; Fxr_Hat_err; alpha_f_Hat; alpha_r_Hat; alpha_f_Direct; alpha_r_Direct]; % % sys = [t_Elapsed; Ax; Ay_G_SM; fwa; Beta; Vel; Vy; yawrate; Roll; Rollrate; vx_hat; vy_hat; yawrate_hat; roll_hat; rollrate_hat; CafHat; CarHat; C_alpha_f_hat_ay; C_alpha_r_hat_ay]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [Sparsed_Carsim_Data] = func_CarsimData_Parse(CarsimData) %***************************************************************% % Parse data exported from CarSim, ˳CarSimһ %***************************************************************% Sparsed_Carsim_Data.x_dot = CarsimData(1)/3.6; %Unit:km/h-->m/s1λС Sparsed_Carsim_Data.y_dot = CarsimData(2)/3.6; %Unit:km/h-->m/s1λС Sparsed_Carsim_Data.phi_dot = (round(10*CarsimData(3))/10)*pi/180; %Unitdeg/s-->rad/s1λС Sparsed_Carsim_Data.fwa = (round(10*0.5*(CarsimData(4)+ CarsimData(5)))/10)*pi/180; % deg-->rad Sparsed_Carsim_Data.alphaf = (round(10*0.5 * (CarsimData(6)+ CarsimData(8)))/10)*pi/180; % deg-->rad1λС Sparsed_Carsim_Data.alphar = (round(10*0.5 * (CarsimData(7)+ CarsimData(9)))/10)*pi/180; % deg-->rad1λС Fy_l1 = round(10*CarsimData(10))/10; %Unit:N1λС Fy_l2 = round(10*CarsimData(11))/10; %Unit:N1λС Fy_r1 = round(10*CarsimData(12))/10; %Unit:N1λС Fy_r2 = round(10*CarsimData(13))/10; %Unit:N1λС Sparsed_Carsim_Data.Fyf = Fy_l1 + Fy_r1; Sparsed_Carsim_Data.Fyr = Fy_l2 + Fy_r2; KappaL1 = CarsimData(14); KappaL2 = CarsimData(15); KappaR1 = CarsimData(16); KappaR2 = CarsimData(17); Sparsed_Carsim_Data.kappa_f = 0.5*(KappaL1 + KappaR1); Sparsed_Carsim_Data.kappa_r = 0.5*(KappaL2 + KappaR2); Fx_l1 = round(10*CarsimData(18))/10; %Unit:N1λС Fx_l2 = round(10*CarsimData(19))/10; %Unit:N1λС Fx_r1 = round(10*CarsimData(20))/10; %Unit:N1λС Fx_r2 = round(10*CarsimData(21))/10; %Unit:N1λС Sparsed_Carsim_Data.Fxf = Fx_l1 + Fx_r1; Sparsed_Carsim_Data.Fxr = Fx_l2 + Fx_r2; % end % end of func_StateEstimation ================================================ FILE: Chapter-6/Chapter6_3.m ================================================ function [sys,x0,str,ts] = MPC_Controller(t,x,u,flag) % óܣLTV MPC ͳ򻯶ѧģͣСǶȼ裩ƿԹ滮켣ʵֹ켣ٿƹ % 汾 V1.0MATLAB汾R2011a,Sı׼ʽ % д 2013.12.17 % һθд 2013.12.18 % ״̬=[y_dot,x_dot,phi,phi_dot,Y,X]Ϊǰƫdelta_f % QP֮ⷨǰķfalconeѧλеķ֮ǰķʵȼۣ % switch flag, case 0 [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 sys = mdlUpdates(t,x,u); % Update discrete states case 3 sys = mdlOutputs(t,x,u); % Calculate outputs % case 4 % sys = mdlGetTimeOfNextVarHit(t,x,u); % Get next sample time case {1,4,9} % Unused flags sys = []; otherwise error(['unhandled flag = ',num2str(flag)]); % Error handling end % End of dsfunc. %============================================================== % Initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. sizes = simsizes; sizes.NumContStates = 0; % sizes.NumDiscStates = 6; % sizes.NumOutputs = 1; sizes.NumInputs = 16; sizes.DirFeedthrough = 1; % Matrix D is non-empty. sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 =[0.001;0.0001;0.0001;0.00001;0.00001;0.00001]; global U; U=[0];%ʼ,һ켣ȥUΪһά % global x; % x = zeros(md.ne + md.pye + md.me + md.Hu*md.me,1); % Initialize the discrete states. str = []; % Set str to an empty matrix. ts = [0.02 0]; % sample time: [period, offset] %End of mdlInitializeSizes %============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u) sys = x; %End of mdlUpdate. %============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u) global a b; %global u_piao; global U; %global kesi; tic Nx=6;%״̬ĸ Nu=1;%ĸ Ny=2;%ĸfalconeLTV֤ûĿЧã߿ Np =25;%Ԥⲽ Nc=10;%Ʋ Row=1000;%ɳ fprintf('Update start, t=%6.3f\n',t) %ӿת, x_dotһdzСǷַֹĸΪ % y_dot=u(1)/3.6-0.000000001*0.4786; %CarSimkm/hתΪm/s y_dot=u(1)/3.6; x_dot=u(2)/3.6+0.0001;%CarSimkm/hתΪm/s phi=u(3)*3.141592654/180; %CarSimΪǶȣǶתΪ phi_dot=u(4)*3.141592654/180; Y=u(5);%λΪm X=u(6);%λΪ %% ݹ滮ȷο켣 %Ӷ˿ڶֲ滮,ݽ4ߵIJ Paramater_X_Y(1,1)=u(7); Paramater_X_Y(1,2)=u(8); Paramater_X_Y(1,3)=u(9); Paramater_X_Y(1,4)=u(10); Paramater_X_Y(1,5)=u(11); Paramater_X_phi(1,1)=u(12); Paramater_X_phi(1,2)=u(13); Paramater_X_phi(1,3)=u(14); Paramater_X_phi(1,4)=u(15); Paramater_X_phi(1,5)=u(16); %% %syms sf sr;%ֱΪǰֵĻ,Ҫṩ Sf=0.2; Sr=0.2; %syms lf lr;%ǰ־복ĵľ룬в lf=1.232;lr=1.468; %syms C_cf C_cr C_lf C_lr;%ֱΪǰֵݺƫնȣв Ccf=66900;Ccr=62700;Clf=66900;Clr=62700; %syms m g I;%mΪgΪٶȣIΪZתв m=1723;g=9.8;I=4175; %% ο켣 % shape=2.4;%ƣڲο켣 % dx1=25;dx2=21.95;%ûκʵ壬ֻDz % dy1=4.05;dy2=5.7;%ûκʵ壬ֻDz % Xs1=27.19;Xs2=56.46;% X_predict=zeros(Np,1);%ڱԤʱڵλϢǼ켣Ļ phi_ref=zeros(Np,1);%ڱԤʱڵ켣 Y_ref=zeros(Np,1);%ڱԤʱڵ켣 dphi_ref=zeros(Np,1); %% ת % ¼kesi,״̬һ kesi=zeros(Nx+Nu,1); kesi(1)=y_dot;%u(1)==X(1) kesi(2)=x_dot;%u(2)==X(2) kesi(3)=phi; %u(3)==X(3) kesi(4)=phi_dot; kesi(5)=Y; kesi(6)=X; kesi(7)=U(1); delta_f=U(1); fprintf('Update start, u(1)=%4.2f\n',U(1)) T=0.02;%沽 T_all=20;%ʱ趨ܵķʱ䣬ҪǷֹ켣Խ %Ȩؾ Q_cell=cell(Np,Np); for i=1:1:Np; for j=1:1:Np; if i==j %Q_cell{i,j}=[200 0;0 100;]; Q_cell{i,j}=[2000 0;0 10000;]; else Q_cell{i,j}=zeros(Ny,Ny); end end end %R=5*10^4*eye(Nu*Nc); R=5*10^5*eye(Nu*Nc); %ҲҪľǿĻöѧģͣþ복أͨԶѧſ˱Ⱦõ a=[ 1 - (259200*T)/(1723*x_dot), -T*(phi_dot + (2*((460218*phi_dot)/5 - 62700*y_dot))/(1723*x_dot^2) - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2)), 0, -T*(x_dot - 96228/(8615*x_dot)), 0, 0 T*(phi_dot - (133800*delta_f)/(1723*x_dot)), (133800*T*delta_f*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2) + 1, 0, T*(y_dot - (824208*delta_f)/(8615*x_dot)), 0, 0 0, 0, 1, T, 0, 0 (33063689036759*T)/(7172595384320*x_dot), T*(((2321344006605451863*phi_dot)/8589934592000 - (6325188028897689*y_dot)/34359738368)/(4175*x_dot^2) + (5663914248162509*((154*phi_dot)/125 + y_dot))/(143451907686400*x_dot^2)), 0, 1 - (813165919007900927*T)/(7172595384320000*x_dot), 0, 0 T*cos(phi), T*sin(phi), T*(x_dot*cos(phi) - y_dot*sin(phi)), 0, 1, 0 -T*sin(phi), T*cos(phi), -T*(y_dot*cos(phi) + x_dot*sin(phi)), 0, 0, 1]; b=[ 133800*T/1723 T*((267600*delta_f)/1723 - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot)) 0 5663914248162509*T/143451907686400 0 0]; d_k=zeros(Nx,1);%ƫfalcone42ҳеd(k,t) state_k1=zeros(Nx,1);%Ԥһʱ״̬ڼƫfalcone42ҳkesi(k+1,t) %¼ΪɢģԤһʱ״̬ %ע⣬Ϊǰıʽa,ba,bͻǰıʽΪlflr state_k1(1,1)=y_dot+T*(-x_dot*phi_dot+2*(Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)+Ccr*(lr*phi_dot-y_dot)/x_dot)/m); state_k1(2,1)=x_dot+T*(y_dot*phi_dot+2*(Clf*Sf+Clr*Sr+Ccf*delta_f*(delta_f-(y_dot+phi_dot*lf)/x_dot))/m); state_k1(3,1)=phi+T*phi_dot; state_k1(4,1)=phi_dot+T*((2*lf*Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)-2*lr*Ccr*(lr*phi_dot-y_dot)/x_dot)/I); state_k1(5,1)=Y+T*(x_dot*sin(phi)+y_dot*cos(phi)); state_k1(6,1)=X+T*(x_dot*cos(phi)-y_dot*sin(phi)); d_k=state_k1-a*kesi(1:6,1)-b*kesi(7,1);%falconeʽ2.11bd(k,t) d_piao_k=zeros(Nx+Nu,1);%d_kʽοfalcone(B,4c) d_piao_k(1:6,1)=d_k; d_piao_k(7,1)=0; A_cell=cell(2,2); B_cell=cell(2,1); A_cell{1,1}=a; A_cell{1,2}=b; A_cell{2,1}=zeros(Nu,Nx); A_cell{2,2}=eye(Nu); B_cell{1,1}=b; B_cell{2,1}=eye(Nu); %A=zeros(Nu+Nx,Nu+Nx); A=cell2mat(A_cell); B=cell2mat(B_cell); % C=[0 0 1 0 0 0 0;0 0 0 1 0 0 0;0 0 0 0 1 0 0;];%Ǻܹ C=[0 0 1 0 0 0 0;0 0 0 0 1 0 0;]; PSI_cell=cell(Np,1);%ԭ汾PHI THETA_cell=cell(Np,Nc); GAMMA_cell=cell(Np,Np);%µļ㷽ӵ,falcone179ҳһйʽ PHI_cell=cell(Np,1);%ע⣬汾֮ǰеPHIһԭ汾PHIΪ汾PSI for p=1:1:Np; PHI_cell{p,1}=d_piao_k;%˵ҪʵʱµģΪ˼㣬һν for q=1:1:Np; if q<=p; GAMMA_cell{p,q}=C*A^(p-q); else GAMMA_cell{p,q}=zeros(Ny,Nx+Nu); end end end for j=1:1:Np PSI_cell{j,1}=C*A^j; for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; else THETA_cell{j,k}=zeros(Ny,Nu); end end end PSI=cell2mat(PSI_cell);%size(PSI)=[Ny*Np Nx+Nu] THETA=cell2mat(THETA_cell);%size(THETA)=[Ny*Np Nu*Nc] GAMMA=cell2mat(GAMMA_cell);%дGAMMA PHI=cell2mat(PHI_cell); Q=cell2mat(Q_cell); H_cell=cell(2,2); H_cell{1,1}=THETA'*Q*THETA+R; H_cell{1,2}=zeros(Nu*Nc,1); H_cell{2,1}=zeros(1,Nu*Nc); H_cell{2,2}=Row; H=cell2mat(H_cell); error_1=zeros(Ny*Np,1); Yita_ref_cell=cell(Np,1); for p=1:1:Np if t+p*T>T_all X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ X_predict(Np,1)=X+X_DOT*Np*T; Y_ref(p,1)=polyval(Paramater_X_Y, X_predict(Np,1)); phi_ref(p,1)=polyval(Paramater_X_phi, X_predict(Np,1)); %dphi_ref(p,1)=-((2916*X_DOT*sinh((12*X_predict(Np,1))/125 - 11907/3125))/(78125*cosh((12* X_predict(Np,1))/125 - 11907/3125)^3) - (65664*X_DOT*sinh((48* X_predict(Np,1))/439 - 80922/10975))/(963605*cosh((48* X_predict(Np,1))/439 - 80922/10975)^3))/((243/(1250*cosh((12*X_predict(Np,1))/125 - 11907/3125)^2) - 684/(2195*cosh((48*X_predict(Np,1))/439 - 80922/10975)^2))^2 + 1); %Yita_ref_cell{p,1}=[phi_ref(p,1);dphi_ref(p,1);Y_ref(p,1)];%ԽˣԤʱһʼΪֵ Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)]; else X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ X_predict(p,1)=X+X_DOT*p*T;%ȼδXλãX(t)=X+X_dot*t Y_ref(p,1)=polyval(Paramater_X_Y, X_predict(p,1)); phi_ref(p,1)=polyval(Paramater_X_phi, X_predict(p,1)); Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)]; %dphi_ref(p,1)=-((2916*X_DOT*sinh((12* X_predict(p,1))/125 - 11907/3125))/(78125*cosh((12* X_predict(p,1))/125 - 11907/3125)^3) - (65664*X_DOT*sinh((48* X_predict(p,1))/439 - 80922/10975))/(963605*cosh((48* X_predict(p,1))/439 - 80922/10975)^3))/((243/(1250*cosh((12*X_predict(p,1))/125 - 11907/3125)^2) - 684/(2195*cosh((48*X_predict(p,1))/439 - 80922/10975)^2))^2 + 1); %Yita_ref_cell{p,1}=[phi_ref(p,1);dphi_ref(p,1);Y_ref(p,1)];%3һ end end Yita_ref=cell2mat(Yita_ref_cell); % fprintf('X_predict=%4.2f\n',X_predict(1)); % fprintf('ʵλãX=%4.2f\n',X); % fprintf('Update Yita, phi_ref=%4.2f\n',Yita_ref(1)); % fprintf('Update Yita, dphi_ref=%4.2f\n',Yita_ref(2)); % fprintf('Update Yita, phi=%4.2f\n',phi); % fprintf('ʵλãY=%4.2f\n',Y); error_1=Yita_ref-PSI*kesi-GAMMA*PHI; %ƫ f_cell=cell(1,2); f_cell{1,1}=2*error_1'*Q*THETA; f_cell{1,2}=0; % f=(cell2mat(f_cell))'; f=-cell2mat(f_cell); %% ΪԼ %Լ A_t=zeros(Nc,Nc);%falcone P181 for p=1:1:Nc for q=1:1:Nc if q<=p A_t(p,q)=1; else A_t(p,q)=0; end end end A_I=kron(A_t,eye(Nu));%ӦfalconeԼľA,ڿ˻ Ut=kron(ones(Nc,1),U(1));%˴оĿڿƻ,ʱ˳ umin=-0.1744;%άƱĸͬ umax=0.1744; delta_umin=-0.0148*0.4; delta_umax=0.0148*0.4; Umin=kron(ones(Nc,1),umin); Umax=kron(ones(Nc,1),umax); %ԼӲԼãʱΪӲԼ ycmax=[0.21;5]; ycmin=[-0.3;-3]; Ycmax=kron(ones(Np,1),ycmax); Ycmin=kron(ones(Np,1),ycmin); %ϿԼԼ A_cons_cell={A_I zeros(Nu*Nc,1);-A_I zeros(Nu*Nc,1);THETA zeros(Ny*Np,1);-THETA zeros(Ny*Np,1)}; b_cons_cell={Umax-Ut;-Umin+Ut;Ycmax-PSI*kesi-GAMMA*PHI;-Ycmin+PSI*kesi+GAMMA*PHI}; A_cons=cell2mat(A_cons_cell);%̣ⷽ״̬ʽԼתΪֵȡֵΧ b_cons=cell2mat(b_cons_cell);%̣ⷽ״̬ʽԼȡֵ %״̬Լ M=10; delta_Umin=kron(ones(Nc,1),delta_umin); delta_Umax=kron(ones(Nc,1),delta_umax); lb=[delta_Umin;0];%̣ⷽ״̬½磬ʱڿɳ ub=[delta_Umax;M];%̣ⷽ״̬Ͻ磬ʱڿɳ %% ʼ % [X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub); options = optimset('Algorithm','active-set'); x_start=zeros(Nc+1,1);%һʼ [X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options); fprintf('exitflag=%d\n',exitflag); fprintf('H=%4.2f\n',H(1,1)); fprintf('f=%4.2f\n',f(1,1)); %% u_piao=X(1);%õ U(1)=kesi(7,1)+u_piao;%ǰʱ̵ĿΪһʱ̿+ %U(2)=Yita_ref(2);%dphi_ref sys= U; toc % End of mdlOutputs. ================================================ FILE: Chapter-6/Chapter6_4_3.mdl ================================================ Model { Name "Chapter6_4_3" Version 7.6 MdlSubVersion 0 GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.87" NumModelReferences 0 NumTestPointedSignals 0 } SavedCharacterEncoding "GBK" slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "FinalMPCModelDynamicCarsimWithPlan_1218" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" MaxMDLFileLineLength 120 Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking" ModifiedDateFormat "%" LastModifiedDate "Sun Mar 09 21:35:54 2014" RTWModifiedTimeStamp 316301750 ModelVersionFormat "1.%" ConfigurationManager "None" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 2 Version "1.10.0" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 3 Version "1.10.0" StartTime "0.0" StopTime "100" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 4 Version "1.10.0" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 5 Version "1.10.0" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off } Simulink.DebuggingCC { $ObjectID 6 Version "1.10.0" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "Use local settings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" InitInArrayFormatMsg "warning" StrictBusMsg "Warning" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" } Simulink.HardwareCC { $ObjectID 7 Version "1.10.0" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 8 Version "1.10.0" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 9 Version "1.10.0" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 10 Version "1.10.0" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on TemplateMakefile "grt_default_tmf" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off IncludeHyperlinkInReport off LaunchReport off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateSLWebview off RTWCompilerOptimization "Off" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 11 Version "1.10.0" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 12 Version "1.10.0" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "MultiInstanceERTCode" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "SupportNonInlinedSFcns" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" TargetFunctionLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTCodeCoverageTool "None" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" PortableWordSizes off ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 13 Version "1.10.0" Description "HDL Coder custom configuration component" Name "HDL Coder" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition " [ 200, 85, 1080, 715 ] " } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 2 } BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } BlockParameterDefaults { Block { BlockType Constant Value "1" VectorParams1D on SamplingMode "Sample based" OutMin "[]" OutMax "[]" OutDataTypeStr "Inherit: Inherit from 'Constant value'" LockScale off SampleTime "inf" FramePeriod "inf" PreserveConstantTs off } Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType Fcn Expr "sin(u[1])" SampleTime "-1" } Block { BlockType Mux Inputs "4" DisplayOption "none" UseBusObject off BusObject "BusObject" NonVirtualBus off } Block { BlockType "S-Function" FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Scope ModelBased off TickLabels "OneTimeTick" ZoomMode "on" Grid "on" TimeRange "auto" YMin "-5" YMax "5" SaveToWorkspace off SaveName "ScopeData" LimitDataPoints on MaxDataPoints "5000" Decimation "1" SampleInput off SampleTime "-1" } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" FixptAsFi off } Block { BlockType UnitDelay X0 "0" InputProcessing "Inherited" SampleTime "1" StateMustResolveToSignalObject off RTWStateStorageClass "Auto" } } System { Name "Chapter6_4_3" Location [119, 121, 1481, 778] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" ReportName "simulink-default.rpt" SIDHighWatermark "75" Block { BlockType Reference Name "CarSim S-Function" SID "47" Ports [1, 1] Position [485, 74, 585, 136] Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i" SIMFILE "simfile" } Block { BlockType Constant Name "Constant" SID "50" Position [290, 170, 320, 200] Value "0" } Block { BlockType "S-Function" Name "Controller" SID "1" Ports [1, 1] Position [335, 286, 450, 384] BlockMirror on BackgroundColor "lightBlue" DropShadow on FunctionName "Chapter6_3" EnableBusSupport off } Block { BlockType Demux Name "Demux1" SID "54" Ports [1, 6] Position [645, 143, 650, 232] ShowName off Outputs "6" DisplayOption "bar" } Block { BlockType Fcn Name "Fcn" SID "49" Position [290, 105, 350, 135] Expr "180*u/3.1415926" } Block { BlockType Mux Name "Mux" SID "48" Ports [4, 1] Position [400, 66, 405, 144] ShowName off DisplayOption "bar" } Block { BlockType Mux Name "Mux1" SID "73" Ports [2, 1] Position [515, 305, 520, 360] BlockMirror on NamePlacement "alternate" ShowName off Inputs "2" DisplayOption "bar" } Block { BlockType "S-Function" Name "PathPlan" SID "72" Ports [1, 1] Position [610, 345, 730, 435] BlockMirror on BackgroundColor "[0.000000, 1.000000, 0.000000]" DropShadow on FunctionName "chapter6_2_4" EnableBusSupport off } Block { BlockType Scope Name "Scope2" SID "41" Ports [6] Position [960, 147, 1025, 228] Floating off Location [6, 48, 1286, 759] Open off NumInputPorts "6" ZoomMode "xonly" List { ListType AxesTitles axes1 "%" axes2 "%" axes3 "%" axes4 "%" axes5 "%" axes6 "%" } TimeRange "20" YMin "-1~35~-10~-20~-4~0" YMax "1~36.5~5~20~2~200" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Block { BlockType Scope Name "Scope3" SID "53" Ports [1] Position [655, 15, 720, 95] Floating off Location [5, 48, 1371, 727] Open off NumInputPorts "1" List { ListType AxesTitles axes1 "%" } TimeRange "20" YMin "0" YMax "19" SaveName "ScopeData2" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Block { BlockType ToWorkspace Name "To Workspace" SID "42" Ports [1] Position [795, 105, 855, 135] VariableName "y" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Block { BlockType ToWorkspace Name "To Workspace1" SID "52" Ports [1] Position [160, 405, 220, 435] VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Block { BlockType UnitDelay Name "Unit Delay" SID "57" Position [695, 263, 730, 297] InputProcessing "Elements as channels (sample based)" SampleTime "-1" } Block { BlockType Reference Name "XY Graph" SID "56" Ports [2] Position [945, 256, 1040, 349] LibraryVersion "1.225" SourceBlock "simulink/Sinks/XY Graph" SourceType "XY scope." ShowPortLabels "FromPortIcon" SystemSampleTime "-1" FunctionWithSeparateData off RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" GeneratePreprocessorConditionals off xmin "0" xmax "250" ymin "-3" ymax "6" st "-1" } Block { BlockType Scope Name "delta_f" SID "18" Ports [1] Position [160, 295, 225, 375] Floating off Location [5, 48, 1371, 727] Open off NumInputPorts "1" List { ListType AxesTitles axes1 "%" } TimeRange "20" YMin "-3" YMax "3" SaveName "ScopeData1" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Line { SrcBlock "CarSim S-Function" SrcPort 1 Points [15, 0] Branch { Points [50, 0; 0, 15] DstBlock "To Workspace" DstPort 1 } Branch { Points [0, 85; 15, 0] Branch { DstBlock "Demux1" DstPort 1 } Branch { Points [0, 90] DstBlock "Unit Delay" DstPort 1 } } } Line { SrcBlock "Fcn" SrcPort 1 Points [5, 0] Branch { Points [10, 0; 0, -25] Branch { Points [0, -20] DstBlock "Mux" DstPort 1 } Branch { DstBlock "Mux" DstPort 2 } } Branch { Points [0, -60; -235, 0; 0, 275] Branch { DstBlock "delta_f" DstPort 1 } Branch { Points [0, 85] DstBlock "To Workspace1" DstPort 1 } } } Line { SrcBlock "Constant" SrcPort 1 Points [50, 0; 0, -45] Branch { Points [0, -5] DstBlock "Mux" DstPort 4 } Branch { Points [0, -5] Branch { Points [20, 0] } Branch { Points [0, -20] DstBlock "Mux" DstPort 3 } } } Line { SrcBlock "Mux" SrcPort 1 Points [35, 0] Branch { DstBlock "CarSim S-Function" DstPort 1 } Branch { Points [0, -50] DstBlock "Scope3" DstPort 1 } } Line { SrcBlock "Demux1" SrcPort 1 DstBlock "Scope2" DstPort 1 } Line { SrcBlock "Demux1" SrcPort 2 DstBlock "Scope2" DstPort 2 } Line { SrcBlock "Demux1" SrcPort 3 DstBlock "Scope2" DstPort 3 } Line { SrcBlock "Demux1" SrcPort 4 DstBlock "Scope2" DstPort 4 } Line { SrcBlock "Demux1" SrcPort 5 Points [155, 0] Branch { DstBlock "Scope2" DstPort 5 } Branch { Points [0, 115] DstBlock "XY Graph" DstPort 2 } } Line { SrcBlock "Demux1" SrcPort 6 Points [180, 0] Branch { DstBlock "Scope2" DstPort 6 } Branch { Points [0, 55] DstBlock "XY Graph" DstPort 1 } } Line { SrcBlock "Controller" SrcPort 1 Points [-75, 0; 0, -215] DstBlock "Fcn" DstPort 1 } Line { SrcBlock "Unit Delay" SrcPort 1 Points [45, 0; 0, 40] Branch { DstBlock "Mux1" DstPort 1 } Branch { Points [0, 70] DstBlock "PathPlan" DstPort 1 } } Line { SrcBlock "PathPlan" SrcPort 1 Points [-35, 0; 0, -45] DstBlock "Mux1" DstPort 2 } Line { SrcBlock "Mux1" SrcPort 1 DstBlock "Controller" DstPort 1 } Annotation { Name "delta" Position [262, 113] } Annotation { Name "X" Position [887, 274] } Annotation { Name "Y" Position [883, 320] } Annotation { Name "y_dot" Position [739, 140] } Annotation { Name "x_dot" Position [736, 158] } Annotation { Name "phi" Position [739, 174] } Annotation { Name "phi_dot" Position [739, 189] } Annotation { Name "Y" Position [735, 202] } Annotation { Name "X" Position [736, 216] } } } ================================================ FILE: Chapter-6/ReadMe ================================================ This folder holds simulation codes for Chapter 6 * chapter6_2_4.m: Matlab code for traj_planner use MPC * Chapter6_3.m: Matlab code for MPC tracking controller * chap6_LocalPlan_TrackingCtrl: Simulink/Carsim codes for Chapter 6 ================================================ FILE: Chapter-6/chap6_LocalPlan_TrackingCtrl/FinalMPCControllerDynamicCarSim_1218.m ================================================ function [sys,x0,str,ts] = FinalMPCControllerDynamicCarSim_1218(t,x,u,flag) % óܣLTV MPC ͳ򻯶ѧģͣСǶȼ裩ƿԹ滮켣ʵֹ켣ٿƹ % 汾 V1.0MATLAB汾R2011a,Sı׼ʽ % д 2013.12.17 % һθд 2013.12.18 % ״̬=[y_dot,x_dot,phi,phi_dot,Y,X]Ϊǰƫdelta_f % QP֮ⷨǰķfalconeѧλеķ֮ǰķʵȼۣ % switch flag, case 0 [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 sys = mdlUpdates(t,x,u); % Update discrete states case 3 sys = mdlOutputs(t,x,u); % Calculate outputs % case 4 % sys = mdlGetTimeOfNextVarHit(t,x,u); % Get next sample time case {1,4,9} % Unused flags sys = []; otherwise error(['unhandled flag = ',num2str(flag)]); % Error handling end % End of dsfunc. %============================================================== % Initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. sizes = simsizes; sizes.NumContStates = 0; % sizes.NumDiscStates = 6; % sizes.NumOutputs = 1; sizes.NumInputs = 16; sizes.DirFeedthrough = 1; % Matrix D is non-empty. sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 =[0.001;0.0001;0.0001;0.00001;0.00001;0.00001]; global U; U=[0];%ʼ,һ켣ȥUΪһά % global x; % x = zeros(md.ne + md.pye + md.me + md.Hu*md.me,1); % Initialize the discrete states. str = []; % Set str to an empty matrix. ts = [0.02 0]; % sample time: [period, offset] %End of mdlInitializeSizes %============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u) sys = x; %End of mdlUpdate. %============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u) global a b; %global u_piao; global U; %global kesi; tic Nx=6;%״̬ĸ Nu=1;%ĸ Ny=2;%ĸfalconeLTV֤ûĿЧã߿ Np =25;%Ԥⲽ Nc=10;%Ʋ Row=1000;%ɳ fprintf('Update start, t=%6.3f\n',t) %ӿת, x_dotһdzСǷַֹĸΪ % y_dot=u(1)/3.6-0.000000001*0.4786; %CarSimkm/hתΪm/s y_dot=u(1)/3.6; x_dot=u(2)/3.6+0.0001;%CarSimkm/hתΪm/s phi=u(3)*3.141592654/180; %CarSimΪǶȣǶתΪ phi_dot=u(4)*3.141592654/180; Y=u(5);%λΪm X=u(6);%λΪ %% ݹ滮ȷο켣 %Ӷ˿ڶֲ滮,ݽ4ߵIJ Paramater_X_Y(1,1)=u(7); Paramater_X_Y(1,2)=u(8); Paramater_X_Y(1,3)=u(9); Paramater_X_Y(1,4)=u(10); Paramater_X_Y(1,5)=u(11); Paramater_X_phi(1,1)=u(12); Paramater_X_phi(1,2)=u(13); Paramater_X_phi(1,3)=u(14); Paramater_X_phi(1,4)=u(15); Paramater_X_phi(1,5)=u(16); %% %syms sf sr;%ֱΪǰֵĻ,Ҫṩ Sf=0.2; Sr=0.2; %syms lf lr;%ǰ־복ĵľ룬в lf=1.232;lr=1.468; %syms C_cf C_cr C_lf C_lr;%ֱΪǰֵݺƫնȣв Ccf=66900;Ccr=62700;Clf=66900;Clr=62700; %syms m g I;%mΪgΪٶȣIΪZתв m=1723;g=9.8;I=4175; %% ο켣 % shape=2.4;%ƣڲο켣 % dx1=25;dx2=21.95;%ûκʵ壬ֻDz % dy1=4.05;dy2=5.7;%ûκʵ壬ֻDz % Xs1=27.19;Xs2=56.46;% X_predict=zeros(Np,1);%ڱԤʱڵλϢǼ켣Ļ phi_ref=zeros(Np,1);%ڱԤʱڵ켣 Y_ref=zeros(Np,1);%ڱԤʱڵ켣 dphi_ref=zeros(Np,1); %% ת % ¼kesi,״̬һ kesi=zeros(Nx+Nu,1); kesi(1)=y_dot;%u(1)==X(1) kesi(2)=x_dot;%u(2)==X(2) kesi(3)=phi; %u(3)==X(3) kesi(4)=phi_dot; kesi(5)=Y; kesi(6)=X; kesi(7)=U(1); delta_f=U(1); fprintf('Update start, u(1)=%4.2f\n',U(1)) T=0.02;%沽 T_all=20;%ʱ趨ܵķʱ䣬ҪǷֹ켣Խ %Ȩؾ Q_cell=cell(Np,Np); for i=1:1:Np; for j=1:1:Np; if i==j %Q_cell{i,j}=[200 0;0 100;]; Q_cell{i,j}=[2000 0;0 10000;]; else Q_cell{i,j}=zeros(Ny,Ny); end end end %R=5*10^4*eye(Nu*Nc); R=5*10^5*eye(Nu*Nc); %ҲҪľǿĻöѧģͣþ복أͨԶѧſ˱Ⱦõ a=[ 1 - (259200*T)/(1723*x_dot), -T*(phi_dot + (2*((460218*phi_dot)/5 - 62700*y_dot))/(1723*x_dot^2) - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2)), 0, -T*(x_dot - 96228/(8615*x_dot)), 0, 0 T*(phi_dot - (133800*delta_f)/(1723*x_dot)), (133800*T*delta_f*((154*phi_dot)/125 + y_dot))/(1723*x_dot^2) + 1, 0, T*(y_dot - (824208*delta_f)/(8615*x_dot)), 0, 0 0, 0, 1, T, 0, 0 (33063689036759*T)/(7172595384320*x_dot), T*(((2321344006605451863*phi_dot)/8589934592000 - (6325188028897689*y_dot)/34359738368)/(4175*x_dot^2) + (5663914248162509*((154*phi_dot)/125 + y_dot))/(143451907686400*x_dot^2)), 0, 1 - (813165919007900927*T)/(7172595384320000*x_dot), 0, 0 T*cos(phi), T*sin(phi), T*(x_dot*cos(phi) - y_dot*sin(phi)), 0, 1, 0 -T*sin(phi), T*cos(phi), -T*(y_dot*cos(phi) + x_dot*sin(phi)), 0, 0, 1]; b=[ 133800*T/1723 T*((267600*delta_f)/1723 - (133800*((154*phi_dot)/125 + y_dot))/(1723*x_dot)) 0 5663914248162509*T/143451907686400 0 0]; d_k=zeros(Nx,1);%ƫfalcone42ҳеd(k,t) state_k1=zeros(Nx,1);%Ԥһʱ״̬ڼƫfalcone42ҳkesi(k+1,t) %¼ΪɢģԤһʱ״̬ %ע⣬Ϊǰıʽa,ba,bͻǰıʽΪlflr state_k1(1,1)=y_dot+T*(-x_dot*phi_dot+2*(Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)+Ccr*(lr*phi_dot-y_dot)/x_dot)/m); state_k1(2,1)=x_dot+T*(y_dot*phi_dot+2*(Clf*Sf+Clr*Sr+Ccf*delta_f*(delta_f-(y_dot+phi_dot*lf)/x_dot))/m); state_k1(3,1)=phi+T*phi_dot; state_k1(4,1)=phi_dot+T*((2*lf*Ccf*(delta_f-(y_dot+lf*phi_dot)/x_dot)-2*lr*Ccr*(lr*phi_dot-y_dot)/x_dot)/I); state_k1(5,1)=Y+T*(x_dot*sin(phi)+y_dot*cos(phi)); state_k1(6,1)=X+T*(x_dot*cos(phi)-y_dot*sin(phi)); d_k=state_k1-a*kesi(1:6,1)-b*kesi(7,1);%falconeʽ2.11bd(k,t) d_piao_k=zeros(Nx+Nu,1);%d_kʽοfalcone(B,4c) d_piao_k(1:6,1)=d_k; d_piao_k(7,1)=0; A_cell=cell(2,2); B_cell=cell(2,1); A_cell{1,1}=a; A_cell{1,2}=b; A_cell{2,1}=zeros(Nu,Nx); A_cell{2,2}=eye(Nu); B_cell{1,1}=b; B_cell{2,1}=eye(Nu); %A=zeros(Nu+Nx,Nu+Nx); A=cell2mat(A_cell); B=cell2mat(B_cell); % C=[0 0 1 0 0 0 0;0 0 0 1 0 0 0;0 0 0 0 1 0 0;];%Ǻܹ C=[0 0 1 0 0 0 0;0 0 0 0 1 0 0;]; PSI_cell=cell(Np,1);%ԭ汾PHI THETA_cell=cell(Np,Nc); GAMMA_cell=cell(Np,Np);%µļ㷽ӵ,falcone179ҳһйʽ PHI_cell=cell(Np,1);%ע⣬汾֮ǰеPHIһԭ汾PHIΪ汾PSI for p=1:1:Np; PHI_cell{p,1}=d_piao_k;%˵ҪʵʱµģΪ˼㣬һν for q=1:1:Np; if q<=p; GAMMA_cell{p,q}=C*A^(p-q); else GAMMA_cell{p,q}=zeros(Ny,Nx+Nu); end end end for j=1:1:Np PSI_cell{j,1}=C*A^j; for k=1:1:Nc if k<=j THETA_cell{j,k}=C*A^(j-k)*B; else THETA_cell{j,k}=zeros(Ny,Nu); end end end PSI=cell2mat(PSI_cell);%size(PSI)=[Ny*Np Nx+Nu] THETA=cell2mat(THETA_cell);%size(THETA)=[Ny*Np Nu*Nc] GAMMA=cell2mat(GAMMA_cell);%дGAMMA PHI=cell2mat(PHI_cell); Q=cell2mat(Q_cell); H_cell=cell(2,2); H_cell{1,1}=THETA'*Q*THETA+R; H_cell{1,2}=zeros(Nu*Nc,1); H_cell{2,1}=zeros(1,Nu*Nc); H_cell{2,2}=Row; H=cell2mat(H_cell); error_1=zeros(Ny*Np,1); Yita_ref_cell=cell(Np,1); for p=1:1:Np if t+p*T>T_all X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ X_predict(Np,1)=X+X_DOT*Np*T; Y_ref(p,1)=polyval(Paramater_X_Y, X_predict(Np,1)); phi_ref(p,1)=polyval(Paramater_X_phi, X_predict(Np,1)); %dphi_ref(p,1)=-((2916*X_DOT*sinh((12*X_predict(Np,1))/125 - 11907/3125))/(78125*cosh((12* X_predict(Np,1))/125 - 11907/3125)^3) - (65664*X_DOT*sinh((48* X_predict(Np,1))/439 - 80922/10975))/(963605*cosh((48* X_predict(Np,1))/439 - 80922/10975)^3))/((243/(1250*cosh((12*X_predict(Np,1))/125 - 11907/3125)^2) - 684/(2195*cosh((48*X_predict(Np,1))/439 - 80922/10975)^2))^2 + 1); %Yita_ref_cell{p,1}=[phi_ref(p,1);dphi_ref(p,1);Y_ref(p,1)];%ԽˣԤʱһʼΪֵ Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)]; else X_DOT=x_dot*cos(phi)-y_dot*sin(phi);%ϵٶ X_predict(p,1)=X+X_DOT*p*T;%ȼδXλãX(t)=X+X_dot*t Y_ref(p,1)=polyval(Paramater_X_Y, X_predict(p,1)); phi_ref(p,1)=polyval(Paramater_X_phi, X_predict(p,1)); Yita_ref_cell{p,1}=[phi_ref(p,1);Y_ref(p,1)]; %dphi_ref(p,1)=-((2916*X_DOT*sinh((12* X_predict(p,1))/125 - 11907/3125))/(78125*cosh((12* X_predict(p,1))/125 - 11907/3125)^3) - (65664*X_DOT*sinh((48* X_predict(p,1))/439 - 80922/10975))/(963605*cosh((48* X_predict(p,1))/439 - 80922/10975)^3))/((243/(1250*cosh((12*X_predict(p,1))/125 - 11907/3125)^2) - 684/(2195*cosh((48*X_predict(p,1))/439 - 80922/10975)^2))^2 + 1); %Yita_ref_cell{p,1}=[phi_ref(p,1);dphi_ref(p,1);Y_ref(p,1)];%3һ end end Yita_ref=cell2mat(Yita_ref_cell); % fprintf('X_predict=%4.2f\n',X_predict(1)); % fprintf('ʵλãX=%4.2f\n',X); % fprintf('Update Yita, phi_ref=%4.2f\n',Yita_ref(1)); % fprintf('Update Yita, dphi_ref=%4.2f\n',Yita_ref(2)); % fprintf('Update Yita, phi=%4.2f\n',phi); % fprintf('ʵλãY=%4.2f\n',Y); error_1=Yita_ref-PSI*kesi-GAMMA*PHI; %ƫ f_cell=cell(1,2); f_cell{1,1}=2*error_1'*Q*THETA; f_cell{1,2}=0; % f=(cell2mat(f_cell))'; f=-cell2mat(f_cell); %% ΪԼ %Լ A_t=zeros(Nc,Nc);%falcone P181 for p=1:1:Nc for q=1:1:Nc if q<=p A_t(p,q)=1; else A_t(p,q)=0; end end end A_I=kron(A_t,eye(Nu));%ӦfalconeԼľA,ڿ˻ Ut=kron(ones(Nc,1),U(1));%˴оĿڿƻ,ʱ˳ umin=-0.1744;%άƱĸͬ umax=0.1744; delta_umin=-0.0148*0.4; delta_umax=0.0148*0.4; Umin=kron(ones(Nc,1),umin); Umax=kron(ones(Nc,1),umax); %ԼӲԼãʱΪӲԼ ycmax=[0.21;5]; ycmin=[-0.3;-3]; Ycmax=kron(ones(Np,1),ycmax); Ycmin=kron(ones(Np,1),ycmin); %ϿԼԼ A_cons_cell={A_I zeros(Nu*Nc,1);-A_I zeros(Nu*Nc,1);THETA zeros(Ny*Np,1);-THETA zeros(Ny*Np,1)}; b_cons_cell={Umax-Ut;-Umin+Ut;Ycmax-PSI*kesi-GAMMA*PHI;-Ycmin+PSI*kesi+GAMMA*PHI}; A_cons=cell2mat(A_cons_cell);%̣ⷽ״̬ʽԼתΪֵȡֵΧ b_cons=cell2mat(b_cons_cell);%̣ⷽ״̬ʽԼȡֵ %״̬Լ M=10; delta_Umin=kron(ones(Nc,1),delta_umin); delta_Umax=kron(ones(Nc,1),delta_umax); lb=[delta_Umin;0];%̣ⷽ״̬½磬ʱڿɳ ub=[delta_Umax;M];%̣ⷽ״̬Ͻ磬ʱڿɳ %% ʼ % [X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub); options = optimset('Algorithm','active-set'); x_start=zeros(Nc+1,1);%һʼ [X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options); fprintf('exitflag=%d\n',exitflag); fprintf('H=%4.2f\n',H(1,1)); fprintf('f=%4.2f\n',f(1,1)); %% u_piao=X(1);%õ U(1)=kesi(7,1)+u_piao;%ǰʱ̵ĿΪһʱ̿+ %U(2)=Yita_ref(2);%dphi_ref sys= U; toc % End of mdlOutputs. ================================================ FILE: Chapter-6/chap6_LocalPlan_TrackingCtrl/FinalMPCPlanerDynamicCarSim_1218.m ================================================ function [sys,x0,str,ts] = FinalMPCPlanerDynamicCarSim_1218(t,x,u,flag) % óܣõģƹ滮ڣܹϰ % 汾 V1.0MATLAB汾R2011a,Sı׼ʽ % д 2013.12.17 % һθд 2014.02.24 % ״̬=[y_dot,x_dot,phi,,Y,X]Ϊǰƫay switch flag, case 0 %flag=0ʾڳʼ״̬ʱúmdlInitializeSizesгʼ [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 %flag=2ʾʱҪһɢ״̬ sys = mdlUpdates(t,x,u); % Update discrete states case 3 %flag=3ʾʱҪ sys = mdlOutputs(t,x,u); % Calculate outputs % case 4 % sys = mdlGetTimeOfNextVarHit(t,x,u); % Get next sample time case {1,4,9} % Unused flags % flag=1ʾʱҪ״̬΢ %flag=4ʾʱҪһβʱ䣬ֻɢϵͳãҪڱ䲽 %flag=9ʾʱϵͳҪһ˵дmdlTerminateдsys=[]Ϳ sys = []; otherwise error(['unhandled flag = ',num2str(flag)]); % Error handling end % End of dsfunc. %============================================================== % Initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. sizes = simsizes; %ģĽṹsimsizes sizes.NumContStates = 0;%ģ״̬ĸ sizes.NumDiscStates = 5;%ģɢ״̬ĸ sizes.NumOutputs = 10;%Yphi,ߵϵҪԿdphi,dphi=ay/x_dot; sizes.NumInputs = 6;%ģĸ sizes.DirFeedthrough = 1; %ģǷֱӹͨ sizes.NumSampleTimes = 1;%ģIJһ sys = simsizes(sizes); %󸳸sys x0 =[0.001;0.0001;0.0001;0.00001;0.00001;]; %״̬ %global U; %U=[0];%ʼ,UΪһά % global x; % x = zeros(md.ne + md.pye + md.me + md.Hu*md.me,1); % Initialize the discrete states. str = []; % Set str to an empty matrix. ts = [0.1 0]; % : [period, offset],켣滮Ϊ100ms %End of mdlInitializeSizes %============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u) sys = x; %״̬ %End of mdlUpdate. %============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u) %uCarSim %x״̬x=[y_dot,x_dot,phi,,Y,X] %tʱ tic Nx=5;%״̬ĸ %Nu=1;%ĸΪǰƫay %Ny=2;%ĸfalconeLTV֤ûĿЧã߿ Np =15;%Ԥⲽ Nc=2;%Ʋ Nobs=6;%ϰ T=0.1;%Sample Time %ӿת,x_dotһdzСǷַֹĸΪ % y_dot=u(1)/3.6-0.000000001*0.4786;%CarSimkm/hתΪm/s y_dot=u(1)/3.6; %ٶȵλkm/hתΪm/s x_dot=u(2)/3.6+0.0001;%CarSimkm/hתΪm/s.һСΪ˷ֹĸΪ phi=u(3)*pi/180; %CarSimΪǶȣǶתΪ phi_dot=u(4)*pi/180;%ٶȣǶתΪ Y=u(5);%λΪm X=u(6);%λΪ %% ο켣 shape=2.4;%ƣڲο켣 dx1=25;dx2=21.95;%ûκʵ壬ֻDz dy1=4.05;dy2=5.7;%ûκʵ壬ֻDz Xs1=27.19;Xs2=56.46;% X_phi=1:1:220;%Ǹٶȣx_dotģٶΪ10m/s=10*0.1=1 z1=shape/dx1*(X_phi-Xs1)-shape/2; z2=shape/dx2*(X_phi-Xs2)-shape/2; Y_ref=dy1/2.*(1+tanh(z1))-dy2/2.*(1+tanh(z2)); % phi_ref=atan(dy1*(1./cosh(z1)).^2*(1.2/dx1)-dy2*(1./cosh(z2)).^2*(1.2/dx2)); %% ת״̬תΪ״̬ State_Initial=zeros(Nx,1); State_Initial(1,1)=y_dot; State_Initial(2,1)=x_dot; State_Initial(3,1)=phi; State_Initial(4,1)=Y; State_Initial(5,1)=X; %% ϰϢ X_obstacle=zeros(Nobs,1); X_obstacle(1:2)=30; X_obstacle(3:4)=35; X_obstacle(5:6)=32.5; Y_obstacle=zeros(Nobs,1); Y_obstacle(1)=0.5; Y_obstacle(2)=1; Y_obstacle(3)=0.5; Y_obstacle(4)=1; Y_obstacle(5)=0.5; Y_obstacle(6)=1; Yref=(Y_ref(1,round(State_Initial(5,1))+1:round(State_Initial(5,1))+15))';%Yrefõǽ㷨˴Ϊֲ· Q=100*eye(Np,Np);%۾󣬶Ϊ1ԸݸԵ R=20*eye(Nc,Nc); % S=100;%ϺȨ %% ʼ %Լ mu=0.4;%Ħϵ g=9.8; lb=[-mu*g;-mu*g]; ub=[mu*g;mu*g]; A=[]; b=[]; Aeq=[]; beq=[]; options = optimset('Algorithm','active-set'); [A,fval,exitflag]=fmincon(@(x)MY_costfunction(x,State_Initial,Np,Nc,Nobs,T,Yref,Q,R,S,X_obstacle,Y_obstacle),[0;0;],A,b,Aeq,beq,lb,ub,[],options);%Լ⣬ٶ % [A,fval,exitflag]=fminbnd(@(x)MY_costfunction(x,State_Initial,Np,Nc,T,Yref,Q,R,S),lb,ub);%ֻ½ԼֲС % [A,fval,exitflag]=fminsearch(@(x)MY_costfunction(x,State_Initial,Np,Nc,Nobs,T,Yref,Q,R,S,X_obstacle,Y_obstacle),[0;0]);%Լ⣬ٶ fprintf('exitflag=%d\n',exitflag); %% % ¸ݼĿƵе״̬ y_dot_predict=zeros(Np,1); x_dot_predict=zeros(Np,1); phi_predict=zeros(Np,1); Y_predict=zeros(Np,1); X_predict=zeros(Np,1); for i=1:1:Np if i==Nc-1 ay(i)=A(1); % ״̬ y_dot_predict(i,1)=State_Initial(1,1)+T*ay(i); x_dot_predict(i,1)=State_Initial(2,1); phi_predict(i,1)=State_Initial(3,1)+T*ay(i)/State_Initial(2,1); Y_predict(i,1)=State_Initial(4,1)+T*(State_Initial(2,1)*sin(State_Initial(3,1))+State_Initial(1,1)*cos(State_Initial(3,1))); X_predict(i,1)=State_Initial(5,1)+T*(State_Initial(2,1)*cos(State_Initial(3,1))-State_Initial(1,1)*sin(State_Initial(3,1))); else %if i<=5 ay(i)=A(2);%дǽ y_dot_predict(i,1)=y_dot_predict(i-1,1)+T*ay(i); x_dot_predict(i,1)=State_Initial(2,1); phi_predict(i,1)=phi_predict(i-1,1)+T*ay(i)/x_dot_predict(i-1,1); Y_predict(i,1)=Y_predict(i-1)+T*(State_Initial(2,1)*sin(phi_predict(i-1))+y_dot_predict(i-1)*cos(phi_predict(i-1))); X_predict(i,1)=X_predict(i-1)+T*(State_Initial(2,1)*cos(phi_predict(i-1))-y_dot_predict(i-1)*sin(phi_predict(i-1))); end end Paramater_X_Y=polyfit(X_predict,Y_predict,4); Paramater_X_PHI=polyfit(X_predict,phi_predict,4); OutPut(1:5)=Paramater_X_Y; OutPut(6:10)=Paramater_X_PHI; sys=OutPut; toc % End of mdlOutputs. %% ۺĹӺ function cost = MY_costfunction(x,State_Initial,Np,Nc,Nobs,T,Yref,Q,R,S,X_obstacle,Y_obstacle) cost=0; y_dot=State_Initial(1,1); x_dot=State_Initial(2,1); phi=State_Initial(3,1); Y=State_Initial(4,1); X_start=State_Initial(5,1); y_dot_predict=zeros(Np,1); x_dot_predict=zeros(Np,1); phi_predict=zeros(Np,1); Y_predict=zeros(Np,1); X_predict=zeros(Np,1); Y_error=zeros(Np,1); J_obst=zeros(Np,1); ay=zeros(Np,1); for i=1:1:Np if i==Nc-1 ay(i,1)=x(1); % ״̬ y_dot_predict(i,1)=y_dot+T*ay(i,1); x_dot_predict(i,1)=x_dot; phi_predict(i,1)=phi+T*ay(i)/x_dot; Y_predict(i,1)=Y+T*(x_dot*sin(phi)+y_dot*cos(phi)); X_predict(i,1)=X_start+T*(x_dot*cos(phi)-y_dot*sin(phi)); for j=1:1:Nobs J_obst(i,1)=J_obst(i,1)+1/(((X_predict(i,1))-X_obstacle(j,1))^2+(Y_predict(i,1)-Y_obstacle(j,1))^2+0.000001); end else %if i<=5 ay(i,1)=x(2);%дǽ y_dot_predict(i,1)=y_dot_predict(i-1,1)+T*ay(i,1); x_dot_predict(i,1)=x_dot; phi_predict(i,1)=phi_predict(i-1,1)+T*ay(i)/x_dot_predict(i-1,1); Y_predict(i,1)=Y_predict(i-1)+T*(x_dot*sin(phi_predict(i-1))+y_dot_predict(i-1)*cos(phi_predict(i-1))); X_predict(i,1)=X_predict(i-1)+T*(x_dot*cos(phi_predict(i-1))-y_dot_predict(i-1)*sin(phi_predict(i-1))); for p=1:1:Nobs J_obst(i,1)=J_obst(i,1)+1/(((X_predict(i,1))-X_obstacle(p,1))^2+(Y_predict(i,1)-Y_obstacle(p,1))^2+0.000001); end % else % ay(i)=x(2); % y_dot_predict(i,1)=y_dot_predict(i-1,1)+T*ay(i); % x_dot_predict(i,1)=x_dot; % phi_predict(i,1)=phi_predict(i-1,1)+T*ay(i)/x_dot_predict(i-1,1); % Y_predict(i,1)=Y_predict(i-1)+T*(x_dot*sin(phi_predict(5,1))+y_dot_predict(5,1)*cos(phi_predict(5,1))); % X_predict(i,1)=X_predict(i-1)+T*(x_dot*cos(phi_predict(5,1))-y_dot_predict(5,1)*sin(phi_predict(5,1))); % end end %J_obst=J_obst+1/(((X_predict(i,1))-X_obstacle(2,1))^2+(Y_predict(i,1)-Y_obstacle(2,1))^2+0.00001); Y_error(i,1)=Y_predict(i,1)-Yref(i,1);%ע˴YrefY_refҪֿYrefǾֲ·,Y_refΪȫ· end cost=cost+Y_error'*Q*Y_error+ay(1:2)'*R*ay(1:2)+S*sum(J_obst(:)); % End of CostFunction ================================================ FILE: Chapter-6/chap6_LocalPlan_TrackingCtrl/ReadMe ================================================ Integrate local planning and path tracking in MPC ================================================ FILE: Chapter-6/chap6_LocalPlan_TrackingCtrl/chapt6_MPC_DynamicModel_PlanCtrl.mdl ================================================ Model { Name "chapt6_MPC_DynamicModel_PlanCtrl" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.86" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "FinalMPCModelDynamicCarsimWithPlan_1218" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [2064.0, 33.0, 1418.0, 841.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [8] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [1368.0, 664.0] ZoomFactor [1.0] Offset [0.0, 0.0] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Mon Sep 02 21:20:38 2019" RTWModifiedTimeStamp 489359734 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "chapt6_MPC_DynamicModel_PlanCtrl" Array { Type "Cell" Dimension 1 Cell "chapt6_MPC_DynamicModel_PlanCtrl" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "50" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Constant Value "1" VectorParams1D on SamplingMode "Sample based" OutMin "[]" OutMax "[]" OutDataTypeStr "Inherit: Inherit from 'Constant value'" LockScale off SampleTime "inf" FramePeriod "inf" PreserveConstantTs off } Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType Fcn Expr "sin(u[1])" SampleTime "-1" } Block { BlockType Mux Inputs "4" DisplayOption "none" UseBusObject off BusObject "BusObject" NonVirtualBus off } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Scope ModelBased off TickLabels "OneTimeTick" ZoomMode "on" Grid "on" TimeRange "auto" YMin "-5" YMax "5" SaveToWorkspace off SaveName "ScopeData" DataFormat "Array" LimitDataPoints on MaxDataPoints "5000" Decimation "1" SampleInput off SampleTime "-1" } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } Block { BlockType UnitDelay InitialCondition "0" InputProcessing "Inherited" SampleTime "1" StateMustResolveToSignalObject off CodeGenStateStorageClass "Auto" HasFrameUpgradeWarning on } } System { Name "chapt6_MPC_DynamicModel_PlanCtrl" Location [2064, 33, 3482, 874] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" ReportName "simulink-default.rpt" SIDHighWatermark "84" Block { BlockType Reference Name "CarSim S-Function" SID "47" Ports [1, 1] Position [485, 74, 585, 136] ZOrder -1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i" SIMFILE "chapt6_Localplan_Trackingctrl.sim" } Block { BlockType Constant Name "Constant" SID "50" Position [290, 170, 320, 200] ZOrder -2 Value "0" } Block { BlockType S-Function Name "Controller" SID "1" Ports [1, 1] Position [305, 288, 450, 392] ZOrder -3 BlockMirror on BackgroundColor "lightBlue" DropShadow on FunctionName "FinalMPCControllerDynamicCarSim_1218" EnableBusSupport off } Block { BlockType Demux Name "Demux1" SID "54" Ports [1, 6] Position [645, 143, 650, 232] ZOrder -4 ShowName off Outputs "6" DisplayOption "bar" } Block { BlockType Fcn Name "Fcn" SID "49" Position [290, 105, 350, 135] ZOrder -5 Expr "180*u/3.1415926" } Block { BlockType Mux Name "Mux" SID "48" Ports [4, 1] Position [400, 66, 405, 144] ZOrder -6 ShowName off DisplayOption "bar" } Block { BlockType Mux Name "Mux1" SID "73" Ports [2, 1] Position [515, 305, 520, 360] ZOrder -7 BlockMirror on NamePlacement "alternate" ShowName off Inputs "2" DisplayOption "bar" } Block { BlockType S-Function Name "PathPlan" SID "72" Ports [1, 1] Position [585, 345, 765, 435] ZOrder -8 BlockMirror on BackgroundColor "[0.000000, 1.000000, 0.000000]" DropShadow on FunctionName "FinalMPCPlanerDynamicCarSim_1218" EnableBusSupport off } Block { BlockType Scope Name "Scope2" SID "41" Ports [6] Position [960, 147, 1025, 228] ZOrder -9 Floating off Location [6, 48, 1286, 759] Open off NumInputPorts "6" ZoomMode "xonly" List { ListType AxesTitles axes1 "%" axes2 "%" axes3 "%" axes4 "%" axes5 "%" axes6 "%" } ShowLegends off TimeRange "20" YMin "-1~35~-10~-20~-4~0" YMax "1~36.5~5~20~2~200" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Block { BlockType Scope Name "Scope3" SID "53" Ports [1] Position [655, 15, 720, 95] ZOrder -10 Floating off Location [5, 48, 1371, 727] Open off NumInputPorts "1" List { ListType AxesTitles axes1 "%" } ShowLegends off TimeRange "20" YMin "0" YMax "19" SaveName "ScopeData2" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Block { BlockType ToWorkspace Name "To Workspace" SID "42" Ports [1] Position [795, 105, 855, 135] ZOrder -11 VariableName "y" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Block { BlockType ToWorkspace Name "To Workspace1" SID "52" Ports [1] Position [160, 405, 220, 435] ZOrder -12 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Block { BlockType UnitDelay Name "Unit Delay" SID "57" Position [695, 263, 730, 297] ZOrder -13 InputProcessing "Elements as channels (sample based)" SampleTime "-1" } Block { BlockType Reference Name "XY Graph" SID "56" Ports [2] Position [945, 256, 1040, 349] ZOrder -14 LibraryVersion "1.285" SourceBlock "simulink/Sinks/XY Graph" SourceType "XY scope." ContentPreviewEnabled off xmin "0" xmax "250" ymin "-3" ymax "6" st "-1" } Block { BlockType Scope Name "delta_f" SID "18" Ports [1] Position [160, 295, 225, 375] ZOrder -15 Floating off Location [5, 48, 1371, 727] Open off NumInputPorts "1" List { ListType AxesTitles axes1 "%" } ShowLegends off TimeRange "20" YMin "-3" YMax "3" SaveName "ScopeData1" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Line { ZOrder 1 SrcBlock "CarSim S-Function" SrcPort 1 Points [15, 0] Branch { ZOrder 2 Points [50, 0; 0, 15] DstBlock "To Workspace" DstPort 1 } Branch { ZOrder 3 Points [0, 85; 15, 0] Branch { ZOrder 4 DstBlock "Demux1" DstPort 1 } Branch { ZOrder 5 Points [0, 90] DstBlock "Unit Delay" DstPort 1 } } } Line { ZOrder 6 SrcBlock "Fcn" SrcPort 1 Points [5, 0] Branch { ZOrder 7 Points [10, 0; 0, -25] Branch { ZOrder 8 Points [0, -20] DstBlock "Mux" DstPort 1 } Branch { ZOrder 9 DstBlock "Mux" DstPort 2 } } Branch { ZOrder 10 Points [0, -60; -235, 0; 0, 275] Branch { ZOrder 11 DstBlock "delta_f" DstPort 1 } Branch { ZOrder 12 Points [0, 85] DstBlock "To Workspace1" DstPort 1 } } } Line { ZOrder 13 SrcBlock "Constant" SrcPort 1 Points [50, 0; 0, -50] Branch { ZOrder 37 Points [10, 0] Branch { ZOrder 14 DstBlock "Mux" DstPort 4 } Branch { ZOrder 16 Points [10, 0] } } Branch { ZOrder 17 Points [0, -20] DstBlock "Mux" DstPort 3 } } Line { ZOrder 18 SrcBlock "Mux" SrcPort 1 Points [35, 0] Branch { ZOrder 19 DstBlock "CarSim S-Function" DstPort 1 } Branch { ZOrder 20 Points [0, -50] DstBlock "Scope3" DstPort 1 } } Line { ZOrder 21 SrcBlock "Demux1" SrcPort 1 DstBlock "Scope2" DstPort 1 } Line { ZOrder 22 SrcBlock "Demux1" SrcPort 2 DstBlock "Scope2" DstPort 2 } Line { ZOrder 23 SrcBlock "Demux1" SrcPort 3 DstBlock "Scope2" DstPort 3 } Line { ZOrder 24 SrcBlock "Demux1" SrcPort 4 DstBlock "Scope2" DstPort 4 } Line { ZOrder 25 SrcBlock "Demux1" SrcPort 5 Points [155, 0] Branch { ZOrder 26 DstBlock "Scope2" DstPort 5 } Branch { ZOrder 27 Points [0, 115] DstBlock "XY Graph" DstPort 2 } } Line { ZOrder 28 SrcBlock "Demux1" SrcPort 6 Points [180, 0] Branch { ZOrder 29 DstBlock "Scope2" DstPort 6 } Branch { ZOrder 30 Points [0, 55] DstBlock "XY Graph" DstPort 1 } } Line { ZOrder 31 SrcBlock "Controller" SrcPort 1 Points [-25, 0] DstBlock "Fcn" DstPort 1 } Line { ZOrder 32 SrcBlock "Unit Delay" SrcPort 1 Points [45, 0; 0, 40] Branch { ZOrder 33 DstBlock "Mux1" DstPort 1 } Branch { ZOrder 34 Points [0, 70] DstBlock "PathPlan" DstPort 1 } } Line { ZOrder 35 SrcBlock "PathPlan" SrcPort 1 Points [-10, 0; 0, -45] DstBlock "Mux1" DstPort 2 } Line { ZOrder 36 SrcBlock "Mux1" SrcPort 1 Points [-27, 0; 0, 5] DstBlock "Controller" DstPort 1 } Annotation { SID "76" Name "delta" Position [262, 113, 262, 113] AutoSize on WordWrap off ZOrder -1 } Annotation { SID "77" Name "X" Position [887, 274, 887, 274] AutoSize on WordWrap off ZOrder -2 } Annotation { SID "78" Name "Y" Position [883, 320, 883, 320] AutoSize on WordWrap off ZOrder -3 } Annotation { SID "79" Name "y_dot" Position [739, 140, 739, 140] AutoSize on WordWrap off ZOrder -4 } Annotation { SID "80" Name "x_dot" Position [736, 158, 736, 158] AutoSize on WordWrap off ZOrder -5 } Annotation { SID "81" Name "phi" Position [739, 174, 739, 174] AutoSize on WordWrap off ZOrder -6 } Annotation { SID "82" Name "phi_dot" Position [739, 189, 739, 189] AutoSize on WordWrap off ZOrder -7 } Annotation { SID "83" Name "Y" Position [735, 202, 735, 202] AutoSize on WordWrap off ZOrder -8 } Annotation { SID "84" Name "X" Position [736, 216, 736, 216] AutoSize on WordWrap off ZOrder -9 } } } ================================================ FILE: Chapter-6/chap6_LocalPlan_TrackingCtrl/chapt6_MPC_DynamicModel_PlanCtrl.mdl.r2010b ================================================ Model { Name "FinalMPCModelDynamicCarsimWithPlan_1218" Version 7.6 MdlSubVersion 0 GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.85" NumModelReferences 0 NumTestPointedSignals 0 } SavedCharacterEncoding "GBK" slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "FinalMPCModelDynamicCarsimWithPlan_1218" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" MaxMDLFileLineLength 120 Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking" ModifiedDateFormat "%" LastModifiedDate "Wed Feb 26 21:58:24 2014" RTWModifiedTimeStamp 315350537 ModelVersionFormat "1.%" ConfigurationManager "None" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 2 Version "1.10.0" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 3 Version "1.10.0" StartTime "0.0" StopTime "100" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 4 Version "1.10.0" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 5 Version "1.10.0" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off } Simulink.DebuggingCC { $ObjectID 6 Version "1.10.0" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "Use local settings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" InitInArrayFormatMsg "warning" StrictBusMsg "Warning" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" } Simulink.HardwareCC { $ObjectID 7 Version "1.10.0" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 8 Version "1.10.0" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 9 Version "1.10.0" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 10 Version "1.10.0" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on TemplateMakefile "grt_default_tmf" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off IncludeHyperlinkInReport off LaunchReport off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateSLWebview off RTWCompilerOptimization "Off" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 11 Version "1.10.0" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 12 Version "1.10.0" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "MultiInstanceERTCode" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "SupportNonInlinedSFcns" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" TargetFunctionLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTCodeCoverageTool "None" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" PortableWordSizes off ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 13 Version "1.10.0" Description "HDL Coder custom configuration component" Name "HDL Coder" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition " [ 200, 85, 1080, 715 ] " } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 2 } BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } BlockParameterDefaults { Block { BlockType Constant Value "1" VectorParams1D on SamplingMode "Sample based" OutMin "[]" OutMax "[]" OutDataTypeStr "Inherit: Inherit from 'Constant value'" LockScale off SampleTime "inf" FramePeriod "inf" PreserveConstantTs off } Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType Fcn Expr "sin(u[1])" SampleTime "-1" } Block { BlockType Mux Inputs "4" DisplayOption "none" UseBusObject off BusObject "BusObject" NonVirtualBus off } Block { BlockType "S-Function" FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Scope ModelBased off TickLabels "OneTimeTick" ZoomMode "on" Grid "on" TimeRange "auto" YMin "-5" YMax "5" SaveToWorkspace off SaveName "ScopeData" LimitDataPoints on MaxDataPoints "5000" Decimation "1" SampleInput off SampleTime "-1" } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" FixptAsFi off } Block { BlockType UnitDelay X0 "0" InputProcessing "Inherited" SampleTime "1" StateMustResolveToSignalObject off RTWStateStorageClass "Auto" } } System { Name "FinalMPCModelDynamicCarsimWithPlan_1218" Location [119, 121, 1481, 778] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "100" ReportName "simulink-default.rpt" SIDHighWatermark "75" Block { BlockType Reference Name "CarSim S-Function" SID "47" Ports [1, 1] Position [485, 74, 585, 136] Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_i" SIMFILE "simfile" } Block { BlockType Constant Name "Constant" SID "50" Position [290, 170, 320, 200] Value "0" } Block { BlockType "S-Function" Name "Controller" SID "1" Ports [1, 1] Position [335, 286, 450, 384] BlockMirror on BackgroundColor "lightBlue" DropShadow on FunctionName "FinalMPCControllerDynamicCarSim_1218" EnableBusSupport off } Block { BlockType Demux Name "Demux1" SID "54" Ports [1, 6] Position [645, 143, 650, 232] ShowName off Outputs "6" DisplayOption "bar" } Block { BlockType Fcn Name "Fcn" SID "49" Position [290, 105, 350, 135] Expr "180*u/3.1415926" } Block { BlockType Mux Name "Mux" SID "48" Ports [4, 1] Position [400, 66, 405, 144] ShowName off DisplayOption "bar" } Block { BlockType Mux Name "Mux1" SID "73" Ports [2, 1] Position [515, 305, 520, 360] BlockMirror on NamePlacement "alternate" ShowName off Inputs "2" DisplayOption "bar" } Block { BlockType "S-Function" Name "PathPlan" SID "72" Ports [1, 1] Position [610, 345, 730, 435] BlockMirror on BackgroundColor "[0.000000, 1.000000, 0.000000]" DropShadow on FunctionName "FinalMPCPlanerDynamicCarSim_1218" EnableBusSupport off } Block { BlockType Scope Name "Scope2" SID "41" Ports [6] Position [960, 147, 1025, 228] Floating off Location [6, 48, 1286, 759] Open off NumInputPorts "6" ZoomMode "xonly" List { ListType AxesTitles axes1 "%" axes2 "%" axes3 "%" axes4 "%" axes5 "%" axes6 "%" } TimeRange "20" YMin "-1~35~-10~-20~-4~0" YMax "1~36.5~5~20~2~200" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Block { BlockType Scope Name "Scope3" SID "53" Ports [1] Position [655, 15, 720, 95] Floating off Location [5, 48, 1371, 727] Open off NumInputPorts "1" List { ListType AxesTitles axes1 "%" } TimeRange "20" YMin "0" YMax "19" SaveName "ScopeData2" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Block { BlockType ToWorkspace Name "To Workspace" SID "42" Ports [1] Position [795, 105, 855, 135] VariableName "y" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Block { BlockType ToWorkspace Name "To Workspace1" SID "52" Ports [1] Position [160, 405, 220, 435] VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Block { BlockType UnitDelay Name "Unit Delay" SID "57" Position [695, 263, 730, 297] InputProcessing "Elements as channels (sample based)" SampleTime "-1" } Block { BlockType Reference Name "XY Graph" SID "56" Ports [2] Position [945, 256, 1040, 349] LibraryVersion "1.225" SourceBlock "simulink/Sinks/XY Graph" SourceType "XY scope." ShowPortLabels "FromPortIcon" SystemSampleTime "-1" FunctionWithSeparateData off RTWMemSecFuncInitTerm "Inherit from model" RTWMemSecFuncExecute "Inherit from model" RTWMemSecDataConstants "Inherit from model" RTWMemSecDataInternal "Inherit from model" RTWMemSecDataParameters "Inherit from model" GeneratePreprocessorConditionals off xmin "0" xmax "250" ymin "-3" ymax "6" st "-1" } Block { BlockType Scope Name "delta_f" SID "18" Ports [1] Position [160, 295, 225, 375] Floating off Location [5, 48, 1371, 727] Open off NumInputPorts "1" List { ListType AxesTitles axes1 "%" } TimeRange "20" YMin "-3" YMax "3" SaveName "ScopeData1" DataFormat "StructureWithTime" LimitDataPoints off SampleTime "0" } Line { SrcBlock "CarSim S-Function" SrcPort 1 Points [15, 0] Branch { Points [50, 0; 0, 15] DstBlock "To Workspace" DstPort 1 } Branch { Points [0, 85; 15, 0] Branch { DstBlock "Demux1" DstPort 1 } Branch { Points [0, 90] DstBlock "Unit Delay" DstPort 1 } } } Line { SrcBlock "Fcn" SrcPort 1 Points [5, 0] Branch { Points [10, 0; 0, -25] Branch { Points [0, -20] DstBlock "Mux" DstPort 1 } Branch { DstBlock "Mux" DstPort 2 } } Branch { Points [0, -60; -235, 0; 0, 275] Branch { DstBlock "delta_f" DstPort 1 } Branch { Points [0, 85] DstBlock "To Workspace1" DstPort 1 } } } Line { SrcBlock "Constant" SrcPort 1 Points [50, 0; 0, -45] Branch { Points [0, -5] DstBlock "Mux" DstPort 4 } Branch { Points [0, -5] Branch { Points [20, 0] } Branch { Points [0, -20] DstBlock "Mux" DstPort 3 } } } Line { SrcBlock "Mux" SrcPort 1 Points [35, 0] Branch { DstBlock "CarSim S-Function" DstPort 1 } Branch { Points [0, -50] DstBlock "Scope3" DstPort 1 } } Line { SrcBlock "Demux1" SrcPort 1 DstBlock "Scope2" DstPort 1 } Line { SrcBlock "Demux1" SrcPort 2 DstBlock "Scope2" DstPort 2 } Line { SrcBlock "Demux1" SrcPort 3 DstBlock "Scope2" DstPort 3 } Line { SrcBlock "Demux1" SrcPort 4 DstBlock "Scope2" DstPort 4 } Line { SrcBlock "Demux1" SrcPort 5 Points [155, 0] Branch { DstBlock "Scope2" DstPort 5 } Branch { Points [0, 115] DstBlock "XY Graph" DstPort 2 } } Line { SrcBlock "Demux1" SrcPort 6 Points [180, 0] Branch { DstBlock "Scope2" DstPort 6 } Branch { Points [0, 55] DstBlock "XY Graph" DstPort 1 } } Line { SrcBlock "Controller" SrcPort 1 Points [-75, 0; 0, -215] DstBlock "Fcn" DstPort 1 } Line { SrcBlock "Unit Delay" SrcPort 1 Points [45, 0; 0, 40] Branch { DstBlock "Mux1" DstPort 1 } Branch { Points [0, 70] DstBlock "PathPlan" DstPort 1 } } Line { SrcBlock "PathPlan" SrcPort 1 Points [-35, 0; 0, -45] DstBlock "Mux1" DstPort 2 } Line { SrcBlock "Mux1" SrcPort 1 DstBlock "Controller" DstPort 1 } Annotation { Name "delta" Position [262, 113] } Annotation { Name "X" Position [887, 274] } Annotation { Name "Y" Position [883, 320] } Annotation { Name "y_dot" Position [739, 140] } Annotation { Name "x_dot" Position [736, 158] } Annotation { Name "phi" Position [739, 174] } Annotation { Name "phi_dot" Position [739, 189] } Annotation { Name "Y" Position [735, 202] } Annotation { Name "X" Position [736, 216] } } } ================================================ FILE: Chapter-6/chapter6_2_4.m ================================================ function [sys,x0,str,ts] = MPC_TrajPlanner(t,x,u,flag) % óܣõģƹ滮ڣܹϰ % 汾 V1.0MATLAB汾R2011a,Sı׼ʽ % д 2013.12.17 % һθд 2014.02.24 % ״̬=[y_dot,x_dot,phi,,Y,X]Ϊǰƫay switch flag, case 0 %flag=0ʾڳʼ״̬ʱúmdlInitializeSizesгʼ [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 %flag=2ʾʱҪһɢ״̬ sys = mdlUpdates(t,x,u); % Update discrete states case 3 %flag=3ʾʱҪ sys = mdlOutputs(t,x,u); % Calculate outputs % case 4 % sys = mdlGetTimeOfNextVarHit(t,x,u); % Get next sample time case {1,4,9} % Unused flags % flag=1ʾʱҪ״̬΢ %flag=4ʾʱҪһβʱ䣬ֻɢϵͳãҪڱ䲽 %flag=9ʾʱϵͳҪһ˵дmdlTerminateдsys=[]Ϳ sys = []; otherwise error(['unhandled flag = ',num2str(flag)]); % Error handling end % End of dsfunc. %============================================================== % Initialization %============================================================== function [sys,x0,str,ts] = mdlInitializeSizes % Call simsizes for a sizes structure, fill it in, and convert it % to a sizes array. sizes = simsizes; %ģĽṹsimsizes sizes.NumContStates = 0;%ģ״̬ĸ sizes.NumDiscStates = 5;%ģɢ״̬ĸ sizes.NumOutputs = 10;%Yphi,ߵϵҪԿdphi,dphi=ay/x_dot; sizes.NumInputs = 6;%ģĸ sizes.DirFeedthrough = 1; %ģǷֱӹͨ sizes.NumSampleTimes = 1;%ģIJһ sys = simsizes(sizes); %󸳸sys x0 =[0.001;0.0001;0.0001;0.00001;0.00001;]; %״̬ %global U; %U=[0];%ʼ,UΪһά % global x; % x = zeros(md.ne + md.pye + md.me + md.Hu*md.me,1); % Initialize the discrete states. str = []; % Set str to an empty matrix. ts = [0.1 0]; % : [period, offset],켣滮Ϊ100ms %End of mdlInitializeSizes %============================================================== % Update the discrete states %============================================================== function sys = mdlUpdates(t,x,u) sys = x; %״̬ %End of mdlUpdate. %============================================================== % Calculate outputs %============================================================== function sys = mdlOutputs(t,x,u) %uCarSim %x״̬x=[y_dot,x_dot,phi,,Y,X] %tʱ tic Nx=5;%״̬ĸ %Nu=1;%ĸΪǰƫay %Ny=2;%ĸfalconeLTV֤ûĿЧã߿ Np =15;%Ԥⲽ Nc=2;%Ʋ Nobs=6;%ϰ T=0.1;%Sample Time %ӿת,x_dotһdzСǷַֹĸΪ % y_dot=u(1)/3.6-0.000000001*0.4786;%CarSimkm/hתΪm/s y_dot=u(1)/3.6; %ٶȵλkm/hתΪm/s x_dot=u(2)/3.6+0.0001;%CarSimkm/hתΪm/s.һСΪ˷ֹĸΪ phi=u(3)*pi/180; %CarSimΪǶȣǶתΪ phi_dot=u(4)*pi/180;%ٶȣǶתΪ Y=u(5);%λΪm X=u(6);%λΪ %% ο켣 shape=2.4;%ƣڲο켣 dx1=25;dx2=21.95;%ûκʵ壬ֻDz dy1=4.05;dy2=5.7;%ûκʵ壬ֻDz Xs1=27.19;Xs2=56.46;% X_phi=1:1:220;%Ǹٶȣx_dotģٶΪ10m/s=10*0.1=1 z1=shape/dx1*(X_phi-Xs1)-shape/2; z2=shape/dx2*(X_phi-Xs2)-shape/2; Y_ref=dy1/2.*(1+tanh(z1))-dy2/2.*(1+tanh(z2)); % phi_ref=atan(dy1*(1./cosh(z1)).^2*(1.2/dx1)-dy2*(1./cosh(z2)).^2*(1.2/dx2)); %% ת״̬תΪ״̬ State_Initial=zeros(Nx,1); State_Initial(1,1)=y_dot; State_Initial(2,1)=x_dot; State_Initial(3,1)=phi; State_Initial(4,1)=Y; State_Initial(5,1)=X; %% ϰϢ X_obstacle=zeros(Nobs,1); X_obstacle(1:2)=30; X_obstacle(3:4)=35; X_obstacle(5:6)=32.5; Y_obstacle=zeros(Nobs,1); Y_obstacle(1)=0.5; Y_obstacle(2)=1; Y_obstacle(3)=0.5; Y_obstacle(4)=1; Y_obstacle(5)=0.5; Y_obstacle(6)=1; Yref=(Y_ref(1,round(State_Initial(5,1))+1:round(State_Initial(5,1))+15))';%Yrefõǽ㷨˴Ϊֲ· Q=100*eye(Np,Np);%۾󣬶Ϊ1ԸݸԵ R=20*eye(Nc,Nc); % S=100;%ϺȨ %% ʼ %Լ mu=0.4;%Ħϵ g=9.8; lb=[-mu*g;-mu*g]; ub=[mu*g;mu*g]; A=[]; b=[]; Aeq=[]; beq=[]; options = optimset('Algorithm','active-set'); [A,fval,exitflag]=fmincon(@(x)MY_costfunction(x,State_Initial,Np,Nc,Nobs,T,Yref,Q,R,S,X_obstacle,Y_obstacle),[0;0;],A,b,Aeq,beq,lb,ub,[],options);%Լ⣬ٶ % [A,fval,exitflag]=fminbnd(@(x)MY_costfunction(x,State_Initial,Np,Nc,T,Yref,Q,R,S),lb,ub);%ֻ½ԼֲС % [A,fval,exitflag]=fminsearch(@(x)MY_costfunction(x,State_Initial,Np,Nc,Nobs,T,Yref,Q,R,S,X_obstacle,Y_obstacle),[0;0]);%Լ⣬ٶ fprintf('exitflag=%d\n',exitflag); %% % ¸ݼĿƵе״̬ y_dot_predict=zeros(Np,1); x_dot_predict=zeros(Np,1); phi_predict=zeros(Np,1); Y_predict=zeros(Np,1); X_predict=zeros(Np,1); for i=1:1:Np if i==Nc-1 ay(i)=A(1); % ״̬ y_dot_predict(i,1)=State_Initial(1,1)+T*ay(i); x_dot_predict(i,1)=State_Initial(2,1); phi_predict(i,1)=State_Initial(3,1)+T*ay(i)/State_Initial(2,1); Y_predict(i,1)=State_Initial(4,1)+T*(State_Initial(2,1)*sin(State_Initial(3,1))+State_Initial(1,1)*cos(State_Initial(3,1))); X_predict(i,1)=State_Initial(5,1)+T*(State_Initial(2,1)*cos(State_Initial(3,1))-State_Initial(1,1)*sin(State_Initial(3,1))); else %if i<=5 ay(i)=A(2);%дǽ y_dot_predict(i,1)=y_dot_predict(i-1,1)+T*ay(i); x_dot_predict(i,1)=State_Initial(2,1); phi_predict(i,1)=phi_predict(i-1,1)+T*ay(i)/x_dot_predict(i-1,1); Y_predict(i,1)=Y_predict(i-1)+T*(State_Initial(2,1)*sin(phi_predict(i-1))+y_dot_predict(i-1)*cos(phi_predict(i-1))); X_predict(i,1)=X_predict(i-1)+T*(State_Initial(2,1)*cos(phi_predict(i-1))-y_dot_predict(i-1)*sin(phi_predict(i-1))); end end Paramater_X_Y=polyfit(X_predict,Y_predict,4); Paramater_X_PHI=polyfit(X_predict,phi_predict,4); OutPut(1:5)=Paramater_X_Y; OutPut(6:10)=Paramater_X_PHI; sys=OutPut; toc % End of mdlOutputs. %% ۺĹӺ function cost = MY_costfunction(x,State_Initial,Np,Nc,Nobs,T,Yref,Q,R,S,X_obstacle,Y_obstacle) cost=0; y_dot=State_Initial(1,1); x_dot=State_Initial(2,1); phi=State_Initial(3,1); Y=State_Initial(4,1); X_start=State_Initial(5,1); y_dot_predict=zeros(Np,1); x_dot_predict=zeros(Np,1); phi_predict=zeros(Np,1); Y_predict=zeros(Np,1); X_predict=zeros(Np,1); Y_error=zeros(Np,1); J_obst=zeros(Np,1); ay=zeros(Np,1); for i=1:1:Np if i==Nc-1 ay(i,1)=x(1); % ״̬ y_dot_predict(i,1)=y_dot+T*ay(i,1); x_dot_predict(i,1)=x_dot; phi_predict(i,1)=phi+T*ay(i)/x_dot; Y_predict(i,1)=Y+T*(x_dot*sin(phi)+y_dot*cos(phi)); X_predict(i,1)=X_start+T*(x_dot*cos(phi)-y_dot*sin(phi)); for j=1:1:Nobs J_obst(i,1)=J_obst(i,1)+1/(((X_predict(i,1))-X_obstacle(j,1))^2+(Y_predict(i,1)-Y_obstacle(j,1))^2+0.000001); end else %if i<=5 ay(i,1)=x(2);%дǽ y_dot_predict(i,1)=y_dot_predict(i-1,1)+T*ay(i,1); x_dot_predict(i,1)=x_dot; phi_predict(i,1)=phi_predict(i-1,1)+T*ay(i)/x_dot_predict(i-1,1); Y_predict(i,1)=Y_predict(i-1)+T*(x_dot*sin(phi_predict(i-1))+y_dot_predict(i-1)*cos(phi_predict(i-1))); X_predict(i,1)=X_predict(i-1)+T*(x_dot*cos(phi_predict(i-1))-y_dot_predict(i-1)*sin(phi_predict(i-1))); for p=1:1:Nobs J_obst(i,1)=J_obst(i,1)+1/(((X_predict(i,1))-X_obstacle(p,1))^2+(Y_predict(i,1)-Y_obstacle(p,1))^2+0.000001); end % else % ay(i)=x(2); % y_dot_predict(i,1)=y_dot_predict(i-1,1)+T*ay(i); % x_dot_predict(i,1)=x_dot; % phi_predict(i,1)=phi_predict(i-1,1)+T*ay(i)/x_dot_predict(i-1,1); % Y_predict(i,1)=Y_predict(i-1)+T*(x_dot*sin(phi_predict(5,1))+y_dot_predict(5,1)*cos(phi_predict(5,1))); % X_predict(i,1)=X_predict(i-1)+T*(x_dot*cos(phi_predict(5,1))-y_dot_predict(5,1)*sin(phi_predict(5,1))); % end end %J_obst=J_obst+1/(((X_predict(i,1))-X_obstacle(2,1))^2+(Y_predict(i,1)-Y_obstacle(2,1))^2+0.00001); Y_error(i,1)=Y_predict(i,1)-Yref(i,1);%ע˴YrefY_refҪֿYrefǾֲ·,Y_refΪȫ· end cost=cost+Y_error'*Q*Y_error+ay(1:2)'*R*ay(1:2)+S*sum(J_obst(:)); % End of CostFunction ================================================ FILE: Chapter-7/ReadMe ================================================ This folder holds simulation codes for Chapter 7 * chapter7_4_2.m: Matlab code for handling stability of high-speed AGVs with MPC * chapter_7_MPC_highspeed_handlig_stability: Simulink/Carsim codes for Chapter 7 ================================================ FILE: Chapter-7/chapter7_4_2.m ================================================ function [sys,x0,str,ts] =Main_CurvePathTracking_CVXGEN_Terrain(t,x,u,flag) %***************************************************************% % This is a Simulink/Carsim joint simulation solution for safe driving % envelope control of high speed autonomous vehicle % Linearized spatial bicycle vehicle dynamic model is applied. % No successive linearizarion. No two time scale of prediction horizon % Constant high speed, curve path tracking % state vector =[beta,yawrate,e_phi,s,e_y] % control input = [steer_SW] % many other parameters are also outputed for comparision. % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 15; %S sizes.NumInputs = 38; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization [y, e] = func_RLSFilter_Calpha_f('initial', 0.95, 10, 10); [y, e] = func_RLSFilter_Calpha_r('initial', 0.95, 10, 10); global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; % for SUV VehiclePara.m = 1600; %mΪ,Kg; Sprung mass = 1370 VehiclePara.g = 9.81; VehiclePara.hCG = 0.65;%m VehiclePara.Lf = 1.12; % 1.05 VehiclePara.Lr = 1.48; % 1.55 VehiclePara.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; VehiclePara.Tr = 1.565; %c,or 1.57. ע᳤lcδȷ VehiclePara.mu = 0.85; % 0.55; %Ħ VehiclePara.Iz = 2059.2; %IΪZתв VehiclePara.Ix = 700.7; %IΪZתв VehiclePara.Radius = 0.387; % ̥뾶 global MPCParameters; MPCParameters.Np = 20;% predictive horizon Assume Np=Nc MPCParameters.Ns = 10; % Tsplit MPCParameters.Ts = 0.05; % the sample time of near term MPCParameters.Tsl = 0.2; % the sample time of long term MPCParameters.Nx = 6; %the number of state variables MPCParameters.Ny = 2; %the number of output variables MPCParameters.Nu = 1; %the number of control inputs global CostWeights; CostWeights.Wephi = 100; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.Wey = 10; CostWeights.Ddeltaf = 10; CostWeights.deltaf = 1; % ò CostWeights.Wshar = 500; CostWeights.Wshr = 500; global Constraints; Constraints.dumax = 0.1/MPCParameters.Ts; % Units: rad,0.08rad/s--4.6deg/s Constraints.umax = 0.4; % Units: rad appro.23deg Constraints.arlim = 6*pi/180; % alpha_lim=6deg~ 0.1047rad Constraints.rmax = 1.0; % rr_max = 1rad/s ar_slackMax = 6*pi/180; % rad rmax_slackMax = 1.0; Constraints.Sshmax = [ar_slackMax; rmax_slackMax]; Constraints.DPhimax = 60*pi/180; % ƫ60deg Constraints.Dymax = 1.7; % 3.0; cross-track-error max 3m global WayPoints_IndexPre; WayPoints_IndexPre = 1; global Reftraj; % Reftraj = load('WayPoints_Alt3fromFHWA_Overall_Station_Bank.mat'); Reftraj = load('WayPoints_Alt3fromFHWA_Samples.mat'); global FeedbackCorrects; FeedbackCorrects.StatePred = zeros(6,1); FeedbackCorrects.Ctrlopt = 0; % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; global FeedbackCorrects; Ctrl_SteerSW = 0; t_Elapsed = 0; PosX = 0; PosY = 0; PosPsi = 0; Vel = 0; e_psi = 0; e_y = 0; fwa_opt = 0; Shenvelop_hat = [0; 0]; r_ssmax = 0; YZPM = 0; y_zmp = 0; LTR = 0; Vy = 0; alphar = 0; Roll_Shad = 0; Roll_BaknR = 0; Station = 0; yawrate = 0; % CafHat = 0; % CarHat = 0; % Fyf = 0; % Fyr = 0; % Arfa_f = 0; % Arfa_r = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %***********Step (2). State estimation and Location **********************% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration--------% [VehStateMeasured, ParaHAT] = func_StateEstimation(u); PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Vel = VehStateMeasured.x_dot; Vy = VehStateMeasured.y_dot; yawrate = VehStateMeasured.phi_dot; % rad/s Ax = VehStateMeasured.Ax; % x_dot Ay = VehStateMeasured.Ay; % y_dot % delta_f = VehStateMeasured.delta_f;% deg-->rad fwa = VehStateMeasured.fwa; Beta = VehStateMeasured.beta;%rad Roll_Shad = VehStateMeasured.Roll_Shad;%rad Station = VehStateMeasured.Station; Roll = ParaHAT.Roll; Rollrate = ParaHAT.Rollrate; Ay_CG = ParaHAT.Ay_CG; Ay_Bf_SM = ParaHAT.Ay_Bf_SM; Fyf = ParaHAT.Fyf; Fyr = ParaHAT.Fyr; alphaf = ParaHAT.alphaf; alphar = ParaHAT.alphar; %-----Estimate Cornering stiffness -------------------% %for front tire Arfa_f = (Beta + yawrate*VehiclePara.Lf/Vel - fwa); [yf, Calpha_f1] = func_RLSFilter_Calpha_f(Arfa_f, Fyf); CafHat = sum(Calpha_f1); if CafHat > -30000 CafHat = -110000; end %for rear tire Arfa_r = (Beta - yawrate*VehiclePara.Lr/Vel); [yr, Calpha_r1] = func_RLSFilter_Calpha_r(Arfa_r, Fyr); CarHat = sum(Calpha_r1); if CarHat > -30000 CarHat = -92000; end %-----OR use constant Cornering stiffness -------------------% CafHat = -90000; CarHat = -90000; %********Step(3): Given reference trajectory, update vehicle state and bounds *******************% [WPIndex, RefP, RefU, Uaug, Uaug_0, PrjP, Roll_BaknR] = func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated( MPCParameters,... VehiclePara,... WayPoints_IndexPre,... Reftraj.WayPoints_Collect,... VehStateMeasured ); % y_zmp = Uaug_0(2); % Roll_BaknR = Uaug_0(1); % Uaug_0(1) = Roll_Shad; if ( WPIndex <= 0) fprintf('Error: WPIndex <= 0 \n'); % else Xm = [Vy; yawrate; Rollrate; Roll; PrjP.ey; PrjP.epsi]; WayPoints_IndexPre = WPIndex; end %****Step(4): MPC formulation;********************% % [StateSpaceModel] = func_RigidbodyDynamicalModel_FOH_Extended(VehiclePara, MPCParameters, Vel, CafHat, CarHat); [StateSpaceModel] = func_RigidbodyModel_FOH_Matrix_ROLL(VehiclePara, MPCParameters, Vel, CafHat, CarHat); Np = MPCParameters.Np; Eymax = zeros(Np,1); Eymin = zeros(Np,1); LM_right = -5; LM_middle = 0; Yroad_L = -2.5; for i =1:1:Np % עeyǴŵ, Np = 25 Eymax(i,1) = (LM_middle - Yroad_L); Eymin(i,1) = (LM_right - Yroad_L); end [Envelope] = func_SafedrivingEnvelope_SL(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, Eymax, Eymin); %--- Weighting Regulation functions [Sl, Ql, Rdun, Wshl, dun, dul] = func_CostWeightingRegulation_QuadSlacks(MPCParameters, CostWeights, Constraints); %================CVXGEN solver==================================% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations params.x_0 = Xm; params.um = fwa; % measured front whee angle % params.x_0 = Xm - 0.6*(Xm - FeedbackCorrects.StatePred); % params.um = fwa - 0.6*(fwa - FeedbackCorrects.Ctrlopt); params.As = StateSpaceModel.As; params.Bs1 = StateSpaceModel.Bs1; params.Bs2 = StateSpaceModel.Bs2; params.Al = StateSpaceModel.Al; params.Bl11 = StateSpaceModel.Bl11; params.Bl12 = StateSpaceModel.Bl12; params.Bl21 = StateSpaceModel.Bl21; params.Bl22 = StateSpaceModel.Bl22; params.tstl = MPCParameters.Ts/MPCParameters.Tsl; params.Ql = Ql; params.Rdun = Rdun; params.Wshl = Wshl; params.dun = dun; params.dul = dul; params.umax = Constraints.umax; params.Sshmax = Constraints.Sshmax; params.Uaug_0 = Uaug_0; params.Uaug = Uaug; params.Henv = Envelope.Henv; params.Genv = Envelope.Genv; params.Hsh = Envelope.Hsh; params.Psh = Envelope.Psh; params.Gsh = Envelope.Gsh; params.Hyzmp = Envelope.H_yzmp; params.Pyzmp1 = Envelope.P_yzmp1; params.Pyzmp2 = Envelope.P_yzmp2; params.Gyzmp = 1.0; % 0.7; %һصԼ [vars, status] = csolve(params, settings); if (1 == status.converged) %if optimization succeeded. fwa_opt = vars.u_0; % for i=1:1:20 % S_opt(i) = vars.x{i}; % U_opt(i) = vars.u{i}; % end else fwa_opt = vars.u_0; fprintf('CVXGEN converged = 0 InitialGapflag= %d\n', InitialGapflag); end FeedbackCorrects.StatePred = vars.x_1; FeedbackCorrects.Ctrlopt = fwa_opt; %====================================================================% Ctrl_SteerSW = 19 * fwa_opt*180/pi; % in deg. t_Elapsed = toc( t_Start ); %computation time %-----------------------------------------% e_y = PrjP.ey; e_psi = PrjP.epsi; Shenvelop_hat = Envelope.Hsh*Xm + Envelope.Psh*Uaug_0; r_ssmax = Envelope.Gsh(2); YZPM = Envelope.H_yzmp*Xm + Envelope.P_yzmp1*fwa_opt + Envelope.P_yzmp2*Uaug_0; % + VehStateMeasured.yawrate_dot*VehiclePara.Iz/(VehiclePara.m*VehiclePara.g);% YZPM = 2*YZPM/VehiclePara.Tr; Fzl = ParaHAT.Fz_l1 + ParaHAT.Fz_l2; Fzr = ParaHAT.Fz_r1 + ParaHAT.Fz_r2; LTR = (Fzr - Fzl)./(Fzr + Fzl); y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); % y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); %%%- VehiclePara.hCG*ParaHAT.Roll_accel % % y_zmp = ParaHAT.Ay_Bf_SM*ParaHAT.Zcg_SM/VehiclePara.g + ParaHAT.Zcg_SM.*ParaHAT.Roll - VehiclePara.Ix*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); % y_zmp = 2*y_zmp/VehiclePara.Tr; end % end of if Initialflag < 2 % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Station; Vel; e_psi; e_y; y_zmp; YZPM; LTR; Vy; alphar; yawrate]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10)*pi/180; % deg-->rad VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); % HATParameter.GearStat = ModelInput(30); VehStatemeasured.Roll_Shad = ModelInput(30)*pi/180;% deg-->rad HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 HATParameter.Z0 = ModelInput(34); %m VehStatemeasured.Station = ModelInput(35); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.Ay_CG = ModelInput(37)*g; %m/s^2 HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 % end % end of func_StateEstimation ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/LEO_RigidbodyMPC3TurnTracking.sim ================================================ SIMFILE INPUT C:\Users\Public\Documents\CarSim_Data\Runs\Run305_all.par ECHO C:\Users\Public\Documents\CarSim_Data\Runs\Run305_echo.par FINAL C:\Users\Public\Documents\CarSim_Data\Runs\Run305_end.par LOGFILE C:\Users\Public\Documents\CarSim_Data\Runs\Run305_log.txt ERDFILE C:\Users\Public\Documents\CarSim_Data\Runs\Run305.erd DLLFILE C:\Program Files (x86)\CarSim810_Prog\Programs\Solvers\Default64\i_s.dll END ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/Main_StabilityCtrl.m ================================================ function [sys,x0,str,ts] =Main_StabilityCtrl(t,x,u,flag) %***************************************************************% % This is a Simulink/Carsim joint simulation solution for safe driving % envelope control of high speed autonomous vehicle % Linearized spatial bicycle vehicle dynamic model is applied. % No successive linearizarion. No two time scale of prediction horizon % Constant high speed, curve path tracking % state vector =[beta,yawrate,e_phi,s,e_y] % control input = [steer_SW] % many other parameters are also outputed for comparision. % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@bit.edu.cn % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 15; %S sizes.NumInputs = 38; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization [y, e] = func_RLSFilter_Calpha_f('initial', 0.95, 10, 10); [y, e] = func_RLSFilter_Calpha_r('initial', 0.95, 10, 10); global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; % for SUV VehiclePara.m = 1600; %mΪ,Kg; Sprung mass = 1370 VehiclePara.g = 9.81; VehiclePara.hCG = 0.65;%m VehiclePara.Lf = 1.12; % 1.05 VehiclePara.Lr = 1.48; % 1.55 VehiclePara.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; VehiclePara.Tr = 1.565; %c,or 1.57. ע᳤lcδȷ VehiclePara.mu = 0.85; % 0.55; %Ħ VehiclePara.Iz = 2059.2; %IΪZתв VehiclePara.Ix = 700.7; %IΪZתв VehiclePara.Radius = 0.387; % ̥뾶 global MPCParameters; MPCParameters.Np = 20;% predictive horizon Assume Np=Nc MPCParameters.Ns = 10; % Tsplit MPCParameters.Ts = 0.05; % the sample time of near term MPCParameters.Tsl = 0.2; % the sample time of long term MPCParameters.Nx = 6; %the number of state variables MPCParameters.Ny = 2; %the number of output variables MPCParameters.Nu = 1; %the number of control inputs global CostWeights; CostWeights.Wephi = 100; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.Wey = 10; CostWeights.Ddeltaf = 10; CostWeights.deltaf = 1; % ò CostWeights.Wshar = 500; CostWeights.Wshr = 500; global Constraints; Constraints.dumax = 0.1/MPCParameters.Ts; % Units: rad,0.08rad/s--4.6deg/s Constraints.umax = 0.4; % Units: rad appro.23deg Constraints.arlim = 6*pi/180; % alpha_lim=6deg~ 0.1047rad Constraints.rmax = 1.0; % rr_max = 1rad/s ar_slackMax = 6*pi/180; % rad rmax_slackMax = 1.0; Constraints.Sshmax = [ar_slackMax; rmax_slackMax]; Constraints.DPhimax = 60*pi/180; % ƫ60deg Constraints.Dymax = 1.7; % 3.0; cross-track-error max 3m global WayPoints_IndexPre; WayPoints_IndexPre = 1; global Reftraj; % Reftraj = load('WayPoints_Alt3fromFHWA_Overall_Station_Bank.mat'); Reftraj = load('WayPoints_Alt3fromFHWA_Samples.mat'); global FeedbackCorrects; FeedbackCorrects.StatePred = zeros(6,1); FeedbackCorrects.Ctrlopt = 0; % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; global FeedbackCorrects; Ctrl_SteerSW = 0; t_Elapsed = 0; PosX = 0; PosY = 0; PosPsi = 0; Vel = 0; e_psi = 0; e_y = 0; fwa_opt = 0; Shenvelop_hat = [0; 0]; r_ssmax = 0; YZPM = 0; y_zmp = 0; LTR = 0; Vy = 0; alphar = 0; Roll_Shad = 0; Roll_BaknR = 0; Station = 0; yawrate = 0; % CafHat = 0; % CarHat = 0; % Fyf = 0; % Fyr = 0; % Arfa_f = 0; % Arfa_r = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %***********Step (2). State estimation and Location **********************% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration--------% [VehStateMeasured, ParaHAT] = func_StateEstimation(u); PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Vel = VehStateMeasured.x_dot; Vy = VehStateMeasured.y_dot; yawrate = VehStateMeasured.phi_dot; % rad/s Ax = VehStateMeasured.Ax; % x_dot Ay = VehStateMeasured.Ay; % y_dot % delta_f = VehStateMeasured.delta_f;% deg-->rad fwa = VehStateMeasured.fwa; Beta = VehStateMeasured.beta;%rad Roll_Shad = VehStateMeasured.Roll_Shad;%rad Station = VehStateMeasured.Station; Roll = ParaHAT.Roll; Rollrate = ParaHAT.Rollrate; Ay_CG = ParaHAT.Ay_CG; Ay_Bf_SM = ParaHAT.Ay_Bf_SM; Fyf = ParaHAT.Fyf; Fyr = ParaHAT.Fyr; alphaf = ParaHAT.alphaf; alphar = ParaHAT.alphar; %-----Estimate Cornering stiffness -------------------% %for front tire Arfa_f = (Beta + yawrate*VehiclePara.Lf/Vel - fwa); [yf, Calpha_f1] = func_RLSFilter_Calpha_f(Arfa_f, Fyf); CafHat = sum(Calpha_f1); if CafHat > -30000 CafHat = -110000; end %for rear tire Arfa_r = (Beta - yawrate*VehiclePara.Lr/Vel); [yr, Calpha_r1] = func_RLSFilter_Calpha_r(Arfa_r, Fyr); CarHat = sum(Calpha_r1); if CarHat > -30000 CarHat = -92000; end %-----OR use constant Cornering stiffness -------------------% CafHat = -90000; CarHat = -90000; %********Step(3): Given reference trajectory, update vehicle state and bounds *******************% [WPIndex, RefP, RefU, Uaug, Uaug_0, PrjP, Roll_BaknR] = func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated( MPCParameters,... VehiclePara,... WayPoints_IndexPre,... Reftraj.WayPoints_Collect,... VehStateMeasured ); % y_zmp = Uaug_0(2); % Roll_BaknR = Uaug_0(1); % Uaug_0(1) = Roll_Shad; if ( WPIndex <= 0) fprintf('Error: WPIndex <= 0 \n'); % else Xm = [Vy; yawrate; Rollrate; Roll; PrjP.ey; PrjP.epsi]; WayPoints_IndexPre = WPIndex; end %****Step(4): MPC formulation;********************% % [StateSpaceModel] = func_RigidbodyDynamicalModel_FOH_Extended(VehiclePara, MPCParameters, Vel, CafHat, CarHat); [StateSpaceModel] = func_RigidbodyModel_FOH_Matrix_ROLL(VehiclePara, MPCParameters, Vel, CafHat, CarHat); Np = MPCParameters.Np; Eymax = zeros(Np,1); Eymin = zeros(Np,1); LM_right = -5; LM_middle = 0; Yroad_L = -2.5; for i =1:1:Np % עeyǴŵ, Np = 25 Eymax(i,1) = (LM_middle - Yroad_L); Eymin(i,1) = (LM_right - Yroad_L); end [Envelope] = func_SafedrivingEnvelope_SL(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, Eymax, Eymin); %--- Weighting Regulation functions [Sl, Ql, Rdun, Wshl, dun, dul] = func_CostWeightingRegulation_QuadSlacks(MPCParameters, CostWeights, Constraints); %================CVXGEN solver==================================% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations params.x_0 = Xm; params.um = fwa; % measured front whee angle % params.x_0 = Xm - 0.6*(Xm - FeedbackCorrects.StatePred); % params.um = fwa - 0.6*(fwa - FeedbackCorrects.Ctrlopt); params.As = StateSpaceModel.As; params.Bs1 = StateSpaceModel.Bs1; params.Bs2 = StateSpaceModel.Bs2; params.Al = StateSpaceModel.Al; params.Bl11 = StateSpaceModel.Bl11; params.Bl12 = StateSpaceModel.Bl12; params.Bl21 = StateSpaceModel.Bl21; params.Bl22 = StateSpaceModel.Bl22; params.tstl = MPCParameters.Ts/MPCParameters.Tsl; params.Ql = Ql; params.Rdun = Rdun; params.Wshl = Wshl; params.dun = dun; params.dul = dul; params.umax = Constraints.umax; params.Sshmax = Constraints.Sshmax; params.Uaug_0 = Uaug_0; params.Uaug = Uaug; params.Henv = Envelope.Henv; params.Genv = Envelope.Genv; params.Hsh = Envelope.Hsh; params.Psh = Envelope.Psh; params.Gsh = Envelope.Gsh; params.Hyzmp = Envelope.H_yzmp; params.Pyzmp1 = Envelope.P_yzmp1; params.Pyzmp2 = Envelope.P_yzmp2; params.Gyzmp = 1.0; % 0.7; %һصԼ [vars, status] = csolve(params, settings); if (1 == status.converged) %if optimization succeeded. fwa_opt = vars.u_0; % for i=1:1:20 % S_opt(i) = vars.x{i}; % U_opt(i) = vars.u{i}; % end else fwa_opt = vars.u_0; fprintf('CVXGEN converged = 0 InitialGapflag= %d\n', InitialGapflag); end FeedbackCorrects.StatePred = vars.x_1; FeedbackCorrects.Ctrlopt = fwa_opt; %====================================================================% Ctrl_SteerSW = 19 * fwa_opt*180/pi; % in deg. t_Elapsed = toc( t_Start ); %computation time %-----------------------------------------% e_y = PrjP.ey; e_psi = PrjP.epsi; Shenvelop_hat = Envelope.Hsh*Xm + Envelope.Psh*Uaug_0; r_ssmax = Envelope.Gsh(2); YZPM = Envelope.H_yzmp*Xm + Envelope.P_yzmp1*fwa_opt + Envelope.P_yzmp2*Uaug_0; % + VehStateMeasured.yawrate_dot*VehiclePara.Iz/(VehiclePara.m*VehiclePara.g);% YZPM = 2*YZPM/VehiclePara.Tr; Fzl = ParaHAT.Fz_l1 + ParaHAT.Fz_l2; Fzr = ParaHAT.Fz_r1 + ParaHAT.Fz_r2; LTR = (Fzr - Fzl)./(Fzr + Fzl); y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); % y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); %%%- VehiclePara.hCG*ParaHAT.Roll_accel % % y_zmp = ParaHAT.Ay_Bf_SM*ParaHAT.Zcg_SM/VehiclePara.g + ParaHAT.Zcg_SM.*ParaHAT.Roll - VehiclePara.Ix*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); % y_zmp = 2*y_zmp/VehiclePara.Tr; end % end of if Initialflag < 2 % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Station; Vel; e_psi; e_y; y_zmp; YZPM; LTR; Vy; alphar; yawrate]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10)*pi/180; % deg-->rad VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); % HATParameter.GearStat = ModelInput(30); VehStatemeasured.Roll_Shad = ModelInput(30)*pi/180;% deg-->rad HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 HATParameter.Z0 = ModelInput(34); %m VehStatemeasured.Station = ModelInput(35); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.Ay_CG = ModelInput(37)*g; %m/s^2 HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 % end % end of func_StateEstimation ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/RigidbodyMPCCurvePathTracking.mdl ================================================ Model { Name "RigidbodyMPCCurvePathTracking" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.242" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "RigidbodyMPCCurvePathTracking" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [571.0, 164.0, 1036.0, 764.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [986.0, 587.0] ZoomFactor [1.7499999999999998] Offset [53.536046202867794, 171.0] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "leoking99" ModifiedDateFormat "%" LastModifiedDate "Tue Oct 29 22:06:30 2019" RTWModifiedTimeStamp 494287587 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "RigidbodyMPCCurvePathTracking" Array { Type "Cell" Dimension 1 Cell "RigidbodyMPCCurvePathTracking" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "100" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "RigidbodyMPCCurvePathTracking" Location [571, 164, 1607, 928] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "175" ReportName "simulink-default.rpt" SIDHighWatermark "140" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [1, 1] Position [330, 179, 430, 241] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "LEO_StabilityCtrl.sim" } Block { BlockType Demux Name "Demux" SID "135" Ports [1, 2] Position [170, 361, 180, 439] ZOrder 30 BlockMirror on ShowName off Outputs "[1 14]" DisplayOption "bar" } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [260, 366, 500, 434] ZOrder 12 BlockMirror on FunctionName "Main_StabilityCtrl" EnableBusSupport off } Block { BlockType Terminator Name "Terminator" SID "136" Position [95, 405, 130, 435] ZOrder 31 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace1" SID "115" Ports [1] Position [230, 295, 290, 325] ZOrder 19 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 116 SrcBlock "CarSim S-Function" SrcPort 1 Points [104, 0; 0, 190] DstBlock "S-Function" DstPort 1 } Line { ZOrder 130 SrcBlock "S-Function" SrcPort 1 Points [-46, 0] Branch { ZOrder 177 DstBlock "Demux" DstPort 1 } Branch { ZOrder 176 Points [0, -90] DstBlock "To Workspace1" DstPort 1 } } Line { ZOrder 178 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Line { ZOrder 189 SrcBlock "Demux" SrcPort 1 Points [-9, 0; 0, -170] DstBlock "CarSim S-Function" DstPort 1 } } } ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/TestSymbolicModel.m ================================================ syms K_phi D_phi Theta_1 Theta_2 Theta_3 syms M hCG Iz Ix Vel g Calpha_f Calpha_r lf Mint = [ M 0 -M*hCG 0; 0 Iz 0 0; -M*hCG 0 Ix+M*hCG*hCG 0 0 0 0 1]; Nint = [-Theta_1/Vel M*Vel-Theta_2/Vel 0 M*g; %0-->M*g -Theta_2/Vel -Theta_3/Vel 0 0; 0 -M*hCG*Vel D_phi K_phi-M*g*hCG; 0 0 -1 0]; F1int = [-Calpha_f; -lf*Calpha_f; 0; 0]; F2int = [ 0 0; 0 0; K_phi 0; 0 0]; Ac_11 = -Mint\Nint; % 4*4 B1cn_11 = Mint\F1int; % 4*1 B2cn_11 = Mint\F2int; % 4*2 % K_phi = 145330; % D_phi = 4500; % Theta_1 = Calpha_f + Calpha_r; % Theta_2 = lf*Calpha_f - lr*Calpha_r; % Theta_3 = lf*lf*Calpha_f + lr*lr*Calpha_r; % % Gai1 = hCG*Theta_2/(Ix*Vel)- hCG*M*Vel/Ix; % Acn = [ Theta_1/(M*Vel) Theta_2/(M*Vel)-Vel 0 0 0 0; % Theta_2/(Iz*Vel) Theta_3/(Iz*Vel) 0 0 0 0; % hCG*Theta_1/(Ix*Vel) Gai1 -D_phi/Ix (hCG*M*g-K_phi)/Ix 0 0; % 0 0 1 0 0 0; % 1 0 0 0 0 Vel; % 0 1 0 0 0 0 ]; % % B1cn = [-Calpha_f/M; -lf*Calpha_f/Iz; -hCG*Calpha_f/Ix; 0; 0; 0]; % % B2cn = [-g, 0, -M*g*hCG/Ix, 0, 0, 0; % 0, 0, 0, 0, 0, -Vel]'; ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/func_CostWeightingRegulation_QuadSlacks.m ================================================ function [Sl, Ql, Rdun, Wshl, dun, dul] = func_CostWeightingRegulation_QuadSlacks(MPCParameters, CostWeights, Constraints) %% ʼ Ts = MPCParameters.Ts; Tsl = MPCParameters.Tsl; Qephi = CostWeights.Wephi; Qey = CostWeights.Wey; RDdeltaf= CostWeights.Ddeltaf; Sdeltaf = CostWeights.deltaf; Wshar = CostWeights.Wshar; Wshr = CostWeights.Wshr; DPhimax = Constraints.DPhimax; % 0.15 rad ==> 8.5deg Dymax = Constraints.Dymax; armax = Constraints.arlim; % 0.104rad=6deg; %0.15rad=8deg rmax = Constraints.rmax; umax = Constraints.umax; dumax = Constraints.dumax; dun = dumax * Ts; dul = dumax * Tsl; %% Ȩӹһ Qephi_DPhimax2 = Qephi/(DPhimax*DPhimax); Qey_Dymax2 = Qey/(Dymax*Dymax); Ql = diag([0, 0, 0, 0, Qephi_DPhimax2, Qey_Dymax2]); Wshr_rmax2 = Wshr/(rmax*rmax); Wshar_armax2 = Wshar/(armax*armax); Wshl = diag([Wshar_armax2, Wshr_rmax2]); dumax_ts2 = (dumax * dumax* Ts * Ts);% Rdun = RDdeltaf/dumax_ts2; % Rdul = Ts_Tsl * Rdun; Sl = Sdeltaf/(umax * umax); end % end of func_CostWeightingRegulation ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/func_FindBezierControlPointsND.m ================================================ % INPUT % Data: A set of "n" points (p1,p2,...pn). % Each point can be in N-dimension vector space % % (i.e. points to be approximated by Cubic Bezier Curve % e.g. p for 3D p=[0 5 0; % p1 % 1 5 0.5; % p2 % 1.3 4.5 1; % p3 % 2 5 2] % p4 % ptype(optional arg): parameterization type, defualt is chord-length % parameterization. user can pass 'u' or 'uniform', for uniform parameterization. % OUTPUT % Four Control Points: P0, P1, P2, P3, each in N-dimension space % parameterized values i.e. t (optional) % OBJECTIVE % We want to find control points of Bezier Curve that fit the data % p. % SOLUTION % Least Square Method using specified Parameterization (Chord-length % defualt) % (P0 & P3) are end points of a bezier curve segment. So they % are taken equal to first and last point of data. % (P1 & P2) are obtained by partially differeciating the Sum of Square % distance between original data and parametric curve w.r.t P1 & P2 and then % solving for two unknowns P1 & P2. function [P0, P1, P2, P3, tout]= func_FindBezierControlPointsND(p,varargin) %%% Default Values %%% ptype=''; defaultValues = {ptype}; %%% Assign Valus %%% nonemptyIdx = ~cellfun('isempty',varargin); defaultValues(nonemptyIdx) = varargin(nonemptyIdx); [ptype] = deal(defaultValues{:}); %%%------------------------------ n=size(p,1); % number of rows in p if (strcmpi(ptype,'u') || strcmpi(ptype,'uniform') ) [t]=linspace(0,1,n); % uniform parameterized values (normalized b/w 0 to 1) else [t]=ChordLengthNormND(p); % chord-length parameterized values (normalized b/w 0 to 1) end P0=p(1,:); % (at t=0 => P0=p1) P3=p(n,:); % (at t=1 => P3=pn) if (n==1) % if only one value in p P1=P0; % P1=P0 P2=P0; % P2=P0 elseif (n==2) % if only two values in p P1=P0; % P1=P0 P2=P3; % P2=P3 elseif (n==3) % if only three values in p P1=p(2,:); % middle point is P1 P2=p(2,:); % middle point is P2 else A1=0; A2=0; A12=0; C1=0; C2=0; %initialization for i=2:n-1 % for i=1:n %it will give same CPs as i=2:n-1 B0 = (1-t(i))^3 ; % Bezeir Basis B1 = ( 3*t(i)*(1-t(i))^2 ) ; B2 = ( 3*t(i)^2*(1-t(i)) ) ; B3 = t(i)^3 ; A1 = A1 + B1^2; A2 = A2 + B2^2; A12 = A12 + B1*B2; C1 = C1 + B1*( p(i,:) - B0*P0 - B3*P3 ); C2 = C2 + B2*( p(i,:) - B0*P0 - B3*P3 ); end DENOM=(A1*A2-A12*A12); % common denominator for all points if(DENOM==0) P1=P0; P2=P3; else P1=(A2*C1-A12*C2)/DENOM; P2=(A1*C2-A12*C1)/DENOM; end end % END of if-elseif-else conditon if(nargout==5) % if number of output argument=1 tout=t; end % % % -------------------------------- % % % Author: Dr. Murtaza Khan % % % Email : drkhanmurtaza@gmail.com % % % -------------------------------- ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/func_LocalControlInput_TwoTimeScales.m ================================================ function [ U1_Index, U1] = func_LocalControlInput_TwoTimeScales(MPCParameters, VehiclePara, index, fwa) %*********** Parameters Initialization *************************% L = VehiclePara.L; % Np = MPCParameters.Np;% Ԥʱ Ns = MPCParameters.Ns; % Tsplit Ts = MPCParameters.Ts; % Set the sample time of near term Tsl = MPCParameters.Tsl;% Set the sample time of long term % U1_0 = fwa(index+1); % TScale = Tsl/Ts; % U1 = zeros(Np+1,1); % U1_Index = zeros(Np+1,1); % for i = 1:1:Np+1 % if i <= Ns % u0~u_{Ns-1} % U1_Index(i) = index+i; % U1(i) = fwa(index+i); % else % temp = TScale*(i-Ns)+Ns; % U1_Index(i) = index+temp; % U1(i) = fwa(index+temp); % end % end U1 = zeros(Np+1,1); U1_Index = zeros(Np+1,1); for i = 1:1:Np+1 U1_Index(i) = index+i; U1(i) = fwa(index+i); end end ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/func_RLSFilter_Calpha_f.m ================================================ function [y, Bout] = func_RLSFilter_Calpha_f(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_f, Num_f, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_f: is also called the "forgetting" exponential weight factor % Num_f is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent F_f B_f lambda_f Num_f Rinv_f %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_f = d; % delta = delta_n; Num_f = FIR_Num; Rinv_f = delta_n*eye(Num_f); F_f = zeros(Num_f,1); B_f = zeros(Num_f,1); y = 0; Bout = 0; else % Filtering: for J = Num_f:-1:2 F_f(J) = F_f(J-1); end; F_f(1) = f; % Perform the convolution y= F_f'*B_f; error=d-y; % Kalman gains K = Rinv_f*F_f/(lambda_f + F_f'*Rinv_f*F_f); % Update Rinv_f Rinvn = (Rinv_f - K*F_f'*Rinv_f)/lambda_f; % Update the filter coefficients B_f = B_f + K*error; Bout = B_f; Rinv_f = Rinvn; end end ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/func_RLSFilter_Calpha_r.m ================================================ function [y, Bout] = func_RLSFilter_Calpha_r(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_r, Num_r, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_r: is also called the "forgetting" exponential weight factor % Num_r is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent F_r B_r lambda_r Num_r Rinv_r %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_r = d; % delta = delta_n; Num_r = FIR_Num; Rinv_r = delta_n*eye(Num_r); F_r = zeros(Num_r,1); B_r = zeros(Num_r,1); y = 0; Bout = 0; else % Filtering: for J = Num_r:-1:2 F_r(J) = F_r(J-1); end; F_r(1) = f; % Perform the convolution y= F_r'*B_r; error=d-y; % Kalman gains K = Rinv_r*F_r/(lambda_r + F_r'*Rinv_r*F_r); % Update Rinv_r Rinvn = (Rinv_r - K*F_r'*Rinv_r)/lambda_r; % Update the filter coefficients B_r = B_r + K*error; Bout = B_r; Rinv_r = Rinvn; end end ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated.m ================================================ function [WPIndex, RefP, RefU, Uaug, Uaug_0, PrjP, Roll_BaknR] = func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated( MPCParameters, VehiclePara, WayPoints_Index, WayPoints_Collect, VehStateMeasured) %***************************************************************% % PrjP % ҵȫ·Ͼ복ĵ % ΣݲͬIJsѡһЩвο㲢תϵ¡οϢ[s,x,y,bank] % ٴΣԳϵµx,yBezierֵ߲ĺǺʡ4 % ͬʱԵ·IJsϼ % 󣬽οIJRefP, RefUUaug % Input: % MPCParameters % WayPoints_Index % WayPoints_Collect % VehStateMeasured % % Output: % WPIndex % > 0Normal, WPIndex = index_min; % 0:error,index_min<1 % -1: index_min = WPNum,ȫ·ľͷͣ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My homepage: https://sites.google.com/site/kailiumiracle/ %***************************************************************% %*********** Parameters Initialization *************************% L = VehiclePara.L; % Np = MPCParameters.Np;% Ԥʱ Ns = MPCParameters.Ns; % Tsplit Ts = MPCParameters.Ts; % Set the sample time of near term Tsl = MPCParameters.Tsl;% Set the sample time of long term %------Measured or Estimated vehicle status Vel = VehStateMeasured.x_dot; % 20; % PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Roll_Shad = VehStateMeasured.Roll_Shad;%rad % Ax = VehStateMeasured.Ax; % fwa = VehStateMeasured.fwa; %*********** WaypointData2VehicleCoords ************************% ds = 0.1;%m WPNum = length(WayPoints_Collect(:,1)); %--------ҵο·Ͼ복ĵ--------------------------% Dist_MIN = 1000; index_min = 0; for i=WayPoints_Index:1:WPNum deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; Dist = sqrt(power(deltax,2) + power(deltay,2)); %·㵽ĵľ if Dist < Dist_MIN Dist_MIN = Dist; index_min = i; end end if (index_min < 1) WPIndex = -1; %ûҵ򡣡 else if ( index_min >= WPNum) WPIndex = -2; %ûҵ򡣡 else WPIndex = index_min; end end if( WPIndex > 0 ) % ҵ %% ѡͶӰ㣬 ȫ·ѡο㣬ת¡ͬʱѡsͶӦBank angle %--------------ͨͶӰ--------------------------% [PPx,PPy,ey]=func_GetProjectPoint(WayPoints_Collect(index_min,2),... WayPoints_Collect(index_min,3),... WayPoints_Collect(index_min+1,2),... WayPoints_Collect(index_min+1,3),... PosX,... PosY); Dy = WayPoints_Collect(index_min+1,3) - WayPoints_Collect(index_min,3); Dx = WayPoints_Collect(index_min+1,2) - WayPoints_Collect(index_min,2); Psi0 = atan2(Dy, Dx); epsi = Psi0 - PosPsi; PrjP.ey = -ey; PrjP.epsi = -epsi; PrjP.Velr = Vel; PrjP.xr = PPx; PrjP.yr = PPy; PrjP.psir = Psi0; % Kprj = 0; Ĭ ͶӰΪ㣬Ϊһֱ PrjP.fwar = 0; %atan(Kprj*L); %-------------------i=1:Ns--ݳȫֲο·ѡο-------% Global_x = []; Global_y = []; % ȫ·ѡ· Local_Sx = []; Local_Sy = []; Local_SS = []; Local_SB = []; %Զʱ StepLength_S = Vel * Ts * (Ns+1);% һΪʱ׼ Ns_index = index_min; % %--index_min index_min+1 ֮ͶӰ % deltax = PPx - PosX; % deltay = PPy - PosY; % CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); % CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % Local_Sx = [Local_Sx; CarCoord_x]; % Local_Sy = [Local_Sy; CarCoord_y]; % Global_x = [Global_x; PPx]; % Global_y = [Global_y; PPy]; % % Local_SS = [Local_SS; WayPoints_Collect(i,7)]; % Local_SB = [Local_SB; WayPoints_Collect(i,8)]; % %--index_min+1 % deltax = WayPoints_Collect(index_min+1,2) - PosX; % deltay = WayPoints_Collect(index_min+1,3) - PosY; % CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); % CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % Local_Sx = [Local_Sx; CarCoord_x]; % Local_Sy = [Local_Sy; CarCoord_y]; % Global_x = [Global_x; WayPoints_Collect(index_min+1,2)]; % Global_y = [Global_y; WayPoints_Collect(index_min+1,3)]; % tempDx = WayPoints_Collect(index_min+1,2) - PPx; tempDy = WayPoints_Collect(index_min+1,3) - PPy; Dist_1 = sqrt(power(tempDx,2) + power(tempDy,2)); %·㵽ͶӰľ for i=index_min:1:WPNum %ڲο·ѡο,ͨתתϵ Global_x = [Global_x; WayPoints_Collect(i,2) ]; Global_y = [Global_y; WayPoints_Collect(i,3) ]; %ȡȫ· deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % ȫ·תֲ Local_Sx = [Local_Sx; CarCoord_x]; Local_Sy = [Local_Sy; CarCoord_y]; %洢ֲµĵ Local_SS = [Local_SS; WayPoints_Collect(i,7)]; Local_SBL = [Local_SB; WayPoints_Collect(i,8)]; Local_SBR = [Local_SB; WayPoints_Collect(i,9)]; Ns_index = i-1; Dist_SumS = Dist_1 + WayPoints_Collect(i,7) - WayPoints_Collect(index_min+1,7); if(Dist_SumS >= StepLength_S) break; end end % end of for I=index_min+1:1:WPNum %------------Ns:Np---------% Local_Lx = []; Local_Ly = []; Local_LS = []; Local_LB = []; StepLength_L = Vel * Tsl * (Np-Ns+1);% һΪʱ׼ Dist_SumL = 0; % for i=Ns_index:1:WPNum %ڲο·ѡο,ͨתתϵ Global_x = [Global_x; WayPoints_Collect(i,2) ]; Global_y = [Global_y; WayPoints_Collect(i,3) ]; deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % תֲ Local_Lx = [Local_Lx; CarCoord_x]; Local_Ly = [Local_Ly; CarCoord_y]; % תֲ Local_LS = [Local_LS; WayPoints_Collect(i,7)]; Local_LBL = [Local_LB; WayPoints_Collect(i,8)]; Local_LBR = [Local_LB; WayPoints_Collect(i,9)]; Dist_SumL = WayPoints_Collect(i,7) - WayPoints_Collect(Ns_index, 7 ); if(Dist_SumL >= StepLength_L) break; end end % end of for i=Ns_index+1:1:WPNum %% %------------ʽ------------% if(Dist_SumS < StepLength_S) || (Dist_SumL < StepLength_L) WPIndex = 0; %ûҵ򡣡 % reaching the end ... %--ûпȫ·󼸸ʱ걸пܻᱨ else %----Զ̲BezierϣŵڿԶ-----% MatS(:,1)=Local_Sx; MatS(:,2)=Local_Sy; [ps0,ps1,ps2,ps3,ts] = func_FindBezierControlPointsND(MatS,'u'); %uniform parameterization Scale = round(Vel*Ts/ds); tlocS = linspace(0,1,Scale*(Ns+1)+1); %㵽յȾ=0.1m,Ns+1ΣScale*Ns+1+1 MatLocalInterpS = func_bezierInterp( ps0, ps1, ps2, ps3,tlocS); % ֵ߲õ MatSB(:,1) = Local_SS; MatSB(:,2) = Local_SBR; [psb0,psb1,psb2,psb3,tsb] = func_FindBezierControlPointsND(MatSB,'u'); %uniform parameterization tlocS = linspace(0,1,Ns+2); %㵽յȾ,Np+1ΣNp+2 MatLocalInterpSB = func_bezierInterp( psb0,psb1,psb2,psb3,tlocS); % ֵ߲õ Bezier_Sx = zeros(Ns,1); Bezier_Sy = zeros(Ns,1); Bezier_Spsi = zeros(Ns,1); Bezier_SK = zeros(Ns,1); Bezier_Sphi_t = zeros(Ns,1); for i = 2:1:length(MatLocalInterpSB(:,1))-1 Bezier_Sx(i-1) = MatLocalInterpS(Scale*(i-1),1); Bezier_Sy(i-1) = MatLocalInterpS(Scale*(i-1),2); tempDx = MatLocalInterpS(Scale*(i-1)+1,1) - MatLocalInterpS(Scale*(i-1),1); tempDy = MatLocalInterpS(Scale*(i-1)+1,2) - MatLocalInterpS(Scale*(i-1),2); Bezier_Spsi(i-1) = atan2(tempDy, tempDx); % Bezier_SK(i-1) = func_CalPathCurve(MatLocalInterpS(Scale*(i-1)-1,1),... % XA % MatLocalInterpS(Scale*(i-1)-1,2),... % YA % MatLocalInterpS(Scale*(i-1),1),... % XB % MatLocalInterpS(Scale*(i-1),2),... % YB % MatLocalInterpS(Scale*(i-1)+1,1),... % XC % MatLocalInterpS(Scale*(i-1)+1,2)); % YC % Bezier_SK(i-1) = func_CalPathCurve_Patent(MatLocalInterpS(Scale*(i-1)-1,1),... % XA MatLocalInterpS(Scale*(i-1)-1,2),... % YA MatLocalInterpS(Scale*(i-1),1),... % XB MatLocalInterpS(Scale*(i-1),2),... % YB MatLocalInterpS(Scale*(i-1)+1,1),... % XC MatLocalInterpS(Scale*(i-1)+1,2)); % YC % % Bezier_SK(i-1) = func_CalPathCurve_YU(MatLocalInterpS(Scale*(i-1)-1,1),... % XA % MatLocalInterpS(Scale*(i-1)-1,2),... % YA % MatLocalInterpS(Scale*(i-1),1),... % XB % MatLocalInterpS(Scale*(i-1),2),... % YB % MatLocalInterpS(Scale*(i-1)+1,1),... % XC % MatLocalInterpS(Scale*(i-1)+1,2)); % YC Bezier_Sphi_t(i-1) = MatLocalInterpSB(i,2); end % end of for i = 2:1:length(MatLocalInterp(:,1))-1 %----Գ Bezier-----% MatL(:,1)=Local_Lx; MatL(:,2)=Local_Ly; [pL0,pL1,pL2,pL3,tL] = func_FindBezierControlPointsND(MatL,'u'); %uniform parameterization Scale = round(Vel*Tsl/ds); tlocL = linspace(0,1,Scale*(Np-Ns+1)+1); %㵽յȾ,Np-Ns+1ΣScale*Np-Ns+1+1=Scale(Np-Ns)+11 MatLocalInterpL = func_bezierInterp( pL0, pL1, pL2, pL3,tlocL); % ֵ߲õ MatLB(:,1)=Local_LS; MatLB(:,2)=Local_LBR; [ps0,ps1,ps2,ps3,tL] = func_FindBezierControlPointsND(MatLB,'u'); %uniform parameterization tlocL = linspace(0,1,Np-Ns+2); %㵽յȾ,Np+1ΣNp+2 MatLocalInterpLB = func_bezierInterp( ps0, ps1, ps2, ps3,tlocL); % ֵ߲õ Bezier_Lx = zeros(Np-Ns,1); Bezier_Ly = zeros(Np-Ns,1); Bezier_Lpsi = zeros(Np-Ns,1); Bezier_LK = zeros(Np-Ns,1); Bezier_Lphi_t = zeros(Np-Ns,1); for i = 2:1:length(MatLocalInterpLB(:,1))-1 Bezier_Lx(i-1) = MatLocalInterpL(Scale*(i-1),1); Bezier_Ly(i-1) = MatLocalInterpL(Scale*(i-1),2); tempDx = MatLocalInterpL(Scale*(i-1)+1,1) - MatLocalInterpL(Scale*(i-1),1); tempDy = MatLocalInterpL(Scale*(i-1)+1,2) - MatLocalInterpL(Scale*(i-1),2); Bezier_Lpsi(i-1) = atan2(tempDy, tempDx); % Bezier_LK(i-1) = func_CalPathCurve(MatLocalInterpL(Scale*(i-1)-1,1),... % XA % MatLocalInterpL(Scale*(i-1)-1,2),... % YA % MatLocalInterpL(Scale*(i-1),1),... % XB % MatLocalInterpL(Scale*(i-1),2),... % YB % MatLocalInterpL(Scale*(i-1)+1,1),... % XC % MatLocalInterpL(Scale*(i-1)+1,2)); % YC % Bezier_LK(i-1) = func_CalPathCurve_Patent(MatLocalInterpL(Scale*(i-1)-1,1),... % XA MatLocalInterpL(Scale*(i-1)-1,2),... % YA MatLocalInterpL(Scale*(i-1),1),... % XB MatLocalInterpL(Scale*(i-1),2),... % YB MatLocalInterpL(Scale*(i-1)+1,1),... % XC MatLocalInterpL(Scale*(i-1)+1,2)); % YC % % Bezier_LK(i-1) = func_CalPathCurve_YU(MatLocalInterpL(Scale*(i-1)-1,1),... % XA % MatLocalInterpL(Scale*(i-1)-1,2),... % YA % MatLocalInterpL(Scale*(i-1),1),... % XB % MatLocalInterpL(Scale*(i-1),2),... % YB % MatLocalInterpL(Scale*(i-1)+1,1),... % XC % MatLocalInterpL(Scale*(i-1)+1,2)); % YC Bezier_Lphi_t(i-1) = MatLocalInterpLB(i,2); end % end of for i = 2:1:length(MatLocalInterp(:,1))-1 %% RefP = cell(Np,1); RefU = cell(Np,1); for i = 1:1:Np if i <= Ns RefU{i,1} = atan(Bezier_SK(i)*L); RefP{i,1} = [Bezier_Sx(i); Bezier_Sy(i); Bezier_Spsi(i)]; else RefU{i,1} = atan(Bezier_LK(i-Ns)*L); RefP{i,1} = [Bezier_Lx(i-Ns); Bezier_Ly(i-Ns); Bezier_Lpsi(i-Ns)]; end end Uaug = cell(Np,1); Uaug_0 = [0;0]; % [MatLocalInterpSB(1,2); 0]; % for i = 1:1:Np %ǵ·ʺǵӰ if i <= Ns Uaug{i,1} = [0;0]; else Uaug{i,1} = [0;0]; end end % Uaug_0 = [0; Bezier_SK(1)]; % [0;0]; % % for i = 1:1:Np %ֻǵ· % if i <= Ns % Uaug{i,1} = [0; Bezier_SK(i)]; % else % Uaug{i,1} = [0; Bezier_LK(i-Ns)]; % end % end % Uaug_0 = [Roll_Shad; 0]; % [MatLocalInterpSB(1,2); 0]; % % for i = 1:1:Np %ֻ·ǵӰ % if i <= Ns % Uaug{i,1} = [Bezier_Sphi_t(i); 0]; % else % Uaug{i,1} = [Bezier_Lphi_t(i-Ns); 0]; % end % end % Uaug_0 = [Roll_Shad; Bezier_SK(1)]; %[MatLocalInterpSB(1,2); Bezier_SK(1)]; % % for i = 1:1:Np %ǵ·ʺǵӰ % if i <= Ns % Uaug{i,1} = [Bezier_Sphi_t(i); Bezier_SK(i)]; % else % Uaug{i,1} = [Bezier_Lphi_t(i-Ns); Bezier_LK(i-Ns)]; % end % end Roll_BaknR = MatLocalInterpSB(1,2); end % end of if(Dist_SumS < StepLength_S) || (Dist_SumL < StepLength_L) end % end of if( WPIndex > 0 ) % ҵ % %--------Plot local points and the fitted polynomial----------------% % figure % plot(Local_Sx,Local_Sy,'b*'); % hold on % plot(Local_Lx,Local_Ly,'bo'); % plot(Global_x,Global_y,'k.'); % plot(Bezier_Sx,Bezier_Sy,'r+'); % plot(Bezier_Lx,Bezier_Ly,'ro'); end % end of function %==============================================================% % sub functions %==============================================================% function K=GetPathHeading(Xb,Yb,Xn,Yn) %***Way I.Heading Angle [-pi,pi]֮ *******% AngleY=Yn-Yb; AngleX=Xn-Xb; K= atan2(AngleY, AngleX); %***Way II. Heading Angle 0~2*pi֮ *******% % AngleY=Yn-Yb; % AngleX=Xn-Xb; % % if Xb==Xn % if Yn>Yb % K=pi/2; % else % K=3*pi/2; % end % else % if Yb==Yn % if Xn>Xb % K=0; % else % K=pi; % end % else % K=atan(AngleY/AngleX); % end % end % % %****K,ʹ֮0~360֮*****% % if (AngleY>0&&AngleX>0)%һ % K=K; % elseif (AngleY>0&&AngleX<0)||(AngleY<0&&AngleX<0)%ڶ % K=K+pi; % else if (AngleY<0&&AngleX>0)% % K=K+2*pi; % else % K=K; % end % end end % end of function function [PPx,PPy,de]=func_GetProjectPoint(Xb,Yb,Xn,Yn,Xc,Yc) %-------------------------------------------------------% % de㵽ֱߵľ벻ͬ෴ % 㵽ֱߵľ룺Ҹ %-------------------------------------------------------% if Xn==Xb x=Xn; y=Yc; de=Xc-Xn; else if Yb==Yn x=Xc; y=Yn; de=Yn-Yc; else DifX=Xn-Xb; DifY=Yn-Yb; Kindex=DifY/DifX; bindex=Yn-Kindex*Xn; K=(-1)*1/Kindex; b=Yc-K*Xc; x=(bindex-b)/(K-Kindex); y=K*x+b; de=(Kindex*Xc+bindex-Yc)/sqrt(1+Kindex*Kindex); end end PPx=x; PPy=y; end function K=func_CalPathCurve(XA,YA,XB,YB,XC,YC) %% ͨԲģԲĵһľ %ֱֱߵб if XB==XA mr=inf; else mr=(YB-YA)/(XB-XA); end if XC==XB mt=inf; else mt=(YC-YB)/(XC-XB); end %ݲͬб,mtdao=1/mt;mrsubmt=1/(2*(mr-mt)); if mr==mt Rff=inf; else if mt==0 if mr==inf Rff=sqrt(power((XA-XC),2)+power((YA-YC),2))/2; else mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YA)/2-(Xff-(XB+XA)/2)/mr; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end elseif mt==inf if mr==0 Rff=sqrt(power((XA-XC),2)+power((YA-YC),2))/2; else Yff=(YB+YC)/2; Xff=(XA+XB)/2-mr*(YC-YA)/2; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end else mtdao=1/mt; if mr==0 mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YC)/2-mtdao*(Xff-(XB+XC)/2); Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); elseif mr==inf Yff=(YA+YB)/2; Xff=(XB+XC)/2+mt*(YA-YC)/2; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); else mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YC)/2-mtdao*(Xff-(XB+XC)/2); Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end end end %% %ͨжϺǵı仯жʵ K1=GetPathHeading(XA,YA,XB,YB); K2=GetPathHeading(XB,YB,XC,YC); if K2>K1 %нDZʱ Rff=Rff; else %нDZС˳ʱ룬K2M*g -Theta_2/Vel -Theta_3/Vel 0 0; 0 -M*hCG*Vel D_phi K_phi-M*g*hCG; 0 0 -1 0]; F1int = [-Calpha_f; -lf*Calpha_f; 0; 0]; F2int = [ 0 0; 0 0; K_phi 0; %-M*g*hCG 0 0]; % M_inv = inv(M); % Ac_11 = M_inv*N; Ac_11 = -Mint\Nint; % 4*4 B1cn_11 = Mint\F1int; % 4*1 B2cn_11 = Mint\F2int; % 4*2 Ac_12 = [0 0; 0 0; 0 0; 0 0]; Ac_21 = [1 0 0 0; 0 1 0 0]; Ac_22 = [0 Vel; 0 0]; B1cn_12 = [ 0; 0]; B2cn_12 = [ 0, 0; 0, -Vel]; Acn = [Ac_11 Ac_12; Ac_21 Ac_22]; B1cn = [B1cn_11; B1cn_12]; B2cn = [B2cn_11; B2cn_12]; %% ZOH/FOH As = eye(Nx) + Ts * Acn; Bs1 = Ts * B1cn; Bs2 = Ts * B2cn; AcnTsl = Tsl*Acn; Al = eye(Nx) + AcnTsl + 0.5*AcnTsl*AcnTsl + (AcnTsl*AcnTsl*AcnTsl)/6; %; % Baug = [B1cn, B2cn]; BaugTsl = Baug*Tsl; Gail1 = BaugTsl + 0.5*(AcnTsl * BaugTsl)+ (AcnTsl * AcnTsl * BaugTsl)/6;%; % Gail2 = 0.5*BaugTsl + (AcnTsl * BaugTsl)/6;%;% B1l = Gail1 - Gail2; B2l = Gail2; Bl11 = B1l(:,1); Bl12 = B1l(:,2:3); Bl21 = B2l(:,1); Bl22 = B2l(:,2:3); StateSpaceModel.Acn = Acn; StateSpaceModel.B1cn = B1cn; StateSpaceModel.B2cn = B2cn; StateSpaceModel.As = As; StateSpaceModel.Bs1 = Bs1; StateSpaceModel.Bs2 = Bs2; StateSpaceModel.Al = Al; StateSpaceModel.Bl11 = Bl11; StateSpaceModel.Bl12 = Bl12; StateSpaceModel.Bl21 = Bl21; StateSpaceModel.Bl22 = Bl22; end % end of func_SpatialDynamicalModel ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/func_SafedrivingEnvelope_SL.m ================================================ function [Envelope] = func_SafedrivingEnvelope_SL(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, EY_MAX, EY_Min) % Generating safe driving envelope h = VehiclePara.hCG; Tr = VehiclePara.Tr; lf = VehiclePara.Lf; lr = VehiclePara.Lr; l = VehiclePara.L; M = VehiclePara.m; g = VehiclePara.g; mu = VehiclePara.mu; Iz = VehiclePara.Iz; %IΪZתв Ix = VehiclePara.Ix; %IΪZתв Np = MPCParameters.Np; Ns = MPCParameters.Ns; Alphar_lim = Constraints.arlim; %-----------environmental envelope-------------% Envelope.Henv = [0 0 0 0 1 0; 0 0 0 0 -1 0]; Envelope.Genv = cell(Np,1); Dist_temp = 0.8; % dw/2 + dbuffer; for i = 1:1:Np Envelope.Genv{i,1} = [EY_MAX(i) - Dist_temp; -EY_Min(i) - Dist_temp]; end %-----------stable handling envelope-------------% % for j = 1:1:Np Envelope.Hsh = [1/Vel -lr/Vel 0 0 0 0; 0 1 0 0 0 0]; Envelope.Psh = [0 0; g/Vel 0]; r_ssmax = -CarHat*Alphar_lim*(1+lr/lf)/(M*Vel); Envelope.Gsh = [Alphar_lim r_ssmax]'; % end %-----------zero moment point -------------% Acn = StateSpaceModel.Acn; % 8*8 B1cn = StateSpaceModel.B1cn; %8*1 B2cn = StateSpaceModel.B2cn;%8*2 % N1 = [h/g 0 -Ix/(M*g) 0 0 0]; % N2 = [0 h*Vel/g 0 h 0 0]; % % N3 = [h 0]; N1 = [2*h/(g*Tr) 0 -2*(M*h*h+Ix)/(M*g*Tr) 0 0 0]; N2 = [0 2*h*Vel/(g*Tr) 0 2*h/Tr 0 0]; % % N3 = [2*h/Tr 0]; H_yzmp = N1*Acn + N2;%1*8 P_yzmp1 = N1*B1cn; %1*1 P_yzmp2 = N1*B2cn; % + N3;%1*2 Envelope.H_yzmp = H_yzmp; Envelope.P_yzmp1 = P_yzmp1; Envelope.P_yzmp2 = P_yzmp2; end % end of func_SafedrivingEnvelope ================================================ FILE: Chapter-7/chapter_7_MPC_highspeed_handlig_stability/func_bezierInterp.m ================================================ % Bezier interpolation for given four control points. % Each control point can be in N-Dimensional vector space. % Input: % P0,P1,P2,P3: four control points of bezier curve, % control points can have any number of coordinates % t(optional arg):vector that holds paramter t values b/w 0 and 1 at which % bezier curve is evaluated (default 101 values between 0 % and 1.) % Output: % Q evaluated values of bezier curves. Number of columns of Q are equal to % number of coordinates in control point. For example for 2-D, Q has two % columns. Column 1 for x value and column 2 for y values. Similarly for % 3-D, Q will have three columns function Q=func_bezierInterp(P0,P1,P2,P3,varargin) %%% Default Values %%% t=linspace(0,1,101); % uniform parameterization defaultValues = {t}; %%% Assign Valus %%% nonemptyIdx = ~cellfun('isempty',varargin); defaultValues(nonemptyIdx) = varargin(nonemptyIdx); [t] = deal(defaultValues{:}); % % -------------------------------- M=[-1 3 -3 1; 3 -6 3 0; -3 3 0 0; 1 0 0 0]; for k=1:length(t) Q(k,:)=[t(k)^3 t(k)^2 t(k) 1]*M*[P0;P1;P2;P3]; end % % Ref: Mathematical Elements of Computer Graphics by % % David F. Rogers and J. Alan Adams (pg. 296) % % -------------------------------- % % OR % % Equation of Bezier Curve, utilizes Horner's rule for efficient computation. % % Q(t)=(-P0 + 3*(P1-P2) + P3)*t^3 + 3*(P0-2*P1+P2)*t^2 + 3*(P1-P0)*t + Px0 % c3 = -P0 + 3*(P1-P2) + P3; % c2 = 3*(P0 - (2*P1)+P2); % c1 = 3*(P1 - P0); % c0 = P0; % for k=1:length(t) % Q(k,:)=((c3*t(k)+c2)*t(k)+c1)*t(k) + c0; % end % % % -------------------------------- % % % Author: Dr. Murtaza Khan % % % Email : drkhanmurtaza@gmail.com % % % -------------------------------- ================================================ FILE: Chapter-8/ReadMe ================================================ This folder holds simulation codes for Chapter 8 * chapter8_3_3.m: Matlab code for path tracking considering road terrain and rollover prevention * chapter8_rollover_prevention_terrain: Simulink/Carsim codes for Chapter 8 ================================================ FILE: Chapter-8/chapter8_3_3.m ================================================ function [sys,x0,str,ts] =Main_CurvePathTracking_CVXGEN_Terrain(t,x,u,flag) %***************************************************************% % This is a Simulink/Carsim joint simulation solution for safe driving % envelope control of high speed autonomous vehicle % Linearized spatial bicycle vehicle dynamic model is applied. % No successive linearizarion. No two time scale of prediction horizon % Constant high speed, curve path tracking % state vector =[beta,yawrate,e_phi,s,e_y] % control input = [steer_SW] % many other parameters are also outputed for comparision. % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 15; %S sizes.NumInputs = 38; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization [y, e] = func_RLSFilter_Calpha_f('initial', 0.95, 10, 10); [y, e] = func_RLSFilter_Calpha_r('initial', 0.95, 10, 10); global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; % for SUV VehiclePara.m = 1600; %mΪ,Kg; Sprung mass = 1370 VehiclePara.g = 9.81; VehiclePara.hCG = 0.65;%m VehiclePara.Lf = 1.12; % 1.05 VehiclePara.Lr = 1.48; % 1.55 VehiclePara.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; VehiclePara.Tr = 1.565; %c,or 1.57. ע᳤lcδȷ VehiclePara.mu = 0.85; % 0.55; %Ħ VehiclePara.Iz = 2059.2; %IΪZתв VehiclePara.Ix = 700.7; %IΪZתв VehiclePara.Radius = 0.387; % ̥뾶 global MPCParameters; MPCParameters.Np = 20;% predictive horizon Assume Np=Nc MPCParameters.Ns = 10; % Tsplit MPCParameters.Ts = 0.05; % the sample time of near term MPCParameters.Tsl = 0.2; % the sample time of long term MPCParameters.Nx = 6; %the number of state variables MPCParameters.Ny = 2; %the number of output variables MPCParameters.Nu = 1; %the number of control inputs global CostWeights; CostWeights.Wephi = 100; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.Wey = 10; CostWeights.Ddeltaf = 10; CostWeights.deltaf = 1; % ò CostWeights.Wshar = 500; CostWeights.Wshr = 500; global Constraints; Constraints.dumax = 0.1/MPCParameters.Ts; % Units: rad,0.08rad/s--4.6deg/s Constraints.umax = 0.4; % Units: rad appro.23deg Constraints.arlim = 6*pi/180; % alpha_lim=6deg~ 0.1047rad Constraints.rmax = 1.0; % rr_max = 1rad/s ar_slackMax = 6*pi/180; % rad rmax_slackMax = 1.0; Constraints.Sshmax = [ar_slackMax; rmax_slackMax]; Constraints.DPhimax = 60*pi/180; % ƫ60deg Constraints.Dymax = 1.7; % 3.0; cross-track-error max 3m global WayPoints_IndexPre; WayPoints_IndexPre = 1; global Reftraj; % Reftraj = load('WayPoints_Alt3fromFHWA_Overall_Station_Bank.mat'); Reftraj = load('WayPoints_Alt3fromFHWA_Samples.mat'); global FeedbackCorrects; FeedbackCorrects.StatePred = zeros(6,1); FeedbackCorrects.Ctrlopt = 0; % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; global FeedbackCorrects; Ctrl_SteerSW = 0; t_Elapsed = 0; PosX = 0; PosY = 0; PosPsi = 0; Vel = 0; e_psi = 0; e_y = 0; fwa_opt = 0; Shenvelop_hat = [0; 0]; r_ssmax = 0; YZPM = 0; y_zmp = 0; LTR = 0; Vy = 0; alphar = 0; Roll_Shad = 0; Roll_BaknR = 0; Station = 0; yawrate = 0; % CafHat = 0; % CarHat = 0; % Fyf = 0; % Fyr = 0; % Arfa_f = 0; % Arfa_r = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %***********Step (2). State estimation and Location **********************% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration--------% [VehStateMeasured, ParaHAT] = func_StateEstimation(u); PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Vel = VehStateMeasured.x_dot; Vy = VehStateMeasured.y_dot; yawrate = VehStateMeasured.phi_dot; % rad/s Ax = VehStateMeasured.Ax; % x_dot Ay = VehStateMeasured.Ay; % y_dot % delta_f = VehStateMeasured.delta_f;% deg-->rad fwa = VehStateMeasured.fwa; Beta = VehStateMeasured.beta;%rad Roll_Shad = VehStateMeasured.Roll_Shad;%rad Station = VehStateMeasured.Station; Roll = ParaHAT.Roll; Rollrate = ParaHAT.Rollrate; Ay_CG = ParaHAT.Ay_CG; Ay_Bf_SM = ParaHAT.Ay_Bf_SM; Fyf = ParaHAT.Fyf; Fyr = ParaHAT.Fyr; alphaf = ParaHAT.alphaf; alphar = ParaHAT.alphar; %-----Estimate Cornering stiffness -------------------% %for front tire Arfa_f = (Beta + yawrate*VehiclePara.Lf/Vel - fwa); [yf, Calpha_f1] = func_RLSFilter_Calpha_f(Arfa_f, Fyf); CafHat = sum(Calpha_f1); if CafHat > -30000 CafHat = -110000; end %for rear tire Arfa_r = (Beta - yawrate*VehiclePara.Lr/Vel); [yr, Calpha_r1] = func_RLSFilter_Calpha_r(Arfa_r, Fyr); CarHat = sum(Calpha_r1); if CarHat > -30000 CarHat = -92000; end %-----OR use constant Cornering stiffness -------------------% CafHat = -90000; CarHat = -90000; %********Step(3): Given reference trajectory, update vehicle state and bounds *******************% [WPIndex, RefP, RefU, Uaug, Uaug_0, PrjP, Roll_BaknR] = func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated( MPCParameters,... VehiclePara,... WayPoints_IndexPre,... Reftraj.WayPoints_Collect,... VehStateMeasured ); % y_zmp = Uaug_0(2); % Roll_BaknR = Uaug_0(1); % Uaug_0(1) = Roll_Shad; if ( WPIndex <= 0) fprintf('Error: WPIndex <= 0 \n'); % else Xm = [Vy; yawrate; Rollrate; Roll; PrjP.ey; PrjP.epsi]; WayPoints_IndexPre = WPIndex; end %****Step(4): MPC formulation;********************% % [StateSpaceModel] = func_RigidbodyDynamicalModel_FOH_Extended(VehiclePara, MPCParameters, Vel, CafHat, CarHat); [StateSpaceModel] = func_RigidbodyModel_FOH_Matrix_ROLL(VehiclePara, MPCParameters, Vel, CafHat, CarHat); Np = MPCParameters.Np; Eymax = zeros(Np,1); Eymin = zeros(Np,1); LM_right = -5; LM_middle = 0; Yroad_L = -2.5; for i =1:1:Np % עeyǴŵ, Np = 25 Eymax(i,1) = (LM_middle - Yroad_L); Eymin(i,1) = (LM_right - Yroad_L); end [Envelope] = func_SafedrivingEnvelope_SL(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, Eymax, Eymin); %--- Weighting Regulation functions [Sl, Ql, Rdun, Wshl, dun, dul] = func_CostWeightingRegulation_QuadSlacks(MPCParameters, CostWeights, Constraints); %================CVXGEN solver==================================% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations params.x_0 = Xm; params.um = fwa; % measured front whee angle % params.x_0 = Xm - 0.6*(Xm - FeedbackCorrects.StatePred); % params.um = fwa - 0.6*(fwa - FeedbackCorrects.Ctrlopt); params.As = StateSpaceModel.As; params.Bs1 = StateSpaceModel.Bs1; params.Bs2 = StateSpaceModel.Bs2; params.Al = StateSpaceModel.Al; params.Bl11 = StateSpaceModel.Bl11; params.Bl12 = StateSpaceModel.Bl12; params.Bl21 = StateSpaceModel.Bl21; params.Bl22 = StateSpaceModel.Bl22; params.tstl = MPCParameters.Ts/MPCParameters.Tsl; params.Ql = Ql; params.Rdun = Rdun; params.Wshl = Wshl; params.dun = dun; params.dul = dul; params.umax = Constraints.umax; params.Sshmax = Constraints.Sshmax; params.Uaug_0 = Uaug_0; params.Uaug = Uaug; params.Henv = Envelope.Henv; params.Genv = Envelope.Genv; params.Hsh = Envelope.Hsh; params.Psh = Envelope.Psh; params.Gsh = Envelope.Gsh; params.Hyzmp = Envelope.H_yzmp; params.Pyzmp1 = Envelope.P_yzmp1; params.Pyzmp2 = Envelope.P_yzmp2; params.Gyzmp = 1.0; % 0.7; %һصԼ [vars, status] = csolve(params, settings); if (1 == status.converged) %if optimization succeeded. fwa_opt = vars.u_0; % for i=1:1:20 % S_opt(i) = vars.x{i}; % U_opt(i) = vars.u{i}; % end else fwa_opt = vars.u_0; fprintf('CVXGEN converged = 0 InitialGapflag= %d\n', InitialGapflag); end FeedbackCorrects.StatePred = vars.x_1; FeedbackCorrects.Ctrlopt = fwa_opt; %====================================================================% Ctrl_SteerSW = 19 * fwa_opt*180/pi; % in deg. t_Elapsed = toc( t_Start ); %computation time %-----------------------------------------% e_y = PrjP.ey; e_psi = PrjP.epsi; Shenvelop_hat = Envelope.Hsh*Xm + Envelope.Psh*Uaug_0; r_ssmax = Envelope.Gsh(2); YZPM = Envelope.H_yzmp*Xm + Envelope.P_yzmp1*fwa_opt + Envelope.P_yzmp2*Uaug_0; % + VehStateMeasured.yawrate_dot*VehiclePara.Iz/(VehiclePara.m*VehiclePara.g);% YZPM = 2*YZPM/VehiclePara.Tr; Fzl = ParaHAT.Fz_l1 + ParaHAT.Fz_l2; Fzr = ParaHAT.Fz_r1 + ParaHAT.Fz_r2; LTR = (Fzr - Fzl)./(Fzr + Fzl); y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); % y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); %%%- VehiclePara.hCG*ParaHAT.Roll_accel % % y_zmp = ParaHAT.Ay_Bf_SM*ParaHAT.Zcg_SM/VehiclePara.g + ParaHAT.Zcg_SM.*ParaHAT.Roll - VehiclePara.Ix*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); % y_zmp = 2*y_zmp/VehiclePara.Tr; end % end of if Initialflag < 2 % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Station; Vel; e_psi; e_y; y_zmp; YZPM; LTR; Vy; alphar; yawrate]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10)*pi/180; % deg-->rad VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); % HATParameter.GearStat = ModelInput(30); VehStatemeasured.Roll_Shad = ModelInput(30)*pi/180;% deg-->rad HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 HATParameter.Z0 = ModelInput(34); %m VehStatemeasured.Station = ModelInput(35); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.Ay_CG = ModelInput(37)*g; %m/s^2 HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 % end % end of func_StateEstimation ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/Main_CurvePathTracking_CVXGEN_Terrain.m ================================================ function [sys,x0,str,ts] =Main_CurvePathTracking_CVXGEN_Terrain(t,x,u,flag) %***************************************************************% % This is a Simulink/Carsim joint simulation solution for safe driving % envelope control of high speed autonomous vehicle % Linearized spatial bicycle vehicle dynamic model is applied. % No successive linearizarion. No two time scale of prediction horizon % Constant high speed, curve path tracking % state vector =[beta,yawrate,e_phi,s,e_y] % control input = [steer_SW] % many other parameters are also outputed for comparision. % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 15; %S sizes.NumInputs = 38; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization [y, e] = func_RLSFilter_Calpha_f('initial', 0.95, 10, 10); [y, e] = func_RLSFilter_Calpha_r('initial', 0.95, 10, 10); global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; % for SUV VehiclePara.m = 1600; %mΪ,Kg; Sprung mass = 1370 VehiclePara.g = 9.81; VehiclePara.hCG = 0.65;%m VehiclePara.Lf = 1.12; % 1.05 VehiclePara.Lr = 1.48; % 1.55 VehiclePara.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; VehiclePara.Tr = 1.565; %c,or 1.57. ע᳤lcδȷ VehiclePara.mu = 0.85; % 0.55; %Ħ VehiclePara.Iz = 2059.2; %IΪZתв VehiclePara.Ix = 700.7; %IΪZתв VehiclePara.Radius = 0.387; % ̥뾶 global MPCParameters; MPCParameters.Np = 20;% predictive horizon Assume Np=Nc MPCParameters.Ns = 10; % Tsplit MPCParameters.Ts = 0.05; % the sample time of near term MPCParameters.Tsl = 0.2; % the sample time of long term MPCParameters.Nx = 6; %the number of state variables MPCParameters.Ny = 2; %the number of output variables MPCParameters.Nu = 1; %the number of control inputs global CostWeights; CostWeights.Wephi = 100; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.Wey = 10; CostWeights.Ddeltaf = 10; CostWeights.deltaf = 1; % ò CostWeights.Wshar = 500; CostWeights.Wshr = 500; global Constraints; Constraints.dumax = 0.1/MPCParameters.Ts; % Units: rad,0.08rad/s--4.6deg/s Constraints.umax = 0.4; % Units: rad appro.23deg Constraints.arlim = 6*pi/180; % alpha_lim=6deg~ 0.1047rad Constraints.rmax = 1.0; % rr_max = 1rad/s ar_slackMax = 6*pi/180; % rad rmax_slackMax = 1.0; Constraints.Sshmax = [ar_slackMax; rmax_slackMax]; Constraints.DPhimax = 60*pi/180; % ƫ60deg Constraints.Dymax = 1.7; % 3.0; cross-track-error max 3m global WayPoints_IndexPre; WayPoints_IndexPre = 1; global Reftraj; % Reftraj = load('WayPoints_Alt3fromFHWA_Overall_Station_Bank.mat'); Reftraj = load('WayPoints_Alt3fromFHWA_Samples.mat'); global FeedbackCorrects; FeedbackCorrects.StatePred = zeros(6,1); FeedbackCorrects.Ctrlopt = 0; % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; global FeedbackCorrects; Ctrl_SteerSW = 0; t_Elapsed = 0; PosX = 0; PosY = 0; PosPsi = 0; Vel = 0; e_psi = 0; e_y = 0; fwa_opt = 0; Shenvelop_hat = [0; 0]; r_ssmax = 0; YZPM = 0; y_zmp = 0; LTR = 0; Vy = 0; alphar = 0; Roll_Shad = 0; Roll_BaknR = 0; Station = 0; yawrate = 0; % CafHat = 0; % CarHat = 0; % Fyf = 0; % Fyr = 0; % Arfa_f = 0; % Arfa_r = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %***********Step (2). State estimation and Location **********************% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration--------% [VehStateMeasured, ParaHAT] = func_StateEstimation(u); PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Vel = VehStateMeasured.x_dot; Vy = VehStateMeasured.y_dot; yawrate = VehStateMeasured.phi_dot; % rad/s Ax = VehStateMeasured.Ax; % x_dot Ay = VehStateMeasured.Ay; % y_dot % delta_f = VehStateMeasured.delta_f;% deg-->rad fwa = VehStateMeasured.fwa; Beta = VehStateMeasured.beta;%rad Roll_Shad = VehStateMeasured.Roll_Shad;%rad Station = VehStateMeasured.Station; Roll = ParaHAT.Roll; Rollrate = ParaHAT.Rollrate; Ay_CG = ParaHAT.Ay_CG; Ay_Bf_SM = ParaHAT.Ay_Bf_SM; Fyf = ParaHAT.Fyf; Fyr = ParaHAT.Fyr; alphaf = ParaHAT.alphaf; alphar = ParaHAT.alphar; %-----Estimate Cornering stiffness -------------------% %for front tire Arfa_f = (Beta + yawrate*VehiclePara.Lf/Vel - fwa); [yf, Calpha_f1] = func_RLSFilter_Calpha_f(Arfa_f, Fyf); CafHat = sum(Calpha_f1); if CafHat > -30000 CafHat = -110000; end %for rear tire Arfa_r = (Beta - yawrate*VehiclePara.Lr/Vel); [yr, Calpha_r1] = func_RLSFilter_Calpha_r(Arfa_r, Fyr); CarHat = sum(Calpha_r1); if CarHat > -30000 CarHat = -92000; end %-----OR use constant Cornering stiffness -------------------% CafHat = -90000; CarHat = -90000; %********Step(3): Given reference trajectory, update vehicle state and bounds *******************% [WPIndex, RefP, RefU, Uaug, Uaug_0, PrjP, Roll_BaknR] = func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated( MPCParameters,... VehiclePara,... WayPoints_IndexPre,... Reftraj.WayPoints_Collect,... VehStateMeasured ); % y_zmp = Uaug_0(2); % Roll_BaknR = Uaug_0(1); % Uaug_0(1) = Roll_Shad; if ( WPIndex <= 0) fprintf('Error: WPIndex <= 0 \n'); % else Xm = [Vy; yawrate; Rollrate; Roll; PrjP.ey; PrjP.epsi]; WayPoints_IndexPre = WPIndex; end %****Step(4): MPC formulation;********************% % [StateSpaceModel] = func_RigidbodyDynamicalModel_FOH_Extended(VehiclePara, MPCParameters, Vel, CafHat, CarHat); [StateSpaceModel] = func_RigidbodyModel_FOH_Matrix_ROLL(VehiclePara, MPCParameters, Vel, CafHat, CarHat); Np = MPCParameters.Np; Eymax = zeros(Np,1); Eymin = zeros(Np,1); LM_right = -5; LM_middle = 0; Yroad_L = -2.5; for i =1:1:Np % עeyǴŵ, Np = 25 Eymax(i,1) = (LM_middle - Yroad_L); Eymin(i,1) = (LM_right - Yroad_L); end [Envelope] = func_SafedrivingEnvelope_SL(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, Eymax, Eymin); %--- Weighting Regulation functions [Sl, Ql, Rdun, Wshl, dun, dul] = func_CostWeightingRegulation_QuadSlacks(MPCParameters, CostWeights, Constraints); %================CVXGEN solver==================================% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations params.x_0 = Xm; params.um = fwa; % measured front whee angle % params.x_0 = Xm - 0.6*(Xm - FeedbackCorrects.StatePred); % params.um = fwa - 0.6*(fwa - FeedbackCorrects.Ctrlopt); params.As = StateSpaceModel.As; params.Bs1 = StateSpaceModel.Bs1; params.Bs2 = StateSpaceModel.Bs2; params.Al = StateSpaceModel.Al; params.Bl11 = StateSpaceModel.Bl11; params.Bl12 = StateSpaceModel.Bl12; params.Bl21 = StateSpaceModel.Bl21; params.Bl22 = StateSpaceModel.Bl22; params.tstl = MPCParameters.Ts/MPCParameters.Tsl; params.Ql = Ql; params.Rdun = Rdun; params.Wshl = Wshl; params.dun = dun; params.dul = dul; params.umax = Constraints.umax; params.Sshmax = Constraints.Sshmax; params.Uaug_0 = Uaug_0; params.Uaug = Uaug; params.Henv = Envelope.Henv; params.Genv = Envelope.Genv; params.Hsh = Envelope.Hsh; params.Psh = Envelope.Psh; params.Gsh = Envelope.Gsh; params.Hyzmp = Envelope.H_yzmp; params.Pyzmp1 = Envelope.P_yzmp1; params.Pyzmp2 = Envelope.P_yzmp2; params.Gyzmp = 1.0; % 0.7; %һصԼ [vars, status] = csolve(params, settings); if (1 == status.converged) %if optimization succeeded. fwa_opt = vars.u_0; % for i=1:1:20 % S_opt(i) = vars.x{i}; % U_opt(i) = vars.u{i}; % end else fwa_opt = vars.u_0; fprintf('CVXGEN converged = 0 InitialGapflag= %d\n', InitialGapflag); end FeedbackCorrects.StatePred = vars.x_1; FeedbackCorrects.Ctrlopt = fwa_opt; %====================================================================% Ctrl_SteerSW = 19 * fwa_opt*180/pi; % in deg. t_Elapsed = toc( t_Start ); %computation time %-----------------------------------------% e_y = PrjP.ey; e_psi = PrjP.epsi; Shenvelop_hat = Envelope.Hsh*Xm + Envelope.Psh*Uaug_0; r_ssmax = Envelope.Gsh(2); YZPM = Envelope.H_yzmp*Xm + Envelope.P_yzmp1*fwa_opt + Envelope.P_yzmp2*Uaug_0; % + VehStateMeasured.yawrate_dot*VehiclePara.Iz/(VehiclePara.m*VehiclePara.g);% YZPM = 2*YZPM/VehiclePara.Tr; Fzl = ParaHAT.Fz_l1 + ParaHAT.Fz_l2; Fzr = ParaHAT.Fz_r1 + ParaHAT.Fz_r2; LTR = (Fzr - Fzl)./(Fzr + Fzl); y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); % y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); %%%- VehiclePara.hCG*ParaHAT.Roll_accel % % y_zmp = ParaHAT.Ay_Bf_SM*ParaHAT.Zcg_SM/VehiclePara.g + ParaHAT.Zcg_SM.*ParaHAT.Roll - VehiclePara.Ix*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); % y_zmp = 2*y_zmp/VehiclePara.Tr; end % end of if Initialflag < 2 % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Station; Vel; e_psi; e_y; y_zmp; YZPM; LTR; Vy; alphar; yawrate]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10)*pi/180; % deg-->rad VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); % HATParameter.GearStat = ModelInput(30); VehStatemeasured.Roll_Shad = ModelInput(30)*pi/180;% deg-->rad HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 HATParameter.Z0 = ModelInput(34); %m VehStatemeasured.Station = ModelInput(35); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.Ay_CG = ModelInput(37)*g; %m/s^2 HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 % end % end of func_StateEstimation ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/Main_CurvePathTracking_CVXGEN_Terrain_FeedbackCorrections.m ================================================ function [sys,x0,str,ts] =Main_CurvePathTracking_CVXGEN_Terrain(t,x,u,flag) %***************************************************************% % This is a Simulink/Carsim joint simulation solution for safe driving % envelope control of high speed autonomous vehicle % Linearized spatial bicycle vehicle dynamic model is applied. % No successive linearizarion. No two time scale of prediction horizon % Constant high speed, curve path tracking % state vector =[beta,yawrate,e_phi,s,e_y] % control input = [steer_SW] % many other parameters are also outputed for comparision. % Input: % tDzʱ, x״̬, u(simulinkģ,CarSim), % flagǷе״̬־(жϵǰdzʼе) % Output: % sysflagIJͬͬ(潫flagsysĺ), % x0״̬ijʼֵ, % strDZ,Ϊ % tsһ12, ts(1)Dz, ts(2)ƫ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My github: https://github.com/leoking99-BIT %***************************************************************% switch flag, case 0 % Initialization % [sys,x0,str,ts] = mdlInitializeSizes; % Initialization case 2 % Update % sys = mdlUpdates(t,x,u); % Update discrete states case 3 % Outputs % sys = mdlOutputs(t,x,u); % Calculate outputs case {1,4,9} % Unused flags sys = []; otherwise % Unexpected flags % error(['unhandled flag = ',num2str(flag)]); % Error handling end % end of switch % End sfuntmpl function [sys,x0,str,ts] = mdlInitializeSizes %============================================================== % Initialization, flag = 0mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================== sizes = simsizes;%ģĽṹsimsizes sizes.NumContStates = 0; %ģ״̬ĸ sizes.NumDiscStates = 6; %ģɢ״̬ĸ,ʵûõֵֻʾɢģ sizes.NumOutputs = 15; %S sizes.NumInputs = 38; %SģĸCarSim sizes.DirFeedthrough = 1; %ģǷֱӹͨ(direct feedthrough). 1 means there is direct feedthrough. % ֱͨʾϵͳɱʱǷܵĿơ % a. mdlOutputsflag==3uĺumdlOutputsбʣֱͨ % b. һ䲽S-Functionġһʱ䡱mdlGetTimeOfNextVarHitflag==4пԷu % ȷֱͨ־ʮҪģΪӰģпִ˳򣬲ü sizes.NumSampleTimes = 1; %ģIJ>=1 sys = simsizes(sizes); %󸳸sys x0 = zeros(sizes.NumDiscStates,1);%initial the state vector of no use str = []; % Set str to an empty matrix. ts = [0.05 0]; % ts=[period, offset].sample time=0.05,50ms %--Global parameters and initialization [y, e] = func_RLSFilter_Calpha_f('initial', 0.95, 10, 10); [y, e] = func_RLSFilter_Calpha_r('initial', 0.95, 10, 10); global InitialGapflag; InitialGapflag = 0; % the first few inputs don't count. Gap it. global VehiclePara; % for SUV VehiclePara.m = 1600; %mΪ,Kg; Sprung mass = 1370 VehiclePara.g = 9.81; VehiclePara.hCG = 0.65;%m VehiclePara.Lf = 1.12; % 1.05 VehiclePara.Lr = 1.48; % 1.55 VehiclePara.L = 2.6; %VehiclePara.Lf + VehiclePara.Lr; VehiclePara.Tr = 1.565; %c,or 1.57. ע᳤lcδȷ VehiclePara.mu = 0.85; % 0.55; %Ħ VehiclePara.Iz = 2059.2; %IΪZתв VehiclePara.Ix = 700.7; %IΪZתв VehiclePara.Radius = 0.387; % ̥뾶 global MPCParameters; MPCParameters.Np = 20;% predictive horizon Assume Np=Nc MPCParameters.Ns = 10; % Tsplit MPCParameters.Ts = 0.05; % the sample time of near term MPCParameters.Tsl = 0.2; % the sample time of long term MPCParameters.Nx = 6; %the number of state variables MPCParameters.Ny = 2; %the number of output variables MPCParameters.Nu = 1; %the number of control inputs global CostWeights; CostWeights.Wephi = 100; %state vector =[beta,yawrate,e_phi,s,e_y] CostWeights.Wey = 10; CostWeights.Ddeltaf = 10; CostWeights.deltaf = 1; % ò CostWeights.Wshar = 500; CostWeights.Wshr = 500; global Constraints; Constraints.dumax = 0.1/MPCParameters.Ts; % Units: rad,0.08rad/s--4.6deg/s Constraints.umax = 0.4; % Units: rad appro.23deg Constraints.arlim = 6*pi/180; % alpha_lim=6deg~ 0.1047rad Constraints.rmax = 1.0; % rr_max = 1rad/s ar_slackMax = 6*pi/180; % rad rmax_slackMax = 1.0; Constraints.Sshmax = [ar_slackMax; rmax_slackMax]; Constraints.DPhimax = 60*pi/180; % ƫ60deg Constraints.Dymax = 1.7; % 3.0; cross-track-error max 3m global WayPoints_IndexPre; WayPoints_IndexPre = 1; global Reftraj; % Reftraj = load('WayPoints_Alt3fromFHWA_Overall_Station_Bank.mat'); Reftraj = load('WayPoints_Alt3fromFHWA_Samples.mat'); global FeedbackCorrects; FeedbackCorrects.StatePred = zeros(6,1); FeedbackCorrects.Ctrlopt = 0; % End of mdlInitializeSizes function sys = mdlUpdates(t,x,u) %============================================================== % Update the discrete states, flag = 2 mdlUpdate % Handle discrete state updates, sample time hits, and major time step % requirements. %============================================================== % ûọ̃ںڵijģ黯ʱԼܡ sys = x; % End of mdlUpdate. function sys = mdlOutputs(t,x,u) %============================================================== % Calculate outputs, flag = 3 mdlOutputs % Return the block outputs. %============================================================== %***********Step (1). Parameters Initialization ***************************************% global InitialGapflag; global VehiclePara; global MPCParameters; global CostWeights; global Constraints; global WayPoints_IndexPre; global Reftraj; global FeedbackCorrects; Ctrl_SteerSW = 0; t_Elapsed = 0; PosX = 0; PosY = 0; PosPsi = 0; Vel = 0; e_psi = 0; e_y = 0; % fwa_opt = 0; Shenvelop_hat = [0; 0]; r_ssmax = 0; YZPM = 0; y_zmp = 0; LTR = 0; Vy = 0; alphar = 0; Roll_Shad = 0; Roll_BaknR = 0; Station = 0; yawrate = 0; % CafHat = 0; % CarHat = 0; % Fyf = 0; % Fyr = 0; % Arfa_f = 0; % Arfa_r = 0; if InitialGapflag < 2 % get rid of the first two inputs, because no data from CarSim InitialGapflag = InitialGapflag + 1; else % start control InitialGapflag = InitialGapflag + 1; %***********Step (2). State estimation and Location **********************% t_Start = tic; % ʼʱ %-----Update State Estimation of measured Vehicle Configuration--------% [VehStateMeasured, ParaHAT] = func_StateEstimation(u); PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Vel = VehStateMeasured.x_dot; Vy = VehStateMeasured.y_dot; yawrate = VehStateMeasured.phi_dot; % rad/s Ax = VehStateMeasured.Ax; % x_dot Ay = VehStateMeasured.Ay; % y_dot % delta_f = VehStateMeasured.delta_f;% deg-->rad fwa = VehStateMeasured.fwa; Beta = VehStateMeasured.beta;%rad Roll_Shad = VehStateMeasured.Roll_Shad;%rad Station = VehStateMeasured.Station; Roll = ParaHAT.Roll; Rollrate = ParaHAT.Rollrate; Ay_CG = ParaHAT.Ay_CG; Ay_Bf_SM = ParaHAT.Ay_Bf_SM; Fyf = ParaHAT.Fyf; Fyr = ParaHAT.Fyr; alphaf = ParaHAT.alphaf; alphar = ParaHAT.alphar; %-----Estimate Cornering stiffness -------------------% %for front tire Arfa_f = (Beta + yawrate*VehiclePara.Lf/Vel - fwa); [yf, Calpha_f1] = func_RLSFilter_Calpha_f(Arfa_f, Fyf); CafHat = sum(Calpha_f1); if CafHat > -30000 CafHat = -110000; end %for rear tire Arfa_r = (Beta - yawrate*VehiclePara.Lr/Vel); [yr, Calpha_r1] = func_RLSFilter_Calpha_r(Arfa_r, Fyr); CarHat = sum(Calpha_r1); if CarHat > -30000 CarHat = -92000; end %-----OR use constant Cornering stiffness -------------------% % CafHat = -90000; % CarHat = -90000; %********Step(3): Given reference trajectory, update vehicle state and bounds *******************% [WPIndex, RefP, RefU, Uaug, Uaug_0, PrjP, Roll_BaknR] = func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated( MPCParameters,... VehiclePara,... WayPoints_IndexPre,... Reftraj.WayPoints_Collect,... VehStateMeasured ); % % Roll_BaknR = Uaug_0(1); % Uaug_0(1) = Roll_Shad; if ( WPIndex <= 0) fprintf('Error: WPIndex <= 0 \n'); % else Xm = [Vy; yawrate; Rollrate; Roll; PrjP.ey; PrjP.epsi]; WayPoints_IndexPre = WPIndex; end %****Step(4): MPC formulation;********************% % [StateSpaceModel] = func_RigidbodyDynamicalModel_FOH_Extended(VehiclePara, MPCParameters, Vel, CafHat, CarHat); [StateSpaceModel] = func_RigidbodyModel_FOH_Matrix_ROLL(VehiclePara, MPCParameters, Vel, CafHat, CarHat); Np = MPCParameters.Np; Eymax = zeros(Np,1); Eymin = zeros(Np,1); LM_right = -5; LM_middle = 0; Yroad_L = -2.5; for i =1:1:Np % עeyǴŵ, Np = 25 Eymax(i,1) = (LM_middle - Yroad_L); Eymin(i,1) = (LM_right - Yroad_L); end [Envelope] = func_SafedrivingEnvelope_SL(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, Eymax, Eymin); %--- Weighting Regulation functions [Sl, Ql, Rdun, Wshl, dun, dul] = func_CostWeightingRegulation_QuadSlacks(MPCParameters, CostWeights, Constraints); %================CVXGEN solver==================================% settings.verbose = 0; % 0-Silence; 1-display settings.max_iters = 25; %Limits the total iterations params.x_0 = Xm; params.um = fwa; % measured front whee angle % params.x_0 = Xm - 0.6*(Xm - FeedbackCorrects.StatePred); % params.um = fwa - 0.6*(fwa - FeedbackCorrects.Ctrlopt); params.As = StateSpaceModel.As; params.Bs1 = StateSpaceModel.Bs1; params.Bs2 = StateSpaceModel.Bs2; params.Al = StateSpaceModel.Al; params.Bl11 = StateSpaceModel.Bl11; params.Bl12 = StateSpaceModel.Bl12; params.Bl21 = StateSpaceModel.Bl21; params.Bl22 = StateSpaceModel.Bl22; params.tstl = MPCParameters.Ts/MPCParameters.Tsl; params.Ql = Ql; params.Rdun = Rdun; params.Wshl = Wshl; params.dun = dun; params.dul = dul; params.umax = Constraints.umax; params.Sshmax = Constraints.Sshmax; params.Uaug_0 = Uaug_0; params.Uaug = Uaug; params.Henv = Envelope.Henv; params.Genv = Envelope.Genv; params.Hsh = Envelope.Hsh; params.Psh = Envelope.Psh; params.Gsh = Envelope.Gsh; params.Hyzmp = Envelope.H_yzmp; params.Pyzmp1 = Envelope.P_yzmp1; params.Pyzmp2 = Envelope.P_yzmp2; params.Gyzmp = 1.0; % 0.7; %һصԼ [vars, status] = csolve(params, settings); if (1 == status.converged) %if optimization succeeded. fwa_opt = vars.u_0; % for i=1:1:20 % S_opt(i) = vars.x{i}; % U_opt(i) = vars.u{i}; % end else fwa_opt = vars.u_0; fprintf('CVXGEN converged = 0 InitialGapflag= %d\n', InitialGapflag); end FeedbackCorrects.StatePred = vars.x_1; FeedbackCorrects.Ctrlopt = fwa_opt; %====================================================================% Ctrl_SteerSW = 19 * fwa_opt*180/pi; % in deg. t_Elapsed = toc( t_Start ); %computation time %-----------------------------------------% e_y = PrjP.ey; e_psi = PrjP.epsi; Shenvelop_hat = Envelope.Hsh*Xm + Envelope.Psh*Uaug_0; r_ssmax = Envelope.Gsh(2); YZPM = Envelope.H_yzmp*Xm + Envelope.P_yzmp1*fwa_opt + Envelope.P_yzmp2*Uaug_0; % + VehStateMeasured.yawrate_dot*VehiclePara.Iz/(VehiclePara.m*VehiclePara.g);% % YZPM = 2*YZPM/VehiclePara.Tr; Fzl = ParaHAT.Fz_l1 + ParaHAT.Fz_l2; Fzr = ParaHAT.Fz_r1 + ParaHAT.Fz_r2; LTR = (Fzr - Fzl)./(Fzr + Fzl); % y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); y_zmp = (Ay_CG)*VehiclePara.hCG/VehiclePara.g + VehiclePara.hCG*(ParaHAT.Roll) - (VehiclePara.Ix)*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); %%%- VehiclePara.hCG*ParaHAT.Roll_accel % y_zmp = ParaHAT.Ay_Bf_SM*ParaHAT.Zcg_SM/VehiclePara.g + ParaHAT.Zcg_SM.*ParaHAT.Roll - VehiclePara.Ix*(ParaHAT.Roll_accel)/(VehiclePara.m*VehiclePara.g); y_zmp = 2*y_zmp/VehiclePara.Tr; end % end of if Initialflag < 2 % sys = [Ctrl_SteerSW; t_Elapsed; PosX; PosY; PosPsi; Station; Vel; e_psi; e_y; YZPM; y_zmp; LTR; Vy; alphar; yawrate]; % % sys = [Ctrl_SteerSW; CafHat; CarHat; Fyf; Fyr; alphaf; alphar; Arfa_f; Arfa_r]; % end %End of mdlOutputs. %============================================================== % sub functions %============================================================== %***************************************************************% % **** State estimation %***************************************************************% function [VehStatemeasured, HATParameter] = func_StateEstimation(ModelInput) %***************************************************************% % we should do state estimation, but for simplicity we deem that the % measurements are accurate % Update the state vector according to the input of the S function, % usually do State Estimation from measured Vehicle Configuration %***************************************************************% %******ӿת***% g = 9.81; VehStatemeasured.X = round(100*ModelInput(1))/100;%λΪm, 2λС VehStatemeasured.Y = round(100*ModelInput(2))/100;%λΪm, 2λС VehStatemeasured.phi = (round(10*ModelInput(3))/10)*pi/180; %ǣUnitdeg-->rad1λС VehStatemeasured.x_dot = ModelInput(4)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.y_dot = ModelInput(5)/3.6; %Unit:km/h-->m/s1λС VehStatemeasured.phi_dot = (round(10*ModelInput(6))/10)*pi/180; %Unitdeg/s-->rad/s1λС VehStatemeasured.beta = (round(10*ModelInput(7))/10)*pi/180;% side slip, Unit:deg-->rad1λС VehStatemeasured.delta_f = (round(10*0.5*(ModelInput(8)+ ModelInput(9)))/10)*pi/180; % deg-->rad VehStatemeasured.fwa = VehStatemeasured.delta_f * pi/180; % deg-->rad VehStatemeasured.Steer_SW= ModelInput(10); %deg VehStatemeasured.Ax = g*ModelInput(11);%λΪm/s^2, 2λС VehStatemeasured.Ay = g*ModelInput(12);%λΪm/s^2, 2λС VehStatemeasured.yawrate_dot = ModelInput(13); %rad/s^2 % Here I don't explore the state estimation process, and deem the % measured values are accurate!!! HATParameter.alpha_l1 = (round(10*ModelInput(14))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_l2 = (round(10*ModelInput(15))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r1 = (round(10*ModelInput(16))/10)*pi/180; % deg-->rad1λС HATParameter.alpha_r2 = (round(10*ModelInput(17))/10)*pi/180; % deg-->rad1λС HATParameter.alphaf = (round(10*0.5 * (ModelInput(14)+ ModelInput(16)))/10)*pi/180; % deg-->rad1λС HATParameter.alphar = (round(10*0.5 * (ModelInput(15)+ ModelInput(17)))/10)*pi/180; % deg-->rad1λС HATParameter.Fz_l1 = round(10*ModelInput(18))/10; % N HATParameter.Fz_l2 = round(10*ModelInput(19))/10; % N HATParameter.Fz_r1 = round(10*ModelInput(20))/10; % N HATParameter.Fz_r2 = round(10*ModelInput(21))/10; % N HATParameter.Fy_l1 = round(10*ModelInput(22))/10; % N HATParameter.Fy_l2 = round(10*ModelInput(23))/10; % N HATParameter.Fy_r1 = round(10*ModelInput(24))/10; % N HATParameter.Fy_r2 = round(10*ModelInput(25))/10; % N HATParameter.Fyf = HATParameter.Fy_l1 + HATParameter.Fy_r1; HATParameter.Fyr = HATParameter.Fy_l2 + HATParameter.Fy_r2; HATParameter.Fx_L1 = ModelInput(26); HATParameter.Fx_L2 = ModelInput(27); HATParameter.Fx_R1 = ModelInput(28); HATParameter.Fx_R2 = ModelInput(29); % HATParameter.GearStat = ModelInput(30); VehStatemeasured.Roll_Shad = ModelInput(30)*pi/180;% deg-->rad HATParameter.Roll = ModelInput(31)*pi/180;% deg-->rad HATParameter.Rollrate = ModelInput(32)*pi/180;% deg/s-->rad/s HATParameter.Roll_accel = ModelInput(33); % rad/s^2 HATParameter.Z0 = ModelInput(34); %m VehStatemeasured.Station = ModelInput(35); %m HATParameter.Zcg_TM = ModelInput(35); %m HATParameter.Zcg_SM = ModelInput(36); %m HATParameter.Ay_CG = ModelInput(37)*g; %m/s^2 HATParameter.Ay_Bf_SM = ModelInput(38)*g; %m/s^2 % end % end of func_StateEstimation ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/Plot_Yzmp_LTR_Comparison.m ================================================ close all lw = 2; Num = length(u.signals.values(:,2)); % LTR = u.signals.values(:,9); % Yzmp_SH = u.signals.values(:,10); % Yzmp = u.signals.values(:,11); % Yzmp1 = u.signals.values(:,12); % % figure % plot(1:Num, LTR','r',1:Num, Yzmp_SH,'b',1:Num, Yzmp,'g',1:Num, Yzmp1,'k', 'Linewidth',lw); % grid on % legend('LTR','Yzmp_{SH}','Yzmp','Yzmp1'); %% Yzmp_SH = u.signals.values(:,10); Yzmp = u.signals.values(:,11); LTR = u.signals.values(:,12); figure plot(1:Num, LTR,'r',1:Num, Yzmp_SH,'b',1:Num, Yzmp,'g', 'Linewidth',lw); grid on legend('LTR','Yzmp_{SH}','Yzmp'); % Roll_BankR = u.signals.values(:,17); % Roll_shad = u.signals.values(:,18); % figure % plot(1:Num, Roll_shad,'r',1:Num, Roll_BankR,'bo', 'Linewidth',lw); % grid on % legend('Roll_{shad}','Roll_{BankR}'); %% Save simulation data % SimResult_Both = u.signals.values; % save SimResult_Both.mat SimResult_Both % SimResult_Neither = u.signals.values; % save SimResult_Neither.mat SimResult_Neither % % SimResult_Bank = u.signals.values; % save SimResult_Bank.mat SimResult_Bank % % SimResult_Curvature = u.signals.values; % save SimResult_Curvature.mat SimResult_Curvature ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/RigidbodyMPCCurvePathTracking.mdl ================================================ Model { Name "RigidbodyMPCCurvePathTracking" Version 8.2 MdlSubVersion 0 SavedCharacterEncoding "GBK" GraphicalInterface { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" ComputedModelVersion "1.241" NumModelReferences 0 NumTestPointedSignals 0 } slprops.hdlmdlprops { $PropName "HDLParams" $ObjectID 1 Array { Type "Cell" Dimension 2 Cell "HDLSubsystem" Cell "RigidbodyMPCCurvePathTracking" PropName "mdlProps" } } SaveDefaultBlockParams on ScopeRefreshTime 0.035000 OverrideScopeRefreshTime on DisableAllScopes off DataTypeOverride "UseLocalSettings" DataTypeOverrideAppliesTo "AllNumericTypes" MinMaxOverflowLogging "UseLocalSettings" MinMaxOverflowArchiveMode "Overwrite" FPTRunName "Run 1" MaxMDLFileLineLength 120 Object { $PropName "BdWindowsInfo" $ObjectID 2 $ClassName "Simulink.BDWindowsInfo" Object { $PropName "WindowsInfo" $ObjectID 3 $ClassName "Simulink.WindowInfo" IsActive [1] Location [747.0, 133.0, 1036.0, 764.0] Object { $PropName "ModelBrowserInfo" $ObjectID 4 $ClassName "Simulink.ModelBrowserInfo" Visible [0] DockPosition "Left" Width [50] Height [50] Filter [9] } Object { $PropName "ExplorerBarInfo" $ObjectID 5 $ClassName "Simulink.ExplorerBarInfo" Visible [1] } Object { $PropName "EditorsInfo" $ObjectID 6 $ClassName "Simulink.EditorInfo" IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" Extents [984.0, 566.0] ZoomFactor [1.7499999999999998] Offset [53.536046202867738, 171.0] } } } Created "Wed May 29 22:31:22 2013" Creator "xuwei" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "admin" ModifiedDateFormat "%" LastModifiedDate "Sat Nov 17 00:44:14 2018" RTWModifiedTimeStamp 464316000 ModelVersionFormat "1.%" ConfigurationManager "none" SampleTimeColors off SampleTimeAnnotations off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off ShowDesignRanges off ShowLoopsOnError on IgnoreBidirectionalLines off ShowStorageClass off ShowTestPointIcons on ShowSignalResolutionIcons on ShowViewerIcons on SortedOrder off ExecutionContextIcon off ShowLinearizationAnnotations on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off SimulationMode "normal" PauseTimes "5" NumberOfSteps 1 SnapshotBufferSize 10 SnapshotInterval 10 NumberOfLastSnapshots 0 LinearizationMsg "none" Profile off ParamWorkspaceSource "MATLABWorkspace" AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" $ObjectID 7 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "RigidbodyMPCCurvePathTracking" Array { Type "Cell" Dimension 1 Cell "RigidbodyMPCCurvePathTracking" PropName "logAsSpecifiedByModels_" } Array { Type "Cell" Dimension 1 Cell "" PropName "logAsSpecifiedByModelsSSIDs_" } } RecordCoverage off CovPath "/" CovSaveName "covdata" CovMetricSettings "dw" CovNameIncrementing off CovHtmlReporting on CovForceBlockReductionOff on CovEnableCumulative on covSaveCumulativeToWorkspaceVar on CovSaveSingleToWorkspaceVar on CovCumulativeVarName "covCumulativeData" CovCumulativeReport off CovReportOnPause on CovModelRefEnable "Off" CovExternalEMLEnable off ExtModeBatchMode off ExtModeEnableFloating on ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigDurationFloating "auto" ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeSkipDownloadWhenConnect off ExtModeLogAll on ExtModeAutoUpdateStatusClock on BufferReuse on ShowModelReferenceBlockVersion off ShowModelReferenceBlockIO off Array { Type "Handle" Dimension 1 Simulink.ConfigSet { $ObjectID 8 Version "1.13.1" Array { Type "Handle" Dimension 9 Simulink.SolverCC { $ObjectID 9 Version "1.13.1" StartTime "0.0" StopTime "10" AbsTol "auto" FixedStep "0.01" InitialStep "auto" MaxNumMinSteps "-1" MaxOrder 5 ZcThreshold "auto" ConsecutiveZCsStepRelTol "10*128*eps" MaxConsecutiveZCs "1000" ExtrapolationOrder 4 NumberNewtonIterations 1 MaxStep "auto" MinStep "auto" MaxConsecutiveMinStep "1" RelTol "1e-3" SolverMode "Auto" EnableConcurrentExecution off ConcurrentTasks off Solver "ode45" SolverName "ode45" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" ZeroCrossAlgorithm "Nonadaptive" AlgebraicLoopSolver "TrustRegion" SolverResetMethod "Fast" PositivePriorityOrder off AutoInsertRateTranBlk off SampleTimeConstraint "Unconstrained" InsertRTBMode "Whenever possible" } Simulink.DataIOCC { $ObjectID 10 Version "1.13.1" Decimation "1" ExternalInput "[t, u]" FinalStateName "xFinal" InitialState "xInitial" LimitDataPoints on MaxDataPoints "1000" LoadExternalInput off LoadInitialState off SaveFinalState off SaveCompleteFinalSimState off SaveFormat "Array" SignalLoggingSaveFormat "ModelDataLogs" SaveOutput on SaveState off SignalLogging on DSMLogging on InspectSignalLogs off SaveTime on ReturnWorkspaceOutputs off StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" ReturnWorkspaceOutputsName "out" Refine "1" } Simulink.OptimizationCC { $ObjectID 11 Version "1.13.1" Array { Type "Cell" Dimension 7 Cell "BooleansAsBitfields" Cell "PassReuseOutputArgsAs" Cell "PassReuseOutputArgsThreshold" Cell "ZeroExternalMemoryAtStartup" Cell "ZeroInternalMemoryAtStartup" Cell "OptimizeModelRefInitCode" Cell "NoFixptDivByZeroProtection" PropName "DisabledProps" } BlockReduction on BooleanDataType on ConditionallyExecuteInputs on InlineParams off UseIntDivNetSlope off UseFloatMulNetSlope off DefaultUnderspecifiedDataType "double" UseSpecifiedMinMax off InlineInvariantSignals off OptimizeBlockIOStorage on BufferReuse on EnhancedBackFolding off StrengthReduction off ExpressionFolding on BooleansAsBitfields off BitfieldContainerType "uint_T" EnableMemcpy on MemcpyThreshold 64 PassReuseOutputArgsAs "Structure reference" ExpressionDepthLimit 2147483647 FoldNonRolledExpr on LocalBlockOutputs on RollThreshold 5 SystemCodeInlineAuto off StateBitsets off DataBitsets off ActiveStateOutputEnumStorageType "Native Integer" UseTempVars off ZeroExternalMemoryAtStartup on ZeroInternalMemoryAtStartup on InitFltsAndDblsToZero off NoFixptDivByZeroProtection off EfficientFloat2IntCast off EfficientMapNaN2IntZero on OptimizeModelRefInitCode off LifeSpan "inf" MaxStackSize "Inherit from target" BufferReusableBoundary on SimCompilerOptimization "Off" AccelVerboseBuild off ParallelExecutionInRapidAccelerator on } Simulink.DebuggingCC { $ObjectID 12 Version "1.13.1" RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" SignalRangeChecking "none" ReadBeforeWriteMsg "UseLocalSettings" WriteAfterWriteMsg "UseLocalSettings" WriteAfterReadMsg "UseLocalSettings" AlgebraicLoopMsg "warning" ArtificialAlgebraicLoopMsg "warning" SaveWithDisabledLinksMsg "warning" SaveWithParameterizedLinksMsg "warning" CheckSSInitialOutputMsg on UnderspecifiedInitializationDetection "Classic" MergeDetectMultiDrivingBlocksExec "none" CheckExecutionContextPreStartOutputMsg off CheckExecutionContextRuntimeOutputMsg off SignalResolutionControl "UseLocalSettings" BlockPriorityViolationMsg "warning" MinStepSizeMsg "warning" TimeAdjustmentMsg "none" MaxConsecutiveZCsMsg "error" MaskedZcDiagnostic "warning" IgnoredZcDiagnostic "warning" SolverPrmCheckMsg "warning" InheritedTsInSrcMsg "warning" DiscreteInheritContinuousMsg "warning" MultiTaskDSMMsg "error" MultiTaskCondExecSysMsg "error" MultiTaskRateTransMsg "error" SingleTaskRateTransMsg "none" TasksWithSamePriorityMsg "warning" SigSpecEnsureSampleTimeMsg "warning" CheckMatrixSingularityMsg "none" IntegerOverflowMsg "warning" Int32ToFloatConvMsg "warning" ParameterDowncastMsg "error" ParameterOverflowMsg "error" ParameterUnderflowMsg "none" ParameterPrecisionLossMsg "warning" ParameterTunabilityLossMsg "warning" FixptConstUnderflowMsg "none" FixptConstOverflowMsg "none" FixptConstPrecisionLossMsg "none" UnderSpecifiedDataTypeMsg "none" UnnecessaryDatatypeConvMsg "none" VectorMatrixConversionMsg "none" InvalidFcnCallConnMsg "error" FcnCallInpInsideContextMsg "UseLocalSettings" SignalLabelMismatchMsg "none" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" SFcnCompatibilityMsg "none" FrameProcessingCompatibilityMsg "warning" UniqueDataStoreMsg "none" BusObjectLabelMismatch "warning" RootOutportRequireBusObject "warning" AssertControl "UseLocalSettings" EnableOverflowDetection off ModelReferenceIOMsg "none" ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" ModelReferenceVersionMismatchMessage "none" ModelReferenceIOMismatchMessage "none" ModelReferenceCSMismatchMessage "none" UnknownTsInhSupMsg "warning" ModelReferenceDataLoggingMessage "warning" ModelReferenceSymbolNameMessage "warning" ModelReferenceExtraNoncontSigs "error" StateNameClashWarn "warning" SimStateInterfaceChecksumMismatchMsg "warning" SimStateOlderReleaseMsg "error" InitInArrayFormatMsg "warning" StrictBusMsg "ErrorLevel1" BusNameAdapt "WarnAndRepair" NonBusSignalsTreatedAsBus "none" LoggingUnavailableSignals "error" BlockIODiagnostic "none" SFUnusedDataAndEventsDiag "warning" SFUnexpectedBacktrackingDiag "warning" SFInvalidInputDataAccessInChartInitDiag "warning" SFNoUnconditionalDefaultTransitionDiag "warning" SFTransitionOutsideNaturalParentDiag "warning" SFUnconditionalTransitionShadowingDiag "warning" SFUndirectedBroadcastEventsDiag "warning" SFTransitionActionBeforeConditionDiag "warning" } Simulink.HardwareCC { $ObjectID 13 Version "1.13.1" ProdBitPerChar 8 ProdBitPerShort 16 ProdBitPerInt 32 ProdBitPerLong 32 ProdBitPerLongLong 64 ProdBitPerFloat 32 ProdBitPerDouble 64 ProdBitPerPointer 32 ProdLargestAtomicInteger "Char" ProdLargestAtomicFloat "None" ProdIntDivRoundTo "Undefined" ProdEndianess "Unspecified" ProdWordSize 32 ProdShiftRightIntArith on ProdLongLongMode off ProdHWDeviceType "32-bit Generic" TargetBitPerChar 8 TargetBitPerShort 16 TargetBitPerInt 32 TargetBitPerLong 32 TargetBitPerLongLong 64 TargetBitPerFloat 32 TargetBitPerDouble 64 TargetBitPerPointer 32 TargetLargestAtomicInteger "Char" TargetLargestAtomicFloat "None" TargetShiftRightIntArith on TargetLongLongMode off TargetIntDivRoundTo "Undefined" TargetEndianess "Unspecified" TargetWordSize 32 TargetTypeEmulationWarnSuppressLevel 0 TargetPreprocMaxBitsSint 32 TargetPreprocMaxBitsUint 32 TargetHWDeviceType "Specified" TargetUnknown off ProdEqTarget on } Simulink.ModelReferenceCC { $ObjectID 14 Version "1.13.1" UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" CheckModelReferenceTargetMessage "error" EnableParallelModelReferenceBuilds off ParallelModelReferenceErrorOnInvalidPool on ParallelModelReferenceMATLABWorkerInit "None" ModelReferenceNumInstancesAllowed "Multi" PropagateVarSize "Infer from blocks in model" ModelReferencePassRootInputsByReference on ModelReferenceMinAlgLoopOccurrences off PropagateSignalLabelsOutOfModel off SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { $ObjectID 15 Version "1.13.1" SFSimEnableDebug on SFSimOverflowDetection on SFSimEcho on SimBlas on SimCtrlC on SimExtrinsic on SimIntegrity on SimUseLocalCustomCode off SimParseCustomCode on SimBuildMode "sf_incremental_build" SimGenImportedTypeDefs off } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" $ObjectID 16 Version "1.13.1" Array { Type "Cell" Dimension 6 Cell "IncludeHyperlinkInReport" Cell "GenerateTraceInfo" Cell "GenerateTraceReport" Cell "GenerateTraceReportSl" Cell "GenerateTraceReportSf" Cell "GenerateTraceReportEml" PropName "DisabledProps" } SystemTargetFile "grt.tlc" TLCOptions "" GenCodeOnly off MakeCommand "make_rtw" GenerateMakefile on PackageGeneratedCodeAndArtifacts off PackageName "" TemplateMakefile "grt_default_tmf" PostCodeGenCommand "" Description "" GenerateReport off SaveLog off RTWVerbose on RetainRTWFile off ProfileTLC off TLCDebug off TLCCoverage off TLCAssert off ProcessScriptMode "Default" ConfigurationMode "Optimized" ProcessScript "" ConfigurationScript "" ConfigAtBuild off RTWUseLocalCustomCode off RTWUseSimCustomCode off CustomSourceCode "" CustomHeaderCode "" CustomInclude "" CustomSource "" CustomLibrary "" CustomInitializer "" CustomTerminator "" Toolchain "Automatically locate an installed toolchain" BuildConfiguration "Faster Builds" IncludeHyperlinkInReport off LaunchReport off PortableWordSizes off GenerateErtSFunction off CreateSILPILBlock "None" CodeExecutionProfiling off CodeExecutionProfileVariable "executionProfile" CodeProfilingSaveOptions "SummaryOnly" CodeProfilingInstrumentation off SILDebugging off TargetLang "C" IncludeBusHierarchyInRTWFileBlockHierarchyMap off IncludeERTFirstTime off GenerateTraceInfo off GenerateTraceReport off GenerateTraceReportSl off GenerateTraceReportSf off GenerateTraceReportEml off GenerateCodeInfo off GenerateWebview off GenerateCodeMetricsReport off GenerateCodeReplacementReport off RTWCompilerOptimization "Off" RTWCustomCompilerOptimizations "" CheckMdlBeforeBuild "Off" CustomRebuildMode "OnUpdate" DataInitializer "" SharedConstantsCachingThreshold 1024 Array { Type "Handle" Dimension 2 Simulink.CodeAppCC { $ObjectID 17 Version "1.13.1" Array { Type "Cell" Dimension 19 Cell "IgnoreCustomStorageClasses" Cell "IgnoreTestpoints" Cell "InsertBlockDesc" Cell "SFDataObjDesc" Cell "SimulinkDataObjDesc" Cell "DefineNamingRule" Cell "SignalNamingRule" Cell "ParamNamingRule" Cell "InlinedPrmAccess" Cell "CustomSymbolStr" Cell "CustomSymbolStrGlobalVar" Cell "CustomSymbolStrType" Cell "CustomSymbolStrField" Cell "CustomSymbolStrFcn" Cell "CustomSymbolStrFcnArg" Cell "CustomSymbolStrBlkIO" Cell "CustomSymbolStrTmpVar" Cell "CustomSymbolStrMacro" Cell "ReqsInCode" PropName "DisabledProps" } ForceParamTrailComments off GenerateComments on IgnoreCustomStorageClasses on IgnoreTestpoints off IncHierarchyInIds off MaxIdLength 31 PreserveName off PreserveNameWithParent off ShowEliminatedStatement off OperatorAnnotations off IncAutoGenComments off SimulinkDataObjDesc off SFDataObjDesc off MATLABFcnDesc off IncDataTypeInIds off MangleLength 1 CustomSymbolStrGlobalVar "$R$N$M" CustomSymbolStrType "$N$R$M_T" CustomSymbolStrField "$N$M" CustomSymbolStrFcn "$R$N$M$F" CustomSymbolStrFcnArg "rt$I$N$M" CustomSymbolStrBlkIO "rtb_$N$M" CustomSymbolStrTmpVar "$N$M" CustomSymbolStrMacro "$R$N$M" CustomSymbolStrUtil "$N$C" DefineNamingRule "None" ParamNamingRule "None" SignalNamingRule "None" InsertBlockDesc off InsertPolySpaceComments off SimulinkBlockComments on MATLABSourceComments off EnableCustomComments off InternalIdentifier "Shortened" InlinedPrmAccess "Literals" ReqsInCode off UseSimReservedNames off } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" $ObjectID 18 Version "1.13.1" Array { Type "Cell" Dimension 16 Cell "GeneratePreprocessorConditionals" Cell "IncludeMdlTerminateFcn" Cell "CombineOutputUpdateFcns" Cell "SuppressErrorStatus" Cell "ERTCustomFileBanners" Cell "GenerateSampleERTMain" Cell "GenerateTestInterfaces" Cell "ModelStepFunctionPrototypeControlCompliant" Cell "CPPClassGenCompliant" Cell "SupportNonInlinedSFcns" Cell "PurelyIntegerCode" Cell "PortableWordSizes" Cell "SupportComplex" Cell "SupportAbsoluteTime" Cell "SupportContinuousTime" Cell "GenerateAllocFcn" PropName "DisabledProps" } TargetFcnLib "ansi_tfl_table_tmw.mat" TargetLibSuffix "" TargetPreCompLibLocation "" CodeReplacementLibrary "ANSI_C" UtilityFuncGeneration "Auto" ERTMultiwordTypeDef "System defined" ERTMultiwordLength 256 MultiwordLength 2048 GenerateFullHeader on GenerateSampleERTMain off GenerateTestInterfaces off IsPILTarget off ModelReferenceCompliant on ParMdlRefBuildCompliant on CompOptLevelCompliant on ConcurrentExecutionCompliant on IncludeMdlTerminateFcn on GeneratePreprocessorConditionals "Disable all" CombineOutputUpdateFcns off CombineSignalStateStructs off SuppressErrorStatus off ERTFirstTimeCompliant off IncludeFileDelimiter "Auto" ERTCustomFileBanners off SupportAbsoluteTime on LogVarNameModifier "rt_" MatFileLogging on MultiInstanceERTCode off SupportNonFinite on SupportComplex on PurelyIntegerCode off SupportContinuousTime on SupportNonInlinedSFcns on SupportVariableSizeSignals off EnableShiftOperators on ParenthesesLevel "Nominal" MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" ModelStepFunctionPrototypeControlCompliant off CPPClassGenCompliant off AutosarCompliant off GRTInterface on GenerateAllocFcn off UseMalloc off ExtMode off ExtModeStaticAlloc off ExtModeTesting off ExtModeStaticAllocSize 1000000 ExtModeTransport 0 ExtModeMexFile "ext_comm" ExtModeIntrfLevel "Level1" RTWCAPISignals off RTWCAPIParams off RTWCAPIStates off RTWCAPIRootIO off GenerateASAP2 off } PropName "Components" } } hdlcoderui.hdlcc { $ObjectID 19 Version "1.13.1" Description "HDL Coder custom configuration component" Name "HDL Coder" Array { Type "Cell" Dimension 1 Cell " " PropName "HDLConfigFile" } HDLCActiveTab "0" } PropName "Components" } Name "Configuration" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 200, 85, 1080, 715 ] } PropName "ConfigurationSets" } Simulink.ConfigSet { $PropName "ActiveConfigurationSet" $ObjectID 8 } Object { $PropName "DataTransfer" $ObjectID 20 $ClassName "Simulink.GlobalDataTransfer" DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" DefaultExtrapolationMethodBetweenContTasks "None" AutoInsertRateTranBlk [0] } ExplicitPartitioning off BlockDefaults { ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on BlockRotation 0 BlockMirror off } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" UseDisplayTextAsClickCallback off } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } MaskDefaults { SelfModifiable "off" IconFrame "on" IconOpaque "on" RunInitForIconRedraw "off" IconRotate "none" PortRotate "default" IconUnits "autoscale" } MaskParameterDefaults { Evaluate "on" Tunable "on" NeverSave "off" Internal "off" ReadOnly "off" Enabled "on" Visible "on" ToolTip "on" } BlockParameterDefaults { Block { BlockType Demux Outputs "4" DisplayOption "none" BusSelectionMode off } Block { BlockType S-Function FunctionName "system" SFunctionModules "''" PortCounts "[]" SFunctionDeploymentMode off } Block { BlockType Terminator } Block { BlockType ToWorkspace VariableName "simulink_output" MaxDataPoints "1000" Decimation "1" SampleTime "0" SaveFormat "Array" FixptAsFi off NumInputs "1" } } System { Name "RigidbodyMPCCurvePathTracking" Location [747, 133, 1783, 897] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "centimeters" TiledPaperMargins [1.270000, 1.270000, 1.270000, 1.270000] TiledPageScale 1 ShowPageBoundaries off ZoomFactor "175" ReportName "simulink-default.rpt" SIDHighWatermark "140" Block { BlockType Reference Name "CarSim S-Function" SID "85" Ports [0, 1] Position [330, 179, 430, 241] ZOrder 1 Priority "1" AttributesFormatString "Vehicle Code: %" LibraryVersion "1.4" FontName "Arial" FontSize 12 SourceBlock "Solver_SF/CarSim S-Function" SourceType "Vehicle math model library" VehicleCode "i_s" SIMFILE "LEO_RigidbodyMPC3TurnTracking.sim" } Block { BlockType Demux Name "Demux" SID "135" Ports [1, 2] Position [170, 361, 180, 439] ZOrder 30 BlockMirror on ShowName off Outputs "[1 14]" DisplayOption "bar" } Block { BlockType S-Function Name "S-Function" SID "96" Ports [1, 1] Position [260, 366, 500, 434] ZOrder 12 BlockMirror on FunctionName "Main_CurvePathTracking_CVXGEN_Terrain" EnableBusSupport off } Block { BlockType Terminator Name "Terminator" SID "136" Position [95, 405, 130, 435] ZOrder 31 BlockMirror on } Block { BlockType ToWorkspace Name "To Workspace1" SID "115" Ports [1] Position [230, 295, 290, 325] ZOrder 19 VariableName "u" MaxDataPoints "inf" SampleTime "-1" SaveFormat "Structure" } Line { ZOrder 116 SrcBlock "CarSim S-Function" SrcPort 1 Points [104, 0; 0, 190] DstBlock "S-Function" DstPort 1 } Line { ZOrder 130 SrcBlock "S-Function" SrcPort 1 Points [-46, 0] Branch { ZOrder 177 DstBlock "Demux" DstPort 1 } Branch { ZOrder 176 Points [0, -90] DstBlock "To Workspace1" DstPort 1 } } Line { ZOrder 178 SrcBlock "Demux" SrcPort 2 DstBlock "Terminator" DstPort 1 } Line { ZOrder 188 SrcBlock "Demux" SrcPort 1 Points [-17, 0; 0, -170; 177, 0] } } } ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/SaveSimData2Mat.m ================================================ % Sim_Data_Both_ConstantCorneringStiff = Sim_Data_Both_ConstantCornering; % save SimResult_Both.mat Sim_Data; % save SimResult_OnlyBank.mat Sim_Data; % save SimResult_OnlyCurvature.mat Sim_Data; % mu_dot3_50 = u.signals.values(:,:); save SimData_mu_dot3_50.mat mu_dot3_50; ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/SaveWayPointCollect.m ================================================ % WayPoints_Collect = u.signals.values(1:2600,:); % vel, x, y, psi, ax, steering, station, BankL, BankR % save WayPoints_Alt3fromFHWA_Overall_Station_Bank.mat WayPoints_Collect; % MatL = MatL(1:21,:); % save Bankangle_LeftLane_Alt3fromFHWA.mat MatL; % % MatR = MatR(1:21,:); % save eBankangle_RightLan_Alt3fromFHWA.mat MatR; % DataNoConstr =u.signals.values(2:601,:); % save CurveTracking_NoConstr_20.mat DataNoConstr DataWithConstr =u.signals.values(2:601,:); save CurveTracking_WithConstr_20.mat DataWithConstr ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/TestSymbolicModel.m ================================================ syms K_phi D_phi Theta_1 Theta_2 Theta_3 syms M hCG Iz Ix Vel g Calpha_f Calpha_r lf Mint = [ M 0 -M*hCG 0; 0 Iz 0 0; -M*hCG 0 Ix+M*hCG*hCG 0 0 0 0 1]; Nint = [-Theta_1/Vel M*Vel-Theta_2/Vel 0 M*g; %0-->M*g -Theta_2/Vel -Theta_3/Vel 0 0; 0 -M*hCG*Vel D_phi K_phi-M*g*hCG; 0 0 -1 0]; F1int = [-Calpha_f; -lf*Calpha_f; 0; 0]; F2int = [ 0 0; 0 0; K_phi 0; 0 0]; Ac_11 = -Mint\Nint; % 4*4 B1cn_11 = Mint\F1int; % 4*1 B2cn_11 = Mint\F2int; % 4*2 % K_phi = 145330; % D_phi = 4500; % Theta_1 = Calpha_f + Calpha_r; % Theta_2 = lf*Calpha_f - lr*Calpha_r; % Theta_3 = lf*lf*Calpha_f + lr*lr*Calpha_r; % % Gai1 = hCG*Theta_2/(Ix*Vel)- hCG*M*Vel/Ix; % Acn = [ Theta_1/(M*Vel) Theta_2/(M*Vel)-Vel 0 0 0 0; % Theta_2/(Iz*Vel) Theta_3/(Iz*Vel) 0 0 0 0; % hCG*Theta_1/(Ix*Vel) Gai1 -D_phi/Ix (hCG*M*g-K_phi)/Ix 0 0; % 0 0 1 0 0 0; % 1 0 0 0 0 Vel; % 0 1 0 0 0 0 ]; % % B1cn = [-Calpha_f/M; -lf*Calpha_f/Iz; -hCG*Calpha_f/Ix; 0; 0; 0]; % % B2cn = [-g, 0, -M*g*hCG/Ix, 0, 0, 0; % 0, 0, 0, 0, 0, -Vel]'; ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/func_CostWeightingRegulation_QuadSlacks.m ================================================ function [Sl, Ql, Rdun, Wshl, dun, dul] = func_CostWeightingRegulation_QuadSlacks(MPCParameters, CostWeights, Constraints) %% ʼ Ts = MPCParameters.Ts; Tsl = MPCParameters.Tsl; Qephi = CostWeights.Wephi; Qey = CostWeights.Wey; RDdeltaf= CostWeights.Ddeltaf; Sdeltaf = CostWeights.deltaf; Wshar = CostWeights.Wshar; Wshr = CostWeights.Wshr; DPhimax = Constraints.DPhimax; % 0.15 rad ==> 8.5deg Dymax = Constraints.Dymax; armax = Constraints.arlim; % 0.104rad=6deg; %0.15rad=8deg rmax = Constraints.rmax; umax = Constraints.umax; dumax = Constraints.dumax; dun = dumax * Ts; dul = dumax * Tsl; %% Ȩӹһ Qephi_DPhimax2 = Qephi/(DPhimax*DPhimax); Qey_Dymax2 = Qey/(Dymax*Dymax); Ql = diag([0, 0, 0, 0, Qephi_DPhimax2, Qey_Dymax2]); Wshr_rmax2 = Wshr/(rmax*rmax); Wshar_armax2 = Wshar/(armax*armax); Wshl = diag([Wshar_armax2, Wshr_rmax2]); dumax_ts2 = (dumax * dumax* Ts * Ts);% Rdun = RDdeltaf/dumax_ts2; % Rdul = Ts_Tsl * Rdun; Sl = Sdeltaf/(umax * umax); end % end of func_CostWeightingRegulation ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/func_FindBezierControlPointsND.m ================================================ % INPUT % Data: A set of "n" points (p1,p2,...pn). % Each point can be in N-dimension vector space % % (i.e. points to be approximated by Cubic Bezier Curve % e.g. p for 3D p=[0 5 0; % p1 % 1 5 0.5; % p2 % 1.3 4.5 1; % p3 % 2 5 2] % p4 % ptype(optional arg): parameterization type, defualt is chord-length % parameterization. user can pass 'u' or 'uniform', for uniform parameterization. % OUTPUT % Four Control Points: P0, P1, P2, P3, each in N-dimension space % parameterized values i.e. t (optional) % OBJECTIVE % We want to find control points of Bezier Curve that fit the data % p. % SOLUTION % Least Square Method using specified Parameterization (Chord-length % defualt) % (P0 & P3) are end points of a bezier curve segment. So they % are taken equal to first and last point of data. % (P1 & P2) are obtained by partially differeciating the Sum of Square % distance between original data and parametric curve w.r.t P1 & P2 and then % solving for two unknowns P1 & P2. function [P0, P1, P2, P3, tout]= func_FindBezierControlPointsND(p,varargin) %%% Default Values %%% ptype=''; defaultValues = {ptype}; %%% Assign Valus %%% nonemptyIdx = ~cellfun('isempty',varargin); defaultValues(nonemptyIdx) = varargin(nonemptyIdx); [ptype] = deal(defaultValues{:}); %%%------------------------------ n=size(p,1); % number of rows in p if (strcmpi(ptype,'u') || strcmpi(ptype,'uniform') ) [t]=linspace(0,1,n); % uniform parameterized values (normalized b/w 0 to 1) else [t]=ChordLengthNormND(p); % chord-length parameterized values (normalized b/w 0 to 1) end P0=p(1,:); % (at t=0 => P0=p1) P3=p(n,:); % (at t=1 => P3=pn) if (n==1) % if only one value in p P1=P0; % P1=P0 P2=P0; % P2=P0 elseif (n==2) % if only two values in p P1=P0; % P1=P0 P2=P3; % P2=P3 elseif (n==3) % if only three values in p P1=p(2,:); % middle point is P1 P2=p(2,:); % middle point is P2 else A1=0; A2=0; A12=0; C1=0; C2=0; %initialization for i=2:n-1 % for i=1:n %it will give same CPs as i=2:n-1 B0 = (1-t(i))^3 ; % Bezeir Basis B1 = ( 3*t(i)*(1-t(i))^2 ) ; B2 = ( 3*t(i)^2*(1-t(i)) ) ; B3 = t(i)^3 ; A1 = A1 + B1^2; A2 = A2 + B2^2; A12 = A12 + B1*B2; C1 = C1 + B1*( p(i,:) - B0*P0 - B3*P3 ); C2 = C2 + B2*( p(i,:) - B0*P0 - B3*P3 ); end DENOM=(A1*A2-A12*A12); % common denominator for all points if(DENOM==0) P1=P0; P2=P3; else P1=(A2*C1-A12*C2)/DENOM; P2=(A1*C2-A12*C1)/DENOM; end end % END of if-elseif-else conditon if(nargout==5) % if number of output argument=1 tout=t; end % % % -------------------------------- % % % Author: Dr. Murtaza Khan % % % Email : drkhanmurtaza@gmail.com % % % -------------------------------- ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/func_LocalControlInput_TwoTimeScales.m ================================================ function [ U1_Index, U1] = func_LocalControlInput_TwoTimeScales(MPCParameters, VehiclePara, index, fwa) %*********** Parameters Initialization *************************% L = VehiclePara.L; % Np = MPCParameters.Np;% Ԥʱ Ns = MPCParameters.Ns; % Tsplit Ts = MPCParameters.Ts; % Set the sample time of near term Tsl = MPCParameters.Tsl;% Set the sample time of long term % U1_0 = fwa(index+1); % TScale = Tsl/Ts; % U1 = zeros(Np+1,1); % U1_Index = zeros(Np+1,1); % for i = 1:1:Np+1 % if i <= Ns % u0~u_{Ns-1} % U1_Index(i) = index+i; % U1(i) = fwa(index+i); % else % temp = TScale*(i-Ns)+Ns; % U1_Index(i) = index+temp; % U1(i) = fwa(index+temp); % end % end U1 = zeros(Np+1,1); U1_Index = zeros(Np+1,1); for i = 1:1:Np+1 U1_Index(i) = index+i; U1(i) = fwa(index+i); end end ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/func_RLSFilter_Calpha_f.m ================================================ function [y, Bout] = func_RLSFilter_Calpha_f(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_f, Num_f, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_f: is also called the "forgetting" exponential weight factor % Num_f is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent F_f B_f lambda_f Num_f Rinv_f %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_f = d; % delta = delta_n; Num_f = FIR_Num; Rinv_f = delta_n*eye(Num_f); F_f = zeros(Num_f,1); B_f = zeros(Num_f,1); y = 0; Bout = 0; else % Filtering: for J = Num_f:-1:2 F_f(J) = F_f(J-1); end; F_f(1) = f; % Perform the convolution y= F_f'*B_f; error=d-y; % Kalman gains K = Rinv_f*F_f/(lambda_f + F_f'*Rinv_f*F_f); % Update Rinv_f Rinvn = (Rinv_f - K*F_f'*Rinv_f)/lambda_f; % Update the filter coefficients B_f = B_f + K*error; Bout = B_f; Rinv_f = Rinvn; end end ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/func_RLSFilter_Calpha_r.m ================================================ function [y, Bout] = func_RLSFilter_Calpha_r(f, d, FIR_Num, delta_n ) %----------------------------------------------------------% % RLSFilt-Recursive Least-Squares FIR filter demonstration % Usage : % 1) Initialization: % y = RLSFilt('initial', lambda_r, Num_r, delta) % d = Lambda: is the convergence rate parameter. % d = lambda_r: is also called the "forgetting" exponential weight factor % Num_r is the filter length % delta are the initial diagonal R^{-1}(n) matrix elements. % Example: % [y, e] = RLSFilt('initial', .95, 51, 0.01); % Note: RLSFilt returnsy=0 for initialization % 2) Filtering: % [y, b] = RLSFilt(f, d); % where f is a single input value, % d is the desired value, and % y is the computed output value, % b is the coefficient vector. %----------------------------------------------------------% persistent F_r B_r lambda_r Num_r Rinv_r %delta % The following is initialization, and is executed once if (ischar(f) && strcmp(f,'initial')) % Initial lambda_r = d; % delta = delta_n; Num_r = FIR_Num; Rinv_r = delta_n*eye(Num_r); F_r = zeros(Num_r,1); B_r = zeros(Num_r,1); y = 0; Bout = 0; else % Filtering: for J = Num_r:-1:2 F_r(J) = F_r(J-1); end; F_r(1) = f; % Perform the convolution y= F_r'*B_r; error=d-y; % Kalman gains K = Rinv_r*F_r/(lambda_r + F_r'*Rinv_r*F_r); % Update Rinv_r Rinvn = (Rinv_r - K*F_r'*Rinv_r)/lambda_r; % Update the filter coefficients B_r = B_r + K*error; Bout = B_r; Rinv_r = Rinvn; end end ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated.m ================================================ function [WPIndex, RefP, RefU, Uaug, Uaug_0, PrjP, Roll_BaknR] = func_RefTraj_LocalPlanning_TwoTimeScales_Spatial_Integrated( MPCParameters, VehiclePara, WayPoints_Index, WayPoints_Collect, VehStateMeasured) %***************************************************************% % PrjP % ҵȫ·Ͼ복ĵ % ΣݲͬIJsѡһЩвο㲢תϵ¡οϢ[s,x,y,bank] % ٴΣԳϵµx,yBezierֵ߲ĺǺʡ4 % ͬʱԵ·IJsϼ % 󣬽οIJRefP, RefUUaug % Input: % MPCParameters % WayPoints_Index % WayPoints_Collect % VehStateMeasured % % Output: % WPIndex % > 0Normal, WPIndex = index_min; % 0:error,index_min<1 % -1: index_min = WPNum,ȫ·ľͷͣ %---------------------------------------------------------------% % Published by: Kai Liu % Email:leoking1025@gmail.com % My github: https://github.com/leoking99-BIT %***************************************************************% %*********** Parameters Initialization *************************% L = VehiclePara.L; % Np = MPCParameters.Np;% Ԥʱ Ns = MPCParameters.Ns; % Tsplit Ts = MPCParameters.Ts; % Set the sample time of near term Tsl = MPCParameters.Tsl;% Set the sample time of long term %------Measured or Estimated vehicle status Vel = VehStateMeasured.x_dot; % 20; % PosX = VehStateMeasured.X; PosY = VehStateMeasured.Y; PosPsi = VehStateMeasured.phi; Roll_Shad = VehStateMeasured.Roll_Shad;%rad % Ax = VehStateMeasured.Ax; % fwa = VehStateMeasured.fwa; %*********** WaypointData2VehicleCoords ************************% ds = 0.1;%m WPNum = length(WayPoints_Collect(:,1)); %--------ҵο·Ͼ복ĵ--------------------------% Dist_MIN = 1000; index_min = 0; for i=WayPoints_Index:1:WPNum deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; Dist = sqrt(power(deltax,2) + power(deltay,2)); %·㵽ĵľ if Dist < Dist_MIN Dist_MIN = Dist; index_min = i; end end if (index_min < 1) WPIndex = -1; %ûҵ򡣡 else if ( index_min >= WPNum) WPIndex = -2; %ûҵ򡣡 else WPIndex = index_min; end end if( WPIndex > 0 ) % ҵ %% ѡͶӰ㣬 ȫ·ѡο㣬ת¡ͬʱѡsͶӦBank angle %--------------ͨͶӰ--------------------------% [PPx,PPy,ey]=func_GetProjectPoint(WayPoints_Collect(index_min,2),... WayPoints_Collect(index_min,3),... WayPoints_Collect(index_min+1,2),... WayPoints_Collect(index_min+1,3),... PosX,... PosY); Dy = WayPoints_Collect(index_min+1,3) - WayPoints_Collect(index_min,3); Dx = WayPoints_Collect(index_min+1,2) - WayPoints_Collect(index_min,2); Psi0 = atan2(Dy, Dx); epsi = Psi0 - PosPsi; PrjP.ey = -ey; PrjP.epsi = -epsi; PrjP.Velr = Vel; PrjP.xr = PPx; PrjP.yr = PPy; PrjP.psir = Psi0; % Kprj = 0; Ĭ ͶӰΪ㣬Ϊһֱ PrjP.fwar = 0; %atan(Kprj*L); %-------------------i=1:Ns--ݳȫֲο·ѡο-------% Global_x = []; Global_y = []; % ȫ·ѡ· Local_Sx = []; Local_Sy = []; Local_SS = []; Local_SB = []; %Զʱ StepLength_S = Vel * Ts * (Ns+1);% һΪʱ׼ Ns_index = index_min; % %--index_min index_min+1 ֮ͶӰ % deltax = PPx - PosX; % deltay = PPy - PosY; % CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); % CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % Local_Sx = [Local_Sx; CarCoord_x]; % Local_Sy = [Local_Sy; CarCoord_y]; % Global_x = [Global_x; PPx]; % Global_y = [Global_y; PPy]; % % Local_SS = [Local_SS; WayPoints_Collect(i,7)]; % Local_SB = [Local_SB; WayPoints_Collect(i,8)]; % %--index_min+1 % deltax = WayPoints_Collect(index_min+1,2) - PosX; % deltay = WayPoints_Collect(index_min+1,3) - PosY; % CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); % CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % Local_Sx = [Local_Sx; CarCoord_x]; % Local_Sy = [Local_Sy; CarCoord_y]; % Global_x = [Global_x; WayPoints_Collect(index_min+1,2)]; % Global_y = [Global_y; WayPoints_Collect(index_min+1,3)]; % tempDx = WayPoints_Collect(index_min+1,2) - PPx; tempDy = WayPoints_Collect(index_min+1,3) - PPy; Dist_1 = sqrt(power(tempDx,2) + power(tempDy,2)); %·㵽ͶӰľ for i=index_min:1:WPNum %ڲο·ѡο,ͨתתϵ Global_x = [Global_x; WayPoints_Collect(i,2) ]; Global_y = [Global_y; WayPoints_Collect(i,3) ]; %ȡȫ· deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % ȫ·תֲ Local_Sx = [Local_Sx; CarCoord_x]; Local_Sy = [Local_Sy; CarCoord_y]; %洢ֲµĵ Local_SS = [Local_SS; WayPoints_Collect(i,7)]; Local_SBL = [Local_SB; WayPoints_Collect(i,8)]; Local_SBR = [Local_SB; WayPoints_Collect(i,9)]; Ns_index = i-1; Dist_SumS = Dist_1 + WayPoints_Collect(i,7) - WayPoints_Collect(index_min+1,7); if(Dist_SumS >= StepLength_S) break; end end % end of for I=index_min+1:1:WPNum %------------Ns:Np---------% Local_Lx = []; Local_Ly = []; Local_LS = []; Local_LB = []; StepLength_L = Vel * Tsl * (Np-Ns+1);% һΪʱ׼ Dist_SumL = 0; % for i=Ns_index:1:WPNum %ڲο·ѡο,ͨתתϵ Global_x = [Global_x; WayPoints_Collect(i,2) ]; Global_y = [Global_y; WayPoints_Collect(i,3) ]; deltax = WayPoints_Collect(i,2) - PosX; deltay = WayPoints_Collect(i,3) - PosY; CarCoord_x = deltax * cos(PosPsi) + deltay * sin(PosPsi); CarCoord_y = deltay * cos(PosPsi) - deltax * sin(PosPsi); % תֲ Local_Lx = [Local_Lx; CarCoord_x]; Local_Ly = [Local_Ly; CarCoord_y]; % תֲ Local_LS = [Local_LS; WayPoints_Collect(i,7)]; Local_LBL = [Local_LB; WayPoints_Collect(i,8)]; Local_LBR = [Local_LB; WayPoints_Collect(i,9)]; Dist_SumL = WayPoints_Collect(i,7) - WayPoints_Collect(Ns_index, 7 ); if(Dist_SumL >= StepLength_L) break; end end % end of for i=Ns_index+1:1:WPNum %% %------------ʽ------------% if(Dist_SumS < StepLength_S) || (Dist_SumL < StepLength_L) WPIndex = 0; %ûҵ򡣡 % reaching the end ... %--ûпȫ·󼸸ʱ걸пܻᱨ else %----Զ̲BezierϣŵڿԶ-----% MatS(:,1)=Local_Sx; MatS(:,2)=Local_Sy; [ps0,ps1,ps2,ps3,ts] = func_FindBezierControlPointsND(MatS,'u'); %uniform parameterization Scale = round(Vel*Ts/ds); tlocS = linspace(0,1,Scale*(Ns+1)+1); %㵽յȾ=0.1m,Ns+1ΣScale*Ns+1+1 MatLocalInterpS = func_bezierInterp( ps0, ps1, ps2, ps3,tlocS); % ֵ߲õ MatSB(:,1) = Local_SS; MatSB(:,2) = Local_SBR; [psb0,psb1,psb2,psb3,tsb] = func_FindBezierControlPointsND(MatSB,'u'); %uniform parameterization tlocS = linspace(0,1,Ns+2); %㵽յȾ,Np+1ΣNp+2 MatLocalInterpSB = func_bezierInterp( psb0,psb1,psb2,psb3,tlocS); % ֵ߲õ Bezier_Sx = zeros(Ns,1); Bezier_Sy = zeros(Ns,1); Bezier_Spsi = zeros(Ns,1); Bezier_SK = zeros(Ns,1); Bezier_Sphi_t = zeros(Ns,1); for i = 2:1:length(MatLocalInterpSB(:,1))-1 Bezier_Sx(i-1) = MatLocalInterpS(Scale*(i-1),1); Bezier_Sy(i-1) = MatLocalInterpS(Scale*(i-1),2); tempDx = MatLocalInterpS(Scale*(i-1)+1,1) - MatLocalInterpS(Scale*(i-1),1); tempDy = MatLocalInterpS(Scale*(i-1)+1,2) - MatLocalInterpS(Scale*(i-1),2); Bezier_Spsi(i-1) = atan2(tempDy, tempDx); % Bezier_SK(i-1) = func_CalPathCurve(MatLocalInterpS(Scale*(i-1)-1,1),... % XA % MatLocalInterpS(Scale*(i-1)-1,2),... % YA % MatLocalInterpS(Scale*(i-1),1),... % XB % MatLocalInterpS(Scale*(i-1),2),... % YB % MatLocalInterpS(Scale*(i-1)+1,1),... % XC % MatLocalInterpS(Scale*(i-1)+1,2)); % YC % Bezier_SK(i-1) = func_CalPathCurve_Patent(MatLocalInterpS(Scale*(i-1)-1,1),... % XA MatLocalInterpS(Scale*(i-1)-1,2),... % YA MatLocalInterpS(Scale*(i-1),1),... % XB MatLocalInterpS(Scale*(i-1),2),... % YB MatLocalInterpS(Scale*(i-1)+1,1),... % XC MatLocalInterpS(Scale*(i-1)+1,2)); % YC % % Bezier_SK(i-1) = func_CalPathCurve_YU(MatLocalInterpS(Scale*(i-1)-1,1),... % XA % MatLocalInterpS(Scale*(i-1)-1,2),... % YA % MatLocalInterpS(Scale*(i-1),1),... % XB % MatLocalInterpS(Scale*(i-1),2),... % YB % MatLocalInterpS(Scale*(i-1)+1,1),... % XC % MatLocalInterpS(Scale*(i-1)+1,2)); % YC Bezier_Sphi_t(i-1) = MatLocalInterpSB(i,2); end % end of for i = 2:1:length(MatLocalInterp(:,1))-1 %----Գ Bezier-----% MatL(:,1)=Local_Lx; MatL(:,2)=Local_Ly; [pL0,pL1,pL2,pL3,tL] = func_FindBezierControlPointsND(MatL,'u'); %uniform parameterization Scale = round(Vel*Tsl/ds); tlocL = linspace(0,1,Scale*(Np-Ns+1)+1); %㵽յȾ,Np-Ns+1ΣScale*Np-Ns+1+1=Scale(Np-Ns)+11 MatLocalInterpL = func_bezierInterp( pL0, pL1, pL2, pL3,tlocL); % ֵ߲õ MatLB(:,1)=Local_LS; MatLB(:,2)=Local_LBR; [ps0,ps1,ps2,ps3,tL] = func_FindBezierControlPointsND(MatLB,'u'); %uniform parameterization tlocL = linspace(0,1,Np-Ns+2); %㵽յȾ,Np+1ΣNp+2 MatLocalInterpLB = func_bezierInterp( ps0, ps1, ps2, ps3,tlocL); % ֵ߲õ Bezier_Lx = zeros(Np-Ns,1); Bezier_Ly = zeros(Np-Ns,1); Bezier_Lpsi = zeros(Np-Ns,1); Bezier_LK = zeros(Np-Ns,1); Bezier_Lphi_t = zeros(Np-Ns,1); for i = 2:1:length(MatLocalInterpLB(:,1))-1 Bezier_Lx(i-1) = MatLocalInterpL(Scale*(i-1),1); Bezier_Ly(i-1) = MatLocalInterpL(Scale*(i-1),2); tempDx = MatLocalInterpL(Scale*(i-1)+1,1) - MatLocalInterpL(Scale*(i-1),1); tempDy = MatLocalInterpL(Scale*(i-1)+1,2) - MatLocalInterpL(Scale*(i-1),2); Bezier_Lpsi(i-1) = atan2(tempDy, tempDx); % Bezier_LK(i-1) = func_CalPathCurve(MatLocalInterpL(Scale*(i-1)-1,1),... % XA % MatLocalInterpL(Scale*(i-1)-1,2),... % YA % MatLocalInterpL(Scale*(i-1),1),... % XB % MatLocalInterpL(Scale*(i-1),2),... % YB % MatLocalInterpL(Scale*(i-1)+1,1),... % XC % MatLocalInterpL(Scale*(i-1)+1,2)); % YC % Bezier_LK(i-1) = func_CalPathCurve_Patent(MatLocalInterpL(Scale*(i-1)-1,1),... % XA MatLocalInterpL(Scale*(i-1)-1,2),... % YA MatLocalInterpL(Scale*(i-1),1),... % XB MatLocalInterpL(Scale*(i-1),2),... % YB MatLocalInterpL(Scale*(i-1)+1,1),... % XC MatLocalInterpL(Scale*(i-1)+1,2)); % YC % % Bezier_LK(i-1) = func_CalPathCurve_YU(MatLocalInterpL(Scale*(i-1)-1,1),... % XA % MatLocalInterpL(Scale*(i-1)-1,2),... % YA % MatLocalInterpL(Scale*(i-1),1),... % XB % MatLocalInterpL(Scale*(i-1),2),... % YB % MatLocalInterpL(Scale*(i-1)+1,1),... % XC % MatLocalInterpL(Scale*(i-1)+1,2)); % YC Bezier_Lphi_t(i-1) = MatLocalInterpLB(i,2); end % end of for i = 2:1:length(MatLocalInterp(:,1))-1 %% RefP = cell(Np,1); RefU = cell(Np,1); for i = 1:1:Np if i <= Ns RefU{i,1} = atan(Bezier_SK(i)*L); RefP{i,1} = [Bezier_Sx(i); Bezier_Sy(i); Bezier_Spsi(i)]; else RefU{i,1} = atan(Bezier_LK(i-Ns)*L); RefP{i,1} = [Bezier_Lx(i-Ns); Bezier_Ly(i-Ns); Bezier_Lpsi(i-Ns)]; end end Uaug = cell(Np,1); Uaug_0 = [0;0]; % [MatLocalInterpSB(1,2); 0]; % for i = 1:1:Np %ǵ·ʺǵӰ if i <= Ns Uaug{i,1} = [0;0]; else Uaug{i,1} = [0;0]; end end % Uaug_0 = [0; Bezier_SK(1)]; % [0;0]; % % for i = 1:1:Np %ֻǵ· % if i <= Ns % Uaug{i,1} = [0; Bezier_SK(i)]; % else % Uaug{i,1} = [0; Bezier_LK(i-Ns)]; % end % end % Uaug_0 = [Roll_Shad; 0]; % [MatLocalInterpSB(1,2); 0]; % % for i = 1:1:Np %ֻ·ǵӰ % if i <= Ns % Uaug{i,1} = [Bezier_Sphi_t(i); 0]; % else % Uaug{i,1} = [Bezier_Lphi_t(i-Ns); 0]; % end % end % Uaug_0 = [Roll_Shad; Bezier_SK(1)]; %[MatLocalInterpSB(1,2); Bezier_SK(1)]; % % for i = 1:1:Np %ǵ·ʺǵӰ % if i <= Ns % Uaug{i,1} = [Bezier_Sphi_t(i); Bezier_SK(i)]; % else % Uaug{i,1} = [Bezier_Lphi_t(i-Ns); Bezier_LK(i-Ns)]; % end % end Roll_BaknR = MatLocalInterpSB(1,2); end % end of if(Dist_SumS < StepLength_S) || (Dist_SumL < StepLength_L) end % end of if( WPIndex > 0 ) % ҵ % %--------Plot local points and the fitted polynomial----------------% % figure % plot(Local_Sx,Local_Sy,'b*'); % hold on % plot(Local_Lx,Local_Ly,'bo'); % plot(Global_x,Global_y,'k.'); % plot(Bezier_Sx,Bezier_Sy,'r+'); % plot(Bezier_Lx,Bezier_Ly,'ro'); end % end of function %==============================================================% % sub functions %==============================================================% function K=GetPathHeading(Xb,Yb,Xn,Yn) %***Way I.Heading Angle [-pi,pi]֮ *******% AngleY=Yn-Yb; AngleX=Xn-Xb; K= atan2(AngleY, AngleX); %***Way II. Heading Angle 0~2*pi֮ *******% % AngleY=Yn-Yb; % AngleX=Xn-Xb; % % if Xb==Xn % if Yn>Yb % K=pi/2; % else % K=3*pi/2; % end % else % if Yb==Yn % if Xn>Xb % K=0; % else % K=pi; % end % else % K=atan(AngleY/AngleX); % end % end % % %****K,ʹ֮0~360֮*****% % if (AngleY>0&&AngleX>0)%һ % K=K; % elseif (AngleY>0&&AngleX<0)||(AngleY<0&&AngleX<0)%ڶ % K=K+pi; % else if (AngleY<0&&AngleX>0)% % K=K+2*pi; % else % K=K; % end % end end % end of function function [PPx,PPy,de]=func_GetProjectPoint(Xb,Yb,Xn,Yn,Xc,Yc) %-------------------------------------------------------% % de㵽ֱߵľ벻ͬ෴ % 㵽ֱߵľ룺Ҹ %-------------------------------------------------------% if Xn==Xb x=Xn; y=Yc; de=Xc-Xn; else if Yb==Yn x=Xc; y=Yn; de=Yn-Yc; else DifX=Xn-Xb; DifY=Yn-Yb; Kindex=DifY/DifX; bindex=Yn-Kindex*Xn; K=(-1)*1/Kindex; b=Yc-K*Xc; x=(bindex-b)/(K-Kindex); y=K*x+b; de=(Kindex*Xc+bindex-Yc)/sqrt(1+Kindex*Kindex); end end PPx=x; PPy=y; end function K=func_CalPathCurve(XA,YA,XB,YB,XC,YC) %% ͨԲģԲĵһľ %ֱֱߵб if XB==XA mr=inf; else mr=(YB-YA)/(XB-XA); end if XC==XB mt=inf; else mt=(YC-YB)/(XC-XB); end %ݲͬб,mtdao=1/mt;mrsubmt=1/(2*(mr-mt)); if mr==mt Rff=inf; else if mt==0 if mr==inf Rff=sqrt(power((XA-XC),2)+power((YA-YC),2))/2; else mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YA)/2-(Xff-(XB+XA)/2)/mr; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end elseif mt==inf if mr==0 Rff=sqrt(power((XA-XC),2)+power((YA-YC),2))/2; else Yff=(YB+YC)/2; Xff=(XA+XB)/2-mr*(YC-YA)/2; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end else mtdao=1/mt; if mr==0 mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YC)/2-mtdao*(Xff-(XB+XC)/2); Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); elseif mr==inf Yff=(YA+YB)/2; Xff=(XB+XC)/2+mt*(YA-YC)/2; Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); else mrsubmt=1/(2*(mr-mt)); Xff=(mr*mt*(YC-YA)+mr*(XB+XC)-mt*mrsubmt*(XA+XB)); Yff=(YB+YC)/2-mtdao*(Xff-(XB+XC)/2); Rff=sqrt(power((XA-Xff),2)+power((YA-Yff),2)); end end end %% %ͨжϺǵı仯жʵ K1=GetPathHeading(XA,YA,XB,YB); K2=GetPathHeading(XB,YB,XC,YC); if K2>K1 %нDZʱ Rff=Rff; else %нDZС˳ʱ룬K2M*g -Theta_2/Vel -Theta_3/Vel 0 0; 0 -M*hCG*Vel D_phi K_phi-M*g*hCG; 0 0 -1 0]; F1int = [-Calpha_f; -lf*Calpha_f; 0; 0]; F2int = [ 0 0; 0 0; K_phi 0; %-M*g*hCG 0 0]; % M_inv = inv(M); % Ac_11 = M_inv*N; Ac_11 = -Mint\Nint; % 4*4 B1cn_11 = Mint\F1int; % 4*1 B2cn_11 = Mint\F2int; % 4*2 Ac_12 = [0 0; 0 0; 0 0; 0 0]; Ac_21 = [1 0 0 0; 0 1 0 0]; Ac_22 = [0 Vel; 0 0]; B1cn_12 = [ 0; 0]; B2cn_12 = [ 0, 0; 0, -Vel]; Acn = [Ac_11 Ac_12; Ac_21 Ac_22]; B1cn = [B1cn_11; B1cn_12]; B2cn = [B2cn_11; B2cn_12]; %% ZOH/FOH As = eye(Nx) + Ts * Acn; Bs1 = Ts * B1cn; Bs2 = Ts * B2cn; AcnTsl = Tsl*Acn; Al = eye(Nx) + AcnTsl + 0.5*AcnTsl*AcnTsl + (AcnTsl*AcnTsl*AcnTsl)/6; %; % Baug = [B1cn, B2cn]; BaugTsl = Baug*Tsl; Gail1 = BaugTsl + 0.5*(AcnTsl * BaugTsl)+ (AcnTsl * AcnTsl * BaugTsl)/6;%; % Gail2 = 0.5*BaugTsl + (AcnTsl * BaugTsl)/6;%;% B1l = Gail1 - Gail2; B2l = Gail2; Bl11 = B1l(:,1); Bl12 = B1l(:,2:3); Bl21 = B2l(:,1); Bl22 = B2l(:,2:3); StateSpaceModel.Acn = Acn; StateSpaceModel.B1cn = B1cn; StateSpaceModel.B2cn = B2cn; StateSpaceModel.As = As; StateSpaceModel.Bs1 = Bs1; StateSpaceModel.Bs2 = Bs2; StateSpaceModel.Al = Al; StateSpaceModel.Bl11 = Bl11; StateSpaceModel.Bl12 = Bl12; StateSpaceModel.Bl21 = Bl21; StateSpaceModel.Bl22 = Bl22; end % end of func_SpatialDynamicalModel ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/func_SafedrivingEnvelope_SL.m ================================================ function [Envelope] = func_SafedrivingEnvelope_SL(VehiclePara, MPCParameters, Constraints, StateSpaceModel, Vel, CarHat, EY_MAX, EY_Min) % Generating safe driving envelope h = VehiclePara.hCG; Tr = VehiclePara.Tr; lf = VehiclePara.Lf; lr = VehiclePara.Lr; l = VehiclePara.L; M = VehiclePara.m; g = VehiclePara.g; mu = VehiclePara.mu; Iz = VehiclePara.Iz; %IΪZתв Ix = VehiclePara.Ix; %IΪZתв Np = MPCParameters.Np; Ns = MPCParameters.Ns; Alphar_lim = Constraints.arlim; %-----------environmental envelope-------------% Envelope.Henv = [0 0 0 0 1 0; 0 0 0 0 -1 0]; Envelope.Genv = cell(Np,1); Dist_temp = 0.8; % dw/2 + dbuffer; for i = 1:1:Np Envelope.Genv{i,1} = [EY_MAX(i) - Dist_temp; -EY_Min(i) - Dist_temp]; end %-----------stable handling envelope-------------% % for j = 1:1:Np Envelope.Hsh = [1/Vel -lr/Vel 0 0 0 0; 0 1 0 0 0 0]; Envelope.Psh = [0 0; g/Vel 0]; r_ssmax = -CarHat*Alphar_lim*(1+lr/lf)/(M*Vel); Envelope.Gsh = [Alphar_lim r_ssmax]'; % end %-----------zero moment point -------------% Acn = StateSpaceModel.Acn; % 8*8 B1cn = StateSpaceModel.B1cn; %8*1 B2cn = StateSpaceModel.B2cn;%8*2 % N1 = [h/g 0 -Ix/(M*g) 0 0 0]; % N2 = [0 h*Vel/g 0 h 0 0]; % % N3 = [h 0]; N1 = [2*h/(g*Tr) 0 -2*(M*h*h+Ix)/(M*g*Tr) 0 0 0]; N2 = [0 2*h*Vel/(g*Tr) 0 2*h/Tr 0 0]; % % N3 = [2*h/Tr 0]; H_yzmp = N1*Acn + N2;%1*8 P_yzmp1 = N1*B1cn; %1*1 P_yzmp2 = N1*B2cn; % + N3;%1*2 Envelope.H_yzmp = H_yzmp; Envelope.P_yzmp1 = P_yzmp1; Envelope.P_yzmp2 = P_yzmp2; end % end of func_SafedrivingEnvelope ================================================ FILE: Chapter-8/chapter8_rollover_prevention_terrain/func_bezierInterp.m ================================================ % Bezier interpolation for given four control points. % Each control point can be in N-Dimensional vector space. % Input: % P0,P1,P2,P3: four control points of bezier curve, % control points can have any number of coordinates % t(optional arg):vector that holds paramter t values b/w 0 and 1 at which % bezier curve is evaluated (default 101 values between 0 % and 1.) % Output: % Q evaluated values of bezier curves. Number of columns of Q are equal to % number of coordinates in control point. For example for 2-D, Q has two % columns. Column 1 for x value and column 2 for y values. Similarly for % 3-D, Q will have three columns function Q=func_bezierInterp(P0,P1,P2,P3,varargin) %%% Default Values %%% t=linspace(0,1,101); % uniform parameterization defaultValues = {t}; %%% Assign Valus %%% nonemptyIdx = ~cellfun('isempty',varargin); defaultValues(nonemptyIdx) = varargin(nonemptyIdx); [t] = deal(defaultValues{:}); % % -------------------------------- M=[-1 3 -3 1; 3 -6 3 0; -3 3 0 0; 1 0 0 0]; for k=1:length(t) Q(k,:)=[t(k)^3 t(k)^2 t(k) 1]*M*[P0;P1;P2;P3]; end % % Ref: Mathematical Elements of Computer Graphics by % % David F. Rogers and J. Alan Adams (pg. 296) % % -------------------------------- % % OR % % Equation of Bezier Curve, utilizes Horner's rule for efficient computation. % % Q(t)=(-P0 + 3*(P1-P2) + P3)*t^3 + 3*(P0-2*P1+P2)*t^2 + 3*(P1-P0)*t + Px0 % c3 = -P0 + 3*(P1-P2) + P3; % c2 = 3*(P0 - (2*P1)+P2); % c1 = 3*(P1 - P0); % c0 = P0; % for k=1:length(t) % Q(k,:)=((c3*t(k)+c2)*t(k)+c1)*t(k) + c0; % end % % % -------------------------------- % % % Author: Dr. Murtaza Khan % % % Email : drkhanmurtaza@gmail.com % % % -------------------------------- ================================================ FILE: Publications_list ================================================ # My publications This folder holds my publications. For more details, please refer to my personal homepage [https://leoking99-bit.github.io/](https://leoking99-bit.github.io/) ## PhD Thessis of Kai Liu * 刘凯. 基于模型预测的无人驾驶车辆操纵稳定性控制研究[D]. 北京:北京理工大学, 2019. ## Pub-List of Kai Liu * [1] 刘凯, 龚建伟, 陈舒平, 张玉, 陈慧岩. 高速无人驾驶车辆最优运动规划与控制的动力学建模分析 [J]. 机械工程学报, 2018, 54(14), 141-151. * [2] 刘凯, 陈慧岩, 龚建伟, 陈舒平, 张玉. 高速无人驾驶车辆的操控稳定性研究 [J]. 汽车工程, 2018. * [3] Kai Liu, Jianwei Gong, Shuping Chen, Yu Zhang and Huiyan Chen. Model Predictive Stabilization Control of High-speed Autonomous Ground Vehicles Considering the Effect of Road Topography [J]. Applied Sciences, 2018, 8(5), 822-838. * [4] 刘凯, 陈慧岩, 龚建伟, 陈舒平. 越野环境下智能车辆的动力学建模与横向控制 [J]. 北京理工大学学报, 2018. * [5] Kai Liu, Jianwei Gong, Arda Kurt, Huiyan Chen and Umit Ozguner. Dynamic Modeling and Control of High-speed Automated Vehicles for Lane Change Maneuver [J]. IEEE Transactions on Intelligent Vehicles, 2018, 3(3), 329-339. * [6] Kai Liu, Jianwei Gong, Arda Kurt, Huiyan Chen and Umit Ozguner. A Model Predictive-based Approach for Longitudinal Control in Autonomous Driving with Lateral Interruptions [C]. IEEE Intelligent Vehicles Symposium, 2017, 359-364. * [7] Kai Liu, Jianwei Gong, Chao Lu, Yu Zhang and Huiyan Chen. A Pseudospectral Strategy for Lane Change Maneuver of Automated Vehicles on the Highway [C]. 18th COTA International Conference of Transportation Professionals, 2018, 134-145. * [8] 徐威, 刘凯, 孙银建, 姜岩, 龚建伟. 开放式模块化的无人平台体系结构 [J]. 计算机应用, 2014, 301-305E. * [9] 龚建伟, 徐威, 姜岩, 刘凯, 等. Multi-constrained model predictive control for autonomous ground vehicle trajectory tracking [J]. Journal of Beijing Institute of Technology, 2015, 24(4), 441-448. * [10] 胡家铭, 胡宇辉, 陈慧岩, 刘凯. 基于模型预测控制的无人驾驶履带车辆轨迹跟踪[J]. 兵工学报, 2018. * [11] Yu Zhang, Huiyan Chen, Steven L. Waslander, Jianwei Gong, Guangming Xiong, Tian Yang, and Kai Liu. Hybrid Trajectory Planning for Autonomous Driving in Highly Constrained Environments [J]. IEEE Access, 2018, 6, 32800-32819. * [12] Yu Zhang, Huiyan Chen, Steven L. Waslander, Sheng Zhang, Tian Yang, Guangming Xiong, and Kai Liu. Toward a More Complete, Flexible, and Safer Speed Planning for Autonomous Driving via Convex Optimization [J]. Sensors, 2018, 18(7), 2185-2213. * [13] Jiaming Hu, Yuhui Hu, Kai Liu, Wei Wang, Huiyan Chen. Off-road Terrain Path Planning for Differential Steering Vehicles Based on Artificial Potential Field Gradient [C]. ITSC, 2019. * [14] 王威, 陈慧岩, 马建昊, 刘凯, 龚建伟. 基于Frenet坐标系和控制延时补偿的智能车辆路径跟踪[J].兵工学报,2019,40(11):2336-2351. ================================================ FILE: README.md ================================================ # 无人驾驶车辆模型预测控制(第2版) 无人驾驶车辆模型预测控制(第2版)随书仿真程序及扩展学习资料. This repo holds the Simulink/CarSim codes for examples of Self-driving Vehicles and Model Predictive Contorl (2ed edition). ## Contents 1. Chapter-2: Vehicle model validation, including 4 examples * tire model validation * kinematic model validation * dynamic model validation 2. Chapter-3: MPC for longitudinal control, including 4 examples * a simple example using MPC toolbox for speed tracking demo * MPC for speed tracking control with du as input * Extended: MPC for speed tracking control with u as input * Extended: MPC for Adaptive Cruise Control, involve multi-vehicle joint simulation 3. Chapter-4: MPC use kinematic model for path tracking, including 4 examples * Matlab code for given path tracking * Simulink/CarSim for given path tracking * Adaptive path fitting with 3rd-order Bezier curve * MPC for general path tracking 4. Chapter-5: MPC use dynamic model for Active Frontwheel Steering (AFS), including 2 examples * Tire Cornering Stiffness Estimation use RLS method * MPC for AFS 5. Chapter-6: MPC for path tracking with local planning, including 1 examples * MPC for obstacle avoidance in local planning, then MPC for tracking 6. Chapter-7: MPC for handlig stability of high-speed self-driving Vehicles, including 3 examples * Different qp-solver compare test * MPC for high-speed self-driving vehicles, ignore handling stability * MPC for high-speed self-driving vehicles consider handling stability 7. Chapter-8:MPC for rollover prevention consider road terrain information, including 2 examples * Zero-Moment-Point based Rollover criteria validation * MPC for path tracking considering road terrain and rollover prevention ## Relatives links IVRC: [Link for Inteligent Vehicle Research Center (IVRC) of BIT](https://github.com/bit-ivrc) qpOASES: [Link for qpOASES](https://github.com/leoking99-BIT/qpOASES) OSQP: [Link for OSQP](https://github.com/leoking99-BIT/osqp) ## Bug reports and support Please report any issues via the [Github issue tracker](https://github.com/leoking99-BIT/Self-driving-Vehicles-and-Model-Predictive-Control/issues). All types of issues are welcome, including bug reports, documentation typos, feature requests and so on. ## Contact Me Personal homepage: [https://leoking99-bit.github.io/](https://leoking99-bit.github.io/) Email: leoking1025@gmail.com If you have any questions or suggestions, please don't hesitate to contact me. Any advices and comments would be highly appreciated.