有两种变量类型:
下面列出了基本变量类型。
数据类型 |
描述 |
BOOL | 此变量存储 0 或 1。 |
SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, BYTE | 这些变量存储整数值。与浮点类型变量相比,处理速度更快。 |
这些变量存储字类型值。 | |
这些变量存储文本字符串。 | |
这些变量存储浮点值。REAL 变量可以存储比整型变量更大的值(如计算和常量)。 | |
这些变量存储时间和日期值。 |
数据类型 |
有符号 |
数据长度 |
数据范围 |
SINT |
2 的补码 |
8 位 |
-128...127 |
USINT |
- |
8 位 |
0...255 |
INT |
2 的补码 |
16 位 |
-32768...32767 |
UINT |
- |
16 位 |
0...65535 |
DINT |
2 的补码 |
32 位 |
-2147483648...2147483647 |
UDINT |
- |
32 位 |
0...4294967295 |
LINT |
2 的补码 |
64 位 |
-9223372036854775808...9223372036854775807 |
ULINT |
- |
64 位 |
0...18446744073709551615 |
BYTE |
- |
8 位 |
0...255 |
数据类型 | 数据长度 | 数据范围 |
WORD |
16 位 |
0...65535 |
DWORD |
32 位 |
0...4294967295 |
LWORD |
64 位 |
0...18446744073709551615 |
数据类型 | 描述 |
STRING |
存储多达 512 字节的文本。 当使用外部变量时,字符串编码由该变量的 [字符串编码] 属性定义。 可用的字符串编码值为: UTF8, UTF16, ShiftJIS, CodePage850, GB2312, BIG5, KSC5601, CodePage1251, CodePage874, 和 CodePage1252。
|
WSTRING |
存储多达 512 字的双字节文本。 只能将 WSTRING 数据类型与外部变量一起使用。 字符串编码固定为 UTF16。您不能改变变量属性中的 [字符串编码] 设置,且设备属性中的编码会被忽略。 |
您可定义字符变量可在[字节数/字数]属性中存储的字节或字数。
通过NULL (0x00) 或[字节数]识别文本字符串结尾。
对于所选变量或驱动程序,如果所使用文本的字符代码不能由[字符串编码]转换,则字符串的结尾由字符代码识别。
字数据的高/低阶关系取决于所选驱动程序中的[字符串模式]。
数据类型 | 数据长度 | 数据范围 |
REAL | 32 位 |
+/-3.402823E38 ...+/-1.1754944E-38 |
LREAL | 64 位 |
+/-4.19E-307 ...+/-1.67E308 |
REAL 变量的精度限制为 7 位。如果需要数据精度(例如比较操作),请使用整形变量。
示例
示例1:对于值 1.2345678,当第八个数字被删除 (1.234567 后面) 时,得到的值是近似值。
示例2:存储在 REAL 变量中的值 0.1 可能会导致 0.1000000014901161。
使用外部 REAL 变量时,确保“设备配置”中的“双字顺序”设置和设备中的设置匹配。如果设置不匹配,将不会正确显示外部 REAL 变量的值。
用句号 (.) 表示变量值的小数点。小数点不支持使用逗号 (,)。
即使在屏幕编辑软件或人机界面中使用了逗号 (,) 作为变量值的小数点,也会出现意外的结果,如显示错误,逗号被忽略等。
数据类型 | 描述 | 数据范围 |
TIME |
以天和时间为单位存储运行时间。 | - 24 d 20 h 31 m 23 s 648 ms ... 24 d 20 h 31 m 23 s 647 ms 当 TIME 变量的 [初始值] 和 [输入范围] 属性设置为负值时,每个时间单位都会显示负号。(例如: -24d -20:-31:-23.-648) |
DATE | 存储日期。 | 当使用 SP5000 系列 Open Box (Windows 10 IoT Enterprise 型)、IPC 系列或 PC/AT 时 1970/01/01 ... 2106/02/07 以上之外的型号 1970/01/01 ...2038/01/19 |
TIME_OF_DAY | 存储时间。 | 00:00:00 ... 23:59:59 |
DATE_AND_TIME |
将 DATE 和 TIME_OF_DAY 结合。 | 当使用 SP5000 系列 Open Box (Windows 10 IoT Enterprise 型)、IPC 系列或 PC/AT 时 以上之外的型号 |
使用这些变量时,请将外接设备上的数据类型与存储数据的值匹配。
如果输入的值不在外接设备地址的范围内,则输入的值将显示在画面上,但不会在外接设备地址中设置。
将变量与不同的数据类型关联时,有时源变量的值会被一个公共的结果值覆盖。
例如,将实数变量转换为整数变量:将 123.4 设置为 REAL 变量,然后将值写入 INT 变量,结果为 123。REAL 变量的值也更新为 123。
当从外接设备向 DATE_AND_TIME 变量输入整数值时,存储的值会根据人机界面的时区进行偏移。因此,对于整数值输入,日期/时间显示中显示的日期和时间因时区而异。
SP5000 系列 Open Box (Windows 10 IoT Enterprise 型)、IPC 系列或 PC/AT
从外部设备输入整数值 | UTC+0 (范围: 1970/01/01 00:00:00 ...2106/02/07 06:28:15) | UTC+9 (范围: 1970/01/01 9:00:00 ... 2106/02/07 15:28:15) |
0 | 1970/01/01 00:00:00 | 2106/02/07 06:28:16 |
1 | 1970/01/01 00:00:01 | 2106/02/07 06:28:17 |
: | : | : |
32399 | 1970/01/01 08:59:59 | 2106/02/07 15:28:15 |
32400 | 1970/01/01 09:00:00 | 1970/01/01 09:00:00 |
: | : | : |
4294967295 | 2106/02/07 06:28:15 | 2106/02/07 06:28:15 |
以上之外的型号
从外部设备输入整数值 | UTC+0 (范围: 1970/01/01 00:00:00 ... 2038/01/19 03:14:07) | UTC+9 (范围: 1970/01/01 9:00:00 ... 2038/01/19 12:14:07) |
0 | 1970/01/01 00:00:00 | 2038/01/19 03:14:08 |
1 | 1970/01/01 00:00:01 | 2038/01/19 03:14:09 |
: | : | : |
32399 | 1970/01/01 08:59:59 | 2038/01/19 12:14:07 |
32400 | 1970/01/01 09:00:00 | 1970/01/01 09:00:00 |
: | : | : |
2147483647 | 2038/01/19 03:14:07 | 2038/01/19 03:14:07 |
下面是用户数据类型变量的类型。
数组容器和结构容器也被算作变量。
数组是具有相同数据类型的变量的集合。数组中的每一个变量被称为元素。
要理解数组变量的工作原理,请将变量想象成一个盒子。如下图所示,变量 Number 是一个盒子,其中含有一个值。
将数组想象成是一排盒子,其中每个盒子都对应一个数字。在下图中,数组变量 Number 包含 5 个元素,即 0-4。变量值则分别存储在这 5 个盒子中。
要指定数组中的每个变量,请指定变量名称,后跟用方括号 [ ] 括起来的元素编号。
(示例) 包含 5 个元素的数组
元素编号通常以 0 开头,但也可以以正值或负值开头。
(示例) 数组从元素编号 -1 开始有 5 个元素
多维数组是包含其他数组的数组。例如,包含两个 DINT 数组的数组就是一个二维数组。
在 [工程浏览器] 窗口的 [变量] → [全部用户数据类型] → [数组],在 [尺寸] 列设置数组维度和元素数量。
有关设计数组的步骤,请参阅以下内容。
对于一维数组,只需指定数组中的元素。
(示例) 对于元素数 = 3 的一维数组,输入 "3"。
对于多维数组,在 [尺寸] 字段中,指定每个维度的元素数量,用逗号 (,) 分隔。
(示例) 如果二维数组的第一维有 3 个元素 (起始数 = 0),第二维有 4 个元素 (起始数 = 0),请输入 "3,4"。
该数组定义用于创建如下所示的数组变量 Var1。
要将元素的起始编号设置为 0 以外的其他编号,请输入起始元素编号和最后一个元素编号,中间用两个句点 (..) 隔开,而不是输入元素编号,[元素数量] 字段将计算元素总数。
(示例) 要设置一个二维数组,其中第一维从元素 0 开始有 3 个元素,第二维从元素 3 开始有 4 个元素,请输入 "3,3..6”。
输入后,"3..6” 转换为 4 个元素,其数组维度从元素编号 3 开始。
该数组创建了数组变量 Var1,如下所示。
要访问数组中某个连续值范围内的变量值,间接寻址是最快的一种方式,这种方式不但可以最大限度地减少内存占用,还可以在几毫秒内更新值。
对于数组的间接寻址,可通过变量值或对象的属性值指定数组元素编号,从而动态指定数组的元素。
通过对象的属性值间接指定数组元素编号时,请在对象名称前输入 "$GraphicalObject"。
基于输入辅助功能,在输入或源属性字段中输入 "$" 后,可从选项列表中选择 "$GraphicalObject",轻松输入字符串。
数组的间接寻址支持以下内容:
可以用于[表达式]转换器。
(示例: Array11[DINT1.value+2], Array21[Int2[Int3[Int1+1]]], Array31[Int1*4-(Int2+Int4/4)])
所有变量数据类型最多都可支持 5 级嵌套。
(示例: Array11[Array22[DINT1.value],DINT02.value])
结构变量是包含其他变量集合的变量。结构中的每一个变量被称为元素。元素可以为任何数据类型。
您可以通过将其它的结构或数组作为一个元素添加来创建嵌套的结构。
将结构想象成是一组盒子,有一个元素与每个盒子关联。
在下图中,结构组变量 DATA 包含 3 个元素。变量值则分别存储在这 3 个盒子中。
当要存储在变量中的值超出范围(最小/最大值)时,将按如下方式处理该值。
数据类型 | 描述 |
STRING, WSTRING |
存储可以容纳的字符。 |
除上述以外 | 超出输入范围的部分的值从输入范围的下限重新计数并存储。 示例)无符号 8 位变量(值范围:0…255) 例1:如果尝试存储 256,则 0 存储在变量中。(当超过上限值 1 时,将存储下限值 0。) 例2:如果尝试存储 257,则1存储在变量中。(当超过上限值 2 时,将存储下限值 1 的第二个值。) |
超出输入范围的部分的值从输入范围的下限重新计数并存储。
(示例):无符号 8 位变量(值范围:0…255)
例1:如果尝试存储 256,则 0 存储在变量中。(当超过上限值 1 时,将存储下限值 0。)
例2:如果尝试存储 257,则1存储在变量中。(当超过上限值 2 时,将存储下限值 1 的第二个值。)
数据类型 | 描述 |
STRING, WSTRING |
存储可以容纳的字符。 |
除上述以外 | 以下值四舍五入到上限或下限值。
|
不存储值。
数据类型 | 描述 |
BOOL, REAL, LREAL |
不存储值。 |
LINT, ULINT, LWORD |
以下值四舍五入到上限或下限值。
|
STRING, WSTRING |
存储可以容纳的字符。 |
除上述以外 | 超出输入范围的部分的值从输入范围的下限重新计数并存储。 (示例):无符号 8 位变量(值范围:0…255) 例1:如果尝试存储 256,则 0 存储在变量中。(当超过上限值 1 时,将存储下限值 0。) 例2:如果尝试存储 257,则1存储在变量中。(当超过上限值 2 时,将存储下限值 1 的第二个值。) |