添加web
This commit is contained in:
126
web/layui/Checker/CheckerCurEcharts.js
Normal file
126
web/layui/Checker/CheckerCurEcharts.js
Normal file
@@ -0,0 +1,126 @@
|
||||
var ChecekerCurECharts_View_ID = -1;
|
||||
var CheckerCurEcharts = null;
|
||||
var CheckerCurOption = {
|
||||
animation: false,
|
||||
grid: {
|
||||
top: 40,
|
||||
left: 50,
|
||||
right: 40,
|
||||
bottom: 50
|
||||
},
|
||||
xAxis: {
|
||||
name: '轮次',
|
||||
minorTick: {
|
||||
show: true
|
||||
},
|
||||
minorSplitLine: {
|
||||
show: true
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
name: '电流0.1uA',
|
||||
minorTick: {
|
||||
show: true
|
||||
},
|
||||
minorSplitLine: {
|
||||
show: true
|
||||
}
|
||||
},
|
||||
dataZoom: [
|
||||
{
|
||||
show: true,
|
||||
type: 'inside',
|
||||
filterMode: 'none',
|
||||
xAxisIndex: [0],
|
||||
|
||||
},{
|
||||
show: true,
|
||||
type: 'slider',
|
||||
filterMode: 'none',
|
||||
xAxisIndex: [0],
|
||||
|
||||
},
|
||||
{
|
||||
show: true,
|
||||
type: 'inside',
|
||||
filterMode: 'none',
|
||||
yAxisIndex: [0],
|
||||
|
||||
},{
|
||||
show: true,
|
||||
type: 'slider',
|
||||
filterMode: 'none',
|
||||
yAxisIndex: [0],
|
||||
|
||||
}
|
||||
],
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: 'line',
|
||||
showSymbol: false,
|
||||
clip: true,
|
||||
smooth: true,
|
||||
data: [],
|
||||
}
|
||||
],
|
||||
|
||||
};
|
||||
var CheckerCurData = [];
|
||||
function CheckerShowCurEcharts(cur)
|
||||
{
|
||||
|
||||
if(ChecekerCurECharts_View_ID < 0)
|
||||
{
|
||||
CheckerCurData = [[1,cur]];
|
||||
CheckerCurOption.series.data = CheckerCurData;
|
||||
//CheckerCurEcharts.setOption(CheckerCurOption);
|
||||
ChecekerCurECharts_View_ID = layer.open({
|
||||
title:'电流趋势',
|
||||
type: 1,
|
||||
shade: false, // 不显示遮罩
|
||||
content: $('#checker_Curgraph_Mes'), // 捕获的元素
|
||||
area: 'auto',
|
||||
end: function(){
|
||||
ChecekerCurECharts_View_ID = -1
|
||||
},
|
||||
success:function(){
|
||||
|
||||
if(CheckerCurEcharts == null)
|
||||
{
|
||||
var CheckerCurEcharts_dom = document.getElementById('checker_cur_echarts');
|
||||
CheckerCurEcharts = echarts.init(CheckerCurEcharts_dom, "walden");
|
||||
}else{
|
||||
CheckerCurEcharts.clear();
|
||||
}
|
||||
|
||||
CheckerCurOption.series.data = CheckerCurData;
|
||||
CheckerCurEcharts.setOption(CheckerCurOption);
|
||||
CheckerCurEcharts.resize();
|
||||
},
|
||||
resizing:function(){
|
||||
if(CheckerCurEcharts != null)
|
||||
{
|
||||
CheckerCurEcharts.resize();
|
||||
}
|
||||
|
||||
},
|
||||
});
|
||||
}else{
|
||||
|
||||
var item = [CheckerCurData.length+1,cur];
|
||||
CheckerCurData.push(item);
|
||||
CheckerCurEcharts.setOption({
|
||||
series: [
|
||||
{
|
||||
data: CheckerCurData,
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
480
web/layui/Checker/EWChecker.js
Normal file
480
web/layui/Checker/EWChecker.js
Normal file
@@ -0,0 +1,480 @@
|
||||
var EWCheckerTaskInfo=[
|
||||
{
|
||||
TaskID:0,
|
||||
TaskName:"电源准备",
|
||||
TaskBrief:"检测前校准检测过程中需要使用的电压,便于检测过程中快速输出电压。电压范围55~270",
|
||||
ParamInfo:["预设电压1","预设电压2","预设电压3","预设电压4","预设电压5","预设电压6","预设电压7","预设电压8","预设电压9","预设电压10",],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"PowerPrapare",
|
||||
},
|
||||
{
|
||||
TaskID:1,
|
||||
TaskName:"延时等待",
|
||||
TaskBrief:"延时流程,同时可以启动总线电流监测 设置单位0.1S。波动DAC换算 Vad/4096*3.3/100/11",
|
||||
ParamInfo:["延时时间0.1s","使1/失0电流监控"],
|
||||
ReturnInfo:["电流波动DAC"],
|
||||
CommTestCmd:"WaitDelay",
|
||||
},
|
||||
{
|
||||
TaskID:2,
|
||||
TaskName:"桥丝电阻测试",
|
||||
TaskBrief:"测量桥丝阻值。可配置测量模式 0 4线制, 1 2线1-4通,2 2线2-3通",
|
||||
ParamInfo:["测量模式"],
|
||||
ReturnInfo:["电阻0.01Ω"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:3,
|
||||
TaskName:"上电充能",
|
||||
TaskBrief:"统计模块的上电充能,具有电压设置功能,采集档位 R10_0p1mA_1p6mA_UC",
|
||||
ParamInfo:["总线电压0.1V","超时时间 0.1ms","充电结束时的AD值"],
|
||||
ReturnInfo:["总线电压0.1V","总线电流低于设置AD值的时间"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:4,
|
||||
TaskName:"设置总线电压",
|
||||
TaskBrief:"设置总线电压",
|
||||
ParamInfo:["总线电压"],
|
||||
ReturnInfo:["总线电压"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:5,
|
||||
TaskName:"获取总线电流",
|
||||
TaskBrief:"测量总线基本电流",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:["总线正电流 0.1uA","总线反电流 0.1uA"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:6,
|
||||
TaskName:"使能MTP",
|
||||
TaskBrief:"使能MTP擦写,0失能/1使能",
|
||||
ParamInfo:["是否使能"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:7,
|
||||
TaskName:"扫描UID",
|
||||
TaskBrief:"扫描总线上的电子模块",
|
||||
ParamInfo:["UID长度","是否使能UID对比","是否使能反馈监控"],
|
||||
ReturnInfo:["最大反馈电流","最大反馈时间","最小反馈电流","最小反馈时间","UID 0~1","UID 2~3","UID 4~5","UID 6~7"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:8,
|
||||
TaskName:"写配置参数",
|
||||
TaskBrief:"写模块运行时的配置参数",
|
||||
ParamInfo:["起爆MOS选择 0内部/1外部","通信信号源 0:rxh 1:rxl 2:rx","通信模式 1:差分 2:单端","起爆日志标记周期 0:不标记 1:5ms 2:10ms 3:20ms 4:50ms 5:10ms 6:150ms 7:200ms","UID长度","密码长度","模块版本"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:9,
|
||||
TaskName:"检测配置参数",
|
||||
TaskBrief:"检测模块运行时的配置参数",
|
||||
ParamInfo:["起爆MOS选择 0内部/1外部","通信信号源 0:rxh 1:rxl 2:rx","通信模式 1:差分 2:单端","起爆日志标记周期 0:不标记 1:5ms 2:10ms 3:20ms 4:50ms 5:10ms 6:150ms 7:200ms","UID长度","密码长度","模块版本"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:10,
|
||||
TaskName:"验证配置",
|
||||
TaskBrief:"验证配置",
|
||||
ParamInfo:["掩码低2byte","掩码高2byte","比较低2byte","比较高2byte"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:11,
|
||||
TaskName:"模拟注码",
|
||||
TaskBrief:"写入测试用的UID和密码,此任务之前要先写配置参数",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:12,
|
||||
TaskName:"模拟注码验证",
|
||||
TaskBrief:"写入测试用的UID和密码,此任务之前要先写三码数据",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:13,
|
||||
TaskName:"芯片自检",
|
||||
TaskBrief:"芯片自检",
|
||||
ParamInfo:["自检模式","自检时间ms"],
|
||||
ReturnInfo:["自检模式0x08的回读数据"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:14,
|
||||
TaskName:"状态检测",
|
||||
TaskBrief:"状态码比较",
|
||||
ParamInfo:["掩码参数","比较结果值"],
|
||||
ReturnInfo:["状态值低2byte","状态值高2byte"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:15,
|
||||
TaskName:"充电",
|
||||
TaskBrief:"充电",
|
||||
ParamInfo:["充电模式","充电分组"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:16,
|
||||
TaskName:"放电",
|
||||
TaskBrief:"放电",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:17,
|
||||
TaskName:"写延时",
|
||||
TaskBrief:"写延时",
|
||||
ParamInfo:["延时ms"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:18,
|
||||
TaskName:"读延时",
|
||||
TaskBrief:"读延时",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:["延时值ms"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:19,
|
||||
TaskName:"时钟校准",
|
||||
TaskBrief:"时钟校准",
|
||||
ParamInfo:["校准周期ms","校准脉冲数"],
|
||||
ReturnInfo:["校准值,真实值的4倍"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:20,
|
||||
TaskName:"设置通信地址",
|
||||
TaskBrief:"设置通信地址",
|
||||
ParamInfo:["通信地址","设置模式 0:系统 1:UID配置地址 2:快速配置","延时"],
|
||||
ReturnInfo:["延时"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:21,
|
||||
TaskName:"状态巡检",
|
||||
TaskBrief:"测试系统只能巡检一个地址,起始地址应该大于1,结束地址小于1024,两个地址差值应该小于256",
|
||||
ParamInfo:["起始地址","结束地址","状态码"],
|
||||
ReturnInfo:["地址结果"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:22,
|
||||
TaskName:"起爆使能",
|
||||
TaskBrief:"起爆使能",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:23,
|
||||
TaskName:"起爆检测",
|
||||
TaskBrief:"起爆",
|
||||
ParamInfo:["采样超时0.01ms","起爆电流AD","延迟采样ms"],
|
||||
ReturnInfo:["等待时间 0.01ms"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:24,
|
||||
TaskName:"写入缓存数据",
|
||||
TaskBrief:"写入缓存数据",
|
||||
ParamInfo:["MTP地址","缓存地址","写入字节数"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:25,
|
||||
TaskName:"验证缓存数据",
|
||||
TaskBrief:"验证缓存数据",
|
||||
ParamInfo:["MTP地址","缓存地址","写入字节数"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:26,
|
||||
TaskName:"关总线",
|
||||
TaskBrief:"关总线",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:27,
|
||||
TaskName:"升级",
|
||||
TaskBrief:"EW模块升级 升级模式 0:无app时升级 1:无条件升级",
|
||||
ParamInfo:["充电时间 ms","app启动时间 ms","总线关断时间 ms","升级模式"],
|
||||
ReturnInfo:["错误代码"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:28,
|
||||
TaskName:"充能统计",
|
||||
TaskBrief:"充能统计",
|
||||
ParamInfo:["充电挡位","充电超时0.1us","充电电流判线 AD值","充末电流结束值 0.1uA","充电最长时间 0.1s","充电高压保持时间 0.1s"],
|
||||
ReturnInfo:["充能值 0.1ms","充末电流 0.1uA","充电最大电流 0.1mA","充电抖动幅值 adv"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:29,
|
||||
TaskName:"异常判定",
|
||||
TaskBrief:"对已检项目进行异常判定,如果异常判定结果不在过滤范围内,则此任务失败",
|
||||
ParamInfo:["过滤值1","过滤值2","过滤值3","过滤值4","过滤值5","过滤值6","过滤值7","过滤值8","过滤值9","过滤值10",],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:30,
|
||||
TaskName:"重新执行任务",
|
||||
TaskBrief:"重新执行指定序号的任务,本次执行会覆盖之前的结果",
|
||||
ParamInfo:["需要重新执行的任务序号"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:31,
|
||||
TaskName:"写三码数据",
|
||||
TaskBrief:"写入缓存的三码数据,此任务之前要先写配置参数",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:32,
|
||||
TaskName:"校验三码数据",
|
||||
TaskBrief:"验证写入的三码数据,此任务之前要先写三码数据",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:33,
|
||||
TaskName:"配置三码数据到小板",
|
||||
TaskBrief:"先把三码数据写入小板缓存,然后才能使用三码绑定任务",
|
||||
ParamInfo:["uid,pwd长度","数据0,1","数据2,3","数据4,5","数据6,7","数据8,9","数据10,11","数据12,13","数据14,15","数据16,17",],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:34,
|
||||
TaskName:"任务插槽",
|
||||
TaskBrief:"程序可以动态添加要执行的任务,此任务将执行所有序号匹配的动态任务",
|
||||
ParamInfo:["插槽序号"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:35,
|
||||
TaskName:"读取MTP",
|
||||
TaskBrief:"从指定mtp地址读取数据",
|
||||
ParamInfo:["mtp地址(4byte寻址)","读取长度(byte)",],
|
||||
ReturnInfo:["数据0,1","数据2,3","数据4,5","数据6,7","数据8,9","数据10,11","数据12,13","数据14,15",],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:36,
|
||||
TaskName:"写入MTP",
|
||||
TaskBrief:"写入数据到指定mtp地址",
|
||||
ParamInfo:["mtp地址(4byte寻址)","写入长度(byte)","数据0,1","数据2,3","数据4,5","数据6,7","数据8,9","数据10,11","数据12,13","数据14,15",],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:37,
|
||||
TaskName:"设置电阻校准值",
|
||||
TaskBrief:"电阻测量的校准值,不建议将此任务添加进方案中",
|
||||
ParamInfo:["电阻校准值"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:38,
|
||||
TaskName:"读取流水号",
|
||||
TaskBrief:"读取27bit的流水号数据,对比失败则此任务失败",
|
||||
ParamInfo:["要校验的流水号低2字节","要校验的流水号高2字节"],
|
||||
ReturnInfo:["读取的流水号低2字节","读取的流水号高2字节"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:39,
|
||||
TaskName:"写入流水号",
|
||||
TaskBrief:"采用读改写的方式写入27bit的流水号数据",
|
||||
ParamInfo:["要写入的流水号低2字节","要写入的流水号高2字节"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:40,
|
||||
TaskName:"写固定延时",
|
||||
TaskBrief:"写入延时并掉电保存,需要复位后刷新",
|
||||
ParamInfo:["延时值ms"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID:41,
|
||||
TaskName:"复位",
|
||||
TaskBrief:"0复位至bootloader,1复位至app",
|
||||
ParamInfo:["复位类型"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
];
|
||||
EW_ErrorInfo={
|
||||
//错误描述
|
||||
//主错误段
|
||||
MajorErrInfo:[
|
||||
{Info:"执行成功",MajorErrCode:0,SubErrCode:[]},
|
||||
{Info:"检测器异常",MajorErrCode:1,SubErrCode:[21,23,254]},
|
||||
{Info:"主电容异常",MajorErrCode:2,SubErrCode:[30,31,32,33,34,35,42]},
|
||||
{Info:"接触异常",MajorErrCode:3,SubErrCode:[27]},
|
||||
{Info:"桥丝阻值异常",MajorErrCode:4,SubErrCode:[30,41,42,51]},
|
||||
{Info:"芯片异常",MajorErrCode:5,SubErrCode:[22,24,25,26,27,28,29,30,32,33,35,36,37,38,39,40,41,42,43,44,45,52,53,54]},
|
||||
{Info:"判定任务缺失",MajorErrCode:6,SubErrCode:[212]},
|
||||
{Info:"过流",MajorErrCode:7,SubErrCode:[]},
|
||||
{Info:"短路",MajorErrCode:8,SubErrCode:[]},
|
||||
{Info:"未执行槽任务",MajorErrCode:9,SubErrCode:[]},
|
||||
{Info:"槽任务参数错误",MajorErrCode:10,SubErrCode:[]},
|
||||
{Info:"其他异常",MajorErrCode:20,SubErrCode:[255,208,209,210,211,212,213]},
|
||||
],//需要根据返回参数进行判断]
|
||||
SubErrInfo:[
|
||||
//详细错误段
|
||||
{Info:"无异常",ErrCode:0,
|
||||
ErrFac:["当检测任务不产生异常时使用此错误码"]},
|
||||
{Info:"预设电压异常",ErrCode:21,
|
||||
ErrFac:["1.检测小板电压调节失效,存在无法设置的电压"]},
|
||||
{Info:"上电充能错误",ErrCode:22,
|
||||
ErrFac:["1.检测器输出电压异常","2.模块上电容性负载大","3.模块基本电路异常"],
|
||||
},
|
||||
{Info:"电压设置异常",ErrCode:23,
|
||||
ErrFac:["1.检测小板输出电压异常","2.外部短路,导致过流保护"]
|
||||
},
|
||||
{Info:"UID扫描错误",ErrCode:24,
|
||||
ErrFac:["1.芯片通信异常","2.OTP中UID非0(启用了UID全0检测)"]},
|
||||
{Info:"OTP错误",ErrCode:25,
|
||||
ErrFac:["1.OTP数据非全0(启用了全0检测)"]
|
||||
},
|
||||
{Info:"通讯电流错误",ErrCode:26,
|
||||
ErrFac:["1.芯片反码电流异常"]
|
||||
},
|
||||
{Info:"基本电流错误",ErrCode:27,
|
||||
ErrFac:["1.芯片的静态功耗异常","2.检测器输出电压异常"]
|
||||
},
|
||||
{Info:"读取芯片ID错误",ErrCode:28,
|
||||
ErrFac:["1.通信错误"]
|
||||
},
|
||||
{Info:"密码验证错误",ErrCode:29,
|
||||
ErrFac:["1.芯片异常,内部密码与严重密码不一致"]
|
||||
},
|
||||
{Info:"DAC比较错误",ErrCode:30,
|
||||
ErrFac:["1.芯片异常,检测DAC不准","2.电容端电压异常,不符合检测要求","3.高压或充电降压通信异常","4.芯片充电漏流偏大"]
|
||||
},
|
||||
{Info:"高压充能错误",ErrCode:31,
|
||||
ErrFac:["1.电容漏流","2.电容容值偏低或偏大","3.芯片充电漏流,充电回路或起爆回路","4.芯片高压基本电流偏大","5.芯片异常,充电电流偏小"]
|
||||
},
|
||||
{Info:"充电电流错误",ErrCode:32,
|
||||
ErrFac:["1.芯片异常,充电电流符合指标"]
|
||||
},
|
||||
{Info:"高压充末电流错误",ErrCode:33,
|
||||
ErrFac:["1.电容漏流","2.芯片充电回路漏流或起爆回路漏流","3.芯片高压基本电流偏大"],
|
||||
},
|
||||
{Info:"低压充电能量错误",ErrCode:34,
|
||||
ErrFac:["1.电容漏流","2.电容容值偏低或偏大","3.芯片充电漏流,充电回路或起爆回路","4.芯片低压基本电流偏大","5.芯片异常,充电电流偏小","6.高压充电后不能放电"],
|
||||
},
|
||||
{Info:"低压充末电流错误",ErrCode:35,
|
||||
ErrFac:["1.电容漏流","2.芯片充电回路漏流或起爆回路漏流","3.芯片基本功耗偏大"],
|
||||
},
|
||||
{Info:"写延时错误",ErrCode:36,
|
||||
ErrFac:["1.芯片设置延时功能异常","2.通信异常"]
|
||||
},
|
||||
{Info:"读延时错误",ErrCode:37,
|
||||
ErrFac:["1.芯片读延时功能异常","2.通信异常"]
|
||||
},
|
||||
{Info:"芯片程测错误",ErrCode:38,
|
||||
ErrFac:["1.芯片成测标记错误,非全FFFF","2.通信异常"]
|
||||
},
|
||||
{Info:"时钟校准错误",ErrCode:39,
|
||||
ErrFac:["1.检测器命令执行异常"],
|
||||
},
|
||||
{Info:"写工厂信息错误",ErrCode:40,
|
||||
ErrFac:["1.OTP数据写入出错","2.通信异常"]
|
||||
},
|
||||
{Info:"模拟起爆错误",ErrCode:41,
|
||||
ErrFac:["1.发送起爆指令后无应答"]},
|
||||
{Info:"芯片状态码异常",ErrCode:42,
|
||||
ErrFac:["1.状态码与设置的掩码不匹配","2.通讯异常"]
|
||||
},
|
||||
{Info:"通信电流错误",ErrCode:43,
|
||||
ErrFac:["1.芯片异常","2.检测器异常"],
|
||||
},
|
||||
{Info:"反码时长错误",ErrCode:44,
|
||||
ErrFac:["1.芯片异常,通讯无反码","2.通讯反码电流低,不能识别"]
|
||||
},
|
||||
{Info:"复位放电错误",ErrCode:45,
|
||||
ErrFac:["1.高压充电后降压通讯异常","2.芯片复位不能正常放电","3.芯片异常,指令不执行"],
|
||||
},
|
||||
{Info:"桥丝阻值异常",ErrCode:51,
|
||||
ErrFac:["1.桥丝电阻不符合标准","2.测试设备校准偏差"],
|
||||
},
|
||||
{Info:"三码绑定失败",ErrCode:52,
|
||||
ErrFac:["1.模块已注过码","2.芯片异常,无法注码"],
|
||||
},
|
||||
{Info:"三码验证失败",ErrCode:53,
|
||||
ErrFac:["1.芯片异常,注码后验证失败"],
|
||||
},
|
||||
{Info:"升级失败",ErrCode:54,
|
||||
ErrFac:["1.芯片异常","2.通信异常","3.模块程序执行异常"],
|
||||
},
|
||||
|
||||
{Info:"通信超时",ErrCode:208,
|
||||
ErrFac:["1.小板状态异常,不响应通信指令","2.小板与主板之间通信异常"],
|
||||
},
|
||||
{Info:"脚本执行失败",ErrCode:209,
|
||||
ErrFac:["1.脚本功能异常","2.配置文件配置为不使用脚本"],
|
||||
},
|
||||
{Info:"数据长度与方案不符",ErrCode:210,
|
||||
ErrFac:["1.小板和主板使用的方案不同,更新方案即可","2.脚本功能异常"],
|
||||
},
|
||||
{Info:"方案ID不符",ErrCode:211,
|
||||
ErrFac:["1.使用的方案和脚本适配的方案不适配,更换相应的脚本或者方案即可"],
|
||||
},
|
||||
{Info:"检测项目不足",ErrCode:212,
|
||||
ErrFac:["1.方案中未执行异常判定所需的任务,无法判定异常","2.脚本功能异常"],
|
||||
},
|
||||
{Info:"数据不合规",ErrCode:213,
|
||||
ErrFac:["1.用于判定的数据不具有正常的电性能检测规律,模块检测时不应出现此错误","2.脚本功能异常",
|
||||
"3.方案中相关异常判定参数设置不合理","4.小板和主板使用的方案不同但数据返回长度相同,导致错误解释了返回数据的含义"],
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
{Info:"检测器执行异常",ErrCode:254,
|
||||
ErrFac:["广播类命令执行错误"],
|
||||
},
|
||||
{Info:"返回参数判断",ErrCode:255,
|
||||
ErrFac:[],
|
||||
},//需要通过指标判断
|
||||
],
|
||||
};
|
||||
var EW_Product_Names=["EJ01","EJ03","EJ04","EJ05","EJ06","EJ09","EJ10","EQ09"];
|
||||
490
web/layui/Checker/JQChecker.js
Normal file
490
web/layui/Checker/JQChecker.js
Normal file
@@ -0,0 +1,490 @@
|
||||
var JQCheckerTaskInfo=[
|
||||
{
|
||||
TaskID: 0,
|
||||
TaskName: "电源准备",
|
||||
TaskBrief: "检测前校准检测过程中需要使用的电压,便于检测过程中快速输出电压。电压范围55~270",
|
||||
ParamInfo: ["预设电压1", "预设电压2", "预设电压3", "预设电压4", "预设电压5", "预设电压6", "预设电压7", "预设电压8", "预设电压9", "预设电压10",],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "PowerPrapare",
|
||||
}, {
|
||||
TaskID: 1,
|
||||
TaskName: "上电充能",
|
||||
TaskBrief: "统计上电瞬间,模块功耗。电流计数方式 A = 3.3*ADC/4096/510/11",
|
||||
ParamInfo: ["总线电压", "采样超时0.1ms", "计时启停ADC"],
|
||||
ReturnInfo: ["总线电压", "大于启停的时间"],
|
||||
CommTestCmd: "PowerOn",
|
||||
}, {
|
||||
TaskID: 2,
|
||||
TaskName: "设置总线电压",
|
||||
TaskBrief: "设置总线电压为预设电压中的值",
|
||||
ParamInfo: ["总线电压"],
|
||||
ReturnInfo: ["总线电压"],
|
||||
CommTestCmd: "SetBusV",
|
||||
}, {
|
||||
TaskID: 3,
|
||||
TaskName: "获取总线电流",
|
||||
TaskBrief: "获取总线正反两个极性电流",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: ["总线正电流", "总线反电流"],
|
||||
CommTestCmd: "BaseCur",
|
||||
}, {
|
||||
TaskID: 4,
|
||||
TaskName: "扫描UID",
|
||||
TaskBrief: "芯片通信测试,分配网络地址。芯片复位后,第一条通信测试命令",
|
||||
ParamInfo: ["使1/失0反码采集", "使0/失1UID全0验证"],
|
||||
ReturnInfo: ["最大反馈电流", "最大反馈时间", "最小反馈电流", "最小反馈时间", "1字节", "3字节", "5字节", "7字节"],
|
||||
CommTestCmd: "ScanUID",
|
||||
}, {
|
||||
TaskID: 5,
|
||||
TaskName: "密码验证",
|
||||
TaskBrief: "芯片密码验证",
|
||||
ParamInfo: ["0码/1原码验证"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "PWCheck",
|
||||
}, {
|
||||
TaskID: 6,
|
||||
TaskName: "读取芯片代码",
|
||||
TaskBrief: "读取芯片代码",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: ["2字节代码"],
|
||||
CommTestCmd: "ReadChipID",
|
||||
}, {
|
||||
TaskID: 7,
|
||||
TaskName: "OTP检测",
|
||||
TaskBrief: "对OTP数据进行检测,可屏蔽检测区域",
|
||||
ParamInfo: ["1关/0检UID密码为0", "1关/0检延时保留区为0", "1关/0检用户区为0"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "OTPCheck",
|
||||
}, {
|
||||
TaskID: 8,
|
||||
TaskName: "工厂程测检测",
|
||||
TaskBrief: "芯片出厂检测,会在24 25区写0xFF",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "FTCheck",
|
||||
}, {
|
||||
TaskID: 9,
|
||||
TaskName: "读芯片状态",
|
||||
TaskBrief: "将芯片状态值与参数值进行算术与操作,等于参数值表示执行成功",
|
||||
ParamInfo: ["状态值掩码"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ReadState",
|
||||
}, {
|
||||
TaskID: 10,
|
||||
TaskName: "写工厂信息",
|
||||
TaskBrief: "在OTP 20~23区间写入工厂数据",
|
||||
ParamInfo: ["2字节数据", "2字节数据"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "WriteUserInfo",
|
||||
}, {
|
||||
TaskID: 11,
|
||||
TaskName: "充能统计",
|
||||
TaskBrief: "充能统会发送充电命令,计电流判线设定值,从上升到下降的时间。\
|
||||
同时记录充过程中最大电流。以及结束高压充电的总线电流和充电电流监控时间。\
|
||||
充电电流判线计数公式 电流=AD/4093*3.3/100/11",
|
||||
ParamInfo: ["超时0.1us", "电流判线AD", "充电结束值0.1uA", "充电超时0.1S", "电流监控0.1S"],
|
||||
ReturnInfo: ["充能值0.1ms", "充末电流0.1uA", "最大充电电流0.1mA", "充电抖动ADV"],
|
||||
CommTestCmd: "ChgEnergy",
|
||||
}, {
|
||||
TaskID: 12,
|
||||
TaskName: "充电电压检测",
|
||||
TaskBrief: "由高向低扫描芯片电压检测值,扫描失败返回值为0",
|
||||
ParamInfo: ["起始DAC", "结束DAC"],
|
||||
ReturnInfo: ["扫描通过的DAC"],
|
||||
CommTestCmd: "CheckDAC",
|
||||
}, {
|
||||
TaskID: 13,
|
||||
TaskName: "延时等待",
|
||||
TaskBrief: "延时流程,同时可以启动总线电流监测 设置单位0.1S。波动DAC换算 Vad/4096*3.3/100/11",
|
||||
ParamInfo: ["延时时间", "使1/失0电流监控"],
|
||||
ReturnInfo: ["电流波动DAC"],
|
||||
CommTestCmd: "WaitDelay",
|
||||
}, {
|
||||
TaskID: 14,
|
||||
TaskName: "写延时",
|
||||
TaskBrief: "向延时寄存器写入数据",
|
||||
ParamInfo: ["延时"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "SetDelay",
|
||||
}, {
|
||||
TaskID: 15,
|
||||
TaskName: "读延时",
|
||||
TaskBrief: "读延时寄存器",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: ["延时值"],
|
||||
CommTestCmd: "ReadDelay",
|
||||
}, {
|
||||
TaskID: 16,
|
||||
TaskName: "时钟校准",
|
||||
TaskBrief: "发送校准脉冲",
|
||||
ParamInfo: ["脉冲周期", "脉冲个数"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ClkTrim",
|
||||
}, {
|
||||
TaskID: 17,
|
||||
TaskName: "放电",
|
||||
TaskBrief: "发送放电命令,使能快速放电,还需要配置放电时间。快速放电仅JQ2012才有。放电时间单位0.1S,该值应该大于0快速放电才有效",
|
||||
ParamInfo: ["0/1使能快速", "快速时间"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "Discharge",
|
||||
}, {
|
||||
TaskID: 18,
|
||||
TaskName: "复位放电",
|
||||
TaskBrief: "执行复位和放电,并检测复测成功",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "Reset",
|
||||
}, {
|
||||
TaskID: 19,
|
||||
TaskName: "起爆使能",
|
||||
TaskBrief: "发送起爆使能命令",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "BootEn",
|
||||
}, {
|
||||
TaskID: 20,
|
||||
TaskName: "起爆充能",
|
||||
TaskBrief: "发送起爆命令后,检测起爆完成后对电容的充电。判断电流上升沿到下降沿的时间。充能电流ADC/4096*3.3/100/21",
|
||||
ParamInfo: ["电流判线AD", "起爆脉冲个数", "延时采集时间"],
|
||||
ReturnInfo: ["充能时间", "充电电流", "充电电流波动"],
|
||||
CommTestCmd: "BoomEnergy",
|
||||
}, {
|
||||
TaskID: 21,
|
||||
TaskName: "使能通讯末电流采集",
|
||||
TaskBrief: "启动命令通讯结束后电流采集,与获取通讯电流配合。两个任务间应该避免充电、OTP写和起爆操作",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "EnCommEndCur",
|
||||
}, {
|
||||
TaskID: 22,
|
||||
TaskName: "获取通讯末电流",
|
||||
TaskBrief: "获取通讯电流配合与使能通讯末电流采集,获取两个任务间,通讯完成后的最大电流",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: ["通讯末电流"],
|
||||
CommTestCmd: "GetCommEndCur",
|
||||
}, {
|
||||
TaskID: 23,
|
||||
TaskName: "写OTP数据",
|
||||
TaskBrief: "向芯片OTP中写入数据",
|
||||
ParamInfo: ["OTP地址", "数据长度", "1数据", "3数据", "5数据", "7数据"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "WriteOTP",
|
||||
}, {
|
||||
TaskID: 24,
|
||||
TaskName: "读OTP数据",
|
||||
TaskBrief: "从芯片OTP中读取数据",
|
||||
ParamInfo: ["OTP地址", "数据长度"],
|
||||
ReturnInfo: ["nBytesOTP数据"],
|
||||
CommTestCmd: "ReadOTP",
|
||||
}, {
|
||||
TaskID: 25,
|
||||
TaskName: "清除起爆命令",
|
||||
TaskBrief: "起爆脉冲重新计算",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ClearBoom",
|
||||
}, {
|
||||
TaskID: 26,
|
||||
TaskName: "关总线",
|
||||
TaskBrief: "关闭总线输出",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "PowerOff",
|
||||
}, {
|
||||
TaskID: 27,
|
||||
TaskName: "缓存写入OTP",
|
||||
TaskBrief: "缓存数据写入OTP数据",
|
||||
ParamInfo: ["OTP 地址", "缓存区起始", "写入数据长度"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "PowerOff",
|
||||
},
|
||||
{
|
||||
TaskID: 28,
|
||||
TaskName: "三码绑定",
|
||||
TaskBrief: "注码检测指令使用,直接使用命令中的三码数据",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "BindUIDPWD",
|
||||
}, {
|
||||
TaskID: 29,
|
||||
TaskName: "验证三码",
|
||||
TaskBrief: "验证芯片三码数据,直接使用命令中的三码数据",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "VerifyUIDPWD",
|
||||
}, {
|
||||
TaskID: 30,
|
||||
TaskName: "电容压差",
|
||||
TaskBrief: "充电后,总线断电测试电容给芯片供电,评估芯片延时功耗",
|
||||
ParamInfo: ["断电时间0.1S"],
|
||||
ReturnInfo: ["压差mV"],
|
||||
CommTestCmd: "CapVoltage",
|
||||
}, {
|
||||
TaskID: 31,
|
||||
TaskName: "桥丝电阻测试",
|
||||
TaskBrief: "测量桥丝阻值。可配置测量模式 0 4线制, 1 2线1-4通,2 2线2-3通",
|
||||
ParamInfo: ["测量模式"],
|
||||
ReturnInfo: ["电阻0.01Ω"],
|
||||
CommTestCmd: "ResistorSample",
|
||||
}, {
|
||||
TaskID: 32,
|
||||
TaskName: "使能OTP",
|
||||
TaskBrief: "OTP使能命令",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "EnOTPW",
|
||||
}, {
|
||||
TaskID: 33,
|
||||
TaskName: "写版本",
|
||||
TaskBrief: "写入模块版本号到OTP 20地址,该值应该小于32",
|
||||
ParamInfo: ["版本号"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "WriteVersion",
|
||||
}, {
|
||||
TaskID: 34,
|
||||
TaskName: "读版本",
|
||||
TaskBrief: "获取写入的版本号",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: ["版本号"],
|
||||
CommTestCmd: "ReadVersion",
|
||||
}, {
|
||||
TaskID: 35,
|
||||
TaskName: "写缓存数据",
|
||||
TaskBrief: "将系统缓存区的数据写入到OTP中,主要用于写工厂信息",
|
||||
ParamInfo: ["OTP地址", "缓存地址", "写入长度"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "WriteFacBuff",
|
||||
}, {
|
||||
TaskID: 36,
|
||||
TaskName: "验证缓存数据",
|
||||
TaskBrief: "对比缓存数据与OTP数据",
|
||||
ParamInfo: ["OTP地址", "缓存地址", "验证长度"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "VerifyFacBuff",
|
||||
},
|
||||
{
|
||||
TaskID: 37,
|
||||
TaskName: "验证延时时间",
|
||||
TaskBrief: "验证延时和otp是否相等",
|
||||
ParamInfo: [],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "VerifyFacBuff",
|
||||
},
|
||||
{
|
||||
TaskID: 38,
|
||||
TaskName: "切换总线极性",
|
||||
TaskBrief: "反复切换总线极性,输出最后一次极性切换后的电流",
|
||||
ParamInfo: ["间隔时间ms", "切换次数"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "VerifyFacBuff",
|
||||
},
|
||||
{
|
||||
TaskID: 39,
|
||||
TaskName: "异常判定",
|
||||
TaskBrief: "对已检项目进行异常判定,如果异常判定结果不在过滤范围内,则此任务失败",
|
||||
ParamInfo: ["过滤值1", "过滤值2", "过滤值3", "过滤值4", "过滤值5", "过滤值6", "过滤值7", "过滤值8", "过滤值9", "过滤值10",],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID: 40,
|
||||
TaskName: "重新执行任务",
|
||||
TaskBrief: "重新执行指定序号的任务,本次执行会覆盖之前的结果",
|
||||
ParamInfo: ["需要重新执行的任务序号"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID: 41,
|
||||
TaskName: "配置三码数据到小板",
|
||||
TaskBrief: "先把三码数据写入小板缓存,然后才能使用三码绑定任务",
|
||||
ParamInfo: ["uid,pwd长度", "数据0,1", "数据2,3", "数据4,5", "数据6,7", "数据8,9", "数据10,11", "数据12,13", "数据14,15", "数据16,17",],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID: 42,
|
||||
TaskName: "任务插槽",
|
||||
TaskBrief: "程序可以动态添加要执行的任务,此任务将执行所有序号匹配的动态任务",
|
||||
ParamInfo: ["插槽序号"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID: 43,
|
||||
TaskName: "设置电阻校准值",
|
||||
TaskBrief: "电阻测量的校准值,不建议将此任务添加进方案中",
|
||||
ParamInfo: ["电阻校准值"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID: 44,
|
||||
TaskName: "写入流水号",
|
||||
TaskBrief: "采用读改写的方式写入27bit的流水号数据",
|
||||
ParamInfo: ["要写入的流水号低2字节", "要写入的流水号高2字节"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID: 45,
|
||||
TaskName: "读取流水号",
|
||||
TaskBrief: "读取27bit的流水号数据,对比失败则此任务失败",
|
||||
ParamInfo: ["要校验的流水号低2字节", "要校验的流水号高2字节"],
|
||||
ReturnInfo: ["读取的流水号低2字节", "读取的流水号高2字节"],
|
||||
CommTestCmd: "ResistorSample",
|
||||
},
|
||||
{
|
||||
TaskID: 46,
|
||||
TaskName: "写固定延时",
|
||||
TaskBrief: "写入延时并掉电保存",
|
||||
ParamInfo: ["延时值ms"],
|
||||
ReturnInfo: [],
|
||||
CommTestCmd: "ResistorSample",
|
||||
},
|
||||
|
||||
|
||||
|
||||
];
|
||||
JQ_ErrorInfo={
|
||||
//错误描述
|
||||
//主错误段
|
||||
MajorErrInfo:[
|
||||
{Info:"执行成功",MajorErrCode:0,SubErrCode:[]},
|
||||
{Info:"检测器异常",MajorErrCode:1,SubErrCode:[21,23,254]},
|
||||
// 主电容异常移除 dac比较错误30,状态错误42
|
||||
// 如果有电容异常,在充能阶段已经暴露
|
||||
{Info:"主电容异常",MajorErrCode:2,SubErrCode:[31,32,33,34,35]},
|
||||
{Info:"接触异常",MajorErrCode:3,SubErrCode:[27]},
|
||||
// 桥丝异常移除 41,42
|
||||
// 如果有桥丝异常,在dac比较阶段和电阻检阶段已暴露
|
||||
{Info:"桥丝阻值异常",MajorErrCode:4,SubErrCode:[30,51]},
|
||||
// 移除上电充能异常22,加入其他异常
|
||||
{Info:"芯片异常",MajorErrCode:5,SubErrCode:[24,25,26,27,28,29,30,32,33,35,36,37,38,39,40,41,42,43,44,45,52,53,54]},
|
||||
{Info:"判定任务缺失",MajorErrCode:6,SubErrCode:[212]},
|
||||
{Info:"过流",MajorErrCode:7,SubErrCode:[]},
|
||||
{Info:"短路",MajorErrCode:8,SubErrCode:[]},
|
||||
{Info:"未执行槽任务",MajorErrCode:9,SubErrCode:[]},
|
||||
{Info:"槽任务参数错误",MajorErrCode:10,SubErrCode:[]},
|
||||
{Info:"其他异常",MajorErrCode:20,SubErrCode:[22,255,208,209,210,211,212,213]},
|
||||
],//需要根据返回参数进行判断]
|
||||
SubErrInfo:[
|
||||
//详细错误段
|
||||
{Info:"无异常",ErrCode:0,
|
||||
ErrFac:["当检测任务不产生异常时使用此错误码"]},
|
||||
{Info:"预设电压异常",ErrCode:21,
|
||||
ErrFac:["1.检测小板电压调节失效,存在无法设置的电压"]},
|
||||
{Info:"上电充能错误",ErrCode:22,
|
||||
ErrFac:["1.检测器输出电压异常","2.模块上电容性负载大","3.模块基本电路异常"],
|
||||
},
|
||||
{Info:"电压设置异常",ErrCode:23,
|
||||
ErrFac:["1.检测小板输出电压异常","2.外部短路,导致过流保护"]
|
||||
},
|
||||
{Info:"UID扫描错误",ErrCode:24,
|
||||
ErrFac:["1.芯片通信异常","2.OTP中UID非0(启用了UID全0检测)"]},
|
||||
{Info:"OTP错误",ErrCode:25,
|
||||
ErrFac:["1.OTP数据非全0(启用了全0检测)"]
|
||||
},
|
||||
{Info:"通讯电流错误",ErrCode:26,
|
||||
ErrFac:["1.芯片反码电流异常"]
|
||||
},
|
||||
{Info:"基本电流错误",ErrCode:27,
|
||||
ErrFac:["1.芯片的静态功耗异常","2.检测器输出电压异常"]
|
||||
},
|
||||
{Info:"读取芯片ID错误",ErrCode:28,
|
||||
ErrFac:["1.通信错误"]
|
||||
},
|
||||
{Info:"密码验证错误",ErrCode:29,
|
||||
ErrFac:["1.芯片异常,内部密码与严重密码不一致"]
|
||||
},
|
||||
{Info:"DAC比较错误",ErrCode:30,
|
||||
ErrFac:["1.芯片异常,检测DAC不准","2.电容端电压异常,不符合检测要求","3.高压或充电降压通信异常","4.芯片充电漏流偏大"]
|
||||
},
|
||||
{Info:"高压充能错误",ErrCode:31,
|
||||
ErrFac:["1.电容漏流","2.电容容值偏低或偏大","3.芯片充电漏流,充电回路或起爆回路","4.芯片高压基本电流偏大","5.芯片异常,充电电流偏小"]
|
||||
},
|
||||
{Info:"充电电流错误",ErrCode:32,
|
||||
ErrFac:["1.芯片异常,充电电流符合指标"]
|
||||
},
|
||||
{Info:"高压充末电流错误",ErrCode:33,
|
||||
ErrFac:["1.电容漏流","2.芯片充电回路漏流或起爆回路漏流","3.芯片高压基本电流偏大"],
|
||||
},
|
||||
{Info:"低压充电能量错误",ErrCode:34,
|
||||
ErrFac:["1.电容漏流","2.电容容值偏低或偏大","3.芯片充电漏流,充电回路或起爆回路","4.芯片低压基本电流偏大","5.芯片异常,充电电流偏小","6.高压充电后不能放电"],
|
||||
},
|
||||
{Info:"低压充末电流错误",ErrCode:35,
|
||||
ErrFac:["1.电容漏流","2.芯片充电回路漏流或起爆回路漏流","3.芯片基本功耗偏大"],
|
||||
},
|
||||
{Info:"写延时错误",ErrCode:36,
|
||||
ErrFac:["1.芯片设置延时功能异常","2.通信异常"]
|
||||
},
|
||||
{Info:"读延时错误",ErrCode:37,
|
||||
ErrFac:["1.芯片读延时功能异常","2.通信异常"]
|
||||
},
|
||||
{Info:"芯片程测错误",ErrCode:38,
|
||||
ErrFac:["1.芯片成测标记错误,非全FFFF","2.通信异常"]
|
||||
},
|
||||
{Info:"时钟校准错误",ErrCode:39,
|
||||
ErrFac:["1.检测器命令执行异常"],
|
||||
},
|
||||
{Info:"写工厂信息错误",ErrCode:40,
|
||||
ErrFac:["1.OTP数据写入出错","2.通信异常"]
|
||||
},
|
||||
{Info:"模拟起爆错误",ErrCode:41,
|
||||
ErrFac:["1.发送起爆指令后无应答"]},
|
||||
{Info:"芯片状态码异常",ErrCode:42,
|
||||
ErrFac:["1.状态码与设置的掩码不匹配","2.通讯异常"]
|
||||
},
|
||||
{Info:"通信电流错误",ErrCode:43,
|
||||
ErrFac:["1.芯片异常","2.检测器异常"],
|
||||
},
|
||||
{Info:"反码时长错误",ErrCode:44,
|
||||
ErrFac:["1.芯片异常,通讯无反码","2.通讯反码电流低,不能识别"]
|
||||
},
|
||||
{Info:"复位放电错误",ErrCode:45,
|
||||
ErrFac:["1.高压充电后降压通讯异常","2.芯片复位不能正常放电","3.芯片异常,指令不执行"],
|
||||
},
|
||||
{Info:"桥丝阻值异常",ErrCode:51,
|
||||
ErrFac:["1.桥丝电阻不符合标准","2.测试设备校准偏差"],
|
||||
},
|
||||
{Info:"三码绑定失败",ErrCode:52,
|
||||
ErrFac:["1.模块已注过码","2.芯片异常,无法注码"],
|
||||
},
|
||||
{Info:"三码验证失败",ErrCode:53,
|
||||
ErrFac:["1.芯片异常,注码后验证失败"],
|
||||
},
|
||||
{Info:"缓存信息写入失败",ErrCode:54,
|
||||
ErrFac:["1.系统内部缓存数据异常","2.芯片数据写入异常"],
|
||||
},
|
||||
{Info:"通信超时",ErrCode:208,
|
||||
ErrFac:["1.小板状态异常,不响应通信指令","2.小板与主板之间通信异常"],
|
||||
},
|
||||
{Info:"脚本执行失败",ErrCode:209,
|
||||
ErrFac:["1.脚本功能异常","2.配置文件配置为不使用脚本"],
|
||||
},
|
||||
{Info:"数据长度与方案不符",ErrCode:210,
|
||||
ErrFac:["1.小板和主板使用的方案不同,更新方案即可","2.脚本功能异常"],
|
||||
},
|
||||
{Info:"方案ID不符",ErrCode:211,
|
||||
ErrFac:["1.使用的方案和脚本适配的方案不适配,更换相应的脚本或者方案即可"],
|
||||
},
|
||||
{Info:"检测项目不足",ErrCode:212,
|
||||
ErrFac:["1.方案中未执行异常判定所需的任务,无法判定异常","2.脚本功能异常"],
|
||||
},
|
||||
{Info:"数据不合规",ErrCode:213,
|
||||
ErrFac:["1.用于判定的数据不具有正常的电性能检测规律,模块检测时不应出现此错误","2.脚本功能异常",
|
||||
"3.方案中相关异常判定参数设置不合理","4.小板和主板使用的方案不同但数据返回长度相同,导致错误解释了返回数据的含义"],
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
{Info:"检测器执行异常",ErrCode:254,
|
||||
ErrFac:["广播类命令执行错误"],
|
||||
},
|
||||
{Info:"返回参数判断",ErrCode:255,
|
||||
ErrFac:[],
|
||||
},//需要通过指标判断
|
||||
],
|
||||
};
|
||||
var JQ_Product_Names=["EJ01","EJ03","EJ04","EJ05","EJ06","EJ09","EJ10","EQ09","EQ05","EQ06","EQ07"];
|
||||
452
web/layui/Checker/XTChecker.js
Normal file
452
web/layui/Checker/XTChecker.js
Normal file
@@ -0,0 +1,452 @@
|
||||
var XTCheckerTaskInfo=[
|
||||
{
|
||||
TaskID:0,
|
||||
TaskName:"电源准备",
|
||||
TaskBrief:"检测前校准检测过程中需要使用的电压,便于检测过程中快速输出电压。电压范围55~270",
|
||||
ParamInfo:["预设电压1","预设电压2","预设电压3","预设电压4","预设电压5","预设电压6","预设电压7","预设电压8","预设电压9","预设电压10",],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"PowerPrapare",
|
||||
},{
|
||||
TaskID:1,
|
||||
TaskName:"上电充能",
|
||||
TaskBrief:"统计模块的上电充能,具有电压设置功能,电流= AD/4096/10/34",
|
||||
ParamInfo:["总线电压","采样超时0.1ms","计时启停ADC"],
|
||||
ReturnInfo:["总线电压","大于启停的时间"],
|
||||
CommTestCmd:"PowerOn",
|
||||
},{
|
||||
TaskID:2,
|
||||
TaskName:"设置总线电压",
|
||||
TaskBrief:"设置总线电压为预设电压中的值",
|
||||
ParamInfo:["总线电压"],
|
||||
ReturnInfo:["总线电压"],
|
||||
CommTestCmd:"SetBusV",
|
||||
},{
|
||||
TaskID:3,
|
||||
TaskName:"获取总线电流",
|
||||
TaskBrief:"获取总线正反两个极性电流",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:["总线正电流","总线反电流"],
|
||||
CommTestCmd:"BaseCur",
|
||||
},{
|
||||
TaskID:4,
|
||||
TaskName:"扫描UID",
|
||||
TaskBrief:"扫描总线上的电子模块 1发",
|
||||
ParamInfo:["UID长度","使1/失0UID对比"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ScanUID",
|
||||
},{
|
||||
TaskID:5,
|
||||
TaskName:"写配置参数",
|
||||
TaskBrief:"写入配置参数 UID 密码长度,反码电流挡位 版本号。 0:100uF大电解30um桥丝,1:68uF坦电容22um桥丝,2:68uF坦电容8Ω电阻,\
|
||||
3:68uF坦电容6Ω电阻,4:33uF钽电容22um桥丝",
|
||||
ParamInfo:["UID长度","密码长度","电流挡位","版本号"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"WriteChipCfg",
|
||||
},{
|
||||
TaskID:6,
|
||||
TaskName:"验证配置",
|
||||
TaskBrief:"写入配置参数 UID 密码长度,反码电流挡位 版本号。 0:100uF大电解30um桥丝,1:68uF坦电容22um桥丝,2:68uF坦电容8Ω电阻,\
|
||||
3:68uF坦电容6Ω电阻,4:33uF钽电容22um桥丝",
|
||||
ParamInfo:["UID长度","密码长度","电流挡位","版本号"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"CheckChipCfg",
|
||||
},{
|
||||
TaskID:7,
|
||||
TaskName:"模拟注码",
|
||||
TaskBrief:"写入测试UID和密码,优先配置写入配置项",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"BindTestCode",
|
||||
},{
|
||||
TaskID:8,
|
||||
TaskName:"充能统计",
|
||||
TaskBrief:"充能统会发送充电命令,计电流判线设定值,从上升到下降的时间。\
|
||||
同时记录充过程中最大电流。以及结束高压充电的总线电流和充电电流监控时间。\
|
||||
充电电流判线计数公式 电流=AD/4093*3.3/100 R100_2mA_33mA_MC。\
|
||||
充电挡位:17-1V 34-4V 51-10V 68-12V 85-14V 102-16V 119-18V 136-22V 153-20V",
|
||||
ParamInfo:["充电挡位","统计超时","电流判线AD","充电结束值0.1uA","充电超时0.1S","电流监控0.1S"],
|
||||
ReturnInfo:["充能值0.1ms","充末电流0.1uA","最大充电电流0.1mA","充电抖动ADV"],
|
||||
CommTestCmd:"ChgEnergy",
|
||||
},
|
||||
{
|
||||
TaskID:9,
|
||||
TaskName:"设置现场值",
|
||||
TaskBrief:"写现场值,如果UID已经写入,会将现场值读取进行比对",
|
||||
ParamInfo:["编号","延时","孔号"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"WriteRunField",
|
||||
},{
|
||||
TaskID:10,
|
||||
TaskName:"比对现场值",
|
||||
TaskBrief:"对内部编号、延时、孔号进行比对,要求优先获取芯片UID",
|
||||
ParamInfo:["编号","延时","孔号","1使/0失反馈采集"],
|
||||
ReturnInfo:["最大反馈电流","最大反馈时间","最小反馈电流","最小反馈时间"],
|
||||
CommTestCmd:"CheckRunField",
|
||||
},
|
||||
{
|
||||
TaskID:11,
|
||||
TaskName:"桥丝检测",
|
||||
TaskBrief:"桥丝通断检测,如果测试器有uid,将采用uid方式通信",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:["桥丝ADC"],
|
||||
CommTestCmd:"Resister",
|
||||
},{
|
||||
TaskID:12,
|
||||
TaskName:"电容测量",
|
||||
TaskBrief:"电容容量检测,如果测试器有uid,将采用uid方式通信, 电压等级: 17-1V 34-4V 51-10V",
|
||||
ParamInfo:["测试电压","超时时间0.1ms"],
|
||||
ReturnInfo:["电容容量0.1uF"],
|
||||
CommTestCmd:"Cap",
|
||||
},{
|
||||
TaskID:13,
|
||||
TaskName:"延时等待",
|
||||
TaskBrief:"延时等待,并监控总线电流波动",
|
||||
ParamInfo:["延时时间0.1s","1使能监控"],
|
||||
ReturnInfo:["电流波动AD"],
|
||||
CommTestCmd:"WaitDelay",
|
||||
},{
|
||||
TaskID:14,
|
||||
TaskName:"写管壳码",
|
||||
TaskBrief:"写管壳码(工厂信息) 如果测试器有uid,将采用uid方式通信",
|
||||
ParamInfo:["数据缓存起始","写入长度"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"WriteShell",
|
||||
},{
|
||||
TaskID:15,
|
||||
TaskName:"写UID",
|
||||
TaskBrief:"将缓存信息写入到芯片UID区域",
|
||||
ParamInfo:["数据缓存起始","写入长度"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"WriteUID",
|
||||
},{
|
||||
TaskID:16,
|
||||
TaskName:"写密码",
|
||||
TaskBrief:"将缓存信息写入到芯片密码区域",
|
||||
ParamInfo:["数据缓存起始","写入长度"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"WritePWD",
|
||||
},{
|
||||
TaskID:17,
|
||||
TaskName:"备份区标记",
|
||||
TaskBrief:"备份区标记检测,备份区用于存储检测标记",
|
||||
ParamInfo:["0标记1比对","数据掩码","数据"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"CheckBackFlag",
|
||||
},{
|
||||
TaskID:18,
|
||||
TaskName:"读取备份区",
|
||||
TaskBrief:"读取备份区数据,备份区用于被标记检测,外部测量电阻值,内部测量ADC",
|
||||
ParamInfo:["2Bytes数据","2Bytes数据"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"ReadBackFlag",
|
||||
},{
|
||||
TaskID:19,
|
||||
TaskName:"时钟校准",
|
||||
TaskBrief:"发送校准脉冲",
|
||||
ParamInfo:[" 1快速0全","校准周期","校准时长"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"Trim",
|
||||
},{
|
||||
TaskID:20,
|
||||
TaskName:"使能通信电流采集",
|
||||
TaskBrief:"使能通信末电流采集,对下行命令发送完成后电流进行采集",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"EnCommEndCur",
|
||||
},{
|
||||
TaskID:21,
|
||||
TaskName:"获取通信末电流",
|
||||
TaskBrief:"需要先执行使能通信电流采集,然后该命令获取使能后通信末的电流",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:["通信末电流"],
|
||||
CommTestCmd:"GetCommEndCur",
|
||||
},{
|
||||
TaskID:22,
|
||||
TaskName:"放电",
|
||||
TaskBrief:"执行快速放电命令",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"Discharge",
|
||||
},{
|
||||
TaskID:23,
|
||||
TaskName:"在线检测",
|
||||
TaskBrief:"在线巡检,根据网络号点名,比对是否正确 ",
|
||||
ParamInfo:["网络号","脉冲个数"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"OneLineCheck",
|
||||
},{
|
||||
TaskID:24,
|
||||
TaskName:"状态码检测",
|
||||
TaskBrief:"状态检测,如果UID已经存在,使用UID读取。否则通过扫描的方式",
|
||||
ParamInfo:["比较掩码","比较位"],
|
||||
ReturnInfo:["状态值"],
|
||||
CommTestCmd:"CheckState",
|
||||
},{
|
||||
TaskID:25,
|
||||
TaskName:"起爆",
|
||||
TaskBrief:"检测是否满足起爆调节,执行起爆,接收起爆后反馈",
|
||||
ParamInfo:["起爆超时0.1ms","巡检脉冲"],
|
||||
ReturnInfo:["起爆用时","网络号"],
|
||||
CommTestCmd:"Boom",
|
||||
},{
|
||||
TaskID:26,
|
||||
TaskName:"复位",
|
||||
TaskBrief:"执行软件复位命令",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"Reset",
|
||||
},{
|
||||
TaskID:27,
|
||||
TaskName:"关总线",
|
||||
TaskBrief:"发送放电后关闭总线",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"PowerOFF",
|
||||
},{
|
||||
TaskID:28,
|
||||
TaskName:"芯片锁存",
|
||||
TaskBrief:"锁存芯片C类指令",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"LockCmdC",
|
||||
},{
|
||||
TaskID:29,
|
||||
TaskName:"赋码设备使能",
|
||||
TaskBrief:"设置赋码标志位,在接收到赋码命令后,可跳过总线开启和在线检测",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"CodeBindEn",
|
||||
},{
|
||||
TaskID:30,
|
||||
TaskName:"接入检测",
|
||||
TaskBrief:"通过电流和通信,检测模块是否接入",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"InputCheck",
|
||||
},{
|
||||
TaskID:31,
|
||||
TaskName:"密码验证",
|
||||
TaskBrief:"验证内部存储的密码,首先需要执行写入密码或模拟注码",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"CheckPWD",
|
||||
},{
|
||||
TaskID:32,
|
||||
TaskName:"加载配置",
|
||||
TaskBrief:"获取芯片内部UID长度,密码长度、版本号信息、反码电流信息",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:["UID长度","密码长度","版本号","反码挡位"],
|
||||
CommTestCmd:"",
|
||||
},{
|
||||
TaskID:33,
|
||||
TaskName:"电容压差",
|
||||
TaskBrief:"充电后,总线断电测试电容给芯片供电,评估芯片延时功耗",
|
||||
ParamInfo:["断电时间0.1S"],
|
||||
ReturnInfo:["压差mV"],
|
||||
CommTestCmd:"CapVoltage",
|
||||
},{
|
||||
TaskID:34,
|
||||
TaskName:"桥丝电阻测试",
|
||||
TaskBrief:"测量桥丝阻值。可配置测量模式 0 4线制, 1 2线1-4通,2 2线2-3通",
|
||||
ParamInfo:["测量模式"],
|
||||
ReturnInfo:["电容0.01Ω"],
|
||||
CommTestCmd:"ResistorSample",
|
||||
},{
|
||||
TaskID:35,
|
||||
TaskName:"三码绑定",
|
||||
TaskBrief:"注码检测指令使用,直接使用命令中的三码数据",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"BindUIDPWD",
|
||||
},{
|
||||
TaskID:36,
|
||||
TaskName:"验证三码",
|
||||
TaskBrief:"验证芯片三码数据,直接使用命令中的三码数据",
|
||||
ParamInfo:[],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"VerifyUIDPWD",
|
||||
},{
|
||||
TaskID:37,
|
||||
TaskName:"在线检测",
|
||||
TaskBrief:"在线检测 并扫描通信",
|
||||
ParamInfo:["总线电压","超时1ms","UID长度"],
|
||||
ReturnInfo:["总线电压"],
|
||||
CommTestCmd:"OnLineSCAN",
|
||||
},{
|
||||
TaskID:38,
|
||||
TaskName:"验证管壳/工厂信息",
|
||||
TaskBrief:"验证存储再芯片管壳码区域的数据与缓存区是否一致",
|
||||
ParamInfo:["缓存起始","缓存长度"],
|
||||
ReturnInfo:["总线电压"],
|
||||
CommTestCmd:"VerfyShell",
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
TaskID:201,
|
||||
TaskName:"充电电流",
|
||||
TaskBrief:"在线检测 并扫描通信",
|
||||
ParamInfo:["充电使能","采样周期","采样次数"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"CurMonitor",
|
||||
},{
|
||||
TaskID:202,
|
||||
TaskName:"写入缓存",
|
||||
TaskBrief:"将16进制数据写入缓存空间",
|
||||
ParamInfo:["缓存空间数据(不超过32字节,空格隔开)"],
|
||||
ReturnInfo:[],
|
||||
CommTestCmd:"SetWriteBufHex",
|
||||
},
|
||||
|
||||
|
||||
];
|
||||
|
||||
XT_ErrorInfo={
|
||||
//错误描述
|
||||
//主错误段
|
||||
MajorErrInfo:[
|
||||
{Info:"执行成功",MajorErrCode:0,SubErrCode:[]},
|
||||
// 添加异常代码254
|
||||
{Info:"检测器异常",MajorErrCode:1,SubErrCode:[21,23,254]},
|
||||
{Info:"主电容异常",MajorErrCode:2,SubErrCode:[31,32,33,34,35]},
|
||||
{Info:"接触异常",MajorErrCode:3,SubErrCode:[27,37]},
|
||||
{Info:"桥丝阻值异常",MajorErrCode:4,SubErrCode:[30,51]},
|
||||
{Info:"芯片异常",MajorErrCode:5,SubErrCode:[22,24,25,26,27,28,29,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,54,55]},
|
||||
{Info:"判定任务缺失",MajorErrCode:6,SubErrCode:[212]},
|
||||
{Info:"过流",MajorErrCode:7,SubErrCode:[]},
|
||||
{Info:"短路",MajorErrCode:8,SubErrCode:[]},
|
||||
{Info:"其他异常",MajorErrCode:20,SubErrCode:[255,208,209,210,211,212,213]},
|
||||
],//需要根据返回参数进行判断]
|
||||
SubErrInfo:[
|
||||
//详细错误段
|
||||
{Info:"预设电压异常",ErrCode:21,
|
||||
ErrFac:["1.检测小板电压调节失效,存在无法设置的电压"]},
|
||||
{Info:"上电充能错误",ErrCode:22,
|
||||
ErrFac:["1.检测器输出电压异常","2.模块上电容性负载大","3.模块基本电路异常"],
|
||||
},
|
||||
{Info:"电压设置异常",ErrCode:23,
|
||||
ErrFac:["1.检测小板输出电压异常","2.外部短路,导致过流保护"]
|
||||
},
|
||||
{Info:"UID扫描错误",ErrCode:24,
|
||||
ErrFac:["1.芯片通信异常","2.芯片内部存储的UID与参考UID不一致"]},
|
||||
{Info:"标记区验证错误",ErrCode:25,
|
||||
ErrFac:["1.验证标志位没有置位(检测流程出错","2.芯片数据被擦写","3.通信异常"]
|
||||
},
|
||||
{Info:"通讯后电流错误",ErrCode:26,
|
||||
ErrFac:["1.芯片执行指令异常","2.芯片通信接收功耗异常"]
|
||||
},
|
||||
{Info:"基本电流错误",ErrCode:27,
|
||||
ErrFac:["1.芯片的静态功耗异常","2.检测器输出电压异常"]
|
||||
},
|
||||
{Info:"配置错误",ErrCode:28,
|
||||
ErrFac:["1.芯片错误","2.通信异常"]
|
||||
},
|
||||
{Info:"验证配置",ErrCode:29,
|
||||
ErrFac:["1.芯片内部数据与检测数据不一致,数据丢失","2.芯片通信异常","3.芯片数据被改写"]
|
||||
},
|
||||
{Info:"桥丝错误",ErrCode:30,
|
||||
ErrFac:["1.桥丝开路,或阻值异常","2.芯片异常,检测不准"]
|
||||
},
|
||||
{Info:"高压充能错误",ErrCode:31,
|
||||
ErrFac:["1.电容漏流","2.电容容值偏低或偏大","3.芯片充电漏流,充电回路或起爆回路","4.芯片高压基本电流偏大","5.芯片异常,充电电流偏小"]
|
||||
},
|
||||
{Info:"充电电流错误",ErrCode:32,
|
||||
ErrFac:["1.芯片异常,充电电流符合指标"]
|
||||
},
|
||||
{Info:"高压充末电流错误",ErrCode:33,
|
||||
ErrFac:["1.电容漏流","2.芯片充电回路漏流或起爆回路漏流","3.芯片高压基本电流偏大"],
|
||||
},
|
||||
{Info:"低压充电能量错误",ErrCode:34,
|
||||
ErrFac:["1.电容漏流","2.电容容值偏低或偏大","3.芯片充电漏流,充电回路或起爆回路","4.芯片低压基本电流偏大","5.芯片异常,充电电流偏小","6.高压充电后不能放电"],
|
||||
},
|
||||
{Info:"低压充末电流错误",ErrCode:35,
|
||||
ErrFac:["1.电容漏流","2.芯片充电回路漏流或起爆回路漏流","3.芯片基本功耗偏大"],
|
||||
},
|
||||
{Info:"写延时错误",ErrCode:36,
|
||||
ErrFac:["1.芯片设置延时功能异常","2.通信异常"]
|
||||
},
|
||||
{Info:"读延时错误",ErrCode:37,
|
||||
ErrFac:["1.芯片读延时功能异常","2.通信异常"]
|
||||
},
|
||||
{Info:"芯片程测错误",ErrCode:38,
|
||||
ErrFac:["1.芯片成测标记错误,非全FFFF","2.通信异常"]
|
||||
},
|
||||
{Info:"时钟校准错误",ErrCode:39,
|
||||
ErrFac:["1.检测器命令执行异常"],
|
||||
},
|
||||
{Info:"写工厂信息错误",ErrCode:40,
|
||||
ErrFac:["1.OTP数据写入出错","2.通信异常"]
|
||||
},
|
||||
{Info:"模拟起爆错误",ErrCode:41,
|
||||
ErrFac:["1.发送起爆指令后无应答"]},
|
||||
{Info:"芯片状态码异常",ErrCode:42,
|
||||
ErrFac:["1.状态码与设置的掩码不匹配","2.通讯异常"]
|
||||
},
|
||||
{Info:"反馈电流错误",ErrCode:43,
|
||||
ErrFac:["1.芯片异常,反馈电流不达标","2.检测器异常,采集电路不准"],
|
||||
},
|
||||
{Info:"反码时长错误",ErrCode:44,
|
||||
ErrFac:["1.芯片异常,通讯无反码","2.通讯反码电流低,不能识别"]
|
||||
},
|
||||
{Info:"复位放电错误",ErrCode:45,
|
||||
ErrFac:["1.高压充电后降压通讯异常","2.芯片复位不能正常放电","3.芯片异常,指令不执行"],
|
||||
},
|
||||
{Info:"状态标志错误",ErrCode:46,
|
||||
ErrFac:["1.置位标志命令未执行","2.置位命令参数错误","3.电容电压检测失败","4,芯片异常,状态标志不能置位"],
|
||||
},
|
||||
{Info:"三码验证错误",ErrCode:47,
|
||||
ErrFac:["1.扫描获取的UID和写入的UID不一致","2.密码不一致,验证标志位未置位","3.芯片状态标志异常,不能置位"],
|
||||
},
|
||||
{Info:"写管壳码",ErrCode:48,
|
||||
ErrFac:["1.缓存空间数据验证错误","2.指令执行错误,未收到应答","3.芯片功能异常,指令执行失败"],
|
||||
},
|
||||
{Info:"写密码",ErrCode:49,
|
||||
ErrFac:["1.缓存空间数据验证错误","2.指令执行错误,未收到应答","3.芯片功能异常,指令执行失败"],
|
||||
},
|
||||
{Info:"写现场值错误",ErrCode:50,
|
||||
ErrFac:["1.UID不匹配","2.芯片内部的配置未设置正确","3.芯片功能异常,通信无反馈"],
|
||||
},
|
||||
{Info:"桥丝阻值异常",ErrCode:51,
|
||||
ErrFac:["1.桥丝电阻不符合标准","2.测试设备校准偏差"],
|
||||
},
|
||||
{Info:"缓存信息写入失败",ErrCode:54,
|
||||
ErrFac:["1.系统内部缓存数据异常","2.芯片数据写入异常"],
|
||||
},
|
||||
{Info:"模拟注码错误",ErrCode:55,
|
||||
ErrFac:["1.系统内部缓存数据异常","2.芯片数据写入异常"],
|
||||
},
|
||||
{Info:"通信超时",ErrCode:208,
|
||||
ErrFac:["1.小板状态异常,不响应通信指令","2.小板与主板之间通信异常"],
|
||||
},
|
||||
{Info:"脚本执行失败",ErrCode:209,
|
||||
ErrFac:["1.脚本功能异常","2.配置文件配置为不使用脚本"],
|
||||
},
|
||||
{Info:"数据长度与方案不符",ErrCode:210,
|
||||
ErrFac:["1.小板和主板使用的方案不同,更新方案即可","2.脚本功能异常"],
|
||||
},
|
||||
{Info:"方案ID不符",ErrCode:211,
|
||||
ErrFac:["1.使用的方案和脚本适配的方案不适配,更换相应的脚本或者方案即可"],
|
||||
},
|
||||
{Info:"检测项目不足",ErrCode:212,
|
||||
ErrFac:["1.方案中未执行异常判定所需的任务,无法判定异常","2.脚本功能异常"],
|
||||
},
|
||||
{Info:"数据不合规",ErrCode:213,
|
||||
ErrFac:["1.用于判定的数据不具有正常的电性能检测规律,模块检测时不应出现此错误","2.脚本功能异常",
|
||||
"3.方案中相关异常判定参数设置不合理","4.小板和主板使用的方案不同但数据返回长度相同,导致错误解释了返回数据的含义"],
|
||||
},
|
||||
|
||||
|
||||
{Info:"检测器执行异常",ErrCode:254,
|
||||
ErrFac:["广播类命令执行错误"],
|
||||
},
|
||||
|
||||
{Info:"返回参数判断",ErrCode:255,
|
||||
ErrFac:[],
|
||||
},//需要通过指标判断
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
var XT_Product_Names=["EX05A","EX09C","EX09F","EX09J","EX09A"];
|
||||
|
||||
|
||||
1504
web/layui/Checker/checkerPlan.js
Normal file
1504
web/layui/Checker/checkerPlan.js
Normal file
File diff suppressed because it is too large
Load Diff
416
web/layui/Checker/checker_cmdTest.js
Normal file
416
web/layui/Checker/checker_cmdTest.js
Normal file
@@ -0,0 +1,416 @@
|
||||
var CheckerPlanTest_flag = false;
|
||||
var Checker_En_CmdTest = true;
|
||||
function Checker_Start_Comm()
|
||||
{
|
||||
console.log("Checker_Start_Comm ");
|
||||
if (typeof(epe_qthandle) != "undefined" && epe_qthandle != null) {
|
||||
epe_qthandle.SearchCommport();
|
||||
console.log("SearchCommport ");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Checker_Open_CommPort(main_serial) {
|
||||
var epe_oper = {};
|
||||
epe_oper.comm_port = main_serial.comm_port;
|
||||
epe_oper.comm_baud = main_serial.comm_baud;
|
||||
epe_oper.comm_parity = main_serial.comm_parity;
|
||||
epe_oper.comm_stopbit = main_serial.comm_stopbit;
|
||||
|
||||
Main_Close_CommPort_Select();
|
||||
var json_str = JSON.stringify(epe_oper);
|
||||
console.log(json_str);
|
||||
if (typeof(epe_qthandle) != "undefined" && epe_qthandle != null) {
|
||||
epe_qthandle.OpenCommPort(json_str);
|
||||
}
|
||||
}
|
||||
|
||||
function CheckerShowMes_autoClose(showtitle,mes,time_out)
|
||||
{
|
||||
layer.alert(mes, {
|
||||
title:showtitle,
|
||||
time:time_out,
|
||||
});
|
||||
}
|
||||
var MesBox_CmdTestRe_ID = -1;
|
||||
var Checker_CmdMes_Scroll_flag = true;
|
||||
function CheckerShowMes_CmdTestDialog()
|
||||
{
|
||||
if(MesBox_CmdTestRe_ID < 0)
|
||||
{
|
||||
$("#checker_commCmdRes").unbind('dblclick').bind('dblclick', function(){
|
||||
Checker_CmdMes_Scroll_flag = Checker_CmdMes_Scroll_flag? false:true;
|
||||
|
||||
});
|
||||
MesBox_CmdTestRe_ID = layer.open({
|
||||
type: 1,
|
||||
title:'串口功能测试',
|
||||
shade: false, // 不显示遮罩
|
||||
content: $('#checker_cmdTest_Mes'), // 捕获的元素
|
||||
btn: ['清空'],
|
||||
btnAlign: 'r', // 右边
|
||||
//area: 'auto',
|
||||
maxHeight:600,
|
||||
end: function(){
|
||||
MesBox_CmdTestRe_ID = -1;
|
||||
CheckerPlanTest_flag = 0;
|
||||
},
|
||||
btn1:function(){
|
||||
$("#checker_commCmdRes")[0].innerHTML = "";
|
||||
return false
|
||||
|
||||
// var obj_ = $("#checker_commCmdRes")[0];
|
||||
// obj_.innerHTML += "<br>sdfjhuih快递收发u返回文化意义粉红色丢分回复撒回复恢复hi发水u分化为回复哈随风还是低";
|
||||
// if(Checker_CmdMes_Scroll_flag)
|
||||
// {
|
||||
// obj_.scrollTop = obj_.scrollHeight;
|
||||
// }
|
||||
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
function CheckerShowMes_CmdTestRe(mes)
|
||||
{
|
||||
var obj_ = $("#checker_commCmdRes")[0];
|
||||
if(obj_.innerHTML.length < 1)
|
||||
{
|
||||
obj_.innerHTML = mes;
|
||||
}else{
|
||||
obj_.innerHTML += "<br>"+mes;
|
||||
}
|
||||
|
||||
if(Checker_CmdMes_Scroll_flag)
|
||||
{
|
||||
obj_.scrollTop = obj_.scrollHeight;
|
||||
}
|
||||
CheckerShowMes_CmdTestDialog();
|
||||
}
|
||||
function Checker_CmdTest(taskindex)
|
||||
{
|
||||
Checker_Export_Plan = Checker_GetCfgInfo();
|
||||
var TaskArray =Checker_Export_Plan.TaskArray;
|
||||
var param = "";
|
||||
var task_id = -1;
|
||||
for(var index = 0; index < TaskArray.length; index++)
|
||||
{
|
||||
if(taskindex == TaskArray[index].TaskIndex)
|
||||
{
|
||||
task_id = TaskArray[index].TaskID;
|
||||
var paramList = TaskArray[index].ParamVal;
|
||||
for(var index2 = 0; index2 < paramList.length;index2++)
|
||||
{
|
||||
if(index2 != 0)
|
||||
{
|
||||
param+= " ";
|
||||
}
|
||||
param += paramList[index2];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if(task_id < 0)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
var cmd_test = "";
|
||||
if(CheckerChipID == 0)
|
||||
{
|
||||
cmd_test = "JCH "
|
||||
}else if(CheckerChipID == 1)
|
||||
{
|
||||
cmd_test = "XCH "
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
for(var i = 0; i < CheckerTask_Info.length; i++)
|
||||
{
|
||||
if(task_id == CheckerTask_Info[i].TaskID)
|
||||
{
|
||||
cmd_test += CheckerTask_Info[i].CommTestCmd + " ";
|
||||
}
|
||||
}
|
||||
cmd_test += param;
|
||||
CheckerShowMes_CmdTestRe(cmd_test);
|
||||
//CheckerShowMes_CmdTestDialog();
|
||||
console.log("Checker_CmdTest "+cmd_test);
|
||||
cmd_test += "\r\n";
|
||||
CheckerPlanTest_flag = false;
|
||||
Checker_CommSendStr(cmd_test);
|
||||
|
||||
}
|
||||
|
||||
function Checker_PlanTest()
|
||||
{
|
||||
var cmdtest = "";
|
||||
if(CheckerChipID == 0)
|
||||
{
|
||||
cmd_test = "JCH ExcuePlan\r\n"
|
||||
}else if(CheckerChipID == 1)
|
||||
{
|
||||
cmd_test = "XCH ExcuePlan\r\n"
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
CheckerPlanTest_flag = true;
|
||||
Checker_CommSendStr(cmd_test);
|
||||
//Checker_ShowReadStr("");
|
||||
}
|
||||
|
||||
var MesBox_InputTestResult_ID = -1;
|
||||
function CheckerShowMes_InputResult()
|
||||
{
|
||||
if(MesBox_InputTestResult_ID < 0)
|
||||
{
|
||||
|
||||
MesBox_InputTestResult_ID = layer.open({
|
||||
type: 1,
|
||||
title:'数据检测验证,确认与方案匹配',
|
||||
shade: false, // 不显示遮罩
|
||||
content: $('#checker_testData_Check'), // 捕获的元素
|
||||
btn: ['导入'],
|
||||
btnAlign: 'r', // 右边
|
||||
//area: 'auto',
|
||||
maxHeight:600,
|
||||
end: function(){
|
||||
MesBox_InputTestResult_ID = -1;
|
||||
},
|
||||
btn1:function(){
|
||||
|
||||
var result = $("#checker_testData_input").val();
|
||||
Checker_ShowTestResult(result);
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function Checker_ShowTestResult(result)
|
||||
{
|
||||
var mesLine = result.split(",");
|
||||
var resultdata = [];
|
||||
for(var i = 0; i < mesLine.length;i++)
|
||||
{
|
||||
resultdata[i] = parseInt(mesLine[i]);
|
||||
}
|
||||
var task_info_list = $(".checker_cfig_div").children();
|
||||
var TaskPlan = Checker_GetCfgInfo();
|
||||
var taskInfoArray = TaskPlan.TaskArray;
|
||||
var resultCount = 0;
|
||||
for(var index = 0; index < taskInfoArray.length;index++)
|
||||
{
|
||||
if(taskInfoArray[index].ReturnCount == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var Taskindex = taskInfoArray[index].TaskIndex;
|
||||
var itemObj = task_info_list[Taskindex+1];
|
||||
var viewItemObj = $(itemObj).find(".checker_test_cmd_item");
|
||||
|
||||
var resultInputList = $(viewItemObj).find("input");
|
||||
var rtv_error_flag = 0;
|
||||
for(var index2 = 0; index2 < resultInputList.length && index2 < taskInfoArray[index].TestStandard.length ; index2++)
|
||||
{
|
||||
$(resultInputList[index2]).val(resultdata[resultCount]);
|
||||
|
||||
if(resultdata[resultCount] > taskInfoArray[index].TestStandard[index2].Max
|
||||
||resultdata[resultCount] < taskInfoArray[index].TestStandard[index2].Min )
|
||||
{
|
||||
rtv_error_flag = 1;
|
||||
$(resultInputList[index2]).css("color","#dd0000");
|
||||
}else{
|
||||
$(resultInputList[index2]).css("color","#030000");
|
||||
}
|
||||
resultCount++;
|
||||
}
|
||||
if(rtv_error_flag != 0)
|
||||
{
|
||||
var viewItemObj = $(task_info_list[Taskindex+1]).find(".layui-colla-title");
|
||||
$(viewItemObj).css("background-color","#c10205");
|
||||
$(viewItemObj).css("color","#fffaf7");
|
||||
}else{
|
||||
var viewItemObj = $(task_info_list[Taskindex+1]).find(".layui-colla-title");
|
||||
$(viewItemObj).css("background-color","#71dfda");
|
||||
$(viewItemObj).css("color","#030202");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Checker_ShowPlanTest(messtr)
|
||||
{
|
||||
var mesLine = messtr.split("\n");
|
||||
var showmes = "";
|
||||
for(var index = 0; index <mesLine.length; index++ )
|
||||
{
|
||||
if(mesLine[index].length < 2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
CheckerShowMes_CmdTestRe(mesLine[index]);
|
||||
}
|
||||
var objarray = [];
|
||||
objarray = Checker_ResultMes2Obj(messtr);
|
||||
var task_info_list = $(".checker_cfig_div").children();
|
||||
Checker_Export_Plan = Checker_GetCfgInfo();
|
||||
var TaskArray =Checker_Export_Plan.TaskArray;
|
||||
var error_flag = 0;
|
||||
var rtv_error_flag = 0;
|
||||
for(var index = 0; index < objarray.length; index++)
|
||||
{
|
||||
var obj_ = objarray[index];
|
||||
if(obj_.TaskIndex >= (TaskArray.length))
|
||||
{
|
||||
error_flag = 1;
|
||||
break;
|
||||
}
|
||||
var viewTaskId = TaskArray[obj_.TaskIndex].TaskID;
|
||||
if(viewTaskId != obj_.TaskID)
|
||||
{
|
||||
|
||||
error_flag = 1;
|
||||
break;
|
||||
}
|
||||
var viewItemObj = $(task_info_list[obj_.TaskIndex+1]).find(".checker_test_cmd_item");
|
||||
var resultInputList = $(viewItemObj).find("input");
|
||||
if(typeof(resultInputList) == "undefined" || resultInputList == null )
|
||||
{
|
||||
error_flag = 1;
|
||||
break;
|
||||
}
|
||||
rtv_error_flag = 0;
|
||||
for(var index2 = 0; index2 < obj_.ResultV.length; index2++)
|
||||
{
|
||||
$(resultInputList[index2]).val(obj_.ResultV[index2]);
|
||||
|
||||
if(obj_.ResultV[index2] > TaskArray[obj_.TaskIndex].TestStandard[index2].Max
|
||||
||obj_.ResultV[index2] < TaskArray[obj_.TaskIndex].TestStandard[index2].Min )
|
||||
{
|
||||
rtv_error_flag = 1;
|
||||
$(resultInputList[index2]).css("color","#dd0000");
|
||||
}else{
|
||||
$(resultInputList[index2]).css("color","#030000");
|
||||
}
|
||||
}
|
||||
if(obj_.ResultE != 0 || rtv_error_flag != 0)
|
||||
{
|
||||
var viewItemObj = $(task_info_list[obj_.TaskIndex+1]).find(".layui-colla-title");
|
||||
$(viewItemObj).css("background-color","#c10205");
|
||||
$(viewItemObj).css("color","#fffaf7");
|
||||
}else{
|
||||
var viewItemObj = $(task_info_list[obj_.TaskIndex+1]).find(".layui-colla-title");
|
||||
$(viewItemObj).css("background-color","#71dfda");
|
||||
$(viewItemObj).css("color","#030202");
|
||||
}
|
||||
|
||||
}
|
||||
if(error_flag)
|
||||
{
|
||||
$("#checker_commCmdRes")[0].innerHTML += "<br>测试结果与方案不匹配<br>";
|
||||
}
|
||||
CheckerShowMes_CmdTestDialog();
|
||||
|
||||
|
||||
}
|
||||
|
||||
function Checker_ResultMes2Obj(messtr)
|
||||
{
|
||||
var objarray= [];
|
||||
var mesList = messtr.split("\n");
|
||||
var obj_count = 0;
|
||||
for(var index = 0; index < mesList.length; index++)
|
||||
{
|
||||
var mes_temp = "";
|
||||
var mes_src = mesList[index];
|
||||
var temp_count = 0;
|
||||
for(var index2 = 0;index2 < mes_src.length;index2++)
|
||||
{
|
||||
if( mes_src.charAt(index2) == ' '
|
||||
|| mes_src.charAt(index2) == ','
|
||||
|| mes_src.charAt(index2) == ';'
|
||||
|| mes_src.charAt(index2) == '\t')
|
||||
{
|
||||
if(mes_temp.length == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if(mes_temp.charAt(mes_temp.length-1) == ' ')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
mes_temp += mes_src.charAt(index2);
|
||||
}
|
||||
if(mes_temp.length < 10)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
mes_temp = mes_temp.trim();
|
||||
var resultItems = mes_temp.split(" ");
|
||||
if(resultItems.length < 6)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var obj={
|
||||
TaskIndex:parseInt(resultItems[1]),
|
||||
TaskID:parseInt(resultItems[3]),
|
||||
ResultE:parseInt(resultItems[5]),
|
||||
ResultV:[],
|
||||
}
|
||||
var result_array = [];
|
||||
for(var index2 = 6; index2 < resultItems.length; index2++)
|
||||
{
|
||||
var data = parseInt(resultItems[index2]);
|
||||
if(isNaN(data))
|
||||
{
|
||||
data = -1;
|
||||
}
|
||||
result_array[index2-6] =data;
|
||||
}
|
||||
obj.ResultV = result_array;
|
||||
objarray[obj_count++] = obj;
|
||||
}
|
||||
return objarray;
|
||||
}
|
||||
|
||||
function Checker_CommSendStr(str)
|
||||
{
|
||||
if(epe_qthandle != null && typeof(epe_qthandle) != "undefined")
|
||||
{
|
||||
epe_qthandle.Epe_SendStr(str);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Checker_ShowCurMontior()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
function Checker_ShowReadStr(str)
|
||||
{
|
||||
//str = "test taefCurM1ontiorofjiofjowfjoeifdslafjow\n"
|
||||
str = str.replace("\r\n","\n");
|
||||
str = str.replace("\r","\n");
|
||||
if(str.indexOf("CurMontior") >= 0)
|
||||
{
|
||||
CheckerShowCurEcharts(cur);
|
||||
}
|
||||
else if(CheckerPlanTest_flag == false)
|
||||
{
|
||||
str = str.split("\n");
|
||||
for(var index = 0; index < str.length;index++)
|
||||
{
|
||||
if(str[index].length > 5)
|
||||
{
|
||||
CheckerShowMes_CmdTestRe(str[index]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
Checker_ShowPlanTest(str);
|
||||
}
|
||||
}
|
||||
1508
web/layui/Checker/checker_ye_cfg.js
Normal file
1508
web/layui/Checker/checker_ye_cfg.js
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user