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

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 49

Thema: Störbits erkennen

  1. #11
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja genau.
    Aber Achtung, geht das denn ab DBD20? Du hast doch DBD16 für das erste DBD mit den Bits, dann den Zähler 4, also muß doch dein DB jetzt schon mindestens DBD16,DBD20,DBD24,DBD28 enthalten für die Bits, oder? Dahinter dann die DBD für den "alten Stand" oder ganz ans Ende, wenn der DB noch andere Daten enthält.
    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

  2. #12
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    immer wird alles neu erfunden - oder auch: mein gedächtnis ist nicht mehr das beste ... Sammelstörung mit wiederholter akust. Meldung
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #13
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ja genau.
    Aber Achtung, geht das denn ab DBD20? Du hast doch DBD16 für das erste DBD mit den Bits, dann den Zähler 4, also muß doch dein DB jetzt schon mindestens DBD16,DBD20,DBD24,DBD28 enthalten für die Bits, oder? Dahinter dann die DBD für den "alten Stand" oder ganz ans Ende, wenn der DB noch andere Daten enthält.
    Hm, ich glaube ich habe es noch nicht ganz richtig verstanden.

    Es sollen z.B. der DB10.DBD16 / DBD20 / DBD24 und DBD28 abgefragt werden. Diese habe ich im DB10 hintereinander stehen. Ganz am Ende ab DBD36 stehen dann vier Einträge um den "alten Stand" zu merken.


    Code:
         AUF   "DB10"
    
            L     P#16.0                      
            T     #pointer_1
    
            L     P#36.0                     
            T     #pointer_2
    
            L     4                          
    Next: T     #zaehler
    
            L     DBD [#pointer_1]
            L     L#0
            ==D                             
            SPB   Null   
                         
            L     DBD [#pointer_2]
            INVD  
            L     DBD [#pointer_1]            
            T     DBD [#pointer_2]                 
            UD    
            U     <>0
            S     A 4.7
    
    Null: NOP   0
          L     #pointer_1
          L     P#4.0
          +D                                
          T     #pointer_1
    
          L     #pointer_2
          L     P#4.0
          +D                                
          T     #pointer_2
    
          L     #zaehler
          LOOP  Next
    
          U     "OP_ACK"
          R     A 4.7
    Irgendwie will des Ganze aber noch net so wie ich ... etwas stur heute die SPS!


    @vierlagig: Die Codes auf der verlinkten Seite sind aber mal wieder ganz anders als meiner - und ich wollte halt meinen weiterentwickeln ...
    LG
    spirit

  4. #14
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    So sollte es eigentlich laufen.
    Hast du den DB verlängert und in die SPS geschoben?
    Kannst ja mal nicht L 4 für den Zähler machen, sondern L 1 (oder L 0???), dann kannst du das zumindest für das 1. DBD beobachten.
    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

  5. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Das Problem ist nun noch, dass der Ausgang nicht rückgesetzt wird, sobald alle Störbits gleich Null sind.
    Willst Du das wirklich???
    Ich meine, es macht keinen Sinn, den Ausgang zurückzusetzen sobald kein Störbit mehr aktiv ist, wenn man vorher umständlich eine Neustörung detektiert und speichert. Dann könnte man nämlich einfach nur alle Stör-DBD ver-Odern und gut ist's.

    Du solltest für Dich zunächst mal in Klartext formulieren was Du willst, denn das bestimmt die Logik des Ausgangs. Danach kannst Du dann Deine Schleife basteln.
    A) der Ausgang soll signalisieren, wenn irgendeine Störung aktiv ist (Sammelstörung)
    B) der Ausgang soll signalisieren, wenn irgendeine Störung aktiv ist oder aktiv war, bis die Signalisierung quittiert wurde (soll nach dem Gehen der letzten Störung nochmal quittiert werden?)
    C) der Ausgang soll signalisieren, wenn seit dem letzten Quittieren eine neue Störung dazugekommen ist, bis die Signalisierung quittiert wurde (Neustörung)
    D) ?

    Code:
    // A: Sammelstörung aktiv
    StörDW[1] OR StörDW[2] OR ... ---> = Lampe
    
    // B: Sammelstörung speichern bis quittiert
    StörDW[1] OR StörDW[2] OR ... ---> S Lampe
    Quittiertaster ---> R Lampe
    
    // C: Neustörung speichern bis quittiert
    StörDW[1] AND NOT StörDW_vorher[1] OR StörDW[2] AND NOT StörDW_vorher[2] OR ... ---> S Lampe
    Quittiertaster ---> R Lampe
    Gerne wird auch gemischt: die Lampe leuchtet bei Sammelstörung und blinkt bei Neustörung.
    Code:
    Lampe := (Sammelstörung AND NOT Neustörung) OR (Neustörung AND Blink)

    Zitat Zitat von spirit Beitrag anzeigen
    @vierlagig: Die Codes auf der verlinkten Seite sind aber mal wieder ganz anders als meiner - und ich wollte halt meinen weiterentwickeln ...
    Hatten wir das nicht schon kürzlich in einem anderen Thread von Dir für ...zig Meldungen erweitetet?
    Ich meine, ich hatte da auch einen Link auf einen Thread gepostet, wie ich Sammelstörung, Neustörung und Störungshupe mit allen Schikanen programmiere.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #16
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    @Ralle: Es läuft insoweit schon, aber wenn alle Störbits den Status 0 haben, dann wird der Ausgang nicht selbstständig zurückgesetzt! Finde aber in meiner Schleife den Fehler nicht ...


    @Harald: Stimmt, wir hatten schon mal für mich so etwas Ähnliches konstruiert; allerdings mit mehreren Abfragen - also ohne Schleife.

    Nun, diese Vorgabe (Ausgang automatisch rücksetzen) ist eine Kundenvorgabe!

    Es soll halt wie folgt ablaufen:

    Es gibt einen DB10 in dem vier DBD's hintereinander angeordnet sind. DB10.DBD16 - DB10.DBD28

    Ferner eine Meldeanzeige, die immer automatisch aufpoppen soll, wenn ein Störungsbit aktiv ist, bzw. ein neues hinzukommt. Störungsbit ist hier vielleicht der falsche Ausdruck, da es eigentlich Betriebsmeldungen (Hinweise für den Benutzer) sind, und keine Alarme!

    Also, ein Bit aus dem DB10 wird aktiv --> Meldeanzeige mit Text geht auf. Der Benutzer kann das zur Kenntnis nehmen und über eine Taste die Meldeanzeige (auch bei noch aktivem Störungsbit) wieder ausschalten. Kommt eine neue Meldung hinzu, so poppt die Anzeige erneut auf und wenn sie nicht durch den Benutzer geschlossen wird, so wird sie automatisch geschlossen, wenn keine Meldung (Störungsbit) mehr anliegt.

    Dies habe ich nun versucht in meiner Schleife darzustellen. Das Problem ist nun noch, dass die Meldeanzeige eben nicht mehr selbststätig schließt, sobald kein Störungsbit mehr aktiv ist.
    LG
    spirit

  7. #17
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    immer wird alles neu erfunden - oder auch: mein gedächtnis ist nicht mehr das beste ... Sammelstörung mit wiederholter akust. Meldung

    Wirste etwa alt ?!?
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  8. Folgender Benutzer sagt Danke zu Lars Weiß für den nützlichen Beitrag:

    vierlagig (09.07.2014)

  9. #18
    Registriert seit
    20.01.2012
    Beiträge
    98
    Danke
    0
    Erhielt 36 Danke für 34 Beiträge

    Standard

    Hallo,

    Zitat Zitat von spirit Beitrag anzeigen
    Dies habe ich nun versucht in meiner Schleife darzustellen. Das Problem ist nun noch, dass die Meldeanzeige eben nicht mehr selbststätig schließt, sobald kein Störungsbit mehr aktiv ist.
    sieh Dir mal Deine Rücksetzbedingung an. Im Augenblick setzt Du den Ausgang nur mit "OP_ACK" zurück. Du mußt dort zusätzlich prüfen ob alle DBD Null sind.

    Gruß

  10. #19
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Danke für den Hinweis Thruser,

    hatte das vorhin schon mal so:

    Code:
    AUF   "DB10"
    
            L     P#16.0                      
            T     #pointer_1
    
            L     P#36.0                     
            T     #pointer_2
    
            L     4                          
    Next:   T     #zaehler
    
            L     DBD [#pointer_1]
            L     L#0
            ==D                             
            SPB   Null   
                         
            L     DBD [#pointer_2]
            INVD  
            L     DBD [#pointer_1]            
            T     DBD [#pointer_2]                 
            UD    
            U     <>0
            S     A 4.7
    
    Null:   NOP   0
            L     #pointer_1
            L     P#4.0
            +D                                
            T     #pointer_1
    
            L     #pointer_2
            L     P#4.0
            +D                                
            T     #pointer_2
    
            L     #zaehler
            LOOP  Next
    
            O     "OP_ACK"
            O(    
            L     DBD [#pointer_1]
            L     L#0
            ==D   
            )     
            R     A 4.7
    Aber irgendwie funzt das alles noch nicht so, wie von mir gewünscht.

    Der Code hat ein Eigenleben; einmal klappt es und dann wieder nicht ...

    Derzeit wird der Ausgang überhaupt nicht gesetzt, wenn ich z.B. DB10.DBX16.4 setze!


    Hier noch die angefügten Zeilen im DB10:

    DB.jpg
    LG
    spirit

  11. #20
    Registriert seit
    20.01.2012
    Beiträge
    98
    Danke
    0
    Erhielt 36 Danke für 34 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Zitat Zitat von spirit Beitrag anzeigen
    Danke für den Hinweis Thruser, hatte das vorhin schon mal so: Aber irgendwie funzt das alles noch nicht so, wie von mir gewünscht. Der Code hat ein Eigenleben; einmal klappt es und dann wieder nicht ... Derzeit wird der Ausgang überhaupt nicht gesetzt, wenn ich z.B. DB10.DBX16.4 setze!
    hier machst Du die Abfrage ja auch nur mit dem letzten DBD, da Du erst nach der Schleife abfragst.

    Eventuell solltest Du mit einem Zwischenspeicher (ein DBD) arbeiten.

    Den zuerst auf Null setzen.
    Dann in die Schleife:Wenn aktueller DBD größer als der Speicher diesen Wert in den Speicher laden.

    Am Ende Abfragen, ob Speicher gleich Null dann rücksetzen.

    Anderes fällt mir z.Zt. nicht ein. Bin lange raus aus der Siemenprogrammierung mit AWL und Pointern.

    Gruß

Ähnliche Themen

  1. \r\n erkennen
    Von skywalker79 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 26.09.2012, 07:54
  2. Berührung TP erkennen
    Von Harry im Forum HMI
    Antworten: 8
    Letzter Beitrag: 05.08.2009, 12:34
  3. Spannungsausfall erkennen
    Von baalrok im Forum Simatic
    Antworten: 87
    Letzter Beitrag: 20.08.2008, 21:54
  4. Bildänderung erkennen
    Von costa im Forum PC- und Netzwerktechnik
    Antworten: 3
    Letzter Beitrag: 17.04.2007, 12:42
  5. Palette erkennen
    Von Zimbo30 im Forum Programmierstrategien
    Antworten: 33
    Letzter Beitrag: 19.03.2007, 20:01

Lesezeichen

Berechtigungen

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