| | | | | 主要嫌疑人:EMC
次要嫌疑人:算法,包括数据溢出算法一个不小心,中断程序错过了某些事,AD口换来换去时间准备不充分,AD基准电压不稳定
|
|
|
| | | | | | | EMC的可能性可能不大,因为屏蔽了内部故障判断后,后面试了好多次,都不再出现这些故障;
最大的可能感觉是跟上位机这个100ms的高速数据交换带来的CAN中断,有时候影响了AD采样转换,但是我们也做过测试对比,将这个CAN数据交换速率加快到10ms,当时以为这样误报故障的概率会大大提高,但是也不明显。
|
|
|
| | | | | 查下MCU的供电是否会稳定。ADC最终采样的值是和供电电压大小有关的(ADC没有加参考电压的情况下)。程序是怎么判断连续1000ms,电压低于某个阈值的。当某个点的采样电压低于阈值了,下一个点电压恢复,是否有状态初始化。ADC采样得到的数值是否稳定,在电压稳定的情况下。
|
|
|
| | | | | | | 供电VCC 3.3V是专用电源转换芯片提供的,非常稳定。ADC采样采到一次低于阈值,就开始计时,连续1000ms内如果都发现一直低于阈值,则认为检测到真故障并发出锁机指令。如果这1000ms内发现某一次高于阈值,则不认为是真故障。
|
|
|
| | | | | 1)测试AD中断,CAN中断是否正常(分别添加AD,CAN中断的测试信号,测试其进入退出规律),与误判时刻波形对应。
2)测试mcu本身中断处理耗时与控制周期的占比,是否过高,如果耗时过高,则考虑精简代码,优化算法,降低耗时。
3)计算电压过高等算法本身的检查,平均值计算,有效值计算写法?有没有存在存在一些算法逻辑上的问题。
|
|
|
|