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

Ergebnis 1 bis 6 von 6

Thema: Einschaltverzögerung nach Unterbrechung weiter ablaufen lassen

  1. #1
    Registriert seit
    28.08.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Liebe Forumuser,

    da der Titel nicht aussagekräftig genug ist erläutere ich mein Problem gleich genauer.
    CPU: CPU 315-2 PN/DP V3.2
    Programmiersystem: Step 7 V5.5

    In einer Chemieanlage stehen Behälter mit Medien(z.B. HCL). Es gibt aber auch Behälter mit Zirkulationsventilen, damit das Medium in Bewegung bleibt.
    Die Zirkulation wird nach Ablauf einer Ruhezeit(vom Benutzer parametrierbar) UND wenn kein Medium von der Steuerung angefordert(über einen Eingang) wird
    gestartet(Pumpe an und Zirkulationsventil auf). Wird während der Zirkulationszeit(vom Benutzer parametrierbar) ein Medium angefordert, wird die Zirkulation
    unterbrochen und erst wenn keine Anforderung mehr vorliegt, soll die restliche Zeit der Zirkulation abgearbeitet werden.

    Ich habe mir überlegt für die Zirkulationszeit eine Einschaltverzögerung mit einem invertiertem Eingang(keine Anforderung vom Medium) zu nutzen.
    Sobald aber Medium angefordert wird, ist der Timer aus und ich habe auch keine Möglichkeit mehr die abgelaufene Zeit z.B. in ein MW zu speichern.
    Sonst könnte ich nachdem die Anforderung erlischt, die Einschaltverzögerung mit der restlichen( Gesamtzeit - abgelaufene Zeit) starten.
    Da TW aber in S5Time angegeben werden muss, habe ich da ebenfalls ein Problem.

    Kennt ihr eine Möglichkeit, wie man die restliche Zeit nach Unterbrechung ermitteln und weiter abarbeiten kann?

    Danke euch

    Grüße

    atari
    Zitieren Zitieren Einschaltverzögerung nach Unterbrechung weiter ablaufen lassen  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.182
    Danke
    923
    Erhielt 3.289 Danke für 2.658 Beiträge

    Standard

    Solange eine Einschaltverzögerung (S7-Timer SE) noch nicht neu gestartet wurde kann man auslesen wie weit der "Countdown" davor ging, z.B. " L T1"

    Beim IEC-Timer TON (SFB4) weiß ich gerade nicht das genaue Verhalten, da müßte man aber ebenfalls an die bisher abgelaufene Zeit rankommen. Notfalls kann man ja auch den ablaufenden Zeitwert in eine Variable umkopieren nur solange die Freigabe am Timer-Eingang ansteht.

    Der Datentyp S5TIME sollte kein Hindernis sein. Eine Function zum Umwandeln von S5T# in TIME# und zurück ist eine typische und dankbare Anfänger-Programmieraufgabe mit hohem Lerneffekt. Es gibt aber auch schon fertige Bausteine zum Umwandeln in der Standard Library "IEC Function Blocks": FC33 S5TI_TIM und FC40 TIM_S5TI.

    Du könntest auch selber einen Zeitzähler programmieren, der z.B. mittels Addition Sekunden in einer (remanenten) Variable zählt. Wie lang ist typischerweise die Zeitdauer (Zirkulationszeit), die Du einhalten sollst?

    Nachtrag:
    Es gibt auch einen fertigen Timer-Baustein, den man beliebig unterbrechen kann und nach der Unterbrechung die Restzeit läuft:
    Standard Library "TI-S7 Converting Blocks" FC80 TONR speichernde Einschaltverzögerung

    Harald
    Geändert von PN/DP (12.02.2016 um 09:42 Uhr) Grund: Nachtrag TONR
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    de vliegende hollander (12.02.2016)

  4. #3
    Registriert seit
    12.12.2013
    Ort
    Kaiserslautern
    Beiträge
    1.337
    Danke
    386
    Erhielt 218 Danke für 173 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Es gibt auch einen fertigen Timer-Baustein, den man beliebig unterbrechen kann und nach der Unterbrechung die Restzeit läuft:
    Standard Library "TI-S7 Converting Blocks" FC80 TONR speichernde Einschaltverzögerung
    Mann muss sich eigentlich ein Mittag nehmen um den ganze Bibliothek durch zu forschen.

    Bram
    Wenn es nicht auf STRAVA ist, ist es nicht passiert !!

  5. #4
    atari ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.08.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Solange eine Einschaltverzögerung (S7-Timer SE) noch nicht neu gestartet wurde kann man auslesen wie weit der "Countdown" davor ging, z.B. " L T1"
    Nachtrag:
    Es gibt auch einen fertigen Timer-Baustein, den man beliebig unterbrechen kann und nach der Unterbrechung die Restzeit läuft:
    Standard Library "TI-S7 Converting Blocks" FC80 TONR speichernde Einschaltverzögerung
    Danke Harald für diesen Tipp.
    Genau diesen Baustein habe ich gesucht. Nur mit der Beschaltung im Aufruf im OB1 habe ich noch Probleme:

    Ich habe den FC 80 so beschaltet:

    Code:
    CALL "TONR"
    TMR_EN:=E20.0
    RESET:=E20.1
    PV:=L#5000
    DELTA:=#OB1_PREV_CYCLE
    Q:=A1.1
    ET:=MD100
    Die Zeit entspricht ja 5 s, denn angegeben wird sie ja in ms.
    Sobald ich den Eingang 20.0 setze und 5 sec warte, wird aber nicht mein Ausgang gesetzt. Das sollte er doch aber nicht?
    Rücksetzen kann ich den Timer ja nur über den reset Eingang.
    Mir macht noch der Parameter DELAY zu schaffen.
    Da ich den Aufruf im OB1 tätige, habe ich den Eingang laut Hilfe beschaltet aber da stimmt doch etwas mit der Beschaltung oder meinem Verständnis nicht.

    Ich bitte um kurze Aufklärung.

    Danke

    atari

    PS: die DELTA Variable habe ich als temp angelegt, ich hoffe das war richtig so

  6. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.182
    Danke
    923
    Erhielt 3.289 Danke für 2.658 Beiträge

    Standard

    Hast Du den FC "TONR" in die Steuerung geladen?
    Hast Du #OB1_PREV_CYCLE selber im OB1 deklariert? Die TEMP-Variablen OB1_... sollten schon automatisch in dem OB1 deklariert sein. #OB1_PREV_CYCLE ist das LW6. Du kannst mal "LW6" statt "#OB1_PREV_CYCLE" an DELTA_T dranschreiben - das sollte automatisch in #OB1_PREV_CYCLE geändert werden.

    Falls in Deinem OB1 keine TEMP-Variablen OB1_... deklariert waren, dann lösche mal Deinen OB1 (oder verschiebe ihn in einen anderen Programm-Ordner) und füge einen neuen OB1 ein: Rechtsmausklick im Bausteineordner > Neues Objekt einfügen > Organisationsbaustein > Name: OB1 > [OK]

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #6
    atari ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.08.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für den Tipp mit dem LW6 Harald.
    So klappt alles und das ist genau die Funktion, welche ich gesucht habe.

    Dankeschön

    atari

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 17.03.2015, 13:25
  2. S5 nach S7 weiter über COM
    Von scheercnc im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 13.11.2009, 10:50
  3. Antworten: 8
    Letzter Beitrag: 27.10.2009, 13:38
  4. Winccflex script permanent ablaufen lassen
    Von spsbändiger im Forum HMI
    Antworten: 2
    Letzter Beitrag: 22.04.2008, 15:29
  5. Antworten: 14
    Letzter Beitrag: 18.04.2008, 20:04

Lesezeichen

Berechtigungen

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