詳解STEP7的指針數(shù)據(jù)類型(POINTER)
西門子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)
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
