S7300PLC间接寻址的循环控制问题

我想编写FC:
    将DB1中DB1.DBD0—-DB1.DBD200共51个浮点数据通过浮点变长整,长整变整数后,在分别对应传送至DB10.DBW0—–DB10.DBW100中.请教如何编写

最佳答案

1、下述程序为信手所写,未加验证。但程序间接寻址的循环控制结构是正确的。
2、长整变整数,在下述程序中只采用了取长整数的低字,即转换为16整数。这一点要注意在实际应用中是否合适。
3、程序:
将DB1中DB1.DBD0—-DB1.DBD200共51个浮点数据通过浮点变长整,长整变整数后,在分别对应传送至DB10.DBW0—–DB10.DBW100中:
      L     P#0.0          //初始读指针
      LAR1  
      L     P#0.0          //初始写指针    
      LAR2  
      L     51               // 51个双字浮点数的循环计数为初值
M001: T     MB    10        //计数值 送入MB 10
      OPN   DB     1      //打开DB 1
       L     DBD [AR1,P#0.0]   //按读指针指示的地址读数据,双字浮点数。
      RND+ //将浮点数(32 位,IEEE FP)转换为整数(32 位),并将结果取整.
      T  MD20 //暂存长整数
      L  MW22 //取长整数的低字,即转换为16整数。
      OPN   DB     10      //打开DB 10
      T     DBW [AR2,P#0.0]  //按写指针指示的地址写数据
      +AR1  P#4.0            //读指针指向下一数据地址,双字地址。
      +AR2  P#2.0            //写指针指向下一数据地址,字地址。
      L     MB    10        //取循环计数值
      LOOP  M001           //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。

提问者对于答案的评价:
您好,谢谢您的回答,我能看懂,我会抽时间验证一下,再次表示感谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc240585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午7:25
下一篇 2018年12月1日

相关推荐