国产aaaa级全身裸体精油片_337p人体粉嫩久久久红粉影视_一区中文字幕在线观看_国产亚洲精品一区二区_欧美裸体男粗大1609_午夜亚洲激情电影av_黄色小说入口_日本精品久久久久中文字幕_少妇思春三a级_亚洲视频自拍偷拍

首頁 > 化工知識 > 詳解STEP7的指針數(shù)據(jù)類型(POINTER)

詳解STEP7的指針數(shù)據(jù)類型(POINTER)

時(shí)間:2020-09-28 來源:方正智芯 瀏覽:

西門子STEP7(博途)編程開發(fā)環(huán)境給了程序設(shè)計(jì)人員很大的自由度,豐富的指令和數(shù)據(jù)類型讓工程師們可以盡情的發(fā)揮自己的聰明才智,編寫出高效、穩(wěn)定、功能強(qiáng)大的代碼。今天我們和大家聊聊STEP7編程的比較深入的知識——指針(POINTER)數(shù)據(jù)類型。

指針的概念最早出現(xiàn)于C語言,表示一個(gè)變量的地址。指針變量占用兩個(gè)字節(jié)(32位操作系統(tǒng)),可以讓程序員很方便的對內(nèi)存進(jìn)行讀寫,大大提高了程序的效率。C語言也因?yàn)橹С种羔槪挥脕砭帉懖僮飨到y(tǒng)。大名鼎鼎的Linux操作系統(tǒng),就是用C語言編寫的。

在PLC的世界里,西門子的STEP7(博途)也引入了指針的概念。不過STEP7中的指針類型和C語言的有所不同,它占用了6個(gè)字節(jié),如下圖:

 

其中,Byte0和Byte1用來表示數(shù)據(jù)塊(DB)的編號,如果指向的存儲區(qū)不是DB塊,則值為0;Byte2是要訪問的存儲區(qū)的代碼(Memory Area Code);Byte3的低3位、Byte4和Byte5的高5位用來表示變量的字節(jié)地址(圖中藍(lán)色部分);Byte5的低3位表示變量的位的地址(圖中棕色部分);可見,指針類型能清晰的表達(dá)要指向的數(shù)據(jù)的區(qū)域(Memory Area)、字節(jié)(Byte address)及位(bit)的信息。

關(guān)于存儲區(qū)(Memory Area)代碼,請看下面這張表格:

左邊一欄是存儲區(qū)的十六進(jìn)制代碼,中間一欄是存儲區(qū)的名稱,右邊一欄是相應(yīng)的描述。需要注意的是,S7-300/400的外設(shè)存儲區(qū)(P)代碼為“B#16#80”,而在S7-1500中,對外設(shè)輸入和外設(shè)輸出進(jìn)行了區(qū)分,“B#16#1”表示輸入(PI),“B#16#2”表示輸出(PQ);

在STEP7中,指針變量用符號"P#"標(biāo)識,比如“P#DB100.DBX1.0”,表示一個(gè)指向DB100的第1個(gè)字節(jié)的第0位的指針變量。STEP7支持四種類型的的指針變量:

1)存儲區(qū)內(nèi)指針(Area-internal Pointer):同一個(gè)存儲區(qū)內(nèi)的指針,比如:P#10.0;

2)存儲區(qū)間指針(Cross-area Pointer):指向存儲區(qū)變量的指針,比如:P#M6.0。這里的存儲區(qū)可以是輸入存儲區(qū)(I),輸出存儲區(qū)(Q)或位存儲區(qū)(M);

3)數(shù)據(jù)塊指針(DB Pointer):指向數(shù)據(jù)塊變量的指針,比如:DB101.DBX2.0;

4)零指針(Zero Pointer):用來指向一個(gè)目前沒有使用,將來可能用到的變量;

如果某個(gè)功能塊(FB或FC)的形參是指針類型,那么當(dāng)給形參賦值時(shí),符號“P#”可以省略(不愛偷懶的你也可以不省略哦),STEP7會自動(dòng)將輸入的值轉(zhuǎn)換成指針類型。

看完這篇文章,對指針是不是有較深的理解了呢?如果你想收藏本文,記得官網(wǎng)提供本文PDF版本下載哦

相關(guān)參考文章:

PLC基礎(chǔ)篇之復(fù)雜數(shù)據(jù)類型:數(shù)組與字符串

PLC基礎(chǔ)篇之?dāng)?shù)據(jù)類型(Data type)

版權(quán):如無特殊注明,文章轉(zhuǎn)載自網(wǎng)絡(luò),侵權(quán)請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習(xí)使用,務(wù)必24小時(shí)內(nèi)刪除。
相關(guān)推薦