描述
使用 "RUNTIME" 指令測量運行時間
使用 "RUNTIME" 指令可以測量整個程序、單個塊或者命令序列的運行時間。該指令在 SCL (S7-1200/S7-1500) 語言和 STL (S7-1500) 語言中調用。下面的例子展示了如何測量一個程序塊的運行時間。
例 1:在 S7-1500 中使用 STL 語言測量運行時間
第一次調用指令(調用 RUNTIME)時設置時間測量的起始點。這個起始點信息緩存在 DB 數據塊的 "DB1".Mem 中,并作為第二次調用此命令的參考點。執行完 "TimeDelay" [FC2] 功能后,再次執行 "RUNTIME" 指令,然后計算出了功能的運行時間。結果存儲在 DB 變量的 "DB1".Res (輸出 "RET_VAL") 中。

圖 01
例 2:在 S7-1500 中使用 SCL 語言測量運行時間
-
第一次調用 "RUNTIME" 指令設置時間測量的起始點并且存儲在 "Memory" 中,并且作為第二次調用的參考點。
-
然后調用程序塊 "Module_FC"。
-
當程序塊執行完后,"RUNTIME" 指令被再次調用,此次調用計算出程序塊 "Module_FC" 的運行時間并將其作為結果輸出到 "RT_Measure" 中。

圖 02
關于此方法的詳細描述和示例,參考如下 STEP 7 (TIA 博途) 的在線幫助:
-
針對 SCL 語言的 "RUNTIME:測量程序運行時間 (S7-1200, S7-1500)"
-
針對 STL 語言的 "RUNTIME:測量程序運行時間 (S7-1500)"
例 3:使用主程序 [OB1] 的臨時變量測量循環時間
對于 S7-1500 的“程序循環 OB ”,可以將其從“優化的塊訪問”改成“標準兼容模式”。然后與在 STEP 7 V5.x 中類似,通過訪問臨時變量來得到測量出的循環時間。
-
右鍵單擊主程序 [OB1] ,在彈出的菜單中選擇“屬性...”。
-
進入“屬性”標簽并且取消“優化的塊訪問”屬性(去掉鉤選)。
-
點擊確定,然后在下一消息框中再點擊確定。

圖 03
現在,就像在 STEP 7 V5.x 中一樣,可以使用臨時變量得到系統信息,這些信息包括這個塊的進入系統時的起始時間數據、故障原因和故障點。可以在塊中評估這些數據,F在可以通過主程序 [OB1] 的臨時變量確定循環時間。

圖 04
改變塊的訪問方式后,這些參數已經被保存在聲明的臨時變量里了。這些 OB 塊的臨時變量名稱都可以被修改,但是其內容不會改變。下表給出了測量循環時間的編程例子。
循環時間
|
指令
|
輸出前一個循環時間:
|

圖 05
|
輸出最小循環時間:
|

圖 06
|
輸出最長循環時間:
|

圖 07
|
表 01
注意
如果沒有修改 S7-1500 的塊訪問方式(圖. 03),或者使用的是 S7-1200,那么上述方法是無法實現的。