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

下載本文檔

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

文檔簡介

1、間接尋址及地址寄存器指令,L W AR1, P#200.0,- - - -,1,2,9,10,#Ini_Value,#Par_Pointer,#Counter,?,?,?,STEP 7 中可能的尋址方式,尋址方式,直接尋址,間接尋址,絕對尋址,符號尋址,存儲器間接尋址,寄存器間接尋址,示例: 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ū)域,變量直接尋址,存儲單元位置 (示例),I,37.4,地址,附加訪問寬度,字節(jié),字,雙字,含義,輸入,Q,27.7,字節(jié),字,雙字,輸出,PIB,655,字節(jié),字,雙字,外設(shè)輸入,PQB,653,字節(jié),字,雙字,外設(shè)輸出,M,55.0,字節(jié),字,雙字,位(Bit)存儲器,T,114,-,定時器,C,13,-,計數(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),本地數(shù)據(jù)堆棧,

3、DB中地址標識符直接尋址,打開的數(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符號訪問變量 Number_1. DB19具有變量名“Values” A DB10.DBX4.7從DB 10 的第4個字

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

5、的32位指針(用于對I、Q、M.進行尋址) L P#24.0 T MD 50 L I W MD50 L IW 24 存儲 訪問 地址 區(qū)域?qū)挾?存儲器間接尋址,用于存儲器間接尋址的指針結(jié)構(gòu),16位指針的結(jié)構(gòu):為0 . 65 535 之間的無符號整數(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é)地址(無符號整數(shù)),20,215,未定義,裝載32位指針常量(內(nèi)部區(qū)域): L P#25.3 (P = 指針,字節(jié)地址= 25,位地址:3),存儲器間接尋址的特性,用于存儲16位和32位指針的地址區(qū)域: 位(Bit)存儲區(qū)(絕對尋址或符號尋址) 例如:OPN DBMW30,OPN DI“Motor_1” 等。A IMD30,T QDSpeed_1,等) 本地數(shù)據(jù)堆棧(絕對尋址或符號尋址,例如: OPN DBLW10,OPN

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

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

9、xt/ 減去2個字節(jié),條件滿足則跳轉(zhuǎn);,練習4.1:用間接尋址的方法進行循環(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 存儲區(qū)域訪問 地址 偏移擴展指令: 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é)地址(無符號整數(shù)),20,215,未定義,指令語法規(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 訪問 地址 偏移擴展指令: 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é)地址(無符號整數(shù)),地址標識符,指令語法規(guī)則:,Bit 31=0: 內(nèi)部

12、區(qū)域 Bit 31=1: 交叉區(qū)域,地址標識符:000I/O001輸入(PII)010輸出(PIQ)011位(Bit)存儲器 100DB寄存器中的數(shù)據(jù)101DB寄存器2中的數(shù)據(jù)(DI) 110自有本地數(shù)據(jù)111調(diào)用塊的LD(本地數(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位符號變量: 32位全

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

14、 (n =1 or 2): 從Arn傳送到ACCU1 TARn 從Arn傳送到 : 處理器寄存器: AR2 (比如:TAR1 AR2 ) 32位絕對地址變量: MDn, LDn, DBDn, DIDn (如TAR2 MD5等) 32位符號變量: 32位全局變量(比如TAR1 “Index”,等) (全局和局域的) 及OB,F(xiàn)B及FC的TEMP(臨時)變量 (比如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 當訪問FC中的參數(shù)時,如果參數(shù)為復雜數(shù)據(jù)類型(ARRAY、STRUCT、DATE_AND_TIME) ,則AR1寄存器和DB寄存器內(nèi)容將會被覆蓋掉。 當訪問FB中的INOUT參數(shù)時,如果該INOUT參數(shù)是復雜數(shù)據(jù)類型(ARRAY、STRUCT、DATE_AND_TIME),則AR1寄存器和DB寄存器內(nèi)容將會被覆蓋掉。 在裝載地址寄存器和對目標變量進行寄存器間接尋址的時候,不允許 訪問局部參數(shù) 在STL/LAD/FBD編輯器內(nèi)使用AR2 在對FB內(nèi)部所有參數(shù)和靜態(tài)變量進行尋址的時候,AR2寄存器和DI寄存器均用作基址寄存器。

16、如果用戶在FB內(nèi)部將 AR2或DI覆蓋了,之后就可以訪問該FB專用參數(shù)或靜態(tài)變量。也就是說,未恢復兩個寄存器時不可訪問。 在FC內(nèi),對AR2寄存器和DI寄存器沒有限制,#ACCU1,DB中指向地址的指針,#AR1,#ACCU2,- - - -,Number1,Number2,Number9,Number10,Number11,1,2,9,10,11 . . .,等等。,DB42,0,4,32,36,40,字節(jié)地址,練習4.2:用寄存器間接尋址進行循環(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.,分別傳送實際地址的各個信息 (STEP 5里的方式): DB號 起始地址 區(qū)域長度,等。 缺點: 程序員必須進行拆分 在調(diào)用期間,不能使用實際地址的符號名 一個地址(區(qū)域)需要好幾個參數(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)用時,程序員可以使用實際地址的符號名 由LAD/FBD/STL編輯器拆分成單個信息 一個地址只需要一個參數(shù) 進行一致性檢查糾正,POINTER類型的結(jié)構(gòu)和參數(shù)賦值,Byte n,Byte n+2,Byte n+4,Byte n+1,Byte n+3,Byte n+5,DB號(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號, 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號區(qū)域標識符及位地址自動輸入 #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號,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,復制系數(shù),Byte n+6,Byte n+8,數(shù)據(jù)類型標識符 VOID00BOOL01BYTE02CHAR03WORD04INT05DWORD06DINT07REAL08DATE09TOD0ATIME0BS5TIME0CDT0ESTRING13 參數(shù)類型標識符 BLOCK_FB17BLOCK_FC18BLOCK_DB19BLOCK_SDB1ACOUNTER1CTIMER1D,ANY參數(shù)類型指針,Byte n,Byte n+2

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

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

溫馨提示

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

評論

0/150

提交評論