您现在所在的是:

西门子SIEMENS

回帖:1个,阅读:693 [上一页] [1] [下一页]
* 帖子主题:

请解STL

1003
jslygxyb
文章数:2
年度积分:50
历史总积分:1003
注册时间:2006/9/4
发站内信
发表于:2010/10/8 19:11:23
#0楼
以下是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
38119
cvlsam 版主
文章数:12488
年度积分:730
历史总积分:38119
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2010/10/8 20:11:48
#1楼
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

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

46.8003