师兄帮我看看STL

师兄帮我看看, 本人水平有限   看得不太懂,主要作用是判断故障用的,具体不知道怎么运作的    说明下  里面的都是德文
        Datenbaustein      in    int             90
               
                    Anzahl           in    int              80

                   Stoerung            out    bool        m98.0
                   Stoerimpuls         out   bool          m97.0

                   Schleifenzaehler        temp    int
                     Hilfsvariable           temp   int
                      QuittZeiger            temp   dword

L     #Datenbaustein              // 载入 90
      T     #Hilfsvariable              // Transfer in Hilfsvariable
      OPN   DB [#Hilfsvariable]         //打开DB90
      L     0                           // Lade Anfangsadresse der St鰎ungen 
      SLW   3                           //左移3个 是P#0.0?、不明白有什么意义?
      LAR1                              // P#0.0载入寄存器1 ??对吗??

      L     #Anzahl                     // 载入 80
      L     2                           // Multizieren mit 2          *I                                // 是80*2 吗??

      SLW   3                           // 160*8  对吗???
      LAR2                              // 160*8载入寄存器2  ??

      SET                               // VKE auf den Signalzustand "1" setzen
      R     #Stoerung                   // St鰎meldeausgang zur點ksetzen

      SET                               // VKE auf den Signalzustand "1" setzen
      R     #Stoerimpuls                // St鰎impuls zur點ksetzen

////////////////////////////下面的循环就看不懂了  不明白什么意思??
      L     #Anzahl                     // 载入80
      M100: T     #Schleifenzaehler           // 80传入 in Schleifenz鋒ler
      L     DBW [AR1,P#0.0]             // Lade St鰎datenwort neuer Zustand
      L     0                           // Lade Konstante "0"
      <>I                               // St鰎ung gesetzt ?
      S     #Stoerung                   // Setze St鰎ausgang

      L     DBW [AR1,P#0.0]             // Lade St鰎datenwort neuer Zustand
      L     DBW [AR2,P#0.0]             // Lade St鰎datenwort alter Zustand
      INVD                              // Invertiere alten Zustand
      AW                                // UND-Verkn黳fung -> neue St鰎ungen =1
      L     0                           // Lade Konstante "0"
      <>I                               // St鰎ung neu gesetzt ?
      S     #Stoerimpuls                // Setze Impuls f黵 neue St鰎ung

      L     DBW [AR1,P#0.0]             // Lade St鰎datenwort neuer Zustand
      T     DBW [AR2,P#0.0]             // Transfer in St鰎datenwort alter Zustand

      +AR1  P#2.0                       // Adre遰egister 1 um 2 Byte erh鰄en
      +AR2  P#2.0                       // Adre遰egister 2 um 2 Byte erh鰄en

      L     #Schleifenzaehler           // Lade Schleifenz鋒ler
      LOOP  M100 


我在截图一张调用这个块的图片

问题补充:
不好意思 少了一行 在 
L     #Anzahl                     // 载入 80
 L     2                           // Multizieren mit 2          *I                                // 是80*2 吗??
  是相互*
SLW   3                           // 
LAR2 
最后LAR2   是不时 P#160.0   我这样理解对吗???

图片说明:

师兄帮我看看STL   

最佳答案

不知道具体意思,但很好理解程序。
SLW   3//这里目的是把accu1里的内容编程地址指针格式
LAR1 //相当与地址是p#0.0


L     #Anzahl                     // 这里没有用,你当就没有看见这一行
L     2                              // 2 
SLW   3                           // 
LAR2                              // P#2.0,载入寄存器2 

前面所有的目的就是ar1=0.0,ar2=2.0
所以下面的循环就很好理解了,不等于则置位
第一次
取 DB90.DBW0和0比较,不等于则置位M98.0
然后   DB90.DBW0 和 DB90.DBW2的取反后相与,结果和0比较 不等于则置位M97.0   
最后  把 DB90.DBW0 送给 DB90.DBW2 
然后  ar1=2.0,ar2=4.0(即下次循环变成了dbw2 和dbw4了)

如此循环80次

提问者对于答案的评价:
谢谢  看懂了

最佳答案作者回复:
没错那地址就变成160.0
dbw0  dbw160
dbw2 dbw162
dbw4 dbw164
如此80次结束

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐