程序解释,这是FC100的,最好具体点,能说明程序中个命令的含义

程序段1
  L     #cnt2_app
      T     #cnt2_db
      OPN   DB [#cnt2_db]
      CALL  "CNT2_CTR"
       IN0:=#cnt2_db
      A     DBX   36.7
      JCN   END
      A     #count_en
      =     DBX   23.2
      A     #frenq_en
      =     DBX   23.1
程序段2
  A     #load0_end
      JC    NEXT
      SET   
      SAVE  
      OPN   DB [#cnt2_db]
      A     DBX    1.0
      JC    WRD0
      A     #load0
      FP    M   1000.0
      JCN   WRE0
      L     #value0
      T     DBD   60
      L     10
      T     DBB    0
WRD0: CALL  "CNT2_WR"
       IN0    :=#cnt2_db
       RET_VAL:=MW800
WRE0: AN    BR
      =     #wr_err0
      A     #load0
      A     DBX    1.1
      O     #load0_end
      =     #load0_end
      AN    #load0
      R     DBX    1.1
程序段3
NEXT: SET   
      SAVE  
      OPN   DB [#cnt2_db]
      A     DBX    1.0
      JC    WRD1
      A     #load1
      FP    M   1000.1
      JCN   WRE1
      L     #value1
      T     DBD   60
      L     10
      T     DBB    0
WRD1: CALL  "CNT2_WR"
       IN0    :=#cnt2_db
       RET_VAL:=MW802
WRE1: AN    BR
      =     #wr_err1
      AN    #load1
      R     DBX    1.1
程序段4
  SET   
      SAVE  
      OPN   DB [#cnt2_db]
      A     DBX    1.0
      JC    WRD2
      A     #load2
      FP    M   1000.2
      JCN   WRE2
      L     #value2
      T     DBD   60
      L     10
      T     DBB    0
WRD2: CALL  "CNT2_WR"
       IN0    :=#cnt2_db
       RET_VAL:=MW804
WRE2: AN    BR
      =     #wr_err2
      AN    #load2
      R     DBX    1.1
程序段5
  SET   
      SAVE  
      OPN   DB [#cnt2_db]
      A     DBX    3.0
      JC    RDD0
      L     100
      T     DBB    2
RDD0: CALL  "CNT2_RD"
       IN0    :=#cnt2_db
       RET_VAL:=MW806
      AN    BR
      =     #rd_err
END:  BE

最佳答案

L     #cnt2_app//cnt2_app装载到累加器1
      T     #cnt2_db//累加器1的内容(cnt2_app的值)保存到cnt2_db中
      OPN   DB [#cnt2_db]//打开db块
      CALL  "CNT2_CTR"//调用子程序
       IN0:=#cnt2_db//子程序输入参数
      A     DBX   36.7//如果db块中的dbx36.7为1则执行下面的程序,否则跳转到end
      JCN   END
      A     #count_en
      =     DBX   23.2//dbx23.2=count_en
      A     #frenq_en
      =     DBX   23.1//dbx23.1=frenq_en
程序段2
  A     #load0_end//**load0_end为1则跳转到next,否则执行下面的程序
      JC    NEXT
      SET   //置位rlo状态
      SAVE  //保存rlo状态到br
      OPN   DB [#cnt2_db]//打开db块
      A     DBX    1.0//如果dbx1.0位1则跳转到wrd0标志,否则继续执行下面的程序
      JC    WRD0
      A     #load0
      FP    M   1000.0
      JCN   WRE0//load0上升沿执行下面的程序,否则跳转到wre0
      L     #value0
      T     DBD   60//dbd60=value0
      L     10
      T     DBB    0//dbb0=10
WRD0: CALL  "CNT2_WR"//调用子程序块
       IN0    :=#cnt2_db//子程序块输入参数
       RET_VAL:=MW800//子程序块返回参数保存到mw800
WRE0: AN    BR
      =     #wr_err0//br状态取反后赋值给wr_err0
      A     #load0
      A     DBX    1.1
      O     #load0_end
      =     #load0_end//load0_end=dbx1.1并自锁
      AN    #load0
      R     DBX    1.1//如果load0不为1则复位dbx1.1
程序段3
NEXT: SET   //置位rlo状态
      SAVE  //保存rlo状态到br
      OPN   DB [#cnt2_db]//打开db块
      A     DBX    1.0//如果dbx1.0为1则跳转到wrd1,否则执行下面的程序
      JC    WRD1
      A     #load1
      FP    M   1000.1
      JCN   WRE1//load1上升沿执行下面的程序否则跳转到wre1
      L     #value1
      T     DBD   60//dbd60=value1
      L     10
      T     DBB    0//dbb0=10
WRD1: CALL  "CNT2_WR"//调用子程序块
       IN0    :=#cnt2_db//子程序输入参数
       RET_VAL:=MW802//子程序返回参数保存到mw802
WRE1: AN    BR
      =     #wr_err1//br状态取反复制给wr_err1
      AN    #load1
      R     DBX    1.1//load1为0则复位dbx1.1
程序段4
  SET   //置位rlo状态位
      SAVE  //保存rlo到br
      OPN   DB [#cnt2_db]//打开db块
      A     DBX    1.0//dbx1.0为1跳转到wrd2,否则执行下面的程序
      JC    WRD2
      A     #load2
      FP    M   1000.2//load2上升沿执行下面的程序,否则跳转到wre2
      JCN   WRE2
      L     #value2
      T     DBD   60//dbd60=value2
      L     10
      T     DBB    0//dbb0=10
WRD2: CALL  "CNT2_WR"//调用子程序块
       IN0    :=#cnt2_db//子程序输入参数
       RET_VAL:=MW804//子程序返回参数保存到mw804
WRE2: AN    BR
      =     #wr_err2//br取反后赋值给wr_err2
      AN    #load2
      R     DBX    1.1//load2为0复位dbx1.0
程序段5
  SET   //置位rlo
      SAVE  //保存rlo到br
      OPN   DB [#cnt2_db]//打开db块
      A     DBX    3.0//dbx3.0为1跳转到rdd0,否则执行下面的程序
      JC    RDD0
      L     100
      T     DBB    2//dbb2=100
RDD0: CALL  "CNT2_RD"//调用子程序块
       IN0    :=#cnt2_db//子程序输入参数
       RET_VAL:=MW806//子程序输出参数保存到mw806
      AN    BR
      =     #rd_err//br取反保存到rd_err
END:  BE//程序结束

提问者对于答案的评价:
谢谢!解开我的疑问。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月4日
下一篇 2017年11月4日

相关推荐