“數據類型用于指定數據元素的大小以及如何解釋數據。每個指令參數至少支持一種數據類型,而有些參數支持多種數據類型。將光標停在指令的參數域上方,便可看到給定參數所支持的數據類型”。
從上面的手冊解釋來說就是在編程中要對程序中用的數據給指定一個數據類型,要能滿足數據大小(長度),讓程序能進行計算,所以,要能明白你所使用的數據是什么類型,長度有多大,這樣你才能在程序中準確進行邏輯運算、數學運算及數據傳輸等,同時,也要看你所使用的指令可以使用哪些數據類型,根據指令需要進行一些數據類型的轉換。
一、基本數據類型包含哪些?
以西門子TIA S7-1200為例來說,1200的基本數據類型包括:二進制數、整數、浮點數、定時器數據、時間和日期、字符串等。下面主要以容易混淆的二進制數、整數和浮點數進行解讀:
1、二進制數(BOOL、BYTE、WORD、DWORD、LWORD)
(1)BOOL型:布爾,是表示1位的值,就是說0或1。
(2)BYTE:字節,是位字符串,占有8位,舉例說2#0 到 2#1111_1111,對應16進數就是16#00—16#FF。如IB2、MB10、DB1.DBB4
(3)WORD:字,是位字符串,占有16位,舉例說:2#0到2#1111 1111 1111 1111,對應的16進制數就是16#0—16#FFFF。如MW10、DB2.DBW1。
(4)DWORD:雙字,是位字符串占有32位,舉例說:2#0到2#1111 1111 1111 1111 1111 1111 1111 1111,對應的16進制數就是16#0—16#FFFF FFFF。如MD10、DB2.DBD1。
2、整數(SINT、USINT、INT、UINT、DINT、UDINT、LINT、ULINT),這里的S代表短,U代表無符號、D代表雙。
(1)SINT和USINT
這兩種相同的是短整形數,占8位,地址舉例:MB0,DB1.DBB0。但是這兩種的取值范圍是不同的。
SINT:有符號短整形,取值范圍-128—127,2#0—2#0111 1111,Zui高位為符號位,
USINT:無符號短整形,取值范圍0—255,2#0—2#1111 1111
(2)INT和UINT
這兩種相同的是整形數,占16位,地址舉例:MW0,DB1.DBW0。但是這兩種的取值范圍是不同的。
INT:有符號整形,取值范圍-32768—32767,2#0—2#0111 1111 1111 1111,Zui高位為符號位,
USINT:無符號短整形,取值范圍0—65535,2#0—2#1111 1111 1111 1111
(3)LDNT和UDINT
這兩種相同的是雙整形數,占32位,地址舉例:MD0,DB1.DBD0。但是這兩種的取值范圍是不同的。
DINT:有符號整形,取值范圍-2,147,483,648—2,147,483,647,2#0—2#0111 1111 1111 1111 1111 1111 1111 1111,Zui高位為符號位,
UDINT:無符號整形,取值范圍0—4,294,967,295,2#0—2#1111 1111 1111 1111 1111 1111 1111 1111
3、浮點數
實(或浮點)數以 32 位單精度數 (Real) 或 64位雙精度數 (LReal) 表示。單精度浮點數的精度Zui高為 6位有效數字,而雙精度浮點數的精度Zui高為 15 位有效數字。
在輸入浮點常數時,Zui多可以指定 6 位 (Real) 或 15 位 (LReal) 有效數字來保持精度。
總結下:上述數據類型是我們在編程中Zui常用到的數據類型,通過上面的介紹大家應該對它們有一定的了解,雖然可能不同數據類型的數據占有的字節數是相同,但是它們的數據其實是不同的,比如,INT和WORD都是16位,但是它們包含數據內容是不同的,在編程中一定要注意。通常來說,WORD常用于邏輯計算,INT常用于數學計算,對于博途TIA S7-1200使用SCL編程時區分是比較嚴格的。
二、如何定義數據類型
在編程中我們一般要先定義好數據類型,比如在數據塊中定義數據類型,下面以在DB塊中定義數據類型為例,看看不同的數據類型地址有什么變化。
建立如下數據塊,并建立一下數據包含不同數據類型:
從上圖看不到偏移量,這時因為TIA中的DB塊默認勾選“優化的塊訪問”,只能顯示符號地址,而沒有偏移量,可以在塊屬性中將“優化的塊訪問”去掉即可,
下面就看看不同數據類型的地址:
從上圖大家能發現什么?
(1)BOOL型,雖然只有一位,但是也要占一個字節。
(2)SINT USINT 和BYTE都是1個字節,但是它們的初始值的格式是不同的。同樣WORD和INT也是一樣2個字節,所以,在數據類型分類,將WORD歸到二進制數中,一般用于邏輯運算,而INT用于數學運算。
(3)REAL是4個字節,在進行數學計算時要注意,比如,我前面寫轉換指令文章#跟我一起看1200手冊之基本指令(轉換指令)如何使用中用到的求平方根指令,就是對REAL型數據進行計算,所以,在選擇數據時我使用的DINT數據。(如下圖所示)。不注意的話容易造成計算錯誤。
- 如何用PID控制做個“單閉環控制系統” 2024-12-27
- 電工如何速成PLC?這幾點你得知道... 2024-12-27
- 變頻器如何與PLC相連接,怎么用PLC控制? 2024-12-27
- 西門子S7-1200PLC編程之對停止傳送帶的條件進行編程 2024-12-27
- TIA Portal STEP7 打開項目報錯如何解決? 2024-12-27
- S7-1200/1500在虛擬機中與 Wincc建立變量連接 2024-12-27
- 工業控制實現自動化與PLC有何關系 2024-12-27
- S7-200 SMART與RS485接口的西門子觸摸屏的通信 2024-12-27
- 西門子PLC如何通過CPU 指示燈診斷故障 2024-12-27
- S7-1200與S7-300 PN口S7通訊(S7-300客戶端) 2024-12-27
- 西門子S7-1200仿真PLC與“真實”PLC之間的區別 2024-12-27
- 三菱PLC 與西門子PLC 的區別及優缺點 2024-12-27
- 西門子S7-200/300/400通訊方式匯總,超級全面! 2024-12-27
- S7-1200與300的選型區別 2024-12-27
- MCGS觸摸屏與 S7-1200 以太網通訊 ! 2024-12-27
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595