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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Schleife mit indirekter Adressierung

  1. #11
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nach dem "U L 0.0" fehlt noch eine Zuweisung. So, wie es jetzt geschrieben ist, bearbeitest Du den Baustein immer und verknüofst den Vergleicher weiter hinten mit L 0.0.
    Davon abgesehen, brauchst Du nach dem FP nicht zwangsläufig eine Zuweisung in ein Bit, sondern kannst das Ergebnis direkt weiterverwenden. Eine Zuweisung in ein Bit benötigst Du nur, wenn Du die Flankenauswertung mehrfach verwenden möchtest.
    Gruß
    Michael

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Hier mal eine Variante mit speicherindirekter Adressierung, welche ohne AR auskommt:
    Code:
    IN    IN_WorkDB : INT
    TEMP  iWorkDB : INT
          dwMaxAdr : DWORD
          dwAdresse : DWORD
    
    
          L     #IN_WorkDB          // Nr des übergebenen DB
          T     #iWorkDB            // in Temp-Int kopieren
          AUF   DB [#iWorkDB]       // den übergebenen DB öffnen
          L     DBLG                // und DB_Länge abfragen
          L     1
          -D
          SPM   END                 // Abbruch: DB ist 0 Byte lang!
    
          SLD   3                   // DB_Länge - 1 --> höchste Byteadresse P#x.0
          OD    DW#16#7             // entspricht: + P#0.7  (+ Bitadresse .7)
          T     #dwMaxAdr           // --> höchste Bitadresse z.B. P#0.7 bei DB_Länge = 1
    
          L     P#0.5               // erste zu beschreibende Adresse im DB (DBX0.5)
    LOOP: T     #dwAdresse          // im Schleifenzähler (Pointer) merken
          L     #dwMaxAdr           // höchstmögliche DBX-Bitadresse
          >D                        // Pointer ist größer? 
          SPB   END                 // ja -> fertig/Abbruch / nein -> SET VKE für R
    
          R     DBX [#dwAdresse]    // rücksetzen DBX0.5 / DBX4.5 / DBX8.5 ...
    
          L     #dwAdresse
          +     L#32                // + P#4.0 Offset zur nächsten Adresse
          SPA   LOOP                // --> wiederholen mit P#4.5 / P#8.5 / P#12.5 ...
    
    END:  SET
    Ich würde den Code in einen eigenen FC packen und die Flankenerkennung außerhalb dieses FC machen und den FC nur aufrufen, wenn er die Bits löschen soll.
    Unschön ist noch die Übergabe der DB-Nummer als INT, weil dadurch die DB-Nummer nicht in den Referenzdaten erscheint. Wenn die DB-Nummer variabel sein soll, dann geht es aber leider nicht anders.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgende 2 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    StefanK (25.10.2013),Tschigi (28.10.2013)

  4. #13
    Tschigi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.04.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo an alle,

    vielen Dank für die Hinweise und Tipps. Hat mir alles sehr weitergeholfen.

    Tolle Sache, dass einem hier so schnell geholfen wird.


Ähnliche Themen

  1. TIA MOVE mit indirekter adressierung ...?
    Von MaMoe2909 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.09.2013, 15:16
  2. Datenbausteinhandling mit indirekter Adressierung
    Von CW-D im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 23.12.2011, 12:39
  3. IN_OUT mit Indirekter Adressierung
    Von SCM im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 14.10.2011, 12:07
  4. Problem mit indirekter Adressierung
    Von Astralavista im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.09.2010, 11:25
  5. Kleines Problem mit indirekter Adressierung
    Von TobiS81 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 02.05.2007, 12:31

Lesezeichen

Berechtigungen

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