為什么要區分數據類型
現實生活中我們可以隨意在紙上寫出一串數字,并運用小學學過的知識準確識別出數字的大小。但在計算機中,受到機器運算方式和存儲空間的限制,必須將數據分成不同的組織形式,以便進行更高效的運算,每種數據類型所占存儲空間不同,可表示的數值范圍也不同。
PLC編程需要認識的基本數據類型
按數據類型的所占存儲空間的大小進行分類如下:
從上圖可以看出,除字符串數據類型,其他數據類型都是按照位的長度來分類的。其實不論是什么數據類型,存儲后只要以二進制的形式查看,都是1/8/16/32等二進制位的0或1組合。
相同的二進制數按照不同的規則解析,可以解析成不同類型的數據,可表示的數據大小最終受限于所占用的存儲空間的大小。
PLC中的變量
PLC中變量的概念可以認為是一個用于存儲數據的存儲空間,空間的內容可變,所以稱為變量。
由于PLC的數據存儲器已經被明確劃分好了種類和范圍,我們可以直接使用這些明確的存儲區而不需要像計算機編程那樣先聲明一個某類型的變量再在后面的程序中使用。
在西門子PLC編程只需要指定出變量的存儲區類型,地址索引和長度,而變量的類型(用哪種規則解析)是由具體調用的指令來和子程序的接口來定義的。
指令區分數據類型,匹配相應的變量長度。例如ADD_I指令會將長16位(2個字節)的變量按整型來處理計算,ADD_DI指令會將長32位(4個字節)的變量按雙整型來處理計算,而ADD_R指令會將長32位(4個字節)的變量按浮點數來處理計算。
下圖左邊的子程序形參類型決定了實參變量的類型,在調用子程序時,會按照形參定義的數據類型處理對應長度的變量。
變量的尋址
因為各種存儲空間已經被劃分好,不需要再定義,那么我們怎樣才能找到這片存儲空間呢?這就是尋址的概念。西門子PLC的尋址方式分為兩種,直接尋址和間接尋址。直接尋址又可以分為兩種,絕對尋址和符號尋址。
直接尋址
PLC的數據存儲空間,這里總結出直接訪問數據存儲空間的三個要素,存儲區類型,地址索引和長度。
例如如果訪問的是V0.0,其中V代表存儲器類型是V存儲器,0代表存儲器索引值,.0代表訪問的長度是1個位并且指出是第0個位。
例如如果訪問的是VB1,其中V代表存儲器類型是V存儲器,1代表存儲器索引值,B代表訪問的長度是1個字節。
例如如果訪問的是VW2,其中V代表存儲器類型是V存儲器,2代表存儲器索引值,W代表訪問的長度是1個字(2個字節)。
例如如果訪問的是VD4,其中V代表存儲器類型是V存儲器,4代表存儲器索引值,D代表訪問的長度是1個雙字(4個字節)。
如果訪問的是VD0,,其中V代表存儲器類型是V存儲器,0代表存儲器索引值,D代表訪問的長度是1個雙字(4個字節),這次訪問包含了V0.0-V3.7共32個位區域,VB0-VB3共4個字節區域,VW0-VW2共2個字區域。
絕對尋址
絕對尋址直接指出存儲區類型,地址索引和訪問長度即可。
符號尋址
為絕對地址定義一個符號,同時添加相應的注釋。符號也是可以用來尋址的,即通過符號名稱找到對應的地址,例如在編程時可以通過“瞬時流量1”這個符號名稱來找到VD6000這個地址。符號表中定義變量是不需要指定變量的數據類型的,而變量的類型(用哪種規則解析)是由具體調用的指令來和子程序的接口來確定的。其中地址的基本要素也是存儲區類型,地址索引和訪問長度。
在程序中直接使用符號名稱來指代某個變量,在定義符號表時已經定義了數據存儲器的類型,地址索引和訪問長度。
直接尋址的兩種方式單獨顯示即同時顯示的切換方法如下
間接尋址
你可以將指針想象成一輛自動取送貨的小車,變量是貨架上的一個個貨位,只需要將貨位號發給小車,小車就能找到這個位置來取送貨物。
間接尋址的過程是,首先定義一個指針變量,讓指針變量指向存儲區的純數值索引。再通過指針訪問這個存儲區,通過改變指針數值,指向另一個存儲區,再訪問另一個存儲區。
指針是包含另一個存儲位置地址的雙字存儲位置。只能將 V 存儲位置、L 存儲位置或累加器寄存器(AC1、AC2、AC3)用作指針。要創建指針,必須使用“移動雙字”指令,將間接尋址的存儲位置地址移至指針位置。指針還可以作為參數傳遞至子程序。
注意:修改指針值時,切記調整所訪問數據的大?。涸L問字節時,指針值加 1;訪問定時器或計數器的字或當前值時,指針值加 2;訪問雙字時,指針值加 4。
哪些存儲區支持間接尋址
S7-200 SMART 允許指針訪問下列存儲區:I、Q、V、M、S、T(僅限當前值)、C(僅限當前值)、SM、AI 和 AQ。單個位或訪問 HC、L 或 AC 存儲區不支持間接尋址訪問。
總結
直接尋址時,絕對尋址和符號尋址這兩種方式本質是三要素,一般在編程中,不需要監視的臨時變量,中間過渡變量可以采用絕對尋址的方法來使用,需要監視的變量更適合符號尋址,也方便調試監控。而間接尋址更適合批量操作一定區域的變量,特別是與循環指令配合使用。
-
寄存器
+關注
關注
31文章
5342瀏覽量
120328 -
存儲器
+關注
關注
38文章
7490瀏覽量
163818 -
S7-200
+關注
關注
13文章
408瀏覽量
50427 -
PLC編程
+關注
關注
46文章
246瀏覽量
37446 -
累加器
+關注
關注
0文章
50瀏覽量
9455
發布評論請先 登錄
相關推薦
評論