1.故障結(jié)構(gòu)體說明
TYPE KJAEInfo :
STRUCT
spn:UINT;//spn碼
level:BYTE;//故障等級:0表示無故障,1、2表示輕微故障狼牺,3、4代表中級故障掖看,5代表嚴(yán)重故障
mtype:BYTE;//報(bào)警或故障類型:0表示無,1代表報(bào)警面哥,2代表故障
fmi:BYTE:=16#FF;//fmi
line:UINT:=16#FFFF;//線號
END_STRUCT
END_TYPE
2.故障命令規(guī)則說明 AE_XXXX (XXXX表示具體的SPN碼)
部分新能源類 AE_SPN_level_Fmi 結(jié)構(gòu)
AE_301:KJAEInfo;//發(fā)動機(jī)水溫高報(bào)警
AE_302:KJAEInfo;//燃油油位低報(bào)警
AE_303:KJAEInfo;//燃油油濾堵塞報(bào)警
AE_304:KJAEInfo;//機(jī)油壓力低報(bào)警
AE_50306_1_3:KJAEInfo;//硬件過壓故障(三級)
AE_50351_5_17:KJAEInfo;//功率模塊故障1
AE_50352_5_17:KJAEInfo;//功率模塊故障2
AE_50353_5_17:KJAEInfo;//功率模塊故障3
3.變量及函數(shù)說明
變量KJAE_NUM 故障數(shù)量 UINT
變量KJAE_LIST 故障列表 ARRAY OF KJAEInfo
函數(shù)InitAEMap() 初始化故障數(shù)據(jù) 可只執(zhí)行一次
函數(shù)ClearAEList() 清除故障列表數(shù)據(jù)
函數(shù)AddAE2List() 添加故障數(shù)據(jù)到故障列表
4.使用參考Demo
//1.初始化所有故障報(bào)警數(shù)據(jù)
IF NOT init THEN
InitAEMap();
init:=TRUE;
END_IF
//2.每個周期清故障列表
ClearAEList();
//3.Demo賦值統(tǒng)計(jì)故障
IF error_1 THEN
AE_301.line:=256;
AddAE2List(AE_301);
END_IF
IF error_2 THEN
AE_5510.line:=258;
AddAE2List(AE_5510);
END_IF
//4.使用庫全局變量 進(jìn)行發(fā)送
//KJAE_NUM 故障數(shù)量
//KJAE_LIST 故障列表
IF (mCount MOD 10)=2 THEN
IF KJAE_NUM>0 THEN
IF index<KJAE_NUM THEN
index:=index+1;
ELSE
index:=1;
END_IF
data04FA10FA[1]:=UINT_TO_BYTE(KJAE_NUM);
data04FA10FA[2]:=index;
data04FA10FA[3]:=(KJAE_LIST[index].level OR SHL(KJAE_LIST[index].mtype,2));
data04FA10FA[4]:=UINT_TO_BYTE(KJAE_LIST[index].spn MOD 256);
data04FA10FA[5]:=UINT_TO_BYTE(KJAE_LIST[index].spn / 256);
data04FA10FA[6]:=KJAE_LIST[index].fmi;
data04FA10FA[7]:=UINT_TO_BYTE(KJAE_LIST[index].line MOD 256);
data04FA10FA[8]:=UINT_TO_BYTE(KJAE_LIST[index].line / 256);
ELSE
data04FA10FA[1]:=0;
data04FA10FA[2]:=0;
data04FA10FA[3]:=0;
data04FA10FA[4]:=0;
data04FA10FA[5]:=0;
data04FA10FA[6]:=0;
data04FA10FA[7]:=0;
data04FA10FA[8]:=0;
END_IF
Xeci_CanCommonTransmit(0,16#04FA10FA,1,0,8,ADR(data04FA10FA));
END_IF