跳到主要內容

AI 驅動文件

您想了解什麼?

PLC 握手

PLC 與 OV Spark Pro 之間的每次互動都遵循握手機制:PLC 發起請求,相機確認,PLC 在看到確認後撤銷請求。共有四種握手:觸發、讀取結果、程式切換 和 命令。

本頁面面向編寫 PLC 邏輯的控制工程師。EtherNet/IP 和 PROFINET 下工作方式相同。

簡而言之
  • 發起請求前始終等待相機的 ready 位,並保持請求直到看到 ack
  • 根據 Results Valid 和 變化的 Inspection ID 讀取結果,切勿僅依賴切換訊號
  • 必須確認每個結果,否則不會呈現新結果
本頁使用訊號名稱,位元組偏移以生成的檔案為準

本頁特意使用訊號名稱而非地址。位元組和位的佈局是按韌體生成的,請從相機韌體對應的 EDS 或 GSDML 檔案中獲取,或從相機工業乙太網頁面上的參考章節中獲取。手動輸入偏移是導致更新後讀取錯誤位的常見原因。

觸發​

  1. 檢查 Online = 1、Trigger Ready = 1 以及 Trigger Ack = 0。寫入 Part ID,如果使用 User Data 也一併寫入,然後拉高 Trigger 並保持
  2. 相機在上升沿接受:Trigger Ready 降為 0,Trigger Ack 升為 1,Part ID 和 User Data 被鎖存。如果拒絕觸發,Trigger Error 升高,Error ID 說明原因
  3. 當看到 Trigger Ack = 1 時,拉低 Trigger
  4. 相機拉低 Trigger Ack。曝光結束時 Exposure Complete 置位,下一次採集可以開始時 Trigger Ready 返回 1
注意事項
  • 保持 Trigger 高電平不會重新觸發。 相機僅響應上升沿
  • Trigger Error 報告的是來自任何來源的最近一次觸發,不僅是你的觸發。請讀取 Error ID 獲取原因,而不是臆斷觸發過快
  • Trigger Ready = 1 時 Busy = 1 是正常的,這說明影象緩衝區正在使用中。相機可以在當前檢測完成前接受下一次觸發。不要將此鎖存為故障

讀取結果​

一個握手機制同時覆蓋兩種模式。當 Buffer Results Enable = 0 時,結果是實時的,每個新結果都會覆蓋上一個。當 Buffer Results Enable = 1 時,最多可排隊 10 個結果。

  1. 等待 Results Valid = 1
  2. 在一個掃描週期內讀取所有結果欄位,同時讀取 Inspection ID
  3. 拉高 Inspection Results Ack 並保持。相機出隊,Results Valid 以及通過和失敗位降為 0
  4. 當看到 Results Valid = 0 時,拉低 Ack。如果佇列中還有更多結果,下一個將在該下降沿呈現

將 Results Valid 從 0 到 1 並伴隨 Inspection ID 變化 視為新結果。

注意事項
  • Inspection Completed 是切換訊號,不是電平。 在緩衝模式下它標誌完成而非呈現,因此在結果欄位保持不變時它也可能翻轉。切勿僅依據切換讀取結果
  • 實時模式可能隱藏某次檢測。 一個資料包週期內發生的兩次完成可能看起來只是一次翻轉。緩衝模式不受此影響
  • 更改 Buffer Results Enable 會丟棄佇列和當前呈現的結果,任一邊沿都是如此
  • Inspection ID 中出現間隔意味著某次已接受的觸發未產生結果:被中止、丟棄或抑制
  • 當 Ack 保持高電平時,不會呈現任何新內容,無論完成多少次檢測

總體判定在 Inspection Pass 和 Inspection Fail 中。兩者均為 0 表示沒有結果。按工具的詳細資訊來自你在 步驟 5:輸出 中分配的槽位。

程式切換​

  1. 檢查 Recipe Switch Ack = 0,寫入 Recipe ID,然後拉高 Recipe Switching Request
  2. 若接受:Recipe Switch Ack 升高,Trigger Ready 降低,Online 降低且 Offline Reason = 3(正在載入程式)。若拒絕:Recipe Switch Error 升高,報告未知程式或忙錯誤
  3. 載入完成時:Current Recipe ID、Recipe Version 和 Tool Count 更新,Recipe Load Complete 升高,Online 返回 1
  4. 拉低 Recipe Switching Request。相機清除 Ack 和 Recipe Load Complete
注意事項
  • 從請求的上升沿到 Ack 期間 Recipe ID 保持不變
  • 正在處理中的部件按舊程式完成判定。 它們在 Recipe ID During Judgment 中攜帶舊的程式 ID,因此解讀結果時請使用該欄位,而不是 Current Recipe ID
  • 佇列中的結果在切換後保留,並保留對其判定的程式
  • 如果載入失敗,之前的程式仍保持載入狀態
  • Recipe ID 是在 步驟 5:輸出 中設定的 PLC 程式 ID。複製或匯入一個程式會賦予它一個新的 ID

命令​

  1. 檢查 Command Ready = 1,寫入 Command ID 和 Command Arg 0 到 3,然後拉高 Execute Command 並保持
  2. 相機鎖存 ID 和引數:Command Ready 降低,Command Executing 升高
  3. 執行完成時,一次更新中會同時攜帶 Command Response 0 到 3、Command Result Code、Command Executing = 0、Command Complete = 1,以及失敗時的 Command Failed = 1。這些永遠不會跨掃描週期拆分
  4. 讀取響應並拉低 Execute Command。相機清除 Command Complete 並將 Command Ready 返回為 1

命令列表和結果程式碼位於相機工業乙太網頁面的 Command reference 和 Codes 章節中。

穩健的 PLC 序列​

對於典型產線,能在生產中可靠執行的邏輯如下:

  1. 部件到位時,等待 Trigger Ready,然後觸發
  2. 等待 Results Valid 並伴隨新的 Inspection ID
  3. 讀取判定、所需的槽位,以及 Recipe ID During Judgment
  4. 確認
  5. 根據判定執行動作,通過 Part ID 或 Inspection ID 將結果與部件匹配
通過 ID 而不是時序將結果與部件匹配

假設下一個結果屬於下一個部件,這在第一次觸發丟失之前都有效。為每次觸發寫入 Part ID 並檢查它隨結果返回,這樣即使漏掉一個部件,也不會使其後的每個判定錯位。

返回入門路徑連線到您的 PLC