裝載存儲(chǔ)區(qū)可能是cpu模塊中的部分ram、內(nèi)置的e2prom或選用的可拆卸flasheprom( feprom)卡,用于保存不包含符號(hào)地址和注釋的用戶程序和系統(tǒng)數(shù)據(jù)(組態(tài)、連接和模塊參數(shù)等)。
有的cpu有集成的裝載存儲(chǔ)器,有的可以使用微存儲(chǔ)器卡(mmc)來(lái)進(jìn)行擴(kuò)展,cpu31xc的用戶程序只能裝入插入式的mmc。
斷電時(shí)數(shù)據(jù)保存在mmc存儲(chǔ)器中,因此,數(shù)據(jù)塊的內(nèi)容基本上被永久保留。
下載程序時(shí),用戶程序(邏輯塊和數(shù)據(jù)塊)被下載到cpu的裝載存儲(chǔ)器,cpu把可執(zhí)行部分復(fù)制到工作存儲(chǔ)器,而符號(hào)表和注釋則保存在編程設(shè)備中。
工作存儲(chǔ)區(qū)占用cpu模塊中的部分ram,它是集成的高速存取的ram存儲(chǔ)器,用于存放cpu運(yùn)行時(shí)所執(zhí)行的用戶程序和數(shù)據(jù)。為了保證程序執(zhí)行的快速性和不過(guò)多地占用工作存儲(chǔ)器,在執(zhí)行時(shí)只把與程序執(zhí)行有關(guān)的塊裝人工作存儲(chǔ)區(qū)。
cpu工作存儲(chǔ)區(qū)也為程序塊的調(diào)用安排了一定數(shù)量的臨時(shí)本地?cái)?shù)據(jù)存儲(chǔ)區(qū)(或稱l堆棧),用來(lái)存儲(chǔ)程序塊被調(diào)用時(shí)的臨時(shí)數(shù)據(jù),訪問(wèn)局域數(shù)據(jù)比訪問(wèn)數(shù)據(jù)塊中的數(shù)據(jù)更快。用戶生成塊時(shí),可以表明臨時(shí)變量( temp),它們只在執(zhí)行該塊時(shí)有效,執(zhí)行完后就被覆蓋了。也就是說(shuō),l堆棧中的數(shù)據(jù)在程序塊工作時(shí)有效,并一直保持,當(dāng)新的塊被調(diào)用時(shí),l堆棧將進(jìn)行重新分配。
在fb、fc或ob運(yùn)行時(shí)設(shè)定,將塊變量聲明表中聲明的臨時(shí)變量存在臨時(shí)本地?cái)?shù)據(jù)存儲(chǔ)區(qū)(l堆棧)。l堆棧提供空間以傳送某些類(lèi)型參數(shù)和存放梯形圖的中間結(jié)果。塊結(jié)束執(zhí)行時(shí),臨時(shí)本地存儲(chǔ)區(qū)再行分配,不同的cpu提供不同數(shù)量的臨時(shí)本地存儲(chǔ)區(qū)(l堆棧)。
語(yǔ)句表( stl)程序中的數(shù)據(jù)塊可以被標(biāo)識(shí)為“與執(zhí)行無(wú)關(guān)”(unliniked),它們只是存儲(chǔ)在裝載存儲(chǔ)器中。有必要時(shí),可以用sfc 20“blkmov”將它們復(fù)制到工作存儲(chǔ)區(qū)。
復(fù)位cpu的存儲(chǔ)器時(shí),ram中的程序被清除。
系統(tǒng)存儲(chǔ)區(qū)為不能擴(kuò)展的ram,是cpu為用戶程序提供的存儲(chǔ)器組件,被劃分為若干個(gè)地址區(qū)域,分別用于存放不同的操作數(shù)據(jù),如輸入過(guò)程映像、輸出過(guò)程映像、位存儲(chǔ)器、定時(shí)器和計(jì)數(shù)器、塊堆棧(b堆棧)、中斷堆棧(i堆棧)和診斷緩沖區(qū)等。
系統(tǒng)存儲(chǔ)區(qū)可通過(guò)指令在相應(yīng)的地址區(qū)內(nèi)對(duì)數(shù)據(jù)直接進(jìn)行尋址。
(1)輸入/輸出(i/o)過(guò)程映像表
在每次掃描循環(huán)開(kāi)始時(shí),cpu讀取數(shù)字量輸入模塊的外接輸入電路的狀態(tài),并將它們的存放過(guò)程映像輸入表中。在掃描循環(huán)中,用戶程序計(jì)算輸出值,并將它們的存放過(guò)程映像輸出表。在掃描循環(huán)結(jié)束時(shí),將過(guò)程映像輸出表的內(nèi)容寫(xiě)入數(shù)字量輸出模塊。
用戶程序訪問(wèn)plc的輸入(i)和輸出(o)地址區(qū)時(shí),不是去讀/寫(xiě)數(shù)字信號(hào)模塊中的信號(hào)狀態(tài),而是訪問(wèn)cpu中的過(guò)程映像區(qū)。
i和o均可以按位、字節(jié)、字和雙字來(lái)存取,如10.0、ibo、iwo和ido。
與直接訪問(wèn)i/o模塊相比,訪問(wèn)過(guò)程映像表可以保證在整個(gè)程序周期內(nèi),過(guò)程映像的狀態(tài)始終一致。在程序執(zhí)行過(guò)程中,即使接在輸入模塊的外接輸入電路的狀態(tài)發(fā)生了變化,過(guò)程映像表中的信號(hào)狀態(tài)仍然保持不變,直到下一個(gè)循環(huán)被刷新。由于過(guò)程映像保存在cpu的系統(tǒng)存儲(chǔ)器中,該問(wèn)速度比直接訪問(wèn)i/o模塊快得多。
在用戶程序中輸入過(guò)程映像的標(biāo)識(shí)符為i,是plc接收外部輸入數(shù)字量信號(hào)的窗口。輸入端可以外接常開(kāi)觸點(diǎn)或常閉觸點(diǎn),也可以接多個(gè)觸點(diǎn)組成的串并聯(lián)電路。plc將外部電路的通/斷狀態(tài)讀入并存儲(chǔ)在輸入過(guò)程映像中。外部輸入電路接通時(shí),對(duì)應(yīng)的輸入過(guò)程映像為on(1狀態(tài));反之為of(0狀態(tài))。在梯形圖中,可以多次使用輸入過(guò)程映像的常開(kāi)觸點(diǎn)和常閉觸點(diǎn)。
在用戶程序中輸出過(guò)程映像的標(biāo)識(shí)符為0,在循環(huán)周期結(jié)束時(shí),cpu將輸出過(guò)程映像的數(shù)據(jù)傳送給輸出模塊,再由后者驅(qū)動(dòng)外部負(fù)載。如果梯形圖00.0的線圈“得電”,繼電器型輸出模塊中對(duì)應(yīng)的硬件繼電器的常開(kāi)觸點(diǎn)閉合,使接在00.0對(duì)應(yīng)的輸出端子的外部負(fù)載工作。輸出模塊中的每一個(gè)硬件繼電器僅有一對(duì)常開(kāi)觸點(diǎn),但是在梯形圖中,每一個(gè)輸出位的常開(kāi)觸點(diǎn)和常閉觸點(diǎn)都可以多次使用。
s7-300 cpu的過(guò)程映像區(qū)的大小是固定的,s7-400 cpu可以將過(guò)程映像劃分為最多15個(gè)區(qū)段,這意味著如果需要,可以獨(dú)立于循環(huán)來(lái)刷新過(guò)程映像表的某些區(qū)段。用step 7指定的過(guò)程映像區(qū)段中的每一個(gè)i/o地址不再屬于081過(guò)程映像i/o表。需要定義哪些i/o模塊地址屬于哪些過(guò)程映像區(qū)段。
可以在用戶程序中用sfc(系統(tǒng)功能)刷新過(guò)程映像。sfc26“updat_pi”用來(lái)刷新整個(gè)或部分過(guò)程映像輸入表,sfc27“updat_po”用來(lái)刷新整個(gè)或部分過(guò)程映像輸出表。
某些cpu也可以調(diào)用ob(組織塊)由系統(tǒng)自動(dòng)地對(duì)指定的過(guò)程映像分區(qū)刷新。
(2)內(nèi)部存儲(chǔ)器標(biāo)志位(m)存儲(chǔ)器區(qū)
內(nèi)部存儲(chǔ)器標(biāo)志位(m)用來(lái)保存控制邏輯的中間操作狀態(tài)或其他控制信息。雖然名為“位存儲(chǔ)器區(qū)”,表示按位存取,但是也可以按字節(jié)、字或雙字來(lái)存取。
(3)定時(shí)器(t)存儲(chǔ)器區(qū)
定時(shí)器相當(dāng)于繼電器系統(tǒng)中的時(shí)間繼電器。給定時(shí)器分配的字用于存儲(chǔ)時(shí)間基值和時(shí)間值(0~ 999),時(shí)間值可以用二進(jìn)制或bcd碼方式讀取。
(4)計(jì)數(shù)器(c)存儲(chǔ)器區(qū)
計(jì)數(shù)器用來(lái)累計(jì)其計(jì)數(shù)脈沖上升沿的次數(shù),有加計(jì)數(shù)器、減計(jì)數(shù)器和加/減計(jì)數(shù)器。給計(jì)數(shù)器分配的字用于存儲(chǔ)計(jì)數(shù)當(dāng)前值(0~ 999),計(jì)數(shù)值可以用二進(jìn)制或bcd碼方式讀取。
(5)數(shù)據(jù)塊
數(shù)據(jù)塊用來(lái)存放程序數(shù)據(jù)信息,分為可被所有邏輯塊公用的“共享”數(shù)據(jù)塊(db,簡(jiǎn)稱數(shù)據(jù)塊)和被功能塊( fb)特定占用的“背景”數(shù)據(jù)塊(di)。
db為共享數(shù)據(jù)塊,dbx是共享數(shù)據(jù)塊中的數(shù)據(jù)位,dbb、dbw和dbd分別是數(shù)據(jù)塊中的數(shù)據(jù)字節(jié)、數(shù)據(jù)字和數(shù)據(jù)雙字。
di為背景數(shù)據(jù)塊,dix是背景數(shù)據(jù)塊中的數(shù)據(jù)位,dib、diw和did分別是背景數(shù)據(jù)塊中的數(shù)據(jù)字節(jié)、數(shù)據(jù)字和數(shù)據(jù)雙字。
(6)診斷緩沖區(qū)
診斷緩沖區(qū)是系統(tǒng)狀態(tài)列表的一部分,包括系統(tǒng)診斷事件和用戶定義的診斷事件的信息。這些信息按它們出現(xiàn)的順序排列,第一行中是最新的事件。
診斷事件包括模塊的故障、寫(xiě)處理的錯(cuò)誤、cpu中的系統(tǒng)錯(cuò)誤、cpu的運(yùn)行模式切換錯(cuò)誤、用戶程序中的錯(cuò)誤和用戶用系統(tǒng)功能sfc 52定義的診斷錯(cuò)誤等。