CODESYS - das IEC 61131-3 Programmiersystem

Willkommen im offiziellen CODESYS - Forum von 3S-Smart Software Solutions | A member of the CODESYS Group
Deutsche Version English version russian version 
Aktuelle Zeit: Mo Sep 16, 2019 6:42 am

Alle Zeiten sind UTC




Ein neues Thema erstellen  Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Schrittschalter
BeitragVerfasst: Mi Nov 12, 2008 3:53 pm 
Offline

Registriert: Mi Nov 05, 2008 8:05 pm
Beiträge: 3
Hallo

Ich bin neu hier, Anfänger mit codesys, aber fasziniert vom programmieren.
Könnte mir jemand klären wie ich ein Schrittschalter in ST programmieren kann.
Im Voraus besten dank.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 12, 2008 5:46 pm 
Offline

Registriert: Mo Apr 03, 2006 7:43 am
Beiträge: 74
Hallo,
eine - hoffentlich brauchbare - "Kochbuchanleitung" für dieses Thema findest Du unter http://www.geisler-controls.de/Downloads/downloads.html#Zustandsgraphen. Ein bisschen Freeware ist auch dabei.
Gruss Rolf


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 12, 2008 5:49 pm 
Offline
Häufiger Nutzer
Häufiger Nutzer
Benutzeravatar

Registriert: Do Apr 07, 2005 1:22 pm
Beiträge: 198
Wohnort: Bei Ulm
Moin

Was ist denn ein Schrittschalter ?

Gruss Erik

_________________
Wer Rechtschreibfehler findet darf sie behalten...


Nach oben
   
 Betreff des Beitrags: Schrittschalter
BeitragVerfasst: Mi Nov 12, 2008 6:13 pm 
Offline

Registriert: Di Jan 17, 2006 6:20 pm
Beiträge: 0
Hallo

Mit einen FB, kannst DU mal das hier versuchen:

(*Deklarationsteil:*)

FUNCTION_BLOCK Schrittschalter
VAR_INPUT
ENABLE:BOOL;
CLOCK:BOOL;
END_VAR
VAR_OUTPUT
OUT_1:BOOL;
OUT_2:BOOL;
OUT_3:BOOL;
OUT_4:BOOL;
(*etc.*)
END_VAR
VAR
FLANKE:BOOL;
COUNT:INT := 0;
END_VAR

(*Codeteil:*)

(*Schrittschalter Eingang Clock ist Flankengetriggert*)

(*Zähler*)
IF (CLOCK = TRUE AND FLANKE = FALSE) THEN (*Steigende Flanke an Clock erkennen*)
COUNT := COUNT + 1;
IF COUNT > 4 THEN (*Wenn Zählerstand grösser als höchster Ausgang*)
COUNT := 0; (*Zähler auf null setzen*)
END_IF
END_IF
FLANKE := CLOCK; (*Flankenmerker zurücksetzen*)
(*Alle Ausgänge zurücksetzen*)
OUT_1 := FALSE;
OUT_2 := FALSE;
OUT_3 := FALSE;
OUT_4 := FALSE;
(*etc.*)
(*Je nach Zählerstand, den entsprechenden Ausgang auf TRUE setzen*)
CASE COUNT
OF
1: OUT_1 := TRUE;
2: OUT_2 := TRUE;
3: OUT_3 := TRUE;
4: OUT_4 := TRUE;
(*etc.*)
ELSE
(*Bei nicht Irrelevanten Werten von COUNT (z.B. COUNT := 0), alle Ausgänge zurücksetzen*)
OUT_1 := FALSE;
OUT_2 := FALSE;
OUT_3 := FALSE;
OUT_4 := FALSE;
(*etc.*)
END_CASE;

Habs nicht getestet! Sollte aber so funktionieren.
Viel Spass beim Ausprobieren! :wink:

Mit freundlichen Grüssen! Pitsch


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 12, 2008 10:14 pm 
Offline

Registriert: Mi Nov 05, 2008 8:05 pm
Beiträge: 3
vielen dank für ihre hilfe, ich werde das morgen ausprobieren


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 13, 2008 8:24 am 
Offline

Registriert: Mi Nov 05, 2008 8:05 pm
Beiträge: 3
Hallo Pitsch,

vielen Dank für ihre Antwort. Jetzt habe ich noch eine Frage?
Ich habe mehrere tasten die ein Motor oder licht ein und ausschalten können, sollte diese Funktion über Schrittschaltung programmiert werden, oder gibt es eine andere Lösung.

Mit freundlichen grüße.
Lolo68


Nach oben
   
 Betreff des Beitrags: Schrittschalter
BeitragVerfasst: Do Nov 13, 2008 5:48 pm 
Offline

Registriert: Di Jan 17, 2006 6:20 pm
Beiträge: 0
Hallo

Also wenn Du einen Ausgang (der z.B. Eine Lampe über einen Impulsschalter ein- und ausschaltet) alternierend steuern willst, könntest Du es mal so, mit einem FB probieren.

(*Deklarationsteil*)
FUNCTION_BLOCK Alternate
VAR_INPUT
CLOCK:BOOL;
END_VAR
VAR_OUTPUT
OUT:BOOL;
END_VAR
VAR
FLANKE:BOOL;
END_VAR

(*Codeteil*)
(*Baustein schaltet den Ausgang bei einer steigenden Flanke an CLOCK, alternierend Ein oder Aus*)

IF (CLOCK = TRUE AND FLANKE = FALSE) THEN (*Steigende Flanke an CLOCK erkennen*)
OUT := NOT OUT; (*Ausgang invertieren*)
END_IF
FLANKE := CLOCK; (*Flankenmerker zurücksetzen*)

Ungetestet! Sollte aber funktionieren.

Mit freundlichen Grüssen! Pitsch


Nach oben
   
 Betreff des Beitrags: Re: Schrittschalter
BeitragVerfasst: Fr Dez 27, 2013 12:28 pm 
Offline

Registriert: Mi Okt 06, 2010 7:22 am
Beiträge: 3
Hallo Gemeinde

Habe zu Schrittschaltung eine geniale Lösung gefunden.

U E 1.0
UN M 1.0
S A 1.0

U E 1.0
U M 1.0
R A 1.0

UN E 1.0
U A 1.0
S M 1.0

UN E 1.0
UN A 1.0
R M 1.0

Diese Lösung braucht keine Flankenauswertung und kein Entpellen.
Sie ist sehr gut nachvollziehbar und auch in FUP oder KOP gut zu realisieren.
Sie stammt aus dem SPS Forum und ursprünglich aus dem Buch Automatisieren mit S5-115U.
Diese Funktion nennt sich auch Binärutersetzer oder auch Frequenzteiler.
Wenn mehrere Schalter dazugeschaltet werden einfach ein Oder vor E 0.1 gesetzt.

Gruss und viel Erfolg
Kaspar


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de