结构数据类型(Struct)
Struct 类型呢,就是一种由好多不同数据类型的元素组合成的数据结构。这里面的元素,可能是基本的数据类型,也可能是 Struct、数组这类复杂的数据类型,还有 PLC 数据类型(UDT)等等。Struct 类型嵌套 Struct 类型的深度最多就到 8 级。
Struct 类型的变量在程序里面,既能当作一个完整的变量,也能单独用组成这个 Struct 的元素。Struct 类型能在 DB、OB/FC/FB 接口区、PLC 数据类型(UDT)这些地方定义和使用。
Struct 数据类型用起来特别灵活,啥时候想用都行。
不过跟 PLC 数据类型 (UDT) 比,有下面这些缺点,所以要是想用 Struct 类型,建议用 PLC 数据类型(UDT)来替代。维护成本变高:要是对一个 Struct 复制了好多回,那在更改的时候,这个 Struct 也得跟着改好多回。Struct 和 PLC 数据类型(UDT)的相同结构不兼容。因为系统会检查所有结构元素的类型是不是匹配,所以就会让性能变差。存储空间需求变大:每个 Struct 都是单独的一个对象,它的描述信息会加载到 PLC 里。
Struct应用案例
1. 单独用组成这个 Struct 的元素的时候,跟普通的变量没啥区别,就是每出现一个 Struct 的嵌套层级,变量名就会多一个前缀,就像图 1 - 2 展示的那样。
图1 Struct的定义
图2 Struct的使用
2. Struct 能够把一种类型的变量放到一块儿,这样有利于区分,就像图 3 - 4 显示的那样。
图3 原始结构
图 4 增加了 Struct 类型的结构。图 4 和图 3 的功能明显是一样的,不过图 4 比起图 3 来,分类更清楚。
在通讯程序里,一般可以把需要发送的数据放到一个 Struct 当中,也就是把它看成一个整体。这样的话,在发送区只需要填写一个变量就行,就像图 5 展示的那样。
图 5 用了图 4 定义的 Struct 类型。
MOVE 指令能支持相同 Struct 类型的直接传送。要是传送的双方是大量数据,而且结构相同,可以先分别在一个结构里建立双方的数据,然后用一个 MOVE 指令一次性传送就行,就像图 6 展示的那样。
西门子1500PLC结构数据类型(Struct) PLC论坛-全力打造可编程控制器专业技术论坛 -
西门子1500PLC结构数据类型(Struct)
http://bbs.plcjs.com/forum.php?mod=viewthread&tid=503960&fromuid=1
(出处: PLC论坛-全力打造可编程控制器专业技术论坛)