1 Taster -> 2 Ausgänge

Kayle

Level-1
Beiträge
161
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich stehe gerade auf dem Schlauch. Ich habe einen Taster und möchte in Codesys damit abewechselnd 2 Ausgänge schalten. Also Taster gedrückt = Ausgang 1 an. Wenn Taster nochmal gedrückt soll Ausgang 1 aus und Ausgang 2 an usw. Ich komme aber grad echt nicht dahinter wie ich das in CFC lösen kann. Kann mir jemand bitte kurz auf die Sprünge helfen ?

Danke
Gruß Kay
 
Zuletzt bearbeitet:
Stromstoßschalter hat 1 Eingang, 1 Ausgang. Ich brauche 1 Eingang, 2 Ausgänge
Wie wärs mit einem einfachen Konstrukt ala "Ausgang2 := NOT Ausgang1"?

Also Taster gedrückt = Ausgang 1 an. Wenn Taster nochmal gedrückt soll Ausgang 1 aus und Ausgang 2 an usw.
Was soll nach dem "usw." kommen?

Auf unvollständige Fragen gibt es gewöhnlich unvollständige Antworten :cool:

Harald
 
> Was soll nach dem "usw." kommen?

das Orakel sagt: Beide Ausgänge aus.
(diese Information ist von 1986, Delphi,Gr.)
*ROFL*
 
Viele Wege führen nach Rom. Zähler, State Machine oder Flankenerkennung. Für letzteres ein FB in ST.

FUNCTION_BLOCK TriggerOutputs
VAR_INPUT
xIN: BOOL;​
END_VAR
VAR_OUTPUT
xQ1: BOOL;
xQ2: BOOL;
END_VAR
VAR
fbRTIn: R_TRIG;
fbFTQ2: F_TRIG;
END_VAR
----------------------------------

fbRTIn(CLK:=xIN);
IF fbRTIn.Q THEN
(* wechsel zwischen Ausgängen bei pos. Flanke des Eingangs *)
xQ2 := xQ1 AND NOT xQ2;
xQ1 := NOT xQ1 AND NOT xQ2;

(* bei Ausgänge aus, wenn zuvor Q2 aktiv *)
fbFTQ2(CLK:=xQ2);
IF fbFTQ2.Q THEN​
xQ1:=FALSE;
END_IF
END_IF
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie wärs mit einem einfachen Konstrukt ala "Ausgang2 := NOT Ausgang1"?


Was soll nach dem "usw." kommen?

Auf unvollständige Fragen gibt es gewöhnlich unvollständige Antworten :cool:

Harald
Das klingt gut. Werde ich probieren. Danke


Gesendet von meinem Elephone P8000 mit Tapatalk
 
nach Ausgang 1 aus, Ausgang 2 an soll dann beide Ausgänge aus sein.

Wie wärs mit einem einfachen Konstrukt ala "Ausgang2 := NOT Ausgang1"?


Was soll nach dem "usw." kommen?

Auf unvollständige Fragen gibt es gewöhnlich unvollständige Antworten :cool:

Harald
Das klingt gut. Werde ich probieren.
Das klingt nicht gut, brauchst Du garnicht erst probieren, weil in Deiner Aufgabenstellung zum Schluß "Ausgang1 = Ausgang2 = 0" sein soll. Also nix mit "Ausgang2 := NOT Ausgang1"

Harald
 
Den Code von KLM kann man noch vereinfachen:
Code:
[COLOR=#333333]FUNCTION_BLOCK TriggerOutputs
[/COLOR]
[COLOR=#333333]VAR_INPUT
[/COLOR][COLOR=#333333]  xIN: BOOL;[/COLOR]
[COLOR=#333333]END_VAR
[/COLOR]
[COLOR=#333333]VAR_OUTPUT
[/COLOR][COLOR=#333333]  xQ1: BOOL;
  xQ2: BOOL;[/COLOR]
[COLOR=#333333]END_VAR
[/COLOR]
[COLOR=#333333]VAR
[/COLOR][COLOR=#333333]  fbRTIn: R_TRIG;
[/COLOR][COLOR=#333333]END_VAR[/COLOR]


  [COLOR=#333333]fbRTIn(CLK:=xIN);
[/COLOR]  xQ1 := [COLOR=#3E3E3E]fbRTIn.Q AND NOT xQ2 XOR xQ1;[/COLOR]
  xQ2 := [COLOR=#3E3E3E]fbRTIn.Q AND NOT xQ1 XOR xQ2;
[/COLOR]

END_FUNCTION_BLOCK

PS: Wie man sieht, war da das Stichwort "Stromstoßschalter" von holgermaik nicht verkehrt. Sind einfach 2 Stück davon mit gegenseitiger Abfrage.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Den Code von KLM kann man noch vereinfachen
Ich würde es ebenfalls nicht so umständlich machen und hätte es mit ST spontan so formuliert:
Code:
FUNCTION_BLOCK TriggerOutputs
VAR_INPUT
  xIN: BOOL;
END_VAR
VAR_IN_OUT
  xQ1: BOOL;
  xQ2: BOOL;
END_VAR
VAR
  fbRTIn: R_TRIG;
  xM2 : BOOL;
END_VAR

  fbRTIn(CLK:=xIN);
  IF fbRTIn.Q THEN
    (* bei pos. Flanken des Eingangs eine 1 durch die Ausgänge schieben *)
    xM2 := xQ2;
    xQ2 := xQ1;
    xQ1 := NOT xQ1 AND NOT xM2;
  END_IF
END_FUNCTION_BLOCK

Der Code von hucki hat noch den Vorteil, daß er sich leicht in das eigentlich gewünschte CFC umformen läßt.

So ein Code wie der von KLM ist eigentlich typisch für die "Hochsprachenprogrammierung": ohne große Vorüberlegungen schnell lostippen und beim Test festgestellte Logik-Bugs einfach durch zusätzliche Spezial-Behandlungen korrigieren statt zu beseitigen. IF...THEN kosten ja (theoretisch) nichts.

Und Mehrfachzuweisungen an Ausgänge sowie Ausgänge rücklesen sind in Multitasking-Anwendungen nicht gerade "saubere" Lösungen. Da reicht schon, daß die Visu jederzeit auf Variablen zugreifen kann und schon werden die Visu-Anzeigen "unmotiviert" flackern.

Harald
 
Guten Morgen und vielen Danke für Eure Hilfe. Mit dem Taster will ich einen Motor, besser gesagt die Relais davor umpolen. Ich werde Eure Vorschläge gleich ausprobieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Den Vorschlag von egro kann man noch etwas vereinfachen. Das Set und Reset kann weggelassen werden, denn sobald die Bedingung (z.B. EQ 1) nicht mehr erfüllt ist geht der Ausgang automatisch auf FALSE, somit kann das dritte EQ ganz wegfallen.

Von irgendwas mit Internetzugang gesendet.
 
@Oliver.tonn:
Da hast du vollkommen recht.

...war aber auch schon spät!!!

PS: Unbedingt darauf achten, dass du eine Pause zwischen dem Umschalten einprogrammierst!
Einen Motor direkt von einer Drehrichtung auf die Andere umschalten kann in die Hose gehen...
 
Zuletzt bearbeitet:
das CFC
@Oliver.tonn + Kayle

auf welchem Wert (0..3) steht der Zähler nach Netz aus/ein ? (remanez)
(ggf. einen Reset mit erstlauf-bit-nach-netzein)
Sonst geht viell. der Ausgang gleich an, nach netztein.
 
das CFC
@Oliver.tonn + Kayle

auf welchem Wert (0..3) steht der Zähler nach Netz aus/ein ? (remanez)
(ggf. einen Reset mit erstlauf-bit-nach-netzein)
Sonst geht viell. der Ausgang gleich an, nach netztein.
Moin,

wäre nicht dramatisch wenn nach Netz ein der Motor anläuft. Es handelt sich bei dem Motor um eine 8v Lüfterklappe. Aber ich werde das mal simulieren. Danke für den Hinweis.

Gruß Kay

Gesendet von meinem Elephone P8000 mit Tapatalk
 
Zurück
Oben