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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 33

Thema: Programmierung Störmeldeverzögerung

  1. #1
    Registriert seit
    29.01.2008
    Beiträge
    100
    Danke
    139
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe das Problem, dass ich über 200 Störmeldungen zeitverzögert programmieren muss. Nach dem Auftreten der Sörung soll 2 Sekunden später eine Meldung für diese Störung erfolgen. Nach weiteren 120 Sekunden dann eine entsprechende Anlagenreaktion ausgelöst werden.
    Wäre alles kein Problem, wenn ich genügend Timer hätte.

    Hat jemand eine Idee, wie man soetwas timersparend programmieren kann bzw. ob man irgendwelche Systemfunktionen nutzen kann.

    (verwendete Hardware CPU314)

    MfG
    homei
    Zitieren Zitieren Programmierung Störmeldeverzögerung  

  2. #2
    Registriert seit
    09.06.2007
    Beiträge
    398
    Danke
    25
    Erhielt 46 Danke für 44 Beiträge

    Standard

    IEC-TON verwenden!
    Störmelde-FB einmal programmieren und zweihundertmal parametrieren. Zeitverzögerungen ebenfalls als Parameter anlegen, dann kann man im übergeordneten Baustein alle Zeiten individualisieren.

    Warum einfach, wenn...
    Geändert von Ludewig (27.02.2008 um 08:56 Uhr)

  3. Folgender Benutzer sagt Danke zu Ludewig für den nützlichen Beitrag:

    homei (27.02.2008)

  4. #3
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Möglich wäre es vielleicht auch im HMI die Anzeige zu verzögern über die Abtastrate, aber das würde auch das Quittieren verzögern...
    Das Grauen lauert in der Zwischenablage !!

  5. Folgender Benutzer sagt Danke zu dtsclipper für den nützlichen Beitrag:

    homei (27.02.2008)

  6. #4
    homei ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.01.2008
    Beiträge
    100
    Danke
    139
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Ludewig Beitrag anzeigen
    IEC-TON verwenden!
    Störmelde-FB einmal programmieren und zweihundertmal parametrieren. Zeitverzögerungen ebenfalls als Parameter anlegen, dann kann man im übergeordneten Baustein alle Zeiten individualisieren.

    Warum einfach, wenn...
    Hallo Ludewig,

    vielen Dank für Deine Info.

    Nur habe ich noch nie einen FB programmiert und weiss überhaupt nicht , wie das gehen soll. Im FB müßten dann wahrscheinlich die beiden Timer Programmiert werden und im zugehörigen Datenbaustein die Adressen der Störmelde-Bit's. Nur ist es dann auch gewährleistet, dass für jeden Parameter der Zähler neu gestartet werden kann und die korrekte Zeit liefert, wenn Störungen kurzzeitig hinter einander auftreten.

    MfG
    homei

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

    mal eine Lösung von mir, die noch angepasst werden sollte ... also nur ein Gedankenanstoß, günstig ist die Verwendung des CPU-Takts Mx.5 ...

    habe einen multiinstanzfähigen FB:

    Code:
    FUNCTION_BLOCK "alarm"
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      cpu_takt : BOOL ;    
      meldung : BOOL ;    
      quittierung : BOOL ;    
      meldungs_delay : INT ;    
      reaktions_delay : INT ;    
    END_VAR
    VAR_OUTPUT
      meldung_verzoegert : BOOL ;    
      reaktion_verzoegert : BOOL ;    
    END_VAR
    VAR
      delay : INT ;
      error : BOOL ;    
      help_flag : BOOL ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          UN    #meldung; //alarm meldung ist mit 1=OK
          R     #error;
    
          UN    #error; 
          U     #cpu_takt; 
          FP    #help_flag; 
          SPBN  _001; 
          L     #delay; 
          L     1; 
          +I    ; 
          T     #delay; 
    
    _001: U     #meldung; 
          U     #quittierung; 
          SPBN  _002; 
          L     0; 
          T     #delay; 
          S     #meldung_verzoegert; //alarm meldung ist mit 1=OK
          S     #reaktion_verzoegert; //alarm reaktion ist mit 1=OK
          S     #error;
    
    _002: L     #delay; 
          L     #meldungs_delay; 
          >=I   ; 
          R     #meldung_verzoegert; 
    
          L     #delay; 
          L     #reaktions_delay; 
          >=I   ; 
          R     #reaktion_verzoegert; 
    
    
    END_FUNCTION_BLOCK

    ...diesen FB kann ich nun in einem anderen FB zum beispiel 200 mal aufrufen und die entsprechenden Instanzen in der STAT-deklaration dieses FB definieren ... sieht dann so aus:

    Code:
    FUNCTION_BLOCK FB 1
    TITLE =
    VERSION : 0.1
    
    
    VAR
      meldung_1 : "alarm";    
      meldung_2 : "alarm";    
      meldung_3 : "alarm";    
      meldung_4 : "alarm";    
      meldung_5 : "alarm";    
      meldung_6 : "alarm";    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          CALL #meldung_1 (
               cpu_takt                 := M      2.5,
               meldung                  := E      0.0,
               quittierung              := E      1.0,
               meldungs_delay           := 2,
               reaktions_delay          := 120,
               meldung_verzoegert       := M      0.0,
               reaktion_verzoegert      := M      0.1);
          NOP   0; 
    NETWORK
    TITLE =
    
          CALL #meldung_2 (
               cpu_takt                 := M      2.5,
               meldung                  := E      0.1,
               quittierung              := E      1.0,
               meldungs_delay           := 2,
               reaktions_delay          := 120,
               meldung_verzoegert       := M      0.2,
               reaktion_verzoegert      := M      0.3);
          NOP   0; 
    END_FUNCTION_BLOCK
    habe fertig ... und dazu einen Instanz-DB für alle Störmeldungen ...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    homei (27.02.2008)

  9. #6
    Registriert seit
    09.06.2007
    Beiträge
    398
    Danke
    25
    Erhielt 46 Danke für 44 Beiträge

    Standard

    Bei mir geht das im Minimum so:

    Code:
    VAR_INPUT
      Fehler : BOOL ;    
      Meldezeit : TIME ;    
      Reaktionszeit : TIME ;      
    END_VAR
    VAR_OUTPUT
      Fehlermeldung : BOOL ;    
      Reaktion : BOOL ;    
    END_VAR
    VAR
      Meldetimer : TON ;
      Reaktionstimer : TON ;      
    END_VAR
    
    
    U     #Fehler
    =     #Meldetimer.IN
    =     #Reaktionstimer.IN
    L     #Meldezeit
    T     #Meldetimer.PT
    L     #Reaktionszeit
    T     #Reaktionstimer.PT
    
    CALL  #Meldetimer
    IN:=
    PT:=
    Q :=
    ET:=
    
    CALL  #Reaktionstimer
    IN:=
    PT:=
    Q :=
    ET:=           
    
    U     #Meldetimer.Q
    =     #Fehlermeldung
    
    U     #Reaktionstimer.Q
    =     #Reaktion
    Das Instanzieren wurde weiter oben schon beschrieben. Über die Frage, ob die SPS das gebacken kregt, mache ich mir als IEC-Programmierer normalerweise keine Gedanken, sondern wechsle die CPU.
    Geändert von Ludewig (27.02.2008 um 11:47 Uhr) Grund: Ergänzung

  10. Folgender Benutzer sagt Danke zu Ludewig für den nützlichen Beitrag:

    homei (27.02.2008)

  11. #7
    homei ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.01.2008
    Beiträge
    100
    Danke
    139
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Vierlagig, Hallo Ludewig,

    vielen Dank für Eure Mühe. Es sieht sehr interessant aus. Ich muss mich da aber als Anfänger noch richtig reinversetzen. Wie das mit dem Instanzieren geht ist mir noch nich klar.
    Kann ich Eure Beispiele irgendwie einlesen oder muss ich das abschreiben?
    Wo können denn die CPU-Probleme liegen bei dieser Programierart? Ich vermute, das die Zykluszeit nicht reicht!?

    nebenbei: Was ist denn ein IEC-Programmierer?

    MfG
    homei

  12. #8
    Registriert seit
    09.06.2007
    Beiträge
    398
    Danke
    25
    Erhielt 46 Danke für 44 Beiträge

    Standard

    Oder kürzer und more siemenslike, da die Schablone sowieso kommt:
    Code:
    VAR_INPUT
      Fehler : BOOL ;    
      Meldezeit : TIME ;    
      Reaktionszeit : TIME ;      
    END_VAR
    VAR_OUTPUT
      Fehlermeldung : BOOL ;    
      Reaktion : BOOL ;    
    END_VAR
    VAR
      Meldetimer : TON ;
      Reaktionstimer : TON ;      
    END_VAR
    
    CALL  #Meldetimer
    IN:= #Fehler
    PT:= #Meldezeit
    Q := #Fehlermeldung
    ET:=
    CALL  #Reaktionstimer
    IN:= #Fehler
    PT:= #Reaktionszeit
    Q := #Reaktion
    ET:=

  13. Folgender Benutzer sagt Danke zu Ludewig für den nützlichen Beitrag:

    homei (27.02.2008)

  14. #9
    Registriert seit
    09.06.2007
    Beiträge
    398
    Danke
    25
    Erhielt 46 Danke für 44 Beiträge

    Standard

    IEC 61131-3: Ich habe 10 Jahre Möller mit Sucosoft programmiert und neuerdings mit Codesys.


    Mit welcher Software arbeitest du denn?
    Geändert von Ludewig (27.02.2008 um 12:55 Uhr)

  15. #10
    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 homei Beitrag anzeigen
    Wie das mit dem Instanzieren geht ist mir noch nich klar.
    ok, den Anfang macht der FB, der benötigt eine Instanz, bei einem einfachen Aufruf ist dies ein eindeutig zugeordneter Instanz-Datenbaustein. Dieser ist nötig um die Daten zu halten. Bei einer Multiinstanz werden die einzelnen Instanz-Datenbausteine quasi hintereinander in einen einzigen Instanz-Datenbaustein, den des aufrufenden FB, gepackt ... so sparst du dir 200 199 Datenbausteine ...

    Zitat Zitat von homei Beitrag anzeigen
    Kann ich Eure Beispiele irgendwie einlesen oder muss ich das abschreiben?
    unter STEP7:

    im Ordner Quellen eine neue AWL-Quelle anlegen, Quellcode per copy-paste einfügen, speichern und übersetzen ...
    Geändert von vierlagig (27.02.2008 um 13:30 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. B&R Programmierung
    Von Viper86 im Forum Sonstige Steuerungen
    Antworten: 29
    Letzter Beitrag: 25.01.2011, 16:53
  2. S5 Programmierung PW?
    Von Brian84 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 31.01.2010, 14:39
  3. sps Programmierung
    Von lieuthnant im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 06.08.2009, 15:31
  4. Programmierung mit TCP/IP
    Von Linde im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 15.02.2007, 11:25
  5. Programmierung KM PS4-341
    Von 62addi im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 23.08.2005, 20:46

Lesezeichen

Berechtigungen

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