t天涯明月刀

請聯系客服QQ
艾特貿易網首頁

艾特貿易網

STEP 7的加載變量地址

提示:

下列語句給出了局部變量的起始地址:L P# name;LAR1 p#name;LAR2 P#name; 使用name作為局部變量名,這些語句把一個跨區的指針加載到累加器1或地址寄存器AR1或AR2中。區指針包含了變量第一個字節的地址。如果不能通過name唯一地識別局部變量,則需要在name前插入一個“#”,比如L P##name。根據所在塊的不同,表1列出了允許

    下列語句給出了局部變量的起始地址:

    L    P# name;

    LAR1    p#name;

    LAR2    P#name;

    使用name作為局部變量名,這些語句把一個跨區的指針加載到累加器1或地址寄存器AR1AR2中。區指針包含了變量第一個字節的地址。如果不能通過name唯一地識別局部變量,則需要在name前插入一個“#”,比如L P##name。根據所在塊的不同,表1列出了允許name存在的變量區。

    1   允許裝入的變量地址

允許裝入的變量地址

    1)與地址寄存器AR2有關的變量地址。

    對于功能,塊參數的地址不能直接加載到地址寄存器,在這里可以采用通過累加器1的方法(比如L P#name; LAR1;)。

    對于使用關鍵字CODE_VERSION1編譯的功能塊(沒有“多實例能力”),加載的是實例變量的絕對地址。

    在“多實例能力”的功能塊中,對于靜態局部數據和塊參數,加載的是相對于地址寄存器AR2的絕對地址。如果要計算實例數據塊中變量的絕對地址,必須把AR2中的區內指針(僅指地址)和加載的變量地址相加。

    舉例1

    把變量地址加載到地址寄存器AR1

    TAR2  ;

    UD    DW#16#OOFF_FFFF;

    LAR1    P#name;

    +AR1  ;

    對于前兩個語句,AR2中的地址加載到累加器,然后使用+AR1語句與AR1中的內容相加。結果,AR1包含了名稱為#name的變量的地址。

    舉例2

    把變量地址加載到累加器1

    TAR2  ;

    UD    DW#16#00FF_FFFF;

    L    P#name;

    +D   

    和舉例1相似,這樣的結果是累加器1包含了名稱為#name的變量的地址。

    如果區內指針的值為P#0.0,指針的加運算將被忽略。如果不把功能塊用作局部實例,就屬于這種情況。

    注意:在“多實例能力”的功能塊中尋址實例數據時,把AR2作為“基地址寄存器”來使用,“LAR2 P#name”將會覆蓋地址寄存器AR2

    使用加載語句只能尋址一個完整的變量,而不是單個數組、結構或局部實例的組件。使用這些加載語句不能獲得全局數據塊或地址區輸入、輸出、外圍I/O和位存儲器中的變量。

    2給出了如何計算靜態局部數據中INT變量和STRING變量的地址,以及如何使用這些地址。如果要使用作為局部實例調用的功能塊中的示例程序,必須按照上面所述,把基地址和變量地址相加。

    2   裝載變量地址(示例)

裝載變量地址(示例)

(作者稿費要求:需要高清無水印文章的讀者3元每篇,請聯系客服,謝謝!在線客服:艾特貿易網客服為您服務


(責任編輯: 艾特貿易網 )

  • 本文關鍵字:STEP7 

免責聲明:本文章僅代表作者個人觀點,與艾特貿易網無關。本站大部分技術資料均為原創文章,文章僅作為讀者參考使用,請自行核實相關內容,如若轉載請注明來源:艾特貿易網 http://www.tmstv.icu

 
 
t天涯明月刀