从数据类型的意义上说 UDT 并不被 CPU 所识别,而是在离线程序中自定义(组合)的数据类型。 S7 程序的自定义数据类型并不能装载到 S7 CPU 中。UDT 是由递增的编辑器创建并编辑或由源文件的编译而生成。 当在块调用中进行变量传递时是不能将 UDT 作为内存地址区域来传递的。因此推荐将传递的变量指定为字节数据类型并与其数据长度相一致,或者使用 UDT 的符号名来定义 IN, OUT 和 IN_OUT 参数,因为系统将自动生成相对应的地址。

1在 STEP 7 项目中插入自定义数据类型。如图 01 鼠标选中“block”文件夹并点击右键,再弹出菜单中选择命令“Insert New Object > Data Type” 。

图1

2 在“Properties - Data Type”对话框中输入 UDT1 的符号名(这里以“Motor”为例)后点击OK 确认。

图2

3 打开 UDT1 并输入相关数据类型的变量及其初始值。图 03 为 UDT1 变量声明的例子。

图3

4 然后通过菜单命令“Insert > S7 Block > Data Block”在 STEP 7 项目中添加一个数据块 DB1 ,并在“Properties - Data Block”属性对话框中为其定义符号名(例如此例为“Halle_Motoren” (Hall - Motors))。点击OK 确认。

图4

5 打开 DB1 将变量数据类型定义为 UDT1 (符号名“Motor”)。 例如图 05 所示:两个数组( ARRAY)变量,每组包括10个以 UDT1 为数据类型的变量( 编号1 到10)。

图5

由于此例两组电机是独立的,所以在 DB1 中要为每一组电机创建数据结构。例如第一组的数据结构定义为数据类型为 UDT1 的数组“ Array[1..10] ”,符号名为“Halle_1_Motor”。

6 选择菜单命令“View > Data View”可显示所有 DB1 数据。

图6

在数据块中变量定义为 UDT 情况下只能对实际值进行编辑。即可以在数据块的数据视图中输入变量的当前值。初始值“Initial Value”纵栏显示的是在定义 UDT 变量时所设的初值。只是在 DB 块第一次存储时将初值作为当前值。

7为 FC 或 FB 定义 UDT 1 类型的 IN 参数

创建 FB 或 FC 时,可以定义 UDT 1 (Motor)类型的 IN 参数,如图07所示。

例如,与操作语句:“U #Eingabe.Einschalten” (A #Input.Switch On)

  • Eingabe:FC1 的 IN 参数变量
  • Einschalten: UDT1 中的一个变量名

图7

UDT 数据类型同样适用于 OUT 和 IN_OUT 参数,方法同上。

8 数据块 DB1 的寻址及编程

图 08 所示为变量定义为 UDT1 类型数据结构的 DB1 的编程例子。

例如与操作:U “Halle_Motoren”.Halle_1_Motor[2].Einschalten (“U Hall_Motors.Hall_1_Motor[2].Switch On)

  • Halle_Motoren: DB1 的符号名
  • Halle_1_Motor[2]: DB 块数组2 的变量
  • Einschalten: UDT1 中的一个变量名

图8

9 在FC 或 FB 中参数化 IN 参数

当调用 FC1时, UDT 类型的输入变量必须赋值,例如可以用如下语句将第一组电机地址指针赋给输入参数。

  • “Halle_Motoren”.Halle_1_Motor[1] (“Hall_Motors”.Hall_1_Motor[1])

图9

这种参数化过程同样适用于定义为 UDT 类型的 OUT 和 IN_OUT 参数的其它变量。

10 在交叉参考表中可以显示 S7 用户程序所用地址及应用(例如 DB1 )的列表。

ajax中的url如何传递变量_如何创建和参数化UDT数据类型中的变量及IN,OUT 等参数?...相关推荐

  1. linux bash 变量_如何在Linux上的Bash中设置环境变量

    linux bash 变量 fatmawati achmad zaenuri/Shutterstock Fatmawati achmad zaenuri / Shutterstock There's ...

  2. python 打印数组变量_使用Python将数组的元素导出到变量中(unpacking)

    下面就为大家分享一篇使用Python将数组的元素导出到变量中(unpacking),具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 最近工作中遇到一个问题,需要利用Python将数组(list ...

  3. c++模板类静态成员变量_一文讲透父子类中静态变量,成员变量初始化顺序原理...

    推荐: 从面试到入职到离职,我在B站工作的30天时光 爱了爱了,Alibaba顶级MySQL调优手册到手,加薪妥了 爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了 本文 ...

  4. python class 是否存在某个变量_一文抵十课,考验你的Python变量是否理解透彻了

    变量是编程的基础概念,Python 的变量也看似很简单,但是如果理解不当,生搬硬套,可能会遇到一些麻烦. 下面用 10 个代码示例展示 Python 的 变量 本质. 快来看看你对 Python 的变 ...

  5. 无符号数的算术四则运算中的各类单词的识别_文本反垃圾在花椒直播中的应用概述...

    奇技指南 本文主要以文本为对象,简要地介绍花椒平台在文本反垃圾方面所采用的文本垃圾拦截技术 本文转载自花椒技术公众号 背景 随着花椒用户和主播用户的数量不断增加,一些非法用户(垃圾虫)利用花椒平台数据 ...

  6. java url gbk编码转换_如何在一个utf-8编码的HTML中 在javascript中url跳转时把url中的汉字改为GBK编码...

    展开全部 html文件中私用32313133353236313431303231363533e78988e69d8331333337623465JavaScript将url的汉子转为为GBK编码,主要 ...

  7. java 存储变量_如何在Java 8中将方法存储在变量中?

    小编典典 是的,您可以对任何方法进行变量引用.对于简单的方法,通常使用java.util.function.*class就足够了.这是一个工作示例: import java.util.function ...

  8. controller调用另一个controller中的方法 获取返回值_必须掌握!你知道 Spring 中运用的 9 种设计模式吗 ?...

    Spring中涉及的设计模式总结,在面试中也会经常问道 Spring 中设计模式的问题.本文以实现方式.实质.实现原理的结构简单介绍 Sping 中应用的 9 种设计模型,具体详细的刨析会在后面的文章 ...

  9. 两个线程同时访问一个变量_百战程序员:Java多线程对象及变量的并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

最新文章

  1. AIX系统日志学习笔记之一
  2. 猫狗识别——PyTorch
  3. Python3压缩和解压缩实现
  4. 5.0:Spring-bean的加载
  5. linux下c语言抓包库libpcap
  6. Ribbon-4 Ribbon脱离Eureka使用
  7. Servlet生命周期和方法
  8. 一条线一万美元的故事误导了你多少年
  9. 【百度地图API】如何激发手机的高分辨率
  10. php 获取mac地址栏,php 获取网卡物理(MAC)地址的实现方法
  11. jenkins结合ansible用shell实现自动化部署和回滚
  12. web 端 gantt组件选型
  13. RoundedUITableView
  14. 笑死人了,要抑制房价的过快上涨?
  15. 一篇文章彻底搞懂海明码
  16. TencentOS-Tiny之GCC
  17. element-ui table的选中行高亮和取消高亮
  18. Win10如何自定义右键菜单-修改注册表(图文)
  19. 超超详细ReactRouter v6版本的基本使用
  20. 2020职场狠人:打脸是真的,决心也是真的

热门文章

  1. 学完UI设计可以从事哪些工作
  2. 学习Python有什么优势?
  3. 06- web兼容性测试
  4. OO真经——关于面向对象的哲学体系及科学体系的探讨(上)
  5. 【iOS UI】iOS 9 GUI 资源分享
  6. 多个class相同的input标签 获取当前值!方法!
  7. MIDP2.0引入了Push注册机制
  8. 如何读取多个文件,文件后缀名不一致,不过类似source.1 source.2 source.3等
  9. 你的微笑,拂过我的心海
  10. Java中关于进程和线程的理解