作者 | 主题 |
---|---|
大魔王111 游士 经验值: 166 发帖数: 11 精华帖: 0 |
楼主 2021-06-03 13:54:25
主题:PLC中的32位指针寻址困惑 如题: 技术手册上说的是:若把一个32位整型转换为字节指针常数,从上述指针格式可以看出,应要把该数左移3位(或是乘8)即可。 eg1 ******************************************************** ******************************************************** eg2 ******************************************************** ******************************************************** 困惑点: 1.为什么320,变成指针就是P40.0,而不是P320.0,; 2.两个示例,都是转化为指针,为什么转化的结果不一样,区别在哪里。 附件是我看的技术资料,在此先谢谢大家了。 |
冬日 奇侠 经验值: 8545 发帖数: 3428 精华帖: 56 |
1楼 2021-06-03 14:14:33
主题:回复:PLC中的32位指针寻址困惑 答案你自己不是都说了嘛,要左移三位或者乘8 你认真看一下指针的数据结构自然就明白了,第0-3位表示位,4-19好像(忘记了)表示字节。 320直接传到指针,表示已经左移三位,也就是已经x8了,所以实际上表示的是40.0
If anything can go wrong, it will.
|
大魔王111 游士 经验值: 166 发帖数: 11 精华帖: 0 |
2楼 2021-06-04 16:30:41
主题:回复:PLC中的32位指针寻址困惑 我意思如果按照左移的思想来理解的话。 案例2, 整数320,转化为2进制是 1 0100 0000 如果用32位表示的话,应该是 0000 0000 0000 0000 0000 0001 0100 0000 用32位指针表示: 0000 0000 0000 0,000 0000 0001 0100 0,000 换算成指针形式,刚好是P#40.0 对于案例1,如果按照我理解的, 整数100,转化为2进制是 0110 0100 如果用32位表示的话,应该是 0000 0000 0000 0000 0000 0000 0110 0100 用32位指针表示: 0000 0000 0,000 0000 0000 0000 0110 0,100 换算成指针形式,是P#12.4,不是P#100.0 困惑点在于: 为什么,整数100,如果想得到P#100.0,是换算为2进制后,整体左移3位,否则就是P#12.4 但整数320,如果按照整体左移3位的话,得到的结果是P#320.0,而不是P#40.0 求大佬解惑。谢谢啦。 |
kenshinguo 侠圣 经验值: 2627 发帖数: 736 精华帖: 3 |
3楼 2021-06-04 16:40:20
主题:回复:PLC中的32位指针寻址困惑 你红色字体说的很清楚啊,整数100左移3位是P#100.0,不左移就是p#12.4;整数320左移3位是P#320.0,不左移就是P#40.0。这没毛病啊,两个例子一模一样。 |
zhangli0 至圣 经验值: 43092 发帖数: 15750 精华帖: 61 |
4楼 2021-06-06 09:40:13
主题:回复:PLC中的32位指针寻址困惑 为什么,整数100,如果想得到P#100.0,是换算为2进制后,整体左移3位,否则就是P#12.4 整数100=2#110 0100,最后的三位表示的是字节的8个位,如果要想得到指针的值100.0那么就要左移三位变成:2#11 0010 0000 但整数320,如果按照整体左移3位的话,得到的结果是P#320.0,而不是P#40.0 你的第二个没有左移,直接把320赋值给指针变量了,所以指针的值是320/8=40.0,如果你要指针的值是320.0那么就也要左移3位才行。
活到老,学到老!为了生活学习吧!
|
xiatianyun 侠圣 经验值: 4856 发帖数: 735 精华帖: 10 |
5楼 2021-06-06 09:54:06
主题:回复:PLC中的32位指针寻址困惑 指针这样直接使用是在哪种场景中? |
大魔王111 游士 经验值: 166 发帖数: 11 精华帖: 0 |
6楼 2021-06-07 13:26:16
主题:回复:PLC中的32位指针寻址困惑 |
大魔王111 游士 经验值: 166 发帖数: 11 精华帖: 0 |
7楼 2021-06-07 13:27:25
主题:回复:PLC中的32位指针寻址困惑 |
奔跑の蜗牛 侠圣 经验值: 2505 发帖数: 296 精华帖: 1 |
8楼 2021-06-08 02:51:43
主题:回复:PLC中的32位指针寻址困惑 前几年学STL时候,也是很迷惑过这个问题,其实,弄STL,你得先看看基础知识,不能自己硬搞,毕竟这个地方都是根据规则来的,以现在仅仅是对为什么左移有疑问,到时候你还会遇到Any和Pointer类型拆分的疑问,会迷惑于为什么要拆分那么细,然后各个部分比较,其实都是基础知识,仔细看一下规则和定义即可,另外,你得转换一下思路,将十进制的思路,转换到二进制来,如32位寻址,你得仔细看人家介绍的每个字,尤其是,32位怎么划分的区域,每个区域表示什么
千万不要和杠精抬杠,因为他会把你拉低到他的水平,然后再恶心你
|
大魔王111 游士 经验值: 166 发帖数: 11 精华帖: 0 |
9楼 2021-06-08 09:26:33
主题:回复:PLC中的32位指针寻址困惑 感谢你的热心帮助,只是目前资源有限,有些不懂的地方,周围没有人解惑。 比如贴中所示: 为什么整数100,用32位指针表示,需要左移3位,得到P#100.0,但为什么整数320,转化位指针的时候,不需要再左移3位,得到了P#40.0, 现在的困惑在于,整数转化为32位指针的时候,什么时候,需要左移3位,什么时候不需要。我问了一些人,都不甚了解。 |
奔跑の蜗牛 侠圣 经验值: 2505 发帖数: 296 精华帖: 1 |
10楼 2021-06-08 10:21:08
主题:回复:PLC中的32位指针寻址困惑 问题的本身就是答案啊,偏移是用于指针时候啊,这个时候相当于有个基准量AR1,然后再加上偏移地址,根据偏移地址的变化,指针就指向不同的地方,建议你仔细看看你发的那个文档,一个字一个字看,把案例抄下来,仿真监控一下,你就发现其中的含义了,另外,STL的资料,大部分是比较早的Step7的,用博途写和监控时候,有些地方会不一样,自己注意甄别; 另外,即便不是看不会,也不要太捉急,毕竟现在STL都快属于上古语言了,能大体看懂就行,自己多写写,多监控,逐个程序步的监控,慢慢就发现奥秘了,到时候你会有种恍然大悟的感觉
千万不要和杠精抬杠,因为他会把你拉低到他的水平,然后再恶心你
|
kenshinguo 侠圣 经验值: 2627 发帖数: 736 精华帖: 3 |
11楼 2021-06-08 10:42:34
主题:回复:PLC中的32位指针寻址困惑 不知道该怎么解释,可能还得楼主自己琢磨下。 指针寻址就跟我们爬楼一样,一层楼就是一个byte,每层楼之间有8级台阶,一级台阶就是一个bit位。 你爬到第40层楼(地平面是0层),就得爬40*8个台阶,指针偏移是320。 P#0.1代表指针偏移1,P#0.2代表指针偏移2......P#1.0代表指针偏移8,P#2.0=2*8,P#3.0=3*8。 P#40.0代表第40层楼,他的指针值是40*8=320。 如果指针是100,100/8=12余4,代表P#12.4。 |
shanmin 侠圣 经验值: 2405 发帖数: 287 精华帖: 2 |
12楼 2021-06-09 22:09:52
主题:回复:PLC中的32位指针寻址困惑 你问的好像是应用场景啊,比如你要将M40.0后面的位逐个置1。那就可以将320装载到MD28,置1;MD28加1,再置1;MD28加1,再置1。。。。。这样M40.0后面的位就逐个置1了,目的达到。什么时候需要左移3位什么时候不需要完全是根据你的需求来的。好好理解上图的寻址规则就OK了。 |
冬日 奇侠 经验值: 8545 发帖数: 3428 精华帖: 56 |
13楼 2021-06-09 22:52:18
主题:回复:PLC中的32位指针寻址困惑 左移只是过程,不是目的,目的是得到正确的值。 比如下面的eg1,写成这样效果是一样的 L L#800 //Accu0装入32位整形100 eg1 ******************************************************** ******************************************************** 这个eg2,写成这样效果也是一样的: L 40 //320转换指针为P#40.0并装载到MD28中。 L 8(或者SLD 3) *I eg2 ******************************************************** ********************************************************
If anything can go wrong, it will.
|
莎利文 侠士 经验值: 1721 发帖数: 107 精华帖: 3 |
17楼 2021-06-21 17:12:26
主题:回复:PLC中的32位指针寻址困惑
存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。
人情到时文章老,书读深处意气平。
|
我加盟 侠圣 经验值: 2327 发帖数: 107 精华帖: 0 |
18楼 2021-06-28 09:18:50
主题:回复:PLC中的32位指针寻址困惑
Always save before download!
|
n63185 侠客 经验值: 684 发帖数: 145 精华帖: 0 |
20楼 2021-07-09 22:29:38
主题:回复:PLC中的32位指针寻址困惑
沒有最好,只有更好
|