更新EW模块驱动
This commit is contained in:
@@ -37,12 +37,14 @@
|
||||
else{\
|
||||
e->judge_flag[index/8]|=(1<<(index%8));}}\
|
||||
// 任务执行结果校验
|
||||
#define EXE_FLAG_CHECK(index)\
|
||||
(e->exe_flag[index/8]&(1<<(index%8)))?1:0
|
||||
#define EXE_ACK_CHECK(index)\
|
||||
(e->exe_ack[index/8]&(1<<(index%8)))?1:0
|
||||
// 取任务结果的第index位
|
||||
#define GET_RET_DATA(i)\
|
||||
(data[i*2]|(data[i*2+1]<<8))
|
||||
|
||||
// 获取第i位是否置位
|
||||
#define BIT_CHECK(d,i)\
|
||||
((d)[i/8]&(1<<(i%8)))?1:0
|
||||
|
||||
|
||||
// 添加错误代码
|
||||
@@ -88,7 +90,7 @@ static void elec_task_judge(elec_judge_def *e,int index,uint8_t *data)
|
||||
TASK_FLAG_CHECK(index);
|
||||
const scheme_task_def *task=&e->scheme->task[index];
|
||||
uint16_t temp;
|
||||
if(EXE_FLAG_CHECK(index)){
|
||||
if(EXE_ACK_CHECK(index)){
|
||||
elec_add_errcode(e,task->err);
|
||||
}
|
||||
for(int i=0;i<task->item_num;i++){
|
||||
@@ -101,35 +103,6 @@ static void elec_task_judge(elec_judge_def *e,int index,uint8_t *data)
|
||||
|
||||
|
||||
|
||||
// 电源准备
|
||||
static void elec_power_on(elec_judge_def *e,int index,uint8_t *data)
|
||||
{
|
||||
INDEX_CHECK(index);
|
||||
TASK_FLAG_CHECK(index);
|
||||
const scheme_task_def *task=&e->scheme->task[index];
|
||||
uint16_t temp;
|
||||
if(EXE_FLAG_CHECK(index)){
|
||||
elec_add_errcode(e,1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 上电充能
|
||||
static void elec_charge(elec_judge_def *e,int index,uint8_t *data)
|
||||
{
|
||||
INDEX_CHECK(index);
|
||||
TASK_FLAG_CHECK(index);
|
||||
const scheme_task_def *task=&e->scheme->task[index];
|
||||
uint16_t temp;
|
||||
temp=GET_RET_DATA(0);
|
||||
if(temp<task->range[0].min||temp>task->range[0].max){
|
||||
elec_add_errcode(e,1);
|
||||
}
|
||||
temp=GET_RET_DATA(1);
|
||||
if(temp<task->range[1].min||temp>task->range[1].max){
|
||||
elec_add_errcode(e,task->range[1].err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -176,8 +149,8 @@ static void elec_current(elec_judge_def *e,int index,uint8_t *data)
|
||||
|
||||
|
||||
const static elec_judge_fun g_jq_judge_table[]={
|
||||
elec_power_on, //0 电源准备
|
||||
elec_charge, //1 上电充能
|
||||
elec_task_judge, //0 电源准备
|
||||
elec_task_judge, //1 上电充能
|
||||
elec_task_judge, //2 设置总线电压
|
||||
elec_current, //3 获取总线电流
|
||||
elec_task_judge, //4 扫描UID
|
||||
@@ -218,8 +191,8 @@ elec_task_judge, //36 验证缓存数据
|
||||
|
||||
|
||||
const static elec_judge_fun g_xt_judge_table[]={
|
||||
elec_power_on, //0 电源准备
|
||||
elec_charge, //1 上电充能
|
||||
elec_task_judge, //0 电源准备
|
||||
elec_task_judge, //1 上电充能
|
||||
elec_task_judge, //2 设置总线电压
|
||||
elec_current, //3 获取总线电流
|
||||
elec_task_judge, //4 扫描UID
|
||||
@@ -263,8 +236,8 @@ elec_task_judge, //38 验证管壳码
|
||||
|
||||
|
||||
const static elec_judge_fun g_ew_judge_table[]={
|
||||
elec_power_on, //0 电源准备
|
||||
elec_charge, //1 上电充能
|
||||
elec_task_judge, //0 电源准备
|
||||
elec_task_judge, //1 上电充能
|
||||
elec_task_judge, //2 设置总线电压
|
||||
elec_current, //3 获取总线电流
|
||||
elec_task_judge, //4 扫描UID
|
||||
@@ -353,28 +326,29 @@ int elec_err_classify(int err)
|
||||
return err;
|
||||
}
|
||||
|
||||
// 根据优先级报错
|
||||
// 找到异常代码序号
|
||||
int elec_report_err(elec_judge_def *e)
|
||||
{
|
||||
static const uint8_t pro_table[]={1,3,7,8,2,4,5,6,0};
|
||||
uint8_t err=0;
|
||||
static const uint8_t pro_table[]={1,3,7,8,2,4,5,6,20,0};
|
||||
uint8_t index=0;
|
||||
for (int i=0;i<sizeof(pro_table);i++){
|
||||
for(int j=0;j<ERR_LIST_LEN;j++){
|
||||
if(e->err_list[j]==pro_table[i])
|
||||
return pro_table[i];
|
||||
if((err==0)&&(e->err_list[j]!=0)){
|
||||
err=e->err_list[j];
|
||||
if(e->marerr_list[j]==pro_table[i])
|
||||
return j;
|
||||
if((index==0)&&(e->marerr_list[j]!=0)){
|
||||
index=j;
|
||||
}
|
||||
}
|
||||
}
|
||||
return err;
|
||||
return index;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 异常判断
|
||||
// task_num,要判断的任务数
|
||||
void elec_judge(elec_judge_def *e,int task_num,uint8_t *exe_flag,uint8_t *data)
|
||||
void elec_judge(elec_judge_def *e,int task_num,uint8_t *exe_ack,
|
||||
uint8_t *exe_flag,uint8_t *data,uint8_t *marerr,uint8_t *suberr)
|
||||
{
|
||||
const scheme_task_def *task;
|
||||
memset(e,0,sizeof(elec_judge_def));
|
||||
@@ -383,31 +357,38 @@ void elec_judge(elec_judge_def *e,int task_num,uint8_t *exe_flag,uint8_t *data)
|
||||
e->judge_fun_num=elec_calc_judge_fun_num(e->judge_fun_table);
|
||||
e->short_circuited=1500;
|
||||
e->open_circuited=80;
|
||||
e->exe_flag=exe_flag;
|
||||
e->exe_ack=exe_ack;
|
||||
if(task_num>e->scheme->task_num)
|
||||
task_num=e->scheme->task_num;
|
||||
for(int i=0;i<task_num;i++)
|
||||
{
|
||||
task=&e->scheme->task[i];
|
||||
if(task->taskid<e->judge_fun_num){
|
||||
e->judge_fun_table[i](e,i,data);
|
||||
}else{
|
||||
elec_add_errcode(e,6);
|
||||
// 只判定已执行的任务
|
||||
if(BIT_CHECK(exe_flag,i)){
|
||||
task=&e->scheme->task[i];
|
||||
if(task->taskid<e->judge_fun_num){
|
||||
e->judge_fun_table[task->taskid](e,i,data);
|
||||
}else{
|
||||
elec_add_errcode(e,6);
|
||||
}
|
||||
}
|
||||
data+=task->item_num*2;
|
||||
}
|
||||
DBG_LOG("err_table:%02x %02x %02x %02x %02x %02x %02x %02x",
|
||||
DBG_LOG("err_table:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",
|
||||
e->err_list[0],e->err_list[1],e->err_list[2],e->err_list[3],e->err_list[4],
|
||||
e->err_list[5],e->err_list[6],e->err_list[7],e->err_list[8],e->err_list[9]
|
||||
);
|
||||
for(int i=0;i<ERR_LIST_LEN;i++){
|
||||
e->err_list[i]=elec_err_classify(e->err_list[i]);
|
||||
e->marerr_list[i]=elec_err_classify(e->err_list[i]);
|
||||
}
|
||||
DBG_LOG("err_table2:%02x %02x %02x %02x %02x %02x %02x %02x",
|
||||
DBG_LOG("err_table2:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",
|
||||
e->err_list[0],e->err_list[1],e->err_list[2],e->err_list[3],e->err_list[4],
|
||||
e->err_list[5],e->err_list[6],e->err_list[7],e->err_list[8],e->err_list[9]
|
||||
);
|
||||
DBG_LOG("err report=%d",elec_report_err(e));
|
||||
int index=elec_report_err(e);
|
||||
DBG_LOG("marerr report=%d",e->marerr_list[index]);
|
||||
DBG_LOG("suberr report=%d",e->err_list[index]);
|
||||
if(marerr) *marerr=e->marerr_list[index];
|
||||
if(suberr) *suberr=e->err_list[index];
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user