回复:S7-300有没有指令可以对字节里面数据进行提取?

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2016-04-22 18:55:33

9楼

展开查看
以下是引用must努力在2016-04-21 21:51:27的发言 >2楼

因为需要处理上位机下发过来的数据,把四个字节的数据整合到一个字里,本人也就会SCL编程,不怎么会STL编程,最近也想到了一个解决办法,就是把按位寻址,就是规定字节的低四位或者高四位数据可以使用,然后再把高四位或者第四位按位寻址,输出到目标字的位,就是比较麻烦而已,而且外设区也不支持 位寻址,需要中间装换,比较麻烦

以下是引用n次看你的背影在2016-04-21 19:05:54的发言 >:楼主:实现你这功能...

引用详细内容:

楼主:实现你这功能,现成的指令我也没有找到。如果把你这四个字节连续放置在一个双字里面,用STL间接寻址+LOOP循环,也是可以处理的,楼主不妨动手试试。

楼主:按照你的思路,我用STL间接寻址+LOOP大概写了一下,没有测试,有时间你可以测试一下。


//MD20为源数据;DB1.DBW20为目标数据

      OPN   DB     1                    //打开DB1

      LAR1  P#20.0                      //初始化地址寄存器1

      LAR2  P#20.0                      //初始化地址寄存器2

      L     4                           //装载循环次数

NEX2: T     LW    20                    //存储当前的循环次数


      L     4                           //装载循环次数

NEX1: T     LW    22                    //存储当前的循环次数

      A     M [AR1,P#0.0]               //读取当前的位的状态

      =     DBX [AR2,P#0.0]             //将当前位的状态赋给目标位

      +AR1  P#0.1                       //源地址递增1个位

      +AR2  P#0.1                       //目标地址递增1个位

      L     LW    22                    //装载当前的循环次数

      LOOP  NEX1                        //循环次数减一,跳转到NEX1标签,当循环次数减至0,往下执行


      +AR1  P#1.0                       //源地址递增1个字节

      +AR2  P#0.4                       //目标地址递增4个位

      L     LW    20                    //装载当前的循环次数

      LOOP  NEX2                        //循环次数减一,跳转到NEX2标签,当循环次数减至0往下执行


佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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