Добавлены некоторые IO

This commit is contained in:
cfif 2026-07-23 16:47:11 +03:00
parent af6260fc86
commit 5d0cdc248c
1 changed files with 107 additions and 21 deletions

View File

@ -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 {