先區分產品與電氣邊緣
計數多一件時,先把一次產品和一次電氣邊緣分開。上升沿是OFF到ON,下降沿是ON到OFF;若兩個邊緣都加一,單件就會變成兩件。先保存原始輸入、邊緣時間、產品位置與計數器值,不能只看最後總數。測試時把感測器輸出、控制器輸入與產品位置以同一時間基準保存,否則短抖動可能消失。每次回放都要核對期望件數與事件ID數量,若兩者不同先保留原始檔再分析。
機械抖動會使輸入快速ON/OFF,多孔產品也可能使同一物件產生多次遮蔽。兩者不能用同一個長延遲混處。排查要同時看波形、產品幾何、速度、支架與感測器安裝。用高速記錄器確認邊緣時間,並註明探棒、輸入濾波和資料更新週期。
先用一件固定尺寸和速度的產品建立基線,記錄進入、離開、ON持續時間與OFF間隔。若前一件離開後OFF尚未穩定,下一件進入可能合併;要改變間距或機械條件,不是只改程式。若多計只發生在最高速,先算遮蔽時間是否接近掃描週期,再查安裝與訊號品質。
本文採通用狀態機,不假定特定PLC高速計數指令。掃描式輸入可能漏短脈衝,硬體濾波、輸入更新和程式掃描要分開記錄。若多計只發生在多孔件,量孔距與速度,建立每孔期望時間窗,不把下降沿都當離件。
上電時輸入已ON是重要邊界。它可能是上一件仍停在光束中,不能把初始化前的未知狀態當成OFF,直接製造一次上升沿。本例先等待已確認的空位,再允許新事件;若設備需要續接在途產品,必須另有位置追蹤與未完成事件恢復規則。
算遮蔽時間與重新待命條件
速度0.5m/s、遮蔽長度25mm時,理想ON時間是0.025/0.5=50ms。若產品只遮蔽5mm,只有10ms,普通掃描可能漏件;這是算例,不是型號保證。修正後重跑單件與最小間距兩組,確認沒有以漏計換取不再多計。速度變化時重新計算遮蔽與OFF時間,不能沿用固定速度門檻。
兩件前緣距離100mm、產品長25mm、速度0.5m/s時,理想OFF間隔為(0.100−0.025)/0.5=0.150 s,也就是150 ms。若抖動只讓OFF維持8ms,不能把短OFF當新件;若debounce設150ms,又可能吃掉真實相鄰件。事件ID含通道、批次與原始輸入狀態,重啟時保存最後已確認ID。
上升沿計數可用Ready、Blocked、ReleaseWait三狀態。完成初始化且確認空位後進Ready;Ready看到新ON才建立產品事件並加一,轉Blocked忽略持續ON。OFF後進ReleaseWait,若在等待期間又ON便回Blocked且不加一;OFF連續達設定時間才回Ready。門檻由最小間距與速度推導。把debounce前後邊緣列表並排,證明抑制的是抖動而非真產品。
三孔產品可能產生ON、OFF、ON、OFF、ON;這些OFF是孔洞而非產品離開。要用遮蔽時間、孔距、第二感測器或編碼器區分,不能看到下降沿就清除產品狀態。若輸入模組有硬體濾波,記錄設定與反應時間,不能把軟體時間當全部延遲。
釋放等待例取20 ms,只是已量到抖動最長8 ms、真空隙最短150 ms的假設。產品ON先計一次,OFF 8 ms再ON不新增;之後OFF連續20 ms才重新待命。若速度增至1 m/s,原75 mm空隙縮為75 ms,仍須重新核對最短實測值與時間裕量。
分辨抖動孔洞與漏採樣
抖動多在同一位置短週期變化,多孔產品則按固定孔距重複。每個邊緣保存事件ID、時間、狀態、位置與候選產品ID,回放才可判斷原因。測試人員依固定順序放件並保留失敗案例,不刪掉最差一次。輸入品質若是Unknown,計數結果也應標記待查,不可直接納入生產統計。
不要盲目拉長debounce。最小相鄰間隔100ms而debounce為150ms時,第二件會被抑制。先量測最大抖動、最短OFF與速度範圍,再選有裕量的條件;無間隔時改善機械或增加感測器。任何變更先取得停機或旁路批准,避免測試改變在役控制。
輸入取樣率必須解析最短脈衝。每10ms取一次而真實OFF只有8ms,軟體可能完全看不到;趨勢畫面更新率不一定等於輸入取樣率。計數規則、狀態轉移與事件ID格式版本化,才能比較不同韌體。
測試矩陣包含單件、最小間距、多孔件、慢速、最高速、輕微振動與污染。每案例重複多次,保存邊緣列表與期望件數;通過條件是無重複、無漏計且異常可追溯。報告列出平均、最短、最長遮蔽和OFF時間,避免只報典型值。
本例20 ms是OFF穩定後重新待命的條件,和要求ON連續20 ms才接受不是同一種濾波。若產品ON只有10 ms,後者會把真件刪掉;若用固定計數後封鎖時間,則需另外比較兩件前緣的最短間隔。報告一定說明濾波作用在哪個邊緣與狀態。
逐件比對驗收與重啟限制
事件ID可單調遞增並關聯批次、通道與時間。重啟或通訊中斷時是否重置要明訂;重置後不能把新ID當舊產品。保存最後確認事件與未決事件,避免重啟重加一。測試報告由另一位人員依同一流程復核,確認結果不是人工挑選。
排查先比原始波形與產品位置,再看程式狀態。波形多次跳變查光路、振動、材質與孔洞;波形乾淨但計數多查邊緣選擇、重複旗標與初始化。
改安裝時一次只改角度、距離、遮光罩或支架之一,並重跑矩陣。任何濾波改動都要重查最高速與最小間距。安全相關機台依程序停機與授權。
報告保留規則、邊緣定義、時間公式、事件ID、波形、條件與限制。0.5m/s、25mm、50ms、150ms是本例條件,不代表特定感測器或PLC保證。
波形只有一次上升沿但總數加二時,檢查同一輸入是否被兩段程式計數、邊緣暫存是否每掃描重置、通訊補送是否再次累加。產品事件識別應與原始邊緣識別分開:被抑制的抖動仍可留在診斷檔,但不可變成新的產品事件。
若預期二十件,現場獨立點數二十件,原始上升沿二十二次,接受的產品事件二十次,應能指出另外兩次是哪些被抑制邊緣。若只剩總數二十,無法排除恰好漏兩件又多算兩件;因此驗收要比對每件對應關係,不能只比總和。
常見問題與官方來源
FAQ1:上升沿和下降沿都能計數嗎?答:通常一次產品只選一個代表邊緣。
FAQ2:debounce越長越安全嗎?答:不一定,可能抑制真件而漏計。
FAQ3:三孔產品三次ON一定是三件嗎?答:不一定,可能是同一件的孔洞。
FAQ4:只保存總數能追查多一件嗎?答:不能,至少保存邊緣、時間、事件ID和條件。
參考:NI:數位輸入濾波與可通過脈寬;特定模組限制須查型號。