分享

用好博图S7-1200/1500用户自定义数据类型“UDT”-提升编程效率

 张景涛 2025-02-14 发布于辽宁
一、概念
1、UDT:用户数据类型(User Data Type)是一种由多个不同数据类型元素组成的数据结构(Struct),元素可以是基本数据类型,也可以是Struct、数组等复杂数据类型以及其它UDT等。
2、Struct:结构体(Struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。
二、用户自定义数据类型UDT特点

1、UDT数据类型实质上就是一个多种数据类型的组合体。使用UDT对数据有分类作用,便于调用及管理。

2、UDT数据类型可在程序中统一更改和重复使用,一旦UDT类型的结构或内容发生修改,执行软件全部编译可以自动更新所有使用该数据类型的变量。

3、UDT的作用是方便编程人员的,对于程序的运行而言不是必需的从数据类型的角度来说,UDT甚至不会被PLC直接接受。例如将一个带有UDT的程序下载到PLC中,然后新建一个PLC,上传程序,在传上来的程序中你是找不到UDT的,UDT更像是对DB结构的注释。

三、UDT功能

1、定义为UDT类型的变量在程序中可作为一个变量整体使用,也可单独使用组成该变量的元素。

2、对于某个程序功能的多次调用,且程序内部由多个相同或不同的数据类型来组成,我们均可以使用UDT的形式来进行结构化的编程,如对5个温度传感器进行数据处理、PN通讯时的数据交互处理等等。

四、应用举例

目的:实现对5个传感器数据的抽象与处理

工具:1.UDT数据类型;2.FB块;

实现:

    1、创建一个传感器数据类型,Sensor数据类型中定义4个变量:

        R_Sensor_Value:  传感器实时值(输出值)

        R_Edit:  数值修订(默认为0)

        R_Max:  仪表物理最大值(设置值)

        R_Min:  仪表物理最小值(设置值)

        I_Channal: AI输入通道值

    2、创建一个传感器数据处理FB块(SFB_传感器)

<1>.FB块的输入输出接口分别包含:

    Input:

        I_ChannelValue:数据类型为int

        I_ChanneMax:数据类型为int

        I_ChanneMin:数据类型为int

    InOut:

        Sensor:数据类型为自定义数据类型"Sensor"

<2>. 创建传感器数据处理SCL程序代码如下:

REGION _通道值处理_    IF #I_ChannelValue > #I_ChanneMax THEN        #Sensor.R_Sensor_Value := #Sensor.R_Max;    ELSIF #I_ChannelValue < #I_ChanneMin THEN        #Sensor.R_Sensor_Value := #Sensor.R_Min;    ELSE        #Sensor.R_Sensor_Value := INT_TO_REAL(#I_ChannelValue) * (#Sensor.R_Max - #Sensor.R_Min) / INT_TO_REAL(#I_ChanneMax - #I_ChanneMin) + #Sensor.R_Min + #Sensor.R_Edit;    END_IF;END_REGION

    即可得到SFB_传感器FB块

        3、创建一个传感器数据DB块,建立5个传感器

<1>.创建“传感器”DB块:

<2>.创建一个温度“传感器”实例

<3>.创建5个温度“传感器”实例

        4、在创建一个传感器批量处理的FB块,命名为“传感器处理”,在这个FB块中调用“SFB_传感器”FB块。
<1>.调用单个“SFB_传感器”FB块:
<2>.调用多个“SFB_传感器”FB块:
这样就通过建立一个用户定义的书库类型“Sensor”和自定义的FB块“SFB_传感器”,实现多个同样设备的快速出局处理。

以上是用户数据类型(User Data Type)介绍与应用。希望能帮助到大家。

链接产生价值,喜欢本文请在下方分享及“点赞”和“在看”,后续分享更多工控知识欢迎关注订阅。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多