S7-200 SMART 的存儲區可以分為兩大類:一是跟外部物理信號相關的輸人/輸出映像區/存儲區;二是 CPU 內部的存儲區。
(1)輸入/輸出映像區/存儲區
數字量輸入映像區(DI);數字量輸出映像區(DO);模擬量輸人存儲區(AI);模擬量輸出存儲區(AO)。
(2)內部存儲區
變量存儲區(V);標志存儲區(M);定時器(T);計數器(C);高速計數器(HC)累加器;特殊存儲器(SM);局部存儲區(L);順序控制繼電器存儲區(S)。
CPU 在每個掃描周期的初期將物理外設的數字量輸人信號掃描到數字量輸人映像區(DI)中,程序在運行過程中的數字量輸出值暫存在數字量輸出映像區(DO)中,并在掃描周期的末期將數字量輸出映像區的值刷新到物理輸出模塊。數字量輸入/輸出映像區是可讀且可寫的,在程序中對某些數字量輸人位進行寫操作,便可以模擬外部的數字量輸入信號。CPU 對模擬量的處理有所不同,模擬量的值存放在模擬量輸入/輸出存儲區中。
注意:模擬量的存放區被稱為“存儲區”而不是“映像區”或者“緩存區”。對于程序中
使用的模擬量,是直接從存儲區進行讀取或寫入的。模擬輸入(AI)存儲區是只讀的,模擬量輸出(AO)存儲區是只寫的;變量存儲區(V)用來存放程序在運行過程中的中間變量或者需要的配方數據;標志存儲區(M)用來存放邏輯運算的中間結果。其實,在編程時,變量存儲區和標志存儲區沒有明顯的界限,也可以用變量存儲區來存放邏輯運算的中間結果。兩者都可以位、字節、字或者雙字的方式進行訪問,其區別在于變量存儲區(V)比標志存儲區(M)要大很多。比如,在 CPU ST40 中,變量存儲區的范圍為 VB0 ~VB16383,而標志存儲區的范圍為 MB0~MB31。程序運行過程中需要的配方數據,需要在數據塊編輯器中設置并存放在變量存儲區(V)中。
① 定時器用來計時。S7-200 SMART 定時器的時間基準有 1ms、10ms 和 100ms 三種。定時器有兩種變量:當前值和定時器位。當前值是一個16位的無符號整數,用來記錄當前的時間;定時器位是一個位,用來記錄定時器是否已經被觸發(當前值大于設定值)。以定時器的地址(T 編號)既可以訪問當前值,也可以訪問定時器位,取決于訪問指令的類型。位操作指令訪問的是定時器的位,字操作指令訪問的是定時器的當前值。以圖 3-19 為例:第一段程序是讀取定時器 T3 的當前值,并將其存放到 VW10,屬于字操作;第二段程序是讀取定時器 T3 的位,并將其輸出到 Q0.0,屬于位操作。
圖3 -19 定時器的字操作與位操作
① 計數器用來進行計數。S7-200 SMART 提供三種計數器:向上計數器、向下計數器和上下計數器。與定時器類似,計數器也有一個當前值(16 位無符號整數)和一個計數器位,其地址以字母 C加上編號表示(比如 C10)。使用字操作指令可以訪問計數器的當前值,使用位操作指令可以訪問計數器的的位。S7-200 SMART 的 CPU 最大支持 256個計數器(編號C0~C255)。
② 高速計數器 與普通的計數器不同,它不受 CPU 掃描周期的限制,可以用來對高速信號(比如脈沖)進行計數。高速計數器的值是一個32 位的有符號整數,其性質為只讀,可以通過高速計數器的地址(HC 編號)進行訪問。
③ 累加器 可以用來傳遞參數或存放指令運算的中間結果。S7-200SMART提供4個32 位的累加器(ACO~AC3)。累加器可以字節、字或者雙字的方式進行訪問。
④ 特殊存儲器(SM) 存放著與系統運行有關的特殊變量。S7-200 SMART PLC 的操作系統會將系統狀態等信息寫人到特殊存儲器中,用戶程序通過訪問特定的特殊存儲器,就可以獲取一些系統級的信息。比如,SM0.0 始終為 1,SM0.5 會產生 1s的時鐘脈沖等。S7-200 SMART 有非常多的特殊存儲器,可以參考 8.7 節中的常用特殊存儲器。
⑤ 局部存儲區(L) 用來保存程序塊的運行信息。S7-200 SMART 為每一個程序組織單元(POU)分配了 64個字節的局部存儲區,其中可以存放程序運行所需要的輸人、輸出輸人輸出及臨時變量。局部存儲區中的變量僅在當前 POU 運行時有效,POU 運行結束后將被釋放。
⑥ 順序控制繼電器存儲區(S) 與順序控制繼電器相關,在編寫順序控制流程圖中使用。它可以位、字節、字和雙字的方式進行訪問,其地址符號為S,比如 S3.1、SB6等。
(3)程序結構
在S7-200 SMARTCPU的內部運行著兩類程序:操作系統和用戶程序。操作系統是廠家設計的、在出廠前固化到 CPU 內部的程序。操作系統是 PLC 的大管家,擔負著管理統內存、執行用戶程序、處理中斷、狀態診斷及各種通信處理。用戶程序是由用戶編寫的用來完成某個或某些功能的程序。用戶程序只有被操作系統調用后才能執行
從用戶的角度來看,S7-200 SMART 的程序結構由三部分組成:主程序、子程序和中斷程序。主程序的名稱為“MAIN”,又稱為組織塊1(OB1),它是操作系統調用用戶程用的接口,類似于C語言的 Main 函數。主程序中的指令按照從上到下的方向順序執行,在每
一個循環掃描周期中,只能被執行一次。
在 PLC 的程序設計中,有一些功能代碼可能需要反復調用。比如,現場有五個相同的電機,其控制方式完全相同。如果每一個電機都單獨寫一段控制代碼,會增加很多工作量,有時候甚至是不太可能完成(想象下如果是五十個電機呢?)。而且這樣做對于代碼的閱話和日后的維護都非常不方便。這里,我們有一種簡單的方案。S7-200 SMART 支持模塊化程序設計。我們可以把常用的功能代碼(比如上述例子中的電機控制)寫成一個子程序,根據需要設計形參。子程序可以被主程序調用而執行,主程序在調用子程序時,根據實際情況,為其形參賦不同的實參值。
子程序中還可以調用其他子程序,這就是嵌套調用。S7-200 SMART CPU 支持最大嵌套深度為8層(從主程序開始算)。子程序的另一個好處是增加了程序的可移植型。
中斷程序也是操作系統與用戶程序的一種接口,用戶把中斷處理的代碼寫在中斷程序中。當中斷發生時,操作系統調用相應的中斷程序,而執行中斷處理。
S7-200 SMART 中,主程序、子程序和中斷程序都被稱為程序組織單元(POU)。
注意:OB 是 Organization Block 的縮寫,中文翻譯為“組織塊”。