quote:以下是引用yanxiao在2012-08-23 23:30:35的发言:
1、如果按钮故障时的行为,和人工操作时相仿,是不能靠机器来区分的。持续的短路和开路,与人工操作相差悬殊,不会自行产生错误的输入。(做不到这个?)
2、消除抖动,是指外界干扰(我个人认为一般干扰达不到这个能量)、操作时触点的弹跳。
3、一般的消抖,都是利用输入变化时启动定时器。
4、而我在14楼所指的“滤波”,是在系统提供的12ms滤波时间不够长时的滤波,捕捉的是输入的稳定状态。如果要用到定时,也是用来进行采样点的定时。
5、例如:希望I0.0的滤波时间为100ms,在这个时间窗口内,采样8个点,等时间间隔采样,开一个12ms的定时中断,中断里,采样I0.0状态,移入一个VB中,当VB=0时,表示输入为稳态0,即滤波后的0,如果VB=255,表示输入为稳态1,即滤波后的1,其它值是不稳定状态,维持“滤波”后的状态不变。
持续的短路和开路当然可以有办法区别,但是不稳定短路或者开路那就不好区别了; 设计单键起停最好有个保护功能,比如在一定时间内不得连续操作几次以上,否则即判定为故障状态,提示故障代码并关机或者转移操作控制权;等于是把开关机部分做个冗余,这样不会因为一个小小的按键故障就把一台机器停掉了;输入输出都可以做端口无缝转换功能,把没用的端口做冗余,一旦故障立即切换;