用戶在編寫程序時,變量的格式必須與指令的數(shù)據(jù)類型相匹配。s7系列的數(shù)據(jù)類型主要分為基本數(shù)據(jù)類型、復(fù)合數(shù)據(jù)類型和參數(shù)類型,對于s7 - 1500 plc,還包括系統(tǒng)數(shù)據(jù)類型和硬件數(shù)據(jù)類型。
基本數(shù)據(jù)類型的操作數(shù)通常是32位以內(nèi)的數(shù)據(jù)。基本數(shù)據(jù)類型分為位數(shù)據(jù)類型、數(shù)學(xué)數(shù)據(jù)類型、字符數(shù)據(jù)類型、定時器數(shù)據(jù)類型以及日期和時間數(shù)據(jù)類型。在日期和時間數(shù)據(jù)類型中,存在超過32位的數(shù)據(jù)類型;對于s7 - 1500 plc而言,還增加了許多超過32位的此類數(shù)據(jù)類型。為方便比較學(xué)習(xí),故一并放在基本數(shù)據(jù)類型中進行介紹。
位數(shù)據(jù)類型主要有布爾型( bool)、字節(jié)型(byte)、字型(word)和雙字型( dword),對于s7 -1500 plc,還支持長字型(lword),而s7 - 300/400 plc僅支持前4種。
在位數(shù)據(jù)類型中,只表示存儲器中各位的狀態(tài)是0 (false)還是1(ture)。其長度可以是一位( bit)、一個字節(jié)(byte,8位)、一個字(word,16位)、一個雙字(double word,32位)或一個長字(long word,64位),分別對應(yīng)bool、byte、word、dword和lword類型。位數(shù)據(jù)類型通常用二進制或十六進制格式賦值,如2# 01010101、16# 283c等。需注意的是,一位布爾型數(shù)據(jù)類型不能直接賦常數(shù)值。
位數(shù)據(jù)類型的常數(shù)表示需要在數(shù)據(jù)之前根據(jù)存儲單元長度( byte、word、dword、lword)加上b#、w#、dw#或lw#(bool型除外),所能表示的數(shù)據(jù)范圍見表1。
表1 位數(shù)據(jù)類型的數(shù)據(jù)表示范圍

對于s7 - 1500 plc,數(shù)學(xué)數(shù)據(jù)類型主要有整數(shù)類型和實數(shù)類型(浮點數(shù)類型)。
整數(shù)類型又分為有符號整數(shù)類型和無符號整數(shù)類型。有符號整數(shù)類型包括短整數(shù)型( sint)、整數(shù)型(int)、雙整數(shù)型(dint)和長整數(shù)型(llnt);無符號整數(shù)類型包括無符號短整數(shù)型( usint)、無符號整數(shù)型(uint)、無符號雙整數(shù)型(udint)和無符號長整數(shù)型( ulint)。對于s7 - 300/400 plc,僅支持整數(shù)型int和雙整數(shù)型dint。
短整數(shù)型、整數(shù)型、雙整數(shù)型和長整數(shù)型數(shù)據(jù)為有符號整數(shù),分別為8位、16位、32位和64位,在存儲器中用二進制補碼表示,最高位為符號位(0表示正數(shù)、1表示負數(shù)),其余各位為數(shù)值位。而無符號短整數(shù)型、無符號整數(shù)型、無符號雙整數(shù)型和無符號長整數(shù)型數(shù)據(jù)均為無符號整數(shù),每一位均為有效數(shù)值。
實數(shù)類型具體包括實數(shù)型( real)和長實數(shù)型(lreal),均為有符號的浮點數(shù),分別占用32位和64位,最高位為符號位(0表示正數(shù)、1表示負數(shù)),接下來的8位(或11位)為指數(shù)位,剩余位為尾數(shù)位,共同構(gòu)成實數(shù)數(shù)值。實數(shù)的特點是利用有限的32位或64位可以表示一個很大的數(shù),也可以表示一個很小的數(shù)。對于s7 - 300/400 plc,僅支持實數(shù)型real。
原有的字符數(shù)據(jù)類型( char)長度為8 bit,操作數(shù)在存儲器中占一個字節(jié),以ascii碼格式存儲單個字符。常量表示時使用單引號,例如常量字符a表示為‘a(chǎn)’或char#′a′。表2列出了char數(shù)據(jù)類型的屬性。
表2 char數(shù)據(jù)類型的屬性
| 長度/bit | 格 式 | 取值范圍 | 輸入值示例 |
| 8 | ascii字符 | ascii字符集 | 'a ',char#′a′ |
對于s7 - 1500 plc,還支持寬字符類型(wchar),其操作數(shù)長度為16 bit,即在存儲器中占用2b,以unicode格式存儲擴展字符集中的單個字符。但只涉及整個unicode范圍的一部分。常量表示時需要加wchar#前綴及單引號,例如常量字符a表示為wchar#‘a(chǎn)’??刂谱址谳斎霑r,以美元符號表示。表3列出了wchar數(shù)據(jù)類型的屬性。
表3 wchar數(shù)據(jù)類型的屬性
| 長度/bit | 格 式 | 取值范圍 | 輸入值示例 |
| 16 | unicode字符 | $0000~$d7ff | wchar#'a', wchar#'$0041' |
定時器數(shù)據(jù)類型主要包括時間( time)和s5時間(s5time)數(shù)據(jù)類型。與s7 - 300/400 plc相比,s7 - 1500 plc還支持長時間(ltime)數(shù)據(jù)類型。
時間( time)數(shù)據(jù)類型為32位的iec定時器類型,內(nèi)容用毫秒(ms)為單位的雙整數(shù)表示,可以是正數(shù)或負數(shù),表示信息包括天(d)、小時(h)、分鐘(m)、秒(s)和毫秒( ms)。表4列出了time數(shù)據(jù)類型的屬性。
表4 time數(shù)據(jù)類型的屬性

s5時間(s5 time)數(shù)據(jù)類型變量為16 bit,其中最高兩位未用,接下來的兩位為時基信息(00表示0. 01 s,01表示0.1 s,10表示1s,11表示10 s),剩余12位為bcd碼格式的時間常數(shù),其范圍為0~ 999,如圖1所示。該格式所表示的時間為時間常數(shù)與時基的乘積。s5 time的常數(shù)格式為時間之前加s5t#,例如s5t#16sl00 ms,以時基0.1 s表示的時間常數(shù)為161,故對應(yīng)的變量內(nèi)容為2#0001 0001 0110 0001。
表5 列出了s5 time數(shù)據(jù)類型的取值范圍等屬性。
表5 s5time數(shù)據(jù)類型的屬性


圖1 s5 time時間格式
長時間( ltime)數(shù)據(jù)類型為64位iec定時器類型,操作數(shù)內(nèi)容以納秒(ns)為單位的長整數(shù)表示,可以是正數(shù)或負數(shù)。表示信息包括天(d)、小時(h)、分鐘(m)、秒(s)、毫秒( ms)、微秒(μs)和納秒(ns)。常數(shù)表示格式為時間前加lt#,如lt#11ns。表6列出了ltime數(shù)據(jù)類型的屬性。
表6 ltime數(shù)據(jù)類型的屬性











