0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

西门子博途中DB_ANY数据类型的使用

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-07-04 10:17 次阅读

使用 DB_ANY 数据类型 (S7-1200/1500)

DB_ANY 数据类型用来标识任意数据块。对于 S7-1200/1500 系列的 CPU,可以选择访问编程期间尚不可用的数据块。为此,请在访问块的块接口中创建一个 DB_ANY 数据类型的块参数。数据块名称或先前分配给数据块名称的 DB_ANY 数据类型的变量将在运行期间传送到此参数。可以通过以下指令,处理数据块中用符号表示的内容:

VARIANT_TO_DB_ANY:将 VARIANT 转换为 DB_ANY

DB_ANY_TO_VARIANT:将 DB_ANY 转换为 VARIANT

有关这些指令的更多信息,请参见“基本指令 > STL/SCL > 转换操作 > VARIANT”(Basic instructions > STL/SCL > Conversion operations > VARIANT)。

该过程具有以下优势:不需要知道将要处理的数据块就能创建程序代码

在本示例中需要使用以下对象:

4e777118-19a2-11ee-962d-dac502259ad0.png

编程示例

以下示例说明了如何使用 DB_ANY 数据类型:

冲孔机可以冲出各种各样的几何形状。冲孔作业将传送到机器,每个作业有特定的作业数据。作业数据的作业类型和数据值各有不同。

操作步骤 - 创建 PLC 数据类型

在第一个作业中,将在一块金属板上冲出一个圆孔。要使冲孔机能够执行此作业,需要提供中心点坐标以及圆孔的半径。可以通过 PLC 数据类型 (UDT) 将这些作业数据一起传送到冲孔机。

4e9e2f10-19a2-11ee-962d-dac502259ad0.png

创建 PLC 数据类型“UDT_Hole”以传送作业数据:

在项目树中,双击“PLC 数据类型”(PLC data types) 文件夹中的命令“新增数据类型”(Add new data type)。
这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。
在 PLC 数据类型中声明以下行:
X-coordinate > REAL
Y-coordinate > REAL
Diameter > REAL
4eb70be8-19a2-11ee-962d-dac502259ad0.png
4eb70be8-19a2-11ee-962d-dac502259ad0.png

在第二个作业中,将在一块金属板上冲出一个矩形。对于此作业,需要提供两个坐标,分别定义此矩形的左上角和右下角。可以通过 PLC 数据类型“UDT_RectangleWindowStatic”将这些作业数据一起传送到冲孔机。

4ee54558-19a2-11ee-962d-dac502259ad0.png

创建 PLC 数据类型“UDT_RectangleWindowStatic”:

在项目树中,双击“PLC 数据类型”(PLC data types) 文件夹中的命令“新增数据类型”(Add new data type)。
这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。
在 PLC 数据类型中声明以下行:
X1-coordinate > REAL
Y1-coordinate > REAL
X2-coordinate > REAL
Y2-coordinate > REAL
4eff2432-19a2-11ee-962d-dac502259ad0.png
4eff2432-19a2-11ee-962d-dac502259ad0.png

“UDT_RectangleWindowStatic”的作业数据只能用于冲出其边沿分别与 x 和 y 轴平行对齐的矩形。

如果要冲出具有不同对齐设置的矩形(即不与 x 和 y 轴平行对齐),则需要其它 PLC 数据类型。例如,在其它 PLC 数据类型中,可以指定高度和宽度,以及矩形与 x 轴的角度。

4f25ed7e-19a2-11ee-962d-dac502259ad0.png

创建 PLC 数据类型“UDT_RectangleWindowFlexible”:

在项目树中,双击“PLC 数据类型”(PLC data types) 文件夹中的命令“新增数据类型”(Add new data type)。
这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。
在 PLC 数据类型中声明以下行:
X-coordinate > REAL
Y-coordinate > REAL
Height > REAL
Width > REAL
Angle > REAL
4f4dce48-19a2-11ee-962d-dac502259ad0.png
4f4dce48-19a2-11ee-962d-dac502259ad0.png

用于指定矩形中心位置的 x 轴和 y 轴坐标。

操作步骤 - 创建数据块

在下一部分,您将学习如何将简单的几何形状(其作业数据已在 PLC 数据类型中定义)传送到冲孔机。冲孔作业在程序代码中被细分成多个冲孔操作,这些冲孔操作由冲孔机连续执行。冲孔机有一个十字工作台,金属板将紧紧地夹在这个工作台上。可以将十字工作台沿 x 轴和/或 y 轴移动,就像在坐标系中一样。十字工作台由两个电机推动。该工具有不同的印模用来在金属板上冲出各种形状,例如大小不同的圆形和矩形。该工具还可以最多旋转 90 度来切出具有不同对齐角度的矩形。

现在,可使用 PLC 数据类型创建多个背景数据块。之后,该背景数据块将包含具体值,如圆孔的值。

创建背景数据块“DB_OrderHole”:

双击“程序块”(Program blocks) 文件夹下方的命令“添加新块”(Add new block)。
“添加新块”(Add new block) 对话框随即打开。
单击“数据块 (DB)”(Data block (DB)) 按钮。
指定名称“DB_OrderHole”。
选择数据块“UDT_Hole”作为类型。
单击“确定”(OK)。

输入相应的起始值:

4f72c2c0-19a2-11ee-962d-dac502259ad0.png

要制造特定的金属板部件,例如控制柜的侧面板,则将必需的几何形状加载到冲孔机。为此需要创建另一个包含数据块列表的数据块。

创建数据块“DB_OrderList”:

双击“添加新块”(Add new block) 命令。
“添加新块”(Add new block) 对话框随即打开。
单击“数据块 (DB)”(Data block (DB)) 按钮。
指定名称“DB_OrderList”。
选择“全局数据块”(Global DB) 作为该数据块的类型。
单击“确定”(OK)。

在数据块中创建以下作业列表:

4f84de88-19a2-11ee-962d-dac502259ad0.png

操作步骤 - 创建程序代码

为每个作业类型,创建一个单独的函数。在此,将冲孔作业细分为具体的各个冲孔操作,并包含在 ARRAY 中。

创建 PLC 数据类型“UDT_Punch”。
双击“PLC 数据类型”(PLC data types) 下方的命令“添加新数据类型”(Add new data type)。
将创建一个名为“UserDataType_x”的新 PLC 数据类型。
将 PLC 数据类型重命名为“UDT_Punch”。
在 PLC 数据类型中声明以下行:
Tool > DINT
x > REAL
y > REAL
w > REAL
4fa176ba-19a2-11ee-962d-dac502259ad0.png
4fa176ba-19a2-11ee-962d-dac502259ad0.png
创建 ARRAY 数据块“DB_PunchList”。
4fc88e76-19a2-11ee-962d-dac502259ad0.png
4fc88e76-19a2-11ee-962d-dac502259ad0.png

要为一个孔洞准备冲孔作业并将其细分为具体的各个冲孔操作,则需创建一个 SCL 函数并命名为“FC_PrepareHole”。

声明该块接口,如下所示:
4ff7ecd4-19a2-11ee-962d-dac502259ad0.png
4ff7ecd4-19a2-11ee-962d-dac502259ad0.png
编写以下程序代码:
501adb7c-19a2-11ee-962d-dac502259ad0.png
501adb7c-19a2-11ee-962d-dac502259ad0.png

要为一个窗口准备冲孔作业,则需通过一个函数将四个冲孔操作序列组合到一个冲孔作业中。创建一个 SCL 函数并命名为“FC_PrepareWindowStatic”。

声明该块接口,如下所示:
5036a3ca-19a2-11ee-962d-dac502259ad0.png
5036a3ca-19a2-11ee-962d-dac502259ad0.png
编写以下程序代码:
5057bd26-19a2-11ee-962d-dac502259ad0.png
5057bd26-19a2-11ee-962d-dac502259ad0.png

要为一个可变矩形准备冲孔作业,则需通过一个函数将四个冲孔操作序列组合到一个冲孔作业中。创建一个 SCL 函数并命名为“FC_PrepareWindowFlexible”。

声明该块接口,如下所示:
5095fbe0-19a2-11ee-962d-dac502259ad0.png
5095fbe0-19a2-11ee-962d-dac502259ad0.png
编写以下程序代码:
50c5b07e-19a2-11ee-962d-dac502259ad0.png
50c5b07e-19a2-11ee-962d-dac502259ad0.png

冲孔机现在应该会开始处理作业。如果它已经在处理作业,则应从作业列表中获取下一个作业并进行准备。

创建一个 SCL 函数块。
双击“添加新块”(Add new block) 命令。
“添加新块”(Add new block) 对话框随即打开。
单击“函数块 (FB)”(Function block (FB)) 按钮。
指定名称“FB_PrepareNextOrder”。
声明该块接口,如下所示:
50f5f0cc-19a2-11ee-962d-dac502259ad0.png
50f5f0cc-19a2-11ee-962d-dac502259ad0.png
声明全局变量“AllOrdersDone”:
511f88e2-19a2-11ee-962d-dac502259ad0.png
511f88e2-19a2-11ee-962d-dac502259ad0.png
编写以下程序代码:
513a3f0c-19a2-11ee-962d-dac502259ad0.png
513a3f0c-19a2-11ee-962d-dac502259ad0.png

通过将当前冲孔作业细分成几个冲孔操作,为列表中的下一个作业做好了准备。冲孔机必须能够识别当前正在处理哪个冲孔作业。

创建一个 SCL 函数。
双击“添加新块”(Add new block) 命令。
“添加新块”(Add new block) 对话框随即打开。
单击“函数 (FC)”(Function (FC)) 按钮。
指定名称“FC_PrepareOrder”。
声明该块接口,如下所示:
5162d552-19a2-11ee-962d-dac502259ad0.png
5162d552-19a2-11ee-962d-dac502259ad0.png
编写以下程序代码:
518a63c4-19a2-11ee-962d-dac502259ad0.png
518a63c4-19a2-11ee-962d-dac502259ad0.png

在 SCL 函数块“FB_PrepareNextOrder”中调用 SCL 函数“FC_PrepareOrder”

513a3f0c-19a2-11ee-962d-dac502259ad0.png

之后,在 OB1 中调用“FB_PrepareNextOrder”:

51f1d45a-19a2-11ee-962d-dac502259ad0.png

除了上述的操作方式之外,还通过在预定义作业中使用数据块“DB_OrderList”将作业加载到冲孔设备中,动态生成作业列表。此外,也可选择不同的作业列表。在执行一个作业列表后,再将新的作业列表加载到冲孔设备中。为此,需额外编写以下代码:

为函数块“FB_PrepareNextOrder”创建一个背景数据块。

双击“程序块”(Program blocks) 文件夹下方的命令“添加新块”(Add new block)。
“添加新块”(Add new block) 对话框随即打开。
单击“数据块 (DB)”(Data block (DB)) 按钮。
指定名称“DB_FB_PrepareNextOrder”。
选择数据块“FB_PrepareNextOrder”作为类型。
单击“确定”(OK)。

5215ea98-19a2-11ee-962d-dac502259ad0.png

如需交换作业列表,则需额外创建一个 SCL 函数:

创建 STL函数“FC_SwapOrderList”。
声明该块接口,如下所示:
522f73f0-19a2-11ee-962d-dac502259ad0.png
522f73f0-19a2-11ee-962d-dac502259ad0.png
声明全局变量“NewModelNr”:
52630530-19a2-11ee-962d-dac502259ad0.png
52630530-19a2-11ee-962d-dac502259ad0.png
编写以下程序代码:
527f4aba-19a2-11ee-962d-dac502259ad0.png
527f4aba-19a2-11ee-962d-dac502259ad0.png

创建数据块“DB_OrderRepository”:

双击“程序块”(Program blocks) 文件夹下方的命令“添加新块”(Add new block)。
“添加新块”(Add new block) 对话框随即打开。
单击“数据块 (DB)”(Data block (DB)) 按钮。
指定名称“DB_OrderRepository”。
选择“全局数据块”(Global DB) 作为该数据块的类型。
单击“确定”(OK)。

529ba0ca-19a2-11ee-962d-dac502259ad0.png

之后,在 OB1 中调用“FC_SwapOrderList”:

52b0623a-19a2-11ee-962d-dac502259ad0.png

结果

以下示例说明了如何使用指令“DB_ANY_TO_VARIANT:将 DB_ANY 转换为 VARIANT”来确定数据块的 PLC 数据类型,以及如何据此选择和执行适当的函数。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5010

    文章

    13277

    浏览量

    463109
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10855

    浏览量

    211607
  • 西门子
    +关注

    关注

    94

    文章

    3035

    浏览量

    115797
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13618

原文标题:西门子博途:使用 DB_ANY 数据类型

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解PLC的工作原理和数据类型

    PLC的数据类型&&寻址方式 (这个地方要分清楚,PLC的存储空间大小(位字节字双字BIT BYTE WORD DWORD)、储存器类型西门子DIDQAIAQMSMVLTCHTHC区;三菱XYMDTCRVZ区)、
    发表于 10-26 11:38 2820次阅读

    畅销西门子助听器价格表_西门子助听器价格大全

    畅销西门子助听器价格表_西门子助听器价格大全 1、西门子盒式助听器 AMIGA 176AO Pocket AMIGA 176AO 西门子助听器价格:441元
    发表于 08-23 12:19 1.5w次阅读
    畅销<b class='flag-5'>西门子</b>助听器价格表_<b class='flag-5'>西门子</b>助听器价格大全

    西门子plc数据类型_西门子plc通讯方式

    西门子PLC的品质非常好,其网络稳定性、开放性深受工控人员的喜爱,而且编程软件分类多,使用方便。在国内工控界具有显著地位。虽然大家对西门子PLC都有一定的了解,但要你说出西门子PLC各种通信方式的特点,相信很多人都不能完整答出。
    发表于 07-25 10:57 1.5w次阅读
    <b class='flag-5'>西门子</b>plc<b class='flag-5'>数据类型</b>_<b class='flag-5'>西门子</b>plc通讯方式

    西门子PLC模拟量输入输出相关数据类型转换

    plc模拟量输入输出都会涉及到数据类型的互转问题,然而西门子300系统对于数据格式有着明确的规定,一般的四则运算都是在同一数据类型下才能进行的,这也是一直以来困扰初学者的一个问题。
    发表于 03-19 08:42 1.6w次阅读
    <b class='flag-5'>西门子</b>PLC模拟量输入输出相关<b class='flag-5'>数据类型</b>转换

    对于ANY数据类型及参数传递的详细解析

    ANY是一种用于传递指针的形参数据类型,可视为POINTE R 类型的扩展,较POINTER 类型为复杂,长度为10个字节,增加的4 字节,最高字节 (Byte 0) 固定为B#16#
    的头像 发表于 04-12 10:28 9295次阅读
    对于<b class='flag-5'>ANY</b><b class='flag-5'>数据类型</b>及参数传递的详细解析

    编程语言SCL中ANY数据类型

    ANY数据类型 在编程语言 SCL 和 STL 中,如果在块参数中设定了一个 ANY 指针,则任意类型的存储器都可以在块调用时传递。 但是,ANY
    的头像 发表于 05-25 11:02 5180次阅读
    编程语言SCL中<b class='flag-5'>ANY</b><b class='flag-5'>数据类型</b>

    S7-1200:DB_ANY类型

    DB_ANY 数据类型用来标识任意数据块。对于 S7-1200,可以选择访问编程期间尚不可用的数据块。为此,在访问块的块接口中创建一个 DB_ANY
    的头像 发表于 03-11 09:33 4740次阅读

    西门子途F型PLC数据类型与标准PLC数据类型的差别

    可以像使用标准 PLC 数据类型 (UDT) 那样,声明和使用 F 型 PLC 数据类型 (UDT) 。可以在安全程序中以及标准用户程序中使用 F 型 PLC 数据类型 (UDT) 。
    的头像 发表于 07-08 10:15 3382次阅读

    利用物通联工业网关实现西门子plc数据采集和控制

    西门子plc是目前工业智能化中常用的一种电气设备,具有无连接、稳定可靠等特点。运用物通联工业网关可以实现对西门子plc的数据采集和控制。  一、物通
    的头像 发表于 02-23 17:20 940次阅读
    利用物通<b class='flag-5'>博</b>联工业网关实现<b class='flag-5'>西门子</b>plc<b class='flag-5'>数据</b>采集和控制

    C#使用西门子S7协议读写PLC DB

    是我们上位机要读写的DB  3. 根据西门子S7 协议文档读取DB块的方式有很多种,直接根据该DB的偏移量进行读写也行,但读或写数据都需要进
    发表于 04-19 10:05 21次下载
    C#使用<b class='flag-5'>西门子</b>S7协议读写PLC <b class='flag-5'>DB</b>块

    西门子SCL-ANY数据类型

    在编程语言 SCL 和 STL 中,如果在块参数中设定了一个 ANY 指针,则任意类型的存储器都可以在块调用时传递。
    的头像 发表于 06-05 10:50 2225次阅读
    <b class='flag-5'>西门子</b>SCL-<b class='flag-5'>ANY</b><b class='flag-5'>数据类型</b>

    西门子途中的SCL关系表达式

    以从指令框的下拉列表中选择该比较指令的数据类型 VARIANT。支持以下数据类型的变量。
    的头像 发表于 06-21 09:31 3374次阅读

    西门子途中声明STRUCT数据类型的变量

    要声明 STRUCT 数据类型的变量,请按以下步骤操作。
    的头像 发表于 06-21 09:32 4116次阅读

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

    PLC 数据类型 (UDT) 是可自行定义且在程序中可以多次使用的数据结构。 此结构可包含不同数据类型的多个元素。 声明 PLC 数据类型期间,可以定义各个元素的
    的头像 发表于 07-12 17:36 8062次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b>途:使用PLC<b class='flag-5'>数据类型</b> (UDT)

    西门子PLC UDT数据类型的使用方法

    西门子PLC(Programmable Logic Controller)的自定义数据类型(User Defined Type,简称UDT)是一种自定义的数据结构,可以根据具体需求定义一种包含多个不同
    的头像 发表于 07-19 15:01 3933次阅读
    <b class='flag-5'>西门子</b>PLC UDT<b class='flag-5'>数据类型</b>的使用方法