From 5d0cdc248ccc24281dbcbea12eeb3e9fb8357612 Mon Sep 17 00:00:00 2001 From: cfif Date: Thu, 23 Jul 2026 16:47:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B?= =?UTF-8?q?=D0=B5=20IO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model_Task.c | 128 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 107 insertions(+), 21 deletions(-) diff --git a/Model_Task.c b/Model_Task.c index e72d962..0428826 100644 --- a/Model_Task.c +++ b/Model_Task.c @@ -276,6 +276,15 @@ static bool setActuatorBusy(tModelTask *env) { } static _Noreturn void ModelTask_Thread(tModelTask *env) { + bool TwoWayValve_EN; + bool EN_BATTChiller; + bool Incar_Motor_Front_EN ; + bool Incar_Motor_Rear_EN; + bool ShutOffFront_EN; + bool ShutOffRear_EN ; + bool PtcRelayDriver1_EN; + bool PtcRelayDriver2_EN; + for (;;) { if (osMutexAcquire(env->access, 1000) == osOK) { @@ -316,49 +325,123 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { HVAC_model_step(); - CanUdsInput_Set_Model(env->canUds); CanUdsOutput_Get_Model(env->canUds); setActuatorBusy(env); - // Включение 5V (0 - ВКЛ) - GpioPinSet(&env->gpios->power.SW5V_EN, rtY.PowerEnable_Model.SW5V_EN); -// GpioPinSet(&env->gpios->power.SW5V_EN, true); +//начало--------------------------------------------------GPIO---------------------------------------------------------- + // Включение 5V (1 - ВКЛ) + GpioPinSet(&env->gpios->power.SW5V_EN, rtY.PowerEnable_Model.SW5V_EN); // Контроль напряжения борт-сети (1 - ВКЛ) GpioPinSet(&env->gpios->power.PBATT_CK_EN, rtY.PowerEnable_Model.PBATT_CK_EN); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Front_EN, rtY.PowerEnable_Model.Incar_Motor_Front_EN); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_EN_Diag, true); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Rear_EN, rtY.PowerEnable_Model.Incar_Motor_Rear_EN); + TwoWayValve_EN = rtY.PowerEnable_Model.TwoWayValve_EN; + EN_BATTChiller = rtY.PowerEnable_Model.EN_BATTChiller; + Incar_Motor_Front_EN = rtY.PowerEnable_Model.Incar_Motor_Front_EN; + Incar_Motor_Rear_EN = rtY.PowerEnable_Model.Incar_Motor_Rear_EN; + ShutOffFront_EN = rtY.PowerEnable_Model.ShutOffFront_EN; + ShutOffRear_EN = rtY.PowerEnable_Model.ShutOffRear_EN; + PtcRelayDriver1_EN = rtY.PowerEnable_Model.PtcRelayDriver1_EN; + PtcRelayDriver2_EN = rtY.PowerEnable_Model.PtcRelayDriver2_EN; + + if (model_Status_Set_For_Model_output.IO == 1) { + + if (model_Status_IO_For_Model_output._2_Way_Valve == 0) { + TwoWayValve_EN = false; + } else { + TwoWayValve_EN = true; + } + + if (model_Status_IO_For_Model_output.IncarMotor_Front == 0) { + Incar_Motor_Front_EN = false; + } else { + Incar_Motor_Front_EN = true; + } + + if (model_Status_IO_For_Model_output.IncarMotor_Rear == 0) { + Incar_Motor_Rear_EN = false; + } else { + Incar_Motor_Rear_EN = true; + } + + if (model_Status_IO_For_Model_output.ShutOff_Chiller == 0) { + EN_BATTChiller = false; + } else { + EN_BATTChiller = true; + } + + if (model_Status_IO_For_Model_output.ShutOff_Front == 0) { + ShutOffFront_EN =false; + } else { + ShutOffFront_EN = true; + } + + if (model_Status_IO_For_Model_output.IncarMotor_Rear == 0) { + ShutOffRear_EN = false; + } else { + ShutOffRear_EN = true; + } + + if (model_Status_IO_For_Model_output.PTC_1 == 0) { + PtcRelayDriver1_EN = false; + } else { + PtcRelayDriver1_EN = true; + } + + if (model_Status_IO_For_Model_output.PTC_2 == 0) { + PtcRelayDriver2_EN = false; + } else { + PtcRelayDriver2_EN = true; + } + + } else { + + GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN,TwoWayValve_EN); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN_Diag, true); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.ReservePower_EN,rtY.PowerEnable_Model.ReservePower_EN); + + GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_ShutOFFValveBatteryChiller.EN_BATTChiller,EN_BATTChiller); + + GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Front_EN,Incar_Motor_Front_EN); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_EN_Diag, true); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Rear_EN,Incar_Motor_Rear_EN); + + GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOffFront_EN,ShutOffFront_EN); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOff_EN_Diag, true); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOffRear_EN,ShutOffRear_EN); + + GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver1_EN,PtcRelayDriver1_EN); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver_EN_Diag, true); + GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver2_EN,PtcRelayDriver2_EN); + } + + model_Status_IO_For_Model_input._2_Way_Valve = TwoWayValve_EN; + model_Status_IO_For_Model_input.IncarMotor_Front = Incar_Motor_Front_EN; + model_Status_IO_For_Model_input.IncarMotor_Rear = Incar_Motor_Rear_EN; + model_Status_IO_For_Model_input.ShutOff_Chiller = EN_BATTChiller; + model_Status_IO_For_Model_input.ShutOff_Front = ShutOffFront_EN; + model_Status_IO_For_Model_input.ShutOff_Rear = ShutOffRear_EN; + model_Status_IO_For_Model_input.PTC_1 = PtcRelayDriver1_EN; + model_Status_IO_For_Model_input.PTC_2 = PtcRelayDriver2_EN; + - GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN, rtY.PowerEnable_Model.TwoWayValve_EN); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN_Diag, true); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.ReservePower_EN, rtY.PowerEnable_Model.ReservePower_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); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver1_EN, rtY.PowerEnable_Model.PtcRelayDriver1_EN); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver_EN_Diag, true); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver2_EN, rtY.PowerEnable_Model.PtcRelayDriver2_EN); - GpioPinSet(&env->gpios->power.VN7008AJ_FrontLINActuatorPowerDriverAB.LIN_ActPower_AB, rtY.PowerEnable_Model.LIN_ActPower_AB); GpioPinSet(&env->gpios->power.VN7008AJ_FrontLINActuatorPowerDriverAB.EN_CurrentSensing_AB, true); GpioPinSet(&env->gpios->power.VN7008AJ_RearLINActuatorPowerDriverC.LIN_ActPower_C, rtY.PowerEnable_Model.LIN_ActPower_C); GpioPinSet(&env->gpios->power.VN7008AJ_RearLINActuatorPowerDriverC.EN_CurrentSensing_C, true); - GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_ShutOFFValveBatteryChiller.EN_BATTChiller, rtY.PowerEnable_Model.EN_BATTChiller); - - - GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOffFront_EN, rtY.PowerEnable_Model.ShutOffFront_EN); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOff_EN_Diag, true); - GpioPinSet(&env->gpios->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOffRear_EN, rtY.PowerEnable_Model.ShutOffRear_EN); - GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutOffTXV1_EN, rtY.PowerEnable_Model.ShutOffTXV1_EN); 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----------------------------------------------------------- + + //начало--------------------------------------------------PWM----------------------------------------------------------- if (model_Status_Set_For_Model_output.Pwm == 1) { @@ -450,6 +533,9 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { set_Dtc_state(env->diagnostic); + + CanUdsInput_Set_Model(env->canUds); + env->isRunning = true; osMutexRelease(env->access); } else {