登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:S7-300的任意位数据连续循环移位多位的程序

点击:970 回复:1


   上一篇日志的程序只能循环移位1位。在此基础上使用循环指令(LOOP),可以连续循环移位多位。
   FC的输入数据IN(DWord)是要移位的双字,Bit_No(Int)是移位位数。输出数据OUT(DWord)是移位的结果。本文以输入IN的低20位数据连续循环移位1~20位为例。Tmp1和Tmp2分别用来暂存移位后的数据和移位次数剩余值。L1.4是Tmp1(LD0)的第20位。
   将L1.4改为LD0的其他位,可以改变要移位数据的位数。例如改为L2.4时,被移位数据的位数为12位。
     L     #IN
     T     #Tmp1                       //保存被移位的双字
     L     #Bit_No
BACK: T     #Tmp2                       //保存移位次数剩余值
     L     1
     L     #Tmp1
     RLD                               //循环移位1位
     T     #Tmp1
     A     L      1.4
     S     L      3.0                  // Tmp1的第20位为1则将最低位置位
     AN    L      1.4
     R     L      3.0                  // Tmp1第20位为0则将最低位复位
     CLR  
     =     L      1.4                  //将Tmp1第20位清零
     L     #Tmp2                       //取移位次数剩余值
     LOOP  BACK                        //减1后非零则返回
     L     #Tmp1
     T     #OUT                        //输出循环移位的结果
     CALL  FC     1
      IN    :=MD10
      Bit_No:=MW14
      OUT  :=MD16
   用十六进制格式监控MD10和MD16,移位次数MW14的值最好是4的整倍数,监控比较方便。
11-04-06 11:48
相关文章:S7-300任意位数的循环移位
 http://m.gkong.com/bbs/279880.ashx
11-04-07 15:22

工控新闻

更多新闻资讯