技术论坛

在进行SMART200标准化实践时发现了smart200指针的秘密

作者 主题
奇侠

经验值: 8139
发帖数: 843
精华帖: 14
主题:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 楼主 2021-11-22 19:05:11

很多小伙伴都会使用指针,但指针里面的结构到底是什么样的没几个小伙伴知道。

手册里也没提到过此内容。

我们来看一下指针里的内容:



我们可以看到VB100里是08,表示是V区,VW102里的整数代表VB的地址。经过测试,V区最大地址范围20479,没有超过W的整数范围。


经过测试指针指向的区域类型编号如下:

&I区00    &Q区01    &M区02    &S区03    &SM区04    

&V区08    &T区09    &C区0A    &AIW区0C    &AQW区0D


有的小伙伴可能会问了,知道这些有什么用?

当然是可以不用&就可以建立指针啦,就是人工做出指针呀


我能想到的应用是,触摸屏上输入的数据,通过触摸屏上的选择将数据传送到任意地方去。

当然我不清楚触摸屏有没有这样现成的功能。


我的小应用是在标准化程序里通过最后的指针数据获取地址信息。


一定还有其它应用,小伙伴们畅所欲言吧,一定有喷子说这没啥用。







13478405725
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1732543&b_id=64&s_id=0&num=12

至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 2楼 2021-11-22 20:21:43

我被题目吸引进来的。

我上过的程序应该不少的。

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1639000&b_id=3&s_id=0&num=15#anch



 
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 3楼 2021-11-22 20:50:00

11AB翻译成十进制就是4523。一些间接寻址可以只运算后面这个字,16#0800这里就可以不管了。因为基本上间接寻址多数情况都是对V区的。以前200时候的运算用16位计算指针可以节省一点时间。算到最后再附上16#0800就可以使用了。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 8094
发帖数: 1308
精华帖: 6
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 4楼 2021-11-22 21:42:38

原来是这样啊......


养活一团春意思,撑起两根穷骨头
以下网友喜欢您的帖子:

  
至圣

经验值: 76166
发帖数: 19135
精华帖: 378
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 5楼 2021-11-22 22:50:12

呃,S7-200都用了这么些年了,还有啥秘密别人不知道的?


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
版主

经验值: 25989
发帖数: 11808
精华帖: 43
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 6楼 2021-11-23 21:51:41

官方给出的指针用法:

1、初始指针,使用&VB生成;

2、移动指针(增或减),可以只操作低16位值。

但不建议直接按自己归纳的值生成指针,因为这个没有得到官方的保证。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 13017
发帖数: 1815
精华帖: 22
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 7楼 2021-11-24 10:21:00

楼主总结的可以.

这个以前看雪001/版主也有提过,地址就是二进制数,这是由地址译码器结构决定的.

以前敲过<C和指针>K&RC:当混用指针和整型值时,旧式C编译器并不会发出抱怨。但是,我们现在对这方面的知识知道得更透彻一些了。把整型值转换为指针或把指针转换成整型值是极为罕见的,通常这类转换属于无意识的错误。

因此还是踏踏实实敲&VB

但在200的编译器环境下如果涉及指针的指针,以及涉及指针常量,指针变量时.这时一个存有合法指针整数变量的双字可能还是必要的,比如以前敲得延长函数的循环版-延长入出函数,按它的数据结构中的指针变量必须有个双字来缓存合法的指针整数值.

这些也可以用组织合理的数组来变通代替.


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 8楼 2021-11-24 11:21:08

一串0011的值,看用什么眼光来看而已。16#;8#;10#;&(*)。同一个二进制数,看法不同,各自理解就是了。

我记得我很早很早之前,用间接寻址开始,初期就瞄了一眼究竟movd进去的&变成了什么东西?然后就明白个大概了。印象深的只有16#0800和16#0000。0800一直使用。0000基本在出错但是又不报警的时候出现。所以只记住了这两个。其他的要用的时候再试。不过做过两个输入输出重定向的库后,一直都没有用过其他的。

间接寻址这事情,搞不好,什么都可以搞垮。发现有一点点红色啊报警啊等等的,都要搞顺为止。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 9楼 2021-11-24 16:37:12

最早在 TD-200 里面就可以通过修改I/Q/AIW/AWQ/M/V 其实指针来访问偏移地址的数据了。

但,这种做法除非是自己写上位机,否则很多HMI都不直接支持这样操作内存,自己折腾的话一个逻辑没考虑到就会付出代价,所以不折腾咯。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12705
发帖数: 1584
精华帖: 1
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 10楼 2021-11-25 00:18:43

间接寻址,,太难了!

谢谢楼主



努力学习西门子
以下网友喜欢您的帖子:

  
奇侠

经验值: 8289
发帖数: 641
精华帖: 0
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 11楼 2021-11-26 07:44:47

感谢楼主,涨知识了


努力向上
以下网友喜欢您的帖子:

  
侠客

经验值: 844
发帖数: 90
精华帖: 1
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 12楼 2021-11-27 09:03:33

感谢分享!


 
以下网友喜欢您的帖子:

  
侠客

经验值: 709
发帖数: 31
精华帖: 0
回复:在进行SMART200标准化实践时发现了smart200指针的秘密


只看楼主 13楼 2021-11-27 10:21:26

感谢楼主,涨姿势


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
在进行SMART200标准化实践时发现了smart200指针的秘密
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。