根据以往的项目经验,由于机台的功耗大,常常会对输入信号产生干扰,导致计数值不准确。
根据客户的这一信息,我对干扰信号进行了以下的方析:
在理想情况下,没有任何干扰,旋转的机台每次靠近接近干关都会产生一个脉冲信号,如下图:
旋转机台靠近接近开关三次,产生三个脉冲
但是,有两种情况会产生干扰:
1) 机台还没有靠近接近开关时,从空中,电源耦合到检测线上的干扰,如下图:
从空中,电源耦合到检测线的干扰
这种干扰的特点是脉冲宽度很窄,可以出现在任何时间。
2) 当机台靠近接近开关时,在接近的瞬间,非常靠近时,会进入一个抖动的状态,机台和接近开关处理一种若即若离的状态,当机台运行速度慢时,这种抖动可能更加明显,波形如下图:
旋转电机靠近接近开关时产生的干扰
针对这两种不同的干扰,我通过以下两种机制进行滤除:
1) 通过软件检测按键的去抖方法滤除第一种干扰,具体为控制器每隔500us检测输入信号,连续检测到若干次一样的输入状态之后再确定为输入状态,比如干扰信号的脉宽为1ms,只需要将去抖次数设置为>=3即可以有效滤除;
2) 当检测到一次有效的状态变化之后,通过另一个参数检测禁止检测时间,即在这一段时间内不检测输入信号,等旋转机台下一次靠近接近开关之前再开启检测。
去抖的次数采用内部断电记录的变量V300进行保存,禁止检测的时间采用内部断电记录的变量V316进行保存。
与此同时,通过变量V332来设置开关断开->闭合,或者闭合->断开的状态切换时禁止检测。从而使得控制器可以适合NPN,PNP的信号输入。
通过连接控制器内置的WiFI热点,登录控制器的内置网络进行参数设置。
软件代码
来源:物联网全栈开发