Arbeiten mit Adressregister

psum

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich kämpfe gerade mit einer programmierten Schleife. Sie wird 6 mal durchlaufen und soll aus dem Statischen Bereich des Instanz-DB Werte lesen und mit dem Ausgangswert vergleichen. Es soll der grösste Wert Ausgegeben werden
Der wert an Adresse 10.0 ist 47 dez. Wird aber leider so nicht gelesen.
Der screenshot in der Anlage, zeigt die Schleife beim ersten Durchlauf.
Step7 V5.3 S7414-4H JH00_0AB0 1MB RAM
Wer kann helfen?
Code:
     L     P##BG1_211_ENTF             // aktueller wert 47
      LAR1  
      T     #wordadresse
      L     6
next: T     #sz
      L     DBW [AR1,P#0.0]
      L     #o_ENTF_211
      >I    
      SPB   wj
      T     #o_ENTF_211
      SPA   wei
wj:   TAK   
      T     #o_ENTF_211
      L     P#2.0
      TAR1  
      +D    
      LAR1  
      U     DBX [AR1,P#0.0]
      =     #o_GS_211
      SPA   wei1
wei:  L     P#2.0
      TAR1  
      +D    
      LAR1  
wei1: NOP   0
 
      TAR1  
      L     P#2.0
      +D    
      LAR1  
      L     #sz
      LOOP  next
 

Anhänge

  • Dokument.pdf
    53,8 KB · Aufrufe: 29
Zuletzt bearbeitet:
Probiers mal so:
Code:
      L     P##BG1_211_ENTF             // aktueller wert 47
      [B]SLD 3[/B]
      LAR1  
      T     #wordadresse
      L     6
next: T     #sz
...

Mfg
Manuel
 
Wenn ich das richtig verstanden habe dann willst du alle Werte angefangen von BG1_211_ENTF bis 12 Wörter danach mit o_ENTF_211 vergleichen und wenn der Wert größer als o_ENTF_211 ist dann soll o_ENTF_211
den Wert übernehmen.

Probiers mal so:
Code:
      L     P##BG1_211_ENTF             // aktueller wert 47
      TAR1  
      T     #wordadresse
      L     6
next: T     #sz
      L     W [AR1,P#0.0]
      L     #o_ENTF_211
      <I    
      SPB   wei1
      TAK   
      T     #o_ENTF_211
      U      [AR1,P#0.0]
      =     #o_GS_211
wei1: +AR1  P#2.0
      L     #sz
      LOOP  next

oder hab ich da was falsch verstanden?
 
Zurück
Oben