TIA Drehtisch Pendeln über einen Taster

Eugen91

Member
Beiträge
5
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Guten Tag,

ich bin recht neu in der Programmierung von TIA-Portal oder allgemein was SPS-Programmierung angeht. Vor langer Zeit besuchte ich auch einen Lehrgang und bin mit den Grundprinzipien vertraut, aber auch da hakt es hin und wieder.
Nun will ich bei uns in der Werkstatt einen Drehtisch so programmieren, dass er bei der ersten Betätigung des Taster links dreht und bei der nächsten Betätigung nach rechts, dies immer im Wechsel.

Um die Drehrichtung zu ändern wird beim Start ein Signal mit LOW/HIGH zugeschaltet. Bei LOW linkslauf, bei HIGH rechtslauf. Dass Signal muss nur beim Start anstehen.

Nun wollte ich es irgendwie über einen FLIP/FLOP lösen, aber habe mittlerweile einfach ein Brett vorm Kopf. Ich komme nicht auf diese wahrscheinlich sehr einfache Lösung... Ich weiß nicht wie ich mir merke, dass er beim nächsten mal anders dreht und wie ich es sauber zurücksetze ..

Ich wäre über jede Hilfe dankbar!!!
Beste Grüße Eugen
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
12.924
Punkte Reaktionen
2.662
Zuviel Werbung?
->Hier kostenlos registrieren
Nicht zu einfach denken ...
Hast du schon einmal etwas von Schrittketten gehört ? In diesem Fall wäre das eine - ich unterstelle mal, dass du für die Bewegung auch den gleichen Ini verlässt und etwas später (nach erfolgtem Winkelschritt) wieder anfährst ...

Gruß
Larry
 
OP
E

Eugen91

Member
Beiträge
5
Punkte Reaktionen
0
Der Drehtisch wird über eine Steuerkarte angesteuert und der INI dort nicht an mich übergeben, das geschieht bei der Karte intern. Aber ja mir wird dort die Startposition übergeben!
 
OP
E

Eugen91

Member
Beiträge
5
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Ok, ich hatte es schon mit einem Ablauf wo ich nun denke das er einer Schrittkette ähnelt probiert, aber habe da wohl irgendwas falsch gemacht...

Ich danke dir schonmal für den Ansatz, mache mich jetzt nochmal schlau und versuche es über saubere schrittkette! Danke und Grüße
 
OP
E

Eugen91

Member
Beiträge
5
Punkte Reaktionen
0
Hallo, vielen Dank für die Antwort. Ich musste mich derweil um etwas anderes kümmern, habe es auch immernoch nicht ganz hinbekommen. Versuche es jetzt nochmal mit der zuvor erwähnten Schrittkette.
@Robin: Habe es mal 1:1 umgesetzt, hat leider auch nicht zum Erfolg geführt... Vielen Dank dennoch! Mit dem R_trigg müsste das doch irgendwie gehen. Es ist vermutlich total simpel, aber irgendwo hakt mein Hirn bzw. fehlt mir da der richtige Ansatz :D

Screenshot 2021-06-10 145312.jpg
 

BrascoC

Active member
Beiträge
26
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
So wie du das gemacht hast, kannst du %A2.6 ja auch nicht mehr resetten bzw. noch nicht mal einschalten. Das geht ja nur, wenn er an ist ;-)

Tausche mal an dem SR-Baustein den S- und R-Eingang.
 
OP
E

Eugen91

Member
Beiträge
5
Punkte Reaktionen
0
Oh ja natürlich!! Ja hammer, es funktioniert!!! Tausend Dank an euch alle, bin begeistert. Danke danke danke
 

Heinileini

Well-known member
Beiträge
3.632
Punkte Reaktionen
693
Nicht zu einfach denken ...
Warum eigentlich nicht, solange wir keine Details der Anforderungen erfahren, Ralf?
(PseudoCode, aber ungetestet)
Code:
Var_Input
    ibStart
    ibNotReset  // Lo = Reset !
    ibNotStop   // Lo = Stop !
End_Var

Var_In_Out
    iobForward
    iobBackward
End_Var

Var_Static
    sbDirection    
    sbStartPrev
End_Var

Var_Temp
    tbPosEdgeStart
End_Var

tbPosEdgeStart := ibStart AND NOT sbStartPrev ; // pos. Flanke von StartTaster
sbStartPrev := ibStart ; // statischen Flanken"Merker" bilden
sbDirection := sbDirection XOR tbPosEdgeStart AND NOT ibNotReset ; // Richtung invertieren/löschen
iobForward := (iobForward OR tbPosEdgeStart) AND sbDirection AND ibNotStop AND NOT ibNotReset ; // VorwärtsRichtung starten/stoppen
iobBackward := (iobBackward OR tbPosEdgeStart) AND NOT sbDirection AND NOT ibNotStop AND NOT ibNotReset ; // RückwärtsRichtung starten/stoppen
 
Oben