老熟妇乱子交视频一区,99RE6在线视频精品免费下载,国产精品一二三区久久狼,深夜精品免费在线观看,亚洲av天堂天天天堂色,波多野结系列18部无码观看AV ,少妇av一区二区三区无码,一区二区在线观看成人午夜
                歡迎光臨昆侖通態(tài)觸摸屏系統(tǒng)集成商
                當(dāng)前位置
                首頁(yè) > 新聞中心
                西門(mén)子STL間接尋址常問(wèn)問(wèn)題集
                2020/11/23 21:47:36

                1.1如何獲得指針或者間接尋址有關(guān)的信息?
                指針的類(lèi)型包括16位指針、32位指針、Pointer(6Byte)和Any(10Byte)。16位指針用于定時(shí)器、計(jì)數(shù)器、程序塊的尋址;32位指針用于I/Q/M/L/數(shù)據(jù)塊等存儲(chǔ)器中位、字節(jié)、字以及雙字的尋址,其中第0~2位表示位地址(0~7)、第3~18位為字節(jié)地址,其余位未定義;Pointer和Any一般應(yīng)用在復(fù)雜數(shù)據(jù)類(lèi)型(比如Date_and_Time /Array/String等)在FB、FC之間的傳遞。而Any可以看做是對(duì)Pointer的延伸,因?yàn)橛?0Byte組成的Any中Byte4~Byte9就是一個(gè)Pointer。
                了解指針的格式十分重要,為正確使用指針,應(yīng)閱讀如下內(nèi)容:
                1、 "SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章 參數(shù)類(lèi)型
                2、文檔:1008用于S7-300 和S7-400 的語(yǔ)句表(STL)編程
                3、文檔:F0215,S7-300和S7-400尋址

                1.2為什么語(yǔ)句 LAR1 P##PointerInput 在一個(gè)函數(shù)(FC)中是無(wú)效的,然而,同樣的語(yǔ)句在一個(gè)功能塊(FB)中是有效的?
                在FC被調(diào)用時(shí),復(fù)雜數(shù)據(jù)類(lèi)型例如指針是被復(fù)制到調(diào)用者的臨時(shí)變量區(qū)中,在FC內(nèi)部對(duì)此V區(qū)地址直接取址放入到地址寄存器AR1或AR2是不被編譯器規(guī)則接受的(導(dǎo)致MC7寄存器信息過(guò)長(zhǎng)),也就是說(shuō)在FC內(nèi)部通過(guò)P#進(jìn)行地址寄存器取址僅能支持Temp臨時(shí)變量。因此如果需要在FC中操作指針等復(fù)雜輸入輸出變量地址需要使用累加器進(jìn)行中轉(zhuǎn)。
                考慮到程序的一致性、遵守編譯器規(guī)則和STL手冊(cè)中LAR1指令說(shuō)明,建議用戶(hù)使用如下指令操作:
                L P##PointerInput
                LAR1

                1.3 STEP 7 中哪些操作會(huì)覆蓋DB/DI寄存器或者地址寄存器AR1/AR2的內(nèi)容?
                下面說(shuō)明了可能引起DB/DI寄存器或者地址寄存器AR1/AR2內(nèi)容改變的一些操作:

                • DB寄存器和AR1受到影響的操作
                  1. 使用完整的DB路徑(如L DB20.Val)或者調(diào)用FC/FB時(shí)使用DB塊完整地址作為其參數(shù),則DB寄存器內(nèi)容被覆蓋。
                  例如在OB1中調(diào)用FC1后,DB寄存器變成20。
                  OPN DB1
                  Call FC1
                  Input(bit):DB20.DBX0.2
                  因此在編程的時(shí)候,OPN 指令打開(kāi)數(shù)據(jù)塊,通過(guò)DBX x.y的方式訪(fǎng)問(wèn)其中內(nèi)容, 但是如果在打開(kāi)數(shù)據(jù)塊后DB寄存器的內(nèi)容被修改了,則DBX x.y的方式訪(fǎng)問(wèn)變量則 會(huì)訪(fǎng)問(wèn)到錯(cuò)誤的地址。可以通過(guò)使用符號(hào)尋址的方式或者使用完整路徑編程避免,當(dāng) 然重新使用 OPN指令也是可以的。
                  2. 調(diào)用FC時(shí)使用string, array, structure ,UDT作為其形參或者調(diào)用FB時(shí)使用string, array, structure 或者UDT作為其in out形參,在FC/FB程序中訪(fǎng)問(wèn)這些地址則AR1寄存器內(nèi)容被覆蓋,因此當(dāng)使用AR1進(jìn)行間接尋址時(shí)需要注意AR1內(nèi)容的正確性。
                • AR2地址寄存器和DI寄存器在FB中作為參數(shù)和靜態(tài)變量的基址尋址使用。AR2和DI如果被修改,會(huì)影響FB的參數(shù)訪(fǎng)問(wèn),如果希望在FB中使用DI寄存器或者地址寄存器AR2,必須預(yù)先保存它們中的內(nèi)容,并在使用后恢復(fù)它們,例如:
                  TAR2 #AR2_SAVE; //AR2寄存器狀態(tài)保存到#AR2_SAVE
                  L                     DINO;
                  T                     #DB2_SAVE; //DI寄存器狀態(tài)保存到#DB2_SAVE

                User Program

                LAR2             #AR2_SAVE; //AR2寄存器恢復(fù)到使用前狀態(tài)
                OPN             DI [#DB2_SAVE]; //DI寄存器恢復(fù)到使用前狀態(tài)

                1.4 如何得到多重背景FB中的變量在背景DB里的絕對(duì)偏移量呢?
                可以用下面的方法處理:
                TAR2 (得到多重背景FB在背景DB里的偏移地址)
                AD DW#16#00FFFFFF (屏蔽掉存儲(chǔ)區(qū)ID,可參考32位指針格式)
                L P##Variable (得到變量在多重背景FB里的地址)
                +D (多重背景FB的偏移地址與變量在多重背景FB里地址相加,即得到實(shí)際絕對(duì)偏移量)
                LAR1
                上述語(yǔ)句就是就得到了變量在背景DB中的絕對(duì)偏移量,從而供后續(xù)程序處理。

                1.5如何在程序中使用ANY 型指針?

                簡(jiǎn)要說(shuō)明如下:
                L             P##Input                 //指向存儲(chǔ)地址指針I(yè)nput首地址
                //這個(gè)參數(shù)是一個(gè)Any類(lèi)型,P##Input指向參數(shù)Input的值所在地址,這就是指針的指針
                LAR1                                                                 //裝載到地址寄存器AR1中。
                L                 W [AR1,P#4.0]             //打開(kāi)DB塊
                // 由Any類(lèi)型結(jié)構(gòu)知道Any類(lèi)型的Byte4、Byte5存放的數(shù)據(jù)塊號(hào)
                T                 #BLOCK_NO
                OPN             DB [#BLOCK_NO]                 //如果是DB塊,打開(kāi)指定的DB塊。
                L                 W [AR1,P#2.0] //判斷ANY指針中數(shù)據(jù)長(zhǎng)度
                // Any類(lèi)型的Byte2、Byte3是重復(fù)系數(shù),如P#DB1.DBX0.0 Byte 8后面的Byte 8
                _001:T             #DATA_LEN                     //通常此處做loop循環(huán)!!
                L                 D [AR1,P#6.0]                         //找出需要計(jì)算數(shù)據(jù)區(qū)的開(kāi)始地址
                // Any類(lèi)型Byte6~Byte9是32位區(qū)域地址
                理解Pointer、Any的類(lèi)型的數(shù)據(jù)結(jié)構(gòu),對(duì)于正確使用指針有很大幫助。
                為正確使用指針,應(yīng)仔細(xì)閱讀如下內(nèi)容:
                "SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章 參數(shù)類(lèi)型

                如下的程序?qū)崿F(xiàn)了SFC20的部分功能,可以作為Any使用的參考。
                FUNCTION FC 1 : VOID
                TITLE =
                VERSION : 0.1
                VAR_INPUT
                SRCBLK : ANY ;
                END_VAR
                VAR_OUTPUT
                RETVAL : INT ;
                DSTBLK : ANY ;
                END_VAR
                VAR_TEMP
                LOOP : INT ;
                BLOCK_NO_DB : WORD ;
                BLOCK_NO_DI : WORD ;
                SRC_ADD : DWORD ;
                DST_ADD : DWORD ;
                END_VAR
                BEGIN
                NETWORK
                TITLE =
                L P##SRCBLK; //讀取輸入any的首地址
                LAR1 ; //裝載到ar1
                L P##DSTBLK; //讀取輸出any的首地址
                LAR2 ; //裝載到ar2
                L W [AR1,P#4.0]; //打開(kāi)DB塊
                T #BLOCK_NO_DB;
                L W [AR2,P#4.0]; //打開(kāi)DI塊
                T #BLOCK_NO_DI;
                OPN DB [#BLOCK_NO_DB]; //打開(kāi)DB塊
                OPN DI [#BLOCK_NO_DI]; //打開(kāi)DI塊
                L D [AR1,P#6.0];
                T #SRC_ADD; //讀取地址
                L D [AR2,P#6.0];
                T #DST_ADD; //讀取地址

                L W [AR1,P#2.0]; //讀取循環(huán)次數(shù)
                _001: T #LOOP;
                L DBB [#SRC_ADD];
                T DIB [#DST_ADD]; //賦值
                //地址偏移1個(gè)字節(jié)
                L P#1.0;
                L #SRC_ADD;
                +D ;
                T #SRC_ADD;
                L P#1.0;
                L #DST_ADD;
                +D ;
                T #DST_ADD;
                L #LOOP; //循環(huán)
                LOOP _001;
                END_FUNCTION

                1.6 當(dāng)FC 或FB的輸入?yún)?shù)類(lèi)型為:BLOCK_DB, TIMER或者 COUNTER,如何確定其編號(hào)?
                例1 :FB 塊
                FB1 變量聲明中定義了“ Timer” 類(lèi)型的變量“ Time_1” ,在 FB2 中調(diào)用 FB1,將定時(shí)器“T5”傳遞給變量“ Time_1”。如圖 01 所示程序代碼中數(shù)值 5 表示“T5”。


                圖 01 FB中確定定時(shí)器編號(hào)

                在使用多重實(shí)例時(shí),需要在圖 01 所示程序中增加以下代碼:
                TAR2 //多重實(shí)例偏移地址
                LAR1 P##Time_1
                +AR1 //多重實(shí)例偏移地址與當(dāng)前地址相加
                L W[AR1,P#0.0]
                T MW0
                例 2 FC
                FC1 變量聲明中定義了“ Timer” 類(lèi)型的變量“ Time_1” ,在 FC2 中調(diào)用 FC1,將定時(shí)器“T8”傳遞給變量“ Time_1”。如圖 02 所示程序代碼中數(shù)值 8 表示“T8”。


                圖 02 FC中確定定時(shí)器編號(hào)

                “BLOCK_DB”類(lèi)型參數(shù)在調(diào)用 FC 時(shí)不可以直接傳送給 FC 。如果在調(diào)用功能時(shí)試圖使用此參數(shù)類(lèi)型,將產(chǎn)生如下的錯(cuò)誤消息: “非法的參數(shù)傳輸<參數(shù)名>” 。“BLOCK_DB”類(lèi)型參數(shù)僅在 FB 被調(diào)用(從一個(gè) FB 或 FC 中)時(shí)可被傳送。 “BLOCK_DB”類(lèi)型參數(shù)不可以在 FC 被調(diào)用(從一個(gè) FB 或 FC 中)時(shí)可被傳送。
                相關(guān)詳細(xì)信息可參考 STEP7 在線(xiàn)幫助中“合法的傳輸參數(shù)類(lèi)型”。
                然而,如果希望將 BLOCK_DB 參數(shù)類(lèi)型傳送給 FC, DB 塊的編號(hào)可以通過(guò)基本數(shù)據(jù)類(lèi)型(例如 WORD)傳送。 在下面的例子中,F(xiàn)B100 擁有一個(gè)“BLOCK_DB” 的輸入?yún)?shù)類(lèi)型。為了在調(diào)用 FC101 時(shí)將參數(shù)傳送給它,“BLOCK_DB”中的 DB 塊編號(hào)被傳送給 WORD 臨時(shí)變量(DB_No)。當(dāng) FC 被調(diào)用,數(shù)據(jù)塊序號(hào)以一個(gè) WORD 參數(shù)類(lèi)型替代 BLOCK_DB 參數(shù)類(lèi)型。


                圖 03 FB中確定Block_DB編號(hào)

                如果 FB 的接口參數(shù)能被定義成 WORD 參數(shù)類(lèi)型來(lái)傳送 DB 塊編號(hào),當(dāng) FC 被調(diào)用時(shí),此參數(shù)可以被直接傳送給 FC。


                圖 04 FC中確定DB編號(hào)

                1.7 參數(shù)傳遞有何限制?
                當(dāng)分配實(shí)際參數(shù)給形式參數(shù)時(shí),可以指定絕對(duì)地址、符號(hào)名稱(chēng)或常數(shù)。STEP 7 限制不同參數(shù)的分配。例如,輸出和輸入/輸出參數(shù)不能被分配常數(shù)值(因?yàn)檩敵龌蜉斎?輸出參數(shù)的目的是改變其值)。這些限定尤其適用于具有復(fù)雜數(shù)據(jù)類(lèi)型的參數(shù),這些參數(shù)既不能分配絕對(duì)地址也不能分配常數(shù)。下表關(guān)明涉及分配給形式參數(shù)的實(shí)際參數(shù)數(shù)據(jù)類(lèi)型的限制(--)和允許的分配(由 符號(hào)顯示)。


                圖 05 允許的參數(shù)傳遞

                詳細(xì)信息請(qǐng)參考手冊(cè)中附錄27.3.4.8節(jié)內(nèi)容:45531107

                 

                1.8 如何傳遞any參數(shù)到其他程序塊的參數(shù)中?
                下面的例子將說(shuō)明如何為系統(tǒng)功能 SFC50 “RD_LGADR” (讀取模塊邏輯地址)參數(shù)化 ANY 指針。例如對(duì)于功能塊 FB1,按下述步驟編程:
                1. 聲明一個(gè)輸入變量“test”和一個(gè)臨時(shí)變量“test2”為 ANY 類(lèi)型(圖05)。
                2. 例如,把 SFC50 的參數(shù)“PEADDR”傳遞給變量“test2”(圖06)。
                3. 通過(guò)判斷 ANY 指針“test”,能夠傳遞臨時(shí)變量“test2”的數(shù)據(jù)。


                圖 06 any的臨時(shí)變量傳遞

                語(yǔ)句 L P##test 先把地址加載到 Accu1,然后通過(guò)語(yǔ)句 LAR1 把地址加載到地址寄存器 AR1 (可簡(jiǎn)寫(xiě)為:LAR1 P##test)。每次讀取地址寄存器 AR1 并存儲(chǔ)數(shù)據(jù)(例如 T LW0)到臨時(shí)變量“test2”(ANY 指針)中。Network 1 中的語(yǔ)句復(fù)制數(shù)據(jù)傳送到功能塊 FB1 的 ANY 數(shù)據(jù)到臨時(shí)變量“test2”。


                圖 07 臨時(shí)變量的建立

                1.9 如何通過(guò)UC或CC指令調(diào)用FB?
                當(dāng)使用UC,CC指令調(diào)用不帶參數(shù)的FB可以通過(guò)手動(dòng)修改DI值的方式進(jìn)行背景數(shù)據(jù)塊的動(dòng)態(tài)分配,此操作相當(dāng)于模仿系統(tǒng)調(diào)用FB的過(guò)程。
                例如: OPN DI[FB1_DI_Number]
                LAR2 P#DBX0.0
                UC FB1

                關(guān)鍵詞
                間接尋址,指針,地址寄存器

                聯(lián)系方式
                CONTACT US

                電話(huà):13916183699

                郵箱:13916183699@139.com

                網(wǎng)址:http://www.nabaiqian.cn

                地址:中國(guó)上海市青浦區(qū)北青公路7171號(hào)111-112室

                用手機(jī)掃描二維碼關(guān)閉
                主站蜘蛛池模板: 国内精品无码一区二区三区| 人妻丰满熟妇无码区免费| 精品国产亚洲av麻豆特色| 色就色偷拍综合一二三区| 亚洲国产欧美在线人成AAAA| 又爆又大又粗又硬又黄的a片| 成人国产精品中文字幕| 伊人色婷婷| 久久一夜天堂av一区二区| 久久久精品人妻一区二区三区 | 乱人伦中文视频在线| 狠狠色丁香婷婷亚洲综合| 中国熟妇毛多多裸交视频| 亚洲综合无码明星蕉在线视频 | 成人无码AV一区二区| 久久综合偷拍视频五月天| V一区无码内射国产| 亚洲精品国精品久久99热| 国产乱啊有帅gv小太正| 国产精品午夜福利视频| 亚洲av一区二区在线看| 国产精品毛片一区二区| 亚洲国产欧美在线观看片| 欧美gv在线| 国产亚洲亚洲国产一二区| 狠狠亚洲色一日本高清色| 亚洲人妻av有码一区| 无码人妻精品一区二区三区下载| 内射少妇36p九色| 国产一级特黄高清大片一| 亚洲国产成人av在线观看| 97亚洲熟妇自偷自拍另类图片| 亚洲国产精品久久电影欧美 | 久久久久成人精品无码中文字幕| 福利视频在线播放| 亚洲不卡av不卡一区二区| 亚洲另类丝袜综合网| 国产大片黄在线观看| 亚洲精品无码久久千人斩| 福利写真视频一区二区| 日韩精品中文字幕一线不卡|