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

yming

西门子1847工业学习平台

  • 帖子

    23139
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2018-09-28 18:02:28

8楼

展开查看
以下是引用kayan在2018-09-28 09:00:46的发言 >7楼


这是我简单测试的程序,您看看有更好实现的办法吗?


以下是引用kayan在2018-09-28 08:51:18的发言 >6楼:我的解决办法是建个...

引用6楼详细内容:

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

以下是引用kayan在2018-09-27 11:15:46的发言 >5楼:结构化的数据是很好...

引用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兼容模式)的指针,只是为兼容引用了原格式,使用它可以指出一个操作的数据区域;但并不能实际操作指针来寻址。

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



我一般使用数组,只与数组[0]打交道。

其他只不过 是 数组[0] 与 数组[n] 交换数据而已。

这种数据结构的数组DB,只是用作 配方参数。


至于相同操作的数据类型,以前写过。使用 Variant 传送,不需要判断数据类型。

学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15100条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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