回复:求助(解释该程序段,特别是W#16#1002的含义)

xibeiqingjie

  • 帖子

    30
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2007-11-02

普通 普通 如何晋级?

发布于 2013-11-26 13:59:35

26楼

廖老师,你好,关于ANY数据指针,已经能理解其结构,但是对如何把SFC14读取出来的数据存放到制定的DB块,还是有点小疑问,如果有空,请帮忙指点一下,多谢多谢。
LAR1 P##tmp_db_zeiger_read
L W#16#1002
T LW [AR1,P#0.0] //指定ANY数据第0和1字节内容
L #tmp_bytes_read
T LW [AR1,P#2.0]//读取字节数量,本例中16个
L #tmp_db_nr
T LW [AR1,P#4.0]//指定DB块号,本例中152.
L #tmp_anf_read// 指定输入数据区的起始地址,本例中为0
SLD 3 //二进制的0,左移3位
L P#DBX 0.0//装载DB152.DBX0.0到累加器
+D //把数据块起始地址0左移3位后,加上DB152.DBX0.0,实际上结果还是0
T LD [AR1,P#6.0]//把相加后的结果放到ANY数据区的6~9字节。
指令可以理解,但是始终觉得有疑惑,为什么要左移3位,而且放到6~9字节后到底能起到什么作用?还希望
廖老师有空帮忙点拨一下。因为我的程序中用到大量的此类指令,如果这段我彻底明白了,别的就好懂了。
接下来是通过SFC14读取从站数据到ANY数据指针
CALL "DPRD_DAT" //调用SFC14
LADDR :=#tmp_e_adr//硬件组态中的起始地址320
RET_VAL:=#tmp_ret_val
RECORD :=#tmp_db_zeiger_read//any 数据指针
到此为止,这两段程序已经实现了从DP从站读取数据,并且保存早DB152的第0到15字节。
但是我始终有疑问,靠这两段程序是如何实现的?
望廖老师在百忙之中点拨一下。
十分感谢
开始学习了,一定要学到位!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54658条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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