DTC更新
This commit is contained in:
parent
ff4b4c51bc
commit
cfca022cc0
@ -1,8 +1,8 @@
|
||||
/************************************************************
|
||||
| 文件名: DCM_DTC.c
|
||||
| 描述:DTC相关服务函数
|
||||
| 文件名: DCM_DTC.c
|
||||
| 描述:DTC相关服务函数
|
||||
|
|
||||
| 版权声明
|
||||
| 版权声明
|
||||
***********************************************************/
|
||||
//DCM_DTC.c
|
||||
#include "Dcm_App_Cfg.h"
|
||||
@ -13,6 +13,27 @@
|
||||
//#include "r_fdl_types.h"
|
||||
#include "Dcm_extern.h"
|
||||
|
||||
const TsDcm_h_DtcGroupType CaDcm_u_DtcTable[DCM_SUPDTC_COUNT]={
|
||||
{ 0,0xA8,0x80,0x16},
|
||||
{ 1,0xA8,0x80,0x17},
|
||||
{ 2,0xA8,0x80,0x88},
|
||||
{ 3,0xA8,0x81,0x23},
|
||||
{ 4,0xA8,0x82,0x23},
|
||||
{ 5,0xA8,0x83,0x23},
|
||||
{ 6,0xA8,0x84,0x23},
|
||||
{ 7,0xA8,0x85,0x23},
|
||||
{ 8,0xA8,0x86,0x25},
|
||||
{ 9,0xC1,0x00,0x8}},
|
||||
{10,0xD1,0x10,0x87},
|
||||
{11,0xD2,0x06,0x82},
|
||||
{12,0xD4,0x06,0x83},
|
||||
{13,0xD2,0x0B,0x82},
|
||||
{14,0xD4,0x0B,0x83},
|
||||
{15,0xD2,0x14,0x82},
|
||||
{16,0xD4,0x14,0x83}
|
||||
};
|
||||
|
||||
/*
|
||||
const TsDcm_h_DtcGroupType CaDcm_u_DtcTable[DCM_SUPDTC_COUNT]={
|
||||
{ 0,0xF0,0x06,0x16},
|
||||
{ 1,0xF0,0x06,0x17},
|
||||
@ -29,10 +50,10 @@ const TsDcm_h_DtcGroupType CaDcm_u_DtcTable[DCM_SUPDTC_COUNT]={
|
||||
{12,0x91,0x86,0x14},
|
||||
{13,0xC0,0x73,0x00},
|
||||
};
|
||||
|
||||
DtcStutas_T DtcStutas[DCM_SUPDTC_COUNT]; // DTC 状态数组
|
||||
static uint16 tDiagStart; //上电复位后网络诊断延迟时间
|
||||
uint16 tDiagStartVolt; // 电源电压异常恢复后诊断延迟时间
|
||||
*/
|
||||
DtcStutas_T DtcStutas[DCM_SUPDTC_COUNT]; // DTC 状态数组
|
||||
static uint16 tDiagStart; //上电复位后网络诊断延迟时间
|
||||
uint16 tDiagStartVolt; // 电源电压异常恢复后诊断延迟时间
|
||||
|
||||
/********************************************************/
|
||||
|
||||
@ -501,10 +522,10 @@ static void MotorLockChk(void)
|
||||
static void CanDTC_CycChk(void)
|
||||
{
|
||||
PowerVoltageChk();
|
||||
TempMotorFeedbackChk();
|
||||
ModeMotorFeedbackChk();
|
||||
RecMotorFeedbackChk();
|
||||
EvaSensorChk();
|
||||
//TempMotorFeedbackChk();
|
||||
//ModeMotorFeedbackChk();
|
||||
//RecMotorFeedbackChk();
|
||||
//EvaSensorChk();
|
||||
}
|
||||
|
||||
extern uint8 GetNormalMsgSts(void);
|
||||
@ -522,7 +543,7 @@ void CanDTC_Task(void)
|
||||
//CanDTC_CompErrChk();
|
||||
//CanDTC_MotorRunTimeChk();
|
||||
|
||||
MotorLockChk();
|
||||
//MotorLockChk();
|
||||
|
||||
if(DtcTestCycleTim < DTC_TEST_CYCLE_TIM)
|
||||
{
|
||||
@ -594,14 +615,14 @@ uint8 MngDcm_ReportNumberOfDTCByStatusMask(void)
|
||||
LaDcm_u_TempBuffer[3] = ISO_14229_1_DTC_FORMAT;
|
||||
LaDcm_u_TempBuffer[4] = 0;
|
||||
LaDcm_u_TempBuffer[5] = DtcCnt;
|
||||
SetCanTp_TxBuffer(6U,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
SetCanTp_TxBuffer(6U,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*设置NRC31*/
|
||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||
/*设置NRC31*/
|
||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
||||
}
|
||||
return LeDcm_u_Result;
|
||||
@ -630,17 +651,17 @@ uint8 MngDcm_ReportDTCByStatusMask(void)
|
||||
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcHigh;
|
||||
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcMiddle;
|
||||
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcLow;
|
||||
LaDcm_u_TempBuffer[DtcReporLength++] = GetDtcStutas(DtcIndex);
|
||||
LaDcm_u_TempBuffer[DtcReporLength++] = GetDtcStutas(DtcIndex) & DTC_STATUS_AVAILABILITY_MASK;
|
||||
}
|
||||
}
|
||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*设置NRC31*/
|
||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||
/*设置NRC31*/
|
||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
||||
}
|
||||
return LeDcm_u_Result;
|
||||
@ -670,14 +691,14 @@ uint8 MngDcm_ReportDTCSnapshotRecordByDTCNumber(void)
|
||||
DtcReporLength = 6;
|
||||
if(GetDtcSnapshotRecord(DtcIndex,LaDcm_u_TempBuffer+6,&DtcReporLength,DtcSnapshotRecordNum) != DCM_NORESULT)
|
||||
{
|
||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*设置NRC31*/
|
||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||
/*设置NRC31*/
|
||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
||||
}
|
||||
break;
|
||||
@ -685,9 +706,9 @@ uint8 MngDcm_ReportDTCSnapshotRecordByDTCNumber(void)
|
||||
}
|
||||
if((DtcIndex == DCM_SUPDTC_COUNT) && (DtcReporLength == 0))
|
||||
{
|
||||
/*设置NRC31*/
|
||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||
/*设置NRC31*/
|
||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
||||
}
|
||||
|
||||
@ -731,7 +752,7 @@ uint8 MngDcm_ReportDTCExtendedDataRecordByDTCNumber(void)
|
||||
LaDcm_u_TempBuffer[23] = 0xFF;
|
||||
LaDcm_u_TempBuffer[24] = 0xFF;
|
||||
LaDcm_u_TempBuffer[25] = 0xFF;
|
||||
SetCanTp_TxBuffer(25,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
SetCanTp_TxBuffer(25,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||
break;
|
||||
}
|
||||
@ -760,7 +781,7 @@ uint8 MngDcm_ReportSupportedDTC(void)
|
||||
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcLow;
|
||||
LaDcm_u_TempBuffer[DtcReporLength++] = DTC_STATUS_AVAILABILITY_MASK;
|
||||
}
|
||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||
return LeDcm_u_Result;
|
||||
}
|
||||
|
@ -7,12 +7,12 @@
|
||||
|
||||
|
||||
#define DCM_19SUPDTCEXTDATARECORD_COUNT (4U)
|
||||
/* 19 06支持的DTCExtDataRecord 参数个数 */
|
||||
#define DCM_SUPDTC_COUNT ( 14U )
|
||||
/* 产品支持的DTC个数 */
|
||||
/* 19 06֧<EFBFBD>ֵ<EFBFBD>DTCExtDataRecord <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define DCM_SUPDTC_COUNT ( 17U )
|
||||
/* <EFBFBD><EFBFBD>Ʒ֧<EFBFBD>ֵ<EFBFBD>DTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
|
||||
#define DTC_TEST_CYCLE_TIM 40U // 40mS一个周期
|
||||
#define DTC_TEST_CYCLE_TIM 40U // 40mSһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define ISO_15031_6_DTC_FORMAT 0U
|
||||
#define ISO_14229_1_DTC_FORMAT 1U
|
||||
@ -21,19 +21,19 @@
|
||||
#define DTC_STATUS_AVAILABILITY_MASK 0x09U
|
||||
|
||||
typedef uint8 (*ReportDTCExtDataFun)(uint8* LeDemDtcNum,uint8 LeDemParameter,uint8* LeDemDataRecord);
|
||||
/*19 06 服务支持的 DTCExtDataRecordNumber 列表结构体*/
|
||||
/*19 06 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD> DTCExtDataRecordNumber <20>б<EFBFBD><D0B1>ṹ<EFBFBD><E1B9B9>*/
|
||||
typedef struct
|
||||
{
|
||||
uint8 DTCExtDataRecordNumber; /*扩展数据number*/
|
||||
ReportDTCExtDataFun Function; /*扩展数据number 对应函数的处理函数*/
|
||||
uint8 DTCExtDataRecordNumber; /*<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>number*/
|
||||
ReportDTCExtDataFun Function; /*<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>number <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}DTCExtDataRecordType;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 DtcIndex;
|
||||
uint8 DtcHigh; /*DTC 高字节*/
|
||||
uint8 DtcMiddle; /*DTC 中间字节*/
|
||||
uint8 DtcLow; /*DTC 低字节*/
|
||||
uint8 DtcHigh; /*DTC <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>*/
|
||||
uint8 DtcMiddle; /*DTC <EFBFBD>м<EFBFBD><EFBFBD>ֽ<EFBFBD>*/
|
||||
uint8 DtcLow; /*DTC <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>*/
|
||||
}TsDcm_h_DtcGroupType;
|
||||
|
||||
typedef enum
|
||||
@ -93,6 +93,8 @@ extern DtcStutas_T DtcStutas[DCM_SUPDTC_COUNT];
|
||||
|
||||
#define AC_LOW_VOLTAGE 0
|
||||
#define AC_OVER_VOLTAGE 1
|
||||
#define AC_BusOff 3
|
||||
|
||||
#define AC_TEMP_MOTOR_SHORT_CUT_TO_VCC 2
|
||||
#define AC_TEMP_MOTOR_SHORT_CUT_TO_GND 3
|
||||
#define AC_TEMP_MOTOR_LOCK 4
|
||||
@ -104,7 +106,7 @@ extern DtcStutas_T DtcStutas[DCM_SUPDTC_COUNT];
|
||||
#define AC_REC_MOTOR_LOCK 10
|
||||
#define AC_EVA_SENSOR_SHORT_CUT_TO_VCC 11
|
||||
#define AC_EVA_SENSOR_SHORT_CUT_TO_GND 12
|
||||
#define AC_BusOff 13
|
||||
|
||||
|
||||
|
||||
extern uint8_t BusOffCnt ;
|
||||
|
@ -503,12 +503,13 @@ void GetManufacturingDate(unsigned char* date)
|
||||
//获取can总线出错状<E99499>?
|
||||
//返回<E8BF94>??
|
||||
/******************************/
|
||||
extern unsigned char ucBusOffModeState;
|
||||
unsigned char GetCanBusOffErr(void)
|
||||
{
|
||||
// if(BusOff_flag==0)
|
||||
// return 0;
|
||||
// else
|
||||
// return 1;
|
||||
if(ucBusOffModeState>=8)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
/******************************/
|
||||
//获取BCM节点丢失状<E5A4B1>?
|
||||
|
@ -78,7 +78,7 @@ void __near RSCAN_INTCANGRECC_interrupt(void)
|
||||
R_CAN_ReadRxFIFO(CAN_RXFIFO1, &RxCanMessage);
|
||||
if ((RxCanMessage.IDL == CANTP_ADDR_PHY_REQ) || (RxCanMessage.IDL == CANTP_ADDR_FUNC_REQ))
|
||||
{
|
||||
if (RxCanMessage.IDL == CANTP_ADDR_FUNC_REQ && RxCanMessage.DB[1] == 0x3E && RxCanMessage.DB[2] == 0x80)
|
||||
if (RxCanMessage.IDL == CANTP_ADDR_FUNC_REQ && RxCanMessage.DB[1] == 0x3E && RxCanMessage.DB[2] == 0x80 && RxCanMessage.DB[0] == 0x02)
|
||||
resetS3Server(); /*重置S3server计时*/
|
||||
else
|
||||
RxIndicationCanIf_Messages(0, RxCanMessage.IDL, RxCanMessage.DLC, RxCanMessage.DB);
|
||||
|
@ -561,6 +561,11 @@ void BusOff_Detect(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ucBusOffModeState < 8)
|
||||
{
|
||||
ucBusOffModeState++;
|
||||
}
|
||||
|
||||
uiBusOffCnt = SLOW_BUSOFF_THRESHOULD; //soft recover
|
||||
}
|
||||
BusOff_Recovery();
|
||||
|
Loading…
x
Reference in New Issue
Block a user