diff --git a/LinActuatorWork.c b/LinActuatorWork.c index fdda274..caf33c9 100644 --- a/LinActuatorWork.c +++ b/LinActuatorWork.c @@ -48,10 +48,12 @@ static void showLogCommand(tMma *env, char *LOG_SIGN, uint8_t BUS_ADR, uint8_t C } } +#if (LOG_LIN_ACTUATOR == 1) #define IS_LOGGING_ENABLED(numAct) \ ( (numAct == 1 && LOG_LIN1_ACTUATOR == 1) || \ (numAct == 2 && LOG_LIN2_ACTUATOR == 1) || \ (numAct == 3 && LOG_LIN3_ACTUATOR == 1) ) +#endif // actuator_Command_Model_local - Выход модели (команды для актуаторов) ЛОКАЛЬНО // actuator_Command_Model_trigger_local - Выход модели (команды для актуаторов) ЗАХВАТ @@ -86,12 +88,13 @@ void LinActuatorWork(tMma *env, tLinTaskActuator *linTaskActuator, uint8_t numAc #endif actuator_Output_Model_local->Busy = 0; // Разрешение обработки новой команды - env->isActuatorNoGetNextCommand = false; + env->isActuatorNoGetNextCommand[numAct - 1] = false; - // Установка входной команды в LIN_ACT_CFR_NONE + // Обнуляем команду в локальном буфере actuator_Command_Model_local->COM[i] = LIN_ACT_CFR_NONE; } + // ТОЛЬКО если команда не SUCCESSFUL, копируем новые данные linTaskActuator->linCommandActuator[i].COM = actuator_Command_Model_local->COM[i]; linTaskActuator->linCommandActuator[i].Stall_SET = actuator_Command_Model_local->Stall_SET[i]; linTaskActuator->linCommandActuator[i].Lnoise_SET = actuator_Command_Model_local->Lnoise_SET[i]; @@ -125,7 +128,7 @@ void LinActuatorWork(tMma *env, tLinTaskActuator *linTaskActuator, uint8_t numAc if (osMutexAcquire(env->ModelTask.access, 5000) == osOK) { // Если прията команда и актуатор не занят (может принимать команды) - if ((*triggerCommand == true) && (env->isActuatorNoGetNextCommand == false)) { + if ((*triggerCommand == true) && (env->isActuatorNoGetNextCommand[numAct - 1] == false)) { *triggerCommand = false; @@ -148,7 +151,7 @@ void LinActuatorWork(tMma *env, tLinTaskActuator *linTaskActuator, uint8_t numAc actuator_Output_Model_local->Busy = 1; // Запрещение обработки новой команды - env->isActuatorNoGetNextCommand = true; + env->isActuatorNoGetNextCommand[numAct - 1] = true; // начало --- ВЫХОД МОДЕЛИ ---------- diff --git a/MainModesArbiter.h b/MainModesArbiter.h index 5deadbb..f43ab76 100644 --- a/MainModesArbiter.h +++ b/MainModesArbiter.h @@ -96,7 +96,7 @@ typedef struct { ActuatorCmdBusInput actuator_Ch2_Input_Model_local_3; - bool isActuatorNoGetNextCommand; + bool isActuatorNoGetNextCommand[3]; } tMma;