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

Ergebnis 1 bis 10 von 10

Thema: Mit einem Taster zwei zwei eindeutige Befehle erzeugen? In SCL

  1. #1
    Registriert seit
    11.12.2007
    Beiträge
    32
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!
    Hat jemand eine Idee, wie man mit einem Taster zwei eindeutige Befehle generiert? z.B.
    - einmal Mal kurz drücken und loslassen => Schütz soll anziehen

    - einmal lang drücken (z.B. >3s) und loslassen => Schütz soll abfallen

    Wie könnte man das in SCL programmieren? Hat da einer eine Idee? Irgendwie mit einen Timer >3s , einer fallenden und einer steigenden Flanke konnte das doch gehen oder? Aber wie mach ich das mit SCL?

    Oder macht man das einfach nur einen Binäruntersetzer oder einem D-Flip Flop der/das bei jedem Tasten einmal umschaltet? Damit kann man aber nicht eindeutig EIN/AUS schalten.
    Es wäre nicht schlecht wenn jemand eine Idee hätte und wie man das in SCL programmieren könnte, vor allem das mit dem Timer in SCL.
    Danke!

    Gruß
    Hans
    Zitieren Zitieren Mit einem Taster zwei zwei eindeutige Befehle erzeugen? In SCL  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    eine Einschaltverzögerung in SCL heißt z.B. "S_ODT".
    Schau dir das mal in der SCL-Hilfe an. Dort gibt es dann auch noch die ganzen anderen Verwandeten, die du auch schon vom Step7 kennst ...

  3. #3
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Oder über die Systemfunktionen z.B.

    Code:
    FUNCTION_BLOCK FB10
    
    VAR_INPUT
      Taste : BOOL;
    END_VAR
    VAR_IN_OUT
      Ausgang : BOOL;
    END_VAR
    VAR
      HM : BOOL;       // Hilfsmerker
      IM : BOOL;       // Impuls
      T_1 : TON;       // Timer TON
    END_VAR
    
    
      T_1(IN:= Taste, PT:= T#3s);
      
      IM := Taste AND NOT HM;
      HM := Taste;
    
      IF IM AND NOT Ausgang THEN
        Ausgang := TRUE;
      ELSIF T_1.Q AND Ausgang THEN
        Ausgang := FALSE;
      END_IF;  
    
    END_FUNCTION_BLOCK
    MfG
    Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  4. #4
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    Hallo!

    Warum willst du das über eine Zeit lösen und nicht gleich direkt Ein und Ausschalten?

    Dein Stichwort ist Stromstoßschalter!
    Suche im Forum da findest du genug Beispiele in AWL dazu die du leicht in SCL umsetzen kannst!

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Zitat Zitat von godi Beitrag anzeigen
    Hallo!

    Warum willst du das über eine Zeit lösen und nicht gleich direkt Ein und Ausschalten?

    Dein Stichwort ist Stromstoßschalter!
    Suche im Forum da findest du genug Beispiele in AWL dazu die du leicht in SCL umsetzen kannst!
    @Godi:
    Ich denke, dass kommt aus der Bustechnik für Haus-Installation (EIB oder LCN). Dort werden Funktionen über "kurze" und "lange" Tasten-Betätigungen ausgelösst ...

  6. #6
    hans55 ist offline Benutzer
    Themenstarter
    Registriert seit
    11.12.2007
    Beiträge
    32
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Erst mal Danke!
    An das "Stromstoßrelais" habe ich auch schon gedacht. Das müsste meine ich mit einem D-FF und einer Rückkopplung funktionieren.
    Ich würde aber gerne noch eine Schütz- Rückmeldung mit einbauen. z.B. sollte das Schütz nur anziehen, wenns vorher auch richtig abgefallen und nur abfallen, wenns vorher richtig angezogen hat. Da das Schütz z.B. mehrere Ventile ansteuert müsste man meine ich die alle abfragen können.
    Einfach nur so.
    Eine konkrete Aufgabe habe ich nicht, ich stell mir nur vor was ich evtl. brauchen könnte und daran bastle ich halt rum um SCL zu lernen. Denn nur in dicken PDF-Files lesen bringt glaube ich nix.
    Das Beispiel vom Daniel muss ich mir erst mal genauer ansehen, ich versteh noch gar nix. Hier muß ich erst mal etwas lesen.
    Dass man den Timer auch vom System aufrufen kann, wusste ich nicht.

    TRUE/FALSE:
    Kann mir bitte jemand sagen, wann ich FALSE / TRUE und wann ich 0/1
    verwenden muß? Irgendwie ist mir der Unterschied nicht klar. FALSE ist doch eine 0 und TRUE eine 1. Oder kann ich das eine oder das andere z.B. bei Abfragen verwenden? Das gabs früher bei der S5 nicht, wenn ich mich recht erinnern kann.
    Danke nochmal.
    Gruß
    Hans

  7. #7
    Registriert seit
    30.06.2007
    Ort
    In der Pfalz
    Beiträge
    503
    Danke
    72
    Erhielt 77 Danke für 65 Beiträge

    Standard

    Zitat Zitat von hans55 Beitrag anzeigen
    Erst mal Danke!
    TRUE/FALSE:
    Kann mir bitte jemand sagen, wann ich FALSE / TRUE und wann ich 0/1
    verwenden muß? Irgendwie ist mir der Unterschied nicht klar. FALSE ist doch eine 0 und TRUE eine 1. Oder kann ich das eine oder das andere z.B. bei Abfragen verwenden? Das gabs früher bei der S5 nicht, wenn ich mich recht erinnern kann.
    Danke nochmal.
    Gruß
    Hans
    Also das bei Boolschen Variablen TRUE einer logischen 1 uns FALSE einer logischen 0 entspricht ist richtig. Der Unterschied ist eigentlich nur der, dass man im Quelltext bei der Zuweisung von TRUE oder FALSE sofort erkennt, dass die Variable vom Typ BOOL ist. Bei der Zuweisung von 0 und 1 könnte die Variable z.B. auch vom Typ INT.
    Bei der Funktion der Zuweisung macht es keinen Unterschied.

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo Hans,
    SCL ist eine PASCAL-ähnliche Variante. Es macht eigentlich nur Sinn dieses dort einzusetzten, wo man Code-technisch Vorteile gegenüber der Step7-Programmierung hat. Das ist bei einer Timer-Schaltung oder einem D-Flip-Flop sicher nicht der Fall. Bei einer Schleifen-Bearbeitung oder bei String-Manipulationen schon.

    Aufgrund des angedachten PASCAL-Hintergrundes möchte die Variablen bei Zuweisung gerne Typ-gerecht bedient werden.
    Das heißt :
    Variablen vom Typ BOOL mit TRUE oder FALSE (wahr oder unwahr). "0" und "1" funktioniert hier interessanterweise aber auch.
    Variablen vom Typ INT oder DINT mit Ganzzahlen.
    Varaiblen vom Typ REAL mit Kommazahlen. "Var_REAL := 1 ;" funktioniert dort nicht. Da müßtest du dann schreiben "Var_REAL := 1.0 ;"
    Bei Variablen vom Typ WORD oder BYTE ist es auch zum Teil so, dass du die Zuweisung dort im Hex-Code machen mußt "Var_WORD := w#16#FF" bzw. "Var_BYTE := b#16#F" bzw. "Var_DWORD := dw#16#FF".

    u.v.m.

    Gruß
    LL

  9. #9
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Ergänzend zu der Ausführung von Larry Laffers das ST/SCL von Pascal die strenge Typtrennung geerbt haben. Ist noch zu erwähnen das man aber viele Typecasting Funktionen zur Verfügung hat so kann man den Wert einer Variable in einem anderen Datentypformat darstellen.

    myREAL := INT_TO_REAL(myINT); (* weist der Variablen myReal den Wert von der myINT Variable zu der eigentlich nicht passt*)

    Und was nicht passt wird nach Möglichkeit passend gemacht:
    myINT := REAL_TO_INT(myREAL); (* Die Kommastellen werden hier weggerundet *)
    ____

    Kleine Übungen sind gut geeignet um sich mit SCL vertraut zu machen. Schön finde ich auch das D. Albinus die Verwendung von einem TON gezeigt hat. Dieses Beispiel mit dem Aufruf eines FBs und der Verwendung der Schnittstellen Variablen (in dem Fall war es z.B. T_1.Q) ist häufig anzutreffen.
    Um die Vorteile von SCL zusehen braucht es keine großen Aufgaben aber spätestens wenn die Pointerwut in AWL ausbricht sollte man lieber zu SCL greifen.
    If you open your Mind too much, your Brain will fall out.

  10. #10
    hans55 ist offline Benutzer
    Themenstarter
    Registriert seit
    11.12.2007
    Beiträge
    32
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke an alle für die ausführlichen Antworten!
    Gruß
    Hans

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 16.08.2011, 16:31
  2. SCL zwei INT aus einem STRING
    Von Uli_87 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.02.2009, 10:33
  3. zwei CPU's auf einem Rack
    Von captainchaos666 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 26.06.2008, 10:48
  4. mit einem Taster zwei Zustände
    Von express im Forum Programmierstrategien
    Antworten: 18
    Letzter Beitrag: 23.04.2008, 16:42

Lesezeichen

Berechtigungen

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