1.故障结构体说明
TYPE KJAEInfo :
STRUCT
spn:UINT;//spn码
level:BYTE;//故障等级:0表示无故障,1、2表示轻微故障,3、4代表中级故障,5代表严重故障
mtype:BYTE;//报警或故障类型:0表示无,1代表报警,2代表故障
fmi:BYTE:=16#FF;//fmi
line:UINT:=16#FFFF;//线号
END_STRUCT
END_TYPE
2.故障命令规则说明 AE_XXXX (XXXX表示具体的SPN码)
部分新能源类 AE_SPN_level_Fmi 结构
AE_301:KJAEInfo;//发动机水温高报警
AE_302:KJAEInfo;//燃油油位低报警
AE_303:KJAEInfo;//燃油油滤堵塞报警
AE_304:KJAEInfo;//机油压力低报警
AE_50306_1_3:KJAEInfo;//硬件过压故障(三级)
AE_50351_5_17:KJAEInfo;//功率模块故障1
AE_50352_5_17:KJAEInfo;//功率模块故障2
AE_50353_5_17:KJAEInfo;//功率模块故障3
3.变量及函数说明
变量KJAE_NUM 故障数量 UINT
变量KJAE_LIST 故障列表 ARRAY OF KJAEInfo
函数InitAEMap() 初始化故障数据 可只执行一次
函数ClearAEList() 清除故障列表数据
函数AddAE2List() 添加故障数据到故障列表
4.使用参考Demo
//1.初始化所有故障报警数据
IF NOT init THEN
InitAEMap();
init:=TRUE;
END_IF
//2.每个周期清故障列表
ClearAEList();
//3.Demo赋值统计故障
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.使用库全局变量 进行发送
//KJAE_NUM 故障数量
//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