plc位、字節、字、雙字、有符號、無符號數據類型的關系
前言:很多同學在PLC開發過程中,因為數據類型選擇錯誤而出現得到的數據和期望的數據不一致的情況,例如:我們在讀取模擬量采集讀數的時候,可能會發現數據小於32767時都是對的,但是一旦大於這個值就變成了負數;還有些時候,PLC在和第三方采集器通信時,會出現接收的數據順序和發送方數據存在高低位顛倒的情況,這是怎么回事呢,讓我們來一起來解開這里的謎團。
位:最小的存儲單位,非0則1,表達兩個狀態。
字節:每8個位組成一個字節。這樣一個字節可以表達2的8次方(256)個狀態,大於256個狀態怎么表示?那就字。
字:2個字節組成一個字,有16個位。這樣一個字可以表達2的16次方(65536)個狀態,大於65536個狀態怎么表示? 那就用 雙字。
雙字:2個字組成一個雙字,有32個位。這樣一個雙字可以表達2的32次方(429496729狀態)。
雙整(32位又稱雙字)=2個整數(2*16位)
整數(16位又稱字)=2個字節(2*8位)
字節(8位)=8個位
舉個例子說明,以西門子為例:
VD0(雙整)=VW0,VW1(整數)=VB0,VB1,VB2,VB3(字)=V0.0~V3.7(位)一共32個位 所以稱32位雙整!
西門子表達比較特殊,理解如下:
例如:VB100 B表示1個字節=8個位
8個位為VB100.0--VB100.7, 一個字節是VB100。
VW100 W表示2個字節=16個位 =字 16個位為VB100.0--VB100.7,VB100.8--VB100.15,
二個字節(字)是VB100,VB101.
VD100 D表示4個字節=32個位=雙字 32個位為VB100.0--VB100.7,VB100.8--VB100.15,
VB100.16-- VB100.23, VB100.24--VB100.32,
4個字節(雙字)是 VB100,B101,VB102,VB103
一個32位組成的雙字,其0-31位共32位用VD10表示的話,那么要表達0-15位組成的字,就是VW12;要表達16-31位組成的字,就是VW10;要表達0-7位組成的字節,就是VB13;要表達8-15位組成的字節,就是VB12;要表達16-23位組成的字節,就是VB11;要表達24-31位組成的字節,就是VB10。
無符號整數 十進制數值范圍 0到65535
十六進制數值范圍16#0000到16#FFFF
有符號整數 十進制數值范圍 -32768到+32767
十六進制數值范圍16#8000到16#7FFF
1、無符號整數和有符號整數之分?
一個16位數,分為WORD數據類型與INT數據類型。前者無符號,后者為有符號。
通常情況下WORD用於邏輯運算,INT用於數學運算;即WORD與INT在用法上沒有什么區別(WORD可做數學運算,INT也可作邏輯運算)。
2、如vw100我怎么讓它成為無符號整數寄存器?
不是什么寄存器,寄存器的概念在此不做解釋。vw100如果做為WORD數據類型就是無符號。
3、WORD數據類型與INT數據類型數據范圍:
WORD數據:0-65535;
INT數據類型:-32768-+32767.。
4、如果數值超過65535怎么辦呢?
同上所述,原理一樣,只不過數類型變成DWORD和DINT而已。
以上內容由深圳市綜科智控科技開發有限公司整理編輯: