嵌入式
返回首页

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

2024-07-31 来源:elecfans

使用 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
26854ba2-2097-11ee-962d-dac502259ad0.png
26854ba2-2097-11ee-962d-dac502259ad0.png

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

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

双击“添加新块”(Add new block) 命令。
这样会打开“添加新块”(Add new block) 对话框。
单击“数据块 (DB)”(Data block (DB)) 按钮。
指定名称“DB_MaterialBuffer”。
选择数据块类型“ARRAY DB”。
选择 PLC 数据类型“UDT_Material”作为 ARRAY 数据类型。
指定“1000”作为 ARRAY 上限。
单击“确定”(OK)。
26c47ed0-2097-11ee-962d-dac502259ad0.png
26c47ed0-2097-11ee-962d-dac502259ad0.png

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

创建一个 SCL 函数块并将其命名为“FB_Material”。
按如下方式声明块接口:
27116a74-2097-11ee-962d-dac502259ad0.png
27116a74-2097-11ee-962d-dac502259ad0.png
编写以下程序代码:
27443c38-2097-11ee-962d-dac502259ad0.png
27443c38-2097-11ee-962d-dac502259ad0.png
在 OB1 中调用“FB_Material” 函数块,并将形参与全局数据块“DB_MaterialBuffer”的变量互连。
27912a8e-2097-11ee-962d-dac502259ad0.png
27912a8e-2097-11ee-962d-dac502259ad0.png

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


进入嵌入式查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • FollowMe 第二季:3 - EK_RA6M5 开发板入门

  • FollowMe 第二季: 1 Adafruit Circuit Playground Express及任务讲解

  • Azure RTOS step by step workshop

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • 从0到1:树莓派与物联网教程(英文)

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章