在上一章節(jié)中我們對梯形圖數(shù)字指令進(jìn)行了系統(tǒng)學(xué)習(xí),詳情請參見:西門子PLC控制器技術(shù)之九:梯形圖數(shù)字指令 http://www.itdecent.cn/p/29746ea94511,了解了常見數(shù)據(jù)類型、裝載與傳送指令、S5計(jì)數(shù)器、S5定時(shí)器、比較指令以及基本數(shù)學(xué)函數(shù)等內(nèi)容。
通過前面章節(jié)的學(xué)習(xí),我們已經(jīng)能夠創(chuàng)建自己項(xiàng)目的硬件組態(tài)、找到現(xiàn)場設(shè)備的I/O點(diǎn),對CPU屬性等參數(shù)進(jìn)行相關(guān)設(shè)置,編輯項(xiàng)目所需要的符號(hào)表以及理解了CPU運(yùn)行原理機(jī)制,能夠編寫位指令及數(shù)字指令程序,本章將和大家學(xué)習(xí)SIMATIC S7 PLC編程中的重要內(nèi)容——數(shù)據(jù)塊。
數(shù)據(jù)存儲(chǔ)區(qū)
常見數(shù)據(jù)存儲(chǔ)區(qū)域除了位存儲(chǔ)器M,還有輸入輸出區(qū)I/O,過程映像區(qū)PII/PIQ,臨時(shí)數(shù)據(jù)L,以及我們今天要學(xué)習(xí)的數(shù)據(jù)塊DB。
在現(xiàn)場實(shí)際項(xiàng)目中,你會(huì)發(fā)現(xiàn)大部分的數(shù)據(jù)不是存儲(chǔ)在我們熟悉的位存儲(chǔ)器中,而是大量應(yīng)用數(shù)據(jù)塊。
主要原因是由于數(shù)據(jù)塊容量大、數(shù)據(jù)可永久保持(M點(diǎn)掉電易失)并且支持更多更復(fù)雜的數(shù)據(jù)類型。
STEP7中的基本數(shù)據(jù)類型
STEP7中的基本數(shù)據(jù)類型位數(shù)不超過32bit,主要分為以下三類:
? 位數(shù)據(jù)類型 (BOOL, BYTE, WORD, DWORD, CHAR)
? 數(shù)學(xué)數(shù)據(jù)類型 (INT, DINT, REAL)
? 定時(shí)器類型 (S5TIME, TIME, DATE, TIME_OF_DAY)
STEP7中的復(fù)雜數(shù)據(jù)類型
STEP7中的復(fù)雜數(shù)據(jù)類型位數(shù)可以長于32位,主要有以下數(shù)據(jù)分類:
? 時(shí)間 (DATE_AND_TIME)
? 矩陣 (ARRAY)
? 結(jié)構(gòu) (STRUCT)
? 字符串 (STRING)
? 用戶定義數(shù)據(jù)類型 (UDT )
對于復(fù)雜數(shù)據(jù)類型,一般需在數(shù)據(jù)塊中聲明使用。
對于STRING字符串變量,其長度為聲明字符數(shù)+2個(gè)字節(jié)長度,多出來的兩個(gè)字節(jié)一個(gè)盛放最大盛放量MAX,一個(gè)盛放實(shí)際盛放量ACT。
創(chuàng)建數(shù)據(jù)塊
那么,如何創(chuàng)建數(shù)據(jù)塊呢?具體方法如下圖所示;
注意,創(chuàng)建數(shù)據(jù)塊的時(shí)候需要選擇數(shù)據(jù)塊類型,如果選擇Shared DB,則是創(chuàng)建全局DB塊;如果選擇Instance DB,則是為某一個(gè)FB塊創(chuàng)建其背景DB塊。如果你選擇的是一個(gè)DB of type類型,則是創(chuàng)建一個(gè)用戶自定義數(shù)據(jù)類型UDT。
尋址數(shù)據(jù)塊單元
數(shù)據(jù)塊中的數(shù)據(jù)應(yīng)該如何尋址呢,概括起來主要有兩種方法:第一種是絕對地址尋址,對于DB塊來講,即為“地址.地址”,比如DB1.DBX20.0;第二種是符號(hào)尋址,為“名字.名字”,這就需要先給DB塊命名,然后給數(shù)據(jù)命名,比如DB1命名為My_Data,DBX20.0命名為S1,則符號(hào)尋址為“My_Data”.S1
以上就是本章專題的主要內(nèi)容,思考以下幾個(gè)問題,可以幫您鞏固所學(xué)內(nèi)容:
- 為什么要采用數(shù)據(jù)塊?
- 怎樣訪問數(shù)據(jù)塊?