PF_Robot回傳值
所有的回呼函數都需要回傳數值。回傳值通常是代表操作已正確完成。而(常數PF_CALLBACK_SUCCESS)回傳值,則可被用於變更系統的運作方式。PF_Robot回傳值可用於變更主要的程序,並根據「使用情境」提供不同的動作。開發者能透過不同的回傳值,在各種狀況下控制Part Feeding的處理程序。
以下為PF_Robot回呼函數的各種回傳值之說明。
PF_CALLBACK_SUCCESS:
當PF_Robot回呼函數結束,且「PF_Robot = PF_CALLBACK_SUCCESS」時,系統將會確認該佇列中是否可使用下一個主動零件(請求的零件)。若可使用主動零件,系統將會再次調用PF_Robot函數。傳遞給PF_Robot的PartID參數將會是該主動零件的零件編號。在主動零件可以使用時,由於請求的零件已列入佇列中,因此不需要擷取新影像或讓送料器進行振動。在主動零件無法使用時,系統將會為PF_Start陳述式中執行的所有零件擷取新影像。視覺影像的結果會被載入至各零件佇列中,並由系統判斷是否要讓送料器進行振動。
PF_CALLBACK_RESTART:
當PF_Robot回呼函數結束,且「PF_Robot = PF_CALLBACK_RESTART」時,無論主動零件的佇列中是否有可使用的零件,系統都會為PF_Start陳述式中執行的所有零件擷取新影像。視覺影像的結果會被載入至所有零件佇列中,並由系統判斷是否要讓送料器進行振動。PF_CALLBACK_RESTART回傳值的主要目的,在於強制從主要Part Feeding處理程序迴圈的一開始擷取新影像、重新載入佇列、重新判斷、重新投入。當需要在每個取放循環中擷取新影像時,可有效活用此回傳值。例如,若在取放過程中意外分散了周圍的零件,用來擷取新影像並更新佇列時會很方便。
PF_CALLBACK_RESTART_ACTIVEPART:
當PF_Robot回呼函數結束,且「PF_Robot = PF_CALLBACK_RESTART_ACTIVEPART」時,系統僅會為主動零件(並非PF_Start陳述式中記載的所有零件)擷取新影像。此回傳值在讓多台機器人共享同一個送料器時特別能發揮作用。使用PF_CALLBACK_RESTART_ACTIVEPART,即可防止零件重複出現在多個佇列中。此回傳值將會強制系統僅為主動零件擷取新影像,且僅載入主動零件的佇列。PF_Start陳述式中記載的所有其他零件之佇列將會被清除。以下將舉出一個例子來說明這一點:
假設送料器平台上有1種實體零件,且交由2台機器人從送料器進行拾取。在此應用場合中,就會在Part Feeding對話方塊中新增2種零件。各個零件將會被分配不同的機器人編號。此外,各個零件的視覺序列應具備不同的視覺校準。(因為攝影機會針對特定的機器人進行校準)即使實體零件種類只有1種,也需要建立2個邏輯部分。(每個機器人各1個)PF_Start陳述式之中包含兩者的零件編號。系統會為兩者的邏輯部分擷取視覺影像,並載入兩者的佇列。由於兩個視覺序列都在平台上尋找相同的實體零件,佇列中將會發生座標重複。當機器人#1拾取零件並從佇列中移除零件後,該零件仍然保留在另一個機器人的佇列中。導致機器人#2嘗試拾取已被機器人#1移除的零件。而PF_CALLBACK_RESTART_ACTIVEPART可確保零件只載入到1個佇列中。因此以結果而言,並不需要採取特別的排序或特別的佇列分配。關於此使用情境的詳細程式設計資訊,請參閱以下內容。
機器人2台 - 零件1種類