Добавлены времена и ID для DTC

This commit is contained in:
cfif 2026-10-01 11:41:17 +03:00
parent 2a04b51c23
commit 0ecc85d234
4 changed files with 78 additions and 40 deletions

View File

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

View File

@ -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},

View File

@ -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));

View File

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