邏輯程式

描述

PolyScope X 的應用程式可包含一個「 邏輯程式 」,該程式會持續在背景中運行,且獨立於主要機器人程式之外。 此功能適用於以下情況:當機械手臂電源關閉、主程式暫停或停止,或是操作員進入安全防護區域時,仍需持續執行的任務。


典型用途包括維持現場總線通訊(Modbus、Ethernet/IP、PROFINET、Socket、XmlRPC)、回應外部感測器輸入、將機器人狀態回報給生產用 PLC,以及在主程式停止時控制外部設備。

邏輯程式不得使用任何直接移動機器人手臂、變更有效負載或修改 TCP 參數的功能。

邏輯程式應用範例

  1. 當機器人處於停止模式(例如安全防護停止、保護性停止或緊急停止)且主程式已暫停或停止,或於機器人手臂通電之前,對外部感測器輸入的主動回應。

  2. 即使機器人手臂已斷電且程式未執行,現場總線通訊(Modbus、Ethernet/IP、PROFINET、Socket、XmlRPC)仍會維持運作。

  3. 當主程式被操作員中斷時,仍可持續執行單元邏輯運算。

  4. 機器人狀態報告,該報告會傳送至生產控制軟體(生產用可程式邏輯控制器)。

  5. 當主程式停止或暫停時,會控制外部設備(例如焊接機、輸送帶、點膠機)停止運作。

  6. 在程式啟動前,會先擷取操作員的輸入。

  7. 根據故障狀況進行客製化恢復。 操作員可自行決定在恢復主程式後該執行哪些操作。

  8. 在小型機器人單元中更換外部 PLC 控制器。

授權

邏輯程式需要授權,可透過客戶入口網站購買。

 

控制邏輯程式

在「程式」頁面中,請於側邊欄中選取「 邏輯程式」。 展開的側邊欄顯示用於導覽邏輯程式各部分的控制項。 此外,您還可透過此功能啟動、暫停、停止及重置程式。

 

「執行程式」按鈕會根據邏輯程式的狀態,變更為「 執行程式 」或「 停止程式」。 此功能可作為「邏輯程式」右鍵選單中各項程式控制動作的捷徑。

四個「 邏輯程式指示器 」顯示程式的當前狀態。 這些設定亦會顯示程式是否已設定為在載入應用程式時自動啟動。

 

邏輯程式結構

邏輯程式與主程式具有相同的結構區段:

  • 主程式體— 會持續執行,直到手動停止、執行停止指令,或發生執行時錯誤為止。
  • 開始 前 — 當邏輯程式啟動時執行一次。
  • 模組 — 函式與執行緒,其組織方式與主程式相同。 預設情況下,執行緒函式僅執行一次;請啟用「迴圈」選項以讓執行緒持續運行。

機器人程式與邏輯程式各自擁有專屬的全域變數、獨立的執行緒池,以及獨立的執行生命週期。 啟動、停止或發生故障的某個程式,不會影響其他程式的運作。 「 停止 」或「 暫停 」指令僅會影響其執行的程式。

 

 

在「 開始 前」章節中,您只能執行該程式一次。

在「 模組 」區段中,您可以查看該程式可用的功能與執行緒清單。

 

與機器人程式交換資料

機器人程式與邏輯程式之間的主要通訊方式是透過 應用程式變數 。 變數既可透過機器人設定,亦可從機器人及邏輯程式中讀取。

此範例會統計進入機器人工作單元輸入緩衝區的項目數量,並將計數結果顯示給機器人程式。 即使機器人手臂已關機,計數器仍會持續遞增。

 

讀取機器人狀態

可透過內建的 RTDE 變數 取得機器人狀態。 可透過腳本函式 ` get_rtde_value()` 讀取這些變數。 如需查看所有可用的 RTDE 欄位清單,請參閱《 RTDE 指南》。

以下範例說明如何檢查「安全停止」功能是否已啟用:


safety_status = get_rtde_value("safety_status")
# 檢查是否處於安全防護停止狀態及自動模式下的安全防護停止狀態
is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

以下範例用以檢查機器人程式是否處於暫停狀態:

is_program_paused = get_rtde_value("runtime_state") == 4

URScript 控制 API 亦封裝了此項功能。

 

自動啟動邏輯程式

您可以選擇在載入應用程式時自動啟動某個程式。 當您選取「 自動 啟動」選項時,應用程式載入完成後,邏輯程式將立即啟動。

您亦可設定在機器人控制器通電且載入上一個應用程式時,自動啟動邏輯程式。

自動 啟動」功能無論在何種運作模式下,或機器人手臂處於何種狀態,皆可正常運作。 當載入時觸發「自動啟動」功能,系統會顯示一個 Snackbar 通知,確認邏輯程式已啟動。

 

 

「邏輯程式 」圖示 旁的側邊欄標章,會隨時顯示程式的當前狀態,無論是正在執行還是已停止。

您有責任確保在機器人通電以及載入不同應用程式時,邏輯程式能安全運作。

邏輯程式可透過有線或 PLC 連接(Modbus、PROFINET、Ethernet/IP、Socket、直接輸出或其他介面)來啟用或停用外部設備。

 

模組與執行緒

邏輯程式功能可組織為函式。 此功能運作方式與機器人程式中的相同。

每個功能皆可標記為「 執行緒」。 預設情況下,執行緒僅執行一次。 勾選執行緒函式上的「迴圈」核取方塊,以使該執行緒持續執行。

 

資源共享

雖然機器人程式與邏輯程式是獨立執行的,且各自擁有專屬的執行緒與變數池,但它們皆共用相同的硬體資源。 這會帶來一些程式設計師應注意的限制:

  • 邏輯程式執行緒與機器人程式在同一顆 CPU 上執行。 所有邏輯程式執行緒的執行時間將累積至所有機器人程式執行緒的執行時間中。 在極端情況下,這可能會導致「執行時間落後過多」的違規狀況。

  • 某些通訊資源(例如 Modbus 訊號或通用寄存器)屬於共用資源。 若同時寫入同一寄存器,將會產生意想不到的結果。 此外,當底層實作經過優化後,目前觀察到的行為未來可能會有所改變。

  • Modbus — 共用一個 Modbus 客戶端。 在任一程式中建立的訊號,在兩者中皆可見。

  • Ethernet/IP 彈性轉 接器 — 每個程式都會針對同一實例開啟專屬的讀取或寫入處理程序。 處理程序不得寫入相同的数据欄位。

 

限制事項

  • 在邏輯程式中,僅提供部分 URScript 指令。

  • 邏輯程式不支援程式執行指標及基於中斷點的除錯功能。

  • 邏輯程式不支援解釋器模式。 然而,在邏輯程式執行期間,仍可在機器人程式中啟動解釋器模式。