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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: AWL: Fehler bei Vergleich -> Sprung

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo erstmal!

    Ich bin Neuling in der SPS-Programmierung und diesem Forum und stelle für, wie ich annehme meist erfahrene User, wahrscheinlich ...blöde Fragen. Aber da ich nun schon seit längerem auf dem Schlauch sitze und einfach nicht lokalisieren kann wo der Hund begraben liegt, blieb mir in meiner Verzweiflung nichts anderes übrig!
    Nun - jeder fängt mal klein an und ohne Fehler oder Fragen hat es bestimmt auch noch kaum jemand geschafft. Also komme ich mal zum Wesentlichen:
    Ich arbeite auf einer S7-300, CPU315-2DP mit Softwareversion 5.1 und habe ein Problem mit dem nachfolgend ersichtlichen AWL-Code.

    Code:
          AUF   "DBxx"
    
          L     0                           
          T     #z                          
          L     20                          
    M001: T     #S_ZAE                      
          L     #S_ZAE                      
          L     1                           
          -I                                 
          L     2                           
          *I                                
          SLW   3                           
          T     #platz                      
          L     DBW [#platz]                
          L     #mat                        
          ==I                               
          SPBN  M002                        
          L     #z                          
          L     1                           
          +I                               
          T     #z                          
    M002: L     #S_ZAE                      
          LOOP  M001                        
          L     #z                          
          T     #anz
    Der Hintergrund:
    In einem Datenbaustein sind als Beispiel 20 verschiedene Zahlen vom Typ WORD gespeichert. Der Inhalt dieser Datenbausteinworte soll mittels einer Schleife mit der Eingangsvariable mat, ebenfalls vom Typ WORD, verglichen werden. Bei erfüllter Bedingung soll die temporäre Variable z um 1 inkrementiert werden. Bei nicht erfüllter Bedingung Sprung zu M002 und wiederholen der Schleife bis zum Ende. Am Schluss soll dann lediglich der Inhalt der Variablen z auf den Ausgang gelegt und somit anderen Funktionen zur Verfügung gestellt werden.
    Und jetzt banal gesprochen: Ich möchte den Inhalt eines Datenbausteins nach bestimmten Kriterien(Zahlen) durchsuchen und die Anzahl der gefundenen Stück weiterverwenden!

    Nur irgendwie scheint die Funktion durchzulaufen, liefert aber kein Ergebnis bzw. keine Stückzahl wie oft bspw. die Zahl 3 gefunden wurde!

    Ich bin sicher irgendjemand kann und wird mir helfen und bedanke mich schon im Voraus herzlichst für Eure Unterstützung!
    Zitieren Zitieren AWL: Fehler bei Vergleich -> Sprung  

  2. #2
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hallo bertiger,

    der Code ist soweit OK!
    Es darf der Baustein allerdings nicht Zyklisch aufgerufen werden.
    Es müsste am Anfang z.B.

    U M0.0
    FP M0.1
    = M0.2
    BEB

    ...... Restlicher Code.


    Jetzt sollte der richtige Zahlenwert bei jeder pos. Flanke richtig angezeigt werden.

    MfG
    Daniel

  3. #3
    Registriert seit
    21.11.2004
    Beiträge
    37
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    der Code an sich sollte eigentlich funktionieren.
    Ich würde an folgenden Punkten schauen:
    - wo liegen die Werte im DB, vergleichst du vielleicht die falschen DWs?
    - wie wird der Programmteil aufgrufen und mit dem Vergleichswert versorgt?
    - dito wie wird das Ergebnis "entsorgt"?

    ein paar kleine Tips noch, vielleicht kannst du ja mit einem
    davon was anfangen

    Code:
    M001: T     #S_ZAE                      
          L     #S_ZAE 
    
    das Laden ist nicht nötig, der Wert des Schleifenzählers steht
    noch im Akku 1
    
    L     2                            
    *I                                
    SLW   3      
    
    SLW 4 
    macht das gleiche
    
    ==I                                
    SPBN  M002       
    
    <>I
    SPB M002 
    erspart dem Gehirn einmal invertieren.
    
    wenn ich Konstanten addiere oder subtrahiere verwende
    ich immer "+ Konstante" das ist schneller und weniger Schreibarbeit, 
    es sei den ich will die die Anzeigen auswerten, dann geht das natürlich
    nicht.
    [/quote]

  4. #4
    bertiger ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.11.2005
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von spz
    - wo liegen die Werte im DB, vergleichst du vielleicht die falschen DWs?
    Ich hab mal einen Test-DB erstellt der nur 20 Wörter enthält aber auch damit liefert er nichts zurück

    - wie wird der Programmteil aufgrufen und mit dem Vergleichswert versorgt?
    Der Programmteil steht im Augenblick als einzelne Funktion und wird auch so aufgerufen. Der Vergleichswert wird variabel als WORD eingelesen.

    - dito wie wird das Ergebnis "entsorgt"?
    Das Ergebnis, meine enthaltene Anzahl, wird lediglich einem Ausgang zugewiesen, der in einem FB weiterverwendet wird.

    ein paar kleine Tips noch, vielleicht kannst du ja mit einem
    davon was anfangen

    Code:
    L     2                            
    *I                                
    SLW   3      
    
    SLW 4 
    macht das gleiche
    -- so hab ich das noch gar nicht betrachtet...aber klingt logisch ;-&#41; --
    
    ==I                                
    SPBN  M002       
    
    <>I
    SPB M002 
    erspart dem Gehirn einmal invertieren.
    -- Stand bereits in der Vorversion und funktionierte ebensowenig. Daher der Test mit der Hirnverbiegung! --
    
    wenn ich Konstanten addiere oder subtrahiere verwende
    ich immer "+ Konstante" das ist schneller und weniger Schreibarbeit, 
    es sei den ich will die die Anzeigen auswerten, dann geht das natürlich
    nicht.
    Vielleicht kommst Du ja jetzt noch auf eine andere Idee. Trotzdem schon mal Danke Günter!

  5. #5
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hallo bertiger,

    die Antwort von vorhin is a Schmarn, da war das Hirn langsamer als die Finger.
    Hab deinen Baustein-Code mal in PLC-Sim getestet, funktioniert ohne Probleme.
    Ist es möglich den Baustein in dem dieser Code bzw. Baustein aufgerufen wird in das Forum zu stellen.

    MfG
    Daniel

  6. #6
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hallo bertiger,

    würde natürlich auch so funktionieren.

    Code:
          L     P#0.0
          T     #platz
    
          AUF   DB    20
    
          L     0
          T     #z
    
          L     20
    M001&#58; T     #S_ZAE
    
          L     DBW &#91;#platz&#93;
          L     #mat
          <>I   
          SPB   M002
          L     #z
          L     1
          +I    
          T     #z
    
    M002&#58; L     #platz
          L     P#2.0        // Versatz um ein Word
          +D    
          T     #platz
    
          L     #S_ZAE
          LOOP  M001
          L     #z
          T     #anz
    MfG
    Daniel

  7. #7
    bertiger ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.11.2005
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Daniel,

    leider fehlt das "Drumherum" im Augenblick noch. Deshalb habe ich den Programmteil, den ich gepostet habe, als eigenständige Funktion verwendet und diese derzeit zum Testen im OB lediglich mit der Variablen "mat" vom Typ WORD und manuell wechselnden Werten versorgt! Der aufgerufene Test-Datenbaustein enthält analog zur Programmschleife 20 Wörter mit Werten die natürlich auch von mat geliefert werden (nach was suchen, was nicht da ist vertreibt zwar manchmal schön die Zeit, bringt einen im Regelfall jedoch kaum weiter).
    Ich habe also praktisch gesehen sogar bis auf 1OB, 1FC im OB und 1DB reduziert und dennoch haut das bei mir nicht hin wie ich es erwarte!

    Gruß,
    bertiger

  8. #8
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hallo bertiger,

    hab mal mein Testprojekt angehängt.

    MfG
    Daniel
    Angehängte Dateien Angehängte Dateien

  9. #9
    bertiger ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.11.2005
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Daniel,

    sieht das bei Dir auch so aus?

    Gruß,
    bertiger
    Angehängte Grafiken Angehängte Grafiken

  10. #10
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo bertiger,

    ja schaut genau so aus.

    Sicher das da auch Werte im DB stehen?

    MfG
    Daniel

Ähnliche Themen

  1. AS Sprung in PRG
    Von Tyler-Durden im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 01.07.2011, 10:08
  2. Sprung programmieren
    Von Stonie im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 22.12.2008, 22:49
  3. Sprung programmieren
    Von Syntaxfehler im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 17.12.2007, 11:19
  4. vergleich mit sprung?
    Von Ibaxx im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.09.2007, 09:50
  5. ob1 sprung in fc1
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.11.2005, 17:32

Lesezeichen

Berechtigungen

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