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

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

Thema: ProTool Meldungsnummer auslesen

  1. #11
    Unregistriert2 Gast

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das wäre schön, denn ich habe ein ähnliches Problem!

    z.B.: bitposition = LN bitwert / LN 2

  2. #12
    Avatar von HolleHonig
    HolleHonig ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.10.2005
    Beiträge
    110
    Danke
    2
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Musste noch ein paar kleine Schönheitskorrekturen machen. Jetzt isses aber fertig.
    Hier der Code:
    Code:
          AUF   "DB-Meldungen-Stoer"
          L     P#0.0                       // Störmeldungen beginnen bei DBW0
          T     #Zeiger                     // DWORD
          L     0
          T     #Datenwort_Nummer           // WORD
          L     7                           // Anzahl der Wörter mit Störmeldungen im Störmelde-DB
    M001: T     #zaehler                    // INT
          L     DBW [#Zeiger]               // Lade Datenwort
          L     0                           // Lade 0
          ==I                               // keine Störmeldung !!!
          SPB   M002
          SPA   End                         // wenn eine Störmeldung vorliegt, wird hier aus der Schleife gesprungen
    M002: L     #Datenwort_Nummer           // 
          L     1                           // Datenwortnummer um 1 erhöhen
          +I    
          T     #Datenwort_Nummer
          L     #Zeiger                     // Zeiger um 2 erhöhen
          L     P#2.0                       // zeigt auf das nächste Datenwort
          +D    
          T     #Zeiger
          L     #zaehler
          LOOP  M001                        // Schleife solange, bis #zaehler auf 0
    End:  L     #Datenwort_Nummer           // bei Ergebnis <> 0 liegt eine Störmeldungr vor
          L     0
          <>I   
          SPBN  M004                        // Sprung nach M004, wenn keine Störmeldung vorliegt
          L     1                           // Bitnummer mit 1 vorbelegen
          T     #Bitnummer                  // Bitnummer fängt normalerweise bei 0 an
    //                                      // die Bildernummer aber bei 1
          L     DBW [#Zeiger]               // kopiere den Inhalt des  DB's
          T     #Hilfsvar_DaBa              // in eine Hilfsvariable
          L     16                          // Wort = 16 Bit
    M003: T     #zaehler                    // INT
          L     #Hilfsvar_DaBa              // WORD
          SRW   1                           // Schiebe den Inhalt der Hilsvariable um 1 nach rechts
          SPP   Ende                        // War das rausgeschobene Bit = 1, dann Sprung aus der Schleife
          T     #Hilfsvar_DaBa              // Sonst neu abspeichern
          L     #Bitnummer                  // INT
          L     1                           // Bitnummer um 1 erhöhen
          +I    
          T     #Bitnummer
          L     #zaehler
          LOOP  M003                        // Schleife solange, bis #zaehler auf 0
    M004: L     0                           // Nur, wenn keine Störmeldung ansteht 
          T     #Datenwort_Nummer           // Datenwortnummer und Bitnummer mit 0 belegen
          T     #Bitnummer
    Ende: L     #Datenwort_Nummer           // Bildnummer berechnen
          L     16                          // (Datenwortnummer * 16) + Bitnummer
          *I    
          L     #Bitnummer
          +I    
          T     #Meldungsnummer             // INT
          T     "AB8-Fehler-Bit-Codierung"  // Ausgangsbyte zeigt Störmeldungsnummer bitcodiert an
    Nochmals danke für eure Hilfe.
    Gruß
    HolleHonig

  3. #13
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    wenn du jetzt noch den deklarationsteil postest wärs schön.

    oder erzeug mal eine quelle aus dem baustein.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  4. #14
    Avatar von HolleHonig
    HolleHonig ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.10.2005
    Beiträge
    110
    Danke
    2
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Also gut, hier die Quelle.

    Code:
    FUNCTION_BLOCK "FB-8-Bit-Fehlercodierung"
    TITLE =
    VERSION : 0.1
     
    VAR
      Datenwort_Nummer : WORD ; 
      zaehler : INT ; 
      Bitnummer : INT ; 
      Hilfsvar_DaBa : WORD ; 
      Meldungsnummer : INT ; 
    END_VAR
    VAR_TEMP
      Zeiger : DWORD ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          AUF   "DB-Meldungen-Stoer"; 
          L     P#0.0; // Störmeldungen beginnen bei DBW0
          T     #Zeiger; // DWORD
          L     0; 
          T     #Datenwort_Nummer; // WORD
          L     7; // Anzahl der Wörter mit Störmeldungen im Störmelde-DB
    M001: T     #zaehler; // INT
          L     DBW [#Zeiger]; // Lade Datenwort
          L     0; // Lade 0
          ==I   ; // keine Störmeldung !!!
          SPB   M002; 
          SPA   End; // wenn eine Störmeldung vorliegt, wird hier aus der Schleife gesprungen
    M002: L     #Datenwort_Nummer; // 
          L     1; // Datenwortnummer um 1 erhöhen
          +I    ; 
          T     #Datenwort_Nummer; 
          L     #Zeiger; // Zeiger um 2 erhöhen
          L     P#2.0; // zeigt auf das nächste Datenwort
          +D    ; 
          T     #Zeiger; 
          L     #zaehler; 
          LOOP  M001; // Schleife solange, bis #zaehler auf 0
    End:  L     #Datenwort_Nummer; // bei Ergebnis <> 0 liegt eine Störmeldungr vor
          L     0; 
          <>I   ; 
          SPBN  M004; // Sprung nach M004, wenn keine Störmeldung vorliegt
          L     1; // Bitnummer mit 1 vorbelegen
          T     #Bitnummer; // Bitnummer fängt normalerweise bei 0 an
    //                                      // die Bildernummer aber bei 1
          L     DBW [#Zeiger]; // kopiere den Inhalt des  DB's
          T     #Hilfsvar_DaBa; // in eine Hilfsvariable
          L     16; // Wort = 16 Bit
    M003: T     #zaehler; // INT
          L     #Hilfsvar_DaBa; // WORD
          SRW   1; // Schiebe den Inhalt der Hilsvariable um 1 nach rechts
          SPP   Ende; // War das rausgeschobene Bit = 1, dann Sprung aus der Schleife
          T     #Hilfsvar_DaBa; // Sonst neu abspeichern
          L     #Bitnummer; // INT
          L     1; // Bitnummer um 1 erhöhen
          +I    ; 
          T     #Bitnummer; 
          L     #zaehler; 
          LOOP  M003; // Schleife solange, bis #zaehler auf 0
    M004: L     0; // Nur, wenn keine Störmeldung ansteht 
          T     #Datenwort_Nummer; // Datenwortnummer und Bitnummer mit 0 belegen
          T     #Bitnummer; 
    Ende: L     #Datenwort_Nummer; // Bildnummer berechnen
          L     16; // (Datenwortnummer * 16) + Bitnummer
          *I    ; 
          L     #Bitnummer; 
          +I    ; 
          T     #Meldungsnummer; // INT
          T     "AB8-Fehler-Bit-Codierung"; // Ausgangsbyte zeigt Störmeldungsnummer bitcodiert an
    END_FUNCTION_BLOCK
    Hoffentlich isses nu gut.
    Gruß
    HolleHonig

  5. #15
    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

    Daumen hoch

    Jo, das ist super so .
    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

  6. #16
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    habs eben mal getestet. so ganz scheint es aber nicht zu klappen.
    wenn in dbw0 ein bit high ist klappts nicht.
    ab dbw2 gehts.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  7. #17
    Avatar von HolleHonig
    HolleHonig ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.10.2005
    Beiträge
    110
    Danke
    2
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also ich muss sagen, daß das Forum hier ne echt klasse Sache ist.
    Sorry, mit Dw0 hab ichs nicht getestet.
    Jetzt funktionierts aber. (Hoff ich )
    Code:
    FUNCTION_BLOCK "FB-8-Bit-Fehlercodierung"
    TITLE =
    VERSION : 0.1
     
    VAR
      Datenwort_Nummer : WORD ; 
      zaehler : INT ; 
      Bitnummer : INT ; 
      Hilfsvar_DaBa : WORD ; 
      Meldungsnummer : INT ; 
    END_VAR
    VAR_TEMP
      Zeiger : DWORD ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          AUF   "DB-Meldungen-Stoer"; 
          L     P#0.0; // Störmeldungen beginnen bei DBW0
          T     #Zeiger; // DWORD
          L     0; 
          T     #Datenwort_Nummer; // WORD
          L     7; // Anzahl der Wörter mit Störmeldungen im Störmelde-DB
    M001: T     #zaehler; // INT
          L     DBW [#Zeiger]; // Lade Datenwort
          L     0; // Lade 0
          ==I   ; // keine Störmeldung !!!
          SPB   M002; 
          SPA   End; // wenn eine Störmeldung vorliegt, wird hier aus der Schleife gesprungen
    M002: L     #Datenwort_Nummer; // 
          L     1; // Datenwortnummer um 1 erhöhen
          +I    ; 
          T     #Datenwort_Nummer; 
          L     #Zeiger; // Zeiger um 2 erhöhen
          L     P#2.0; // zeigt auf das nächste Datenwort
          +D    ; 
          T     #Zeiger; 
          L     #zaehler; 
          LOOP  M001; // Schleife solange, bis #zaehler auf 0
    End:  L     1; // Bitnummer mit 1 vorbelegen
          T     #Bitnummer; // Bitnummer fängt normalerweise bei 0 an
    //                                      // die Bildernummer aber bei 1
          L     DBW [#Zeiger]; // kopiere den Inhalt des  DB's
          T     #Hilfsvar_DaBa; // in eine Hilfsvariable
          L     16; // Wort = 16 Bit
    M003: T     #zaehler; // INT
          L     #Hilfsvar_DaBa; // WORD
          SRW   1; // Schiebe den Inhalt der Hilsvariable um 1 nach rechts
          SPP   Ende; // War das rausgeschobene Bit = 1, dann Sprung aus der Schleife
          T     #Hilfsvar_DaBa; // Sonst neu abspeichern
          L     #Bitnummer; // INT
          L     1; // Bitnummer um 1 erhöhen
          +I    ; 
          T     #Bitnummer; 
          L     #zaehler; 
          LOOP  M003; // Schleife solange, bis #zaehler auf 0
          L     0; // Nur, wenn keine Störmeldung ansteht 
          T     #Datenwort_Nummer; // Datenwortnummer und Bitnummer mit 0 belegen
          T     #Bitnummer; 
    Ende: L     #Datenwort_Nummer; // Bildnummer berechnen
          L     16; // (Datenwortnummer * 16) + Bitnummer
          *I    ; 
          L     #Bitnummer; 
          +I    ; 
          T     #Meldungsnummer; // INT
          T     "AB8-Fehler-Bit-Codierung"; // Ausgangsbyte zeigt Störmeldungsnummer 
    END_FUNCTION_BLOCK
    Der Sprung bei "End" war das Problem. Hab dort die Datenwortnummer auf 0 verglichen und bin bei 0 gesprungen. Das hab ich nun korrigiert.
    Gruß
    HolleHonig

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 18.11.2009, 16:04
  2. csv dateien mit protool auslesen
    Von Merlin115 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 14.11.2006, 12:44
  3. Antworten: 7
    Letzter Beitrag: 25.08.2005, 08:30
  4. Antworten: 2
    Letzter Beitrag: 03.05.2005, 07:36
  5. Antworten: 2
    Letzter Beitrag: 12.11.2004, 16:24

Lesezeichen

Berechtigungen

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