PLC 数据类型 (UDT)是一种复杂的用户自定义数据类型,用于声明一个变量。这种数据类型是一个由多个不同数据类型元素组成的数据结构。其中,各元素可源自其它PLC 数据类型、ARRAY,也可直接使用关键字 STRUCT 声明为一个结构。嵌套深度限制为 8 级。
PLC 数据类型 (UDT) 可在程序代码中统一更改和重复使用。系统自动更新该数据类型的所用使用位置。
PLC 数据类型的优势:
通过块接口,在多个块中进行数据快速交换
根据过程控制对数据进行分组
将参数作为一个数据单元进行传送
使用 PLC 数据类型
创建数据块时,可将 PLC数据类型声明为一种类型。基于该类型,可以创建多个数据结构相同的数据块。并根据具体任务,通过输入不同的实际值对这些数据块进行调整。
例如,为颜料混合配方创建一个 PLC 数据类型的实例。之后,再将该数据类型分配给多个数据块。这样,每个块中包含不同的数量信息。
下图显示了该应用中具体的数据类型分配:
PLC 数据类型可应用于以下应用中:
PLC 数据类型可用作逻辑块的变量声明或数据块中变量的数据类型。
PLC 数据类型可用作模板,创建数据结构相同的全局数据块。
PLC 数据类型在 S7-1200 和 S7-1500 中可用作模板,创建结构化的 PLC 变量。
PLC 数据类型的嵌套深度和数量
FC、FB、DB 和 PLC 数据类型Zui多支持的 64K 的对象(具体总量取决于 CPU)。
结构描述(如,DB 或 PLC 数据类型 (UDT))中,每个层级Zui多可定义 16K 的元素。这些结构中的元素可以同样为 ARRAY或 STRUCT 数据类型。结构化元素可以源自一个显式声明的 PLC 数据类型,而无任何限制。即,每个层级都可定义 16KPLC 数据类型 (UDT)/SDT 的元素。但“匿名结构”Zui多支持 252 个 16k 元素。
PLC 数据类型的嵌套层级深度为 8 级。具体的嵌套深度取决于所使用的 CPU。
从块生成外部源
从块生成外部源时,在块接口中直接对 PLC数据类型的默认值进行的更改不会导出到源。也就是说在重新导入源时,这些值将不可用。此时,将使用默认值。为防止丢失已修改默认值的数据,必须直接在PLC 数据类型中而不是在块接口中进行更改。在这种情况下,生成外部源时也会导出这些更改。
匿名结构的缺陷
在这种结构化变量中,元素的寻址方式都相同,而不考虑该元素采用 PLC 数据类型声明,还是采用匿名结构声明。
使用匿名结构具有以下缺点:
通过复制进行重用时,结构都相同。这将导致结构更改困难。
匿名结构与 PLC 数据类型 (UDT) 的相同结构不兼容。
由于在运行过程会检查结构元素的类型是否匹配,可导致系统性能下降。
由于所有元素必须单独评估,在使用匿名结构时,很容易超出上限。
示例
以下示例说明如何定义“MyUDT” PLC 数据据类型。
PLC 数据类型声明表的结构
下图是 PLC 数据类型的声明表结构
各列的含义
下表列出了各列的含义。可根据需要显示或隐藏各列。显示的列数取决于 CPU 类型。
列 | 说明 |
---|---|
单击符号以移动或复制变量。 | |
名称 | 变量名称。 |
数据类型 | 变量的数据类型。 |
默认值 | PLC 数据类型声明中用于预定义变量的值。 可选择是否指定默认值。如果未指定任何值,则使用指定数据类型的预定义值。例如,BOOL 类型的预定义值为“false”。 |
在 HMI 工程组态中可见 | 显示默认情况下,该变量在 HMI 选择列表中是否显示。 |
从 HMI/OPC UA 可访问 | 指示在运行过程中,HMI/OPC UA 是否可访问该变量。 |
从 HMI/OPC UA 可写 | 指示在运行过程中,是否可从 HMI/OPC UA 写入变量。 |
设定值 | 设定值是指在调试过程中可能需要微调的值。经过调试之后,这些变量的值可作为起始值传输到离线程序中并进行保存。 |