数据类型用于指定数据元素的大小以及如何解释数据。
每个指令参数至少支持一种数据类型,而有些参数支持多种数据类型。
将光标停在指令的参数域上方,便可看到给定参数所支持的数据类型。形参指的是指令上标记该指令要使用的数据位置的标识符(例如:ADD 指令的IN1输入)。实参指的是包含指令要使用的数据的存储单元(含“%”字符前缀)或常量(例如,%MD400 "Number_of_Widgets")。
用户指定的实参的数据类型必须与指令指定的形参所支持的数据类型之一匹配。
指定实参时,必须指定变量(符号)或者绝对(直接)存储器地址。
变量将符号名(变量名)与数据类型、存储区、存储器偏移量和注释关联在一起,并且可以在 PLC 变量编辑器或块(OB、FC、FB 和 DB)的接口编辑器中进行创建。
如果输入一个没有关联变量的绝对地址,使用的地址大小必须与所支持的数据类型相匹配,而默认变量将在输入时创建。
除 String、Struct、Array 和 DTL 外,所有数据类型都可在 PLC变量编辑器和块接口编辑器中使用。String、Struct、Array 和 DTL只能在块接口编辑器中使用。还可以为许多输入参数输入常数值。

● 位和位序列:Bool(布尔值或位值)、Byte(8 位字节值)、Word(16位值)、DWord(32 位双字值)
● 整型 
– USInt(无符号 8 位整数)、SInt(有符号 8 位整数)、
– UInt(无符号 16 位整数)、Int(有符号 16 位整数)
– UDInt(无符号 32 位整数)、DInt(有符号 32 位整数)
● 浮点实数 :Real(32 位实数值或浮点值)、LReal(64位实数值或浮点值)
● 时间和日期 :Time(32 位 IEC 时间值)、Date(16位日期值)、TOD(32 位时钟值)、DTL(12 位日期和时间结构)
● 字符和字符串 :Char(8 位单字符)、String(最长 254个字符的可变长度字符串)
● 数组 
● 数据结构 :Struct
● PLC 数据类型
● 指针:Pointer、Any、Variant

plc数据类型和Java 对照_byte数组添加数据

尽管 BCD 数字格式不能用作数据类型,但它们受转换指令支持。

1.Bool、Byte、Word 和 DWord 数据类型

plc数据类型和Java 对照_qt 将不同的数据类型组成一个新类型_02

2.整数数据类型

plc数据类型和Java 对照_plc数据类型和Java 对照_03

3.浮点型实数数据类型

如 ANSI/IEEE 754-1985 标准所述,实(或浮点)数以 32 位单精度数 (Real)或 64位双精度数 (LReal) 表示。单精度浮点数的精度最高为 6位有效数字,而双精度浮点数的精度最高为 15 位有效数字。
在输入浮点常数时,最多可以指定 6 位 (Real) 或 15 位 (LReal) 有效数字来保持精度。

plc数据类型和Java 对照_plc数据类型和Java 对照_04

计算涉及到包含非常大和非常小数字的一长串数值时,计算结果可能不准确。
如果数字相差 10 的 x 次方,其中 x > 6 (Real) 或 15 (LReal),则会发生上述情况。例如(Real):100 000 000 + 1 = 100 000 000.

4.时间和日期数据类型

plc数据类型和Java 对照_string类型的数字比较大小_05

TIME 数据作为有符号双整数存储,被解释为毫秒。编辑器格式可以使用日期(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)
数据作为无符号双整数值存储,被解释为自指定日期的凌晨算起的毫秒数(凌晨 = 0ms)。必须指定小时(24 小时/天)、分钟和秒。可以选择指定小数秒格式。

DTL(日期和时间长型)数据类型使用 12 个字节的结构保存日期和时间信息。可以在块的临时存储器或者 DB 中定义 DTL 数据。必须在 DB 编辑器的“起始值”(Start value) 列为所有组件输入一个值。

plc数据类型和Java 对照_qt 将不同的数据类型组成一个新类型_06

DTL 的每一部分均包含不同的数据类型和值范围。指定值的数据类型必须与相应部分的数据类型相一致。

plc数据类型和Java 对照_number最长多少位_07

1 年-月-日:时:分:秒.纳秒格式中不包括星期。

5.字符和字符串数据类型

plc数据类型和Java 对照_string类型的数字比较大小_08

Char 在存储器中占一个字节,可以存储以 ASCII 格式(包括扩展 ASCII字符代码)编码的单个字符。

 WChar在存储器中占一个字的空间,可包含任意双字节字符表示形式。
编辑器语法在字符的前面和后面各使用一个单引号字符。可以使用可见字符和控制字符。

String数据类型包含总字符数(字符串中的字符数)和当前字符数。String 类型提供了多达 256个字节,用于在字符串中存储最大总字符数(1 个字节)、当前字符数(1个字节)以及最多 254 个字节。String 数据类型中的每个字节都可以是从 16#00 到16#FF 的任意值。

WString 数据类型支持单字(双字节)值的较长字符串。
第一个字包含最大总字符数;下一个字包含总字符数,接下来的字符串可包含多达 65534个字。WString 数据类型中的每个字都可以是从 16#0000 到16#FFFF 的任意值。

可从数据类型下拉列表中选择一种数据类型,输入关键字“String”或“WString”,然后在方括号中以字节 (String) 或字 (WString) 为单位指定最大字符串大小。
例如,“MyString String[10]”指定 MyString 的最大长度为 10 个字节。
如果不包含带有最大长度的方括号,则假定字符串的最大长度为 254 并假定WString的最大长度为 65534。“MyWString WString[1000]”可指定一个 1000 字的 WString。
以下示例定义了一个最大字符数为 10 而当前字符数为 3 的 String。这表示该String当前包含 3 个单字节字符,但可以扩展到包含最多 10 个单字节字符。

plc数据类型和Java 对照_plc数据类型和Java 对照_09

以下示例定义了一个最大字符数为 500 而当前字符数为 300 的 WString。这表示该String 当前包含 300 个单字字符,但可以扩展到包含最多 500 个单字字符。

plc数据类型和Java 对照_byte数组添加数据_10

ASCII 控制字符可用于 Char、Wchar、String 和 WString 数据中。下表给出了控制字符语法的示例。

plc数据类型和Java 对照_plc数据类型和Java 对照_11

6.数组数据类型

可以创建包含多个相同数据类型元素的数组。数组可以在 OB、FC、FB 和 DB的块接口编辑器中创建。无法在 PLC 变量编辑器中创建数组。
要在块接口编辑器中创建数组,请为数组命名并选择数据类型“Array [lo .. hi] of
type”,然后根据如下说明编辑“lo”、“hi”和“type”:
● lo - 数组的起始(最低)下标
● hi - 数组的结束(最高)下标
● type - 数据类型之一,例如 BOOL、SINT、UDINT

plc数据类型和Java 对照_plc数据类型和Java 对照_12

plc数据类型和Java 对照_qt 将不同的数据类型组成一个新类型_13

7.数据结构数据类型

可以用数据类型“Struct”来定义包含其它数据类型的数据结构。Struct数据类型可用来以单个数据单元方式处理一组相关过程数据。
在数据块编辑器或块接口编辑器中命名 Struct 数据类型并声明内部数据结构。
数组和结构还可以集中到更大结构中。一套结构可嵌套八层。
例如,可以创建包含数组的多个结构组成的结构。

8.PLC 数据类型

PLC 数据类型可用来定义可以在程序中多次使用的数据结构。
可以通过打开项目树的“PLC 数据类型”分支并双击“添加新数据类型”项来创建PLC数据类型。在新创建的 PLC 数据类型项上,两次单击可重命名默认名称,双击则会打开PLC 数据类型编辑器。
可使用在数据块编辑器中的相同编辑方法创建自定义 PLC 数据类型结构。为任何必要的数据类型添加新的行,以创建所需数据结构。
如果创建新的 PLC 数据类型,则该新 PLC 类型名称将出现在 DB编辑器和代码块接口编辑器的数据类型选择器下拉列表中。

PLC 数据类型的可能应用:

● 可将 PLC 数据类型直接用作代码块接口或数据块中的数据类型。
● PLC 数据类型可用作模板,以创建多个使用相同数据结构的全局数据块。

例如,PLC 数据类型可能是混合颜色的配方。用户可以将该 PLC数据类型分配给多个数据块。之后,每个数据块都会调节变量,以创建特定颜色。

9.指针数据类型

指针数据类型(Pointer、Any 和 Variant)可用于 FB 和 FC 代码块的块接口表中。可以从块接口数据类型下拉列表中选择指针数据类型。还可以将 Variant 数据类型用作指令参数。

plc数据类型和Java 对照_byte数组添加数据_14

plc数据类型和Java 对照_plc数据类型和Java 对照_15

可以输入没有前缀 (P #) 的 Pointer 类型的参数。您的输入将自动转换为指针格式。

plc数据类型和Java 对照_number最长多少位_16

plc数据类型和Java 对照_qt 将不同的数据类型组成一个新类型_17

指针无法检测 ANY 结构。只能将其分配给局部变量。

plc数据类型和Java 对照_byte数组添加数据_18

ANY 指针中的数据类型编码

plc数据类型和Java 对照_number最长多少位_19

ANY 指针中的存储区编码:

plc数据类型和Java 对照_byte数组添加数据_20

plc数据类型和Java 对照_plc数据类型和Java 对照_21

访问一个变量数据类型的“片段”

可以根据大小按位、字节、或字级别访问 PLC 变量和数据块变量。
访问此类数据片段的语法如下所示:
● "".xn(按位访问)
● "".bn(按字节访问)
● "".wn(按字访问)
● ""..xn(按访问)
● ""..bn(按字节访问)
● ""..wn(按字访问)
双字大小的变量可按位 0 - 31、字节 0 - 3 或字 0 - 1 访问。一个字大小的的变量可按位 0- 15、字节 0 - 1 或字 0 访问。字节大小的变量则可按位 0 - 7 或字节 0访问。当预期操作数为位、字节或字时,则可使用位、字节和字片段访问方式。

plc数据类型和Java 对照_string类型的数字比较大小_22

plc数据类型和Java 对照_string类型的数字比较大小_23

plc数据类型和Java 对照_number最长多少位_24

访问带有一个 AT 覆盖的变量

借助 AT变量覆盖,可通过一个不同数据类型的覆盖声明访问标准访问块中已声明的变量。
例如,可以通过 Array of Bool 寻址数据类型为 Byte、Word 或 DWord 变量的各个位。

plc数据类型和Java 对照_plc数据类型和Java 对照_25

准则
● 只能覆盖可标准(未优化)访问的 FB 和 FC 块中的变量。
● 可以覆盖所有类型和所有声明部分的变量。
● 可以同使用其它块参数一样使用覆盖后的参数。
● 不能覆盖 VARIANT 类型的参数。
● 覆盖参数的大小必须小于等于被覆盖的参数。
● 必须在覆盖变量并选择关键字“AT”作为初始数据类型后立即声明覆盖变量。