TwinCat3 AS auf Init-Schritt zurück zwingen

Toni1989

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

Ich hoffe das richtige Forum Gewählt zu haben, ansonsten gern passend verschieben.

Ich bin absoluter Anfänger was SPS Programmierung angeht und möchte eine kleine Steuerung bauen welche einen Motor antreibt.

Ich habe es geschafft den Motor anzubinden und kann diesen auch steuern, die Programmabhängige Steuerung verstehe ich glaube auch, aber das muss ich testen.

Zu meinem Problem.
Ich möchte in AS mit ST darin zwei Sensoren abfragen, die über eine XOR Abfrage vorhanden sein müssen, sollte dies nicht der Fall sein wird der Baustein MC_Halt aktiviert und der Motor soll stoppen. Soweit ist noch alles gut. Jedoch soll später die Zwangsanweisung kommen, das die zweite AS mit ST programmiert (alternativverzweigt für die drehrichtungen des Motors) wieder auf Init springen soll, egal wo diese steht.
Leider war es mir nicht möglich, trotz Google und co herauszufinden wie ich von meiner ersten AS aus die zweite zurück setze.

Ich hoffe jemand kann mir erläutern wie ich das zu Stande bekomme.
Ich habe von jemanden gehört das hierfür ein Funktionsbaustein genutzt werden kann, jedoch welcher und wie fehlte in der Info…
Insgeheim hoffe ich auf eine einfache Lösung ala GoTo Befehl übertrieben gesagt.

Komponenten falls notwendig hierfür
CX5010
EL2008
EL7047
EK1122
EP1008
AS1060
Also sehr sehr Simpel alles..

Danke, Gruß
 
Erstmal Du bist im richtigen Forum, aber in der falschen Rubrik. TwinCAT basiert auf Codesys und Dein Beitrag wäre besser in der Rubrik "Codesys und IEC61131" aufgehoben.
Zu Deinem Problem, da gebe es zwei Möglichkeiten, aber auch ein Problem.
In AS gibt es verschiedene Flags die man setzen kann. Die zwei für Dich interessanten sind SFCInit und SFCReset. Bei beiden wird die Schrittkette in den Init-Schritt gesetzt wenn der Schrittkettenbaustein mit gesetztem Flag ausgeführt wird, der Unterschied zwischen den Beiden ist der, dass bei SFCInit keine Aktion ausgeführt wird, während bei SCFReset die Aktion ausgeführt wird.
Damit Du die Flags nutzen kannst musst Du die gewünschten in den Eigenschaften deines SPS-Projektes im Reiter "AS" auf Aktiv setzen, außerdem müssen Sie als Eingangsvariable deklariert werden, damit Du sie von außen beschreiben kannst.
Details zu den Flags findest Du im Infosys.
Nun noch zum Problem. Über eine Variable kannst Du den aktuell aktiven Schritt abfragen, leider hat die aktuelle TC3 Version da noch einen Fehler drin. Es kann vorkommen, dass diese Variable leer ist und bei Nutzung von SFCReset auch nicht richtig gesetzt wird. Solltest Du die Funktionalität von SFCReset und die Variable nutzen wollen müsstest Du erst den Schrittketten-FB (oder das Programm) erst mit SFCInit = TRUE ausführen und anschließend nochmals mit SFCReset = TRUE.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, nach sowas hab ich gesucht, nur leider bin ich an einigen Punkten am zweifeln und etwas verwirrt. Aber das passt hier nicht, sodass ich ein neues Thema erstellen werde in der richtigen Rubrik.

Gruß
 
Ok, dann vielleicht doch hier weiter, da dies das essenzielle Problem ist bei der Umsetzung.

Ich habe gesucht aber leider nicht gefunden wie ich in die AS-Einstellungen komme um die Flagen zu aktivieren. Entweder ich hab den Reiter übersehen oder er ist zu gut versteckt für mich.
Ich wäre sehr dankbar, wenn man mir sagen könnte wie ich genau dahin komme.

Das zweite Problem, vielleicht bedingt durch das erste von oben. Ich habe leider noch nicht verstanden wie und wo ich die SFCInit setzen muss….
Muss ich diese in eine Ausgangsaktion des zweiten AS Packen oder in eine Assoziation oder doch ganz anders???
Die Variable zur Aktivierung des SFCInit setze ich ja im ersten AS um den zweiten auf Init springen zu lassen.
Das Infosys hat mich dahingehend leider sehr unklar werden lassen und meine Freunde google, YouTube und co waren nicht hilfreich wieder.

Dann habe ich noch eine Frage zum SFCInit.
Ich möchte im zweiten AS, nachdem der Motor die Endlage erreicht hat und SensorX True wurde, über die EL2008 ein Signal ausgeben mit True. Wenn nun SFCInit in Kraft tritt, wird das Signal dann auch zurückgesetzt?

Ich würde mich sehr freuen, wenn mich hierzu jemand aufklären könnte.

Grüße
 
Gibt es auch bei Beckhoff...
Twincat AS Flags
Den Link hat er in #2 schon bekommen ist aber wohl nicht ganz schlau daraus geworden.
@Toni1989 : Rechtsklick auf Dein SPS-Projekt, Eigenschaften auswählen und da auf den Reiter AS gehen und in der Spalte Aktiv die entsprechende Variable aktivieren (Wie in #2 schon beschrieben), das gilt dann für alle AS-Programme. Möchtest Du die Variable nur für ein AS-Programm aktivieren musst das dann in den Eigenschaften zum jeweiligen AS-Programm unter "SFC Flags" einstellen. In dem AS-Programm das zurückgesetzt werden soll "SFCInit" und/oder "SFCReset" als Eingangsvariable vom Typ BOOL deklarieren.
Führt denn das erste AS-Programm das zweite aus? Falls ja musst Du in dem Programm die Variable setzen und das zweite AS-Programm aus diesem dann für einen Zyklus ausführen, anschließend kannst Du die Variable wieder auf FALSE setzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@oliver.tonn Vielen Dank für die Info! Das werde ich heute direkt ausprobieren. Das sollte mir ein gutes Stück weiter helfen!

Nein, das erste AS führt nicht das zweite aus.
Über das Main PRG rufe ich über calls AS1, AS2 und meine MotionControl FB‘s auf.
 
Zurück
Oben