关于泵轮换的程序

我想编写一个泵轮换的程序,结果看了别人的一个泵轮换的程序看了N天都没看懂,下面是程序代码:
      OPN   DB   101
      L     P#6.5
      T     DB101.DBD   20
      LAR1  P#6.0
      LAR2  P#0.0
      L     6                           // 循环次数(风机台数)
M001: T     MB    10
      A     M [AR1,P#0.0]               // 判断M6.n,第n+1台风机的运行状态
      JCN   M002                        // 非0时跳转
      TAR1  
      T     DBD [AR2,P#0.0]             // M6.n=1时,将地址6.n存入数据块定义的数据
      +AR2  P#4.0
M002: +AR1  P#0.1
      L     MB    10
      LOOP  M001
      LAR1  DB101.DBD    0              // 第1台运行的风机台号
      L     5
M003: T     MB    11
      TAR1  
      T     DB101.DBD   24
      L     DB101.DBD   20
      ==D                               // 当前地址是M6.5,则转为M6.0,下一步
      JC    S001
      JU    S005
S001: LAR1  P#6.0
      TAR1  
      T     DB101.DBD   16
      JU    S006
S005: +AR1  P#0.1
      TAR1  
      T     DB101.DBD   16
S006: L     DB101.DBD    4              // 与第2台运行的风机的台号相同,则下一步
      ==D   
      JC    M004
      A     M     20.1
      AN    M [AR1,P#0.0]
      A     M [AR1,P#1.0]
      JCN   M004
      S     M [AR1,P#0.0]               // 将下一台参与排序的风机置“1”
      TAR1  
      T     DB101.DBD    8              // 切换后第1台运行的风机的台号
      LAR1  DB101.DBD    0
      R     M [AR1,P#0.0]
      JU    S007
M004: L     MB    11
      LOOP  M003
S007: LAR1  DB101.DBD    4              // 第2台运行的风机台号
      L     5
M005: T     MB    12
      TAR1  
      T     DB101.DBD   24
      L     DB101.DBD   20
      ==D                               // 当前地址是M6.5,则转为M6.0,下一步
      JC    S002
      JU    S004
S002: LAR1  P#6.0
      TAR1  
      T     DB101.DBD   16
      JU    S003
S004: +AR1  P#0.1
      T     DB101.DBD   16
S003: L     DB101.DBD    0              // 与第1台运行的风机的台号相同,则下一步
      ==D   
      JC    M007
      L     DB101.DBD   16
      L     DB101.DBD    8              // 与切换后第1台运行的风机的台号相同,则下一步
      ==D   
      JC    M007
      A     M     20.1
      AN    M [AR1,P#0.0]
      A     M [AR1,P#1.0]
      JCN   M007
      S     M [AR1,P#0.0]               // 将下一台参与排序的风机置“1”
      LAR1  DB101.DBD    4
      R     M [AR1,P#0.0]
      JU    m010
M007: L     MB    12
      LOOP  M005
m010: BEU   
   谁能对这段程序指点一二吗?特别是如果能够在变量表里验证泵能够轮换就最好。这段程序实在是让我花了很长时间,也实在是没有搞明白。

问题补充:
对于西门子的指针我还是明白的,但是我不能做到用仿真PLC验证这段程序,即6台电机轮换

最佳答案

仿真测试了一下这段程序,这段程序本身貌似没有轮换功能。
置位M20.1  
MB6的状态跟随MB7变化。M7.0-5不能同时超过两个点置位,否则M6.0-5会跳变.

将下面一段程序加到你的程序前面,置位M20.1并将M20.0作为切换按钮,每按一次,可以简单的轮换。
      AN    M     20.0
      JC    TURN
      L     MB     7
      SRW   1
      T     MB     7
      R     M     20.0
      L     0
      <>I   
      JC    TURN
      L     32
      T     MB     7
TURN: NOP   0

提问者对于答案的评价:
谢谢回答,虽然问题依然没有解决 OB1调用这个块的程序是:
   OPN   DB   101
      AN    M     20.1
      L     S5T#5S
      SD    T      1
      A     T      1                    // 轮换时间
      =     M     20.1
      UC    FB   100                    // 时间轮换功能块
我的邮箱是zenchang@163.com

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

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

相关推荐