最近在做EMC浪涌试验时,设备出现了闪报误报故障问题,最后通过修改程序,将问题解决,在这里进行记录一下。
实验环境
一台控制器,一台控制器的外接设备,设备接在控制器的回路总线上,控制器可通过外接设备传回来的信息,做出相应的动作与显示。
试验现象
在回路总线上接浪涌设备,在回路上加干扰信号,此时控制器会闪报该外设传回来的动作信息,但实际该外设并没有动作,该动作是由于干扰信号影响了通信,而导致控制器闪报误报动作。
分析问题
对与该类问题,控制器与外接设备程序中都应该添加抗干扰过滤处理,来防止干扰信号影响整个回路的通讯判断,从而导致控制器误动作,造成不必要的损失。
解决问题
由于外接设备是以按键的形式产生动作的,故只需要确保当按键按下后,控制器正常接收数据并做处理,由于一般人为按下按键时间都比较长,干扰信号的时间都很短,所以可在时间上做如下处理,即可实现干扰信号的过滤。
void get_waishe_flag(void)
{
u8 i,temp=0;
for(i=0;i<=10;i++)//20us加一次temp,当temp大于8,确定按键被按下,小于8,即判断该数据为干扰
{
delay_us(20);
if(ANJIAN_EN)//外设按键被按下
{
temp++;
}
else
{
if(temp)temp--;
}
}
if(temp>8)
{
return_pw(1100);
}
else
{
return_pw(2500);
}
20us加一次temp,当temp大于8,确定按键被按下,小于8,即判断该数据为干扰,此处主要理解该问题的处理思路,可适当将20us变长或者变短,只要能够保证将干扰过滤掉即可。
归纳总结
我通过以上方法,成功解决了浪涌试验时控制器闪报误报问题。故再此作以记录。