试试这个,肯定不跳了

已锁定

叶夏2014

  • 帖子

    1
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2013-11-13

普通 普通 如何晋级?

试试这个,肯定不跳了

442

0

2015-03-02 13:48:46

展开查看
引用自找答案,问题ID:79564

LD SM0.1
MOVW 300, VW0
MOVW 0, VW2
MOVW 0, VW12 //上电以上初始化赋值


LD SM0.0
MOVD &VB0, VD20 //将VB0开始的初始的地址(vw0)放到VD20
FOR VW14, 1, 2 //循环2次
+I *VD20, VW12 //将VD20指向的地址内的数据(vw0)与VW12相加,结果放到VW12
+D 2, VD20 //递增一个字节


NEXT
输出为300吗????????


本程序是我看网上高手改的 不知道对不对 因暂时无PLC测试 还请高手先详解下 感觉西门子的指针和C指针有区别 知道的按我的格式解释下呀

提问者:龙帝国


莘莘学子 回答道:

LD     SM0.1
MOVW   300, VW0 
MOVW   0, VW2
MOVW   0, VW12  //上电以上初始化赋值

LD     SM0.0
MOVD   &VB0, VD20   //间接寻址将VB0开始的初始的地址(16#08000000)放到VD20,.   VD20的值是134217728.
FOR    VW14, 1, 2     //循环2次。
+I     *VD20, VW12      //将VD20指向的地址内的数据(vw0)与VW12相加,结果放到VW12
+D     2, VD20         //循环一次&VB0+2,结果放到VD20.

NEXT 
     输出为300吗????????不是,下面是我联机监控的数据。
VD20是134217732,VW12是65535,来回跳动。如果修改FOR    VW14, 1, 3 后,VD20是134217734.如果修改FOR    VW14, 1, 5 后,VD20是134217738.

<S7-200 可编程控制器系统手册>下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/manual/1017[2].pdf

补充回答:MOVD   &VB0, VD20  //  这里用&VW0有什么区别,&VW0的间接寻址是VB0了,VB0的值是1。和&VB0区别很大,&VB0的值是16#08000000。


+D     2, VD20         //这里地址是VB2的    还是vw2的 (为什么)都不是,是间接寻址将VB0开始的初始的地址(16#08000000)放到VD20也就是这个MOVD   &VB0, VD20 指令执行后的数据,VD20是134217728.执行+D     2, VD20后,结果VD20是134217732。

手册的解释和这个有很大出入。

还有6人在找答案上回答了该问题,查看全部>
LD SM0.1
MOVW 300, VW0
MOVW 0, VW2
MOVW 0, VW12 //上电以上初始化赋值
LD SM0.1
MOVD &VB0, VD20 //间接寻址将VB0开始的初始的地址(16#08000000)放到VD20,. VD20的值是134217728.
FOR VW14, 1, 2 //循环2次。
+I *VD20, VW12 //将VD20指向的地址内的数据(vw0)与VW12相加,结果放到VW12
+D 2, VD20 //循环一次&VB0+2,结果放到VD20.
NEXT
试试这个,肯定不跳了 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33266条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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