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
    +关注

    关注

    5006

    文章

    13093

    浏览量

    461320
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10798

    浏览量

    210710
  • 西门子
    +关注

    关注

    93

    文章

    2992

    浏览量

    115435
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13591

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    博世和西门子哪个好_博世和西门子的关系

    本文开始阐述了博世和西门子的关系以及分析了西门子和博世哪个更好,其次分析了西门子和博世的冰箱哪个更好,最后介绍了博世和西门子家电集团在中国的发展。
    的头像 发表于 04-04 09:30 15.8w次阅读

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

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

    编程语言SCL中ANY数据类型

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

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

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

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

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

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

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

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

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

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

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