簡介
“OPN DI”或“CDB”指令將數(shù)據(jù)塊加載到 DI 寄存器中。在 S7-300/400 中,此處打開的塊將作為背景數(shù)據(jù)塊。FB 塊接口的局部形參的后續(xù)符號尋址(IN、OUT、InOut、Static)將不再對在塊調(diào)用中指定為背景數(shù)據(jù)塊的數(shù)據(jù)塊進(jìn)行尋址,而是對位于 DI 寄存器中的數(shù)據(jù)塊進(jìn)行尋址。要隨后對塊接口中的局部形參進(jìn)行符號尋址,則必須將背景數(shù)據(jù)塊加載到 DI 寄存器中。
即使在執(zhí)行指令 "L AR2", "+ AR" 和 "TAR" 之后,S7-300/400 中也無法從塊接口對形參進(jìn)行符號尋址,這是由于這些指令破壞了參數(shù)的訪問方式。
S7-1500 中已修正該錯誤:如果在 S7-1500 中對塊接口中的局部形參進(jìn)行符號尋址(例如,使用指令 L #myIn),則需始終訪問塊調(diào)用中指定為背景數(shù)據(jù)塊的數(shù)據(jù)塊。雖然 OPN DI L AR2, +AR2, TDB, TAR 指令將更改 DI 或地址寄存器中的數(shù)據(jù),但在對局部形參進(jìn)行尋址時不會對這些寄存器中的數(shù)據(jù)進(jìn)行判斷。
對背景數(shù)據(jù)塊中局部變量訪問的移植
移植過程不會更改已編程的訪問方式。但是,如果更改了引用程序中的 OPN DI, L AR2, +AR2, TDB, TAR, 指令,則該程序的定義可能會發(fā)生變更。
要恢復(fù)最初的程序定義,則必須手動更改該程序。通常無需再通過寄存器對數(shù)據(jù)進(jìn)行尋址。但是,可以使用背景數(shù)據(jù)塊中的 ARRAY 間接索引 ARRAY 中的元素。
示例 1
以下示例說明如何修改 OPN DI 指令的定義:
STL | 說明 |
---|---|
L #MyIn1 L #MyIn2 +I T #MyOut3 |
“L”和“T”指令將尋址塊接口中所聲明的局部變量。變量的值位于塊調(diào)用中所指定的背景數(shù)據(jù)塊中。 |
OPNDI "MyDB" L #MyIn1 L #MyIn2 +I T #MyOut3 |
全局?jǐn)?shù)據(jù)塊 "MyDB" 將寫入 DI 寄存器中。 移植前,“L”和“T”指令將尋址 "MyDB" 中所聲明的變量。 遷移后,“L”和“T”指令將尋址塊接口中所聲明的變量。在 S7-1500 中,進(jìn)行訪問時不會判斷 DI 寄存器中的值。 |
示例 2 以下示例說明了如何修改 LAR2 指令的定義:
STL | 說明 |
---|---|
L P#M23.0 | |
LAR2 | 移植前,對 AR2 的分配將破壞參數(shù)的訪問方式。 |
L #MyIn1 | 移植前,無法對 "MyIn1" 進(jìn)行訪問或會發(fā)生訪問錯誤。 移植后,可正常對形參 "MyIn1" 進(jìn)行訪問操作。 |
L IW [AR2, P#1.0] | 訪問 %IW24.0 |
A [AR2, P#0.4] | 訪問 %M23.4 |
示例 3 以下示例介紹了在 S7-1500 中如何對 DB 變量進(jìn)行間接尋址而不使用地址寄存器:
STL | 說明 |
---|---|
OPN "MyDB" L #index LAR1 L DBW [AR1 , P#10.0] | 移植前,使用區(qū)域內(nèi)部的間接寄存器進(jìn)行尋址。并將變量值 (#index) 加載到地址寄存器 1 中。根據(jù)加載的值,“MyDB”中的一個數(shù)據(jù)字將加載到累加器 1 中。 |
L "MyDB".MyArray1[#index] | 移植后,可以將數(shù)據(jù)值存儲在 ARRAY 的“MyDB”中。 并使用輸入?yún)?shù)“#index”對 ARRAY 中的各元素建立不同的索引。 |
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5421瀏覽量
123319 -
存儲器
+關(guān)注
關(guān)注
38文章
7634瀏覽量
166398 -
STL
+關(guān)注
關(guān)注
0文章
86瀏覽量
18722 -
累加器
+關(guān)注
關(guān)注
0文章
50瀏覽量
9630
原文標(biāo)題:西門子博途:在 STL 中存取背景數(shù)據(jù)塊
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
DSP如何在L2CACHE中區(qū)分哪一塊數(shù)據(jù)是代碼,需要載入到L1PCACHE中,哪一塊是數(shù)據(jù),需要載入到L1DCACHE中呢?
如何在塊存儲器中寫入和讀取矩陣?
數(shù)據(jù)結(jié)構(gòu)與STL
如何加密S7 -GRAPH 塊?
數(shù)據(jù)塊DB的結(jié)構(gòu)和應(yīng)用實(shí)例分析
請問怎樣去加密S7-GRAPH塊呢
發(fā)動機(jī)組控制系統(tǒng)的多重背景數(shù)據(jù)塊應(yīng)用
STL的概述

西門子博圖中帶有背景數(shù)據(jù)塊的基本指令不同實(shí)例的區(qū)別和應(yīng)用

評論