2.27.2021

Debounce

我就是文章中所述會在每個輸入點都加上除彈跳的工程師…

(譯)除彈跳

由於越來越多地使用諸如近接開關之類的固態傳感器,因此您不太可能看到這種梯形邏輯編程模式,但是“除彈跳”模式在許多項目中仍然派上用場:
除彈跳
除彈跳

當您處理可能易於“彈跳”的“幹接點”輸入時,“除彈跳”模式很有用。在電路閉合時,觸點可能會彈跳,這可能會導致輸入暫時在導通和關斷狀態之間振盪。當觸點由於電弧而斷開時,輸入也會振盪。附近高電流導體產生的電噪聲實際上會在低壓輸入中感應出電脈衝,這可能使您的邏輯誤以為輸入在很短的時間內處於相反狀態。

除彈跳模式是狀態線圈模式的一種變體。在這種情況下,我們使用計時器上的延遲作為線圈的觸發。在更改內存線圈的狀態之前,此計時器“確保”輸入確實打開。然後,線圈將自身自保持。在允許破壞線圈的電路自保之前,使用延遲關閉計時器來確保輸入確實關閉。

可以修改計時器的設定時間以適應這種情況。如果使用除彈跳模式來抑制電噪聲,則可以將計時器縮短到幾毫秒,但是如果問題是機械接觸的彈唬,則可能需要50或100毫秒(甚至更長)。

除彈跳模式有一些缺點:首先,它會對輸入做出反應時延遲機器的響應時間。我們希望大多數機器盡可能快地運行,並且希望避免不必要的延遲。其次,它消耗了計時器,這對於資源有限的舊式PLC來說更值得關注。第三,它使邏輯複雜化。

一些工程師甚至還為機器上的每個輸入添加了一個除彈跳功能。由於我剛剛列出的缺點,我會認為盲目添加Debounce邏輯是一種反模式。我建議您僅在知道自己需要此模式時,或者根據以往的經驗很可能需要使用此模式時,才使用此模式。

在大多數情況下,可以通過一些簡單的選擇來避免除彈跳邏輯。首先,在可能的地方使用固態和/或高質量的傳感器和開關,這些傳感器和開關彈跳的可能性較小。其次,在機器上佈線大電流導線時,應使其不與小電流控制導線並聯。第三,檢查輸入卡是否具有可以打開或調節的過濾器功能。該濾波器可用於從雜散電噪聲中濾除高頻(短持續時間)脈衝。

“除彈跳”模式通常與“輸入映射”模式結合使用。

梯形圖邏輯程序的更多模式

Written with StackEdit.

沒有留言:

張貼留言