这段代码是什么意思啊?

我只知道这段代码的大致意思是“把绝对值浮点数转换成标准的十进制数”,但是不知道具体是如何转换的,又无法转换成梯形图。所以请老师们尽可能的详细解释,谢谢。

   SET   
      SAVE  
      =     L      4.1
      L     #IN1
      L     0
      ==I   
      JCN   M001
      T     #RET_VAL
      A     L      4.1
      SAVE  
      BEU   
M001: L     #IN0
      L     1.638400e+004
      *R    
      L     #IN1
      ITD   
      DTR   
      /R    
      T     #TEMP2
      L     -3.276800e+004
      <R    
      JCN   M002
      L     -32768
      T     #RET_VAL
      A     L      4.1
      SAVE  
      BEU   
      JU    M003
M002: L     #TEMP2
      L     3.276700e+004
      >R    
      JCN   M004
      L     32767
      T     #RET_VAL
      A     L      4.1
      SAVE  
      BEU   
      JU    M003
M004: L     #TEMP2
      RND   
      T     #RET_VAL
M003: CLR   
      A     L      4.1
      SAVE  
      BE

最佳答案

SET   
      SAVE  
      =     L      4.1
      L     #IN1
      L     0
      ==I   
      JCN   M001
      T     #RET_VAL
      A     L      4.1
      SAVE  
      BEU                               //以上程序判断#IN1变量是否为0,为0退出该子程序,不为
                                          //0,则跳转到M001处
M001: L     #IN0
      L     1.638400e+004
      *R                                 //#IN0输入的实数,可以直接乘以16384.0,结果存入累加器1
      L     #IN1                     //累加器1的数值传到累加器2,#IN1读入累加器1
      ITD   
      DTR                //累加器1中#IN1整数变双整数后再变为实数
      /R                   //累加器2中的#IN0*16384.0的乘积除以累加器1中的#IN1(实数)              
      T     #TEMP2                 //相除后的商存到#TEMP2
      L     -3.276800e+004
      <R    
      JCN   M002        //#TEMP2中的结果和-32767.0比较,不小于跳转到M002
      L     -32768     //小于32767.0的话,输出-32767.0并跳转到末尾的M003,结束
      T     #RET_VAL
      A     L      4.1
      SAVE  
      BEU   
      JU    M003
M002: L     #TEMP2
      L     3.276700e+004
      >R    
      JCN   M004
      L     32767                        //#TEMP2中结果和32767.0比较,小于32767.0跳转到M004
      T     #RET_VAL               //#TEMP2中结果和32767.0比较,大于32767.0跳到M003结束
      A     L      4.1
      SAVE  
      BEU   
      JU    M003
M004: L     #TEMP2    
      RND                                    //将#TEMP2中数据四舍五入,后送到返回参数中,接着执行
      T     #RET_VAL                  //M003,结束
M003: CLR   
      A     L      4.1
      SAVE  
      BE

提问者对于答案的评价:
谢谢大师

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

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

相关推荐