S7-200 CPU收集操作指令、現場(chǎng)狀況等信息,把這些信息按照用戶(hù)程序指定的規律進(jìn)行運算、處理,然后輸出控制、顯示等信號。
所有這些信息在S7-200 PLC中,都表示為不同格式的數據,作為數據來(lái)處理;按照其自身定義,格式不同的數據表示不同含義的信息。
在S7-200中,各種指令對數據格式都有一定要求,指令與數據之間的格式要一致才能正常工作。例如,為一個(gè)整數數據使用實(shí)數(浮點(diǎn)數)運算指令,顯然會(huì )得到不正確的結果。
數據有不同的長(cháng)度(以二進(jìn)制表示它們時(shí),占據的位數不同),也就決定了數值的大小范圍。模擬量信號在進(jìn)行模/數(A/D)和數/模(D/A)轉換時(shí),一定會(huì )存在誤差;代表模擬量信號的數據,只能以一定的精度表示模擬量信號。
表1. S7-200支持的數據格式
尋址格式 |
數據長(cháng)度 (二進(jìn)制位) |
數據類(lèi)型 | 取值范圍 |
---|---|---|---|
BOOL(位) | 1(位) |
布爾數 (二進(jìn)制位) |
真(1);假(0) |
BYTE(字節) |
8 (字節) |
無(wú)符號整數 | 0 ~ 255;0 ~ FF(Hex) |
INT(整數) |
16 (字) |
有符號整數 |
- 32768 ~ 32767; 8000 ~ 7FFF(Hex) |
WORD(字) | 無(wú)符號整數 |
0 ~ 65535; 0 ~ FFFF(Hex) |
|
DINT (雙整數) |
32 (雙字) |
有符號整數 |
- 2147483648 ~ 2147483647 8000 0000 ~ 7FFF FFFF(Hex) |
DWORD (雙字) |
無(wú)符號整數 |
0 ~ 4294967295; 0 ~ FFFF FFFF(Hex) |
|
REAL (實(shí)數) |
IEEE 32位 單精度浮點(diǎn)數 |
-3.402823E+38 ~ -1.175495E-38(負數); +1.175495E-38 ~+3.402823E+38(正數); 0.0※ |
|
ASCII |
8/個(gè) (字節) |
字符列表 |
ASCII字符、 漢字內碼(每個(gè)漢字2字節) |
STRING (字符串) |
字符串 |
1 ~ 254個(gè)ASCII字符、 漢字內碼(每個(gè)漢字2字節) |
二進(jìn)制和二進(jìn)制數: 所有通過(guò)S7-200 PLC處理的數據(數值、字符等等)都以二進(jìn)制形式表示。在S7-200中,特別指出一個(gè)數據是二進(jìn)制數并沒(méi)有什么意義。
十六進(jìn)制和十六進(jìn)制數:在二進(jìn)制數中,每4個(gè)二進(jìn)制位可以分為一組;這組二進(jìn)制數值的不同變化可以表示16個(gè)狀態(tài),正好是16進(jìn)制數每一位數字的變化范圍。因此,可以用十六進(jìn)制數值方便地表示二進(jìn)制數。
例如,二進(jìn)制數1000_1111b分為兩組來(lái)看,分別是1000b和1111b,正好可以表示16進(jìn)制數字8h和Fh(0000b對應于0h,...,1111b對應于Fh);那么這個(gè)二進(jìn)制數就可以表示為8Fh。
十進(jìn)制和十進(jìn)制數:十進(jìn)制是S7-200的數學(xué)計算的基礎,在S7-200中,一般都使用十進(jìn)制的體系,除了時(shí)間(12/24或60進(jìn)制)等特殊數據外。
二進(jìn)制數用于在PLC中表示十進(jìn)制數值、或者其他(如字符等)數據,而16進(jìn)制用來(lái)比較簡(jiǎn)單地描述二進(jìn)制數。
在S7-200中,二進(jìn)制立即數表示為2#xxxx_xxxx(1字節長(cháng)度),16進(jìn)制立即數表示為16#xx(1字節長(cháng)度)。
PLC中以二進(jìn)制“位”的數據形式來(lái)表示邏輯“1”、“0”(或者“開(kāi)”、“關(guān)”)。位是最基本的數據單位。
在數據字節(Byte)中,二進(jìn)制邏輯只用一個(gè)位(bit)來(lái)表示。每個(gè)字節由8個(gè)位組成。
“位”的邏輯值為“1”或者“0”,但是在實(shí)際應用中,某種狀態(tài)的“有效值”可以是“1”,也可以是“0”?!坝行А本褪俏覀冋J為某個(gè)狀態(tài)已經(jīng)“激活”
字節、字、雙字都可以用來(lái)表示十進(jìn)制整數,顯然它們的數據長(cháng)度不同,能夠表示的數的大小范圍也不同。
無(wú)符號整數只有0和正整數;有符號整數可以有正數和負數。
有符號整數采用二進(jìn)制補碼的形式來(lái)表示負數。
在不需要高精度運算的條件下,使用整數可以簡(jiǎn)化編程,節省處理時(shí)間。
在S7-200中,實(shí)數(浮點(diǎn)數)是符合IEEE標準的32位實(shí)數,即單精度實(shí)數。實(shí)數格式按照一定的運算規律把32個(gè)二進(jìn)制位分組,表示極小或極大的數。
在S7-200中,ASCII字符是由表示字母、數字和一些特殊符號的ASCII編碼組成的二進(jìn)制數據字節,一個(gè)字節存儲一個(gè)字符。
ASCII(美國信息交換標準碼)是一種字符編碼格式,在一個(gè)字節長(cháng)度中不同的二進(jìn)制數值代表不同的字符。如字母A為41h(十六進(jìn)制數值),以十進(jìn)制看就是65;而數字5的ASCII值為35h,十進(jìn)制值為53。
S7-200中新引入了String(字符串)數據格式,其結構是在A(yíng)SCII字符字節串前面有一個(gè)串長(cháng)度。字符串最長(cháng)可以有255個(gè)數據字節。
字符串中也能包括漢字編碼,每個(gè)漢字占用兩個(gè)字節。
這是S7-200內部對ASCII字符串的格式定義,所有與字符串有關(guān)的指令都遵照這個(gè)格式。
例如:
圖1. 在數據塊中輸入ASCII數據和字符串
下載項目到S7-200 CPU,使用狀態(tài)圖在線(xiàn)監控可以看到:
圖2. 狀態(tài)圖
注意ASCII字節和字符串的區別。D6D0h是漢字“中”的編碼。
STEP 7-Micro/WIN V4.0以上版本完全支持字符串數據格式。
BCD意為“二進(jìn)制編碼的十進(jìn)制數”。BCD是一種編碼方式,是以二進(jìn)制數對十進(jìn)制數字的編碼,并因為16進(jìn)制的優(yōu)勢,改用十六進(jìn)制數字表示。
十進(jìn)制只有十個(gè)數字,所以以16進(jìn)制表示的BCD碼不會(huì )出現16進(jìn)制數字Ah - Fh。
十進(jìn)制數39用BCD碼表示就是39h,或16#39。BCD碼數值必須用16進(jìn)制查看才能得到正確結果。
BCD編碼往往在使用BCD編碼開(kāi)關(guān)輸入數據時(shí)用到;S7-200中讀出的時(shí)鐘日期數據也是以BCD編碼表示。
《S7-200系統手冊》關(guān)于PLC概念的一章非常有用,建議初學(xué)者必讀。
電話(huà):13916183699
郵箱:13916183699@139.com
網(wǎng)址:http://szhongqiang.com
地址:中國上海市青浦區北青公路7171號111-112室