仓库迁移

This commit is contained in:
andy
2023-06-10 11:52:00 +08:00
parent e4616bfae5
commit 077c27f2bb
499 changed files with 199745 additions and 92 deletions

View File

@@ -0,0 +1,352 @@
{
"PlanID": 46534786,
"PlanBrief": "模拟工厂注码",
"CheckSoftVersion": [
1
],
"CheckHardVersion": [
1
],
"TimeOutS": 4,
"TimeOutM": 10,
"TimeOutUI": 12,
"TaskIDMax": 26,
"TaskArray": [
{
"TaskID": 0,
"TaskBrief": "电源准备",
"TaskIndex": 0,
"ParamCount": 1,
"ParamInfo": [
"预设电压1"
],
"ParamVal": [
88
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 1,
"TaskBrief": "上电充能",
"TaskIndex": 1,
"ParamCount": 3,
"ParamInfo": [
"总线电压",
"采样超时0.1ms",
"计时启停ADC"
],
"ParamVal": [
88,
5000,
400
],
"TestStandard": [
{
"Max": 95,
"Min": 80
},
{
"Max": 600,
"Min": 100
}
],
"ReturnCount": 2,
"ReturnInfo": [
"总线电压",
"大于启停的时间"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
23,
22
],
"RetryCount": 0
},
{
"TaskID": 5,
"TaskBrief": "写配置参数",
"TaskIndex": 2,
"ParamCount": 4,
"ParamInfo": [
"UID长度",
"密码长度",
"电流挡位",
"版本号"
],
"ParamVal": [
8,
4,
0,
1
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 32,
"TaskBrief": "加载配置",
"TaskIndex": 3,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [
{
"Max": 8,
"Min": 8
},
{
"Max": 4,
"Min": 4
},
{
"Max": 1,
"Min": 1
}
],
"ReturnCount": 3,
"ReturnInfo": [
"UID长度",
"密码长度",
"版本号"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
28,
28,
28,
255
],
"RetryCount": 0
},
{
"TaskID": 4,
"TaskBrief": "扫描UID",
"TaskIndex": 4,
"ParamCount": 2,
"ParamInfo": [
"UID长度",
"使1/失0UID对比"
],
"ParamVal": [
0,
0
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 24,
"TaskBrief": "状态码检测",
"TaskIndex": 5,
"ParamCount": 2,
"ParamInfo": [
"比较掩码",
"比较位"
],
"ParamVal": [
128,
0
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 11,
"TaskBrief": "桥丝检测",
"TaskIndex": 6,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [
{
"Max": 240,
"Min": 0
}
],
"ReturnCount": 1,
"ReturnInfo": [
"桥丝ADC"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
30
],
"RetryCount": 0
},
{
"TaskID": 8,
"TaskBrief": "充能统计",
"TaskIndex": 7,
"ParamCount": 5,
"ParamInfo": [
"充电挡位",
"统计超时",
"电流判线AD",
"充电结束值0.1uA",
"充电超时0.1S"
],
"ParamVal": [
34,
5000,
100,
600,
5
],
"TestStandard": [
{
"Max": 3500,
"Min": 1000
},
{
"Max": 600,
"Min": 200
},
{
"Max": 80,
"Min": 10
}
],
"ReturnCount": 3,
"ReturnInfo": [
"充能值0.1ms",
"充末电流0.1uA",
"最大充电电流0.1mA"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
34,
35,
32,
255
],
"RetryCount": 0
},
{
"TaskID": 7,
"TaskBrief": "模拟注码",
"TaskIndex": 8,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 40,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 26,
"TaskBrief": "复位",
"TaskIndex": 9,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 45,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 4,
"TaskBrief": "扫描UID",
"TaskIndex": 10,
"ParamCount": 2,
"ParamInfo": [
"UID长度",
"使1/失0UID对比"
],
"ParamVal": [
0,
1
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 31,
"TaskBrief": "密码验证",
"TaskIndex": 11,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 24,
"TaskBrief": "状态码检测",
"TaskIndex": 12,
"ParamCount": 2,
"ParamInfo": [
"比较掩码",
"比较位"
],
"ParamVal": [
32,
32
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
},
{
"TaskID": 29,
"TaskBrief": "赋码设备使能",
"TaskIndex": 13,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 0
}
]
}

BIN
python/file/Ym_Checker.bin Normal file

Binary file not shown.

BIN
python/file/Ym_Coder.bin Normal file

Binary file not shown.

View File

@@ -0,0 +1,928 @@
{
"PlanID": 15,
"PlanBrief": "电解电容雷管厂高压检测",
"CheckSoftVersion": [
6,
7,
8
],
"CheckHardVersion": [
0,
65535
],
"TimeOutS": 34,
"TimeOutM": 40,
"TimeOutUI": 42,
"TaskIDMax": 26,
"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
]
},
{
"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
]
},
{
"Info": "其他异常",
"MajorErrCode": 20,
"SubErrCode": [
255
]
},
{
"Info": "通信失败",
"MajorErrCode": 208,
"SubErrCode": [
]
},
{
"Info": "脚本执行失败",
"MajorErrCode": 209,
"SubErrCode": [
]
},
{
"Info": "数据长度与方案不符",
"MajorErrCode": 210,
"SubErrCode": [
]
},
{
"Info": "方案ID不符",
"MajorErrCode": 211,
"SubErrCode": [
]
},
{
"Info": "检测项目不足,无法判定",
"MajorErrCode": 212,
"SubErrCode": [
]
},
{
"Info": "数据不合规",
"MajorErrCode": 213,
"SubErrCode": [
]
}
],
"SubErrInfo": [
{
"Info": "预设电压异常",
"ErrCode": 21
},
{
"Info": "上电充能错误",
"ErrCode": 22
},
{
"Info": "电压设置异常",
"ErrCode": 23
},
{
"Info": "UID扫描错误",
"ErrCode": 24
},
{
"Info": "OTP错误",
"ErrCode": 25
},
{
"Info": "通讯电流错误",
"ErrCode": 26
},
{
"Info": "基本电流错误",
"ErrCode": 27
},
{
"Info": "读取芯片ID错误",
"ErrCode": 28
},
{
"Info": "密码验证错误",
"ErrCode": 29
},
{
"Info": "DAC比较错误",
"ErrCode": 30
},
{
"Info": "高压充能错误",
"ErrCode": 31
},
{
"Info": "充电电流错误",
"ErrCode": 32
},
{
"Info": "高压充末电流错误",
"ErrCode": 33
},
{
"Info": "低压充电能量错误",
"ErrCode": 34
},
{
"Info": "低压充末电流错误",
"ErrCode": 35
},
{
"Info": "写延时错误",
"ErrCode": 36
},
{
"Info": "读延时错误",
"ErrCode": 37
},
{
"Info": "芯片程测错误",
"ErrCode": 38
},
{
"Info": "时钟校准错误",
"ErrCode": 39
},
{
"Info": "写工厂信息错误",
"ErrCode": 40
},
{
"Info": "模拟起爆错误",
"ErrCode": 41
},
{
"Info": "芯片状态码异常",
"ErrCode": 42
},
{
"Info": "通信电流错误",
"ErrCode": 43
},
{
"Info": "反码时长错误",
"ErrCode": 44
},
{
"Info": "复位放电错误",
"ErrCode": 45
},
{
"Info": "检测器执行异常",
"ErrCode": 254
},
{
"Info": "返回参数判断",
"ErrCode": 255
}
],
"TaskArray": [
{
"TaskID": 0,
"TaskBrief": "电源准备",
"TaskIndex": 0,
"ParamCount": 7,
"ParamInfo": [
"预设电压1",
"预设电压2",
"预设电压3",
"预设电压4",
"预设电压5",
"预设电压6",
"预设电压7"
],
"ParamVal": [
65,
80,
85,
175,
205,
215,
255
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 21,
"ResultErrCode": [],
"RetryCount": 1
},
{
"TaskID": 1,
"TaskBrief": "上电充能",
"TaskIndex": 1,
"ParamCount": 2,
"ParamInfo": [
"总线电压",
"计时启停ADC"
],
"ParamVal": [
80,
2500
],
"TestStandard": [
{
"Max": 85,
"Min": 75
},
{
"Max": 900,
"Min": 150
}
],
"ReturnCount": 2,
"ReturnInfo": [
"总线电压",
"大于启停的时间"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 22,
"ResultErrCode": [
23,
22
],
"RetryCount": 1
},
{
"TaskID": 4,
"TaskBrief": "扫描UID",
"TaskIndex": 2,
"ParamCount": 2,
"ParamInfo": [
"使1/失0反码采集",
"使0/失1UID全0验证"
],
"ParamVal": [
1,
0
],
"TestStandard": [
{
"Max": 90,
"Min": 40
},
{
"Max": 400,
"Min": 250
}
],
"ReturnCount": 2,
"ReturnInfo": [
"最大反馈电流",
"最大反馈时间"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 24,
"ResultErrCode": [
43,
42,
255,
255,
255,
255,
255,
255
],
"RetryCount": 1
},
{
"TaskID": 3,
"TaskBrief": "获取总线电流",
"TaskIndex": 3,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [
{
"Max": 260,
"Min": 120
},
{
"Max": 260,
"Min": 120
}
],
"ReturnCount": 2,
"ReturnInfo": [
"总线正电流",
"总线反电流"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 27,
"ResultErrCode": [
27,
27
],
"RetryCount": 0
},
{
"TaskID": 6,
"TaskBrief": "读取芯片代码",
"TaskIndex": 4,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 26,
"ExecuteErrCode": 28,
"ResultErrCode": [
28
],
"RetryCount": 1
},
{
"TaskID": 2,
"TaskBrief": "设置总线电压",
"TaskIndex": 5,
"ParamCount": 1,
"ParamInfo": [
"总线电压"
],
"ParamVal": [
205
],
"TestStandard": [
{
"Max": 210,
"Min": 200
}
],
"ReturnCount": 1,
"ReturnInfo": [
"总线电压"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 23,
"ResultErrCode": [
23
],
"RetryCount": 1
},
{
"TaskID": 3,
"TaskBrief": "获取总线电流",
"TaskIndex": 6,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [
{
"Max": 270,
"Min": 120
},
{
"Max": 270,
"Min": 120
}
],
"ReturnCount": 2,
"ReturnInfo": [
"总线正电流",
"总线反电流"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 27,
"ResultErrCode": [
27,
27
],
"RetryCount": 0
},
{
"TaskID": 11,
"TaskBrief": "充能统计",
"TaskIndex": 7,
"ParamCount": 4,
"ParamInfo": [
"电流判线AD",
"充电结束值0.1uA",
"充电超时0.1S",
"电流监控0.1S"
],
"ParamVal": [
1000,
500,
60,
20
],
"TestStandard": [
{
"Max": 20000,
"Min": 13000
},
{
"Max": 600,
"Min": 120
}
],
"ReturnCount": 2,
"ReturnInfo": [
"充能值0.1ms",
"充末电流0.1uA"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 31,
"ResultErrCode": [
31,
32,
255,
255
],
"RetryCount": 1
},
{
"TaskID": 12,
"TaskBrief": "充电电压检测",
"TaskIndex": 8,
"ParamCount": 2,
"ParamInfo": [
"起始DAC",
"结束DAC"
],
"ParamVal": [
31,
29
],
"TestStandard": [
{
"Max": 31,
"Min": 29
}
],
"ReturnCount": 1,
"ReturnInfo": [
"扫描通过的DAC"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 30,
"ResultErrCode": [
30
],
"RetryCount": 1
},
{
"TaskID": 2,
"TaskBrief": "设置总线电压",
"TaskIndex": 9,
"ParamCount": 1,
"ParamInfo": [
"总线电压"
],
"ParamVal": [
65
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 23,
"ResultErrCode": [
255
],
"RetryCount": 1
},
{
"TaskID": 13,
"TaskBrief": "延时等待",
"TaskIndex": 10,
"ParamCount": 1,
"ParamInfo": [
"延时时间"
],
"ParamVal": [
30
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
255
],
"RetryCount": 1
},
{
"TaskID": 12,
"TaskBrief": "充电电压检测",
"TaskIndex": 11,
"ParamCount": 2,
"ParamInfo": [
"起始DAC",
"结束DAC"
],
"ParamVal": [
31,
28
],
"TestStandard": [
{
"Max": 31,
"Min": 28
}
],
"ReturnCount": 1,
"ReturnInfo": [
"扫描通过的DAC"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 30,
"ResultErrCode": [
30
],
"RetryCount": 1
},
{
"TaskID": 18,
"TaskBrief": "复位放电",
"TaskIndex": 12,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 45,
"ResultErrCode": [],
"RetryCount": 2
},
{
"TaskID": 13,
"TaskBrief": "延时等待",
"TaskIndex": 13,
"ParamCount": 1,
"ParamInfo": [
"延时时间"
],
"ParamVal": [
80
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [
255
],
"RetryCount": 1
},
{
"TaskID": 4,
"TaskBrief": "扫描UID",
"TaskIndex": 14,
"ParamCount": 2,
"ParamInfo": [
"使1/失0反码采集",
"使0/失1UID全0验证"
],
"ParamVal": [
0,
0
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 24,
"ResultErrCode": [
255,
255,
255,
255,
255,
255,
255,
255
],
"RetryCount": 1
},
{
"TaskID": 11,
"TaskBrief": "充能统计",
"TaskIndex": 15,
"ParamCount": 4,
"ParamInfo": [
"电流判线AD",
"充电结束值0.1uA",
"充电超时0.1S",
"电流监控0.1S"
],
"ParamVal": [
800,
400,
40,
0
],
"TestStandard": [
{
"Max": 4500,
"Min": 2500
},
{
"Max": 450,
"Min": 120
}
],
"ReturnCount": 2,
"ReturnInfo": [
"充能值0.1ms",
"充末电流0.1uA"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 34,
"ResultErrCode": [
34,
35,
255,
255
],
"RetryCount": 1
},
{
"TaskID": 5,
"TaskBrief": "密码验证",
"TaskIndex": 16,
"ParamCount": 1,
"ParamInfo": [
"0码/1原码验证"
],
"ParamVal": [
0
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 29,
"ResultErrCode": [],
"RetryCount": 1
},
{
"TaskID": 7,
"TaskBrief": "OTP检测",
"TaskIndex": 17,
"ParamCount": 3,
"ParamInfo": [
"1关/0检UID密码为0",
"1关/0检延时保留区为0",
"1关/0检用户区为0"
],
"ParamVal": [
0,
0,
0
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 25,
"ResultErrCode": [],
"RetryCount": 1
},
{
"TaskID": 14,
"TaskBrief": "写延时",
"TaskIndex": 18,
"ParamCount": 1,
"ParamInfo": [
"延时"
],
"ParamVal": [
20
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 36,
"ResultErrCode": [],
"RetryCount": 1
},
{
"TaskID": 15,
"TaskBrief": "读延时",
"TaskIndex": 19,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 37,
"ResultErrCode": [
255
],
"RetryCount": 1
},
{
"TaskID": 16,
"TaskBrief": "时钟校准",
"TaskIndex": 20,
"ParamCount": 2,
"ParamInfo": [
"脉冲周期",
"脉冲个数"
],
"ParamVal": [
1000,
25
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 39,
"ResultErrCode": [],
"RetryCount": 1
},
{
"TaskID": 12,
"TaskBrief": "充电电压检测",
"TaskIndex": 21,
"ParamCount": 2,
"ParamInfo": [
"起始DAC",
"结束DAC"
],
"ParamVal": [
3,
0
],
"TestStandard": [
{
"Max": 3,
"Min": 0
}
],
"ReturnCount": 1,
"ReturnInfo": [
"扫描通过的DAC"
],
"ErrJumpTo": 255,
"ExecuteErrCode": 30,
"ResultErrCode": [
34
],
"RetryCount": 1
},
{
"TaskID": 19,
"TaskBrief": "起爆使能",
"TaskIndex": 22,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 1
},
{
"TaskID": 9,
"TaskBrief": "读芯片状态",
"TaskIndex": 23,
"ParamCount": 1,
"ParamInfo": [
"状态值掩码"
],
"ParamVal": [
254
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 42,
"ResultErrCode": [],
"RetryCount": 10
},
{
"TaskID": 20,
"TaskBrief": "起爆充能",
"TaskIndex": 24,
"ParamCount": 2,
"ParamInfo": [
"电流判线AD",
"起爆脉冲个数"
],
"ParamVal": [
1000,
400
],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 41,
"ResultErrCode": [
255,
255,
255
],
"RetryCount": 1
},
{
"TaskID": 18,
"TaskBrief": "复位放电",
"TaskIndex": 25,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 45,
"ResultErrCode": [],
"RetryCount": 2
},
{
"TaskID": 26,
"TaskBrief": "关总线",
"TaskIndex": 26,
"ParamCount": 0,
"ParamInfo": [],
"ParamVal": [],
"TestStandard": [],
"ReturnCount": 0,
"ReturnInfo": [],
"ErrJumpTo": 255,
"ExecuteErrCode": 254,
"ResultErrCode": [],
"RetryCount": 1
}
]
}

632
python/file/judge.lua Normal file
View File

@@ -0,0 +1,632 @@
---@diagnostic disable: lowercase-global, undefined-global
-- 适配的方案id
PLAN_ID=15
-- 更新日志
-- 2023.4.13
-- 检测流程编写完成
-- 2023.4.14
-- 发现未接触时检测电流有可能为1此时会报芯片异常
-- 把接触异常电流<1改为<5
-- 2023.4.20
-- 打印出出错的任务代码
-- 2023.4.23
-- 调试代码解决异常代码不对的问题
-- 电压无法上升改为检测器异常
-- 修改因脚本产生的错误代码从0xd2(210)开始编码
-- "数据长度与方案不符",210
-- "方案ID不符",211
-- "检测项目不足,无法判定",212
-- "数据不合规",213
-- 方案配置文件:
-- cfg_name
-- 检测数据
-- check_data
-- 当前路径
-- get_path()
-- 打印表
-- prints:print_t()
-- json解码
-- json:decode()
-- 读取方案配置信息
check_cfg_file=io.open(cfg_name,"r")
check_cfg_str=check_cfg_file:read("*a")
check_cfg_file:close()
json_table = json:decode(check_cfg_str)
-- 表长度
function len(t)
local res=0
if(t==nil)then return 0 end
for k,v in pairs(t) do
res=res+1
end
return res
end
-- 截取数组
function mid(array,start,length)
if(len(array)<(start+length-1)) then
print("mid:out of range",start,length)
return nil
end
return table.pack(table.unpack(array,start,start+length-1))
end
-- 把n插入t中不允许重复
function insert(t,n)
for k,v in pairs(t) do
if(v==n) then
return
end
end
table.insert(t,n)
end
-- 删除t中的值n
function del(t,n)
for k,v in pairs(t) do
if(v==n) then
table.remove(t,k)
break
end
end
end
-- 删除t中除n之外的所有值
function only(t,n)
for k,v in pairs(t) do
if(v~=n) then
-- table.remove(t,k)
t[k]=nil
end
end
end
-- 8个字节描述执行结果0成功1失败
function find_ack(index,acks)
if(index>len(acks)*8) or index<1 then
print("index out of range.index=",index)
return false
end
if ((acks[(index-1)//8+1] & (1<<((index-1)%8)))~=0) then
return false
else
return true
end
end
-- 8个字节描述执行与否1执行0未执行
function find_stat(index,stats)
if(index>len(stats)*8) or index<1 then
print("index out of range.index=",index)
return false
end
if ((stats[(index-1)//8+1] & (1<<((index-1)%8)))~=0) then
return true
else
return false
end
end
-- 展示任务回复0成功1失败
function show_acks(acks)
-- prints:print_a(acks)
print("执行结果:(0:ok;1:err)")
local str=""
for i=1,len(json_table["TaskArray"]),1 do
local ack=find_ack(i,acks)
if ack==true then
str=str.."0, "
else
str=str.."1, "
end
end
print(str)
end
-- 展示任务执行状态0未执行1已执行
function show_stats(stats)
-- prints:print_a(stats)
print("执行状态:(0:skiped;1:executed)")
local str=""
for i=1,len(json_table["TaskArray"]),1 do
local stat=find_stat(i,stats)
if stat==true then
str=str.."1, "
else
str=str.."0, "
end
end
print(str)
end
-- 统计指定index之前应该跳过的数据长度和当前index的返回长度
function calc_skip(index,tasks)
local len=0
-- for i=1,table.getn(tasks),1 do
local i=1
while i<index do
-- for i=1,index,1 do
-- print("calc_skip,index=",index,"i=",i)
len=len+tasks[i]["ReturnCount"]
i=i+1
end
-- print("calc_skip,len=",len)
return len*2,tasks[index]["ReturnCount"]*2
end
-- 找到指定index的任务返回数和值,把两个字节合并为一个值
function find_return(index)
local data=check_data
local skip_len,len=calc_skip(index,json_table["TaskArray"])
local ret={}
local temp=mid(data,skip_len+1+16,len)
if(temp==nil) then return ret end
-- print("find_return,temp=")
-- prints:print_a(temp)
for i=1,len//2,1 do
ret[i]=temp[i*2-1]|(temp[i*2]<<8)
end
return ret
end
-- JQ_Test_PowerPrapare, //0 电源准备 1
-- JQ_Test_PowerOn, //1 上电充能 1,(3,充能值(时间)超上限(开路/短路)、总线电压超下限(短路))
-- JQ_Test_SetBusV, //2 设置总线电压 1
-- JQ_Test_BaseCur, //3 获取总线电流 1,3(总线电流偏大(漏流/短路)、总线电流为0(开路))
-- JQ_Test_ScanUID, //4 扫描UID 1,2,3,5(能扫描到uid即认为芯片正常)
-- JQ_Test_PWCheck, //5 密码验证
-- JQ_Test_ReadChipID, //6 读取芯片代码 1,2,3,5(能读到id即认为芯片正常)
-- JQ_Test_OTPCheck, //7 OTP检测
-- JQ_Test_FTCheck, //8 工厂测试检测
-- JQ_Test_ReadState, //9 读取状态
-- JQ_Test_WriteUserInfo, //10 写工厂信息
-- JQ_Test_ChgEnergy, //11 充能统计
-- JQ_Test_CheckDAC, //12 充电电压检测
-- JQ_Test_WaitDelay, //13 延时等待
-- JQ_Test_SetDelay, //14 设置延时
-- JQ_Test_ReadDelay, //15 读取延时
-- JQ_Test_ClkTrim, //16 时钟校准
-- JQ_Test_Discharge, //17 放电
-- JQ_Test_Reset, //18 复位
-- JQ_Test_BootEn, //19 起爆使能
-- JQ_Test_BoomEnergy, //20 起爆充能
-- JQ_Test_EnCommEndCur, //21 使能通讯末电流采集
-- JQ_Test_GetCommEndCur, //22 获取通讯末电流
-- JQ_Test_WriteOTP, //23 写OTP
-- JQ_Test_ReadOTP, //24 读OTP
-- JQ_Test_ClearBoom, //25 清除起爆计数
-- JQ_Test_PowerOff, //26 关总线
-- 根据任务id找到下一个任务
function find_index(index,task_id)
-- print("find_index:index=",index)
local tasks=json_table["TaskArray"]
-- prints:print_t(tasks)
for i=index,len(tasks),1 do
if(tasks[i]["TaskID"]==task_id) then
return tasks[i]
end
end
print("find_index err:index=",index,"task_id=",task_id)
return nil
end
-- 检测器异常,1
-- 主电容异常,2
-- 接触异常,3
-- 桥丝阻值异常,4
-- 芯片异常,5
-- 其他异常,6
-- 判断上电错误,返回下一个检测任务,nil停止检测
function JQ_Test_PowerPrapare(task,err_code)
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
-- 上电错误只能是检测器异常,检测结束
print("task failed.index=",task["TaskIndex"])
only(err_code,1)
return nil
else
-- 上电正常,排除检测器异常
del(err_code,1)
print("检测上电充能")
-- 下一步是上电充能
return find_index(task["TaskIndex"]+2,1)
end
end
-- 判断上电充能错误,返回下一个检测任务,nil停止检测
function JQ_Test_PowerOn(task,err_code)
local ret_value={}
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
-- 上电充能异常
del(err_code,0)
print("task failed.index=",task["TaskIndex"])
-- 下一步检测电流
return find_index(task["TaskIndex"]+2,3)
else
-- 充能流程正常,返回第一个值是电压,第二个值是充能时间
ret_value=find_return(task["TaskIndex"]+1)
-- 电压无法上升,检测器异常
if(ret_value[1]<task["TestStandard"][1]["Min"]) then
only(err_code,1)
return nil
end
-- 充电时间过长,进一步检测电流,判断开路还是短路
if(ret_value[2]>39000) then
del(err_code,0)
print("检测电流")
return find_index(task["TaskIndex"]+2,3)
elseif(ret_value[2]<1) then
-- 新小板程序在开路时会返回0保险起见还是看一下电流
del(err_code,0)
print("检测电流")
return find_index(task["TaskIndex"]+2,3)
end
---- 排除接触异常
--del(err_code,3)
print("检测芯片UID")
-- 下一步检测芯片
return find_index(task["TaskIndex"]+2,4)
end
end
-- 扫描uid成功则芯片正常返回下一个检测任务,nil停止检测
function JQ_Test_ScanUID(task,err_code)
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
-- 通信失败,返回芯片异常,检测结束
print("task failed.task_index=",task["TaskIndex"])
only(err_code,5)
return nil
else
print("检测电流")
return find_index(task["TaskIndex"]+2,3)
--print("读取芯片代码")
--return find_index(task["TaskIndex"]+2,6)
end
end
-- 判断低压电流,返回下一个检测任务,nil停止检测
function JQ_Test_BaseCurLow(task,err_code)
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
-- 电流检测错误只能是检测器异常,检测结束
print("task failed.task_index=",task["TaskIndex"])
only(err_code,1)
return nil
else
-- 返回正向电流,反向电流
ret_value=find_return(task["TaskIndex"]+1)
print("电流:",ret_value[1])
-- 电流为0开路返回接触异常
if(ret_value[1]<10) and (ret_value[2]<10)then
only(err_code,3)
return nil
-- 电流过大,短路,返回芯片异常
elseif((ret_value[1]>task["TestStandard"][1]["Max"]) and (ret_value[1]<1500))
or ((ret_value[2]>task["TestStandard"][2]["Max"]) and (ret_value[2]<1500))
then
only(err_code,5)
return nil
elseif((ret_value[1]>1500) and (ret_value[2]>1500))then
only(err_code,3)
return nil
end
-- 排除接触异常
del(err_code,3)
--print("读取芯片UID")
---- 下一步检测芯片
--return find_index(task["TaskIndex"]+2,6)
print("读取芯片代码")
return find_index(task["TaskIndex"]+2,6)
end
end
-- 读取芯片代码,成功则芯片正常,返回下一个检测任务,nil停止检测
function JQ_Test_ReadChipID(task,err_code)
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
-- 通信失败,返回芯片异常,检测结束
print("task failed.task_index=",task["TaskIndex"])
only(err_code,5)
return nil
else
print("检测高压电流")
return find_index(task["TaskIndex"]+2,3)
end
end
-- 判断高压电流,返回下一个检测任务,nil停止检测
function JQ_Test_BaseCurHigh(task,err_code)
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
-- 电流检测错误只能是检测器异常,检测结束
print("task failed.task_index=",task["TaskIndex"])
only(err_code,1)
return nil
else
-- 返回正向电流,反向电流
ret_value=find_return(task["TaskIndex"]+1)
print("电流:",ret_value[1])
-- 电流为0开路返回接触异常
if(ret_value[1]<10) and (ret_value[2]<10)then
only(err_code,5)
return nil
-- 电流过大,短路,返回芯片异常
elseif((ret_value[1]>task["TestStandard"][1]["Max"]) and (ret_value[1]<1500))
or ((ret_value[2]>task["TestStandard"][2]["Max"]) and (ret_value[2]<1500))
then
only(err_code,5)
return nil
elseif((ret_value[1]>1500) or (ret_value[2]>1500))then
only(err_code,5)
return nil
end
-- 排除接触异常
del(err_code,3)
print("检测桥丝和电容")
-- 下一步检测桥丝和电容
return find_index(task["TaskIndex"]+2,12)
end
end
-- 检测电容电压,返回下一个检测任务,nil停止检测
function JQ_Test_CheckDAC(task,err_code)
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
-- 检测电压失败则桥丝或主电容异常
print("task failed.task_index=",task["TaskIndex"])
-- 这里判断上电充能值,如果偏大则桥丝异常,偏小则电容异常
-- 充能流程正常,返回第一个值是电压,第二个值是充能时间
-- local task_p=find_index(1,1)
-- ret_value=find_return(task_p["TaskIndex"]+1)
-- if(ret_value[2]>39999) then
-- only(err_code,4)
-- return nil
-- else
-- only(err_code,2)
-- return nil
-- end
only(err_code,4)
return nil
else
-- 排除桥丝异常
del(err_code,4)
print("检测电容")
return find_index(task["TaskIndex"]+2,12)
end
end
-- 检测电容电压,返回下一个检测任务,nil停止检测
function JQ_Test_CheckDAC2(task,err_code)
if(find_ack(task["TaskIndex"]+1,mid(check_data,1,8))==false)then
-- 检测电压失败则主电容异常
print("task failed.task_index=",task["TaskIndex"])
only(err_code,2)
return nil
else
-- 排除电容异常
del(err_code,2)
del(err_code,5)
print("检测完毕")
return nil
end
end
-- 定义占位函数,不应该调用
function JQ_Test_Empty(task,err_code)
print("err function call,task index=",task["TaskIndex"])
insert(err_code,6)
return nil
end
-- 这个数组根据方案检测顺序确定
tasks_judge_fun={
JQ_Test_PowerPrapare,
JQ_Test_PowerOn,
JQ_Test_ScanUID,
JQ_Test_BaseCurLow,
JQ_Test_ReadChipID,
JQ_Test_Empty,
JQ_Test_BaseCurHigh,
JQ_Test_Empty,
JQ_Test_CheckDAC,
JQ_Test_Empty,
JQ_Test_Empty,
JQ_Test_CheckDAC2
}
-- 根据任务依次判断
function judge()
local fun_index=1
local err_code={0,1,2,3,4,5}
-- 找到上电任务
local task=find_index(1,0)
while true do
if(task==nil)then
if(len(err_code)>1)then
-- 如果找不到任务,则应该是方案错误,这里返回其他异常
print("can not find task,fun_index=",fun_index)
insert(err_code,6)
end
break
end
if(find_stat(task["TaskIndex"]+1,mid(check_data,9,8))==false)then
-- 如果任务未执行,则应该是方案错误,这里返回其他异常
print("task unexecuted.index=",task["TaskIndex"])
insert(err_code,6)
break
end
fun_index=task["TaskIndex"]+1
task=tasks_judge_fun[fun_index](task,err_code)
end
return err_code
end
-- 判断一个任务的子错误
function judge_task(task,data)
local range=task["TestStandard"]
local ret={}
-- print("judge task")
if range~=nil then
-- print("judge task")
for i=1,len(range),1 do
if(data[i]<range[i]["Min"]) or (data[i]>range[i]["Max"]) then
-- print("task=",task["TaskBrief"],"out of range:")
-- print("err code=",task["ResultErrCode"][i])
table.insert(ret,task["ResultErrCode"][i])
end
end
end
return ret
end
-- 依次判断主错误
function judge_list()
local acks=mid(check_data,1,8)
local stats=mid(check_data,9,8)
for i=1,len(json_table["TaskArray"]),1 do
local stat=find_stat(i,stats)
if stat==true then
local ack=find_ack(i,acks)
local task_p=json_table["TaskArray"][i]
local ret_value=find_return(i)
local err_code=judge_task(task_p,ret_value)
if ack==false then
table.insert(err_code,task_p["ExecuteErrCode"])
end
if len(err_code)>0 then
print("task:",task_p["TaskBrief"],"err_code:")
prints:print_a(err_code)
end
end
end
end
-- 要校验小板的版本号,方案的版本号
-- 脚本产生的异常从210开始0xd2
function check_env()
-- 校验输入数据的长度
local skip,l=calc_skip(len(json_table["TaskArray"]),json_table["TaskArray"])
-- print("requier len=",skip+l)
if(skip+l+16>len(check_data)) then
print("check data too less.")
return "数据长度与方案不符",210
end
if(json_table["PlanID"]~=PLAN_ID) then
print("plan id check err.")
return "方案ID不符",211
end
return "ok",0
end
-- 取得表中第一个值
function get_err_code(err_code)
for k,v in pairs(err_code) do
if(v~=nil) then
return v
end
end
return nil
end
function main()
local err_str_table={"检测器异常","主电容异常","接触异常","桥丝阻值异常","芯片异常"}
local ch_err,ch_code=check_env()
if(ch_code~=0) then
return ch_err,ch_code
end
-- 展示任务执行结果
show_acks(mid(check_data,1,8))
show_stats(mid(check_data,9,8))
-- 开始判定
local err_code=judge()
if(len(err_code)>1) then
prints:print_a(err_code)
return "检测项目不足,无法判定",212
end
prints:print_a(err_code)
local err=get_err_code(err_code)
if(err~=nil) then
if(err==0) then
judge_list()
return "ok",err
else
return err_str_table[err],err
end
else
print("err:err_code is none.")
return "数据不合规",213
end
end
-- 先返回错误描述,再返回错误码
return main()