17838383235
新闻中心
6AV2123-2DB03-0AX0现货西门子SIEMENS代理商
发布时间:2024-05-14        浏览次数:6        返回列表

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




使用 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)。

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

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


编程示例

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

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

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

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


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

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

    这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。

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

    X-coordinate > REAL

    Y-coordinate > REAL

    Diameter > REAL







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


    创建 PLC 数据类型“UDT_RectangleWindowStatic”:

    这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。

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

    X1-coordinate > REAL

    Y1-coordinate > REAL

    X2-coordinate > REAL

    Y2-coordinate > REAL






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

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


    创建 PLC 数据类型“UDT_RectangleWindowFlexible”:

    这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。

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

    X-coordinate > REAL

    Y-coordinate > REAL

    Height > REAL

    Width > REAL

    Angle > REAL






  • 用于指定矩形中心位置的 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)。


  • 输入相应的起始值:


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

    创建数据块“DB_OrderList”:

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

    “添加新块”(Add new block) 对话框随即打开。

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

  • 指定名称“DB_OrderList”。

  • 选择“全局数据块”(Global DB) 作为该数据块的类型。

  • 单击“确定”(OK)。


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


    操作步骤 - 创建程序代码

    为每个作业类型,创建一个单独的函数。在此,将冲孔作业细分为具体的各个冲孔操作,并包含在 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






  • 创建 ARRAY 数据块“DB_PunchList”。







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

  • 声明该块接口,如下所示:





  • 编写以下程序代码:







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

  • 声明该块接口,如下所示:






  • 编写以下程序代码:







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

  • 声明该块接口,如下所示:






  • 编写以下程序代码:







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

  • 创建一个 SCL 函数块。

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

    “添加新块”(Add new block) 对话框随即打开。

  • 单击“函数块 (FB)”(Function block (FB)) 按钮。

  • 指定名称“FB_PrepareNextOrder”。

  • 声明该块接口,如下所示:






  • 声明全局变量“AllOrdersDone”:




    图片

    图片

  • 编写以下程序代码:







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

  • 创建一个 SCL 函数。

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

    “添加新块”(Add new block) 对话框随即打开。

  • 单击“函数 (FC)”(Function (FC)) 按钮。

  • 指定名称“FC_PrepareOrder”。

  • 声明该块接口,如下所示:






  • 编写以下程序代码:







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


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


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

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

    “添加新块”(Add new block) 对话框随即打开。

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

  • 指定名称“DB_FB_PrepareNextOrder”。

  • 选择数据块“FB_PrepareNextOrder”作为类型。

  • 单击“确定”(OK)。


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

  • 创建 STL函数“FC_SwapOrderList”。

  • 声明该块接口,如下所示:






  • 声明全局变量“NewModelNr”:




    图片

    图片

  • 编写以下程序代码:







  • 创建数据块“DB_OrderRepository”:

    “添加新块”(Add new block) 对话框随即打开。

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

  • 指定名称“DB_OrderRepository”。

  • 选择“全局数据块”(Global DB) 作为该数据块的类型。

  • 单击“确定”(OK)。


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


    结果

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




    核心提示:西门子PLC代理,西门子变频器代理,西门子伺服电机代,西门子工控机代理,西门子触摸屏代理
    刚发布的文章
    联系方式
    • 地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
    • 手机:17838383235
    • 联系人:徐嘉泉
    新闻分类
    最新发布
    企业新闻
    站内搜索