Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 2 von 2

Thema: Datenbankproblem mit Schleife

  1. #1
    Registriert seit
    23.01.2012
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich bin noch relativ neu im AWL-Programmieren und erhoffe mir Hilfe bei einem Problem. Ich will ein DBD eines DB´s mit einer Liste DBD`s eines anderen vergleichen und ein angehängtes Datenwort analog ausgeben. Ich habe den zu vergleichenden Abschnitt des DB´s festgelegt, vergleiche auf ungleich, setze den Suchwert auf +6 (DBD + DBW) und das ganze von vorne, bis ich Plausibilität habe. Jetzt bekomme ich einen Programmierfehler in der CPU und es scheint, das die Schleife über den Bereich hinweg fegt, obwohl ein passender Datensatz vorhanden ist! Ergo passt etwas am Vergleich nicht. Wenn mir jemand sagen könnte, wo der Hund begraben liegt, wäre das nett. Der Ausschnitt des Programms ist im Anhang.

    Vielen Dank

    ProgrammS7VV.txt
    Zitieren Zitieren Datenbankproblem mit Schleife  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hab mit deinen Code mal kurz angesehen. Ohne ihn jetzt komplett zu bewerten und zu korrigieren, Folgendes:

    1. Du mußt in den eckigen Klammern beim Adressieren des DW das Pointerformat verwenden, noch besser du adressierst gleich über AR1 und den enprechenden Aufruf.
    2. Aufpassen, wenn du L DB100.DBD5 schreibst, der folgende Aufruf, L DBD [#Anfangswert], nimmt den Wert dann auch aus DB100!

    Hier mal ein kurzes Codebeispiel zu 1.

    Code:
          AUF   DB    18
    
    
          L     P#0.0
          T     #pointer_1
    
    
          L     0
          T     #ergebnis
    
    
          L     31                          //Anzahl Störmeldungen (Wortweise)
    SC02: T     #zaehler
    
    
          L     DBW [#pointer_1]            // Lade Datenwort
          L     0                           // Lade 0
          ==I                               // keine Störmeldung !!!
          SPB   NUL2                        // Ergebnis nicht hochzählen
          L     #ergebnis                   // bei Erg <> 0 Ergebnis hochzählen
          L     1                           // um 1 erhöhen
          +I    
          T     #ergebnis
    
    
    NUL2: NOP   0                           // Zeiger erhöhen aud nächstest DW
          L     #pointer_1
          L     P#2.0
          +D    
          T     #pointer_1
          L     #zaehler
          LOOP  SC02                        // Schleife solange, bis #zaehler auf 0
    
    
          L     #ergebnis                   // bei Ergebnis <> 0 liegt Fehler vor
          L     0
          <>I   
          =     M      1.0
    PS: Pointer_1 als DWORD in Temp angelegt. "Pointerformat" ergibt sich über P#0.0, das in pointer_1 geladen wird.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Mit Schleife DB füllen
    Von htw im Forum Simatic
    Antworten: 59
    Letzter Beitrag: 23.05.2011, 18:29
  2. Antworten: 22
    Letzter Beitrag: 14.01.2011, 12:10
  3. While Schleife kompatibel mit Zykluszeit
    Von max_sho im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 15.12.2010, 15:08
  4. Schleife Programmieren mit Simatic????
    Von oli--pro im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 29.09.2008, 14:45
  5. Schleife mit Variabler Laufzeit
    Von Garog im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.08.2006, 19:56

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •