[西门子] 西门子博途:使用 PLC 数据类型 (UDT)

[复制链接]
查看97000 | 回复0 | 2024-2-28 09:07:31 | 显示全部楼层 |阅读模式
使用 PLC 数据类型

PLC 数据类型 (UDT) 是可自行定义且在程序中可以多次使用的数据结构。此结构可包含不同数据类型的多个元素。声明 PLC 数据类型期间,可以定义各个元素的数据类型。

如果需要各种数据类型的组装数据记录,则会频繁使用 PLC 数据类型,并且将从程序中的不同点处理这些数据。例如,这些数据可以是:

    用于物料跟踪的数据记录

    用于电机设置的参数集

    配方

使用 PLC 数据类型有以下优点:

    PLC 数据类型元素也可以间接寻址,这意味着地址可变,并且到运行时才会计算。

  • 基于 PLC 数据类型的变量继承 PLC 数据类型的所有属性。如果对 PLC 数据类型进行了更改,所有基于此 PLC 数据类型的变量都会自动修改。
    使用统一的符号表示可以提高程序可读性,这是因为 PLC 数据类型各个元素的名称都显示在程序中。

    可以对 S7-1500 CPU 高性能进行最佳利用。

    PLC 数据类型可以作为块调用的完整结构进行传送。

    由于需要提供的参数更少,因而简化了调用接口。


STEP 7 V5.x 中的操作步骤

STEP 7 V5.x 已经允许用户使用 STRUCT 数据类型或 PLC 数据类型(UDT)将数据记录创建为一个结构化变量。但由于使用了符号寻址,因而会给性能带来些许影响。

数据块中的声明大多数以匿名结构来实现。随后块本身经过编程将该结构的值作为实参进行传送,而计算出的值被复制回该结构。这样就可以传送数据块编号,并在块中使用绝对寻址。需要提供的参数数量通常较大。实际数据存储在数据块中,计算出的值传送到其它块。但在传送数据块变量时,没有可用的符号表示。

STEP 7 TIA Portal 中的编程示例

可以将形参和实参分配给 PLC 数据类型。这意味着无需声明每个单独的参数。如果块具有 PLC 数据类型的输入参数,则必须传送具有相同 PLC 数据类型的变量作为实参。

以下示例说明了使用两个形参的函数块 (FB) 的调用和参数分配:


  • 要创建 PLC 数据类型,请在项目树中双击“PLC 数据类型”(PLC data types) 文件夹中的命令“新增数据类型”(Add new data type)。

    这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。
    将 PLC 数据类型重命名为“UDT_Material”。

    在 PLC 数据类型中声明以下行:

    ArticleNumber > 数据类型:DINT

    ArticleName > 数据类型:STRING

    Amount > 数据类型:REAL

    Unit > 数据类型:STRING







在全局数据块中,使用 PLC 数据类型。可以将 PLC 数据类型直接指定为数据块的数据类型或在数据块中作为变量的数据类型。

要为此创建全局数据块,请按以下步骤操作:

    双击“添加新块”(Add new block) 命令。

    这样会打开“添加新块”(Add new block) 对话框。

    单击“数据块 (DB)”(Data block (DB)) 按钮。

    指定名称“DB_MaterialBuffer”。

    选择数据块类型“ARRAY DB”。

    选择 PLC 数据类型“UDT_Material”作为 ARRAY 数据类型。

    指定“1000”作为 ARRAY 上限。

    单击“确定”(OK)。







在函数块调用中,将形参与全局数据块“DB_MaterialBuffer”中的变量互连。

    创建一个 SCL 函数块并将其命名为“FB_Material”。

    按如下方式声明块接口:





    编写以下程序代码:





    在 OB1 中调用“FB_Material” 函数块,并将形参与全局数据块“DB_MaterialBuffer”的变量互连。






在全局数据块“DB_MaterialBuffer”中移动了物料数据。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则