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

Ergebnis 1 bis 3 von 3

Thema: Ablauf in CodeSys funktioniert nicht....

  1. #1
    Registriert seit
    14.05.2007
    Ort
    M nähe Sbg in AUT
    Beiträge
    159
    Danke
    35
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Abend.

    Bin gerade dabei in CodeSys mit AWL meine ersten größeren Schritte zu tun und würde mir gerne einen Ablauf zur Steuerung meiner Rollläden schnitzen.

    Dazu gibt es die Bits E_up und E_down mit welchen der Ablauf entsprechend angesteuert wird und A_up und A_down, mit welchen ich die Ansteuerung der Jalousie übernehme.

    Vorgestellt hätte ich mir den Ablauf so:

    Taste <2Sek. drücken, Motor setzt sich kurz (für die Dauer des Tastendrucks) in Bewegung;
    Taste >2Sek. drücken, Motor bewegt sich für 30Sek. jeweils nach oben oder unten; Ist diese Bewegung aktiv, so kann diese anhand einer neuerlichen Betätigung einer der beiden E_up oder E_down gestopt werden.
    So weit so gut, bis hier her funktioniert das Ganze mal.
    Nur ist der Motor in Bewegung und ich drücke die entgegengesetzte Ansteuerung, so setzt sich dieser nach 500ms sofort wieder in diese Richtung in Bewegung, was ja eigentlich erst bei einem neuerlichen Tastendruck passieren sollte.

    Später kommt noch eine Gruppensteuerung hinzu (Taste binnen 1 Sek. 2x drücken und alle Rollläden der Gruppe schliessen oder öffnen sich), aber dies nehme ich erst in Angriff, wenn auch der restliche Ablauf 100%ig passt.

    Muss leider zugeben, dass ich seitens S7 etwas zu sehr verwöhnt bin um meinen Fehler hier selbst zu entdecken.

    Code:
    VAR
     TON_E_up:TON;
     TON_E_down: TON;
     TON_A_up:TON;
     TON_A_down: TON;
     TOF_A_up: TOF;
     TOF_A_down: TOF;
     FP_TON_up: R_TRIG;
     FP_TON_down: R_TRIG;
     FP_E_up: R_TRIG;
     FP_E_down: R_TRIG;
     FN_E_up: F_TRIG;
     FN_E_down: F_TRIG;
     active: BOOL;
     enable_up:BOOL;
     enable_down:BOOL;
    END_VAR
    VAR_INPUT
     E_up:BOOL;
     E_down:BOOL;
     delay_signal: TIME;
     delay_move:TIME;
    END_VAR
    VAR_OUTPUT
     A_up:BOOL;
     A_down:BOOL;
    END_VAR
     
     
     (*define inputs, create triggers*)
     CAL  FP_E_up(CLK:= E_up)
     CAL  FN_E_up(CLK:= E_up)
     CAL  FP_E_down(CLK:= E_down)
     CAL  FN_E_down(CLK:= E_down)
     
     (*handling input to move shutter upwards*)
     LD  E_up
     ST  enable_up
     CAL  TON_E_up(in:= enable_up, PT:= delay_signal)
     CAL  FP_TON_up(CLK:= TON_E_up.Q)
     LD  FP_TON_up.Q
     JMPCN no_delay_up
     LD  delay_move
     ST  TOF_A_up.PT
    no_delay_up:
     CAL  TOF_A_up(in:= FP_TON_up.Q)
     
     (*handling input to move shutter downwards*)
     LD  E_down
     ST  enable_down
     CAL  TON_E_down(in:= enable_down, PT:= delay_signal)
     CAL  FP_TON_down(CLK:= TON_E_down.Q)
     LD  FP_TON_down.Q
     JMPCN no_delay_down
     LD  delay_move
     ST  TOF_A_down.PT
    no_delay_down:
     CAL  TOF_A_down(in:= FP_TON_down.Q)
     
     (*stop shutters movement*)
     LD  FP_E_up.Q
     OR  FP_E_down.Q
     JMPCN no_stop
     LD  t#0s
     ST  TOF_A_up.PT
     ST  TOF_A_down.PT
    no_stop:
     
     (*move shutter up/down*)
     CAL  TON_A_up(PT:=T#500ms)
     CAL  TON_A_down(PT:=T#500ms)
     LDN  A_down
     AND  ( enable_up
     OR  TOF_A_up.Q
     )
     ST  TON_A_up.IN
     LDN  A_up
     AND  ( enable_down
     OR  TOF_A_down.Q
     )
     ST  TON_A_down.IN
     LD  TON_A_up.Q
     ST  A_up
     LD  TON_A_down.Q
     ST  A_down

    Danke!

    Andreas


    P.S.: wo gibt's Infos zu AWL in CodeSys (ausgenommen die Hilfedatei) um sich etwas besser einzuarbeiten?
    >> Gefährlich wird es für Andere erst dann, wenn die Dummen fleißig werden! <<
    Zitieren Zitieren Ablauf in CodeSys funktioniert nicht....  

  2. #2
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Lächeln

    Wenn man ein neues System kennenlernt, sollte man sich auch überlegen, ob es nicht sinnvoll ist, jetzt von der veralteten AWL loszukommen.

    Ich würde hier raten, das modernere ST zu verwenden. So wie angedeutet (Rolladen) besteht ja kein Risiko, mit einer neuen Umgebung grösseren Schaden anzurichten. Also Mut und mal was Neues wagen, es lohnt sich bestimmt. Die Sache wird mit ST übersichtlicher und, wenn man es erst einmal drauf hat, auch prinzipiell im Betrieb sicherer.

    Als Einführung und Anleitung: SPS Programmierung nach IEC 61131-3 aus dem Franzis Verlag
    Als Freelancer immer auf der Suche nach interessanten Projekten.
    Zitieren Zitieren St  

  3. #3
    Registriert seit
    25.07.2007
    Beiträge
    79
    Danke
    2
    Erhielt 12 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Andy082 Beitrag anzeigen
    Nur ist der Motor in Bewegung und ich drücke die entgegengesetzte Ansteuerung, so setzt sich dieser nach 500ms sofort wieder in diese Richtung in Bewegung, was ja eigentlich erst bei einem neuerlichen Tastendruck passieren sollte.
    Nachfolgend habe ich in deinem Code mal farbig gekennzeichnet warum das so ist.

    Code:
     
     (*handling input to move shutter downwards*)
     LD  E_down      (* Hier speicherst Du den Eingang *)
     ST  enable_down
     CAL  TON_E_down(in:= enable_down, PT:= delay_signal)
     CAL  FP_TON_down(CLK:= TON_E_down.Q)
     LD  FP_TON_down.Q
     JMPCN no_delay_down
     LD  delay_move
     ST  TOF_A_down.PT
    no_delay_down:
     CAL  TOF_A_down(in:= FP_TON_down.Q)
     
     (*stop shutters movement*)
     LD  FP_E_up.Q
     OR  FP_E_down.Q
     JMPCN no_stop
     LD  t#0s
     ST  TOF_A_up.PT   (* Hier stoppst Du den Motor quasi *)
     ST  TOF_A_down.PT
    no_stop:
     
     (*move shutter up/down*)
     CAL  TON_A_up(PT:=T#500ms)
     CAL  TON_A_down(PT:=T#500ms)
     LDN  A_down     (* Da der TOF oben gelöscht wurde, wird unmittelbar darauf der Ausgang rückgesetzt *)
     AND  ( enable_up     (* D.h. wenn der Eingang betätigt ist .... *)
     OR  TOF_A_up.Q
     )
     ST  TON_A_up.IN     (* Startest Du den TON *)
     LDN  A_up
     AND  ( enable_down
     OR  TOF_A_down.Q
     )
     ST  TON_A_down.IN
     LD  TON_A_up.Q
     ST  A_up      (* Wenn die 500ms abgelaufen sind fährt der Motor (wieder) wenn die Taste (z.B. zum Stoppen) länger als 500ms betätigt wurde *) 
     LD  TON_A_down.Q
     ST  A_down
    Ich hoffe es ist einigermaßen verständlich.


    Allerdings würde ich Dir auch raten, Dir den Strukturierten Text anzusehen. Es ist nicht so schwierig zu lernen und wesentlich übersichtlicher als AWL.

  4. Folgender Benutzer sagt Danke zu ybbs für den nützlichen Beitrag:

    Andy082 (08.04.2010)

Ähnliche Themen

  1. MID-FC in SCL funktioniert nicht
    Von nobby_nobbs im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 19.03.2009, 02:14
  2. PLC Sim funktioniert nicht mehr
    Von ChristophW im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 19.02.2009, 15:34
  3. MMC funktioniert nicht
    Von MesSen-Nord im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.10.2008, 11:06
  4. Funktion RS funktioniert nicht!!!!!
    Von Pinguino im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 26.10.2007, 10:44
  5. TD 200 C funktioniert nicht
    Von -Andrea- im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.04.2005, 20:41

Lesezeichen

Berechtigungen

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