共享數據塊(DB)
與邏輯塊不同,在數據塊中沒有STEP 7的指令。它們用于存放用戶數據,換句話說,數據塊中存放用戶程序工作時所需的變量數據。共享數據塊用于存放所有其它塊都可以訪問的用戶數據。
DB的大小可以不同。關于所允許的最大尺寸,請參考用戶所用CPU的描述。
用戶可以用任意方式來建立數據塊的結構,以適合其不同的需求。
在用戶程序中的共享數據塊
如果某個邏輯塊(FC,FB或OB)被調用,則它可以臨時占用臨時本地數據區的空間(L堆棧)。除了這個本地數據區,邏輯塊還可以打開一個DB形式的存儲區。與局域數據區中的數據不同,當相應的邏輯塊運行結束從而DB關閉時,在DB中的數據不會被刪除。
每個FB、FC或OB可從共享DB中讀取數據,或將數據寫入共享DB。當該DB退出時,這些數據保持在DB中。
一個共享DB和一個背景DB可同時打開。下圖所示為訪問數據塊的不同方法。
數據塊的結構化存取
Structured Access to Data Blocks
結構化存取使用在數據塊中聲明的變量的標識符。能夠將變量賦值給任何同類型的變量。
通過指定DB名和用點分隔的簡單變量和名字來引用在數據塊中的變量。
簡單變量表示在DB的聲明中指定為基本或復雜數據類型的變量。
如果使用一個BLOCK_DB類型的參數或轉換函數WORD_TO_BLOCK_DB的結果來初始存取數據塊,只通順是絕對方式或索引方式存取,不能用結構方式存取。
例子(Example)
//在FB10的聲明部分:
VAR
Result: STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
END_VAR
//用戶定義數據類型UDT1
TYPE UDT1 STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
//帶用戶定義數據類型的DB20:
DB20
UDT1
BEGIN 。。。
//不帶用戶定義數據類型的DB30:
DB30 STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
BEGIN 。。。
//用以下存取的功能塊:
。。
FB10.DB10();
RESWORD_A := DB10.Result.RES2;
RESWORD_B := DB20.RES2;
RESWORD_C := DB30.RES2;
編輯:jq
-
cpu
+關注
關注
68文章
10882瀏覽量
212220 -
數據
+關注
關注
8文章
7085瀏覽量
89204 -
DB
+關注
關注
0文章
48瀏覽量
22734 -
STEP7
+關注
關注
4文章
103瀏覽量
32632
原文標題:西門子SCL-數據塊(DB)的結構化存取
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論