可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

[西门子PLC] 西门子S7-1500结构数据类型(Struct)

结构数据类型(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论坛-全力打造可编程控制器专业技术论坛)

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言