回覆列表
  • 1 # 塞北名駝

    一、S7系列PLC的程式執行過程

    要回答這一問題,首先得清楚S7系列PLC程式執行的過程,如下圖所示。

    PLC得電或由STOP模式切換到RUN模式時,CPU起動,同時清除沒有保持功能的位儲存器、定時器、計數器,清除中斷堆疊和塊堆疊的內容,復位儲存的硬體中斷等。

    執行“系統起動組織塊”OB100,該組織塊可以自定義程式設計,實現一些初始化的工作; 系統進入週期掃描,並起動迴圈時間監控;CPU將輸出過程映像區的資料寫入輸出模組;讀取輸入模組的狀態,並寫入輸入過程映像區; CPU呼叫OB1,執行使用者程式,期間,根據需要可呼叫其他邏輯塊(FB、SFB、FC及SFC),來實現控制任務;在迴圈結束時,作業系統執行所有掛起的任務,例如下載和刪除塊、接收和傳送全域性資料等;CPU重新啟動迴圈時間監控,開始新的迴圈;

    9、在執行使用者程式的過程中,如果有中斷事件發生,當前執行的塊將暫停執行,轉而執行相應的組織塊,來響應中斷。該組織塊執行完成後,之前被暫停的塊將從中斷的地方繼續開始執行。OB1具有很低的優先順序,除了OB90外,所有的組織塊都能中斷OB1。

    二、迴圈中斷組織塊的概念

    S7提供了多達九個的迴圈中斷OB (OB30至OB38),它們以固定的時間間隔來中斷使用者程式。不同的CPU支援的迴圈中斷的個數有所差異,比如CPU315-2DP僅有一個迴圈中斷組織塊——OB35;而S7-400系列CPU幾乎支援全部的九個迴圈中斷OB,具體支援與否,可檢視硬體手冊。

    迴圈中斷OB的等距啟動時間是由時間間隔和相位偏移量決定的。在“硬體組態”中,可以定義迴圈中斷的優先順序、兩次中斷之間的時間間隔以及相位偏移量(在S7-300系列CPU中,只能定義時間間隔),如下圖所示。

    定義好上述引數後,系統上電、正常執行後,每隔一定的時間,觸發一次迴圈中斷,系統暫時中止執行OB1中的程式,轉而執行迴圈中斷OB(如OB35)中的程式。迴圈中斷OB中的程式碼執行完畢後,系統自動回到OB1的斷點處,繼續執行OB1的程式。直到下一次迴圈中斷的產生,如此,週而復始。

    三、什麼時候用迴圈中斷

    我們知道,OB1由於可能被其他組織塊中斷,因此,每一次處理週期的時間會不盡相同,因此一些些對“週期時間”要求比較嚴格的訊號,在OB1中處理就不太合適了。

    和OB1不同,迴圈中斷OB塊的是“等間隔”執行的,其執行間隔可由使用者自定義,相比OB1而言,其等時、同步效能更好,比如模擬量的採集和處理,為保證資料的統一性,通常可將程式碼寫在迴圈中斷組織塊中。

  • 中秋節和大豐收的關聯?
  • 富士X-T3配自家50-140還是轉接環外接佳能70-200好呢?