有没有高手帮忙解释一下这个DB块中STRUCT和array的例子,加深理解?

已锁定

jack586

  • 帖子

    243
  • 精华

    1
  • 被关注

    19

论坛等级:侠客

注册时间:2008-05-26

普通 普通 如何晋级?

有没有高手帮忙解释一下这个DB块中STRUCT和array的例子,加深理解?

3227

4

2013-09-23 00:56:36

各位老师:
麻烦大家了,我研究程序,遇到了问题。
DB块中对于STRUCT的解释
此菜单命令可在详细变量视图的"数据类型"列的激活单元格中插入关键字STRUCT,以将变量声明为结构。
结构是可最多嵌套8层的复杂数据类型。结构的元素可以是基本数据类型或复杂数据类型。STRUCT数据类型必须由STRUCT和END_STRUCT之间的一个或多个元素组成。结构内包含的结构仅视为一个元素。
对于ARRAY的解释
此菜单命令可在详细变量视图的"数据类型"列的激活单元格中插入关键字ARRAY,以将变量声明为数组。在方括号内输入数组的长度值,例如[1..10]。在自动创建的第二行中为元素设置数据类型。
数组是数据类型(基本型或复合型)的*组合。
实例:"ARRAY [1..2,1..3] OF INT"定义格式为2 x 3的整数数组。
可通过索引("[m,n]")访问数据,但必须遵守1<=m<=2且1<=n<=3的规则。
最多可以声明6维数组。索引可以是任意整数值。在声明中,必须设置ARRAY限制,从而使ARRAY可最多包括65535个元素。维度的上限值必须大于下限值。

那么,我想解释一下下图中的结构,希望大家能指出我的错误和不足之处。
结构STRUCT的名称为MSG的开始地址150.0,结束地址230.0 。
其中包括ARRAY[1,20],这个数组中包括20个结构,每个结构包含1BYTE的INDEX,1个BOOL的is_active和1个BOOL的is_gone,每个结构占用两个字节,至于剩下的1.2至1.7不用。这样总共就占用了40个字节。
到了下一个地址ARRAY其实地址就是40.0了,由于处于MSG的总结构中,所以,它的起始地址就是190.0。它包含20个结构,每个结构包含1个BOOL地址,占用两个字节,剩余的0.1至1.7不用。这样共占用40个字节。
这些进行完了,又占用了40个字节,所以STRUCT的MSG的最后地址就是150.0+80.0=230.0 。
从230.0开始进入下一个STRUCT,只占用两个字节,最终结构STRUCT结束,末尾地址232.0 。



谢谢!
有没有高手帮忙解释一下这个DB块中STRUCT和array的例子,加深理解? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54710条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。