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