From 75f09a30e2183de8919f20a06553b1d05737aef0 Mon Sep 17 00:00:00 2001 From: cfif Date: Wed, 26 Aug 2026 14:09:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B5=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MODULES/HVAC_M7_MODEL/Model_Task.c | 126 +++++++++++++++-------------- 1 file changed, 65 insertions(+), 61 deletions(-) diff --git a/MODULES/HVAC_M7_MODEL/Model_Task.c b/MODULES/HVAC_M7_MODEL/Model_Task.c index cb3dd2a..9aa4987 100644 --- a/MODULES/HVAC_M7_MODEL/Model_Task.c +++ b/MODULES/HVAC_M7_MODEL/Model_Task.c @@ -628,14 +628,13 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { rtDW.t_now = SystemGetMs(); +//начало--------------------------------------------------ВХОД МОДЕЛИ ADC---------------------------------------------- getCmdBusADCData(env->adc0Task, &rtDW.ADC_Data_Model); + getCmdBusADC2Data(env->adc1Task,(CmdBusADC2Data *) &rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB); +//конец--------------------------------------------------ВХОД МОДЕЛИ ADC------------------------------------------------ - getCmdBusADC2Data(env->adc1Task, - (CmdBusADC2Data *) &rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB); - - -//начало--------------------------------------------------PWM----------------------------------------------------------- +//начало--------------------------------------------------ВХОД МОДЕЛИ PWM----------------------------------------------- // PWM_Get.pwmPercentFront = env->pwms->pwmFrontCaptureIO.getPwm(env->pwms->pwmFrontCaptureIO.env); // PWM_Get.pwmPercentRear = env->pwms->pwmRearCaptureIO.getPwm(env->pwms->pwmRearCaptureIO.env); // PWM_Get.pwmPercentFrontReserved = env->pwms->pwmFrontCaptureIO.getPwm( @@ -645,54 +644,64 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { // model_Status_Pwm_For_Model_input.Pwm_Front = PWM_Get.pwmPercentFront * 10; // model_Status_Pwm_For_Model_input.Pwm_Rear = PWM_Get.pwmPercentRear * 10; -//конец--------------------------------------------------PWM------------------------------------------------------------ +//конец--------------------------------------------------ВХОД МОДЕЛИ PWM------------------------------------------------ -//начало--------------------------------------------------CAN----------------------------------------------------------- +//начало--------------------------------------------------ВХОД МОДЕЛИ CAN----------------------------------------------- get_CanSpamReceiver(env->canSpamReceiver); + // Если был захват в UDS (подмена) if (model_Status_Set_For_Model_output.EMS == 1) { rtDW.CCUCAN_EMS_HVC_REQ_MSG_MODEL.EMS_eCompChiller_Req = model_Status_EMS_For_Model_output.EMS_Chiller_Req; } model_Status_EMS_For_Model_input.EMS_Chiller_Req = rtDW.CCUCAN_EMS_HVC_REQ_MSG_MODEL.EMS_eCompChiller_Req; - bool isT15 = rtDW.CCUCAN_BCM_VEH_STATE_model.BCM_T15_Stat; -//конец--------------------------------------------------CAN------------------------------------------------------------ +//конец--------------------------------------------------ВХОД МОДЕЛИ CAN------------------------------------------------ +//начало-------------------------------------------------ВХОД МОДЕЛИ SlEEP---------------------------------------------- -//начало-------------------------------------------------SlEEP---------------------------------------------------------- - - memcpy((void *) &rtDW.CCU_STAT1_WAKEUP_MODEL, (void *) &CCU_STAT1_MODEL_SAVE, - sizeof(CmdCAN_CCU_STAT1_WakeUp_Bus)); - memcpy((void *) &rtDW.CCU_STAT2_WAKEUP_MODEL, (void *) &CCU_STAT2_MODEL_SAVE, - sizeof(CmdCAN_CCU_STAT2_WakeUp_Bus)); - memcpy((void *) &rtDW.CCU_STAT3_WAKEUP_MODEL, (void *) &CCU_STAT3_MODEL_SAVE, - sizeof(CmdCAN_CCU_STAT3_WakeUp_Bus)); + memcpy((void *) &rtDW.CCU_STAT1_WAKEUP_MODEL, (void *) &CCU_STAT1_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT1_WakeUp_Bus)); + memcpy((void *) &rtDW.CCU_STAT2_WAKEUP_MODEL, (void *) &CCU_STAT2_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT2_WakeUp_Bus)); + memcpy((void *) &rtDW.CCU_STAT3_WAKEUP_MODEL, (void *) &CCU_STAT3_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT3_WakeUp_Bus)); memcpy((void *) &rtDW.CCU_Msg1_WakeUp_model, (void *) &CCU_MSG1_MODEL_SAVE, sizeof(CCU_Msg1_WakeUp_Bus)); +//конец--------------------------------------------------ВХОД МОДЕЛИ SLEEP---------------------------------------------- -//конец--------------------------------------------------SLEEP---------------------------------------------------------- - +//начало-------------------------------------------------ВХОД МОДЕЛИ LIN4 LIN5------------------------------------------ Lin4_Output_Get_From_Model(env->lin4TaskSensor); Lin5_Output_Get_From_Model(env->lin5TaskSensor); +//конец--------------------------------------------------ВХОД МОДЕЛИ LIN4 LIN5------------------------------------------ - +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ HVAC_model_step(); - rtDW.sleep_model = 0; +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ + + +//начало-------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ LIN5------------------------------------------ Lin5_Input_Set_From_Model(env->lin5TaskSensor); +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ LIN5------------------------------------------ +//начало-------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ UDS------------------------------------------- CanUdsOutput_Get_Model(env->canUds); +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ UDS------------------------------------------- - +//начало-------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ LIN1, LIN2, LIN3------------------------------ setActuatorBusy(env); +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ LIN1, LIN2, LIN3------------------------------ - -//начало--------------------------------------------------GPIO---------------------------------------------------------- +//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ GPIO----------------------------------------- // Включение 5V (1 - ВКЛ) GpioPinSet(&env->gpios->power.SW5V_EN, rtY.PowerEnable_Model.SW5V_EN); // Контроль напряжения борт-сети (1 - ВКЛ) @@ -707,6 +716,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { env->PtcRelayDriver1_EN = rtY.PowerEnable_Model.PtcRelayDriver1_EN; env->PtcRelayDriver2_EN = rtY.PowerEnable_Model.PtcRelayDriver2_EN; + // Для UDS (подмена) if (model_Status_Set_For_Model_output.IO == 1) { if (model_Status_IO_For_Model_output._2_Way_Valve == 0) { @@ -785,6 +795,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { env->PtcRelayDriver2_EN); } + // Для UDS model_Status_IO_For_Model_input._2_Way_Valve = env->TwoWayValve_EN; model_Status_IO_For_Model_input.IncarMotor_Front = env->Incar_Motor_Front_EN; model_Status_IO_For_Model_input.IncarMotor_Rear = env->Incar_Motor_Rear_EN; @@ -795,7 +806,6 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { model_Status_IO_For_Model_input.PTC_2 = env->PtcRelayDriver2_EN; - // GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_ReservePowerOutput.EN_ReservePower, rtY.PowerEnable_Model.EN_ReservePower); GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_PowerReserve.EN_PowerReserve, rtY.PowerEnable_Model.EN_PowerReserve); @@ -813,11 +823,11 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutOffTXV_EN_Diag, true); GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutOffTXV2_EN, rtY.PowerEnable_Model.ShutOffTXV2_EN); -//конец--------------------------------------------------GPIO----------------------------------------------------------- +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ GPIO------------------------------------------ -//начало--------------------------------------------------PWM----------------------------------------------------------- +//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ PWM------------------------------------------ if (model_Status_Set_For_Model_output.Pwm == 1) { env->pwms->pwmFrontIo.setActivePercent(env->pwms->pwmFrontIo.env, model_Status_Pwm_For_Model_output.Pwm_Front / 10); @@ -836,18 +846,18 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { env->pwms->pwmRearReservedIo.setActivePercent(env->pwms->pwmRearReservedIo.env, rtY.PWM_Get_f.pwmPercentRearReserved); } -//конец--------------------------------------------------PWM------------------------------------------------------------ +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ PWM------------------------------------------- -//начало-------------------------------------------------SlEEP---------------------------------------------------------- +//начало-------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ SlEEP----------------------------------------- if (isT15) { memcpy((void *) &CCU_STAT1_MODEL_SAVE, &rtY.CCU_Stat1_model, sizeof(CmdCAN_CCU_STAT1_Bus)); memcpy((void *) &CCU_STAT2_MODEL_SAVE, &rtY.CCU_Stat2_model, sizeof(CmdCAN_CCU_STAT2_Bus)); memcpy((void *) &CCU_STAT3_MODEL_SAVE, &rtY.CCU_Stat3_model, sizeof(CmdCAN_CCU_STAT3_Bus)); memcpy((void *) &CCU_MSG1_MODEL_SAVE, &rtY.CCU_Msg1_model, sizeof(CCU_Msg1_Bus)); } -//конец--------------------------------------------------SLEEP---------------------------------------------------------- +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ SLEEP----------------------------------------- -//начало--------------------------------------------------CAN----------------------------------------------------------- +//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ CAN------------------------------------------ memcpy(&env->ccu_candb_tx.CCU_Errors, &rtY.CCU_Errors_model, sizeof(env->ccu_candb_tx.CCU_Errors)); memcpy(&env->ccu_candb_tx.CCU_Stat1, &rtY.CCU_Stat1_model, sizeof(env->ccu_candb_tx.CCU_Stat1)); memcpy(&env->ccu_candb_tx.CCU_Stat2, &rtY.CCU_Stat2_model, sizeof(env->ccu_candb_tx.CCU_Stat2)); @@ -857,6 +867,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { memcpy(&env->ccu_candb_tx.CCU_Msg1, &rtY.CCU_Msg1_model, sizeof(env->ccu_candb_tx.CCU_Msg1)); + // Для UDS (подмена) if (model_Status_Set_For_Model_output.eComp == 1) { env->ccu_candb_tx.CCU_HVC_Req_Msg.CCU_eCompSpeedReq_Val_ro = model_Status_eComp_For_Model_output.Pwm_Front; @@ -927,29 +938,18 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { model_Status_Pwm_For_Model_input.Pwm_Rear = env->ccu_candb_dbg_tx.dbg_Logic_Blower.Logic_Blower_Pwm_Rear * 10; - memcpy(&env->ccu_candb_dbg_tx.dbg_Sen_Amb, &rtY.dbgCAN_dbg_Sen_Amb_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Sen_Amb)); - memcpy(&env->ccu_candb_dbg_tx.dbg_Sen_Incar, &rtY.dbgCAN_dbg_Sen_Incar_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Sen_Incar)); - memcpy(&env->ccu_candb_dbg_tx.dbg_Sen_0, &rtY.dbgCAN_dbg_Sen_0_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Sen_0)); - memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_Ac, &rtY.dbg_Logic_Ac_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Ac)); - memcpy(&env->ccu_candb_dbg_tx.dbg_CCU_IO, &rtY.dbgCAN_CCU_IO_model, - sizeof(env->ccu_candb_dbg_tx.dbg_CCU_IO)); - memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_Rec, &rtY.dbgCAN_Logic_Rec_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Rec)); - memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_State, &rtY.dbgCAN_Logic_State_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Logic_State)); - - memcpy(&env->ccu_candb_dbg_tx.dbg_Auto_AF, &rtY.dbgCAN_Auto_AF_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Auto_AF)); - memcpy(&env->ccu_candb_dbg_tx.dbg_Auto_Duct, &rtY.dbgCAN_Auto_Duct_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Auto_Duct)); - - memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_Valve, &rtY.dbg_Logic_Valve_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Valve)); - + memcpy(&env->ccu_candb_dbg_tx.dbg_Sen_Amb, &rtY.dbgCAN_dbg_Sen_Amb_model, sizeof(env->ccu_candb_dbg_tx.dbg_Sen_Amb)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Sen_Incar, &rtY.dbgCAN_dbg_Sen_Incar_model, sizeof(env->ccu_candb_dbg_tx.dbg_Sen_Incar)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Sen_0, &rtY.dbgCAN_dbg_Sen_0_model, sizeof(env->ccu_candb_dbg_tx.dbg_Sen_0)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_Ac, &rtY.dbg_Logic_Ac_model, sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Ac)); + memcpy(&env->ccu_candb_dbg_tx.dbg_CCU_IO, &rtY.dbgCAN_CCU_IO_model, sizeof(env->ccu_candb_dbg_tx.dbg_CCU_IO)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_Rec, &rtY.dbgCAN_Logic_Rec_model, sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Rec)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_State, &rtY.dbgCAN_Logic_State_model, sizeof(env->ccu_candb_dbg_tx.dbg_Logic_State)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Auto_AF, &rtY.dbgCAN_Auto_AF_model, sizeof(env->ccu_candb_dbg_tx.dbg_Auto_AF)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Auto_Duct, &rtY.dbgCAN_Auto_Duct_model, sizeof(env->ccu_candb_dbg_tx.dbg_Auto_Duct)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_Valve, &rtY.dbg_Logic_Valve_model, sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Valve)); + memcpy(&env->ccu_candb_dbg_tx.dbg_Drs, &rtY.dbg_Drs_t_model, sizeof(env->ccu_candb_dbg_tx.dbg_Drs)); + memcpy(&env->ccu_candb_dbg_tx.dbg_LIN_AirQS_Stat, &rtY.dbg_LIN_AirQS_Stat_t_model, sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Valve)); /* env->ccu_candb_dbg_tx.dbg_stat_PID.P_FUL = 501 + 2048; env->ccu_candb_dbg_tx.dbg_stat_PID.I_FUL = 502 + 2048; @@ -984,19 +984,23 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { -//конец--------------------------------------------------CAN------------------------------------------------------------ - - memcpy(&env->ccu_candb_dbg_tx.dbg_Drs, &rtY.dbg_Drs_t_model, sizeof(env->ccu_candb_dbg_tx.dbg_Drs)); - memcpy(&env->ccu_candb_dbg_tx.dbg_LIN_AirQS_Stat, &rtY.dbg_LIN_AirQS_Stat_t_model, - sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Valve)); +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ CAN------------------------------------------- +//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ Lin4----------------------------------------- Lin4_Input_Set_From_Model(env->lin4TaskSensor); +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ Lin4------------------------------------------ +//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ CAN DEBUG------------------------------------ set_CanDebugSpamTransmitter(env->canSpamDebugTransmitter, &env->ccu_candb_dbg_tx); +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ Lin4------------------------------------------ - set_Dtc_state(env->diagnostic); - +//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ CAN DEBUG------------------------------------ CanUdsInput_Set_Model(env->canUds); +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ UDS------------------------------------------- + +//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------ + set_Dtc_state(env->diagnostic); +//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------- env->isRunning = true; osMutexRelease(env->access);