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

老学童

  • 帖子

    765
  • 精华

    32
  • 被关注

    64

论坛等级:奇侠

注册时间:2011-06-22

钻石 钻石 如何晋级?

发布于 2015-03-05 22:52:15

7楼

我猜楼主是对现有的程序不太理解,所有想通过自己建立一个数据块,来仿真一下!
1. 可是从楼主发的图片上看,仅仅建立了一个含有62个字符的串,怎么能仿真出“dbb8,dbb136,dbb264,dbb392...”
2. 这段程序的含义应该是这样的:
1) 每个站(Station)用62个字符来表示其所含Tool Name,而这个数据块(DB5)应该包含多个站(Station)的数据段(均用62个字符来表示其所含Tool Name),通过输入参数#StationNo计算每个数据段的首地址。
2)楼主发的图片很容易让人误认为你要仿真数据是从地址0(P#0.0)开始,其实,原先的DB前面有8个字节的其它数据,那么既然楼主要仿真,就必须在第一个字符串开始前面插入8个空字节(或4个INT或4个WORD或2个DWORD),这也是为什么我在1楼改动后的程序中没有加上这8个字节的原因(可不是老学童老眼昏花了,呵呵,开车连路牌都看不清还说不花),将原先程序中‘+8’改成‘x 8’(相当于LJCLWYF坛友在2楼‘SLD 3’)
3) 既然要仿真,就必须符合实际情况,即建立多个数据段,否则,充其量只能仿真#StationNo=1。
4) 缺少对#apointer指针的进一步计算,#apointer应该是用于进一步决定读取哪个或那些字符,这个部分数据在#apointer的第2~5字节中(0字节和1字节是#DB_NO,在这里是没有什么意义,这也是为什么rx9934坛友为什么会提出质疑的原因吧)。

...
L W [AR1,P#0.0]
T #DB_NO //读取DB
之后应该是:
L D[AR1,P#2.0]
T #address //字符串中的偏移量,
正如楼上重新激活坛友所说#address的数据类型不对,应该是DW类型

对于楼主的专研精神要给个赞!
人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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