西門子S7-300高級(jí)編程培訓(xùn)4間接尋址和地址寄存器[業(yè)界研究]_第1頁(yè)
西門子S7-300高級(jí)編程培訓(xùn)4間接尋址和地址寄存器[業(yè)界研究]_第2頁(yè)
西門子S7-300高級(jí)編程培訓(xùn)4間接尋址和地址寄存器[業(yè)界研究]_第3頁(yè)
西門子S7-300高級(jí)編程培訓(xùn)4間接尋址和地址寄存器[業(yè)界研究]_第4頁(yè)
西門子S7-300高級(jí)編程培訓(xùn)4間接尋址和地址寄存器[業(yè)界研究]_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、間接尋址及地址寄存器指令,L W AR1, P#200.0,- - - -,1,2,9,10,#Ini_Value,#Par_Pointer,#Counter,?,?,?,STEP 7 中可能的尋址方式,尋址方式,直接尋址,間接尋址,絕對(duì)尋址,符號(hào)尋址,存儲(chǔ)器間接尋址,寄存器間接尋址,示例: A I 4.0A Mot_onOPN DBMW10A IMD30A IAR1,P#0.0A AR1,P#0.0 L IW10L #NumSP TruntimeL IWNumberL IDAR1,P#5.0T WAR1,P#0.0,16位指針(DB, T, C),32位指針內(nèi)部區(qū)域,32位指針內(nèi)部區(qū)域,32

2、位指針交叉區(qū)域,變量直接尋址,存儲(chǔ)單元位置 (示例),I,37.4,地址,附加訪問寬度,字節(jié),字,雙字,含義,輸入,Q,27.7,字節(jié),字,雙字,輸出,PIB,655,字節(jié),字,雙字,外設(shè)輸入,PQB,653,字節(jié),字,雙字,外設(shè)輸出,M,55.0,字節(jié),字,雙字,位(Bit)存儲(chǔ)器,T,114,-,定時(shí)器,C,13,-,計(jì)數(shù)器,DBX,2001.6,字節(jié)(DBB), 字(DBW), 雙字(DBD),通過DB寄存器尋址的數(shù)據(jù),DIX,406.1,字節(jié)(DIB), 字(DIW), 雙字(DID),通過DI寄存器尋址的數(shù)據(jù),L,88.5,字節(jié)(LB), 字(LW), 雙字 (LD),本地?cái)?shù)據(jù)堆棧,

3、DB中地址標(biāo)識(shí)符直接尋址,打開的數(shù)據(jù)塊,在數(shù)據(jù)塊中裝載和傳遞,OPN DB 19 OPN Values OPN DI 20 組合指令 (包含OPN D DB.),L DBB 1裝載數(shù)據(jù)字節(jié)1 L DBW 2裝載數(shù)據(jù)字2(字節(jié)2/3) L 5裝載數(shù)字5 T DBW 4傳遞到字4 L A裝載ASCII字符A L DIB28裝載數(shù)據(jù)字節(jié)28 =I比較 A DBX 0.0從0字節(jié)的第0位開始掃描 L DB19.DBW4從DB 19中裝載數(shù)據(jù)字4 L “Values”.Number_1符號(hào)訪問變量 Number_1. DB19具有變量名“Values” A DB10.DBX4.7從DB 10 的第4個(gè)字

4、節(jié)的第7位開始掃描,用于DB寄存器的指令: CDB:交換DB寄存器內(nèi)容 將DB寄存器內(nèi)容裝載到ACCU1中 L DBNO (將打開的DB號(hào)裝載到ACCU1中) L DINO (將打開的DI號(hào)裝載到ACCU1中) 裝載數(shù)據(jù)塊長(zhǎng)度 L DBLG (將打開的DB的長(zhǎng)度/字節(jié)裝載到ACCU1中) L DILG (將打開的DI的長(zhǎng)度/字節(jié)裝載到ACCU1中),在程序中分析數(shù)據(jù)塊DB相關(guān)信息,指令執(zhí)行前:,指令執(zhí)行后:,CDB,123,24,24,123,DB寄存器,DI寄存器,字格式的16位指針(用于對(duì)DB、T、C進(jìn)行尋址) L 11 T MW 60 OPN DBMW 60 OPN DB 11 雙字格式

5、的32位指針(用于對(duì)I、Q、M.進(jìn)行尋址) L P#24.0 T MD 50 L I W MD50 L IW 24 存儲(chǔ) 訪問 地址 區(qū)域?qū)挾?存儲(chǔ)器間接尋址,用于存儲(chǔ)器間接尋址的指針結(jié)構(gòu),16位指針的結(jié)構(gòu):為0 . 65 535 之間的無符號(hào)整數(shù),0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,20,215,27,146,32位指針的結(jié)構(gòu)(內(nèi)部區(qū)域):,B,B,B,B,B,B,B,B,B,B,B,B,B,X,X,X,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,0,0,0

6、,0,0,0,0,0,0,0,0,0,0,B,B,B,31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16,20,22,位地址,字節(jié)地址(無符號(hào)整數(shù)),20,215,未定義,裝載32位指針常量(內(nèi)部區(qū)域): L P#25.3 (P = 指針,字節(jié)地址= 25,位地址:3),存儲(chǔ)器間接尋址的特性,用于存儲(chǔ)16位和32位指針的地址區(qū)域: 位(Bit)存儲(chǔ)區(qū)(絕對(duì)尋址或符號(hào)尋址) 例如:OPN DBMW30,OPN DI“Motor_1” 等。A IMD30,T QDSpeed_1,等) 本地?cái)?shù)據(jù)堆棧(絕對(duì)尋址或符號(hào)尋址,例如: OPN DBLW10,OPN

7、 DI#DB_NO等。 A ILD10,T QD#Par_Pointer,等。) 全局(共享) 數(shù)據(jù)塊(只能進(jìn)行絕對(duì)尋址,DB必須預(yù)先打開,例如: OPN DBDBW0 (覆蓋掉DB寄存器內(nèi)容!),OPN DIDBW22等。 A IDBD10,T QDDBD22,等。) 背景數(shù)據(jù)塊(只能進(jìn)行絕對(duì)尋址,DI必須預(yù)先打開,例如: OPN DBDIW20,OPN DIDIW0 (覆蓋掉DI寄存器內(nèi)容!),等。 A IDID10, T QDDID22等。) 向FB和FC傳遞指針的特點(diǎn) 在參數(shù)里傳遞的指針不能直接用于存儲(chǔ)器間接尋址。 用于存儲(chǔ)器間接尋址而傳遞的指針,在訪問之前必須拷貝到臨時(shí)變量里去,間接

8、尋址示例,FC30:間接尋址示例 Network(段) 1:使用間接尋址方式打開DB L#dbnumber/ 將DB號(hào)拷貝到MW100 TMW100/ OPNDBMW 100/ 打開DB Network (段) 2:循環(huán)刪除 LP#18.0/ 將終端地址(DBW18)作為指針 TMD40/ 傳送到MD 40; L10/ 將循環(huán)計(jì)數(shù)器值設(shè)置為10 next:TMB50/ 傳到MB 50中; L0/ 裝載初始值 TDBWMD 40/ 傳到DB50中; LMD40/ 裝載指針 LP#2.0/ 并減去2個(gè)字節(jié) -D/ 然后再傳回 TMD40/ 到MD 40; LMB50/ 裝載循環(huán)計(jì)數(shù)器 LOOPne

9、xt/ 減去2個(gè)字節(jié),條件滿足則跳轉(zhuǎn);,練習(xí)4.1:用間接尋址的方法進(jìn)行循環(huán)編程,- - - -,Meas_Value1,Meas_Value2,Meas_Value9,Meas_Value10,Meas_Value11,#Ini_Value,1.0,2.0,9.0,10.0,11.0 . . .,等等。,DB41,0,4,32,36,40,DB中指向地址的指針,#Par_Pointer,#Counter,字節(jié)地址,內(nèi)部區(qū)域,寄存器間接尋址,LAR1 P#10.0 / 設(shè)置AR1 AR1: 00000000 0000 0000 0000 0000 0101 0000 + 200 L M W A

10、R1, P#200.0 存儲(chǔ)區(qū)域訪問 地址 偏移擴(kuò)展指令: L MW 210 寬度寄存器 常量,AR 1或AR2中的內(nèi)部區(qū)域指針:,B,B,B,B,B,B,B,B,B,B,B,B,B,X,X,X,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,0,0,0,0,0,0,0,0,0,0,0,0,0,B,B,B,31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16,20,22,位地址,字節(jié)地址(無符號(hào)整數(shù)),20,215,未定義,指令語(yǔ)法規(guī)則:,交叉區(qū)域,寄存器間接尋址,LAR1 P#I10.0 /設(shè)置AR1 AR1: 10000

11、001 0000 0000 0000 0000 0101 0000 L W AR1, P#200.0 + 200 訪問 地址 偏移擴(kuò)展指令: L IW 210 寬度寄存器 常量,AR 1或AR 2中的交叉區(qū)域指針:,B,B,B,B,B,B,B,B,B,B,B,B,B,X,X,X,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,1,0,0,0,0,R,R,R,0,0,0,0,0,B,B,B,31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16,位地址,字節(jié)地址(無符號(hào)整數(shù)),地址標(biāo)識(shí)符,指令語(yǔ)法規(guī)則:,Bit 31=0: 內(nèi)部

12、區(qū)域 Bit 31=1: 交叉區(qū)域,地址標(biāo)識(shí)符:000I/O001輸入(PII)010輸出(PIQ)011位(Bit)存儲(chǔ)器 100DB寄存器中的數(shù)據(jù)101DB寄存器2中的數(shù)據(jù)(DI) 110自有本地?cái)?shù)據(jù)111調(diào)用塊的LD(本地?cái)?shù)據(jù)),用于裝載地址寄存器的指令,裝載地址寄存器 LARn (n =1 or 2): 將ACCU1中的內(nèi)容裝載到ARn LARn 將中的內(nèi)容裝載到ARn LARn P#將中的地址裝載到ARn : 處理器寄存器:AR1,AR2 (比如: LAR1 AR2 及LAR2 AR1) 32位變量:MD,LD, DBD,DID (比如: L DBD5等) 32位符號(hào)變量: 32位全

13、局變量(比如: LAR1 “索引”,等) (全局和局域的) 以及OB,F(xiàn)B及FC的TEMP(臨時(shí))變量 (比如: LAR1 #Address,等) P# 指向布爾型絕對(duì)地址 En.m,An.m,Mn.m,Ln.m,DBXn.m,DIXn.m 指針: (比如: LAR1 P#M5.3, LAR2 P#I3.6,等) 指向本地、符號(hào)地址OB: TEMP(臨時(shí))變量 (比如: LAR1 P#Par_Pointer, 等)FB: IN-,OUT-, INOUT-,STAT- 及TEMP- FC:TEMP(臨時(shí))變量(LAR1 P#Loop,等),其它用于地址寄存器的指令,傳送出地址寄存器內(nèi)容 TARn

14、 (n =1 or 2): 從Arn傳送到ACCU1 TARn 從Arn傳送到 : 處理器寄存器: AR2 (比如:TAR1 AR2 ) 32位絕對(duì)地址變量: MDn, LDn, DBDn, DIDn (如TAR2 MD5等) 32位符號(hào)變量: 32位全局變量(比如TAR1 “Index”,等) (全局和局域的) 及OB,F(xiàn)B及FC的TEMP(臨時(shí))變量 (比如TAR1 #Address等) 地址寄存器內(nèi)容交換(Swap)指令 TAR將地址寄存器AR1和AR2的內(nèi)容相互交換 地址寄存器加指令 +ARn將ACCU1-L內(nèi)容加到ARn +ARn P#n.m將內(nèi)部區(qū)域指針P#n.m加到AR1或AR2

15、中去,寄存器間接尋址的特性,在STL/LAD/FBD編輯器內(nèi)使用AR1 當(dāng)訪問FC中的參數(shù)時(shí),如果參數(shù)為復(fù)雜數(shù)據(jù)類型(ARRAY、STRUCT、DATE_AND_TIME) ,則AR1寄存器和DB寄存器內(nèi)容將會(huì)被覆蓋掉。 當(dāng)訪問FB中的INOUT參數(shù)時(shí),如果該INOUT參數(shù)是復(fù)雜數(shù)據(jù)類型(ARRAY、STRUCT、DATE_AND_TIME),則AR1寄存器和DB寄存器內(nèi)容將會(huì)被覆蓋掉。 在裝載地址寄存器和對(duì)目標(biāo)變量進(jìn)行寄存器間接尋址的時(shí)候,不允許 訪問局部參數(shù) 在STL/LAD/FBD編輯器內(nèi)使用AR2 在對(duì)FB內(nèi)部所有參數(shù)和靜態(tài)變量進(jìn)行尋址的時(shí)候,AR2寄存器和DI寄存器均用作基址寄存器。

16、如果用戶在FB內(nèi)部將 AR2或DI覆蓋了,之后就可以訪問該FB專用參數(shù)或靜態(tài)變量。也就是說,未恢復(fù)兩個(gè)寄存器時(shí)不可訪問。 在FC內(nèi),對(duì)AR2寄存器和DI寄存器沒有限制,#ACCU1,DB中指向地址的指針,#AR1,#ACCU2,- - - -,Number1,Number2,Number9,Number10,Number11,1,2,9,10,11 . . .,等等。,DB42,0,4,32,36,40,字節(jié)地址,練習(xí)4.2:用寄存器間接尋址進(jìn)行循環(huán)編程,POINTER類型和ANY類型數(shù)據(jù)的塊參數(shù),地址聲明名稱類型 0.0 輸入?yún)?shù)DB_NumWORD 2.0 輸入?yún)?shù)Area_Pointer

17、DWORD 6.0 輸入?yún)?shù)LengthWORD . . . L #DB_Num T #I_DB_NumOPNDBI_DB_Num . L#Area_Pointer LAR1 L#Length .,FC.,分別傳送實(shí)際地址的各個(gè)信息 (STEP 5里的方式): DB號(hào) 起始地址 區(qū)域長(zhǎng)度,等。 缺點(diǎn): 程序員必須進(jìn)行拆分 在調(diào)用期間,不能使用實(shí)際地址的符號(hào)名 一個(gè)地址(區(qū)域)需要好幾個(gè)參數(shù) 無一致性檢查糾正,地址聲明.名稱類型 0.0輸入Measure_1POINTER . . . 8.0輸入Measure_2ANY . . . L P#Measure_1 LAR1LWAR1,P#0.0 T#

18、I_DB_Num OPNDBI_DB_Num LDAR1,P#2.0 LAR1 .,FC.,使用POINTER或ANY類型參數(shù)傳遞 (STEP 7方式): 調(diào)用時(shí),程序員可以使用實(shí)際地址的符號(hào)名 由LAD/FBD/STL編輯器拆分成單個(gè)信息 一個(gè)地址只需要一個(gè)參數(shù) 進(jìn)行一致性檢查糾正,POINTER類型的結(jié)構(gòu)和參數(shù)賦值,Byte n,Byte n+2,Byte n+4,Byte n+1,Byte n+3,Byte n+5,DB號(hào)(INT),1 O O O _ O R R R _ O O O O _ O B B B (32位交叉區(qū)域指針),B B B B _ B B B B _ B B B B

19、_ B X X X,POINTER類型參數(shù)賦值 指針顯示P#DBn.DBXx.y其中:n= DB號(hào), x= 字節(jié)數(shù), y= 位數(shù) P#DIn.DIXx.y(比如 P#DB5.DBX3.4,P#DI2.DIX10.0,等)P#Zx.y其中: Z=區(qū)域,比如:P,I,Q,M及L(比如P#I5.3,P#M10.0,等) 地址聲明:MD30 (這種情況下,DB號(hào)區(qū)域標(biāo)識(shí)符及位地址自動(dòng)輸入 #Motor_on 到POINTER參數(shù)中) Motor_1.speed,數(shù)據(jù)類型結(jié)構(gòu):POINTER,ANY數(shù)據(jù)類型的結(jié)構(gòu),ANY數(shù)據(jù)類型指針,Byte n,Byte n+2,Byte n+4,DB號(hào),1 O O

20、O _ O R R R _ O O O O _ O B B B,B B B B _ B B B B _ B B B B _ B X X X,16#10,Data type,復(fù)制系數(shù),Byte n+6,Byte n+8,數(shù)據(jù)類型標(biāo)識(shí)符 VOID00BOOL01BYTE02CHAR03WORD04INT05DWORD06DINT07REAL08DATE09TOD0ATIME0BS5TIME0CDT0ESTRING13 參數(shù)類型標(biāo)識(shí)符 BLOCK_FB17BLOCK_FC18BLOCK_DB19BLOCK_SDB1ACOUNTER1CTIMER1D,ANY參數(shù)類型指針,Byte n,Byte n+2

21、,Byte n+4,16#0000,定時(shí)器,計(jì)數(shù)器或塊的號(hào),16#10,參數(shù)類型,16#0001,Byte n+6,Byte n+8,16#0000,ANY數(shù)據(jù)類型的參數(shù)賦值,指針顯示: P#數(shù)據(jù)塊.位地址 類型號(hào) P#DB10.DBX12.0 REAL 20指向DB10中的一個(gè)區(qū)域:從 Byte 12開始的20個(gè)REAL類型的地址 (ARRAY1.20 OF REAL) P#I 10.0 BOOL 8指向IB10里的一個(gè)8位區(qū)域 地址聲明: 絕對(duì)地址: DB5.DBD10數(shù)據(jù)類型:DWORD,復(fù)制系數(shù):1 DB號(hào):5,指針:P#DB5.DBX10.0 IW32類型:WORD,WF: 1,DB

22、 號(hào):0,指針: P#I 32.0T35類型: TIMER,編號(hào):35 符號(hào)地址: #Motor_1.speed使用基本數(shù)據(jù)類型,編譯器建立正確“Pump”.Start的數(shù)據(jù)類型,復(fù)制系數(shù)1以及指針 注意事項(xiàng) 符號(hào)(ARRAY、STRUCT、STRING、UDT)賦值時(shí),數(shù)據(jù)類型標(biāo)識(shí)符02(BYTE)以及區(qū)域字節(jié)長(zhǎng)度只能由編譯器來建立,并輸入到ANY指針。,ANY類型間接參數(shù)分配,使用臨時(shí)變量對(duì)ANY數(shù)據(jù)類型進(jìn)行實(shí)際參數(shù)賦值 在調(diào)用塊中聲明ANY數(shù)據(jù)類型臨時(shí)變量 例如:temp aux_pointerANY 用指針信息對(duì)ANY臨時(shí)變量進(jìn)行賦值 例如: LAR1P#aux_pointer/ 裝載輔助指針地址L B#16#10/ 裝載標(biāo)識(shí)符10TLB AR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論