CELIS/UDS/uds_dtc.h
lidun b61c21c648
修改任务优先级
Signed-off-by: lidun <1084178170@qq.com>
2024-03-02 09:58:11 +08:00

180 lines
4.6 KiB
C

#ifndef __UDS_DTC_H__
#define __UDS_DTC_H__
// #include "config.h"
#include "uds_config.h"
#define DTC_FOREACH(func)\
/*01*/ func(0xC11187,BMS_COMM_LOSE) \
/*02*/ func(0xC29387,VCU_COMM_LOSE) \
/*03*/ func(0x911716,ECU_VOLTAGE_LOW) \
/*04*/ func(0x911717,ECU_VOLTAGE_HIGH) \
/*05*/ func(0xC07388,ECU_ENTER_BUSOFF) \
/*06*/ func(0x1F400C,INPUT_OVERVOLTAGE) \
/*07*/ func(0x1F400D,INPUT_UNDERVOLTAGE) \
/*08*/ func(0x1F4000,CHARGE_TEMP_DERATE) \
/*09*/ func(0x1F4001,INTER_TEMP_DERATE) \
/*10*/ func(0x1F4002,INTER_OVERTEMP) \
/*11*/ func(0x1F4003,CHARGE_OVERTEMP) \
/*12*/ func(0x1F4004,DC_POS_RELAY_ADH) \
/*13*/ func(0x1F4005,DC_NEG_RELAY_ADH) \
/*14*/ func(0x1F4006,AC_POS_RELAY_ADH) \
/*15*/ func(0x1F4007,AC_NEG_RELAY_ADH) \
/*16*/ func(0x1F4008,HV_INTERLOCK) \
/*17*/ func(0x1F4009,CC_CC2_RELAY_CTRL_INV) \
/*18*/ func(0x1F400A,CP_CC1_RELAY_CTRL_INV)
/*19*/ /*func(0x1F400B,DCU_VOL_ABN) */
#define GENERATE_DTC_ID(value,name) id##name ,
#define GENERATE_DTC_VALUE_ARRAY(value,name) value,
#define GENERATE_DTC_FAULT_FLAG(value,name) uint32_t f##name: 1;
#define GENERATE_DTC_TIMER_ARRAY(value,name) uint16_t u##name;
#define GENERATE_DTC_OPTION(value,name) uint32_t op##name: 1;
//DTC 请求子功能
#define DTC_ReportNumberOfDTCByStatusMask 0x01
#define DTC_ReportDTCByStatusMask 0x02
#define DTC_ReportDTCSnapshotIdentification 0x03
#define DTC_ReportDTCSnapshotRecordByDTCNumber 0x04
#define DTC_ReportDTCExtendedDataRecordByDTCNumber 0x06
#define DTC_ReportSupportedDTCs 0x0A
//DTCStatusMask/statusOfDtc 参数相关信息
#define DTC_STATUS_Test_Failed 0//测试失效
#define DTC_STATUS_Test_Failed_This_Monitoring_Cycle 1//本检测周期测试失效
#define DTC_STATUS_Pending_DTC 2//等待DTC
#define DTC_STATUS_Confirmed_DTC 3//确认DTC"
#define DTC_STATUS_Test_Not_Completed_Since_Last_Clear 4//上次清零后测试未完成
#define DTC_STATUS_Test_Failed_Since_Last_Clear 5//上次清零后测试失效
#define DTC_STATUS_Test_Not_Completed_This_Monitoring_Cycle 6//本检测周期测试未完成
#define DTC_STATUS_Warning_Indicator_Requested 7//警告指示位请求
#define DTC_STATUS_Support_Bit_Status ((1<<DTC_STATUS_Test_Failed) | (1<<DTC_STATUS_Confirmed_DTC))
//诊断初始化时间
#define DIAG_START_TIME 0 //0 MS
#define DIAG_START_INIT_TIME (500 - DIAG_START_TIME) //5000 MS
#pragma anon_unions
typedef enum _DTC_ID {
DTC_FOREACH(GENERATE_DTC_ID)
DTC_ID_NUM,
}DTC_ID;
typedef union _DTC_Fault_Flag{
uint32_t w;
struct
{
DTC_FOREACH(GENERATE_DTC_FAULT_FLAG)
}b;
}DTC_Fault_Flags;
typedef struct _DTC_Msg_Timer{
DTC_FOREACH(GENERATE_DTC_TIMER_ARRAY)
}DTC_Msg_Timers;
typedef union _DTC_Options{
uint32_t w;
struct
{
DTC_FOREACH(GENERATE_DTC_OPTION)
}b;
}DTC_Options;
typedef enum
{
ISO15031_6_DTCformat,
ISO14229_1_DTCformat,
SAE1939_73_DTCformat,
} DTC_FORMAT_IDENTIFIE;
typedef union
{
uint16_t map;
struct//小端端模式
{
uint8_t DTCcountLowByte;
uint8_t DTCcountHighByte;
//uint8_t DTCcountLowByte;
} b;
} DTC_COUNT;
typedef union
{
struct {
uint8_t BatVolt; //蓄电池电压(最大25.4V) 精度0.1V
uint8_t SOCH; //SOC MSB 0.1%
uint8_t SOCL; //SOC LSB
uint8_t DCInVolH; //直流输入电压MSB 0.1V
uint8_t DCInVolL; //直流输入电压LSB 0.1V
uint8_t GunSts; //插枪状态 0x00 :未插枪 0x01: AC工作模式 0x02:DC工作模式
uint8_t DCRealySts; //直流继电器状态 0x00 :未吸合 0x01: 吸合 0x02:粘连
uint8_t ACRealySts; //交流继电器状态 0x00 :未吸合 0x01: 吸合 0x02:粘连
uint8_t CC2ResistorH; //CC2电阻MSB 0.1Ω
uint8_t CC2ResistorL; //CC2电阻LSB 0.1Ω
uint8_t CommSts; //当前通信状态 0x00 :正常 0x01: 与整车失去通信 0x02:与充电桩失去通信
};
uint8_t d8[11];
}DTC_SnapshotType;
typedef union
{
struct {
uint8_t FaultCounter;
// uint8_t FaultCounterOfAge;
// uint8_t FaultAgingCounter;
};
uint8_t d8[3];
}DTC_ExtendedType;
typedef struct
{
uint8_t status;
uint8_t snapNumber;
DTC_SnapshotType snapshot;
DTC_ExtendedType extended;
uint8_t crc16[2]; //校验
} DTC_RecordDataBufType;
typedef struct
{
DTC_RecordDataBufType recordData[DTC_ID_NUM];
}DTC_StatusType;
typedef union
{
struct {
uint8_t DTCLowByte;
uint8_t DTCMiddleByte;
uint8_t DTCHightByte;
uint8_t res;
};
uint32_t dtc;
}DTC_MaskRecordTpye;
typedef struct
{
uint8_t DTCReportSubFunction;
uint8_t DTCStatusMask;
DTC_MaskRecordTpye DTCMaskRecord;
uint8_t DTCRecordNumber;
DTC_FORMAT_IDENTIFIE DTCFormatIdentifie;
DTC_COUNT DTCcount;
DTC_StatusType DTCStatus;
} DTC_STRUCT;
#endif