S7-1200 全局DB中的数据类型介绍
S7-1200 全局DB中的数据类型介绍
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 个字节的结构保存日期和时间信息。可以在块的临时存储器或者 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。 |