# Rechts- Linkslauf programieren



## mercury (15 Dezember 2006)

Hallo zusammen

Ich mache die ersten Schritte beim SPS programieren und sollte eine Steuerung für einen Lift schreiben. Mein grösstes problem ist der rechts linkslauf des motors. Ich glaube hierfür sollte es doch einen baustein dazu geben. Wir haben in der schule eine Siemens S7 zur verfügung. Könnte mir jemand einen Tipp geben. Nach welchem Baustein muss ich suchen?
Danke schon im Voraus!

Gruss mercury


----------



## Adenauer (15 Dezember 2006)

Dafür sollte mann keinen Baustein brauchen.

Dir reicht doch ein Bit um zu entscheiden ob links oder rechtslauf sein soll.

u bit 1
un bit2
=linkslauf


ub2 
un bit1
=linkslauf


----------



## nade (15 Dezember 2006)

Adenauer schrieb:


> Dafür sollte mann keinen Baustein brauchen.
> 
> Dir reicht doch ein Bit um zu entscheiden ob links oder rechtslauf sein soll.
> 
> ...


<-- da haste wohl einen tippfuhler drimme weil entweders erste oders 2. müßt en rechtslauf werde  

Also sinngemäß ist das denk ich mal richtig, da allerdings kein SPS"Freak" sondern nur ein hgw Elektroinst ist da dann ehr die Frage wie oft würdest du den "fertigen" Baustein in deinem Programm benötigen?
Für 1 einzige verwendung würde ich sagen ein SR mit den Einschaltbedingungen auf Setzen und alle Ausschaltbedingunge auf Rücksetzen. Allerdings nicht vergessen eine Verriegelung gegeneinander zu realisieren, weil ich glaub 2 Schütze gleichzeitig für Rechts und Linkslauf kommt nicht gut. 
Ist in FUP ein paar logische Verknüpfungen zusammenfügen oder in AWL ein paar Zeilen schreiben.


----------



## Adenauer (15 Dezember 2006)

Oh da hast du wohl recht!

Aber nach 14 STD wer wills da einem verübeln.
Solange das morgen nicht passiert ist es schon ok.
75 kw macht sonst schon krach


----------



## Raydien (16 Dezember 2006)

tja das ist die Verantwortung eines Programmieres ... Viele vergessen dies das wir teilweise ne Menge Lasten / Kraft bewegen ..seis nur mitn Bit. Ich musste diese Woche wieder erfahren, das einer für mich ausrücken musste weil ich nen Türkontakt falsch angeklemmt habe .. (so nachm Motto das geht schon) und den auch nur halbherzig getestet habe. 
Da helfen dir keine Bausteine oder so wo du die Verantworung auf jemanden anders schieben kannst .... ausserdem des würde auch nicht funtionieren .. denn sonst würden die fragen "Sie haben doch den Baustein ausgewählt" .. 

Wenn ich mir manchmal überlege was ich schon alles programmiert habe und was da für ne Verantwortung dahinter hängt ... seis wenn man sich einfach nur vertippt hat ... wird mir schon ganz schlecht, 75 KW 150A .. hmm 400KW ist besser ;D

Naja meine Koffer sind gepackt 


Achja höre lieber nach 12h auf ... ich habe bei mir festgestellt das es eh kein sinn mehr danach macht .. da machste mehr kaputt als richtig

gruß

Ray


----------



## nade (16 Dezember 2006)

Nun ja bei den Leistungen kann man sagen...
DAs Licht ist aus ab nach Haus... und wie ein Buchhalter der in der Bilanz immer weiter ins - rutscht danns Flugticket nach Brasilien buchen und schnell weg....  :sc1: 
Tja ein Draht, eine Negierung kann schon alles vernichten... -*- gibt+ nur hier + beim Schaden der nicht hätte müssen sein.  
Aus Öffner wird Schließer und schon kann mans PG auch "schließen" unds weite suchen. *ggg*
Sarkasmuß ich weiß, allerdings Humor ist wenn man trotzdem lacht, vorrausgesetzt man kanns noch.

Elektriker stehen mit dem einen Bein im Grab und mit dem Anderen im Knast.

<-- SPS-Techniker/Ingenjeure sind auch dabei

El. Energie ist und bleibt Teufelszeug, man richts nicht, man siehts nicht, man hörts nicht. Das einzige was man mitbekommt sind die Auswirkungen die z.B. ein falsch laufender Motor, oder ein nicht funktionierender NOT-Aus zeigt.
Kleinere übel es schrottet Sicherungen...ersetzt Zeit in die Fehlersuche und gut.
NOT-Aus da schon grasser da einen vergessen zu testen und im Betrieb wird einer schwer verletzt oder gar getötet und schon heißts koffer packen....
Sorry OT


----------



## mercury (16 Dezember 2006)

Also meine Verantwortung haltet sich ziemlich in grenzen, es handelt sich eigentlich um ein Model von einem Personen Lift den wir in einem Schulprojekt bauen. Von den Lehrer bekommen wir aber fast gar keine Unterstützung in diesem bereich. Ich muss diese Funktion für zwei Motoren einsetzten. So wie ich den Tipp von Adenauer verstehe ist das nur zum entscheiden ob der Motor links oder rechts laufen soll. Mein Problem ist: wie muss ich die Ausgänge ansteuern das der Motor einmal Links und einmal Rechts dreht.


----------



## zotos (16 Dezember 2006)

Das hängt davon ab wie der Motor angeschlossen ist. Da Du im Forum Programmierstrategien schreibst bekommst Du natürlich antworten die sich auf die Softwareumsetzung und Verriegelung beziehen.

Erst mal eine Frage an Dich (Da es ein Schulprojekt ist denke ich das es Gleichstrommotoren sind):

-Ist das Model schon Fertig?
  [ ] JA?--> Wie ist es angeschlossen?
  [ ] NEIN?--> Weist Du was eine H-Brücke ist bzw. "Kreuzschaltung ist"


----------



## mercury (16 Dezember 2006)

Ja wir setzen Gleichstrommotoren ein. Der Lift steht mal auf dem Papier mit dem Vertigen fangen wir bald an. Aber Änderung en können wir noch machen. Ich weis was eine Kreuzschaltung ist. Ich habe dese Frage in dieses Forum gestellt weil ich die Hoffnung hatte das es eine Möglichkeit gibt die Ausgänge der SPS "umzupolen" oder sonst eine Lösung ohne das man eine Schaltung löten muss.


----------



## Frustrated (18 Dezember 2006)

Das einfachste - für Schule wohl ausreichend und ausreichend sicher:

Zwei Wechselkontakte. Auf die Bockpole den Motor anschließen und auf den Wechselkontakten jeweils OV und Betriebsspannung.

In Ruhestellung der beiden Wechsler liegt an beiden Motorkontakten Masse. Je nach dem, welcher Kontakt angesteuert wir, fährt der Motor rechts oder links herum. Werden beide Ausgäange angesteuert, dann bleibt der Motor stehen - die Ausgänge sind hardwaremäßig verriegelt.

Ist bestimmt nicht die Beste, aber eine einfache Lösung ohne großen Aufwand...

Natürlich sollte man passende Ausgänge an der SPS haben - sonst über 2 Relais.....


----------



## mercury (18 Dezember 2006)

Danke viel mals für eure Hilfe. ob wir die passenden Anschlüsse haben muess ich noch schauen aber Railais haben wir sicher.


----------



## KartoffeL (23 Dezember 2006)

Wie siehts aus mit ner Zeitverzögerung zwischen Rechts- und Linkslauf?
Wäre besser für den Motor.


----------



## nade (23 Dezember 2006)

KartoffeL schrieb:


> Wie siehts aus mit ner Zeitverzögerung zwischen Rechts- und Linkslauf?
> Wäre besser für den Motor.



Verkehrt ists bestimmt nicht... Eine SPS ist schneller als ein Schütz.
Wobei hier wohl 





			
				mercury schrieb:
			
		

> Also meine Verantwortung haltet sich ziemlich in grenzen, es handelt sich eigentlich um ein Model von einem Personen Lift den wir in einem Schulprojekt bauen.


Da es wohl bei einem Lift an Tür und "hoch/runter" fahren sinnigerweise verzögerungen gibt sind direktumschaltungen wohl eh nicht drin.


----------



## lefrog (24 Dezember 2006)

Hallo!

Eine kleine Anmerkung von mir 
Ich würde hierbei von den SPS Ausgängen, die ich mal als 24VDC Ausgänge annehme, jeweils auf ein Relais bzw. Schütz gehen. Mit den Relais bzw. Schützen kann dann der Motor entweder Links oder rechts geschaltet werden. Eine Verriegelung ist sicherlich notwendig.

Da es sich um einen Lift handelt - Besitzt der Antrieb eine Betriebsbremse oder wie ist der Lift gegen Absacken beim Abschalten des Motors gesichert? Diese könnte dann parallel von beiden Richtungsschützen oder über einen separaten Ausgang angesteuert werden. 

Ferner würde ich alle Verriegelungen, auch von direktem Umschalten von Rechts- auf Linkslauf, einprogrammieren - auch wenn es nicht anzunehmen ist, das dieser Zustand bei normalen Betriebsbedungungen eintreten wird. Im RealLife würde ich sogar eine hardwareseitige Verriegelung der beiden Richtungsschütze einplanen. Ich würde das sogar mit einem Umrichter lösen - Stern-Dreieck oder Direkteinschalten eines 75kW Motors - da möchte ich kein Fahrgast sein... 

So - euch allen besinnliche Feiertage!

Viele Grüße, Tobias


----------



## hugo (25 Dezember 2006)

hier ein code eines actuator up/dn oder rechts links mit allen raffinessen die man normalerweise braucht.

der FB kommt aus der freien lib www.oscat.de ist aber in der aktuellen version noch nicht enthalten, er wird in der 1.3 am 1.1. drin sein
viel spass

FUNCTION_BLOCK actuator_UD
VAR_INPUT
    UD : BOOL;
    ON : BOOL;
    TON : TIME;
    TOF : TIME;
    Manual : BOOL := 0;
    Up : BOOL;
    Dn : BOOL;
    off : BOOL := 0;
    YUP_in : BOOL;
    YDN_in : BOOL;
END_VAR

VAR_OUTPUT
    Yup : BOOL;
    Ydn : BOOL;
END_VAR
VAR
    tx : TIME;
    last : TIME;
    init: BOOL;
END_VAR

(*
version 1.0    12 Nov 2006
programmer     hugo
tested by        tobias

out_ud is a up/dn or Right/left locked output driver.
if can be controlled by automatic inputs UD and ON as well as manual inputs for up and dn.
a security input to shut off at any time is prvided by the off input.
to time set inputs ton and toff specify a minimum on time for outputs and a minimum off time befoore the next output can become active.
the module assures that only one output can be active at any time.
for higher security pls make sure you use hardware locking of the outputs to prevent from defective wiring or outputs.
further security is provided b feedback inputs Yup_in and Ydn_in which are separate inputs for the output signal, if these inputs are not available 
pls connect them directly to Yup and Ydn.

*)




tx := TIME();
IF NOT init THEN
    (* INITIALIZATION AT FIRST CALL *)
    last := tx;
    init := TRUE;
ELSIF off THEN
    (* emergency shut off detected *)
    Yup := FALSE;
    Ydn := FALSE;
    last := tx;
ELSIF ((Yup OR Ydn) AND tx - last < Ton) OR ((NOT Yup AND NOT Ydn) AND tx - last < tof) THEN
    (* WATH FOR MIN TON AND TOF TIME *)
    RETURN;
ELSIF manual THEN
    (* manual operation detected *)
    IF UP AND NOT DN AND NOT OFF THEN
        Ydn := 0;
        IF NOT Ydn_in THEN Yup := 1; END_IF;
        last := tx;
    ELSIF DN AND NOT UP AND NOT OFF THEN
        Yup := 0;
        IF NOT Yup_in THEN Ydn := 1; END_IF;
        last := tx;
    ELSE
        IF YUP OR YDN THEN LAST := tx; END_IF;
        Yup := 0;
        Ydn := 0;
    END_IF;
ELSE
    (* automatic operation *)
    IF Ud AND on AND NOT OFF THEN
        Ydn := 0;
        IF NOT ydn_in THEN Yup := 1; END_IF;
        last := tx;
    ELSIF NOT UD AND on AND NOT OFF THEN
        Yup := 0;
        IF NOT yup_in THEN Ydn := 1; END_IF;
        last := tx;
    ELSE
        IF Yup OR Ydn THEN last := tx; END_IF;
        Yup := 0;
        Ydn := 0;
    END_IF;
END_IF;

(* make sure Yup and Ydn are never on at the same time *)
IF Ydn AND Yup_in THEN Ydn := 0; END_IF;
IF Yup AND Ydn_in THEN Yup := 0; END_IF;


----------



## mercury (26 Dezember 2006)

Danke Hugo diese Bibliothek werde ich mir anschauen. Dieser Code siet aber nach dem aus was ich eigentlich gesucht habe.


----------



## hugo (27 Dezember 2006)

schau dir mal unsewr rechts´- bzw up-dn modul mit vielen raffinessen an:
zu finden in der lib oscat1.3 auf www.oscat.de


FUNCTION_BLOCK actuator_UD
VAR_INPUT
    UD : BOOL;
    ON : BOOL;
    TON : TIME;
    TOF : TIME;
    Manual : BOOL := 0;
    Up : BOOL;
    Dn : BOOL;
    off : BOOL := 0;
    YUP_in : BOOL;
    YDN_in : BOOL;
END_VAR

VAR_OUTPUT
    Yup : BOOL;
    Ydn : BOOL;
END_VAR
VAR
    tx : TIME;
    last : TIME;
    init: BOOL;
END_VAR

(*
version 1.0    12 Nov 2006
programmer     hugo
tested by        tobias

out_ud is a up/dn or Right/left locked output driver.
if can be controlled by automatic inputs UD and ON as well as manual inputs for up and dn.
a security input to shut off at any time is prvided by the off input.
to time set inputs ton and toff specify a minimum on time for outputs and a minimum off time befoore the next output can become active.
the module assures that only one output can be active at any time.
for higher security pls make sure you use hardware locking of the outputs to prevent from defective wiring or outputs.
further security is provided b feedback inputs Yup_in and Ydn_in which are separate inputs for the output signal, if these inputs are not available 
pls connect them directly to Yup and Ydn.
automatic mode can override manual mode by setting the on input high while the manual input is high.

*)


tx := TIME();
IF NOT init THEN
    (* INITIALIZATION AT FIRST CALL *)
    last := tx;
    init := TRUE;
ELSIF off THEN
    (* emergency shut off detected *)
    Yup := FALSE;
    Ydn := FALSE;
    last := tx;
ELSIF ((Yup OR Ydn) AND tx - last < Ton) OR ((NOT Yup AND NOT Ydn) AND tx - last < tof) THEN
    (* WATH FOR MIN TON AND TOF TIME *)
    RETURN;
ELSIF manual AND NOT on THEN
    (* manual operation detected *)
    IF UP AND NOT DN AND NOT OFF THEN
        Ydn := 0;
        IF NOT Ydn_in THEN Yup := 1; END_IF;
        last := tx;
    ELSIF DN AND NOT UP AND NOT OFF THEN
        Yup := 0;
        IF NOT Yup_in THEN Ydn := 1; END_IF;
        last := tx;
    ELSE
        IF YUP OR YDN THEN LAST := tx; END_IF;
        Yup := 0;
        Ydn := 0;
    END_IF;
ELSE
    (* automatic operation *)
    IF Ud AND on AND NOT OFF THEN
        Ydn := 0;
        IF NOT ydn_in THEN Yup := 1; END_IF;
        last := tx;
    ELSIF NOT UD AND on AND NOT OFF THEN
        Yup := 0;
        IF NOT yup_in THEN Ydn := 1; END_IF;
        last := tx;
    ELSE
        IF Yup OR Ydn THEN last := tx; END_IF;
        Yup := 0;
        Ydn := 0;
    END_IF;
END_IF;

(* make sure Yup and Ydn are never on at the same time *)
IF Ydn AND Yup_in THEN Ydn := 0; END_IF;
IF Yup AND Ydn_in THEN Yup := 0; END_IF;


----------



## Flinn (28 Dezember 2006)

*Hömma-Samma*



hugo schrieb:


> ...mit allen raffinessen die man normalerweise braucht....


 
Was ist denn normalerweise? Ist der Baustein schon in der Praxis im Einsatz? Wenn ja, wo denn?
Würde mich mal interessieren.

Grüße
Flinn


----------



## hugo (29 Dezember 2006)

der baustein ersetzt gerade die simplen ausgänge einer heizungssteuerung mit 9 heizkreisen, das ganze wird im moment getestet und geht ab naechster woche in betrieb


----------



## hugo (29 Dezember 2006)

sorry hab das gerade mit dem actuator_pump verwechselt.
der actuator u/D ist in betrieb für einen rechts linkslauf steuerung für einen ventilator (luft rein / luft raus)


----------



## ge_org (29 Dezember 2006)

Nachdem ich den ST-Code gesehen habe konnte ich mich erinnern, dass wir bei einem S7-Kurs eine Wendeschützschaltung in AWL programmiert hatten:
//Vorwahl links
U  E_links
FP HM_links
S  M_Vorwahl_links
R  M_Vorwahl_rechts
//Vorwahl rechts
U  E_rechts
FP HM_rechts
S  M_Vorwahl_rechts
R  M_Vorwahl_links
//STOP
UN  E_Stop //Öffner
R    M_Vorwahl_links
R    M_Voreahl_rechts
//Linkslauf
U   A_Motor_rechts
L    S5T#10s
SA  Auslaufzeit_rechts
//Rechslauf
U   A_Motor_links
L    S5T#10s
SA  Auslaufzeit_links
//Ausgänge
U   M_Vorwahl_links
UN Auslaufzeit_rechts
=   Ausgang_links

U   M_Vorwahl_rechts
UN Auslaufzeit_links
=   Ausgang_rechts

Hoffe ich habe keine Abschreibfehler, sollte eigentlich funktionieren, zumindest hat es das 2002.
Ist es sinnvoll bei dieser Anwendung ST zu verwenden?

Georg


----------



## zotos (29 Dezember 2006)

Ich denke schon das es Sinn macht ST auch für solche Anwendungen zu verwenden zu mal das die einzige Sprache ist die sowohl Siemens wie auch 3S (CoDeSys) und einige anderen beherrschen da diese genormt ist.
Ich hätte mir aber gewünscht das Hugo den ST-Code als Code eingefügt hätteich finde ST-Code ohne Einrücken unleserlich. Zumal da einige IF Verschachtelungen drin sind.


----------



## hugo (29 Dezember 2006)

der st code ist selbstverständlich eingerückt,
leider geht aber diese formattierung beim cut and paste verloren
schau einfach mal in den source code der lib auf
www.oscat.de dort ist alles sauber eingerückt und viel besser leserlich.


----------



## zotos (29 Dezember 2006)

Das mit dem Copy Paste sollte aber gehen wenn Du ein Codefenster
	
	



```
...

IF NOT init THEN
  (* INITIALIZATION AT FIRST CALL *)
  last := tx;
  init := TRUE;
ELSIF off THEN  

...
```
benutzt.


----------



## hugo (29 Dezember 2006)

danke guter tip


----------

