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