可编程逻辑控制器在硬件级别的开关去抖动

返回工业控制与自动化索引

开关去抖的概念可能在你的数字逻辑和微控制器课程中已经涉及。在那里,你了解到开关或继电器并非以干净利落的方式闭合。相反,触点会像钢球落在钢砧上那样弹跳。结果是在稳定到完全导通状态之前,信号会出现数十次通断通的跳变。数字逻辑的速度通常快于开关闭合,完全能读取这些跳变,从而导致不可预测的操作。令人惊讶的是,这通常不是可编程逻辑控制器(PLC)程序员需要考虑的问题。本文将通过对典型底层硬件的探索来解答这一原因。

首先我们要认识到,开关去抖对PLC来说是一个非常重要的考量。毕竟,PLC的核心是一个高速微控制器,能够响应开关弹跳这样的快速跳变。PLC的妙处在于,大多数制造商已经解决了这个问题。大多数PLC都有默认设置,能够适应最常见开关和按钮的去抖需求。因此,初学PLC编程的人无需考虑这一点。然而并非所有输入信号都相同。某天你可能需要监测一个快速跳变的信号,而这种信号会在去抖滤波器中丢失。

本文将探讨图1所示KUNBUS DIO模块采用的开源设计。图中上方的DIO模块与下方带有以太网和USB接口的Revolution PI Core S控制器。我们将探讨电压域的概念,明确划分DIO模块输入连接之间的界限。我们还将研究专用PLC接口模块,例如KUNBUS产品中采用的MAX31913

1 :KUNBUS DIO模块(上方)与Revolution Pi PLC控制器的照片。

PLC 电压域的重要性

开源硬件对发展中的技术专家和工程师来说是一份礼物。其中一个好处是我们可以接触到真实世界的功能设计。例如,图1中DIO模块的输入部分使用了两颗重要集成电路:一对MAX31913芯片和一颗MAX14850。

  • MAX31913:8通道数字转串行(SPI)接口,专为PLC输入应用打造。该芯片内置去抖滤波器。这些器件共同构成一把保护底层精密微控制器的防护伞:

  • MAX14850:6通道数字隔离器,可承受高达600 V_{RMS} 电压,数据传输速率达50 Mbps。

若曾损坏过微控制器,您会明白有多种方式可能导致损坏。仅需一秒的反向极性或过压就足以摧毁微控制器。在DIO模块内部,Maxim IC能防范工业环境中常见的瞬变、反向极性及一定程度的过压危害。可以说摧毁微控制器轻而易举。但要损坏PLC模块则需费更多功夫。

采用专用 PLC 输入模块实现开关消抖

图2展示了典型的开关弹跳波形。这款快动开关需要近1.5毫秒才能稳定下来。显然,PLC必须解决这一物理问题,否则可能导致程序响应不可预测。

2 :为PLC输入提供24VDC电压的常开开关消抖时间。

第一道防线位于MAX31913内部。查阅数据手册可知,该串行器芯片本身内置滤波器。滤波器通过MAX14850的DB1和BD0输入设置,提供从关闭到3毫秒的4个离散范围。

硬件解决方案堪称理想,因其能最大限度降低代码复杂度。但必要时,用软件构建消抖操作也并不困难。通常需在多轮PLC程序扫描中监测开关状态变化。

技术提示 :务必核实PLC软件中的消抖设置。这能为您节省大量故障排查时间。例如,Revolution Pi PiCtory的设置如图3所示。此处消抖设置(红色箭头)与Maxim MAX31913数据手册所列参数对应。

3 :PiCtory屏幕截图中高亮显示的消抖设置。

您是否遇到过PLC开关消抖滤波器问题?我们很乐意听取您的意见。定位问题耗费了多长时间?是什么引导你找到解决方案的?

返回工业控制与自动化索引