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