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

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 49

Thema: Störbits erkennen

  1. #31
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Aus welcher Information kannst Du dann ableiten, daß die Anzeige eingeblendet werden soll? Welche Art Bits willst Du "zählen"?
    richtig ist, ich muss in einem Schleifendurchlauf zwei unterschiedliche Bedingungen prüfen.
    meiner Meinung nach Falsch ist, sich darauf zu versteifen das in der größtmöglichen Dateneinheit (DWORD) zu tun.

    Überprüfe ich Bit-weise habe ich den Vorteil, dass ich wie untenstehend sehr ordentlich beide Bedingungen auswerten kann und dies nach Bedarf auch noch für Negative-Flanken oder einen Meldungsnummernpuffer erweitern kann.

    Code:
    *
    DATA_BLOCK DB 20
    TITLE =
    VERSION : 0.1
      STRUCT  
       ACT : ARRAY  [0 .. 7 ] OF DWORD ; 
       FLAG : ARRAY  [0 .. 7 ] OF DWORD ; 
       ACT_ON : INT ; 
      END_STRUCT ; 
    BEGIN
       
    END_DATA_BLOCK
    
    FUNCTION FC 20 : VOID
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      inDBNum : INT ; 
    END_VAR
    VAR_OUTPUT
      newMsg : BOOL ; 
      Message : BOOL ; 
    END_VAR
    VAR_TEMP
      tempAR1 : DWORD ; 
      tempAR2 : DWORD ; 
      DBNum : INT ; 
      Lcount : INT ; 
    END_VAR
    
    BEGIN
    NETWORK
    TITLE =
    
          TAR1  #tempAR1; 
          TAR2  #tempAR2; 
          L     #inDBNum; 
          T     #DBNum; 
          AUF   DB [#DBNum]; 
    NETWORK
    TITLE =
    
          LAR1  P#0.0; 
          LAR2  P#64.0; 
    
          L     0; 
          T     DBW [AR2,P#0.0];
    
          L     256; 
    next: T     #Lcount; 
          U     DBX [AR1,P#0.0]; 
          FP    DBX [AR1,P#32.0]; 
          S     #newMsg; 
          U     DBX [AR1,P#0.0]; 
          SPBN  not; 
          L     DBW [AR2,P#0.0]; 
          +     1; 
          T     DBW [AR2,P#0.0]; 
    not:  +AR1  P#0.1; 
          L     #Lcount; 
          LOOP  next; 
          L     DBW [AR2,P#0.0]; 
          L     0; 
          <>I   ; 
          =     #Message; 
    NETWORK
    TITLE =
    
          LAR1  #tempAR1; 
          LAR2  #tempAR2; 
          SET   ; 
          SAVE  ; 
    END_FUNCTION
    
    FUNCTION FC 2 : VOID
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      IN_BOOL : BOOL ; 
      IN_INT : INT ; 
    END_VAR
    
    BEGIN
    NETWORK
    TITLE =
          CALL FC    20 (
               inDBNum                  := 20,
               newMsg                   := M     10.0,
               Message                  := M     10.1);
    
    NETWORK
    TITLE =
          U     M     10.0; 
          S     A      4.7; 
          UN    M     10.1; 
          R     A      4.7; 
    END_FUNCTION
    [EDIT] obenstehender Quellcode ist nicht getestet [/EDIT]
    Geändert von vierlagig (10.07.2014 um 11:06 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  2. #32
    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

    WOW vierlagig,

    da befinden wir uns jetzt aber schon in der Profiliga ...


    Vielleicht könntest du mir ja dieses Mal weiterhelfen:

    1)
    Ich sehe nicht (was aber nichts heißen muss), an welcher Stelle die Meldeanzeige auch bei anstehenden Meldungen mittels Taster "OP_ACK" deaktiviert werden kann. An welcher Stelle könnte frau das noch einfügen?

    2)
    Was genau schreibe ich denn bitte beim Aufruf der FC2 im OB1 hinter "IN_BOOL" und "IN_INT"?


    Vielen Dank schon einmal rein vorsorglich ...
    LG
    spirit

  3. #33
    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

    zu 1. parallel zu M10.1
    zu 2. huch. nimm die beiden variablen raus. altlasten im testprojekt...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  4. #34
    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 vierlagig Beitrag anzeigen
    zu 1. parallel zu M10.1
    Ja, das war auch meine erste Idee!

    Aber das klappt nur, solange die Taste permanent gedrückt wird - beim Loslassen blendet die Meldeanzeige wieder ein ...

    Code:
          ON    M10.1
          O     "OP_ACK"
          R     A      4.7
    Danke!
    LG
    spirit

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

    Standard

    Vielleicht liegt es daran:
    Zitat Zitat von vierlagig Beitrag anzeigen
    [EDIT] obenstehender Quellcode ist nicht getestet [/EDIT]
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    vierlagig (10.07.2014)

  7. #36
    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 PN/DP Beitrag anzeigen
    Vielleicht liegt es daran:

    [EDIT] obenstehender Quellcode ist nicht getestet [/EDIT]

    Harald
    Nun gut, hatte mich jetzt nur etwas gewundert weil der Code ansonsten schon funktioniert!

    Bis halt auf das Ausblenden der Meldeanzeige durch den Taster ...


    Am Rande noch eine Frage zu dem Thema:

    @Harald:

    In deinen Codes hattest du geschrieben

    CLR // (vorsichtshalber VKE begrenzen)


    Gibt es da eine Regel, oder wann machst du so etwas immer in deinen Netzwerken?
    LG
    spirit

  8. #37
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    ... das macht man immer, wenn vorher viel mit bedingten Sprüngen gearbeitet wurde und man deshalb vielleicht nicht so ganz genau das aktuelle VKE kennt ... in dem Fall also eine Art Vorsichts-Maßnahme ...

    Gruß
    Larry

  9. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    spirit (10.07.2014)

  10. #38
    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

    Ah, ich nochmal ...

    Eine Frage zum Code von VL sei mir bitte noch gestattet bevor in dann (endlich) in Rückzug gehe.

    An welcher Stelle, bzw. wodurch, wird denn dieses

    S #newMsg

    wieder rückgesetzt?
    LG
    spirit

  11. #39
    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

    Zitat Zitat von spirit Beitrag anzeigen
    An welcher Stelle, bzw. wodurch, wird denn dieses

    S #newMsg

    wieder rückgesetzt?
    durch die Tatsache, dass es sich um eine TEMP-Variable handelt - eine ordentliche Initialisierung darf man hier gern noch spendieren

    und das andere "Problem":

    Code:
          U     M     10.0
          S     A      4.7
          U     A      4.7
          UN    M     10.1
          O     
          U     A      4.7
          U     M     "op_ack"
          R     A      4.7
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  12. #40
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von vierlagig Beitrag anzeigen
    durch die Tatsache, dass es sich um eine TEMP-Variable handelt - eine ordentliche Initialisierung darf man hier gern noch spendieren

    und das andere "Problem":

    Code:
          U     M     10.0
          S     A      4.7
          U     A      4.7
          UN    M     10.1
          O     
          U     A      4.7
          U     M     "op_ack"
          R     A      4.7
    Danke VL!

    Bezüglich des anderen Problems; glaube das dürfte so noch nicht klappen, weil ja durch M10.0 der Ausgang (bei noch anstehenden Meldungen) gleich wieder gesetzt wird ... Daher wird die Meldeanzeige nur solange ausgeblendet, wie die Taste gedrückt wird.

    ... aber no problem!
    LG
    spirit

Ä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
  •