STL程序翻译

请老师们帮忙翻译一下,我不太确认我是否理解对了。
SET   
      SAVE  
      =     L      0.1
      L     W#16#419
      T     DB2591.DBW    0
      LAR2  P#DBX 0.0
      CDB   
      UC    "_Parameters"
      CDB   
      A     BR
      OPN   DI  2520
      =     DIX   59.4
      A     DB2599.DBX   12.3
      JCN   A7d0
      OPN   DI  1049
      L     DID   32
      T     DB1694.DBD  364
      JU    A7d1
A7d0: L     "DB_Par_01-Mix".par_08
      OPN   DI  1694
      T     DID  364
A7d1: CLR   
      =     DB2638.DBX   30.1
      A     L      0.1
      SAVE  
      BE

问题补充:
为什么用了三次OPEN DI 啊,OPN DI 2520,OPN DI 1049,OPN DI 1694??难道我这个FC10功能块可以同时打开几个数据块作为背景数据块?还有第一个CDB怎样理解,前面只有一个数据块DB2591啊,它把哪两个块交换啊

最佳答案

1、你的程序是scl转换来的
2、
SET   
      SAVE  
      =     L      0.1//保存进入程序前的状态
      L     W#16#419
      T     DB2591.DBW    0// DB2591.DBW0=W#16#419
      LAR2  P#DBX 0.0//从累加器1中取地址寄存器2的地址
      CDB   //交换共享db和背景db
      UC    "_Parameters"//调用程序块"_Parameters",scl的调用方法
      CDB   //交换共享db和背景db 
      A     BR//db2520.dbx59.4=br状态位的值
      OPN   DI  2520
      =     DIX   59.4
      A     DB2599.DBX   12.3//如果DB2599.DBX12.3=1则执行后面的程序否则跳到A7d0
      JCN   A7d0
      OPN   DI  1049//打开背景db1049
      L     DID   32
      T     DB1694.DBD  364//DB1694.DBD364=db1049.dbd32
      JU    A7d1//无条件跳转到  A7d1
A7d0: L     "DB_Par_01-Mix".par_08
      OPN   DI  1694
      T     DID  364//db1694.dbd364=  "DB_Par_01-Mix".par_08
A7d1: CLR   
      =     DB2638.DBX   30.1// DB2638.DBX   30.1=0
      A     L      0.1//rlo=进入程序时保存的状态
      SAVE//br=rlo 
      BE//程序块到此结束。

提问者对于答案的评价:
为什么用了三次OPEN DI 啊,OPN DI 2520,OPN DI 1049,OPN DI 1694??难道我这个FC10功能块可以同时打开几个数据块作为背景数据块?还有第一个CDB怎样理解,前面只有一个数据块DB2591啊,它把哪两个块交换啊
谢谢

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

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

相关推荐