讀出S7-1500 CPU的運行時間有多種方式,下面分別介紹這幾種方式。 1.通過OB1的啟動參數讀出運行時間在非優化的OB1啟動信息中帶有OB1的運行時間,如圖1所示。 圖1.讀出非優化的OB1中運行時間 將啟動信息參數傳遞到全局變量中就可以讀出CPU的上次掃描、最小、最大掃描時間,編程非常方便。 2.調用RD_SINFO函數讀出運行時間 如果使用優化的OB1,啟動信息簡化而沒有這些運行信息,如圖2所示,則必須調用函數讀出。
圖2優化OB1的啟動信息 例如在OB1中調用RD_SINFO函數讀出運行時間,程序如圖3所示。參數TOP_SI為當前OB1的啟動信息,數據類型為SI_classic,需要手動鍵入,ZI1為上次掃描時間,ZI2_3包含最小、最大掃描時間,低字為最小掃描時間,高字為最大掃描時間,示例中分別傳送到MW10和MW12中。START_UP_SI為暖啟動OB的啟動信息,示例中沒有進行引用。
圖3調用RD_SINFO函數 3.調用RT_INFO函數讀出運行時間 通過函數RT_INFO也可以讀出CPU的運行時間,示例程序如圖4所示。
圖4調用RT_INFO函數 通過模式1、2、3可以讀出CPU的上次掃描、最小、最大掃描時間,在這三種模式下,參數INFO的數據類型為LTIME,可以直接讀出。也可以通過其他模式讀出運行時間的百分比。 4.調用RUNTIME指令讀出運行時間 通過指令RUNTIME可以從參數RET_Val直接讀出CPU的運行時間,單位為秒,MEM為中間保存程序運行的存儲器,兩個參數類型都是LREAL,除此之外還可以讀出一段程序的運行時間。如圖5所示。
圖5 RUNTIME指令 |