回复:请哪个老师来系统的讲一讲指针

v_wind

  • 帖子

    287
  • 精华

    3
  • 被关注

    36

论坛等级:侠圣

注册时间:2013-03-08

普通 普通 如何晋级?

发布于 2018-09-28 08:51:18

6楼

展开查看
以下是引用kayan在2018-09-27 11:15:46的发言 >5楼

结构化的数据是很好,假设我想把结构化数据不同类型的第一个数延时100ms加一,之后再100ms把第二个数加一,再100ms把第三个数加一,结构化数据有很多大于1000,类型还不一样怎样批量处理?我一直很纠结!


以下是引用yming在2018-09-26 22:55:03的发言 >4楼:结构化的数据,不是...

引用4楼详细内容:

结构化的数据,不是挺好么?

什么叫浪费资源?什么意思?

合理组织数据。

以下是引用kayan在2018-09-26 16:20:16的发言 >3楼:尽量不使用指针(寄...

引用3楼详细内容:

尽量不使用指针(寄存器操作)的方式。用数据结构、数组等来代替,使程序的可读性更好?

YMING 请问多种类型怎样使用数组操作,比如50个INT,60个real, 100个WORD混乱穿插在一起怎样批量操作,以前使用struct类型再建数组但是这样太浪费资源了,有好办法吗?

以下是引用yming在2018-09-24 20:00:48的发言 >2楼:你是在说 P# 那种...

引用2楼详细内容:

你是在说 P# 那种指针么?1200的CPU运行机制与从前完全不同。据说它没有这种地址寄存器。只是模拟了一个这种寄存器。所以,不推荐使用操作指针的间接寻址。推荐使用数组索引的方式。

原来的300/400的指针是具有确定的4字长数据结构的。可以准确的表示数据的位置,一直到数据位。

而1200在TIA中,采用的是变量名称(标签)寻址,仅在完全编译后,下载时,才有实际地址。

即便你在编程时,敲入的是 M100.1,它也是自动生成 Tag_1之类的标签,用它来寻址。(优化的DB块也是同样与实际地址无关。M区只是通过变量表寻址。)

而1200所谓的指针Any、Variant等等,在我看来只是数据的引用。

至于对非优化(300/400兼容模式)的指针,只是为兼容引用了原格式,使用它可以指出一个操作的数据区域;但并不能实际操作指针来寻址。

因此,尽量不使用指针(寄存器操作)的方式。用数据结构、数组等来代替,使程序的可读性更好。



我的解决办法是建个数组,二级是结构体,结构体里有各种类型如real   int word  dint,当使用数组第一个数时判断是什么类型,就把这个类型数据加一,其他不动,数组第二,三个依次类推,这样就可以批量处理了,但是其他不动的数据就是浪费了,我就想问问有比这更好的办法吗?

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15105条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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