You are on page 1of 5

西门子博途(TIA 

Portal)数据结构 UDT & 结构体(Struct) & 数组的使用

     西门子博途(TIA Portal)数据结构 UDT & 结构体(Struct) & 数组的使用

第一次写博客,初来乍到。平时自己在网上也看过不少人写博客,基本上都是一些大神记
录自己的心得和体会并拿出来与大家分享,我想,作为一个经常写博客的人,不单单是为
了与大家分享自己的心得体会,同时也是为了给自己在这个知识片内做复习和总结吧。
作为一个工控行内人,着重技术这块来讲,写博客就是为了和大家分享一些我自己在实际
项目中的技术和经验,如果写得不好,请路过的同行指点一二。
TIA 博途是全集成自动化软件 TIA portal 的简称,是西门子工业自动化集团发布的一款全新
的全集成自动化软件。它是业内首个采用统一的工程组态和软件项目环境的自动化软件,
几乎适用于所有自动化任务。借助该全新的工程技术软件平台,用户能够快速、直观地开
发和调试自动化系统。
西门子的数据结构和一些高级语言的数据结构有相似之处,例如西门子的结构体和 C#中的
结构体:

1
博途中的结构体:
2

C#中的结构体:
3

博途中的数组:
4
C#中的数组:

数据也可以组合使用,博图里有一个非常强大的数据结构(用户自定义数据类型
(UDT)),这样在我们编程处理数据接口的时候就方便了很多,比如我们写了一个 FC/FB
功能块,接口处有很多不同类型的参数,而且又调用了很多次。这种情况我们还是按照传
统的方法去定义每个变量就显得程序杂乱无章,当程序量大的时候不管是编写还是排查时
都显得很吃力。数组的列表数量我们可以随便定义,UDT 是一个固定的数据类型集合(一
旦定义,不能更改),把 UDT 当做数组的其中一个元素,这样我们数组定义的长度是多少
就有多少这样的数据类型,再分别传给每个 FC/FB 块,这样我们的整个程序就显得层次分
明。下面来看实际操作:
在 UDT 里定义数据类型,此数据一定要和 FC/FB 接口处一样,否则实参没法传入形参。
6

这里我们定义两个结构体数据,以便待会做元素下的多类型数据。
7

数据类型已经定义好,接下来在数据库或者 FB 背景数据库里定义结构体数组,这样的数
据结构非常清晰。
8

FC/FB 里的数据结构也要一致。
9
接下来就是在程序里调用 FC/FB 了,这样是不是和高级语言一样了?数据只调用集合不调
用成员,这样的编程结构让我们的程序看起来非常简洁。
10

接下来再为大家提供一个在此基础上稍加变换的方法(不定数组)。有时候我们做一个 FC
块,接口的参数同样用上述的结构体方法来传送参数,但有时候会碰到传入的数组元素数
量不确定的情况,比如我们做一个 FC 来对模拟量进行转换运算,想要做一个通用的 FC,
通道数量能够任意改变,又不想在接口处定义太多参数,此时我们就要用到数组元素初始
化时不指定元素数量了。
这一个模拟量转换的 FC,数据类型数组没有去指定数量,也就是说外部的数组传进来可以
是 1 个也可以是 100 个,只要不超过 CPU 内存范围。
11

我们的数据库内定义的数组数量是可以任意更改的,比如我们这套配置有 6 个模拟量输入,
那么数组就定义为 6 个,FC 内部会进行数组数量的运算你,自动获取每个元素内的成员数
据。
12

这篇文章主要是介绍下数据结构的灵活使用,能使我们的程序结构清晰,代码简洁,易排
查问题。

You might also like