From 6041caf0d76cb5bc121cd03f4c9e092a000cf9c8 Mon Sep 17 00:00:00 2001 From: cfif Date: Wed, 15 Apr 2026 12:09:44 +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 --- LinActuatorWork.c | 24 ++++++++++++------------ MainModesArbiter.h | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/LinActuatorWork.c b/LinActuatorWork.c index 4978a8d..5cd22c9 100644 --- a/LinActuatorWork.c +++ b/LinActuatorWork.c @@ -75,8 +75,12 @@ void LinActuatorWork(tMma *env, tLinTaskActuator *linTaskActuator, // Если команда выполнена if (linTaskActuator->linCommandActuator[i].COM == LIN_ACT_CFR_SUCCESSFUL) { #if (LOG_LIN_ACTUATOR == 1) -// LoggerInfoStatic(LOGGER, LOG_SIGN, "SUCCESSFUL COMMAND") + LoggerFormatInfo(LOGGER, LOG_SIGN, "BUS_ADR: %d - SUCCESSFUL COMMAND (UNSET BUSY)", i + 1) #endif + actuator_Output_Model_local->Busy = 0; + // Разрешение обработки новой команды + env->isActuatorNoGetNextCommand = false; + // Установка входной команды в LIN_ACT_CFR_NONE actuator_Command_Model_local->COM[i] = LIN_ACT_CFR_NONE; } @@ -100,11 +104,8 @@ void LinActuatorWork(tMma *env, tLinTaskActuator *linTaskActuator, actuator_Output_Model_local->in_Act_Reset[i] = linTaskActuator->linStateActuator[i].Reset_Slave; } - env->isActuatorWorkBusy = setBusy(linTaskActuator); - // Заполнение данных ВХОДЫ МОДЕЛИ actuator_Output_Model_local->Error_Connect = linTaskActuator->error_connect; - actuator_Output_Model_local->Busy = linTaskActuator->busy; // LoggerFormatInfo(LOGGER, LOG_SIGN, "Busy = %d Error_Connect = %d", actuator_Output_Model_local->Busy, actuator_Output_Model_local->Error_Connect) @@ -116,8 +117,11 @@ void LinActuatorWork(tMma *env, tLinTaskActuator *linTaskActuator, if (osMutexAcquire(env->ModelTask.access, 5000) == osOK) { - // Если принята команда - if (*triggerCommand == true) { + // Если прията команда и актуатор не занят (может принимать команды) + if ((*triggerCommand == true) && (env->isActuatorNoGetNextCommand == false)) { + + *triggerCommand = false; + #if (LOG_LIN_ACTUATOR == 1) if (isBroadCastTriggered(linTaskActuator, actuator_Command_Model_trigger_local)) { LoggerInfoStatic(LOGGER, LOG_SIGN, "DETECT COMMAND (BROADCAST):") @@ -131,13 +135,9 @@ void LinActuatorWork(tMma *env, tLinTaskActuator *linTaskActuator, #endif // actuator_Output_Model_local->Busy = 1; - } - // Если прията команда и актуатор не занят - if ((*triggerCommand == true) && (env->isActuatorWorkBusy == false)) { - - *triggerCommand = false; - env->isActuatorWorkBusy = true; + // Запрещение обработки новой команды + env->isActuatorNoGetNextCommand = true; // начало --- ВЫХОД МОДЕЛИ ---------- diff --git a/MainModesArbiter.h b/MainModesArbiter.h index 98b43b2..5deadbb 100644 --- a/MainModesArbiter.h +++ b/MainModesArbiter.h @@ -96,7 +96,7 @@ typedef struct { ActuatorCmdBusInput actuator_Ch2_Input_Model_local_3; - bool isActuatorWorkBusy; + bool isActuatorNoGetNextCommand; } tMma;