PLC是工業(yè)控制不可缺少的自動(dòng)化核心設(shè)備,要想學(xué)好PLC就必須要先了解數(shù)據(jù)類(lèi)型。數(shù)據(jù)類(lèi)型是所有自動(dòng)化軟件的基礎(chǔ),只有熟練掌握,才能隨心所欲的駕馭。下面我們就以西門(mén)子S7-200為例,詳細(xì)講述這些數(shù)據(jù)類(lèi)型。S7-200SMART和S7-200類(lèi)似。
西門(mén)子編程中基本的數(shù)據(jù)類(lèi)型共7種,分別是:
位bit、字節(jié)byte、字word、雙字double word、整數(shù)型int、雙整數(shù)dint、實(shí)數(shù)real。
關(guān)系公式:1雙字=2字=4字節(jié)=32位
1.位:BOOL,只有兩個(gè)值0和1,如I0.0,Q0.2等
2.字節(jié):一個(gè)字節(jié)等于8位,范圍是0~7,如IB0包括I0.0-I0.7。
3.字:相鄰的兩字節(jié)組成一個(gè)字,表示一個(gè)無(wú)符號(hào)數(shù),因此字為16位。如IW0由IB0和IB1組成。
4.雙字:相鄰的兩個(gè)字組成一個(gè)雙字,來(lái)表示一個(gè)無(wú)符號(hào)數(shù)。如MD4由MW4和MW6組成。
5.整數(shù):為有符號(hào)數(shù),最高位為符號(hào)位,1表示正數(shù),0表示負(fù)數(shù)。
6.浮點(diǎn)數(shù):可以用來(lái)表示小數(shù)。
VW:V寄存器字。
IW:輸入字。
QW:輸出字。
MW:M寄存器字。
SMW:系統(tǒng)寄存器字。
LW:臨時(shí)寄存器字。
AIW:模擬量輸入字 。
MWx表示數(shù)據(jù)格式為字WORD或整數(shù)INT的內(nèi)部寄存器地址。
MW0表示偏移地址為0的內(nèi)存字,MW8表示偏移地址為8的內(nèi)存字。
西門(mén)子PLC的QW0用法如下:
西門(mén)子PLC系統(tǒng)基本上是以字節(jié)為單位的,所以,其數(shù)據(jù)格式為字WORD或整數(shù)INT的”規(guī)范“偏移地址是以2為步進(jìn)量的,例如:MW2、MW4、MW6;(MW1這種地址也是允許的,但必須自行保證程序中所使用的數(shù)據(jù)地址不復(fù)用)。
基本數(shù)據(jù)類(lèi)型由以下幾種:
1.1、位(bit)
定義為BOOL(布爾型),只有兩個(gè)值:0 或 1。如:I0.0,Q0.1,M0.0,V0.1 等。
1.2、字節(jié)(Byte)
定義一個(gè)字節(jié)(Byte)等于8 位(Bit),其中0位為最低位,7 位為最高位。
如:IB0(包括 I0.0~I(xiàn)0.7 位),QB0(包括Q0.0~Q0.7 位),MB0,VB0 等。
用十六進(jìn)制表示的范圍為:00~FF,用十進(jìn)制表示的范圍為 0~255。
定義相鄰的兩字節(jié)(Byte)組成一個(gè)字(Word),表示一個(gè)無(wú)符號(hào)整數(shù),所以一個(gè)字為16位。
如:IW0 由 IB0 和 IB1 組成的,其中I是輸入映象寄存器,W表示字,0是字的起始字節(jié)。特別注意的是:起始字節(jié)必須是偶數(shù)。
字的范圍為十六進(jìn)制的 0000~FFFF,十進(jìn)制的 0~65536。
在編程時(shí),如果已經(jīng)使用 IW0,如果想再用 IB0或 IB1,就要特別慎重,避免重復(fù)定義。
相鄰的兩個(gè)字(Word)組成一個(gè)雙字,來(lái)表示一個(gè)無(wú)符號(hào)數(shù)。因此,雙字為 32 位。
如:MD100 是由 MW100 和 MW102 組成的,其中M是位存儲(chǔ)區(qū),D表示雙字,100是雙字的起始字節(jié)。特別注意的是:雙字的起始字節(jié)也必須是偶數(shù)。
雙字的范圍為十六進(jìn)制的 0000~FFFFFFFF(即十進(jìn)制的 0~4294967295)。
在編程時(shí)如果已經(jīng)使用了MD100,如果再用 MW100或MW102,就要特別慎重,避免重復(fù)定義。
特別注意:以上的字節(jié)、字和雙字?jǐn)?shù)據(jù)類(lèi)型均為無(wú)符號(hào)數(shù),即只有正數(shù),沒(méi)有負(fù)數(shù)。
1.5、16位整數(shù)(INT,Integer)
整數(shù)為有符號(hào)數(shù),最高位為符號(hào)位,1表示負(fù)數(shù),0表示正數(shù)。范圍為-32768~32767。
1.6、32 位整數(shù)(DINT,DoubleInteger)
32 位整數(shù)和16位整數(shù)一樣,為有符號(hào)數(shù),最高位為符號(hào)位,1表示負(fù)數(shù),0表示正數(shù)。范圍為-2147483648~2147483647。
浮點(diǎn)數(shù)為 32 位,可以用來(lái)表示小數(shù)。浮點(diǎn)數(shù)可以為:1.m×2e。數(shù)據(jù)類(lèi)型VB,VW,VD關(guān)系
用戶(hù)通過(guò)復(fù)合基本數(shù)據(jù)類(lèi)型而生成就是復(fù)合數(shù)據(jù)類(lèi)型。
復(fù)合數(shù)據(jù)類(lèi)型包括以下幾種:
2.1、數(shù)組(ARRAY)
將一組同一類(lèi)型的數(shù)據(jù)組合在一起組成一個(gè)單位就是數(shù)組。
2.2、結(jié)構(gòu)(STRUCT)
將一組同不同類(lèi)型的數(shù)據(jù)組合在一起組成一個(gè)單位就是結(jié)構(gòu)。
2.3、字符串(STRING)
字符串是由最多 254 個(gè)字符組成的一維數(shù)組。
2.4、日期和時(shí)間(DATE-AND-TIME)
用于存儲(chǔ)年、月、日、時(shí)、分、秒、毫秒和星期的數(shù)據(jù)。占用 8 個(gè)字節(jié),BCD 編碼。
星期天代碼為1,星期一~星期六代碼分別是 2~7。
如:DT#2004_07_15_12:30:15.200 為 2004 年 7 月 15 日 12 時(shí) 30 分 15.2 秒。
2.5、用戶(hù)定義的數(shù)據(jù)類(lèi)型(UDT,User-DefinedDataType)
由用戶(hù)將基本數(shù)據(jù)類(lèi)型和復(fù)合數(shù)據(jù)類(lèi)型組合在一起形成的數(shù)據(jù)類(lèi)型。
可以在數(shù)據(jù)塊DB和變量聲明表中定義復(fù)合數(shù)據(jù)類(lèi)型。
3、數(shù)據(jù)類(lèi)型匯總表格
對(duì)于有符號(hào)的整數(shù)來(lái)說(shuō),最高位用作符號(hào)位,余下的位才是數(shù)值部分。
下面以有符號(hào)整數(shù)INT來(lái)舉例說(shuō)明其數(shù)值范圍為什么是-32768-32767?
最高位是符號(hào)位,0為“+”、1為“-,去掉一個(gè)符號(hào)位后,余下的數(shù)據(jù)只有15位。
15位二進(jìn)制1對(duì)應(yīng)的整數(shù)最大正整數(shù)為2^15-1=32767,最大值為+32767,對(duì)應(yīng)二進(jìn)制:0111 1111 1111 1111。即十進(jìn)制范圍:0~32767;
15位二進(jìn)制1對(duì)應(yīng)的整數(shù)最大負(fù)整數(shù)為-2^15=-32768,最大值為-32768,對(duì)應(yīng)二進(jìn)制:1111 1111 1111 1111。即十進(jìn)制范圍:-32768~-1;
其實(shí),數(shù)據(jù)類(lèi)型簡(jiǎn)單也復(fù)雜,尤其是自定義數(shù)據(jù)類(lèi)型。看得懂,并不代表你能在編程過(guò)程中能正確使用。只有自己動(dòng)手編程,對(duì)不同的數(shù)據(jù)類(lèi)型進(jìn)行定義和使用,才能有深入地理解和掌握。當(dāng)你對(duì)數(shù)據(jù)類(lèi)型充分理解后,就可以學(xué)習(xí)數(shù)據(jù)的尋址。堅(jiān)持不懈的學(xué)習(xí)和實(shí)際編程,才會(huì)有可能成為變成專(zhuān)家。