今天學習
資料塊
資料塊定義在S7CPU的儲存器中,使用者可在儲存器中建立一個或多個數據塊。每個資料塊可大可小,但CPU對資料塊數量及資料總量有限制。
資料塊(DB)可用來儲存使用者程式中邏輯塊的變數資料(如:數值)。與臨時資料不同,當邏輯塊執行結束或資料塊關閉時,資料塊中的資料保持不變。
使用者程式可以位、位元組、字或雙字操作訪問資料塊中的資料,可以使用符號或絕對地址。
資料的分類
共享資料塊又稱全域性資料塊。用於儲存全域性資料,所有邏輯塊(0B、FC、FB)都可以訪問共享資料塊儲存的資料。
背景資料塊用作“私有儲存器區”,即用作功能塊(FB)的“儲存器”。FB的引數和靜態變數安排在它的背景資料塊中。背景資料塊不是由使用者編輯的,而是由編輯器生成的。
使用者定義資料塊(DBofType)是以UDT為模板所生成的資料塊。建立使用者定義資料塊(DB ofType)之前,必須先建立一個使用者定義資料型別,如UDT1,並在LAD/STL/FBD S7程式編輯器內定義。
資料塊的資料結構
在STEP7中資料塊的資料型別可以採用基本資料型別、複雜資料型別或使用者定義資料型別(UDT)。
基本資料型別
根據IEC1131-3定義,長度不超過32位,可利用STEP7基本指令處理,能完全裝入S7處理器的累加器中。基本資料型別包括:
位資料型別:BOOL、BYTE、WORD、DWORD、CHAR
數字資料型別:INT、DINT、REAL
定時器型別:S5TIME、TIME、DATE、TIME_OF_DAY
複雜資料型別
複雜資料型別只能結合共享資料塊的變數宣告使用。複雜資料型別可大於32位,用裝入指令不能把複雜資料型別完全裝入累加器,一般利用庫中的標準塊(“IEC”S7程式)處理複雜資料型別。複雜資料型別包括:
時間(DATE_AND_TIME)型別
陣列(ARRAY)型別
結構(STRUCT)型別
字串(STRING)型別
使用者定義資料型別(UDT)
STEP7允許利用資料塊編輯器,將基本資料型別和複雜資料型別組合成長度大於32位使用者定義資料型別(UDT:User-Defined dataType)。使用者定義資料型別不能儲存在PLC中,只能存放在硬碟上的UDT塊中。可以用使用者定義資料型別作“模板”建立資料塊,以節省錄入時間。可用於建立結構化資料塊、建立包含幾個相同單元的矩陣、在帶有給定結構的FC和FB中建立區域性變數。
建立資料塊
在STEP7中,為了避免出現系統錯誤,在使用資料塊之前,必須先建立資料塊,並在塊中定義變數(包括變數符號名、資料型別以及初始值等)。資料塊中變數的順序及型別決定了資料塊的資料結構,變數的數量決定了資料塊的大小。資料塊建立後,還必須同程式塊一起下載到CPU中,才能被程式塊訪問。
訪問資料塊
在使用者程式中可能存在多個數據塊,而每個資料塊的資料結構並不完全相同,因此在訪問資料塊時,必須指明資料塊的編號、資料型別與位置。如果訪問不存在的資料單元或資料塊,而且沒有編寫錯誤處理OB塊,CPU將進入STOP模式。
定址資料塊
訪問資料塊
在STEP7中可以採用傳統訪問方式,即先開啟後訪問;也可以採用完全表示的直接訪問方式。
開啟並訪問共享資料塊
訪問資料塊
用指令“OPNDB...”開啟共享資料塊(自動關閉之前開啟的共享資料塊),如果DB已經開啟,則可用裝入(L)或傳送(T)指令訪問資料塊。
開啟並訪問背景資料塊
直接訪問資料塊
所謂直接訪問資料塊,就是在指令中同時給出資料塊的編號和資料在資料塊中的地址。可以用絕對地址,也可以用符號地址直接訪問資料塊。
用絕對地址直接訪問資料塊
用符號地址直接訪問資料塊