回复:pointer指针读取db块中的字符,并输出。请问这个程序有什么问题,一直没有输出

loveheyunbo

  • 帖子

    62
  • 精华

    0
  • 被关注

    2

论坛等级:游士

注册时间:2010-08-04

普通 普通 如何晋级?

发布于 2015-03-06 12:50:33

10楼

展开查看
以下是引用emil128在2015-03-06 11:29:16的发言 >8楼:楼主程序的错误,已经被几位大侠们指出了。关键如“重新激活”大侠所说,address作为地址指针必须是32位.
其次32位指针用法是需要SLD 3或乘以8的。

这里恕在下开个玩笑,老学童大侠恐怕确实有“老眼昏花”的情况,楼主第一张图片很明显的,在DB中建立了一个以字符串为元素,256个元素的数组。因此完全可以模拟STATION 1~256。

楼主说要取的是指定“字符串的第8位”,是第8个字节吧,那么也就是字符串的第6个字符。因此地址加8也是必要的,不能省去。

最后那个apointer指针居然只提供一个DB号,实在是屈才了,估计是别处还有用吧。
1.确实+8这步不能省略,太对了
2.我重新定义了address0为Dword。然后,我的程序是这样写的:
****************************************************************************
注意我没有将指针address0没有做SLD 3 处理;
****************************************************************************
//--装载地址到地址寄存器中-----
L P##apointer
LAR1
//---读取DB块号码---------------------------------------
L W [AR1,P#0.0]
T #DB_NO //读取DB
//---得到偏移地址---------------------------------------
//L D [AR1,P#2.0]
//T #address
//-----根据工位号#StationNo计算对应toolname的地址---
//-----数据规律:dbb8,dbb136,dbb264,dbb392...公式(#StationNo-1)*128+8
L #StationNo
L 1
-I
ITD
L L#128
*D
L L#8
+D
T #address0
//----打开数据,将对应数据放入到MW08和#MZ中去
OPN DB [#DB_NO]
L DBB [#address0]
T MW 508
T #MZ
***************************************************************************
3.在看了amil128老师的这段话------------其次32位指针用法是需要SLD 3或乘以8。
我就在我原先的程序中加入了这段语句
****************************************************************************
更改后的程序,注意我是加入了这段SLD 3
****************************************************************************
//--装载地址到地址寄存器中-----
L P##apointer
LAR1
//---读取DB块号码---------------------------------------
L W [AR1,P#0.0]
T #DB_NO //读取DB
//---得到偏移地址---------------------------------------
//L D [AR1,P#2.0]
//T #address
//-----根据工位号#StationNo计算对应toolname的地址---
//-----数据规律:dbb8,dbb136,dbb264,dbb392...公式(#StationNo-1)*128+8
L #StationNo
L 1
-I
ITD
L L#128
*D
L L#8
+D
SLD 3
T #address0
//--打开数据,将对应数据放入到MW08和#MZ中去
OPN DB [#DB_NO]
L DBB [#address0]
T MW 508
T #MZ
*********************************************************************************************************
结果,大家看看我的截图,哈哈,我给db5.dbb8的赋值,神奇的33出现了。。。。。。。
******************************************************************************************************
谢谢各位老师的指点,特别是这句话“其次32位指针用法是需要SLD 3或乘以8”,刚刚接触指针,请大家原谅我的激动!!!




评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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