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

Ergebnis 1 bis 8 von 8

Thema: Datenbausteinverwaltung.

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo ihr SPS'ler.

    Ich muss aus einer Reihe von Datenbausteinen ( zB DB100 - DB120 ) die niedrigste DB-Nummer raussuchen der leer ist. Ein Bit, das mir sagt DB ist leer habe ich.
    Jetzt könnte ich natürlich eine Menge Vergleicher einsetzen aber ich hoffe das mir jemand zu einen eleganteren Lösung verhelfen kann.

    Vielen Dank

    Axel
    Zitieren Zitieren Datenbausteinverwaltung.  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Was heist leer? Nicht existent? Länge 0? Oder Daten ungültig?

  3. #3
    Anonymous Gast

    Standard

    Ich vergleiche die Datenbausteine mit einem Referenzbaustein. Der Vergleich muss positiv sein. d.H. der Datenbaustein ist gleich und somit leer. Das muss nicht zwangsläufig 0 sein da ich auch CHAR im Baustein verwende.

  4. #4
    Registriert seit
    17.06.2003
    Beiträge
    18
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Axel,

    wenn die DB-Nummern fortlaufend vergeben sind und du ohnehin schon einen Vergleich durchführst, kannst Du doch mit dem Vergleichen beim kleinsten DB anfangen und den Vergleich abbrechen wenn der Vergleich positiv ist. Wo liegt dein Problem?

    mfG, Stefan

  5. #5
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    hab hier mal ne schleife geschrieben, ist aber sicher noch möglich das teil zu vereinfachen...
    funktion kann ich auch nicht gewährleisten, habs nicht getestet...

    Code:
          L     100
          T     MD   104                    //Pointer DB
          L     0
          T     MD   108                    //Pointer M
    
    
          L     20
    M001: T     MD   100                    //Schleifenzähler
    
          U     M [MD 108]                  //Merker DB frei?
          SPB   M002
    
          L     MD   108
          +     1
          T     MD   108                    //Ein Merker weiterzählen
    
          L     MD   104
          +     1
          T     MD   104                    //Ein DB weiterzählen
    
    
          L     MD   100                    //Schleifenzähler wieder laden
          LOOP  M001
    
    
    M002: NOP   0
    
    //Adresse für den DB steht jetzt in MD104

  6. #6
    Anonymous Gast

    Standard

    @ Stefan

    Ob ein DB ( Lagerplatz) leer oder nicht leer muss ich für die Visualisierung wissen. Daher der Vergleich der Bausteine mit dem Referenzbaustein.
    Den "kleinsten" leeren Platz brauche ich für das Auffüllen des Lagers

    @ Markus

    Das könnte gehen. Leider habe ich mit Schleifenprogrammierung bisher wenig bis keine Erfahrung.
    Ich bin König der Schrittketten ... ist auch einfacher, finde ich ....

    Vielen Dank für Eure Hilfe.

    Axel

  7. #7
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Die Schleife sieht schon richtig aus, wenn die Merker bei M0.0 beginnen und die DBs bei 100.
    Ich würde aber nur eine Zähler für die Merkeradresse in der Schleife hochzählen. Spart im worst case 60 Operationen in der Scheife.
    Die Adresse des DB kann nachher errechnet werden:
    ...
    M002: NOP 0
    L MD 108
    L 100
    +I
    T MD 104

    //Adresse für den DB steht jetzt in MD104

  8. #8
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    jo klar, die zahlen für die pointer müssen natürlich noch angepasst werden...

    agepasst und vereinfacht sollte sie schon noch werden, aber ich denke zum verständniss ist das so ganz ok.

    /
    kleiner tipp
    wenn ihr awl code in eure beiträge einfügt, dann benutzt den code-tag des forums. einfach vor dem awl code den tag öffnen mit [ code ] und am ende mit [/ code ] wieder schließen. dann sieht das so aus wie bei mir oben.
    (die tags natürlich ohne leerzeichen)

Ähnliche Themen

  1. S5 und S7 Datenbausteinverwaltung?
    Von apachler im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 30.11.2005, 12:34

Lesezeichen

Berechtigungen

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