数据类型

有两种变量类型:

 

注:

 

基本变量

下面列出了基本变量类型。

数据类型

描述

BOOL 此变量存储 0 或 1。
SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, BYTE 这些变量存储整数值。与浮点类型变量相比,处理速度更快。

WORD, DWORD, LWORD

这些变量存储字类型值。

STRING, WSTRING

这些变量存储文本字符串。

REAL, LREAL

这些变量存储浮点值。REAL 变量可以存储比整型变量更大的值(如计算和常量)。

TIME, DATE, TIME_OF_DAY, DATE_AND_TIME

这些变量存储时间和日期值。

SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, BYTE

数据类型

有符号

数据长度

数据范围

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, DWORD, LWORD

数据类型 数据长度 数据范围

WORD

16 位

0...65535

DWORD

32 位

0...4294967295

LWORD

64 位

0...18446744073709551615

STRING, WSTRING

数据类型 描述

STRING

存储多达 512 字节的文本。

当使用外部变量时,字符串编码由该变量的 [字符串编码] 属性定义。

可用的字符串编码值为: UTF8, UTF16, ShiftJIS, CodePage850, GB2312, BIG5, KSC5601, CodePage1251, CodePage874, 和 CodePage1252。

注:

  • 您也可以在设备属性中配置字符串编码。变量属性设置优先于设备属性。在变量的 [字符串编码] 属性中,选择 [设备设置类型] 以应用设备的字符串编码设置。
  • 只有当驱动程序支持字符串编码时,才会显示 [字符串编码] 属性。

WSTRING

存储多达 512 字的双字节文本。

只能将 WSTRING 数据类型与外部变量一起使用。

字符串编码固定为 UTF16。您不能改变变量属性中的 [字符串编码] 设置,且设备属性中的编码会被忽略。

注:

  • 您可定义字符变量可在[字节数/字数]属性中存储的字节或字数。

  • 通过NULL (0x00) 或[字节数]识别文本字符串结尾。

  • 对于所选变量或驱动程序,如果所使用文本的字符代码不能由[字符串编码]转换,则字符串的结尾由字符代码识别。

  • 字数据的高/低阶关系取决于所选驱动程序中的[字符串模式]。

REAL, LREAL

数据类型 数据长度 数据范围
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, DATE, TIME_OF_DAY, DATE_AND_TIME

数据类型 描述 数据范围

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 时
1970/01/01 00:00:00 UTC ...2106/02/07 06:28:15 UTC

以上之外的型号
1970/01/01 00:00:00 UTC ...2038/01/19 03:14:07 UTC

注:

  • 使用这些变量时,请将外接设备上的数据类型与存储数据的值匹配。
    如果输入的值不在外接设备地址的范围内,则输入的值将显示在画面上,但不会在外接设备地址中设置。

  • 将变量与不同的数据类型关联时,有时源变量的值会被一个公共的结果值覆盖。

    例如,将实数变量转换为整数变量:将 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",轻松输入字符串。

 

数组的间接寻址支持以下内容:

 

结构变量

结构变量是包含其他变量集合的变量。结构中的每一个变量被称为元素。元素可以为任何数据类型。

您可以通过将其它的结构或数组作为一个元素添加来创建嵌套的结构。

将结构想象成是一组盒子,有一个元素与每个盒子关联。

在下图中,结构组变量 DATA 包含 3 个元素。变量值则分别存储在这 3 个盒子中。

输入值超出输入范围时的操作

当要存储在变量中的值超出范围(最小/最大值)时,将按如下方式处理该值。

 

注:

  • 有关值更改操作的详细信息,请参阅值更改

 

在外接设备上超过该值时

数据类型 描述

STRING, WSTRING

存储可以容纳的字符。
除上述以外

超出输入范围的部分的值从输入范围的下限重新计数并存储。

示例)无符号 8 位变量(值范围:0…255)

例1:如果尝试存储 256,则 0 存储在变量中。(当超过上限值 1 时,将存储下限值 0。)

例2:如果尝试存储 257,则1存储在变量中。(当超过上限值 2 时,将存储下限值 1 的第二个值。)

 

通过值更改操作 [Loop] 超过该值时

超出输入范围的部分的值从输入范围的下限重新计数并存储。

(示例):无符号 8 位变量(值范围:0…255)

例1:如果尝试存储 256,则 0 存储在变量中。(当超过上限值 1 时,将存储下限值 0。)

例2:如果尝试存储 257,则1存储在变量中。(当超过上限值 2 时,将存储下限值 1 的第二个值。)

通过值更改操作 [Stop] 超过该值时

数据类型 描述

STRING, WSTRING

存储可以容纳的字符。
除上述以外

以下值四舍五入到上限或下限值。

  • BOOL
    1/0
  • SINT
    127/-128
  • USINT, BYTE
    255/0
  • INT
    32767/-32768
  • UINT, WORD
    65535/0
  • DINT
    2147483647/-2147483648
  • UDINT, DWORD
    4294967295/0
  • LINT
    9223372036854775807/-9223372036854775808
  • ULINT, LWORD
    18446744073709551615/0
  • REAL, LREAL
    取决于属性设置。
  • TIME
    2147483647/-2147483648
  • DATE/TIME_OF_DAY, DATE_AND_TIME
    4294967295/0

 

通过值更改 [Set] 操作、间接指定的值或表达式转换器操作超过该值时

不存储值。

当对于一个配方超过该值时

数据类型 描述

BOOL, REAL, LREAL

不存储值。

LINT, ULINT, LWORD

以下值四舍五入到上限或下限值。

  • LINT
    9223372036854775807/-9223372036854775808
  • ULINT, LWORD
    18446744073709551615/0

STRING, WSTRING

存储可以容纳的字符。
除上述以外

超出输入范围的部分的值从输入范围的下限重新计数并存储。

(示例):无符号 8 位变量(值范围:0…255)

例1:如果尝试存储 256,则 0 存储在变量中。(当超过上限值 1 时,将存储下限值 0。)

例2:如果尝试存储 257,则1存储在变量中。(当超过上限值 2 时,将存储下限值 1 的第二个值。)