這是我見過最厲害的西門子PLC迴圈程式編寫方法

學習S7-300/400,不能僅僅侷限於閱讀或編寫一段程式,更要從本質上認識PLC,方能更好的駕馭它。

一、PLC的迴圈處理過程

CPU中的程式分為作業系統和使用者程式。

作業系統用來處理PLC的起動、重新整理輸入/輸出過程映像區、呼叫使用者程式、處理中斷和錯誤、管理儲存區和通訊等任務。

使用者程式由使用者根據需求自己編寫,以完成特定的控制任務。STEP7將使用者編寫的程式和資料維護在‘塊’中,如功能塊FB、功能FC和資料塊DB等。

PLC採用迴圈掃描的方式執行使用者程式,即掃描工作方式。

圖1 PLC的掃描工作方式

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

2。 執行‘系統起動組織塊’OB100,該組織塊可以自定義程式設計,實現一些初始化的工作;

3。 系統進入週期掃描,並起動迴圈時間監控;

4。 CPU將輸出過程映像區的資料寫入輸出模組;

5。 讀取輸入模組的狀態,並寫入輸入過程映像區;

6。 CPU呼叫OB1,執行使用者程式,期間,根據需要可呼叫其他邏輯塊(FB、SFB、FC及SFC),來實現控制任務;

7。 在迴圈結束時,作業系統執行所有掛起的任務,例如下載和刪除塊、接收和傳送全域性資料等;

8。 CPU返回‘第3步’,重新啟動迴圈時間監控。

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

二、過程映像區

PLC的儲存器中,特別設定了一片區域用來存放輸入訊號和輸出訊號的狀態,分別稱之為輸入過程映像區和輸出過程映像區。在迴圈程式處理過程中,CPU不會直接訪問I/O模組,而是訪問CPU內部的過程映像區。

如圖1所示,在整個掃描週期內,CPU會分配一段時間集中將輸出過程映像區的狀態傳送給輸出模組。同樣,輸入模組的狀態/資料也是集中、統一讀入輸入過程映像區。在程式的執行階段,CPU只和輸入/輸出過程映像區做資料互動,這樣做的好處是,即使外部輸入訊號的狀態發生變化,輸入過程映像區的狀態也暫時不變,可防止程式執行時發生‘紊亂’;而給到輸出模組的資料是‘同時’的,也可有效避免執行機構的動作序列的不同步。

對過程映像區的訪問可以以位、位元組、字以及雙字的方式進行。

2過程映像區直接定址

如圖2所示,假設其為輸入過程映像區的一部分:

· I1。3即可訪問到粉色部分的內容,即定址一個位;

· IB0即可訪問綠色部分的內容,即定址一個位元組;

· IW2:即可訪問藍色部分的內容,即定址一個字;

· ID4即可訪問橙色部分的內容,即定址雙字;

三、掃描迴圈時間

掃描迴圈時間是指圖1中相鄰兩次‘迴圈時間監控’之間的時間,它與使用者程式的複雜程度及CPU執行指令的速度有關。如下為315和416兩款CPU的指令執行速度,相比315,CPU416的執行速度快很多。

CPU 315-2DP:0。3ms/1000條指令;

CPU416-2DP:0。08ms/1000條指令

掃描迴圈時間不是一成不變的,以下事件都會延長迴圈時間:

· 中斷

· 診斷和故障處理

· 測試和除錯功能

· 通訊

· 傳送和刪除塊

· 壓縮使用者程式儲存器

· 讀/寫MMC卡

圖3 最大迴圈時間與最小迴圈時間

如圖3所示,在硬體組態中,可以修改最大迴圈時間,預設150ms。如果實際的迴圈時間超出設定的最大時間,CPU會呼叫組織塊OB80,在其中響應這個故障。如果OB80中未編寫程式,CPU將轉入STOP模式。

400的CPU中還可以設定最小掃描週期,當用戶程式較為簡單,使得迴圈時間太短時,過程映像區會太過頻繁的重新整理,設定最小掃描週期可以避免這種情況。

四、系統的響應時間

PLC的外部輸入訊號發生變化的時刻到它所控制的外部輸出訊號發生變化的時刻之間的時間間隔,稱之為系統的響應時間。它由以下三部分組成:

1、輸入電路的濾波時間

輸入模組透過RC濾波電路來過濾輸入端引入的干擾,並消除因外接輸入觸點的動作時產生的抖動而引起的不良影響,濾波電路的時間常數決定了輸入濾波時間的長短,一般為10ms左右。

2、輸出電路的滯後時間

輸出模組的滯後時間與模組的型別有關,

· 繼電器型輸出電路的滯後時間一般在10ms左右;

· 雙向閘流體型輸出電路在負載通電時的滯後時間約為1ms,負載由通電到斷電時的最大滯後時間為10ms;

· 電晶體型輸出電路的滯後時間一般在1ms以下。

3、CPU掃描迴圈工作方式帶來的滯後時間

由掃描工作方式引起的滯後時間最壞的情況下,可達2-3個掃描週期。

PLC總的響應延遲時間一般只有幾毫秒到幾十毫秒,對於一般的系統是無關緊要的。在一些特殊應用場合,要求輸入、輸出訊號之間的滯後時間儘可能短的時候,可以選用掃描速度更快的PLC或採取中斷等措施。