S7-1200 全局DB中的數據類型,包括基本數據類型、系統數據類型和硬件數據類型。
在DB塊中,新建一個變量,在數據類型列的下拉列表中,選擇需要的數據類型。
基本數據類型
基本數據類型:包括位、位字符串、整數、浮點數、定時器、日期&時間、字符、數組和結構
1.位和位字符串
2.整數數據類型
3.浮點型實數數據類型
如 ANSI/IEEE 754-1985 標準所述,實(或浮點)數以 32 位單精度數 (Real) 或 64 位雙精度數 (LReal) 表示。 單精度浮點數的精度最高為 6 位有效數字,
而雙精度浮點數的精度最高為 15 位有效數字。在輸入浮點常數時,最多可以指定 6 位 (Real) 或 15 位 (LReal) 有效數字來保持精度。
4.時間和日期數據類型
TIME 數據作為有符號雙整數存儲,基本單位為毫秒。存儲的數值是多少,就代表有多少ms。 編輯時可以選擇性使用日期 (d)、小時(h)、分鐘 (m)、秒 (s) 和毫秒 (ms) 作為單位。
不需要指定全部時間單位。 例如,T#5h10s 和 500h 均有效。所有指定單位值的組合值不能超過以毫秒表示的時間日期類型的上限或下限(-2,147,483,648 ms 到 +2,147,483,647 ms)。
DATE 數據作為無符號整數值存儲,被解釋為添加到基礎日期 1990 年 1 月 1 日的天數,用以獲取指定日期。 編輯器格式必須指定年、月和日。
TOD (TIME_OF_DAY) 數據作為無符號雙整數值存儲,被解釋為自指定日期的凌晨算起的毫秒數(凌晨 = 0 ms)。 必須指定小時(24 小時/天)、分鐘和秒。 可以選擇指定小數秒格式。
DTL(日期和時間長型)數據類型使用 12 個字節的結構保存日期和時間信息??梢栽趬K的臨時存儲器或者 DB 中定義 DTL 數據。 必須在 DB 編輯器的"起始值"(Start value) 列為所有組件輸入一個值。
DTL結構的元素如下表:
5.字符和字符串數據類型
Char 在存儲器中占一個字節,可以存儲以 ASCII 格式(包括擴展 ASCII 字符代碼)編碼的單個字符。 WChar 在存儲器中占一個字的空間,可包含任意雙字節字符表示形式。
編輯器語法在字符的前面和后面各使用一個單引號字符??梢允褂每梢娮址涂刂谱址?。
CPU 支持使用 String 數據類型存儲一串單字節字符。 String 數據類型包含總字符數(字符串中的字符數)和當前字符數。 String 類型提供了多達 256
個字節,用于在字符串中存儲最大總字符數(1 個字節)、當前字符數(1 個字節)以及最多 254 個字節。 String 數據類型中的每個字節都可以是從 16#00 到16#FF 的任意值。
String 數據類型示例:
WString 數據類型支持單字(雙字節)值的較長字符串。第一個字包含最大總字符數;下一個字包含總字符數,接下來的字符串可包含多達 65534 個字。 每個字都可以是從 16#0000 到 16#FFFF 的任意值。
WString 數據類型示例:
6.數組數據類型
可以創建包含多個相同數據類型元素的數組,請為數組命名并選擇數據類型"Array [lo .. hi] of type",然后根據如下說明編輯"lo"、"hi"和"type":
● lo - 數組的起始(最低)下標
● hi - 數組的結束(最高)下標
● type - 數據類型之一,例如 BOOL、SINT、UDINT
示例: 數組聲明
ARRAY[1..20] of REAL 一維,20 個元素
ARRAY[-5..5] of INT 一維,11 個元素
ARRAY[1..2, 3..4] of CHAR 二維,4 個元素
示例: 數組地址
ARRAY1[0] ARRAY1 元素 0
ARRAY2[1,2] ARRAY2 元素 [1,2]
ARRAY3[i,j] 如果 i =3 且 j=4,則對 ARRAY3 的元素 [3, 4] 進行尋址
6.結構數據類型
STRUCT 數據類型表示由固定數目的多種數據類型的元素組成的數據結構。 數據類型 STRUCT 或 ARRAY 的元素還可以在結構中嵌套。 嵌套深度限制為 8 級。 結構可用于根據過程控制系統分組數據以及作為一個數據單元來傳送參數。
對于 S7-1200 或 S7-1500 系列 CPU,可最多創建 65534 個結構。 其中每個結構可最多包括 252 個元素。
下圖為數據類型 STRUCT 的示例:
結構所在的DB塊名為“結構示例”,則可以使用 "結構示例".產品規格.長度 訪問結構的第一個元素長度。
系統數據類型
系統數據類型:系統數據類型 (SDT) 由系統提供并具有預定義的結構。 系統數據類型的結構由固定數目的可具有各種數據類型的元素構成。 不能更改系統數據類型的結構。
系統數據類型只能用于特定指令。 下表給出了可用的系統數據類型及其用途:
統數據類型 | 長度(字節) | 說明 |
---|---|---|
IEC_TIMER | 16 | 定時值為 TIME 數據類型的定時器結構。 例如,此數據類型可用于“TP”、“TOF”、“TON”、“TONR”、“RT”和“PT”指令。 |
IEC_SCOUNTER | 3 | 計數值為 SINT 數據類型的計數器結構。 例如,此數據類型用于“CTU”、“CTD”和“CTUD”指令。 |
IEC_USCOUNTER | 3 | 計數值為 USINT 數據類型的計數器結構。 例如,此數據類型用于“CTU”、“CTD”和“CTUD”指令。 |
IEC_COUNTER | 6 | 計數值為 INT 數據類型的計數器結構。 例如,此數據類型用于“CTU”、“CTD”和“CTUD”指令。 |
IEC_UCOUNTER | 6 | 計數值為 UINT 數據類型的計數器結構。 例如,此數據類型用于“CTU”、“CTD”和“CTUD”指令。 |
IEC_DCOUNTER | 12 | 計數值為 DINT 數據類型的計數器結構。 例如,此數據類型用于“CTU”、“CTD”和“CTUD”指令。 |
IEC_UDCOUNTER | 12 | 計數值為 UDINT 數據類型的計數器結構。 例如,此數據類型用于“CTU”、“CTD”和“CTUD”指令。 |
ERROR_STRUCT | 28 | 編程錯誤信息或 I/O 訪問錯誤信息的結構。 例如,此數據類型用于“GET_ERROR”指令。 |
CREF | 8 | 數據類型 ERROR_STRUCT 的組成,在其中保存有關塊地址的信息。 |
NREF | 8 | 數據類型 ERROR_STRUCT 的組成,在其中保存有關操作數的信息。 |
硬件數據類型
硬件數據類型:硬件數據類型由 CPU 提供。 可用硬件數據類型的數目取決于 CPU。
根據硬件配置中設置的模塊存儲特定硬件數據類型的常量。 在用戶程序中插入用于控制或激活已組態模塊的指令時,可將這些可用常量用作參數。
HW_ANY | WORD | 任何硬件組件(如模塊)的標識。 |
HW_DEVICE | HW_ANY | DP 從站/PROFINET IO 設備的標識 |
HW_DPSLAVE | HW_DEVICE | DP 從站的標識 |
HW_IO | HW_ANY | CPU 或接口的標識號 該編號在 CPU 或硬件配置接口的屬性中自動分配和存儲。 |
HW_IOSYSTEM | HW_ANY | PN/IO 系統或 DP 主站系統的標識 |
HW_SUBMODULE | HW_IO | 重要硬件組件的標識 |
HW_INTERFACE | HW_SUBMODULE | 接口組件的標識 |
HW_IEPORT | HW_SUBMODULE | 端口的標識 (PN/IO) |
HW_HSC | HW_SUBMODULE | 高速計數器的標識 此數據類型用于“CTRL_HSC”和“CTRL_HSC_EXT”指令。 |
HW_PWM | HW_SUBMODULE | 脈沖寬度調制標識 例如,此數據類型用于“CTRL_PWM”指令。 |
HW_PTO | HW_SUBMODULE | 脈沖編碼器標識 該數據類型用于運動控制。 |
AOM_IDENT | DWORD | AS 運行系統中對象的標識 |
EVENT_ANY | AOM_IDENT | 用于標識任意事件 |
EVENT_ATT | EVENT_ANY | 用于指定動態分配給 OB 的事件。 例如,此數據類型用于“ATTACH”和“DETACH”指令。 |
EVENT_HWINT | EVENT_ATT | 用于指定硬件中斷事件 |
OB_ANY | INT | 用于指定任意組織塊。 |
OB_DELAY | OB_ANY | 用于指定發生延時中斷時調用的組織塊。 例如,此數據類型用于“SRT_DINT”和“CAN_DINT”指令。 |
OB_TOD | OB_ANY | 指定時間中斷 OB 的數量。 例如,此數據類型用于“SET_TINT”、“CAN_TINT”、“ACT_TINT”和“QRY_TINT”指令。 |
OB_CYCLIC | OB_ANY | 用于指定發生看門狗中斷時調用的組織塊。 |
OB_ATT | OB_ANY | 用于指定動態分配給事件的組織塊。 例如,此數據類型用于“ATTACH”和“DETACH”指令。 |
OB_PCYCLE | OB_ANY | 用于指定分配給“循環程序”事件類別事件的組織塊。 |
OB_HWINT | OB_ATT | 用于指定發生硬件中斷時調用的組織塊。 |
OB_DIAG | OB_ANY | 用于指定發生診斷中斷時調用的組織塊。 |
OB_TIMEERROR | OB_ANY | 用于指定發生時間錯誤時調用的組織塊。 |
OB_STARTUP | OB_ANY | 用于指定發生啟動事件時調用的組織塊。 |
PORT | HW_SUBMODULE | 用于指定通信端口。 該數據類型用于點對點通信。 |
RTM | UINT | 用于指定運行小時計數器值。 例如,此數據類型用于“RTM”指令。 |
PIP | UINT | 用于創建和連接“同步循環”OB。此數據類型用于 SFC 26、27、126 和 127。 |
CONN_ANY | WORD | 用于指定任意連接。 |
CONN_PRG | CONN_ANY | 用于指定通過 UDP 進行開放式通信的連接。 |
CONN_OUC | CONN_ANY | 用于指定通過工業以太網 (PROFINET) 進行開放式通信的連接。 |
DB_ANY | UINT | 任意 DB 的標識(數量) 數據類型“DB_ANY”在“Temp”區域中的長度為 0。 |
DB_WWW | DB_ANY | 通過 Web 應用生成的 DB 的數量(例如,“WWW”指令) 數據類型“DB_WWW”在“Temp”區域中的長度為 0。 |