任務週期時間是工程師可以用來瞭解控制器應用在運行期間行為的實用數值之一。 如果任務花費的時間超過預期,可能會影響流程時間、同步性、故障排除和系統穩定性。
CODESYS 是一個根據 IEC 61131-3、用於控制器應用程式設計的開發環境。 它用於自動化和控制系統,確保任務能在既定的時間條件下可靠執行。
在 CODESYS 專案中,監控實際任務週期時間可以幫助工程師優化性能、識別瓶頸、並偵測可能影響機械順序的時間行為, 當控制任務、通訊任務或與運動相關功能必須維持在特定時間範圍內時,這點尤其重要。
本教學介紹兩種在 CODESYS 中量測實際任務循環時間的方法:
這兩種方法都各有適用情境。 合適的方法取決於所需精度,以及您希望分析任務行為的深入程度。
任務週期時間表示特定任務或操作在控制系統中完成一次執行所需的時間。 在控制器應用中,此數值可協助您判斷程式碼是否在預期的時間範圍內執行。
監控任務週期時間可以支援多項工程任務:
穩定的任務週期時間無法解決所有控制問題,但能為工程師提供實用的分析起點。 如果實際週期時間比預期更長或變化很大,則可能需要對應用進行更深入的分析。
在 CODESYS 中,任務定義了程式或功能執行的時間和方式。 任務週期時間是完成該執行所需的時間。
例如,循環任務可以設定為每幾毫秒運行一次。 如果任務內的程式碼執行時間過長,控制器可能無法在預期的時間範圍內完成該任務, 這可能會影響性能、製程同步或運動行為。
測量任務週期時間可能具有挑戰性,因為實際值可能受到多種因素的影響:
這就是為什麼測量方法很重要, 一個簡單的計時方法可能已足夠應對基本檢查。 當需要微秒級計時或特定任務資訊時,可能需要更精確的方法,
在 CODESYS 中測量經過時間的一個簡單方法,是使用內建的 TIME() 函數。
基本邏輯很簡單:
1. 在程式碼區段執行前記錄開始時間
2. 執行您想要測量的程式碼
3. 程式碼區段執行後記錄結束時間
4. 用結束時間減去開始時間
5. 將結果作為測量的經過時間
在此範例中,使用兩個 FOR 迴圈模擬耗時任務, TIME() 函數會記錄迴圈執行前後的時間,其差值可提供任務執行時間的估算。
當您希望快速瞭解程式碼執行所需時間時,此方法非常有用,
範例顯示,量測到的任務週期時間通常介於 6 到 8 毫秒之間。 可以新增追蹤功能,監控量測變數隨時間的變化。 在範例中,週期時間偶爾會跳至 10 毫秒。
這樣的變化值得注意。 如果軟體運動任務設定的週期時間為 4 毫秒或更少,超過該設定的週期時間可能會導致異常。 因此,對運動控制或同步要求嚴格的應用而言,任務時序尤其重要。
TIME() 函數很實用,因為它非常簡單。 它只需要少量程式碼,易於理解,也能快速加入現有專案。
當以下情況時,它可能是一個不錯的選擇:
然而,TIME() 函數也有其限制, 它提供毫秒等級解析度的數值。 對需要微秒等級分析的應用而言,這樣的精度可能不足。
此方法還需要手動記錄時間。 您需要自行定義量測的起點、終點,以及經過時間的計算方式。 這種方式適合簡單檢查,但若需要在較大型程式中取得特定任務的執行時間資訊,使用上就較不方便。
若需要更精確地量測任務循環時間,通常 CmpIecTask 函式庫會是較合適的選擇。
CmpIecTask 函式庫已內建於 CODESYS。 此函式庫提供存取 IEC Task Manager 資訊的功能。
將函式庫新增至 CODESYS 專案後,初始化僅需少量程式碼, 初始化後,程式即可存取包含詳細任務資訊的結構,其中包括實際任務循環時間、平均循環時間等數值。
相較於手動量測程式碼區段執行前後的時間,此方法更能針對特定任務提供資訊。 無需自行建立計時邏輯,即可直接使用函式庫提供的任務資訊。
在原始範例中,使用相同的模擬工作負載,以便比較測量方法。 不同之處在於,CmpIecTask 函式庫更直接地取得與處理任務週期時間資訊。
當需要更精確的任務時序資訊時,CmpIecTask 函式庫具有多項優勢
首先,它可以靈活地組裝到程式的不同部分。 這使得存取任務資訊變得更加簡單,無需在每個程式碼區段前後手動加入開始與結束時間的量測。
其次,該函式庫會負責記錄與計算任務循環時間資訊。 這減少人工作業,並降低量測邏輯發生錯誤的風險。
第三,此函式庫可提供微秒等級解析度的數值。 這比使用 TIME() 函數獲得的數值更加精確,對於有更嚴格時間要求的應用尤其重要。
主要的缺點是必須將函式庫新增到 CODESYS 專案中。 然而,對許多應用來說,相較於額外提供的精度和任務特定資訊,這項額外設定的代價相對有限。
這兩種方法都能幫助你瞭解任務時間,但並非每種情況都適用。
當您需要簡單快速的檢查並且毫秒等級解析度已足夠時,使用 TIME() 函數, 它易於實現且對基本計時比較非常有用。
當您需要更精確的任務資訊、想要避免手動計時邏輯,或需要微秒等級解析度進行性能分析時,使用 CmpIecTask 函式庫。
對於動作任務、同步任務或具有更高時間要求的控制器應用,CmpIecTask 函式庫通常是更好的選擇。
在調試或故障排除期間,若需評估控制器效能、運動行為或機台同步,CODESYS 任務定時特別重要。
在 Festo 軟體環境中,CODESYS 可整合至更完整的工程與控制工作流程。 Festo AX Controls 支援符合 IEC 61131-3 的標準編程中,包括 CODESYS 的確定性即時控制,並且還支援高高階程式語言,例如 C/C++、C# 和 Python。
Festo Automation Suite 支援調試、編程和診斷。 它可以將 AX Controls 設備(如 CEPE)從拓撲結構直接傳送到 CODESYS 編程環境中,而無需額外的配置步驟,因此。使用者即可直接繼續進行機器動作流程。
本教學提供一套實用的 CODESYS 方法,用於檢查任務定時。 接著可依下一步工程需求,選擇合適的 Festo 軟體、許可或學習資源。