AI 驅動文件
您想了解什麼?
PLC 握手
PLC 與 OV Spark 之間的每一次互動都遵循握手機制:PLC 發起請求,相機進行確認,PLC 在看到確認後撤銷請求。共有四種握手:觸發、讀取結果、程式切換和命令。
本頁面面向編寫 PLC 邏輯的控制工程師。EtherNet/IP 和 PROFINET 的工作方式相同。
簡而言之
- 在發起請求前,始終等待相機的 ready 位,並保持請求直到看到 ack
- 根據 Results Valid 加上變化的 Inspection ID 來讀取結果,切勿僅依據單一跳變
- 必須確認每個結果,否則不會呈現新內容
本頁使用訊號名,位元組偏移請查閱生成的檔案
本頁刻意使用訊號名而非地址。位元組和位的佈局由韌體生成,因此請從相機韌體對應的 EDS 或 GSDML 檔案中獲取,或從相機工業乙太網頁面的參考章節中獲取。手工鍵入偏移量,是導致安裝後在升級時讀錯位的常見原因。
觸發
- 檢查 Online = 1、Trigger Ready = 1 且 Trigger Ack = 0。寫入 Part ID,如果使用則寫入 User Data,然後拉高 Trigger 並保持
- 相機在上升沿接受觸發:Trigger Ready 降為 0,Trigger Ack 升為 1,Part ID 和 User Data 被鎖存。如果拒絕觸發,Trigger Error 升起,Error ID 說明原因
- 當看到 Trigger Ack = 1 時,拉低 Trigger
- 相機拉低 Trigger Ack。曝光結束時 Exposure Complete 置位,下一次採集可以開始時 Trigger Ready 恢復為 1
注意事項
- 保持 Trigger 為高不會重複觸發。 相機僅響應上升沿
- Trigger Error 反映來自任何來源的最後一次觸發,而不僅僅是您的觸發。請讀取 Error ID 查明原因,而不是臆斷是觸發過快
- Busy = 1 時 Trigger Ready = 1 是正常的,當影象緩衝區正在使用時。相機可以在當前檢測完成之前接受下一次觸發。請勿將其鎖存為故障
讀取結果
一次握手涵蓋兩種模式。當 Buffer Results Enable = 0 時,結果為實時的,每個新結果都會覆蓋上一個。當 Buffer Results Enable = 1 時,最多可排隊 10 個結果。
- 等待 Results Valid = 1
- 在一個掃描週期內讀取所有結果欄位,連同 Inspection ID
- 拉高 Inspection Results Ack 並保持。相機將結果出隊,Results Valid 以及通過和失敗位降為 0
- 當看到 Results Valid = 0 時,拉低 Ack。如果佇列中還有更多結果,下一個將在該下降沿時呈現
將 Results Valid 從 0 變為 1 並伴隨變化的 Inspection ID 視為新結果。
注意事項
- Inspection Completed 是跳變訊號,不是電平訊號。 在緩衝模式下,它標記的是一次完成而非一次呈現,因此即使結果欄位保持不變它也可能翻轉。切勿僅依據跳變讀取結果
- 實時模式可能隱藏某次檢測。 一個資料包週期內發生兩次完成可能看起來像一次翻轉。緩衝模式則不存在此問題
- 更改 Buffer Results Enable 會在任一邊沿時丟棄佇列以及已呈現的結果
- Inspection ID 中出現空缺意味著某次已接受的觸發未產生結果:被中止、丟棄或抑制
- 當 Ack 為高時,無論完成多少次檢測,都不會呈現新結果
總體判定結果位於 Inspection Pass 和 Inspection Fail 中。兩者都為 0 表示無結果。各工具的詳細資訊來自您在 步驟 5:輸出 中分配的槽位。
程式切換
- 檢查 Recipe Switch Ack = 0,寫入 Recipe ID,然後拉高 Recipe Switching Request
- 如果接受:Recipe Switch Ack 升起,Trigger Ready 下降,Online 下降並 Offline Reason = 3,表示程式正在載入。如果拒絕:Recipe Switch Error 升起,附帶未知程式或忙碌錯誤
- 載入完成後:Current Recipe ID、Recipe Version 和 Tool Count 更新,Recipe Load Complete 升起,Online 恢復為 1
- 拉低 Recipe Switching Request。相機清除 Ack 和 Recipe Load Complete
注意事項
- 從請求的上升沿到 Ack 之間,Recipe ID 必須保持不變
- 正在處理中的部件按舊程式完成檢測。 它們在 Recipe ID During Judgment 中攜帶舊程式 ID,因此應使用它而不是 Current Recipe ID 來解讀結果
- 佇列中的結果在切換後仍然保留,並保留判定它們時使用的程式
- 如果載入失敗,先前的程式仍保持已載入狀態
- Recipe ID 是在 步驟 5:輸出 中設定的 PLC recipe ID。複製或匯入程式會為其分配新的 ID
命令
- 檢查 Command Ready = 1,寫入 Command ID 和 Command Arg 0 到 3,然後拉高 Execute Command 並保持
- 相機鎖存 ID 和引數:Command Ready 下降,Command Executing 升起
- 完成後,一次更新同時攜帶 Command Response 0 到 3、Command Result Code、Command Executing = 0、Command Complete = 1,若失敗則還包括 Command Failed = 1。這些永遠不會跨掃描週期拆分
- 讀取響應並拉低 Execute Command。相機清除 Command Complete 並將 Command Ready 恢復為 1
命令列表和結果程式碼位於相機工業乙太網頁面的 Command reference 和 Codes 章節中。
一個穩健的 PLC 序列
對於典型的生產線,能在生產中穩定執行的邏輯如下:
- 當部件到位時,等待 Trigger Ready,然後觸發
- 等待 Results Valid 並出現新的 Inspection ID
- 讀取判定、所需的槽位以及 Recipe ID During Judgment
- 確認
- 根據判定執行動作,通過 Part ID 或 Inspection ID 將結果與部件匹配
通過 ID 匹配結果與部件,而不是靠時序
假設"下一個結果屬於下一個部件"的做法,在第一次丟失觸發之前都能工作。在每次觸發時寫入一個 Part ID,並檢查它是否隨結果返回,這樣即使漏掉一個部件,也不會讓之後的每個判定都錯位。
返回入門路徑連線到您的 PLC