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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Auf alte Einstellung zurückkehren ...

  1. #1
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    hänge grad an einem Problem. Glaube ist nicht so kompliziert und doch komme ich auf keinen grünen Zweig.

    Über ein Display sind fünf unterschiedliche Varianten anwählbar, die bearbeitet werden können ...

    Beispiel:


    Bei Betätigung der Schaltfläche1 (Variante1) werden der Merker1 gesetzt und die Merker 2-4 rückgesetzt.


    Gibt es nun eine einfache Möglichkeit sich zu merken, welche Variante vor dem Umschalten auf eine andere Variante angewählt war?


    Der Sinn dahinter ist, dass wenn nach Variantenwechsel z.B. nicht innerhalb von 30s die Taste X gedrückt wird, wieder automatisch auf die ursprüngliche Variante zurückgewechselt wird.
    LG
    spirit
    Zitieren Zitieren Auf alte Einstellung zurückkehren ...  

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

    Übernahme der neuen Variante nur bei erfolgreichen Wechsel.

    Soll heißen: Anforderung geht in einen Anforderungsspeicher
    wird die Anforderung quittiert geht die gewählte Anforderung "online"

    Tipp: Weise deinen Zuständen Zahlen zu, so kannst du a) leichter z.B. mit SPL in AWL oder CASE in SCL die einzelnen Varianten verwalten und b) ist es für die Leute nach Dir einfacher zu verstehen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    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 VL,

    was ich aber daran noch immer nicht verstehe - wie kann ich mir merken, dass z.B. beim Umschalten auf Variante 3 zuvor Variante 1 angewählt war, usw. ?
    LG
    spirit

  4. #4
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.636
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Müssen die Merker direkt gesetzt werden? Wenn nicht. Warte doch mit dem setzen bis die Taste-X gedrückt wurde und speichere den Zustand vorher in einem Zwischenspeicher.

    Wenn sie sofort gesetzt werden müssen. Sichere die Merker die zuvor gesetzt waren zuerst ein einen Savespeicher.

    Das ist übrigens einfacher wenn du Anlagenzuständen/Betriebsarten/Befehlshoheiten statt Boolschen Merkern eine Zahl zuweist.

    z.B. 1 = Automatik 2 = Hand 3 = Uhr etc. Das vereinfacht das Manipulieren der Zustände erheblich und lässt sich viel einfacher erweitern sowie durch Fifos, Trends etc. jagen.

    mfG René

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

    du musst einen zusätzlichen Anforderungsspeicher einführen.
    wird aus diesem Anforderungsspeicher nicht quittiert und übernommen gilt weiterhin die bereits aktivierte Variante.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #6
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.636
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Kleines Beispiel wie ich sowas ähnliches handhabe.

    #BefehlVonLS befiehlt mir welche Untergeordnete Betriebsart ich zu nutzen habe.
    Wenn ich jetzt einen Brand habe. Soll die echte Betriebsart die Untergeordnete Betriebsart überschreiben. Und bei wegfall soll die vorherige Betriebsart wieder kommen.

    Code:
    CASE #BefehlVonLS OF
      1:  #BetriebsartIntern := 1; // Auto
          #BefehlVonLS := 0;
      2:  #BetriebsartIntern := 2; // Hand
          #BefehlVonLS := 0;      
      3:  #BetriebsartIntern := 3; // Uhr
          #BefehlVonLS := 0;      
    END_CASE;
    
    
    IF #Brand THEN // Brandbetrieb
        #BetriebsartAnLS := 4;
    ELSE
      #BetriebsartAnLS := #BetriebsartIntern;
    END_IF;
    So ähnlich kannst du das bei dir auch machen. Wenn deine Taste gedrückt wird schiebe die Betriebsart in #intern. #Betriebsartaktiv schiebst du nach BetriebsartSave. Intern wird sofort nach #Betriebsartaktiv geschrieben. solange der Timer läuft und TasteX nicht gedrückt bleibt dass so wenn Timer nicht mehr läuft schreibe BetriebsartSAVE wieder zurück nach Betriebsartaktiv.

    mfG René

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

    ein Beispiel als FC (weil ich gerade einen leeren offen hatte ... )

    Code:
    FUNCTION FC 4 : VOIDTITLE =
    VERSION : 0.1
    
    
    
    
    VAR_INPUT
      in1 : BOOL ;    
      in2 : BOOL ;    
      in3 : BOOL ;    
      quitt : BOOL ;    
    END_VAR
    VAR_IN_OUT
      actVar : INT ;    
      tempVar : INT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
    
    
    
          U     #in1; 
          SPBN  two; 
          L     1; 
          SPA   act; 
    
    
    two:  U     #in2; 
          SPBN  thre; 
          L     2; 
          SPA   act; 
    
    
    thre: U     #in3; 
          SPBN  else; 
          L     3; 
          SPA   act; 
    
    
    else: L     #actVar; 
    
    
    act:  T     #tempVar; 
    
    
          U     #quitt; 
          SPBN  end; 
          L     #tempVar; 
          T     #actVar; 
    end:  NOP   0; 
    END_FUNCTION
    Geändert von vierlagig (07.08.2014 um 09:24 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    spirit (08.08.2014)

  9. #8
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.636
    Danke
    786
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Ungetestet aber so könnte das funktionieren. Der Timer ist ein TOF.

    Code:
    CASE #BefehlVonLS OF
      1:  #BetriebsartIntern := 1; // Auto
          #BefehlVonLS := 0;
      2:  #BetriebsartIntern := 2; // Hand
          #BefehlVonLS := 0;      
      3:  #BetriebsartIntern := 3; // Uhr
          #BefehlVonLS := 0;      
    END_CASE;
    
    
    NichtBest(IN := (#BetriebsartIntern <> #BetriebsartAnLS),
                 PT := T#30S);
    
    
    
    
       IF NichtBest.Q THEN // Solange vorgewählt 
        #BetriebsartSave := #BetriebsartAnLS; // Betriebsart sichern
        #BetriebsartAnLS := #BetriebsartIntern; // Neue Betriebsart vorübergehend setzen.
       END_IF;
       
       IF NichtBest.Q AND #TasteX THEN
           #BetriebsartSave := #BetriebsartIntern; // Wenn wärend Zeitraums Taste gedrückt Save mit Vorwahl überschreiben
       ELSE
           #BetriebsartAnLS := #BetriebsartSave; // Wenn nicht bestätigt innerhalb Zeitraum Save überschreibt vorwahl und aktiven zustand
         #BetriebsartIntern := #BetriebsartSave;
       END_IF;

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

    Vielen Dank für eure Beispiele - aber ich komme irgendwie nicht voran; zudem hat sich auch noch eine Aufgabenänderung ergeben ...

    Ich habe jetzt mal den Code so aufgebaut, dass die Schaltflächen über Zahlen angesprochen werden:

    Code:
     
          U     "OP_Var(1)"
          SPBN  Var2
          L     1
          SPA   Anz
    
    Var2: U     "OP_Var(2)"
          SPBN  Var3
          L     2
          SPA   Anz
    
    Var3: U     "OP_Var(3)"
          SPBN  Var4
          L     3
          SPA   Anz
    
    Var4: U     "OP_Var(4)"
          SPBN  Var5
          L     4
          SPA   Anz
    
    Var5: U     "OP_Var(5)"
          SPBN  Ende
          L     5
    
    Anz:  T     "DB_System".AgzVar
    
    Ende: NOP   0
    Je nachdem welche Schaltfläche angewählt wurde, blinkt diese animiert.

    Soweit, so gut!


    ABER:

    Nun soll im ersten Schritt nach Anwahl einer anderen Variante über einer Schaltfläche "Abbruch" diese Wahl rückgängig gemacht werden können; also ich müsste mir sozusagen merken, welche Variante ursprünglich angewählt war.

    Könnte das in obigen Code integriert werden?


    Lieben Dank ...
    LG
    spirit

  11. #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 spirit Beitrag anzeigen
    Könnte das in obigen Code integriert werden?
    nu gloar!

    ...bei Wechsel, schreibe vorhergehende Betriebsart in einen Speicher, bei Abbruch lade diesen gespeicherten Wert.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 23.06.2014, 21:14
  2. Antworten: 0
    Letzter Beitrag: 19.06.2014, 12:15
  3. WebVisu auf Wago optimale Einstellung?
    Von mickey23 im Forum WAGO
    Antworten: 0
    Letzter Beitrag: 07.02.2014, 10:10
  4. Diagnose eines Bausteines auf der CPU, alte Syntax
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 26.10.2010, 23:51
  5. Antworten: 19
    Letzter Beitrag: 08.08.2008, 10:40

Lesezeichen

Berechtigungen

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