跳到主要內容

AI 驅動文件

您想了解什麼?

PLC 握手

PLC 與 OV Spark 之間的每一次互動都遵循握手機制: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 查明原因,而不是臆斷是觸發過快
  • Busy = 1 時 Trigger Ready = 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 recipe 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