/* * File: HVAC_model.c * * Code generated for Simulink model 'HVAC_model'. * * Model version : 1.604 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 * C/C++ source code generated on : Fri Feb 13 13:56:38 2026 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M * Emulation hardware selection: * Differs from embedded hardware (MATLAB Host) * Code generation objectives: Unspecified * Validation result: Not run */ #include "HVAC_model.h" #include #include "HVAC_model_private.h" #include "HVAC_model_types.h" #include #include /* Exported block states */ ActuatorCmdBus Actuator_Ch0_Command_Model;/* '/Data Store Memory15' */ CmdBusStatus Status_Sensor_Model; /* '/Data Store Memory' */ CmdBusError CCU_Errors_Model; /* '/Data Store Memory3' */ /* Block signals (default storage) */ B rtB; /* Block states (default storage) */ DW rtDW; /* Real-time model */ static RT_MODEL rtM_; RT_MODEL *const rtM = &rtM_; int16_t look1_iu16tdIs16_binlcs(uint16_t u0, const uint16_t bp0[], const double table[], uint32_t maxIndex) { double frac; double yL_0d0; int32_t tmp_1; uint32_t iLeft; int16_t tmp; int16_t tmp_0; /* Column-major Lookup 1-D Search method: 'binary' Use previous index: 'off' Interpolation method: 'Linear point-slope' Extrapolation method: 'Clip' Use last breakpoint for index at or above upper limit: 'off' Remove protection against out-of-range input in generated code: 'off' */ /* Prelookup - Index and Fraction Index Search method: 'binary' Extrapolation method: 'Clip' Use previous index: 'off' Use last breakpoint for index at or above upper limit: 'off' Remove protection against out-of-range input in generated code: 'off' */ if (u0 <= bp0[0U]) { iLeft = 0U; frac = 0.0; } else if (u0 < bp0[maxIndex]) { uint32_t bpIdx; uint32_t iRght; /* Binary Search */ bpIdx = maxIndex >> 1U; iLeft = 0U; iRght = maxIndex; while (iRght - iLeft > 1U) { if (u0 < bp0[bpIdx]) { iRght = bpIdx; } else { iLeft = bpIdx; } bpIdx = (iRght + iLeft) >> 1U; } uint16_t bpLeftVar; bpLeftVar = bp0[iLeft]; frac = (double)((uint32_t)u0 - bpLeftVar) / (double)((uint32_t)bp0[iLeft + 1U] - bpLeftVar); } else { iLeft = maxIndex - 1U; frac = 1.0; } /* Column-major Interpolation 1-D Interpolation method: 'Linear point-slope' Use last breakpoint for index at or above upper limit: 'off' Overflow mode: 'saturate' */ yL_0d0 = table[iLeft]; if (yL_0d0 < 32768.0) { if (yL_0d0 >= -32768.0) { tmp = (int16_t)yL_0d0; } else { tmp = INT16_MIN; } } else { tmp = INT16_MAX; } frac *= table[iLeft + 1U] - yL_0d0; if (frac < 32768.0) { if (frac >= -32768.0) { tmp_0 = (int16_t)frac; } else { tmp_0 = INT16_MIN; } } else { tmp_0 = INT16_MAX; } tmp_1 = tmp + tmp_0; if (tmp_1 > 32767) { tmp_1 = 32767; } else if (tmp_1 < -32768) { tmp_1 = -32768; } return (int16_t)tmp_1; } /* * Output and update for action system: * '/If Action Subsystem3' * '/If Action Subsystem3' * '/If Action Subsystem3' * '/If Action Subsystem3' * '/If Action Subsystem3' * '/If Action Subsystem3' * '/If Action Subsystem3' */ void IfActionSubsystem3(int8_t rtu_stepIn, int8_t *rty_step) { int32_t i; /* BusCreator: '/Bus Creator' incorporates: * DataStoreWrite: '/Data Store Write' * SignalConversion generated from: '/Bus Creator' * */ for (i = 0; i < 9; i++) { Actuator_Ch0_Command_Model.POS[i] = 0U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 0U; Actuator_Ch0_Command_Model.COM[i] = 0U; Actuator_Ch0_Command_Model.Stall_SET[i] = 0U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 0U; Actuator_Ch0_Command_Model.Speed_SET[i] = 0U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; } /* End of BusCreator: '/Bus Creator' */ /* SignalConversion generated from: '/stepIn' */ *rty_step = rtu_stepIn; } /* * Output and update for atomic system: * '/MAX POSITION' * '/MAX POSITION' */ void MAXPOSITION(int16_t rty_y[9]) { int32_t i; /* : y = step; */ /* : fprintf('SIMULINK POSITION '); */ printf("SIMULINK POSITION "); fflush(stdout); /* : for i = 1:numel(step) */ for (i = 0; i < 9; i++) { /* : fprintf('%d ', int16(step(i))); */ printf("%d ", rty_y[i]); fflush(stdout); } /* : fprintf('\n'); */ printf("\n"); fflush(stdout); } /* * Output and update for atomic system: * '/MAX POSITION1' * '/MAX POSITION1' */ void MAXPOSITION1(int8_t rty_y[9]) { int32_t i; /* : y = step; */ /* : fprintf('SIMULINK Stall_Slave '); */ printf("SIMULINK Stall_Slave "); fflush(stdout); /* : for i = 1:numel(step) */ for (i = 0; i < 9; i++) { /* : fprintf('%d ', int16(step(i))); */ printf("%d ", (int16_t)rty_y[i]); fflush(stdout); } /* : fprintf('\n'); */ printf("\n"); fflush(stdout); } /* * Output and update for atomic system: * '/MAX POSITION' * '/MAX POSITION' */ void MAXPOSITION_l(const double rtu_step[9], double rty_y[9]) { int32_t i; /* : y = step; */ memcpy(&rty_y[0], &rtu_step[0], 9U * sizeof(double)); /* : fprintf('SIMULINK MAX POSITION '); */ printf("SIMULINK MAX POSITION "); fflush(stdout); /* : for i = 1:numel(step) */ for (i = 0; i < 9; i++) { /* : fprintf('%f ', step(i)); */ printf("%f ", rtu_step[i]); fflush(stdout); } /* : fprintf('\n'); */ printf("\n"); fflush(stdout); } /* Model step function */ void HVAC_model_step(void) { double rtb_Divide1_j[9]; double rtb_y_gj[9]; double rtb_Divide1_n; int32_t i; int16_t rtb_y_ff[9]; int16_t rtb_Switch_f; int8_t rtb_y_b[9]; int8_t rtb_Switch_l4; bool rtb_RelationalOperator_j[9]; bool rtb_FailCond; bool rtb_LogicalOperator1; bool rtb_LogicalOperator1_b; bool rtb_LogicalOperator1_f; bool rtb_LogicalOperator1_i; bool rtb_LogicalOperator1_k; bool rtb_LogicalOperator1_ln; bool rtb_LogicalOperator1_n; bool tmp; /* Product: '/Divide1' incorporates: * Constant: '/Constant' * Constant: '/Constant1' * DataStoreRead: '/Data Store Read1' * Product: '/Divide' */ rtb_Divide1_n = (double)rtDW.ADC_Data_Model.Sensor_Ambient_Temp / 4095.0 * 5.0; /* Logic: '/Logical Operator' incorporates: * Constant: '/Constant' * Constant: '/Constant' * RelationalOperator: '/Compare' * RelationalOperator: '/Compare' */ rtb_FailCond = ((rtb_Divide1_n < 0.1) || (rtb_Divide1_n > 4.9)); /* Logic: '/Logical Operator1' incorporates: * Constant: '/Constant' * DataStoreRead: '/Data Store Read4' * RelationalOperator: '/Compare' * Sum: '/Subtract' * UnitDelay: '/t_start_delay_private ' */ rtb_LogicalOperator1 = (rtb_FailCond && (rtDW.t_now - rtDW.t_start_delay_private_DSTATE >= 3000U)); /* Switch: '/Switch' incorporates: * Constant: '/Constant2' * DataStoreRead: '/Data Store Read1' * Lookup_n-D: '/1-D Lookup Table' */ if (rtb_LogicalOperator1) { rtb_Switch_f = 100; } else { rtb_Switch_f = look1_iu16tdIs16_binlcs (rtDW.ADC_Data_Model.Sensor_Ambient_Temp, rtConstP.pooled15, rtConstP.uDLookupTable_tableData, 1023U); } /* End of Switch: '/Switch' */ /* MATLAB Function: '/Write Ambient' */ /* : fprintf('Ambient = %d * 0.1 C\n',Ambient); */ printf("Ambient = %d * 0.1 C\n", rtb_Switch_f); fflush(stdout); /* MATLAB Function: '/Write ERROR' incorporates: * DataStoreRead: '/Data Store Read1' */ /* : if(AmbientErr) */ if (rtb_LogicalOperator1) { /* : fprintf('CCU_Body_Err.CCU_AmbienTemptSenErr_Stat = 0x1 (Failure), Sensor_Ambient_Temp = %u\n',Sensor_Ambient_Temp); */ printf("CCU_Body_Err.CCU_AmbienTemptSenErr_Stat = 0x1 (Failure), Sensor_Ambient_Temp = %u\n", rtDW.ADC_Data_Model.Sensor_Ambient_Temp); fflush(stdout); } /* End of MATLAB Function: '/Write ERROR' */ /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator3' * Logic: '/Logical Operator4' * UnitDelay: '/Cond_prev_private ' * UnitDelay: '/t_start_delay_private ' */ if (rtb_FailCond && (!rtDW.Cond_prev_private_DSTATE)) { rtDW.t_start_delay_private_DSTATE = rtDW.t_now; } /* End of Switch: '/Switch' */ /* Product: '/Divide1' incorporates: * Constant: '/Constant' * Constant: '/Constant1' * DataStoreRead: '/Data Store Read1' * Product: '/Divide' */ rtb_Divide1_n = (double)rtDW.ADC_Data_Model.Sensor_Evap_Temp / 4095.0 * 5.0; /* Logic: '/Logical Operator' incorporates: * Constant: '/Constant' * Constant: '/Constant' * RelationalOperator: '/Compare' * RelationalOperator: '/Compare' */ rtb_LogicalOperator1 = ((rtb_Divide1_n < 0.1) || (rtb_Divide1_n > 4.9)); /* Switch: '/Switch' incorporates: * Constant: '/Constant' * Constant: '/Constant2' * DataStoreRead: '/Data Store Read1' * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator1' * Lookup_n-D: '/1-D Lookup Table' * MATLAB Function: '/Write ERROR' * RelationalOperator: '/Compare' * Sum: '/Subtract' * UnitDelay: '/t_start_delay_private ' */ /* : if(EvapFErr) */ if (rtb_LogicalOperator1 && (rtDW.t_now - rtDW.t_start_delay_private_DSTATE_p >= 3000U)) { rtb_Switch_f = -100; /* : fprintf('CCU_Body_Err.CCU_EvaTempSenErrF_Stat = 0x1 (Failure), Sensor_Evap_Temp = %u\n',Sensor_Evap_Temp); */ printf("CCU_Body_Err.CCU_EvaTempSenErrF_Stat = 0x1 (Failure), Sensor_Evap_Temp = %u\n", rtDW.ADC_Data_Model.Sensor_Evap_Temp); fflush(stdout); } else { rtb_Switch_f = look1_iu16tdIs16_binlcs(rtDW.ADC_Data_Model.Sensor_Evap_Temp, rtConstP.pooled15, rtConstP.pooled1, 1023U); } /* End of Switch: '/Switch' */ /* MATLAB Function: '/Write Eva_F' */ /* : fprintf('Eva_F = %d * 0.1 C\n',Eva_F); */ printf("Eva_F = %d * 0.1 C\n", rtb_Switch_f); fflush(stdout); /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator3' * Logic: '/Logical Operator4' * UnitDelay: '/Cond_prev_private ' * UnitDelay: '/t_start_delay_private ' */ if (rtb_LogicalOperator1 && (!rtDW.Cond_prev_private_DSTATE_h)) { rtDW.t_start_delay_private_DSTATE_p = rtDW.t_now; } /* End of Switch: '/Switch' */ /* Product: '/Divide1' incorporates: * Constant: '/Constant' * Constant: '/Constant1' * DataStoreRead: '/Data Store Read1' * Product: '/Divide' */ rtb_Divide1_n = (double)rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp / 4095.0 * 5.0; /* Logic: '/Logical Operator' incorporates: * Constant: '/Constant' * Constant: '/Constant' * RelationalOperator: '/Compare' * RelationalOperator: '/Compare' */ rtb_LogicalOperator1_f = ((rtb_Divide1_n < 0.1) || (rtb_Divide1_n > 4.9)); /* Switch: '/Switch' incorporates: * Constant: '/Constant' * Constant: '/Constant2' * DataStoreRead: '/Data Store Read1' * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator1' * Lookup_n-D: '/1-D Lookup Table' * MATLAB Function: '/Write ERROR' * RelationalOperator: '/Compare' * Sum: '/Subtract' * UnitDelay: '/t_start_delay_private ' */ /* : if(EvapRErr) */ if (rtb_LogicalOperator1_f && (rtDW.t_now - rtDW.t_start_delay_private_DSTATE_pk >= 3000U)) { rtb_Switch_f = -100; /* : fprintf('CCU_Body_Err.CCU_EvaTempSenErrR_Stat = 0x1 (Failure), Sensor_Rear_Evap_Temp = %u\n',Sensor_Rear_Evap_Temp); */ printf("CCU_Body_Err.CCU_EvaTempSenErrR_Stat = 0x1 (Failure), Sensor_Rear_Evap_Temp = %u\n", rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp); fflush(stdout); } else { rtb_Switch_f = look1_iu16tdIs16_binlcs (rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp, rtConstP.pooled15, rtConstP.pooled1, 1023U); } /* End of Switch: '/Switch' */ /* MATLAB Function: '/Write Eva_F' */ /* : fprintf('Eva_R = %d * 0.1 C\n',Eva_R); */ printf("Eva_R = %d * 0.1 C\n", rtb_Switch_f); fflush(stdout); /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator3' * Logic: '/Logical Operator4' * UnitDelay: '/Cond_prev_private ' * UnitDelay: '/t_start_delay_private ' */ if (rtb_LogicalOperator1_f && (!rtDW.Cond_prev_private_DSTATE_i)) { rtDW.t_start_delay_private_DSTATE_pk = rtDW.t_now; } /* End of Switch: '/Switch' */ /* Product: '/Divide1' incorporates: * Constant: '/Constant' * Constant: '/Constant1' * DataStoreRead: '/Data Store Read1' * Product: '/Divide' */ rtb_Divide1_n = (double)rtDW.ADC_Data_Model.Sensor_Incar_Temp_FL / 4095.0 * 5.0; /* Logic: '/Logical Operator' incorporates: * Constant: '/Constant' * Constant: '/Constant' * RelationalOperator: '/Compare' * RelationalOperator: '/Compare' */ rtb_LogicalOperator1_k = ((rtb_Divide1_n < 0.15) || (rtb_Divide1_n > 4.9)); /* Switch: '/Switch' incorporates: * Constant: '/Constant' * Constant: '/Constant2' * DataStoreRead: '/Data Store Read1' * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator1' * Lookup_n-D: '/1-D Lookup Table' * MATLAB Function: '/Write ERROR' * RelationalOperator: '/Compare' * Sum: '/Subtract' * UnitDelay: '/t_start_delay_private ' */ /* : if(IncarFLErr) */ if (rtb_LogicalOperator1_k && (rtDW.t_now - rtDW.t_start_delay_private_DSTATE_b >= 3000U)) { rtb_Switch_f = 200; /* : fprintf('CCU_Body_Err.CCU_IncarTempErrF_Stat = 0x1 (Failure), Sensor_Incar_Temp_FL = %u\n',Sensor_Incar_Temp_FL); */ printf("CCU_Body_Err.CCU_IncarTempErrF_Stat = 0x1 (Failure), Sensor_Incar_Temp_FL = %u\n", rtDW.ADC_Data_Model.Sensor_Incar_Temp_FL); fflush(stdout); } else { rtb_Switch_f = look1_iu16tdIs16_binlcs (rtDW.ADC_Data_Model.Sensor_Incar_Temp_FL, rtConstP.pooled15, rtConstP.pooled2, 1023U); } /* End of Switch: '/Switch' */ /* MATLAB Function: '/Write IncarFL' */ /* : fprintf('IncarFL = %d * 0.1 C\n',IncarFL); */ printf("IncarFL = %d * 0.1 C\n", rtb_Switch_f); fflush(stdout); /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator3' * Logic: '/Logical Operator4' * UnitDelay: '/Cond_prev_private ' * UnitDelay: '/t_start_delay_private ' */ if (rtb_LogicalOperator1_k && (!rtDW.Cond_prev_private_DSTATE_c)) { rtDW.t_start_delay_private_DSTATE_b = rtDW.t_now; } /* End of Switch: '/Switch' */ /* Product: '/Divide1' incorporates: * Constant: '/Constant' * Constant: '/Constant1' * DataStoreRead: '/Data Store Read1' * Product: '/Divide' */ rtb_Divide1_n = (double)rtDW.ADC_Data_Model.Sensor_Incar_Temp_FR / 4095.0 * 5.0; /* Logic: '/Logical Operator' incorporates: * Constant: '/Constant' * Constant: '/Constant' * RelationalOperator: '/Compare' * RelationalOperator: '/Compare' */ rtb_LogicalOperator1_b = ((rtb_Divide1_n < 0.15) || (rtb_Divide1_n > 4.9)); /* Switch: '/Switch' incorporates: * Constant: '/Constant' * Constant: '/Constant2' * DataStoreRead: '/Data Store Read1' * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator1' * Lookup_n-D: '/1-D Lookup Table' * MATLAB Function: '/Write ERROR' * RelationalOperator: '/Compare' * Sum: '/Subtract' * UnitDelay: '/t_start_delay_private ' */ /* : if(IncarFRErr) */ if (rtb_LogicalOperator1_b && (rtDW.t_now - rtDW.t_start_delay_private_DSTATE_g >= 3000U)) { rtb_Switch_f = 200; /* : fprintf('CCU_Body_Err.CCU_IncarTempErrR_Stat = 0x1 (Failure), Sensor_Incar_Temp_FR = %u\n',Sensor_Incar_Temp_FR); */ printf("CCU_Body_Err.CCU_IncarTempErrR_Stat = 0x1 (Failure), Sensor_Incar_Temp_FR = %u\n", rtDW.ADC_Data_Model.Sensor_Incar_Temp_FR); fflush(stdout); } else { rtb_Switch_f = look1_iu16tdIs16_binlcs (rtDW.ADC_Data_Model.Sensor_Incar_Temp_FR, rtConstP.pooled15, rtConstP.pooled2, 1023U); } /* End of Switch: '/Switch' */ /* MATLAB Function: '/Write IncarFR' */ /* : fprintf('IncarFR = %d * 0.1 C\n',IncarFR); */ printf("IncarFR = %d * 0.1 C\n", rtb_Switch_f); fflush(stdout); /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator3' * Logic: '/Logical Operator4' * UnitDelay: '/Cond_prev_private ' * UnitDelay: '/t_start_delay_private ' */ if (rtb_LogicalOperator1_b && (!rtDW.Cond_prev_private_DSTATE_hm)) { rtDW.t_start_delay_private_DSTATE_g = rtDW.t_now; } /* End of Switch: '/Switch' */ /* Product: '/Divide1' incorporates: * Constant: '/Constant' * Constant: '/Constant1' * DataStoreRead: '/Data Store Read1' * Product: '/Divide' */ rtb_Divide1_n = (double)rtDW.ADC_Data_Model.Sensor_Incar_Temp_RL / 4095.0 * 5.0; /* Logic: '/Logical Operator' incorporates: * Constant: '/Constant' * Constant: '/Constant' * RelationalOperator: '/Compare' * RelationalOperator: '/Compare' */ rtb_LogicalOperator1_ln = ((rtb_Divide1_n < 0.15) || (rtb_Divide1_n > 4.9)); /* Switch: '/Switch' incorporates: * Constant: '/Constant' * Constant: '/Constant2' * DataStoreRead: '/Data Store Read1' * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator1' * Lookup_n-D: '/1-D Lookup Table' * MATLAB Function: '/Write ERROR' * RelationalOperator: '/Compare' * Sum: '/Subtract' * UnitDelay: '/t_start_delay_private ' */ /* : if(IncarRLErr) */ if (rtb_LogicalOperator1_ln && (rtDW.t_now - rtDW.t_start_delay_private_DSTATE_j >= 3000U)) { rtb_Switch_f = 200; /* : fprintf('CCU_Body_Err.CCU_IncarTempErrF_Stat = 0x1 (Failure), Sensor_Incar_Temp_RL = %u\n',Sensor_Incar_Temp_RL); */ printf("CCU_Body_Err.CCU_IncarTempErrF_Stat = 0x1 (Failure), Sensor_Incar_Temp_RL = %u\n", rtDW.ADC_Data_Model.Sensor_Incar_Temp_RL); fflush(stdout); } else { rtb_Switch_f = look1_iu16tdIs16_binlcs (rtDW.ADC_Data_Model.Sensor_Incar_Temp_RL, rtConstP.pooled15, rtConstP.pooled2, 1023U); } /* End of Switch: '/Switch' */ /* MATLAB Function: '/Write IncarRL' */ /* : fprintf('IncarRL = %d * 0.1 C\n',IncarRL); */ printf("IncarRL = %d * 0.1 C\n", rtb_Switch_f); fflush(stdout); /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator3' * Logic: '/Logical Operator4' * UnitDelay: '/Cond_prev_private ' * UnitDelay: '/t_start_delay_private ' */ if (rtb_LogicalOperator1_ln && (!rtDW.Cond_prev_private_DSTATE_b)) { rtDW.t_start_delay_private_DSTATE_j = rtDW.t_now; } /* End of Switch: '/Switch' */ /* Product: '/Divide1' incorporates: * Constant: '/Constant' * Constant: '/Constant1' * DataStoreRead: '/Data Store Read1' * Product: '/Divide' */ rtb_Divide1_n = (double)rtDW.ADC_Data_Model.Sensor_Incar_Temp_RR / 4095.0 * 5.0; /* Logic: '/Logical Operator' incorporates: * Constant: '/Constant' * Constant: '/Constant' * RelationalOperator: '/Compare' * RelationalOperator: '/Compare' */ rtb_LogicalOperator1_i = ((rtb_Divide1_n < 0.15) || (rtb_Divide1_n > 4.9)); /* Logic: '/Logical Operator1' incorporates: * Constant: '/Constant' * DataStoreRead: '/Data Store Read4' * RelationalOperator: '/Compare' * Sum: '/Subtract' * UnitDelay: '/t_start_delay_private ' */ rtb_LogicalOperator1_n = (rtb_LogicalOperator1_i && (rtDW.t_now - rtDW.t_start_delay_private_DSTATE_c >= 3000U)); /* BusCreator: '/Bus Creator' incorporates: * DataStoreWrite: '/Data Store Write' * DataTypeConversion: '/Data Type Conversion' */ CCU_Errors_Model.CCU_IncarTempErrF_Stat = 0U; CCU_Errors_Model.CCU_IncarTempErrR_Stat = rtb_LogicalOperator1_n; CCU_Errors_Model.CCU_DuctTempSenErrF_Stat = 0U; CCU_Errors_Model.CCU_DuctTempSenErrR_Stat = 0U; CCU_Errors_Model.CCU_EvaTempSenErrF_Stat = 0U; CCU_Errors_Model.CCU_EvaTempSenErrR_Stat = 0U; CCU_Errors_Model.CCU_DeflectorSwErrF_Stat = 0U; CCU_Errors_Model.CCU_DeflectorSwErrR_Stat = 0U; CCU_Errors_Model.CCU_PressSenErr_Stat = 0U; CCU_Errors_Model.CCU_AmbienTemptSenErr_Stat = 0U; CCU_Errors_Model.CCU_SealingValveErr_Stat = 0U; CCU_Errors_Model.CCU_ETXVerr_Stat = 0U; CCU_Errors_Model.CCU_HVACfanOrTXVerrF_Stat = 0U; CCU_Errors_Model.CCU_HVACfanOrTXVerrR_Stat = 0U; CCU_Errors_Model.CCU_ActuatorErrF_Stat = 0U; CCU_Errors_Model.CCU_ActuatorErrR_Stat = 0U; CCU_Errors_Model.CCU_UltravioletErr_Stat = 0U; CCU_Errors_Model.CCU_VinRecordErr_Stat = 0U; CCU_Errors_Model.CCU_AirQualSenErr_Stat = 0U; CCU_Errors_Model.CCU_CommErr_Stat = 0U; CCU_Errors_Model.CCU_TWVerr_Stat = 0U; CCU_Errors_Model.CCU_IonizationErr_Stat = 0U; CCU_Errors_Model.CCU_AromaErr_Stat = 0U; /* Switch: '/Switch' incorporates: * Constant: '/Constant2' * DataStoreRead: '/Data Store Read1' * Lookup_n-D: '/1-D Lookup Table' */ if (rtb_LogicalOperator1_n) { rtb_Switch_f = 200; } else { rtb_Switch_f = look1_iu16tdIs16_binlcs (rtDW.ADC_Data_Model.Sensor_Incar_Temp_RR, rtConstP.pooled15, rtConstP.pooled2, 1023U); } /* End of Switch: '/Switch' */ /* BusCreator: '/Bus Creator' incorporates: * DataStoreWrite: '/Data Store Write' */ Status_Sensor_Model.Battery = 0; Status_Sensor_Model.AMB = 0; Status_Sensor_Model.Incar_FL = 0; Status_Sensor_Model.Incar_FR = 0; Status_Sensor_Model.Incar_RL = 0; Status_Sensor_Model.Incar_RR = rtb_Switch_f; Status_Sensor_Model.Eva_F = 0; Status_Sensor_Model.Eva_R = 0; Status_Sensor_Model.Pressure = 0; Status_Sensor_Model.Duct_FL_Upper = 0; Status_Sensor_Model.Duct_FL_Lower = 0; Status_Sensor_Model.Duct_FR_Upper = 0; Status_Sensor_Model.Duct_FR_Lower = 0; Status_Sensor_Model.Duct_RL = 0; Status_Sensor_Model.Duct_RR = 0; Status_Sensor_Model.Duct_Side_FL = 0; Status_Sensor_Model.Duct_Side_FR = 0; Status_Sensor_Model.Duct_Side_RL = 0; Status_Sensor_Model.Duct_Side_RR = 0; Status_Sensor_Model.AQS = 0; /* MATLAB Function: '/Write ERROR' incorporates: * DataStoreRead: '/Data Store Read1' */ /* : if(IncarRRErr) */ if (rtb_LogicalOperator1_n) { /* : fprintf('CCU_Body_Err.CCU_IncarTempErrR_Stat = 0x1 (Failure), Sensor_Incar_Temp_RR = %u\n',Sensor_Incar_Temp_RR); */ printf("CCU_Body_Err.CCU_IncarTempErrR_Stat = 0x1 (Failure), Sensor_Incar_Temp_RR = %u\n", rtDW.ADC_Data_Model.Sensor_Incar_Temp_RR); fflush(stdout); } /* End of MATLAB Function: '/Write ERROR' */ /* MATLAB Function: '/Write IncarFL' */ /* : fprintf('IncarRR = %d * 0.1 C\n',IncarRR); */ printf("IncarRR = %d * 0.1 C\n", rtb_Switch_f); fflush(stdout); /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read4' * Logic: '/Logical Operator3' * Logic: '/Logical Operator4' * UnitDelay: '/Cond_prev_private ' * UnitDelay: '/t_start_delay_private ' */ if (rtb_LogicalOperator1_i && (!rtDW.Cond_prev_private_DSTATE_g)) { rtDW.t_start_delay_private_DSTATE_c = rtDW.t_now; } /* End of Switch: '/Switch' */ /* Switch: '/Switch' incorporates: * Constant: '/Constant1' * DataStoreRead: '/Data Store Read' * DataStoreRead: '/Data Store Read2' */ if (rtDW.stepSig_private > 0) { rtb_Switch_l4 = rtDW.stepSig_private; } else { rtb_Switch_l4 = 1; } /* End of Switch: '/Switch' */ /* SwitchCase: '/Switch Case' */ switch (rtb_Switch_l4) { case 1: /* Outputs for IfAction SubSystem: '/Stop Mode' incorporates: * ActionPort: '/Action Port' */ /* If: '/If1' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' * DataStoreWrite: '/Data Store Write1' */ if ((rtDW.Actuator_Ch0_Status_Model.Busy_Ch0 == 0) && (rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: * ActionPort: '/Action Port' */ /* BusCreator: '/Bus Creator' incorporates: * DataStoreWrite: '/Data Store Write' * SignalConversion generated from: '/Bus Creator' * */ for (i = 0; i < 9; i++) { Actuator_Ch0_Command_Model.POS[i] = 0U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 2U; Actuator_Ch0_Command_Model.COM[i] = 1U; Actuator_Ch0_Command_Model.Stall_SET[i] = 0U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 0U; Actuator_Ch0_Command_Model.Speed_SET[i] = 0U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; } /* End of BusCreator: '/Bus Creator' */ /* Merge: '/Merge' incorporates: * Constant: '/Constant' * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch_l4 + 1); /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ IfActionSubsystem3(rtb_Switch_l4, &rtB.Merge); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } /* End of If: '/If1' */ /* End of Outputs for SubSystem: '/Stop Mode' */ break; case 2: /* Outputs for IfAction SubSystem: '/Initial CPOS Min' incorporates: * ActionPort: '/Action Port' */ /* If: '/If' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' * DataStoreWrite: '/Data Store Write1' */ if ((rtDW.Actuator_Ch0_Status_Model.Busy_Ch0 == 0) && (rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem' incorporates: * ActionPort: '/Action Port' */ /* BusCreator: '/Bus Creator' incorporates: * DataStoreWrite: '/Data Store Write2' * SignalConversion generated from: '/Bus Creator' * */ for (i = 0; i < 9; i++) { Actuator_Ch0_Command_Model.POS[i] = 6000U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 0U; Actuator_Ch0_Command_Model.COM[i] = 2U; Actuator_Ch0_Command_Model.Stall_SET[i] = 0U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 0U; Actuator_Ch0_Command_Model.Speed_SET[i] = 0U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; } /* End of BusCreator: '/Bus Creator' */ /* MATLAB Function: '/Initial CPOS Min' */ /* : y = step; */ /* : fprintf('SIMULINK Initial CPOS Min - 6000\n'); */ printf("SIMULINK Initial CPOS Min - 6000\n"); fflush(stdout); /* Merge: '/Merge' incorporates: * Constant: '/Constant' * Merge: '/Merge' * SignalConversion generated from: '/step' * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch_l4 + 1); /* End of Outputs for SubSystem: '/If Action Subsystem' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ /* BusCreator: '/Bus Creator' incorporates: * DataStoreWrite: '/Data Store Write' * SignalConversion generated from: '/Bus Creator' * */ for (i = 0; i < 9; i++) { Actuator_Ch0_Command_Model.POS[i] = 0U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 0U; Actuator_Ch0_Command_Model.COM[i] = 0U; Actuator_Ch0_Command_Model.Stall_SET[i] = 0U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 0U; Actuator_Ch0_Command_Model.Speed_SET[i] = 0U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; } /* End of BusCreator: '/Bus Creator' */ /* Merge: '/Merge' incorporates: * Merge: '/Merge' * SignalConversion generated from: '/stepIn1' */ rtB.Merge = rtb_Switch_l4; /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } /* End of If: '/If' */ /* End of Outputs for SubSystem: '/Initial CPOS Min' */ break; case 3: /* Outputs for IfAction SubSystem: '/Normal Mode' incorporates: * ActionPort: '/Action Port' */ /* MATLAB Function: '/MAX POSITION1' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' */ /* : fprintf('Busy_Ch0_private '); */ printf("Busy_Ch0_private "); fflush(stdout); /* : for i = 1:numel(Busy_Ch0_private) */ /* : fprintf('%d ', int16(Busy_Ch0_private(i))); */ printf("%d ", (int16_t)rtDW.Actuator_Ch0_Status_Model.Busy_Ch0); fflush(stdout); /* : fprintf('\n'); */ printf("\n"); fflush(stdout); /* MATLAB Function: '/MAX POSITION2' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write1' */ /* : fprintf('Error_Connect_Ch0_private '); */ printf("Error_Connect_Ch0_private "); fflush(stdout); /* : for i = 1:numel(Busy_Ch0_private) */ /* : fprintf('%d ', int16(Busy_Ch0_private(i))); */ printf("%d ", (int16_t)rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0); fflush(stdout); /* : fprintf('\n'); */ printf("\n"); fflush(stdout); /* If: '/If1' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' * DataStoreWrite: '/Data Store Write1' */ if ((rtDW.Actuator_Ch0_Status_Model.Busy_Ch0 == 0) && (rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: * ActionPort: '/Action Port' */ /* BusCreator: '/Bus Creator' incorporates: * DataStoreWrite: '/Data Store Write1' * SignalConversion generated from: '/Bus Creator' * */ for (i = 0; i < 9; i++) { Actuator_Ch0_Command_Model.POS[i] = 0U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 0U; Actuator_Ch0_Command_Model.COM[i] = 1U; Actuator_Ch0_Command_Model.Stall_SET[i] = 0U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 0U; Actuator_Ch0_Command_Model.Speed_SET[i] = 0U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; } /* End of BusCreator: '/Bus Creator' */ /* MATLAB Function: '/Normal Mode' */ /* : y = step; */ /* : fprintf('SIMULINK Normal Mode\n'); */ printf("SIMULINK Normal Mode\n"); fflush(stdout); /* Merge: '/Merge' incorporates: * Constant: '/Constant' * SignalConversion generated from: '/step' * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch_l4 + 1); /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ IfActionSubsystem3(rtb_Switch_l4, &rtB.Merge); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } /* End of If: '/If1' */ /* End of Outputs for SubSystem: '/Normal Mode' */ break; case 4: /* Outputs for IfAction SubSystem: '/Move to position Min' incorporates: * ActionPort: '/Action Port' */ /* If: '/If1' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' * DataStoreWrite: '/Data Store Write1' */ if ((rtDW.Actuator_Ch0_Status_Model.Busy_Ch0 == 0) && (rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: * ActionPort: '/Action Port' */ /* BusCreator: '/Bus Creator' incorporates: * Constant: '/Constant1' * Constant: '/Constant10' * Constant: '/Constant11' * Constant: '/Constant14' * Constant: '/Constant2' * Constant: '/Constant9' * DataStoreWrite: '/Data Store Write7' * SignalConversion generated from: '/Bus Creator' * */ for (i = 0; i < 9; i++) { Actuator_Ch0_Command_Model.POS[i] = 1U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 0U; Actuator_Ch0_Command_Model.COM[i] = 3U; Actuator_Ch0_Command_Model.Stall_SET[i] = 1U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 1U; Actuator_Ch0_Command_Model.Speed_SET[i] = 3U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; } /* End of BusCreator: '/Bus Creator' */ /* MATLAB Function: '/Move to position Min' */ /* : y = step; */ /* : fprintf('SIMULINK Move to position Min - 1\n'); */ printf("SIMULINK Move to position Min - 1\n"); fflush(stdout); /* Merge: '/Merge' incorporates: * Constant: '/Constant' * SignalConversion generated from: '/step' * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch_l4 + 1); /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ IfActionSubsystem3(rtb_Switch_l4, &rtB.Merge); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } /* End of If: '/If1' */ /* End of Outputs for SubSystem: '/Move to position Min' */ break; case 5: /* Outputs for IfAction SubSystem: '/Check Stall Min' incorporates: * ActionPort: '/Action Port' */ /* RelationalOperator: '/Relational Operator1' incorporates: * DataStoreRead: '/Data Store Read1' * RelationalOperator: '/Relational Operator' */ for (i = 0; i < 9; i++) { rtb_RelationalOperator_j[i] = (rtDW.Actuator_Ch0_Status_Model.in_Act_Stall_Slave_Ch0[i] == 1); } /* End of RelationalOperator: '/Relational Operator1' */ /* Logic: '/Logical Operator2' incorporates: * RelationalOperator: '/Relational Operator' */ rtb_LogicalOperator1_n = rtb_RelationalOperator_j[0]; for (i = 0; i < 8; i++) { rtb_LogicalOperator1_n = (rtb_LogicalOperator1_n || rtb_RelationalOperator_j[i + 1]); } /* RelationalOperator: '/Relational Operator' incorporates: * DataStoreRead: '/Data Store Read1' */ for (i = 0; i < 9; i++) { rtb_RelationalOperator_j[i] = (rtDW.Actuator_Ch0_Status_Model.in_CPOS_ALL_Ch0[i] == 1); } /* End of RelationalOperator: '/Relational Operator' */ /* Logic: '/Logical Operator1' incorporates: * RelationalOperator: '/Relational Operator' */ tmp = rtb_RelationalOperator_j[0]; for (i = 0; i < 8; i++) { tmp = (tmp || rtb_RelationalOperator_j[i + 1]); } /* If: '/If2' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' * DataStoreWrite: '/Data Store Write1' * DataTypeConversion: '/Data Type Conversion' * DataTypeConversion: '/Data Type Conversion1' * Logic: '/Logical Operator' * Logic: '/Logical Operator1' * Logic: '/Logical Operator2' */ if ((rtDW.Actuator_Ch0_Status_Model.Busy_Ch0 == 0) && (rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0 == 0) && (rtb_LogicalOperator1_n || tmp)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: * ActionPort: '/Action Port' */ /* DataStoreWrite: '/Data Store Write1' */ for (i = 0; i < 9; i++) { rtDW.MinPositionCh0_private[i] = rtDW.Actuator_Ch0_Status_Model.in_CPOS_ALL_Ch0[i]; } /* End of DataStoreWrite: '/Data Store Write1' */ /* Merge: '/Merge' incorporates: * Constant: '/Constant' * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch_l4 + 1); /* MATLAB Function: '/MIN POSITION' */ /* : y = step; */ /* : fprintf('SIMULINK Min_position_Ch0 '); */ printf("SIMULINK Min_position_Ch0 "); fflush(stdout); /* : for i = 1:numel(step) */ for (i = 0; i < 9; i++) { /* : fprintf('%d ', int16(step(i))); */ printf("%d ", rtDW.Actuator_Ch0_Status_Model.in_CPOS_ALL_Ch0[i]); fflush(stdout); } /* : fprintf('\n'); */ printf("\n"); fflush(stdout); /* End of MATLAB Function: '/MIN POSITION' */ /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ IfActionSubsystem3(rtb_Switch_l4, &rtB.Merge); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } /* End of If: '/If2' */ /* End of Outputs for SubSystem: '/Check Stall Min' */ for (i = 0; i < 9; i++) { /* Outputs for IfAction SubSystem: '/Check Stall Min' incorporates: * ActionPort: '/Action Port' */ rtb_y_ff[i] = rtDW.Actuator_Ch0_Status_Model.in_CPOS_ALL_Ch0[i]; /* End of Outputs for SubSystem: '/Check Stall Min' */ } /* Outputs for IfAction SubSystem: '/Check Stall Min' incorporates: * ActionPort: '/Action Port' */ /* MATLAB Function: '/MAX POSITION' incorporates: * DataStoreRead: '/Data Store Read1' */ MAXPOSITION(rtb_y_ff); /* End of Outputs for SubSystem: '/Check Stall Min' */ for (i = 0; i < 9; i++) { /* Outputs for IfAction SubSystem: '/Check Stall Min' incorporates: * ActionPort: '/Action Port' */ rtb_y_b[i] = rtDW.Actuator_Ch0_Status_Model.in_Act_Stall_Slave_Ch0[i]; /* End of Outputs for SubSystem: '/Check Stall Min' */ } /* Outputs for IfAction SubSystem: '/Check Stall Min' incorporates: * ActionPort: '/Action Port' */ /* MATLAB Function: '/MAX POSITION1' incorporates: * DataStoreRead: '/Data Store Read1' */ MAXPOSITION1(rtb_y_b); /* End of Outputs for SubSystem: '/Check Stall Min' */ break; case 6: /* Outputs for IfAction SubSystem: '/Initial CPOS Max' incorporates: * ActionPort: '/Action Port' */ /* If: '/If1' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' * DataStoreWrite: '/Data Store Write1' */ if ((rtDW.Actuator_Ch0_Status_Model.Busy_Ch0 == 0) && (rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: * ActionPort: '/Action Port' */ /* BusCreator: '/Bus Creator' incorporates: * DataStoreWrite: '/Data Store Write2' * SignalConversion generated from: '/Bus Creator' * */ for (i = 0; i < 9; i++) { Actuator_Ch0_Command_Model.POS[i] = 1U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 0U; Actuator_Ch0_Command_Model.COM[i] = 2U; Actuator_Ch0_Command_Model.Stall_SET[i] = 0U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 0U; Actuator_Ch0_Command_Model.Speed_SET[i] = 0U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; } /* End of BusCreator: '/Bus Creator' */ /* MATLAB Function: '/Initial CPOS Max' */ /* : y = step; */ /* : fprintf('SIMULINK Initial CPOS Max - 1\n'); */ printf("SIMULINK Initial CPOS Max - 1\n"); fflush(stdout); /* Merge: '/Merge' incorporates: * Constant: '/Constant' * SignalConversion generated from: '/step' * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch_l4 + 1); /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ IfActionSubsystem3(rtb_Switch_l4, &rtB.Merge); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } /* End of If: '/If1' */ /* End of Outputs for SubSystem: '/Initial CPOS Max' */ break; case 7: /* Outputs for IfAction SubSystem: '/Move to position Max' incorporates: * ActionPort: '/Action Port' */ /* If: '/If1' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' * DataStoreWrite: '/Data Store Write1' */ if ((rtDW.Actuator_Ch0_Status_Model.Busy_Ch0 == 0) && (rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: * ActionPort: '/Action Port' */ /* BusCreator: '/Bus Creator' incorporates: * Constant: '/Constant1' * Constant: '/Constant10' * Constant: '/Constant11' * Constant: '/Constant14' * Constant: '/Constant2' * Constant: '/Constant9' * DataStoreWrite: '/Data Store Write7' * SignalConversion generated from: '/Bus Creator' * */ for (i = 0; i < 9; i++) { Actuator_Ch0_Command_Model.POS[i] = 6000U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 0U; Actuator_Ch0_Command_Model.COM[i] = 3U; Actuator_Ch0_Command_Model.Stall_SET[i] = 1U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 1U; Actuator_Ch0_Command_Model.Speed_SET[i] = 3U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; } /* End of BusCreator: '/Bus Creator' */ /* MATLAB Function: '/Move to position Max' */ /* : y = step; */ /* : fprintf('SIMULINK Move to position Max - 6000\n'); */ printf("SIMULINK Move to position Max - 6000\n"); fflush(stdout); /* Merge: '/Merge' incorporates: * Constant: '/Constant' * SignalConversion generated from: '/step' * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch_l4 + 1); /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ IfActionSubsystem3(rtb_Switch_l4, &rtB.Merge); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } /* End of If: '/If1' */ /* End of Outputs for SubSystem: '/Move to position Max' */ break; case 8: /* Outputs for IfAction SubSystem: '/Check Stall Max' incorporates: * ActionPort: '/Action Port' */ /* RelationalOperator: '/Relational Operator1' incorporates: * DataStoreRead: '/Data Store Read1' * RelationalOperator: '/Relational Operator' */ for (i = 0; i < 9; i++) { rtb_RelationalOperator_j[i] = (rtDW.Actuator_Ch0_Status_Model.in_Act_Stall_Slave_Ch0[i] == 1); } /* End of RelationalOperator: '/Relational Operator1' */ /* Logic: '/Logical Operator2' incorporates: * RelationalOperator: '/Relational Operator' */ rtb_LogicalOperator1_n = rtb_RelationalOperator_j[0]; for (i = 0; i < 8; i++) { rtb_LogicalOperator1_n = (rtb_LogicalOperator1_n || rtb_RelationalOperator_j[i + 1]); } /* RelationalOperator: '/Relational Operator' incorporates: * DataStoreRead: '/Data Store Read1' */ for (i = 0; i < 9; i++) { rtb_RelationalOperator_j[i] = (rtDW.Actuator_Ch0_Status_Model.in_CPOS_ALL_Ch0[i] == 6000); } /* End of RelationalOperator: '/Relational Operator' */ /* Logic: '/Logical Operator1' incorporates: * RelationalOperator: '/Relational Operator' */ tmp = rtb_RelationalOperator_j[0]; for (i = 0; i < 8; i++) { tmp = (tmp || rtb_RelationalOperator_j[i + 1]); } /* If: '/If2' incorporates: * DataStoreRead: '/Data Store Read1' * DataStoreWrite: '/Data Store Write' * DataStoreWrite: '/Data Store Write1' * DataTypeConversion: '/Data Type Conversion' * DataTypeConversion: '/Data Type Conversion1' * Logic: '/Logical Operator' * Logic: '/Logical Operator1' * Logic: '/Logical Operator2' */ if ((rtDW.Actuator_Ch0_Status_Model.Busy_Ch0 == 0) && (rtDW.Actuator_Ch0_Status_Model.Error_Connect_Ch0 == 0) && (rtb_LogicalOperator1_n || tmp)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: * ActionPort: '/Action Port' */ /* DataStoreWrite: '/Data Store Write1' */ for (i = 0; i < 9; i++) { rtDW.MinPositionCh0_private[i] = rtDW.Actuator_Ch0_Status_Model.in_CPOS_ALL_Ch0[i]; } /* End of DataStoreWrite: '/Data Store Write1' */ /* Merge: '/Merge' incorporates: * Constant: '/Constant' * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch_l4 + 1); /* MATLAB Function: '/MIN POSITION' */ /* : y = step; */ /* : fprintf('SIMULINK Max_position_Ch0 '); */ printf("SIMULINK Max_position_Ch0 "); fflush(stdout); /* : for i = 1:numel(step) */ for (i = 0; i < 9; i++) { /* : fprintf('%d ', int16(step(i))); */ printf("%d ", rtDW.Actuator_Ch0_Status_Model.in_CPOS_ALL_Ch0[i]); fflush(stdout); } /* : fprintf('\n'); */ printf("\n"); fflush(stdout); /* End of MATLAB Function: '/MIN POSITION' */ /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ IfActionSubsystem3(rtb_Switch_l4, &rtB.Merge); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } /* End of If: '/If2' */ /* End of Outputs for SubSystem: '/Check Stall Max' */ for (i = 0; i < 9; i++) { /* Outputs for IfAction SubSystem: '/Check Stall Max' incorporates: * ActionPort: '/Action Port' */ rtb_y_ff[i] = rtDW.Actuator_Ch0_Status_Model.in_CPOS_ALL_Ch0[i]; /* End of Outputs for SubSystem: '/Check Stall Max' */ } /* Outputs for IfAction SubSystem: '/Check Stall Max' incorporates: * ActionPort: '/Action Port' */ /* MATLAB Function: '/MAX POSITION' incorporates: * DataStoreRead: '/Data Store Read1' */ MAXPOSITION(rtb_y_ff); /* End of Outputs for SubSystem: '/Check Stall Max' */ for (i = 0; i < 9; i++) { /* Outputs for IfAction SubSystem: '/Check Stall Max' incorporates: * ActionPort: '/Action Port' */ rtb_y_b[i] = rtDW.Actuator_Ch0_Status_Model.in_Act_Stall_Slave_Ch0[i]; /* End of Outputs for SubSystem: '/Check Stall Max' */ } /* Outputs for IfAction SubSystem: '/Check Stall Max' incorporates: * ActionPort: '/Action Port' */ /* MATLAB Function: '/MAX POSITION1' incorporates: * DataStoreRead: '/Data Store Read1' */ MAXPOSITION1(rtb_y_b); /* End of Outputs for SubSystem: '/Check Stall Max' */ break; case 9: /* Outputs for IfAction SubSystem: '/Homing' incorporates: * ActionPort: '/Action Port' */ /* Merge: '/Merge' incorporates: * SignalConversion generated from: '/stepIn' */ rtB.Merge = rtb_Switch_l4; /* Outputs for IfAction SubSystem: '/Switch Case Action Subsystem2' incorporates: * ActionPort: '/Action Port' */ /* SwitchCase: '/Switch Case' incorporates: * BusCreator: '/Bus Creator' * DataStoreWrite: '/Data Store Write1' * MATLAB Function: '/MAX POSITION' */ CCU_Errors_Model.CCU_IncarTempErrF_Stat = 0U; CCU_Errors_Model.CCU_IncarTempErrR_Stat = 0U; CCU_Errors_Model.CCU_DuctTempSenErrF_Stat = 0U; CCU_Errors_Model.CCU_DuctTempSenErrR_Stat = 0U; CCU_Errors_Model.CCU_EvaTempSenErrF_Stat = 0U; CCU_Errors_Model.CCU_EvaTempSenErrR_Stat = 0U; CCU_Errors_Model.CCU_DeflectorSwErrF_Stat = 0U; CCU_Errors_Model.CCU_DeflectorSwErrR_Stat = 0U; CCU_Errors_Model.CCU_PressSenErr_Stat = 0U; CCU_Errors_Model.CCU_AmbienTemptSenErr_Stat = 0U; CCU_Errors_Model.CCU_SealingValveErr_Stat = 0U; CCU_Errors_Model.CCU_ETXVerr_Stat = 0U; CCU_Errors_Model.CCU_HVACfanOrTXVerrF_Stat = 0U; CCU_Errors_Model.CCU_HVACfanOrTXVerrR_Stat = 0U; CCU_Errors_Model.CCU_ActuatorErrF_Stat = 0U; CCU_Errors_Model.CCU_ActuatorErrR_Stat = 0U; CCU_Errors_Model.CCU_UltravioletErr_Stat = 0U; CCU_Errors_Model.CCU_VinRecordErr_Stat = 0U; CCU_Errors_Model.CCU_AirQualSenErr_Stat = 0U; CCU_Errors_Model.CCU_CommErr_Stat = 0U; CCU_Errors_Model.CCU_TWVerr_Stat = 0U; CCU_Errors_Model.CCU_IonizationErr_Stat = 0U; CCU_Errors_Model.CCU_AromaErr_Stat = 0U; /* : for i = 1:numel(ErrCallibration) */ for (i = 0; i < 9; i++) { /* BusCreator: '/Bus Creator1' incorporates: * DataStoreWrite: '/Data Store Write' * SignalConversion generated from: '/Bus Creator1' * */ Actuator_Ch0_Command_Model.POS[i] = 0U; Actuator_Ch0_Command_Model.BUS_ADR[i] = 0U; Actuator_Ch0_Command_Model.MODE[i] = 2U; Actuator_Ch0_Command_Model.COM[i] = 0U; Actuator_Ch0_Command_Model.Stall_SET[i] = 0U; Actuator_Ch0_Command_Model.Lnoise_SET[i] = 0U; Actuator_Ch0_Command_Model.Autos_SET[i] = 0U; Actuator_Ch0_Command_Model.Speed_SET[i] = 0U; Actuator_Ch0_Command_Model.Coils_Stop_SET[i] = 0U; /* DataStoreWrite: '/Data Store Write' incorporates: * Logic: '/Logical Operator' */ rtDW.ErrorCalibrationCh0_private[i] = false; /* Product: '/Divide1' incorporates: * Constant: '/ACT1' * DataStoreRead: '/MAX ACT1T ' * DataStoreRead: '/MIN ACT1T ' * Sum: '/ACT1T' */ rtb_Divide1_j[i] = (double)(int16_t)(rtDW.MaxPositionCh0_private[i] - rtDW.MinPositionCh0_private[i]) / (double)rtConstP.pooled18[i]; } MAXPOSITION_l(rtb_Divide1_j, rtb_y_gj); /* End of SwitchCase: '/Switch Case' */ /* End of Outputs for SubSystem: '/Switch Case Action Subsystem2' */ /* MATLAB Function: '/MAX POSITION' incorporates: * DataStoreRead: '/Data Store Read2' */ /* : y = step; */ /* : fprintf('SIMULINK MAX POSITION '); */ printf("SIMULINK MAX POSITION "); fflush(stdout); /* : for i = 1:numel(step) */ for (i = 0; i < 9; i++) { /* : fprintf('%d ', int16(step(i))); */ printf("%d ", rtDW.MaxPositionCh0_private[i]); fflush(stdout); } /* : fprintf('\n'); */ printf("\n"); fflush(stdout); /* End of MATLAB Function: '/MAX POSITION' */ /* MATLAB Function: '/MIN POSITION' incorporates: * DataStoreRead: '/Data Store Read3' */ /* : y = step; */ /* : fprintf('SIMULINK MIN POSITION '); */ printf("SIMULINK MIN POSITION "); fflush(stdout); /* : for i = 1:numel(step) */ for (i = 0; i < 9; i++) { /* : fprintf('%d ', int16(step(i))); */ printf("%d ", rtDW.MinPositionCh0_private[i]); fflush(stdout); } /* : fprintf('\n'); */ printf("\n"); fflush(stdout); /* End of MATLAB Function: '/MIN POSITION' */ /* End of Outputs for SubSystem: '/Homing' */ break; } /* End of SwitchCase: '/Switch Case' */ /* DataStoreWrite: '/Finish write stepSig' */ rtDW.stepSig_private = rtB.Merge; /* MATLAB Function: '/Write Ignition' */ /* : fprintf('step = %d\n',step); */ printf("step = %d\n", rtb_Switch_l4); fflush(stdout); /* Update for UnitDelay: '/Cond_prev_private ' */ rtDW.Cond_prev_private_DSTATE = rtb_FailCond; /* Update for UnitDelay: '/Cond_prev_private ' */ rtDW.Cond_prev_private_DSTATE_h = rtb_LogicalOperator1; /* Update for UnitDelay: '/Cond_prev_private ' */ rtDW.Cond_prev_private_DSTATE_i = rtb_LogicalOperator1_f; /* Update for UnitDelay: '/Cond_prev_private ' */ rtDW.Cond_prev_private_DSTATE_c = rtb_LogicalOperator1_k; /* Update for UnitDelay: '/Cond_prev_private ' */ rtDW.Cond_prev_private_DSTATE_hm = rtb_LogicalOperator1_b; /* Update for UnitDelay: '/Cond_prev_private ' */ rtDW.Cond_prev_private_DSTATE_b = rtb_LogicalOperator1_ln; /* Update for UnitDelay: '/Cond_prev_private ' */ rtDW.Cond_prev_private_DSTATE_g = rtb_LogicalOperator1_i; } /* Model initialize function */ void HVAC_model_initialize(void) { /* (no initialization code required) */ } /* Model terminate function */ void HVAC_model_terminate(void) { /* (no terminate code required) */ } /* * File trailer for generated code. * * [EOF] */