數據塊(DB)的結構
定義(Definition)
在一個程序中,可以被所有塊存取的特定用戶數據包含在數據塊.每個FB、FC或OB均能讀寫這些數據塊。
有兩種數據塊類型:
數據塊(Data blocks)
能被所有S7程序的邏輯塊存取。每個FB、FC或OB讀或寫包含在這些數據塊里的數據。
指派給一個FB的數據塊(實例數據塊)(Data blocks assigned to an FB (instance DB))
實例數據塊是指派給特定功能塊的數據塊。它們功能塊的指定的本地數據。當FB被用戶程序調用時,這些數據塊被S7-SCL編譯器自動建立。
句法(Syntax)
DB標識符(DB Identifier)
在關鍵字"DATA_BLOCK"之后,鍵入關鍵字DB作為數據塊的標識符,后面跟一個塊號或數據塊的符號名,塊號是1到65533中間的值。
例子(Examples:)
DATA_BLOCK DB20
DATA_BLOCK MEASRANGE
數據塊聲明部分(DB Declaration Section)
在DB的聲明部分定義DB的數據結構。有兩種方法做這件事,如下:
通過指派到用戶定義數據類型(By assigning a user-defined data type)
在此,指派一個先在程序中定義的用戶數據類型的標識符,然后數據塊取得該UDT的結構。你可以在數據塊的賦值部分指派變量的初始值。
通過定義STRUCT(結構)數據類型(By defining a STRUCT data type)
在STRUCT數據類型的說明中,指定了存儲在DB中的每個變量的數據類型,可能也給出了初始值。
例子(Example)
DATA_BLOCK DB20
STRUCT // 聲明部分
VALUE:ARRAY[1..100] OF INT;
END_STRUCT
BEGIN // 賦值部分開始
:
END_DATA_BLOCK// 數據塊結束
數據塊賦值部分(DB Assignment Section)
在賦值部分,能夠改寫在聲明部分聲明的數據,以便指定實際應用所需的特定值。
賦值部分用關鍵字BEGIN開始,然后包含一系列賦值語句。
當指派初始值(初始化)時, 鍵入屬性和注釋采用STL句法。關于如何寫常量、屬性和注釋,使用STL在線幫助或參考STEP 7的資料。
例子(Example)
// 帶指定STRUCT數據類型的數據塊
DATA_BLOCK DB10
STRUCT // 帶初始值聲明的數據聲明
VALUE :ARRAY [1..100] OF INT := 100 (1) ;
SWITCH:BOOL := TRUE ;
S_WORD:WORD := W#16#FFAA ;
S_BYTE:BYTE := B#16#FF ;
S_TIME:S5TIME:= S5T#1h30m10s ;
END_STRUCT
BEGIN// 賦值部分
// 為特定的數組元素賦值
VALUE [1] := 5;
VALUE [5] := -1;
END_DATA_BLOCK
// 帶用戶定義數據類型指定的數據塊
DATA_BLOCK DB11
UDT 51
BEGIN
END_DATA_BLOCK
審核編輯 :李倩
-
編譯器
+關注
關注
1文章
1642瀏覽量
49286 -
變量
+關注
關注
0文章
613瀏覽量
28466 -
數據類型
+關注
關注
0文章
236瀏覽量
13663
原文標題:數據塊(DB)的結構
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
服務器數據恢復—RAID5陣列兩塊硬盤離線崩潰,數據如何起死回生?
![服務器<b class='flag-5'>數據</b>恢復—RAID5陣列兩<b class='flag-5'>塊</b>硬盤離線崩潰,<b class='flag-5'>數據</b>如何起死回生?](https://file1.elecfans.com/web3/M00/01/E0/wKgZO2dZH-uAM31dAADa9_os3zs738.png)
ADS1282數據手冊中,THD的單位是dB,這個單位指的是dBc還是dBFS呢?
使用TPA3128d2,增益上選擇了26DB,測試數據時發現只有22DB是為什么?
TLV320AIC1110圖上3塊標紅的地方增益如何設定,是固定的還是可調的,固定的或可調的范圍是多少DB?
服務器數據恢復—Raid5陣列兩塊硬盤指示燈亮黃色的數據恢復案例
![服務器<b class='flag-5'>數據</b>恢復—Raid5陣列兩<b class='flag-5'>塊</b>硬盤指示燈亮黃色的<b class='flag-5'>數據</b>恢復案例](https://file1.elecfans.com/web2/M00/0A/1C/wKgaomcHaS2ABy14AACkSjR1p-g743.png)
用一塊buf634的緩沖器衰減12db,用了兩塊衰減了10db,為什么會衰減啊?
ths3091帶寬只能到達7Mhz就已經達到3DB衰減,為什么?
雙向觸發二極管db4與db3的區別
服務器數據恢復—V7000存儲多塊硬盤掉線導致存儲崩潰的數據恢復案例
![服務器<b class='flag-5'>數據</b>恢復—V7000存儲多<b class='flag-5'>塊</b>硬盤掉線導致存儲崩潰的<b class='flag-5'>數據</b>恢復案例](https://file.elecfans.com/web2/M00/6C/EC/poYBAGMzwF6AZskyAAF7vwk3l70303.png)
評論