登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:请解STL

点击:698 回复:1

以下是S7-300在FC50里编的程序,由OB1调用,看不明白,请高手解释一下,谢谢了!
L     P#DBX 0.0
     LAR1  
     OPN   "ACT"                                                          DB103
     L     DBLG
     L     L#2
     /D    
strt: T     #countr
     A     DBX [AR1,P#0.0]
     =     #H
     A     DBX [AR1,P#0.1]
     =     #SQ
     A     DBX [AR1,P#0.2]
     =     #XQ
     A     DBX [AR1,P#0.4]
     =     #PI
//    A     DBX [AR1,P#0.5]
//    =     #FltI
//      A     #FltI
//      JNB   _nxt
//      SET  
//      R     #PQ
//      JU    end
//_nxt: NOP   0
     SET  
     A     #H
     JNB   _001
     SET  
     A     #SQ
     =     #PQ
     JU    end
_001: NOP   0
     SET  
     A     #XQ
     =     #PQ
     JU    end
end:  NOP   0
     A     #PQ
     =     DBX [AR1,P#0.3]
     X     #PQ
     X     #PI
     =     DBX [AR1,P#0.5]
     +AR1  P#2.0
     L     #countr
     LOOP  strt
10-10-08 19:11
L     P#DBX 0.0     //装入数据块首地址=》ACCU1
     LAR1              //将ACCU1=》AR1
     OPN   "ACT"               DB103   //打开数据块
     L     DBLG                //装入数据块长度
     L     L#2                  
     /D                     //除以2,得到数据块字数
strt: T     #countr        //将数据块的字数作为循环变量
     A     DBX [AR1,P#0.0]   //检测DBX的状态,内容为AR1的值+P0.0
     =     #H                      //如果RLO为1,那么将RLO的值送入变量#H中
     A     DBX [AR1,P#0.1]
     =     #SQ
     A     DBX [AR1,P#0.2]
     =     #XQ
     A     DBX [AR1,P#0.4]
     =     #PI                              //以上类似
//    A     DBX [AR1,P#0.5]
//    =     #FltI
//      A     #FltI
//      JNB   _nxt
//      SET  
//      R     #PQ
//      JU    end
//_nxt: NOP   0         //前面带有//号为注释段,不执行,因此无需解释
     SET                    //将RLO的值置1
     A     #H
     JNB   _001          //如果#H=0,那么跳转到_001执行
     SET                
     A     #SQ
     =     #PQ
     JU    end              //无条件跳转到end
_001: NOP   0
     SET  
     A     #XQ
     =     #PQ
     JU    end
end:  NOP   0
     A     #PQ
     =     DBX [AR1,P#0.3]
     X     #PQ
     X     #PI
     =     DBX [AR1,P#0.5]
     +AR1  P#2.0    //将地址寄存器的值+2,也就是移动指针。
     L     #countr
     LOOP  strt       // 继续循环
Regards
10-10-08 20:11

工控新闻

更多新闻资讯