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

Results 1 to 8 of 8

Thread: Datenbausteinverwaltung.

  1. #1
    Anonymous Gast

    Default


    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
    Reply With Quote Reply With Quote Answered: Datenbausteinverwaltung.  

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


  3. #2
    Join Date
    19.06.2003
    Posts
    2,205
    Danke
    85
    Erhielt 271 Danke für 179 Beiträge

    Default

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

  4. #3
    Anonymous Gast

    Default

    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.

  5. #4
    Join Date
    17.06.2003
    Posts
    18
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    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

  6. #5
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    4,856
    Danke
    1,281
    Erhielt 1,125 Danke für 537 Beiträge

    Default

    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

  7. #6
    Anonymous Gast

    Default

    @ 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

  8. #7
    Join Date
    19.06.2003
    Posts
    2,205
    Danke
    85
    Erhielt 271 Danke für 179 Beiträge

    Default

    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

  9. #8
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    4,856
    Danke
    1,281
    Erhielt 1,125 Danke für 537 Beiträge

    Default


    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)

Similar Threads

  1. S5 und S7 Datenbausteinverwaltung?
    By apachler in forum Simatic
    Replies: 4
    Last Post: 30.11.2005, 12:34

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •