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

Ergebnis 1 bis 5 von 5

Thema: Schaltverzögerung/Hysterese für ein Magnetventil

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPS-Gemeinde,

    ich möchte für ein Magnetventil eine Hysterse programmieren, da ich mich aber gearde in die SPS-Programmierung mit PCWorx Express einarbeite kann ich mein Problem irgendwie nicht alleine lösen und frage hier nach Rat.
    Folgendes Szenario:
    Das Magnetventil wird bei einer bestimmten Bedingung geschlossen.

    MV_close := T1 (*bool*) and T2 (*bool*)

    Beim schließendem MV kommt es allerdings immer, Prozess bedingt, zu einem Wechselspiel zwischen true und false bei dem boolchen Wert T2. Diese Wechelspiel verschwindet zwar nach ein paar Sekunden aber es kann passieren, dass in dieser Zeit ein Fehler von einer anderen Stelle gesetzt wird und die Anlage wird runter gefahren.

    Jetzt habe ich schon ein paar Lösungsansätze durch probiert z.B. SR oder TOF Funktionsbausteine, die für eine bestimmte Zeit das MV auf true lassen. Aber wenn die FB´s nach ihrem Reset ein false ausgeben wird der True-Wert von dem MV_close-Wert wieder überschrieben. Das würde ich gerne, wenn es möglich ist umgehen.

    Da fällt mir gerade noch eine andre Frage zu diesem Thema ein. Die oben beschriebene Abfrage läuft zusammen mit noch ein paar anderen Abfragen in einer Case-Struktur. Wenn die Abfragen alle erfolgreich abgearbeitet wurden wird in die nächste Case-Anweisung gewechselt wo MV-close als Ausgang ein (Dauer)true bekommt. Ist es dann egal ob in der vorherigen Case-Anweisung nach der Hysterese für das MV der True-Wert vom MV_close wieder auf false wechselt?

    Dank und Gruß
    scorp2
    Zitieren Zitieren Schaltverzögerung/Hysterese für ein Magnetventil  

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

    Standard

    Hallo,
    an deinem geposteten Teil-Code ist erstmal nichts auszusetzen. Das kann und darf man so programmieren.
    Wenn du aber wissen möchtest, warum die gewünschte Funktion deines Gesamtcodes nicht mit der tatsächlichen übereinstimmt dann solltest du auch mal den Gesamtcode posten - dann kann man den analysieren und sich darauf beziehen und Verbesserungsvorschläge machen. Selbstverständlich können wir auch Varianten durchdenken ...

    Also ...

    Gruß
    Larry

  3. #3
    scorp2 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.06.2013
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Larry,

    sorry für die späte Anwort, hier der Code:

    Case-Anweisung

    case status of
    1 : state_Hochfahren( T_SA_Start:=T_SA_Start_in, SA_State:= SA_State_in,);
    SA_Enable_out :=state_Hochfahren.SA_Enable;
    MV_close_out :=state_Hochfahren.MV_close;
    ErrID :=state_Hochfahren.ErrID_out;

    3 : state_Normalbetrieb (SA_Overl:= (SA_State_in=3));
    SA_Enable_out := true;
    MV_close_out := true;
    ErrID := state_Normalbetrieb.ErrID_out;

    Code in der Case-Anweisung Hochfahren

    (*Abfrage der Bedingungen zum hochfahren der Anlage*)

    SA_IsBYP:= (SA_State=2); (* Variablendeklaration für SA_State *)


    T1 := T1_ist(*real*) > 180.0; (*180°C*)
    T2 := T2_ist (*real*) > T2_Siede(*real*);

    MV_close := T1 (*bool*) and T2 (*bool*)

    (*Hysterese für das Magnetventil*)
    SR_MV(SET1:=MV_close,RESET:= SA_Enable);
    MV_close:=SR_MV.Q;

    (* E-Maschine hoch fahren *)
    (* T_SA_Start = 5s default *)
    TON_SA_Start(IN:=FG_AFV, PT:=T_SA_Start);
    SA_Enable := TON_SA_Start.Q;

    (* Timer für Sanftanlasser-Hochlauf/E-Maschine *)
    TON_SA_UpRun(IN:=SA_Enable, PT:=t#15s);
    SA_UpRun := TON_SA_UpRun.Q;

    (* Abfrage: E-Maschine Enddrehzahl erreicht? *)
    (* Fehler wenn TON abgelaufen und noch nicht SA_IsBypass_e true ist *)
    SA_IsBypass := SA_UpRun and SA_IsBYP;
    SA_IsBypass_e := SA_UpRun and not SA_IsBYP;

    Ab hier kommen noch ein paar Abfragen wie z.B. ob die E-Maschiene Enddrehzahl erreicht hat und dann die Fehlerbehandlung. Wenn kein Fehler vorhanden ist wird in die Case-Anweisung "Normalbetrieb" gewechselt.

    Im Case Normalbetrieb werden nur die Prozesszustände überwacht, bei einem Fehler wird die Anlage runter gefahren und alle Aktuatoren bekommen ein false.

    Vielleicht noch eine Erläuterung wozu ich die Hysterese brauche. Wenn das MV schließt steigt der Druck in den Rohrleitungen (Dampfleitungen) dadurch ändert sich die Siedetemperatur in der Abfrage
    T2 := T2_ist > T2_Siede und T2 wird wieder false. MV öffnet wieder -> Siedetemp. fällt, und das spiel geht wieder von vorne los. So lange wie das MV hin her springt läuft die E-Maschine nicht an.

    Danke und Gruß
    scorp2

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

    Standard

    Hallo,
    ich muss gestehen, dass mir dein Code nicht wirklich weiter hilft (das sehe bei mir vermutlich schon vom Ansatz her ganz anders aus - tut aber auch nichts zur Sache) - deine mitgeliferte Beschreibung aber schon ...
    So, wie ich das sehe, darf MV_Close nicht das Ergebnis einer einfachen Verknüpfung sein sondern eher das einer Schrittkette :
    Schritt 0 : warten auf T1 and T2 -> wechseln nach Schritt 1
    Schritt 1 : MV_Close := True ; Start Hysterese-Zeit -> wechseln nach Schritt 2
    Schritt 2 : ggf. warten auf T2 -> wechseln nach Schritt 3
    Schritt 3 : MV_Close := False ; wechseln nach Schritt 0

    Vielleicht ungefähr so ...

    Gruß
    Larry

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Larry,

    sorry für die späte Anwort, hatte noch andere Projekte die nichts mit SPS zu tun hatten und im Urlaub war ich auch noch.
    Ich habe die Hysterese mit einem TOF realisiert. Danke trotzdem für deine Hilfe.

    Gruß
    scorp2

Ähnliche Themen

  1. Magnetventil effizient betreiben
    Von wackel_peter im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 22.09.2012, 20:23
  2. Ansteuerung Magnetventil
    Von sps_mitte im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 19.02.2012, 10:55
  3. Magnetventil Ansteuerung SPS
    Von micha89 im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 15.05.2010, 15:55
  4. Steuerung Magnetventil (5/2 Wege)
    Von outbreak7 im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 25.02.2010, 23:09

Lesezeichen

Berechtigungen

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