西门子博途(TIA Portal) 数组Array- 结构体(Struct)数据结构-UDT(User Data Type 用户数据类型)的使用
西门子博途(TIA Portal)数据结构UDT & 结构体(Struct) & 数组的使用
UDT 是 User Data Type (用户数据类型)的缩写.其实就是C语言中的struct (结构)类型。
TIA博途是全集成自动化软件TIA portal的简称,是西门子工业自动化集团发布的一款全新的全 集成自动化软件。它是业内首个采用统一的工程组态和软件项目环境的自动化软件,几乎适用于所 有自动化任务。借助该全新的工程技术软件平台,用户能够快速、直观地开发和调试自动化系统。
西门子的数据结构和一些高级语言的数据结构有相似之处,例如西门子的结构体和C#中的结构 体:博途中的结构体:
构体是由一批数据组合而成的一种新的数据类型。组成结构型数据的每个数据称为结构型数据的“成员”。
C#中的结构体:
博途中的数组:数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
C#中的数组:
数据也可以组合使用,博图里有一个非常强大的数据结构(用户自定义数据类型(UDT)),这样在我们编程 处理数据接口的时候就方便了很多,比如我们写了一个FC/FB功能块,接口处有很多不同类型的参数,而且又调 了很多次。这种情况我们还是按照传统的方法去定义每个变量就显得程序杂乱无章,当程序量大的时候不管是编 还是排查时都显得很吃力。数组的列表数量我们可以随便定义,UDT是一个固定的数据类型集合(一旦定义,不能 更改),把UDT当做数组的其中一个元素,这样我们数组定义的长度是多少就有多少这样的数据类型,再分别传给 每个FC/FB块,这样我们的整个程序就显得层次分明。下面来看实际操作:在UDT里定义数据类型,此数据一定要和FC/FB接口处一样,否则实参没法传入形参。
这里我们定义两个结构体数据,以便待会做元素下的多类型数据。
数据类型已经定义好,接下来在数据库或者FB背景数据库里定义结构体数组,这样的数据结构非常清晰。
FC/FB里的数据结构也要一致。
接下来就是在程序里调用FC/FB了,这样是不是和高级语言一样了?数据只调用集合不调用成员,这样的编程结 让我们的程序看起来非常简洁。
接下来再为大家提供一个在此基础上稍加变换的方法(不定数组)。有时候我们做一个FC块,接口的参数同 样用上述的结构体方法来传送参数,但有时候会碰到传入的数组元素数量不确定的情况,比如我们做一个FC来对 模拟量进行转换运算,想要做一个通用的FC,通道数量能够任意改变,又不想在接口处定义太多参数,此时我们 就要用到数组元素初始化时不指定元素数量了。
这一个模拟量转换的FC,数据类型数组没有去指定数量,也就是说外部的数组传进来可以是1个也可以是10 个,只要不超过CPU内存范围。
我们的数据库内定义的数组数量是可以任意更改的,比如我们这套配置有6个模拟量输入,那么数组就定义 6个,FC内部会进行数组数量的运算你,自动获取每个元素内的成员数据。
这篇文章主要是介绍下数据结构的灵活使用,能使我们的程序结构清晰,代码简洁,易排查问题。