diff --git a/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c b/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c index d2b4630..1db82de 100644 --- a/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c +++ b/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c @@ -64,14 +64,45 @@ void CanSpamReceiver_Init(tCanSpamReceiver *env, env->logger = logger; env->access = osMutexNew(NULL); - for (uint32_t i = 0; i < CAN_MONITOR_COUNT; i++) { - FrameMonitor_t *mon = g_can_monitors[i].monitor; - mon->timeout_cycle = 3000; - } +// for (uint32_t i = 0; i < CAN_MONITOR_COUNT; i++) { +// FrameMonitor_t *mon = g_can_monitors[i].monitor; +// mon->timeout_cycle = 3000; +// } + + g_can_monitors[CAN_IDX_ESC_04].monitor->timeout_cycle = ESC_04_CYC * 5; // 0 + g_can_monitors[CAN_IDX_EMS_VEH].monitor->timeout_cycle = EMS_Veh_CYC * 5; // 1 + g_can_monitors[CAN_IDX_BCM_POWERTRAIN].monitor->timeout_cycle = BCM_Powertrain_CYC * 5; // 2 + g_can_monitors[CAN_IDX_EMS_VEH_02].monitor->timeout_cycle = EMS_Veh_02_CYC * 5; // 3 + g_can_monitors[CAN_IDX_BCM_EEM].monitor->timeout_cycle = BCM_EEM_CYC * 5; // 4 + g_can_monitors[CAN_IDX_DMFR_MSG1].monitor->timeout_cycle = DMFR_Msg1_CYC * 5; // 5 + g_can_monitors[CAN_IDX_DMFL_MSG1].monitor->timeout_cycle = DMFL_Msg1_CYC * 5; // 6 + g_can_monitors[CAN_IDX_TM_STAT].monitor->timeout_cycle = TM_Stat_CYC * 5; // 7 + g_can_monitors[CAN_IDX_TM_CP].monitor->timeout_cycle = TM_CP_CYC * 5; // 8 + g_can_monitors[CAN_IDX_HVC_CCU_STATUS_MSG].monitor->timeout_cycle = HVC_CCU_Status_Msg_CYC * 5; // 9 + g_can_monitors[CAN_IDX_BCM_VEH_STATE].monitor->timeout_cycle = BCM_VEH_STATE_CYC * 5; // 10 + g_can_monitors[CAN_IDX_EMS_HVC_REQ_MSG].monitor->timeout_cycle = EMS_HVC_Req_Msg_CYC * 5; // 11 + g_can_monitors[CAN_IDX_HVC_ERR_STATUS_MSG].monitor->timeout_cycle = HVC_Err_Status_Msg_CYC * 5; // 12 + g_can_monitors[CAN_IDX_BCM_CLIMATIC_DATA].monitor->timeout_cycle = BCM_CLIMATIC_DATA_CYC * 5; // 13 + g_can_monitors[CAN_IDX_VCU_CCU_REQ].monitor->timeout_cycle = VCU_CCU_Req_CYC * 5; // 14 + g_can_monitors[CAN_IDX_ESC_08].monitor->timeout_cycle = ESC_08_CYC * 5; // 15 + g_can_monitors[CAN_IDX_SMFL_STATUS].monitor->timeout_cycle = SMFL_status_CYC * 5; // 16 + g_can_monitors[CAN_IDX_SMFR_STATUS].monitor->timeout_cycle = SMFR_status_CYC * 5; // 17 + g_can_monitors[CAN_IDX_SMRL_STATUS].monitor->timeout_cycle = SMRL_status_CYC * 5; // 18 + g_can_monitors[CAN_IDX_SMRR_STATUS].monitor->timeout_cycle = SMRR_status_CYC * 5; // 19 + g_can_monitors[CAN_IDX_SDM_CMD].monitor->timeout_cycle = 0; // 20 + g_can_monitors[CAN_IDX_VEH_VIN].monitor->timeout_cycle = 45000; // 21 + g_can_monitors[CAN_IDX_OCUFL_MSG].monitor->timeout_cycle = OCUFL_MSG_CYC * 5; // 22 + g_can_monitors[CAN_IDX_OCUFR_MSG].monitor->timeout_cycle = OCUFR_MSG_CYC * 5; // 23 + g_can_monitors[CAN_IDX_OCURL_MSG].monitor->timeout_cycle = OCURL_MSG_CYC * 5; // 24 + g_can_monitors[CAN_IDX_OCURR_MSG].monitor->timeout_cycle = OCURR_MSG_CYC * 5; // 25 + g_can_monitors[CAN_IDX_DW_STATE].monitor->timeout_cycle = DW_STATE_CYC * 5; // 26 + g_can_monitors[CAN_IDX_FIU_CCU1].monitor->timeout_cycle = 0; // 27 + g_can_monitors[CAN_IDX_FIU_CCU2].monitor->timeout_cycle = 0; // 28 + g_can_monitors[CAN_IDX_FIU_CCU3].monitor->timeout_cycle = 0; // 29 // VIN - FrameMonitor_t *vin_mon = g_can_monitors[CAN_IDX_VEH_VIN].monitor; - vin_mon->timeout_cycle = 45000; // 45 секунд для VIN +// FrameMonitor_t *vin_mon = g_can_monitors[CAN_IDX_VEH_VIN].monitor; +// vin_mon->timeout_cycle = 45000; // 45 секунд для VIN /* env->ccu_candb_rx_LOCAL_HVAC_VIN = osMessageQueueNew(1, 17, NULL); @@ -353,7 +384,8 @@ bool get_is_NoNull_CanSpam_BCM_PowerTrain_Receiver(tCanSpamReceiver *env) { return false; } -void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE) { +void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, + ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE) { osStatus_t status = osOK; diff --git a/MODULES/HVAC_M7_CanPorts/CanPorts.c b/MODULES/HVAC_M7_CanPorts/CanPorts.c index de35da2..a940e0b 100644 --- a/MODULES/HVAC_M7_CanPorts/CanPorts.c +++ b/MODULES/HVAC_M7_CanPorts/CanPorts.c @@ -165,7 +165,7 @@ const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoft */ -#define countIdCanHardSoftFilterCan0 (14 + 8) +#define countIdCanHardSoftFilterCan0 (28) const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoftFilterCan0] = { {FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF, PROTOCOL_CAN_UDS}, {FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF, PROTOCOL_CAN_UDS}, @@ -177,23 +177,23 @@ const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoft {FLEXCAN_ID_STD, DMFL_Msg1_CANID, 0x7FF, PROTOCOL_CAN_RAW}, //! // {FLEXCAN_ID_STD, TM_Stat_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, TM_CP_CANID, 0x7FF, PROTOCOL_CAN_RAW}, -// {FLEXCAN_ID_STD, HVC_CCU_Status_Msg_CANID, 0x7FF, PROTOCOL_CAN_RAW}, + {FLEXCAN_ID_STD, HVC_CCU_Status_Msg_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, BCM_VEH_STATE_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, EMS_HVC_Req_Msg_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, HVC_Err_Status_Msg_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, BCM_CLIMATIC_DATA_CANID, 0x7FF, PROTOCOL_CAN_RAW}, // {FLEXCAN_ID_STD, VCU_CCU_Req_CANID, 0x7FF, PROTOCOL_CAN_RAW}, -// {FLEXCAN_ID_STD, ESC_08_CANID, 0x7FF, PROTOCOL_CAN_RAW}, + {FLEXCAN_ID_STD, ESC_08_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, SMFL_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},//! {FLEXCAN_ID_STD, SMFR_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},//! {FLEXCAN_ID_STD, SMRL_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},//! {FLEXCAN_ID_STD, SMRR_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},//! // {FLEXCAN_ID_STD, SDM_Cmd_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, VEH_VIN_CANID, 0x7FF, PROTOCOL_CAN_RAW}, -// {FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}, -// {FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}, -// {FLEXCAN_ID_STD, OCURL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}, -// {FLEXCAN_ID_STD, OCURR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}, + {FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}, + {FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}, + {FLEXCAN_ID_STD, OCURL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}, + {FLEXCAN_ID_STD, OCURR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}, // {FLEXCAN_ID_STD, DW_STATE_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, FIU_CCU1_CANID, 0x7FF, PROTOCOL_CAN_RAW}, {FLEXCAN_ID_STD, FIU_CCU2_CANID, 0x7FF, PROTOCOL_CAN_RAW}, diff --git a/MODULES/HVAC_M7_MODEL/Model_Task.c b/MODULES/HVAC_M7_MODEL/Model_Task.c index 5f1ab5f..0315416 100644 --- a/MODULES/HVAC_M7_MODEL/Model_Task.c +++ b/MODULES/HVAC_M7_MODEL/Model_Task.c @@ -709,11 +709,11 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { Lin5_Output_Get_From_Model(env->lin5TaskSensor, env->LIN5_ERROR_MISSING); //конец--------------------------------------------------ВХОД МОДЕЛИ LIN4 LIN5------------------------------------------ -//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ -//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ -//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ -//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ -//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------ +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------------------------------------- +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------------------------------------- +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------------------------------------- +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------------------------------------- +//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------------------------------------- HVAC_model_step(); rtDW.sleep_model = 0; @@ -900,9 +900,9 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { //начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------ memcpy(env->dtc_state_error, rtY.dtc_state_error_model, sizeof(env->dtc_state_error)); - //==============================================DTC========================================================= - //==============================================DTC========================================================= - //==============================================DTC========================================================= + //==============================================DTC=============================================================================================== + //==============================================DTC=============================================================================================== + //==============================================DTC=============================================================================================== if (SystemGetMs() > timeDTC) { set_Dtc_state(env->diagnostic, &env->ccu_candb_tx.CCU_Errors, env->dtc_state_error, @@ -976,19 +976,13 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { if (model_Status_Set_For_Model_output.Pwm == 1) { - - env->ccu_candb_dbg_tx.dbg_Logic_Blower.Logic_Blower_Pwm_Front = - model_Status_Pwm_For_Model_output.Pwm_Front / 10; - env->ccu_candb_dbg_tx.dbg_Logic_Blower.Logic_Blower_Pwm_Rear = - model_Status_Pwm_For_Model_output.Pwm_Rear / 10; + env->ccu_candb_dbg_tx.dbg_Logic_Blower.Logic_Blower_Pwm_Front = model_Status_Pwm_For_Model_output.Pwm_Front / 10; + env->ccu_candb_dbg_tx.dbg_Logic_Blower.Logic_Blower_Pwm_Rear = model_Status_Pwm_For_Model_output.Pwm_Rear / 10; } - model_Status_Pwm_For_Model_input.Pwm_Front = - env->ccu_candb_dbg_tx.dbg_Logic_Blower.Logic_Blower_Pwm_Front * 10; - 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_Front = env->ccu_candb_dbg_tx.dbg_Logic_Blower.Logic_Blower_Pwm_Front * 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, 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)); diff --git a/MODULES/HVAC_M7_StatusData/DiagnosticTask.c b/MODULES/HVAC_M7_StatusData/DiagnosticTask.c index d2fb8c7..61c43b8 100644 --- a/MODULES/HVAC_M7_StatusData/DiagnosticTask.c +++ b/MODULES/HVAC_M7_StatusData/DiagnosticTask.c @@ -371,31 +371,36 @@ setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, ccu_candb_erro } } - if ((CAN_ERROR_MISSLE->EMS_Veh) || (time > timeCanSpamReceiver)) { + // U010087 (EMS/VCU) - 0x298 OR 0x150 OR 0x153 - OK + if ((CAN_ERROR_MISSLE->EMS_HVC_Req_Msg) || (CAN_ERROR_MISSLE->EMS_Veh) || (CAN_ERROR_MISSLE->EMS_Veh_02) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_ECM_PCM] = DTC_TEST_FAILED_CONFIRMED; } else { dtc_state_error_model[DTC_LOST_COMM_ECM_PCM] = dtc_state_error[DTC_LOST_COMM_ECM_PCM] & (~(DTC_TEST_FAILED)); } - if ((CAN_ERROR_MISSLE->ESC_04) || (time > timeCanSpamReceiver)) { + // U012287 (ESP)- 0x100 OR 0x3C1 - OK + if ((CAN_ERROR_MISSLE->ESC_04) || (CAN_ERROR_MISSLE->ESC_08) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_ESP] = DTC_TEST_FAILED_CONFIRMED; } else { dtc_state_error_model[DTC_LOST_COMM_ESP] = dtc_state_error[DTC_LOST_COMM_ESP] & (~(DTC_TEST_FAILED)); } - if ((CAN_ERROR_MISSLE->BCM_Powertrain) || (time > timeCanSpamReceiver)) { + // U014187 (BCM) - 0x365 OR 0x157 OR 0x152 OR 0x280 OR 0x51A - OK + if ((CAN_ERROR_MISSLE->BCM_CLIMATIC_DATA) || (CAN_ERROR_MISSLE->BCM_EEM) || (CAN_ERROR_MISSLE->BCM_Powertrain) || (CAN_ERROR_MISSLE->BCM_VEH_STATE) || (CAN_ERROR_MISSLE->VEH_VIN) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_BCM] = DTC_TEST_FAILED_CONFIRMED; } else { dtc_state_error_model[DTC_LOST_COMM_BCM] = dtc_state_error[DTC_LOST_COMM_BCM] & (~(DTC_TEST_FAILED)); } - if ((CAN_ERROR_MISSLE->EMS_HVC_Req_Msg) || (time > timeCanSpamReceiver)) { + // U016B87 (HVC) - 0x25A OR 0x305 - OK + if ((CAN_ERROR_MISSLE->HVC_CCU_Status_Msg) || (CAN_ERROR_MISSLE->HVC_Err_Status_Msg) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_AC_COMPRESSOR] = DTC_TEST_FAILED_CONFIRMED; } else { dtc_state_error_model[DTC_LOST_COMM_AC_COMPRESSOR] = dtc_state_error[DTC_LOST_COMM_AC_COMPRESSOR] & (~(DTC_TEST_FAILED)); } + // U019987 (DMFL) - 0x244 - OK if ((CAN_ERROR_MISSLE->DMFR_Msg1) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_DOOR_MODULE_A_DMFL] = DTC_TEST_FAILED_CONFIRMED; } else { @@ -403,6 +408,7 @@ setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, ccu_candb_erro dtc_state_error[DTC_LOST_COMM_DOOR_MODULE_A_DMFL] & (~(DTC_TEST_FAILED)); } + // U020087 (DMFR) - 0x243 - OK if ((CAN_ERROR_MISSLE->DMFL_Msg1) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_DOOR_MODULE_B_DMFR] = DTC_TEST_FAILED_CONFIRMED; } else { @@ -410,28 +416,32 @@ setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, ccu_candb_erro dtc_state_error[DTC_LOST_COMM_DOOR_MODULE_B_DMFR] & (~(DTC_TEST_FAILED)); } - if ((CAN_ERROR_MISSLE->SMFL_status) || (time > timeCanSpamReceiver)) { + // U020887 (SMFL) 0x4D0 OR 0x521 - OK + if ((CAN_ERROR_MISSLE->SMFL_status) || (CAN_ERROR_MISSLE->OCUFL_MSG) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_SEAT_MODULE_A_SMFL] = DTC_TEST_FAILED_CONFIRMED; } else { dtc_state_error_model[DTC_LOST_COMM_SEAT_MODULE_A_SMFL] = dtc_state_error[DTC_LOST_COMM_SEAT_MODULE_A_SMFL] & (~(DTC_TEST_FAILED)); } - if ((CAN_ERROR_MISSLE->SMFR_status) || (time > timeCanSpamReceiver)) { + // U020987 (SMFR) 0x4D1 OR 0x522 - OK + if ((CAN_ERROR_MISSLE->SMFR_status) || (CAN_ERROR_MISSLE->OCUFR_MSG) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_SEAT_MODULE_B_SMFR] = DTC_TEST_FAILED_CONFIRMED; } else { dtc_state_error_model[DTC_LOST_COMM_SEAT_MODULE_B_SMFR] = dtc_state_error[DTC_LOST_COMM_SEAT_MODULE_B_SMFR] & (~(DTC_TEST_FAILED)); } - if ((CAN_ERROR_MISSLE->SMRL_status) || (time > timeCanSpamReceiver)) { + // U021087 (SMRL) 0x4D2 OR 0x523 - OK + if ((CAN_ERROR_MISSLE->SMRL_status) || (CAN_ERROR_MISSLE->OCURL_MSG) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_SEAT_MODULE_C_SMRL] = DTC_TEST_FAILED_CONFIRMED; } else { dtc_state_error_model[DTC_LOST_COMM_SEAT_MODULE_C_SMRL] = dtc_state_error[DTC_LOST_COMM_SEAT_MODULE_C_SMRL] & (~(DTC_TEST_FAILED)); } - if ((CAN_ERROR_MISSLE->SMRR_status) || (time > timeCanSpamReceiver)) { + // U021187 (SMRR) 0x4D3 OR 0x524 - OK + if ((CAN_ERROR_MISSLE->SMRR_status) || (CAN_ERROR_MISSLE->OCURR_MSG) || (time > timeCanSpamReceiver)) { dtc_state_error_model[DTC_LOST_COMM_SEAT_MODULE_D_SMRR] = DTC_TEST_FAILED_CONFIRMED; } else { dtc_state_error_model[DTC_LOST_COMM_SEAT_MODULE_D_SMRR] = @@ -518,6 +528,8 @@ void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, setErrorDTC_LIN(dtc_state_error_model, LIN1_ERROR_MISSING, LIN2_ERROR_MISSING, LIN3_ERROR_MISSING, LIN4_ERROR_MISSING, LIN5_ERROR_MISSING); setErrorDTC_CAN_VIN(dtc_state_error_model, CAN_ERROR_MISSING, VIN, CCU_Errors); + + // Если не было изначально сообщений setErrorDTC_CAN(env, dtc_state_error_model, CAN_ERROR_MISSING); // if () {