Правки в задаче модели

This commit is contained in:
cfif 2026-08-26 14:09:19 +03:00
parent 23d7bef9a6
commit 75f09a30e2
1 changed files with 65 additions and 61 deletions

View File

@ -628,14 +628,13 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) {
rtDW.t_now = SystemGetMs(); rtDW.t_now = SystemGetMs();
//начало--------------------------------------------------ВХОД МОДЕЛИ ADC----------------------------------------------
getCmdBusADCData(env->adc0Task, &rtDW.ADC_Data_Model); getCmdBusADCData(env->adc0Task, &rtDW.ADC_Data_Model);
getCmdBusADC2Data(env->adc1Task,(CmdBusADC2Data *) &rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB);
//конец--------------------------------------------------ВХОД МОДЕЛИ ADC------------------------------------------------
getCmdBusADC2Data(env->adc1Task, //начало--------------------------------------------------ВХОД МОДЕЛИ PWM-----------------------------------------------
(CmdBusADC2Data *) &rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB);
//начало--------------------------------------------------PWM-----------------------------------------------------------
// PWM_Get.pwmPercentFront = env->pwms->pwmFrontCaptureIO.getPwm(env->pwms->pwmFrontCaptureIO.env); // PWM_Get.pwmPercentFront = env->pwms->pwmFrontCaptureIO.getPwm(env->pwms->pwmFrontCaptureIO.env);
// PWM_Get.pwmPercentRear = env->pwms->pwmRearCaptureIO.getPwm(env->pwms->pwmRearCaptureIO.env); // PWM_Get.pwmPercentRear = env->pwms->pwmRearCaptureIO.getPwm(env->pwms->pwmRearCaptureIO.env);
// PWM_Get.pwmPercentFrontReserved = env->pwms->pwmFrontCaptureIO.getPwm( // 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_Front = PWM_Get.pwmPercentFront * 10;
// model_Status_Pwm_For_Model_input.Pwm_Rear = PWM_Get.pwmPercentRear * 10; // model_Status_Pwm_For_Model_input.Pwm_Rear = PWM_Get.pwmPercentRear * 10;
//конец--------------------------------------------------PWM------------------------------------------------------------ //конец--------------------------------------------------ВХОД МОДЕЛИ PWM------------------------------------------------
//начало--------------------------------------------------CAN----------------------------------------------------------- //начало--------------------------------------------------ВХОД МОДЕЛИ CAN-----------------------------------------------
get_CanSpamReceiver(env->canSpamReceiver); get_CanSpamReceiver(env->canSpamReceiver);
// Если был захват в UDS (подмена)
if (model_Status_Set_For_Model_output.EMS == 1) { 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; 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; 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; 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_STAT1_WAKEUP_MODEL, (void *) &CCU_STAT1_MODEL_SAVE, memcpy((void *) &rtDW.CCU_STAT3_WAKEUP_MODEL, (void *) &CCU_STAT3_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT3_WakeUp_Bus));
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)); 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); Lin4_Output_Get_From_Model(env->lin4TaskSensor);
Lin5_Output_Get_From_Model(env->lin5TaskSensor); Lin5_Output_Get_From_Model(env->lin5TaskSensor);
//конец--------------------------------------------------ВХОД МОДЕЛИ LIN4 LIN5------------------------------------------
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
HVAC_model_step(); HVAC_model_step();
rtDW.sleep_model = 0; rtDW.sleep_model = 0;
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
//начало-------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ LIN5------------------------------------------
Lin5_Input_Set_From_Model(env->lin5TaskSensor); Lin5_Input_Set_From_Model(env->lin5TaskSensor);
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ LIN5------------------------------------------
//начало-------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ UDS-------------------------------------------
CanUdsOutput_Get_Model(env->canUds); CanUdsOutput_Get_Model(env->canUds);
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ UDS-------------------------------------------
//начало-------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ LIN1, LIN2, LIN3------------------------------
setActuatorBusy(env); setActuatorBusy(env);
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ LIN1, LIN2, LIN3------------------------------
//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ GPIO-----------------------------------------
//начало--------------------------------------------------GPIO----------------------------------------------------------
// Включение 5V (1 - ВКЛ) // Включение 5V (1 - ВКЛ)
GpioPinSet(&env->gpios->power.SW5V_EN, rtY.PowerEnable_Model.SW5V_EN); GpioPinSet(&env->gpios->power.SW5V_EN, rtY.PowerEnable_Model.SW5V_EN);
// Контроль напряжения борт-сети (1 - ВКЛ) // Контроль напряжения борт-сети (1 - ВКЛ)
@ -707,6 +716,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) {
env->PtcRelayDriver1_EN = rtY.PowerEnable_Model.PtcRelayDriver1_EN; env->PtcRelayDriver1_EN = rtY.PowerEnable_Model.PtcRelayDriver1_EN;
env->PtcRelayDriver2_EN = rtY.PowerEnable_Model.PtcRelayDriver2_EN; env->PtcRelayDriver2_EN = rtY.PowerEnable_Model.PtcRelayDriver2_EN;
// Для UDS (подмена)
if (model_Status_Set_For_Model_output.IO == 1) { if (model_Status_Set_For_Model_output.IO == 1) {
if (model_Status_IO_For_Model_output._2_Way_Valve == 0) { 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); env->PtcRelayDriver2_EN);
} }
// Для UDS
model_Status_IO_For_Model_input._2_Way_Valve = env->TwoWayValve_EN; 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_Front = env->Incar_Motor_Front_EN;
model_Status_IO_For_Model_input.IncarMotor_Rear = env->Incar_Motor_Rear_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; 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_ReservePowerOutput.EN_ReservePower, rtY.PowerEnable_Model.EN_ReservePower);
GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_PowerReserve.EN_PowerReserve, GpioPinSet(&env->gpios->power.BTS4175SGAXUMA1_PowerReserve.EN_PowerReserve,
rtY.PowerEnable_Model.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.ShutOffTXV_EN_Diag, true);
GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutOffTXV2_EN, GpioPinSet(&env->gpios->power.BTS5120_2EKA_ShutoffValvePowerTXV.ShutOffTXV2_EN,
rtY.PowerEnable_Model.ShutOffTXV2_EN); rtY.PowerEnable_Model.ShutOffTXV2_EN);
//конец--------------------------------------------------GPIO----------------------------------------------------------- //конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ GPIO------------------------------------------
//начало--------------------------------------------------PWM----------------------------------------------------------- //начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ PWM------------------------------------------
if (model_Status_Set_For_Model_output.Pwm == 1) { 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); 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, env->pwms->pwmRearReservedIo.setActivePercent(env->pwms->pwmRearReservedIo.env,
rtY.PWM_Get_f.pwmPercentRearReserved); rtY.PWM_Get_f.pwmPercentRearReserved);
} }
//конец--------------------------------------------------PWM------------------------------------------------------------ //конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ PWM-------------------------------------------
//начало-------------------------------------------------SlEEP---------------------------------------------------------- //начало-------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ SlEEP-----------------------------------------
if (isT15) { if (isT15) {
memcpy((void *) &CCU_STAT1_MODEL_SAVE, &rtY.CCU_Stat1_model, sizeof(CmdCAN_CCU_STAT1_Bus)); 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_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_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)); 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_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_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)); 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)); 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) { 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; 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; 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, memcpy(&env->ccu_candb_dbg_tx.dbg_Sen_Amb, &rtY.dbgCAN_dbg_Sen_Amb_model, sizeof(env->ccu_candb_dbg_tx.dbg_Sen_Amb));
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_Incar, &rtY.dbgCAN_dbg_Sen_Incar_model, memcpy(&env->ccu_candb_dbg_tx.dbg_Sen_0, &rtY.dbgCAN_dbg_Sen_0_model, sizeof(env->ccu_candb_dbg_tx.dbg_Sen_0));
sizeof(env->ccu_candb_dbg_tx.dbg_Sen_Incar)); 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_Sen_0, &rtY.dbgCAN_dbg_Sen_0_model, memcpy(&env->ccu_candb_dbg_tx.dbg_CCU_IO, &rtY.dbgCAN_CCU_IO_model, sizeof(env->ccu_candb_dbg_tx.dbg_CCU_IO));
sizeof(env->ccu_candb_dbg_tx.dbg_Sen_0)); 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_Ac, &rtY.dbg_Logic_Ac_model, memcpy(&env->ccu_candb_dbg_tx.dbg_Logic_State, &rtY.dbgCAN_Logic_State_model, sizeof(env->ccu_candb_dbg_tx.dbg_Logic_State));
sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Ac)); 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_CCU_IO, &rtY.dbgCAN_CCU_IO_model, memcpy(&env->ccu_candb_dbg_tx.dbg_Auto_Duct, &rtY.dbgCAN_Auto_Duct_model, sizeof(env->ccu_candb_dbg_tx.dbg_Auto_Duct));
sizeof(env->ccu_candb_dbg_tx.dbg_CCU_IO)); 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_Logic_Rec, &rtY.dbgCAN_Logic_Rec_model, memcpy(&env->ccu_candb_dbg_tx.dbg_Drs, &rtY.dbg_Drs_t_model, sizeof(env->ccu_candb_dbg_tx.dbg_Drs));
sizeof(env->ccu_candb_dbg_tx.dbg_Logic_Rec)); 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));
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));
/* /*
env->ccu_candb_dbg_tx.dbg_stat_PID.P_FUL = 501 + 2048; env->ccu_candb_dbg_tx.dbg_stat_PID.P_FUL = 501 + 2048;
env->ccu_candb_dbg_tx.dbg_stat_PID.I_FUL = 502 + 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------------------------------------------------------------ //конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ 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));
//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ Lin4-----------------------------------------
Lin4_Input_Set_From_Model(env->lin4TaskSensor); Lin4_Input_Set_From_Model(env->lin4TaskSensor);
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ Lin4------------------------------------------
//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ CAN DEBUG------------------------------------
set_CanDebugSpamTransmitter(env->canSpamDebugTransmitter, &env->ccu_candb_dbg_tx); set_CanDebugSpamTransmitter(env->canSpamDebugTransmitter, &env->ccu_candb_dbg_tx);
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ Lin4------------------------------------------
set_Dtc_state(env->diagnostic); //начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ CAN DEBUG------------------------------------
CanUdsInput_Set_Model(env->canUds); CanUdsInput_Set_Model(env->canUds);
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ UDS-------------------------------------------
//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------
set_Dtc_state(env->diagnostic);
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC-------------------------------------------
env->isRunning = true; env->isRunning = true;
osMutexRelease(env->access); osMutexRelease(env->access);