From 1a651de2bbaa5438115c9270fef18614d7e6605e Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 19 Dec 2025 17:20:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model_Task.c | 7 +- Model_Task.h | 4 +- Model_actuator.c | 165 +++++++++++++++++++++------------------ Model_actuator.h | 29 ++++--- Model_actuator_private.h | 6 +- Model_actuator_types.h | 4 +- 6 files changed, 117 insertions(+), 98 deletions(-) diff --git a/Model_Task.c b/Model_Task.c index 88e8e19..08efbae 100644 --- a/Model_Task.c +++ b/Model_Task.c @@ -16,22 +16,23 @@ void ModelTask_Init( env->thread.id = 0; } -static void setActuatorBusy() { +static bool setActuatorBusy() { for (uint8_t i = 0; i < 9; ++i) { if (rtY.Out1.COM[i] != 0) { rtU.in_Busy_Ch0 = 1; - return; + return true; } } + return false; } static _Noreturn void ModelTask_Thread(tModelTask *env) { for (;;) { if (osMutexAcquire(env->access, 1000) == osOK) { Model_actuator_step(); - setActuatorBusy(); + env->isActuatorOverrideBusy = setActuatorBusy(); osMutexRelease(env->access); } SystemDelayMs(100); diff --git a/Model_Task.h b/Model_Task.h index 1b7f47c..045ec4e 100644 --- a/Model_Task.h +++ b/Model_Task.h @@ -6,12 +6,14 @@ #define HVAC_M7_MODEL_TASK_H #include - +#include "stdbool.h" typedef struct { osMutexId_t access; + bool isActuatorOverrideBusy; + struct { osThreadId_t id; uint32_t stack[1024]; diff --git a/Model_actuator.c b/Model_actuator.c index af86b52..7767778 100644 --- a/Model_actuator.c +++ b/Model_actuator.c @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'Model_actuator'. * - * Model version : 1.538 + * Model version : 1.541 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Fri Dec 19 14:23:04 2025 + * C/C++ source code generated on : Fri Dec 19 16:49:11 2025 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M @@ -39,6 +39,32 @@ ExtY rtY; static RT_MODEL rtM_; RT_MODEL *const rtM = &rtM_; +/* + * 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, uint8_t + rtd_com_loc[9]) +{ + int32_t i; + + /* DataStoreWrite: '/Data Store Write3' */ + for (i = 0; i < 9; i++) { + rtd_com_loc[i] = 0U; + } + + /* End of DataStoreWrite: '/Data Store Write3' */ + + /* SignalConversion generated from: '/stepIn' */ + *rty_step = rtu_stepIn; +} + /* * Output and update for action system: * '/If Action Subsystem2' @@ -51,37 +77,37 @@ void IfActionSubsystem2(int8_t rtu_stepIn, int8_t *rty_step, uint8_t { int32_t i; for (i = 0; i < 9; i++) { - /* DataStoreWrite: '/Data Store Write1' incorporates: - * Constant: '/Constant1' + /* DataStoreWrite: '/Data Store Write1' incorporates: + * Constant: '/Constant1' */ rtd_stall_set_loc[i] = 0U; - /* DataStoreWrite: '/Data Store Write3' incorporates: - * Constant: '/Constant2' + /* DataStoreWrite: '/Data Store Write3' incorporates: + * Constant: '/Constant2' */ rtd_lnoise_set_loc[i] = 0U; - /* DataStoreWrite: '/Data Store Write2' */ - rtd_com_loc[i] = 2U; + /* DataStoreWrite: '/Data Store Write2' */ + rtd_com_loc[i] = 3U; - /* DataStoreWrite: '/Data Store Write4' incorporates: - * Constant: '/Constant4' + /* DataStoreWrite: '/Data Store Write4' incorporates: + * Constant: '/Constant4' */ rtd_autos_set_loc[i] = 0U; - /* DataStoreWrite: '/Data Store Write5' incorporates: - * Constant: '/Constant5' + /* DataStoreWrite: '/Data Store Write5' incorporates: + * Constant: '/Constant5' */ rtd_speed_set_loc[i] = 0U; - /* DataStoreWrite: '/Data Store Write6' incorporates: - * Constant: '/Constant6' + /* DataStoreWrite: '/Data Store Write6' incorporates: + * Constant: '/Constant6' */ rtd_coils_stop_set_loc[i] = 0U; } - /* Sum: '/step inc' incorporates: - * Constant: '/Constant' + /* Sum: '/step inc' incorporates: + * Constant: '/Constant' */ *rty_step = (int8_t)(rtu_stepIn + 1); } @@ -144,33 +170,30 @@ void Model_actuator_step(void) */ if ((rtU.in_Busy_Ch0 == 0) && (rtU.in_Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ for (i = 0; i < 9; i++) { - /* DataStoreWrite: '/Data Store Write2' */ + /* DataStoreWrite: '/Data Store Write2' */ rtDW.mode_loc[i] = 2U; - /* DataStoreWrite: '/Data Store Write3' */ - rtDW.com_loc[i] = 0U; + /* DataStoreWrite: '/Data Store Write3' */ + rtDW.com_loc[i] = 1U; } /* Merge: '/Merge' incorporates: - * Constant: '/Constant' + * Constant: '/Constant' * Merge: '/Merge' - * Sum: '/step inc' + * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch + 1); /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ - /* Merge: '/Merge' incorporates: - * Merge: '/Merge' - * SignalConversion generated from: '/stepIn' - */ - rtB.Merge = rtb_Switch; + /* Merge: '/Merge' */ + IfActionSubsystem3(rtb_Switch, &rtB.Merge, rtDW.com_loc); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } @@ -203,7 +226,7 @@ void Model_actuator_step(void) rtDW.pos_loc[i] = 6000U; /* DataStoreWrite: '/Data Store Write1' */ - rtDW.com_loc[i] = 1U; + rtDW.com_loc[i] = 2U; } /* Merge: '/Merge' incorporates: @@ -218,14 +241,17 @@ void Model_actuator_step(void) /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ + /* DataStoreWrite: '/Data Store Write3' */ + for (i = 0; i < 9; i++) { + rtDW.com_loc[i] = 0U; + } + + /* End of DataStoreWrite: '/Data Store Write3' */ + /* Merge: '/Merge' incorporates: * Merge: '/Merge' - * SignalConversion generated from: '/step' * SignalConversion generated from: '/stepIn1' */ - /* : y = step; */ - /* : coder.extrinsic('fprintf'); */ - /* : fprintf('Actuator else: step = %d\n', step); */ rtB.Merge = rtb_Switch; /* End of Outputs for SubSystem: '/If Action Subsystem3' */ @@ -252,33 +278,30 @@ void Model_actuator_step(void) */ if ((rtU.in_Busy_Ch0 == 0) && (rtU.in_Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ for (i = 0; i < 9; i++) { - /* DataStoreWrite: '/Data Store Write' */ + /* DataStoreWrite: '/Data Store Write' */ rtDW.mode_loc[i] = 0U; - /* DataStoreWrite: '/Data Store Write2' */ - rtDW.com_loc[i] = 0U; + /* DataStoreWrite: '/Data Store Write2' */ + rtDW.com_loc[i] = 1U; } /* Merge: '/Merge' incorporates: - * Constant: '/Constant' + * Constant: '/Constant' * Merge: '/Merge' - * Sum: '/step inc' + * Sum: '/step inc' */ rtB.Merge = (int8_t)(rtb_Switch + 1); /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ - /* Merge: '/Merge' incorporates: - * Merge: '/Merge' - * SignalConversion generated from: '/stepIn' - */ - rtB.Merge = rtb_Switch; + /* Merge: '/Merge' */ + IfActionSubsystem3(rtb_Switch, &rtB.Merge, rtDW.com_loc); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } @@ -304,7 +327,7 @@ void Model_actuator_step(void) */ if ((rtU.in_Busy_Ch0 == 0) && (rtU.in_Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ /* Merge: '/Merge' */ IfActionSubsystem2(rtb_Switch, &rtB.Merge, rtDW.autos_set_loc, @@ -315,13 +338,10 @@ void Model_actuator_step(void) /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ - /* Merge: '/Merge' incorporates: - * Merge: '/Merge' - * SignalConversion generated from: '/stepIn' - */ - rtB.Merge = rtb_Switch; + /* Merge: '/Merge' */ + IfActionSubsystem3(rtb_Switch, &rtB.Merge, rtDW.com_loc); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } @@ -371,11 +391,8 @@ void Model_actuator_step(void) /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ - /* Merge: '/Merge' incorporates: - * Merge: '/Merge' - * SignalConversion generated from: '/stepIn' - */ - rtB.Merge = rtb_Switch; + /* Merge: '/Merge' */ + IfActionSubsystem3(rtb_Switch, &rtB.Merge, rtDW.com_loc); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } @@ -408,7 +425,7 @@ void Model_actuator_step(void) rtDW.pos_loc[i] = 0U; /* DataStoreWrite: '/Data Store Write1' */ - rtDW.com_loc[i] = 1U; + rtDW.com_loc[i] = 2U; } /* Merge: '/Merge' incorporates: @@ -423,11 +440,8 @@ void Model_actuator_step(void) /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ - /* Merge: '/Merge' incorporates: - * Merge: '/Merge' - * SignalConversion generated from: '/stepIn' - */ - rtB.Merge = rtb_Switch; + /* Merge: '/Merge' */ + IfActionSubsystem3(rtb_Switch, &rtB.Merge, rtDW.com_loc); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } @@ -453,7 +467,7 @@ void Model_actuator_step(void) */ if ((rtU.in_Busy_Ch0 == 0) && (rtU.in_Error_Connect_Ch0 == 0)) { /* Outputs for IfAction SubSystem: '/If Action Subsystem2' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ /* Merge: '/Merge' */ IfActionSubsystem2(rtb_Switch, &rtB.Merge, rtDW.autos_set_loc, @@ -464,13 +478,10 @@ void Model_actuator_step(void) /* End of Outputs for SubSystem: '/If Action Subsystem2' */ } else { /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ - /* Merge: '/Merge' incorporates: - * Merge: '/Merge' - * SignalConversion generated from: '/stepIn' - */ - rtB.Merge = rtb_Switch; + /* Merge: '/Merge' */ + IfActionSubsystem3(rtb_Switch, &rtB.Merge, rtDW.com_loc); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } @@ -520,11 +531,8 @@ void Model_actuator_step(void) /* Outputs for IfAction SubSystem: '/If Action Subsystem3' incorporates: * ActionPort: '/Action Port' */ - /* Merge: '/Merge' incorporates: - * Merge: '/Merge' - * SignalConversion generated from: '/stepIn' - */ - rtB.Merge = rtb_Switch; + /* Merge: '/Merge' */ + IfActionSubsystem3(rtb_Switch, &rtB.Merge, rtDW.com_loc); /* End of Outputs for SubSystem: '/If Action Subsystem3' */ } @@ -544,6 +552,13 @@ void Model_actuator_step(void) /* Outputs for IfAction SubSystem: '/Homing' incorporates: * ActionPort: '/Action Port' */ + /* DataStoreWrite: '/Data Store Write3' */ + for (i = 0; i < 9; i++) { + rtDW.com_loc[i] = 0U; + } + + /* End of DataStoreWrite: '/Data Store Write3' */ + /* Merge: '/Merge' incorporates: * Constant: '/Constant2' * SignalConversion generated from: '/step' diff --git a/Model_actuator.h b/Model_actuator.h index 93f8a13..2739ae1 100644 --- a/Model_actuator.h +++ b/Model_actuator.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'Model_actuator'. * - * Model version : 1.538 + * Model version : 1.541 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Fri Dec 19 14:23:04 2025 + * C/C++ source code generated on : Fri Dec 19 16:49:11 2025 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M @@ -168,19 +168,18 @@ extern RT_MODEL *const rtM; * '' : 'Model_actuator/Initial CPOS Min/If Action Subsystem' * '' : 'Model_actuator/Initial CPOS Min/If Action Subsystem3' * '' : 'Model_actuator/Initial CPOS Min/Initial CPOS Min' - * '' : 'Model_actuator/Initial CPOS Min/If Action Subsystem3/Log Ambient Lv3' - * '' : 'Model_actuator/Move to position Max/If Action Subsystem2' - * '' : 'Model_actuator/Move to position Max/If Action Subsystem3' - * '' : 'Model_actuator/Move to position Max/Move to position Max' - * '' : 'Model_actuator/Move to position Min/If Action Subsystem2' - * '' : 'Model_actuator/Move to position Min/If Action Subsystem3' - * '' : 'Model_actuator/Move to position Min/Move to position Min' - * '' : 'Model_actuator/Normal Mode/If Action Subsystem2' - * '' : 'Model_actuator/Normal Mode/If Action Subsystem3' - * '' : 'Model_actuator/Normal Mode/Normal Mode' - * '' : 'Model_actuator/Stop Mode/If Action Subsystem2' - * '' : 'Model_actuator/Stop Mode/If Action Subsystem3' - * '' : 'Model_actuator/Stop Mode/stop mode' + * '' : 'Model_actuator/Move to position Max/If Action Subsystem2' + * '' : 'Model_actuator/Move to position Max/If Action Subsystem3' + * '' : 'Model_actuator/Move to position Max/Move to position Max' + * '' : 'Model_actuator/Move to position Min/If Action Subsystem2' + * '' : 'Model_actuator/Move to position Min/If Action Subsystem3' + * '' : 'Model_actuator/Move to position Min/Move to position Min' + * '' : 'Model_actuator/Normal Mode/If Action Subsystem2' + * '' : 'Model_actuator/Normal Mode/If Action Subsystem3' + * '' : 'Model_actuator/Normal Mode/Normal Mode' + * '' : 'Model_actuator/Stop Mode/If Action Subsystem2' + * '' : 'Model_actuator/Stop Mode/If Action Subsystem3' + * '' : 'Model_actuator/Stop Mode/stop mode' */ #endif /* Model_actuator_h_ */ diff --git a/Model_actuator_private.h b/Model_actuator_private.h index 65ff137..cce5f9a 100644 --- a/Model_actuator_private.h +++ b/Model_actuator_private.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'Model_actuator'. * - * Model version : 1.538 + * Model version : 1.541 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Fri Dec 19 14:23:04 2025 + * C/C++ source code generated on : Fri Dec 19 16:49:11 2025 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M @@ -22,6 +22,8 @@ #include "Model_actuator_types.h" #include "Model_actuator.h" +extern void IfActionSubsystem3(int8_t rtu_stepIn, int8_t *rty_step, uint8_t + rtd_com_loc[9]); extern void IfActionSubsystem2(int8_t rtu_stepIn, int8_t *rty_step, uint8_t rtd_autos_set_loc[9], uint8_t rtd_coils_stop_set_loc[9], uint8_t rtd_com_loc[9], uint8_t rtd_lnoise_set_loc[9], uint8_t rtd_speed_set_loc[9], uint8_t diff --git a/Model_actuator_types.h b/Model_actuator_types.h index 352f036..91cf11e 100644 --- a/Model_actuator_types.h +++ b/Model_actuator_types.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'Model_actuator'. * - * Model version : 1.538 + * Model version : 1.541 * Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 - * C/C++ source code generated on : Fri Dec 19 14:23:04 2025 + * C/C++ source code generated on : Fri Dec 19 16:49:11 2025 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex-M