博途变量类型_PLC数据类型(UDT)

UDT类型是一种由多个不同数据类型元素组成的数据结构,元素可以是基本数据类型,也可以是STRUCT、数组等复杂数据类型以及其它UDT等。UDT类型嵌套UDT类型的深度限制为 8 级。

UDT类型可以在DB、OB/FC/FB接口区处使用。从TIA 博途 V13SP1 开始,S7-1200 V4.0开始,PLC变量表中的I和Q也可以使用UDT类型。

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

定义为UDT类型的变量在程序中可作为一个变量整体使用,也可单独使用组成该变量的元素。此外还可以在新建DB块时,直接创建UDT类型的DB,该DB只包含一个UDT类型的变量。

UDT类型作为整体使用时,可以与Variant、DB_ANY类型及相关指令默契配合。

理论上来说,UDT是Struct类型的升级替代,功能基本完全兼容Struct类型。

UDT建立及应用案例

1. 新建UDT

点击CPU菜单下,PLC数据类型中的“添加新数据类型”按钮,如图1所示。

26e09352c36b05991b26ae75632ae96d.png

图1 新建UDT

2. 在弹出页面可以添加需要的变量、类型、起始值、注释等,如图2所示。

1d25eff114836139a0b046c862294ac1.png

图2 定义UDT内的变量

3. 在图2红框处右键属性常规,可以修改该数据类型的名称,如图3所示。

9ceb8f9060a912b9d57d92176acedf2e.png

图3 修改UDT名称

4. DB中使用,如图4所示。

56dc6448331e282fa4ff45f14ddf5bd2.png

图4 定义UDT类型的变量

5. 程序中使用,类似于Struct,如图5所示。

b3764dade0fed83826a4eac4ab321d73.png

图5 UDT的使用

6. 根据UDT定义DB块,如图6所示。

ce8912729a63b046f363a5c0752c6c09.png

图6 建立UDT类型的DB

此时打开DB块,可以发现和在DB中新建UDT变量差了层级,在使用内部变量没有太多差别。并且这种方式下,除非修改UDT,否则无法更改DB块中的内容,如图7所示,变量均为灰色。重要用途:参见DB_ANY。

bf7704e7bd7f05051286a7d6e5506239.png

图7 UDT类型的DB展开

7. 从TIA 博途 V14SP1开始,相同结构,但不同名称的UDT的变量,可以直接复制,如图8-11所示。

736b15a4722d2e66448c22a4a6d6fa4e.png

图8 定义不同名称的UDT,但内部变量类型相同

ea3694fc0f935e69f7e947c30f1cba08.png

图9 使用UDT建立变量

87957c37bcbc1f70b0ec4ec104b556b9.png

图10 UDT类型间的MOVE

SCL的版本程序,如图11所示

f166887c4d6bb43f1000d2f07c92f853.png

图11 SCL版本程序

UDT在PLC变量表的应用

实现功能:将Profinet IO通讯中的I点送入DB,将DB送入Q点,如图12-16所示。

1. 建立I点和Q点两个UDT,元素变量类型及排布设置参照通讯对象

12cbe47e1ce51cf9aa04e8979bedc57d.png

图12 I点定义的UDT

e711583b1bfa6747874e80288e199f2c.png

图13 Q点定义的UDT

2. PLC变量表和DB块使用UDT

65db858a26cfb33fcb57ebcb10a09422.png

图14 PLC变量表中使用图12-13定义的UDT

6d109805de0caa97a18b5b63b0161d08.png

图14 DB块中使用的UDT类型定义变量

3. 写MOVE程序传递

94619622dcc14963eaaae7fdc0a81136.png

图16 程序详情

SCL版本程序如图17所示。

e537d495992b2f6178e58d756c03ef76.png

图17 SCL版本程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Plus条件参数查询手册

【引言】 使用mybatis-plus框架的基础上,直接使用其中的条件参数进行查询还是很方便的。但每次使用到像大于、不等于这样一些不常用条件时,都需要现查,所以记录在这篇博客里,当作一个自己的查询手册。 【手册】 查询方式说明se…

java 最快平衡几个值_Java 集合框架面试问题集锦

Java集合框架(例如基本的数据结构)里包含了最常见的Java常见面试问题。很好地理解集合框架,可以帮助你理解和利用Java的一些高级特性。下面是面试Java核心技术的一些很实用的问题。Q:最常见的数据结构有哪些,在哪些场景下应用它们&#xff1f…

mybatis-plus 如何判断参数是否为空并作为查询条件

判断参数是否为空并作为查询条件 Overridepublic Page<DemandEntity> selectByDepartmentDisplay(DemandEntity demandEntity) {EntityWrapper<DemandEntity> wrapper new EntityWrapper<DemandEntity>();wrapper.eq(!StringUtils.isNullOrEmpty(demandEnt…

linux 总数 进程_Linux运用一些常用命令,优秀的PHPer都需掌握

作为一名优秀的phper&#xff0c;Linux是必备的一项技能&#xff0c;工作3-5年的基本能明白我讲的道理&#xff01;今天搜集整理了一些Linux服务器运维常用命令,希望对大家有帮助&#xff1a;1.删除0字节文件find -type f -size 0 -exec rm -rf {} 2.查看进程按内存从大到小排列…

c语言高低位拷贝_C语言指针详解

1为什么使用指针 假如我们定义了 char a’A’ &#xff0c;当需要使用 ‘A’ 时&#xff0c;除了直接调用变量 a &#xff0c;还可以定义 char *p&a &#xff0c;调用 a 的地址&#xff0c;即指向 a 的指针 p &#xff0c;变量 a&#xff08; char 类型&#xff09;只占了一…

MybatisPlus中@TableField注解的使用详解

MybatisPlus中TableField注解的使用详解 实现 官方文档说明&#xff1a; com.baomidou.mybatisplus.annotations.TableField TableField注解新增属性 update 预处理 set 字段自定义注入 (讲解&#xff1a;比如我们使用mybatisplus自带的insert()方法向数据库插入数据时&…

dataframe记录数_大数据系列之Spark SQL、DataFrame和RDD数据统计与可视化

Spark大数据分析中涉及到RDD、Data Frame和SparkSQL的操作&#xff0c;本文简要介绍三种方式在数据统计中的算子使用。1、在IPython Notebook运行Python Spark程序IPython Notebook具备交互式界面&#xff0c;可以在Web界面输入Python命令后立刻看到结果&#xff0c;还可将数据…

bug的生命周期、bug状态转换图

当我们发现一个bug的时候&#xff0c;应该怎么理清他们之间的关系呢&#xff1f;一个bug 从open到close的所有状态 都是我们测试人员需要注意的。 一、bug的状态 新建&#xff08;New&#xff09; 新发现的bug&#xff0c;未经评审决定是否指派给开发人员进行修改。 确认&…

wps居中对齐不在中间_WPS文字快捷键总结(Windows版本)--值得收藏

WPS Office是一款国产的办公软件套装&#xff0c;有WPS文字、WPS表格和WPS演示三个板块&#xff0c;可以实现办公软件最常见的文字、表格、演示等多种功能&#xff0c;支持阅读和输出PDF文件&#xff0c;全面兼容Microsoft Office97-2010格式。想要熟练地使用WPS办公软件&#…

bugzilla使用规范分享

bugzilla使用规范分享 1.new/confirmed 测试人员将Bug提交给任务分发人员&#xff08;研发模块负责人&#xff09;&#xff0c; 此时Bug状态为new/confirmed&#xff0c;开始Bug的生命周期&#xff0c;如果测试人员知道具体负责的研发人员&#xff0c;也可以直接指定&#x…

编程语言_如何正确地学习编程语言

首先&#xff0c;当前学生和职场人学习编程已经成为了一个大的趋势&#xff0c;掌握编程语言不仅能够提升自身获取信息的能力&#xff0c;同时也能够拓展自身的能力边界&#xff0c;这一点在工业互联网时代会有更加明显的体现。编程语言本身并不难&#xff0c;但是要想形成自己…

测试游戏帧率电脑温度的软件,游戏中显示帧数和温度方法_游戏画面中实时显示FPS帧数温度技巧...

相信很多游戏玩家平时都是在用电脑玩游戏&#xff0c;而且大家也喜欢看一看自己在在游戏画面中实时的FPS帧数和温度信息。但是很网友对这个游戏画面中如何实时显示FPS帧数、频率、硬件温度不太清楚&#xff0c;下面智能手机网分享一下具体的操作方法&#xff0c;以便大家在玩游…

12面魔方公式图解法_一位建筑工程师:多年渴望就是学会魔方还原,只按这七步就可以!...

本人性别男&#xff0c;年龄47岁&#xff0c;一位建筑工程师&#xff0c;性格开朗&#xff0c;喜欢学习&#xff0c;2013年在网上搜索记忆关键词&#xff0c;从此开始了学习超级记忆和思维导图之路&#xff01;也因此&#xff0c;接触了魔方&#xff01;初学魔方&#xff0c;我…

navicat运行db文件_使用 YAML 文件配置 Jenkins 流水线

本文转载自&#xff1a;Jenkins 中文社区这也是一种自定义流水线 DSL 的方法几年前&#xff0c;我们的 CTO 写了一篇关于 使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续集成服务 的文章。这些年&#xff0c;我们一直使用这个 CI 流水线解决方案&#xff0c;直到我们最…

Mybatis-Plus实现逻辑删除

数据库中的数据删除会分为两种&#xff1a;物理删除 和 逻辑删除 物理删除 物理删除就是我们删除数据库中的一条数据时&#xff0c;数据会真的被删除 逻辑删除 逻辑删除指的是我们删除一条数据时&#xff0c;数据不会在数据库中消息&#xff0c;逻辑删除是我们现在开发中经…

完美国际单机修改服务器端,完美国际改国内版单机一键服务端

最喜欢的一款网游&#xff0c;曾经出来的时候可以说是划时代的&#xff0c;3D游戏&#xff0c;空战&#xff0c;大地图无缝对接等。从比较早的113版本&#xff0c;经典的六职业136版本&#xff0c;到现在的155版本。都保存的有。玩官服就不说啦&#xff0c;从13年接触服务端到现…

开发 数组里面的字典_Redis字典结构与rehash解读

关注公众号&#xff1a;后端技术漫谈&#xff0c;技术之路不迷路~字典是一种用于保存键值对的抽象数据结构&#xff0c;也被称为查找表、映射或关联表。在字典中&#xff0c;一个键(key)可以和一个值(value)进行关联&#xff0c;这些关联的键和值就称之为键值对。抽象数据结构&…

MyBatisPlus 学习笔记_MP的AR模式

狂神说 MyBatisPlus 学习笔记 一、快速入门 文档&#xff1a;https://mp.baomidou.com/ 使用第三方组件&#xff1a; 导入对应依赖研究依赖如何配置代码如何编写提高扩展技术能力 步骤&#xff1a; 1、创建数据库 mybatis_plus 2、创建user表 DROP TABLE IF EXISTS user;CREATE…

ajax调用java程序,从微信小程序到鸿蒙JS开发-JS调用Java

除轻量级智能穿戴设备&#xff0c;现鸿蒙支持的手机、汽车、TV、手表、平板等属于富鸿蒙&#xff0c;在JS语言的项目中也有Java模块&#xff0c;并提供了JS跨语言调用Java方法的技术。现需要实现查看商品评论时&#xff0c;统计出长评、中评和短评的比例&#xff0c;这里将评论…

文本删除空行_010 Editor for mac(文本和十六进制编辑器)

为大家带来最新版本的010 Editor for mac&#xff0c;这是一款专业的文本和十六进制编辑器&#xff0c;新版本的010 editor mac版包含了语法突出显示、更多字符集支持、添加了删除行和删除空行命令等新功能&#xff0c;另外修复了各种错误&#xff0c;功能更加全面。010editor …