diff --git a/HVAC_model.c b/HVAC_model.c index a5237bd..152d76a 100644 --- a/HVAC_model.c +++ b/HVAC_model.c @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'HVAC_model'. * - * Model version : 1.784 + * Model version : 1.786 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Tue Apr 14 14:42:16 2026 + * C/C++ source code generated on : Tue Apr 14 17:41:03 2026 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M @@ -25,6 +25,7 @@ #include "Rs_Cal_Base.h" /* Named constants for Test Sequence: '/Test Sequence' */ +#define IN_NO_ACTIVE_CHILD ((uint8_t)0U) #define IN_step_1 ((uint8_t)1U) #define IN_step_10 ((uint8_t)2U) #define IN_step_11 ((uint8_t)3U) @@ -76,6 +77,140 @@ #define IN_step_8 ((uint8_t)49U) #define IN_step_9 ((uint8_t)50U) +const CmdBusError HVAC_model_rtZCmdBusError = { + 0U, /* CCU_IncarTempErrF_Stat */ + 0U, /* CCU_IncarTempErrR_Stat */ + 0U, /* CCU_DuctTempSenErrF_Stat */ + 0U, /* CCU_DuctTempSenErrR_Stat */ + 0U, /* CCU_EvaTempSenErrF_Stat */ + 0U, /* CCU_EvaTempSenErrR_Stat */ + 0U, /* CCU_DeflectorSwErrF_Stat */ + 0U, /* CCU_DeflectorSwErrR_Stat */ + 0U, /* CCU_PressSenErr_Stat */ + 0U, /* CCU_AmbienTemptSenErr_Stat */ + 0U, /* CCU_SealingValveErr_Stat */ + 0U, /* CCU_ETXVerr_Stat */ + 0U, /* CCU_HVACfanOrTXVerrF_Stat */ + 0U, /* CCU_HVACfanOrTXVerrR_Stat */ + 0U, /* CCU_ActuatorErrF_Stat */ + 0U, /* CCU_ActuatorErrR_Stat */ + 0U, /* CCU_UltravioletErr_Stat */ + 0U, /* CCU_VinRecordErr_Stat */ + 0U, /* CCU_AirQualSenErr_Stat */ + 0U, /* CCU_CommErr_Stat */ + 0U, /* CCU_TWVerr_Stat */ + 0U, /* CCU_IonizationErr_Stat */ + 0U /* CCU_AromaErr_Stat */ +}; /* CmdBusError ground */ + +const ActuatorCmdBusInput HVAC_model_rtZActuatorCmdBusInput = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_CPOS_ALL */ + + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_Act_Emrf_Slave */ + + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_Mode_Slave */ + + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_Act_Err1_Supply */ + + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_Act_Err2_Communication */ + + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_Act_Err3_Temperature */ + + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_Act_Err4_Permanent_Electrical */ + + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_Act_Stall_Slave */ + + { + 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , /* in_Act_Reset */ + 0U, /* Busy */ + 0U /* Error_Connect */ +}; /* ActuatorCmdBusInput ground */ + +const CmdBusStatus HVAC_model_rtZCmdBusStatus = { + 0, /* Battery */ + 0, /* AMB */ + 0, /* Incar_FL */ + 0, /* Incar_FR */ + 0, /* Incar_RL */ + 0, /* Incar_RR */ + 0, /* Eva_F */ + 0, /* Eva_R */ + 0, /* Pressure */ + 0, /* Duct_FL_Upper */ + 0, /* Duct_FL_Lower */ + 0, /* Duct_FR_Upper */ + 0, /* Duct_FR_Lower */ + 0, /* Duct_RL */ + 0, /* Duct_RR */ + 0, /* Duct_Side_FL */ + 0, /* Duct_Side_FR */ + 0, /* Duct_Side_RL */ + 0, /* Duct_Side_RR */ + 0 /* AQS */ +}; /* CmdBusStatus ground */ + +const ActuatorCmdBus HVAC_model_rtZActuatorCmdBus = { + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + , /* POS */ + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + , /* BUS_ADR */ + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + , /* MODE */ + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + , /* COM */ + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + , /* Stall_SET */ + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + , /* Lnoise_SET */ + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + , /* Autos_SET */ + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + , /* Speed_SET */ + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + /* Coils_Stop_SET */ +}; /* ActuatorCmdBus ground */ + +const CmdBusPWMGet HVAC_model_rtZCmdBusPWMGet = { + 0U, /* pwmPercentFront */ + 0U, /* pwmPercentRear */ + 0U, /* pwmPercentFrontReserved */ + 0U /* pwmPercentRearReserved */ +}; /* CmdBusPWMGet ground */ + /* Exported block states */ ActuatorCmdBusInput Actuator_Ch1_Status_Model;/* '/Data Store Memory62' */ ActuatorCmdBusInput Actuator_Ch2_Status_Model;/* '/Data Store Memory63' */ @@ -7806,7 +7941,7 @@ void HVAC_model_step(void) * Merge: '/Merge' */ rtb_u_cuz = look2_iu8bu8s16lu64n32_binlcse(rtB.Merge_b, rtb_Gain_l, - rtConstP.pooled59, rtConstP.pooled28, rtb_get_modes_for_levels, + rtConstP.pooled60, rtConstP.pooled28, rtb_get_modes_for_levels, rtConstP.pooled22, 6U); /* MATLAB Function: '/Начальные положения заслонок left' */ @@ -7914,7 +8049,7 @@ void HVAC_model_step(void) * Merge: '/Merge' */ rtb_u_cuz = look2_iu8bu8s16lu64n32_binlcse(rtB.Merge_b, rtb_Gain2, - rtConstP.pooled59, rtConstP.pooled28, rtb_get_modes_for_levels, + rtConstP.pooled60, rtConstP.pooled28, rtb_get_modes_for_levels, rtConstP.pooled22, 6U); /* MATLAB Function: '/Начальные положения заслонок right' */ @@ -8078,13 +8213,25 @@ void HVAC_model_step(void) * ActionPort: '/Action Port' */ for (i = 0; i < 9; i++) { + /* Switch: '/Switch' incorporates: + * Constant: '/Constant1' + * Constant: '/Constant4' + * DataStoreRead: '/Data Store Read1' + * DataStoreWrite: '/Data Store Write7' + */ + if (rtDW.ErrorCalibration_private[i] != 0) { + rtDW.BUS_ADR_private[i] = rtConstP.pooled51[i]; + } else { + rtDW.BUS_ADR_private[i] = 0U; + } + + /* End of Switch: '/Switch' */ + + /* DataStoreWrite: '/Data Store Write1' */ + rtDW.COM_private[i] = 1U; + /* DataStoreWrite: '/Data Store Write' */ rtDW.MODE_private[i] = 2U; - - /* DataStoreWrite: '/Data Store Write1' incorporates: - * DataStoreRead: '/Data Store Read' - */ - rtDW.COM_private[i] = rtDW.ErrorCalibration_private[i]; } /* Merge: '/Merge' incorporates: @@ -8128,11 +8275,22 @@ void HVAC_model_step(void) /* DataStoreWrite: '/Data Store Write' */ rtDW.POS_private[i] = 6000U; - /* Product: '/Divide' incorporates: - * DataStoreRead: '/Data Store Read' - * DataStoreWrite: '/Data Store Write1' + /* DataStoreWrite: '/Data Store Write1' */ + rtDW.COM_private[i] = 2U; + + /* Switch: '/Switch' incorporates: + * Constant: '/Constant3' + * Constant: '/Constant4' + * DataStoreRead: '/Data Store Read1' + * DataStoreWrite: '/Data Store Write7' */ - rtDW.COM_private[i] = (uint8_t)(rtDW.ErrorCalibration_private[i] << 1); + if (rtDW.ErrorCalibration_private[i] != 0) { + rtDW.BUS_ADR_private[i] = rtConstP.pooled51[i]; + } else { + rtDW.BUS_ADR_private[i] = 0U; + } + + /* End of Switch: '/Switch' */ } /* MATLAB Function: '/Initial CPOS Min' incorporates: @@ -8189,13 +8347,25 @@ void HVAC_model_step(void) * ActionPort: '/Action Port' */ for (i = 0; i < 9; i++) { + /* Switch: '/Switch' incorporates: + * Constant: '/Constant1' + * Constant: '/Constant4' + * DataStoreRead: '/Data Store Read1' + * DataStoreWrite: '/Data Store Write7' + */ + if (rtDW.ErrorCalibration_private[i] != 0) { + rtDW.BUS_ADR_private[i] = rtConstP.pooled51[i]; + } else { + rtDW.BUS_ADR_private[i] = 0U; + } + + /* End of Switch: '/Switch' */ + /* DataStoreWrite: '/Data Store Write' */ rtDW.MODE_private[i] = 0U; - /* DataStoreWrite: '/Data Store Write1' incorporates: - * DataStoreRead: '/Data Store Read' - */ - rtDW.COM_private[i] = rtDW.ErrorCalibration_private[i]; + /* DataStoreWrite: '/Data Store Write1' */ + rtDW.COM_private[i] = 1U; } /* MATLAB Function: '/Normal Mode' incorporates: @@ -8275,15 +8445,27 @@ void HVAC_model_step(void) */ rtDW.Speed_private[i] = 3U; + /* Switch: '/Switch' incorporates: + * Constant: '/Constant3' + * Constant: '/Constant4' + * DataStoreRead: '/Data Store Read' + * DataStoreWrite: '/Data Store Write7' + */ + if (rtDW.ErrorCalibration_private[i] != 0) { + rtDW.BUS_ADR_private[i] = rtConstP.pooled51[i]; + } else { + rtDW.BUS_ADR_private[i] = 0U; + } + + /* End of Switch: '/Switch' */ + /* DataStoreWrite: '/Data Store Write' */ rtDW.POS_private[i] = 0U; - /* Product: '/Divide' incorporates: + /* DataStoreWrite: '/Data Store Write1' incorporates: * Constant: '/Constant9' - * DataStoreRead: '/Data Store Read' - * DataStoreWrite: '/Data Store Write1' */ - rtDW.COM_private[i] = (uint8_t)(rtDW.ErrorCalibration_private[i] * 3U); + rtDW.COM_private[i] = 3U; } /* MATLAB Function: '/Move to position Min' incorporates: @@ -8334,7 +8516,6 @@ void HVAC_model_step(void) * Logic: '/Logical Operator2' * RelationalOperator: '/Relational Operator' * RelationalOperator: '/Relational Operator1' - * SignalConversion generated from: '/Bus Selector' */ for (i = 0; i < 9; i++) { rtb_LogicalOperator3_c[i] = @@ -8372,7 +8553,6 @@ void HVAC_model_step(void) for (i = 0; i < 9; i++) { /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read1' - * SignalConversion generated from: '/Bus Selector' */ if (rtDW.ErrorCalibration_private[i] != 0) { rtDW.MinPositionCh0_private[i] = @@ -8392,7 +8572,6 @@ void HVAC_model_step(void) /* MATLAB Function: '/MIN POSITION' incorporates: * DataStoreRead: '/Data Store Read3' - * SignalConversion generated from: '/Bus Selector' */ /* : y = step; */ /* : if(LOGGER==2) */ @@ -8446,11 +8625,22 @@ void HVAC_model_step(void) * ActionPort: '/Action Port' */ for (i = 0; i < 9; i++) { - /* Product: '/Divide' incorporates: - * DataStoreRead: '/Data Store Read' - * DataStoreWrite: '/Data Store Write1' + /* Switch: '/Switch' incorporates: + * Constant: '/Constant1' + * Constant: '/Constant2' + * DataStoreRead: '/Data Store Read1' + * DataStoreWrite: '/Data Store Write7' */ - rtDW.COM_private[i] = (uint8_t)(rtDW.ErrorCalibration_private[i] << 1); + if (rtDW.ErrorCalibration_private[i] != 0) { + rtDW.BUS_ADR_private[i] = rtConstP.pooled51[i]; + } else { + rtDW.BUS_ADR_private[i] = 0U; + } + + /* End of Switch: '/Switch' */ + + /* DataStoreWrite: '/Data Store Write1' */ + rtDW.COM_private[i] = 2U; /* DataStoreWrite: '/Data Store Write' */ rtDW.POS_private[i] = 1U; @@ -8533,15 +8723,27 @@ void HVAC_model_step(void) */ rtDW.Speed_private[i] = 3U; + /* Switch: '/Switch' incorporates: + * Constant: '/Constant3' + * Constant: '/Constant4' + * DataStoreRead: '/Data Store Read1' + * DataStoreWrite: '/Data Store Write7' + */ + if (rtDW.ErrorCalibration_private[i] != 0) { + rtDW.BUS_ADR_private[i] = rtConstP.pooled51[i]; + } else { + rtDW.BUS_ADR_private[i] = 0U; + } + + /* End of Switch: '/Switch' */ + /* DataStoreWrite: '/Data Store Write' */ rtDW.POS_private[i] = 6000U; - /* Product: '/Divide' incorporates: + /* DataStoreWrite: '/Data Store Write1' incorporates: * Constant: '/Constant9' - * DataStoreRead: '/Data Store Read' - * DataStoreWrite: '/Data Store Write1' */ - rtDW.COM_private[i] = (uint8_t)(rtDW.ErrorCalibration_private[i] * 3U); + rtDW.COM_private[i] = 3U; } /* MATLAB Function: '/Move to position Max' incorporates: @@ -8592,7 +8794,6 @@ void HVAC_model_step(void) * Logic: '/Logical Operator2' * RelationalOperator: '/Relational Operator' * RelationalOperator: '/Relational Operator1' - * SignalConversion generated from: '/Bus Selector' */ for (i = 0; i < 9; i++) { rtb_LogicalOperator3_c[i] = @@ -8630,7 +8831,6 @@ void HVAC_model_step(void) for (i = 0; i < 9; i++) { /* Switch: '/Switch' incorporates: * DataStoreRead: '/Data Store Read1' - * SignalConversion generated from: '/Bus Selector' */ if (rtDW.ErrorCalibration_private[i] != 0) { rtDW.MaxPositionCh0_private[i] = @@ -8650,7 +8850,6 @@ void HVAC_model_step(void) /* MATLAB Function: '/MIN POSITION' incorporates: * DataStoreRead: '/Data Store Read2' - * SignalConversion generated from: '/Bus Selector' */ /* : y = step; */ /* : if(LOGGER==2) */ @@ -13153,6 +13352,28 @@ void HVAC_model_step(void) /* Model initialize function */ void HVAC_model_initialize(void) { + /* Registration code */ + + /* initialize error status */ + rtmSetErrorStatus(rtM, (NULL)); + + /* block I/O */ + (void) memset(((void *) &rtB), 0, + sizeof(B)); + + /* states (dwork) */ + (void) memset((void *)&rtDW, 0, + sizeof(DW)); + + /* exported global states */ + Actuator_Ch1_Status_Model = HVAC_model_rtZActuatorCmdBusInput; + Actuator_Ch2_Status_Model = HVAC_model_rtZActuatorCmdBusInput; + Actuator_Ch0_Status_Model = HVAC_model_rtZActuatorCmdBusInput; + Actuator_Ch0_Command_Model = HVAC_model_rtZActuatorCmdBus; + Status_Sensor_Model = HVAC_model_rtZCmdBusStatus; + CCU_Errors_Model = HVAC_model_rtZCmdBusError; + PWM_Get = HVAC_model_rtZCmdBusPWMGet; + { int32_t i; @@ -13174,6 +13395,38 @@ void HVAC_model_initialize(void) /* Start for DataStoreMemory: '/Data Store Memory5' */ rtDW.t_now = 10U; + + /* SystemInitialize for Merge: '/Merge' */ + rtB.Merge_b = 0U; + + /* SystemInitialize for MATLAB Function: '/Log Ambient Lv' */ + rtDW.current_Ambient_Lv_not_empty = false; + + /* SystemInitialize for IfAction SubSystem: '/Homing' */ + /* SystemInitialize for Merge: '/Merge' */ + rtB.Merge_h1 = 0; + + /* End of SystemInitialize for SubSystem: '/Homing' */ + + /* SystemInitialize for Merge: '/Merge' */ + rtB.Merge_l = 0; + + /* SystemInitialize for IfAction SubSystem: '/Start Control Front' */ + /* SystemInitialize for Merge: '/Merge' */ + rtB.Merge_h = 0; + + /* End of SystemInitialize for SubSystem: '/Start Control Front' */ + + /* SystemInitialize for IfAction SubSystem: '/Start Control Rear' */ + /* SystemInitialize for Merge: '/Merge' */ + rtB.Merge_c = 0; + + /* End of SystemInitialize for SubSystem: '/Start Control Rear' */ + + /* SystemInitialize for Test Sequence: '/Test Sequence' */ + rtDW.temporalCounter_i1 = 0U; + rtDW.is_active_c371_HVAC_model = 0U; + rtDW.is_c371_HVAC_model = IN_NO_ACTIVE_CHILD; } } diff --git a/HVAC_model.h b/HVAC_model.h index b244b86..e55b30c 100644 --- a/HVAC_model.h +++ b/HVAC_model.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'HVAC_model'. * - * Model version : 1.784 + * Model version : 1.786 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Tue Apr 14 14:42:16 2026 + * C/C++ source code generated on : Tue Apr 14 17:41:03 2026 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M @@ -25,6 +25,8 @@ #endif /* HVAC_model_COMMON_INCLUDES_ */ #include "HVAC_model_types.h" +#include +#include /* Macros for accessing real-time model data structure */ #ifndef rtmGetErrorStatus @@ -286,12 +288,23 @@ typedef struct { */ uint16_t ACT1_Value[9]; + /* Pooled Parameter (Expression: [1 2 3 4 5 6 7 8 9]) + * Referenced by: + * '/Constant1' + * '/Constant3' + * '/Constant3' + * '/Constant3' + * '/Constant1' + * '/Constant1' + */ + uint8_t pooled51[9]; + /* Pooled Parameter (Expression: ) * Referenced by: * '/Выбор режима Left' * '/Выбор режима Right' */ - uint8_t pooled59[6]; + uint8_t pooled60[6]; } ConstP; /* External outputs (root outports fed by signals with default storage) */ @@ -314,6 +327,13 @@ extern DW rtDW; /* External outputs (root outports fed by signals with default storage) */ extern ExtY rtY; +/* External data declarations for dependent source files */ +extern const CmdBusError HVAC_model_rtZCmdBusError;/* CmdBusError ground */ +extern const ActuatorCmdBusInput HVAC_model_rtZActuatorCmdBusInput;/* ActuatorCmdBusInput ground */ +extern const CmdBusStatus HVAC_model_rtZCmdBusStatus;/* CmdBusStatus ground */ +extern const ActuatorCmdBus HVAC_model_rtZActuatorCmdBus;/* ActuatorCmdBus ground */ +extern const CmdBusPWMGet HVAC_model_rtZCmdBusPWMGet;/* CmdBusPWMGet ground */ + /* Constant parameters (default storage) */ extern const ConstP rtConstP; @@ -767,10 +787,6 @@ extern RT_MODEL *const rtM; * Block '/Display1' : Unused code path elimination * Block '/Display' : Unused code path elimination * Block '/Display1' : Unused code path elimination - * Block '/Display' : Unused code path elimination - * Block '/Display1' : Unused code path elimination - * Block '/Display2' : Unused code path elimination - * Block '/Display3' : Unused code path elimination * Block '/Display' : Unused code path elimination * Block '/Display1' : Unused code path elimination * Block '/Display2' : Unused code path elimination @@ -798,7 +814,6 @@ extern RT_MODEL *const rtM; * Block '/Display' : Unused code path elimination * Block '/Display' : Unused code path elimination * Block '/Display3' : Unused code path elimination - * Block '/Display' : Unused code path elimination * Block '/Display' : Unused code path elimination * Block '/Display' : Unused code path elimination * Block '/Display1' : Unused code path elimination diff --git a/HVAC_model_data.c b/HVAC_model_data.c index da3d99a..32c8eae 100644 --- a/HVAC_model_data.c +++ b/HVAC_model_data.c @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'HVAC_model'. * - * Model version : 1.784 + * Model version : 1.786 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Tue Apr 14 14:42:16 2026 + * C/C++ source code generated on : Tue Apr 14 17:41:03 2026 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M @@ -598,6 +598,17 @@ const ConstP rtConstP = { */ { 1050U, 1250U, 1195U, 1315U, 1300U, 1485U, 1440U, 1195U, 1175U }, + /* Pooled Parameter (Expression: [1 2 3 4 5 6 7 8 9]) + * Referenced by: + * '/Constant1' + * '/Constant3' + * '/Constant3' + * '/Constant3' + * '/Constant1' + * '/Constant1' + */ + { 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U }, + /* Pooled Parameter (Expression: ) * Referenced by: * '/Выбор режима Left' diff --git a/HVAC_model_private.h b/HVAC_model_private.h index 2adbb67..2a822c4 100644 --- a/HVAC_model_private.h +++ b/HVAC_model_private.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'HVAC_model'. * - * Model version : 1.784 + * Model version : 1.786 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Tue Apr 14 14:42:16 2026 + * C/C++ source code generated on : Tue Apr 14 17:41:03 2026 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M diff --git a/HVAC_model_types.h b/HVAC_model_types.h index 8cb6631..3cc4e8b 100644 --- a/HVAC_model_types.h +++ b/HVAC_model_types.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'HVAC_model'. * - * Model version : 1.784 + * Model version : 1.786 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Tue Apr 14 14:42:16 2026 + * C/C++ source code generated on : Tue Apr 14 17:41:03 2026 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M diff --git a/Model_Task.c b/Model_Task.c index 85899fa..dca6d39 100644 --- a/Model_Task.c +++ b/Model_Task.c @@ -32,42 +32,70 @@ void ModelTask_Init( static bool setActuatorBusy(tModelTask *env) { - for (uint8_t i = 0; i < env->linTaskActuator1->LIN_ISSR_ALL; ++i) { - if (Actuator_Ch0_Command_Model.COM[i] != 0) { + if (env->triggerCommand1 == false){ - env->triggerCommand1 = true; + int result = memcmp(&env->triggerActuatorCmdBus_1, &Actuator_Ch0_Command_Model, sizeof(ActuatorCmdBus)); - memcpy(&env->triggerActuatorCmdBus_1, &Actuator_Ch0_Command_Model, sizeof(ActuatorCmdBus)); + if (result == 0) { + return false; + } - Actuator_Ch0_Status_Model.Busy = 1; - return true; + for (uint8_t i = 0; i < env->linTaskActuator1->LIN_ISSR_ALL; ++i) { + if (Actuator_Ch0_Command_Model.COM[i] != 0) { + + env->triggerCommand1 = true; + + memcpy(&env->triggerActuatorCmdBus_1, &Actuator_Ch0_Command_Model, sizeof(ActuatorCmdBus)); + +#if (LOG_LIN_ACTUATOR == 1) + LoggerInfoStatic(LOGGER, LOG_SIGN, "ACT1: TRIGGERED COMMAND (SET BUSY)") +#endif + Actuator_Ch0_Status_Model.Busy = 1; + return true; + } } } + /* - for (uint8_t i = 0; i < env->linTaskActuator2->LIN_ISSR_ALL; ++i) { - if (Actuator_Ch1_Command_Model.COM[i] != 0) { + if (env->triggerCommand2 == false) { - env->triggerCommand2 = true; + for (uint8_t i = 0; i < env->linTaskActuator2->LIN_ISSR_ALL; ++i) { + if (Actuator_Ch1_Command_Model.COM[i] != 0) { - memcpy(&env->triggerActuatorCmdBus_2, &Actuator_Ch1_Command_Model, sizeof(ActuatorCmdBus)); + env->triggerCommand2 = true; - Actuator_Ch1_Status_Model.Busy = 1; - return true; + memcpy(&env->triggerActuatorCmdBus_2, &Actuator_Ch1_Command_Model, sizeof(ActuatorCmdBus)); + +#if (LOG_LIN_ACTUATOR == 1) + LoggerInfoStatic(LOGGER, LOG_SIGN, "ACT2: TRIGGERED COMMAND (SET BUSY)") +#endif + + Actuator_Ch1_Status_Model.Busy = 1; + return true; + } } } - for (uint8_t i = 0; i < env->linTaskActuator3->LIN_ISSR_ALL; ++i) { - if (Actuator_Ch2_Command_Model.COM[i] != 0) { - env->triggerCommand3 = true; + if (env->triggerCommand3 == false) { - memcpy(&env->triggerActuatorCmdBus_3, &Actuator_Ch2_Command_Model, sizeof(ActuatorCmdBus)); + for (uint8_t i = 0; i < env->linTaskActuator3->LIN_ISSR_ALL; ++i) { + if (Actuator_Ch2_Command_Model.COM[i] != 0) { - Actuator_Ch2_Status_Model.Busy = 1; - return true; + env->triggerCommand3 = true; + + memcpy(&env->triggerActuatorCmdBus_3, &Actuator_Ch2_Command_Model, sizeof(ActuatorCmdBus)); + +#if (LOG_LIN_ACTUATOR == 1) + LoggerInfoStatic(LOGGER, LOG_SIGN, "ACT3: TRIGGERED COMMAND (SET BUSY)") +#endif + Actuator_Ch2_Status_Model.Busy = 1; + return true; + } } } */ + return false; } @@ -78,8 +106,8 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { rtDW.t_now = SystemGetMs(); HVAC_model_step(); - setActuatorBusy(env); env->isUpdate = true; + setActuatorBusy(env); osMutexRelease(env->access); } SystemDelayMs(100);