# TwinCat Visualisierung -> Textfeld?, Mehrere Achsen steuern



## friesen (14 September 2010)

Hi Leute,

ich bin grad dabei ein Programm (in ST) zur Steuerung meiner Achsen (Endstufe: AX5000 Baureihe) zu programmieren. Der erste Testlauf mit der TcMC2-Bib läuft ganz gut.

Jetzt hab ich zwei Fragen:

1) Wie kann ich bei der Visualisierung ein Textfeld erzeugen? Ich würd da gern die Sollposition (o.ä.) eingeben, zu der sich die Achse dann drehen soll.

2) Da ich im Moment nur eine Achse ansteuern kann (in Zukunft aber mehrere) frag ich mich, wie das mit dem synchronen Achsenbewegen aussieht? In meinem ST-Programm steht dann ja z.B. "MoveAxis1.Position := 1500;". Logischerweise könnte ich in der Zeile danach einfach (nach Einrichten einer zweiten Achse) "MoveAxis2.Position := 700;" hinschreiben. Läuft das dann synchron?


Grüße und Danke


----------



## MasterOhh (14 September 2010)

Hallo,

1)
ein Textfeld erzeugst du einfach indem du ein Recheck, abgerundetes Rechteck oder eine Ellipse auf deine Visuoberfläche ziehst.
Unter Konfiguration -> Text   kannst du in das Textfeld einen Text eingeben oder einen Variablenplatzhalter einfügen.
z.B. so:  Motorposition: %d        (das %d ist ein Platzhalter für einen Dezimalwert, es gibt noch %f für float oder %s für einen String, evtl. noch mehr?)

Unter Variablen kannst du bei Textausgabe dann festlegen für welche Variable dein Platzhalter stehen soll. Also z.b. .MoveAxis1.Position

Wenn du den Wert auch über die Visu ändern möchtest, dann musst doch noch bei "Eingabe" das Feld "Text Eingabe der Variable 'Textausgabe'" aktivieren.

2)
Das sollte eigentlich synchron laufen weil normalerweise alle Ausgangsgrößen am Ende eines Zyklus in einem Rutsch in das Prozessausgangsabbild kopiert werden.


----------



## friesen (14 September 2010)

Coole Sache! Danke für die schnelle Antwort!



Grüße


----------



## Cerberus (14 September 2010)

MasterOhh schrieb:


> Unter Konfiguration -> Text kannst du in das Textfeld einen Text eingeben oder einen Variablenplatzhalter einfügen.
> z.B. so: Motorposition: %d (das %d ist ein Platzhalter für einen Dezimalwert, es gibt noch %f für float oder %s für einen String, evtl. noch mehr?)


 
%x für Hexadezimale Darstellung


----------



## bonatus (14 September 2010)

Hallo,

zu 2. :

Was willst du genau erreichen? Sollen beide Achsen zum gleichen Zeitpunkt am gleichen Punkt ankommen oder ist es dir egal?

Wenn beide Achsen gleichzeitig ihr Zielreichen sollen musst du beide Achsen koppeln und nach erreichen wieder entkoppeln.


----------



## friesen (14 September 2010)

Eigt. wollt ich das erstmal so machen, dass beide gleichzeitig starten und egal wie stehen bleiben.

Der Idealfall wäre aber, dass beide gleichzeitig starten und gleichtzeitig (bei verschiedenen Sollpositionen) stehen bleiben. Das hieße dann, dass sich die Achsen unterschiedlich schnell bewegen sollten.

Weißt du was funktioniert?



Grüße


----------



## bonatus (14 September 2010)

Hallo,

da kann ich dir leider nich weiterhelfen...


----------



## friesen (14 September 2010)

Und wie man die Achsen koppelt und entkoppelt weißt du auch nicht?



Grüße und Danke


----------



## bonatus (14 September 2010)

Hallo,

ich weiß nur das du zum koppeln den FB MC_GearInDyn http://infosys.beckhoff.com/content/1031/tcplclibmc2/html/blocks/tcplclibmc_gearindyn.htm
und zum entkoppeln den FB MC_GearOut
http://infosys.beckhoff.com/content/1031/tcmc2_dll/html/blocks/tcmc2dllmc_gearout.htm

nehmen musst


----------



## friesen (14 September 2010)

Oke danke!


----------



## friesen (15 September 2010)

Hi,
hab da noch ne Frage. Und zwar...

Ich bewege die Achse mit MoveAxis.Execute und Position in einem CASE OF. In dem CASE OF initalisiere ich erstmal, dann werden Freigaben gesetzt, bewegt, Error abgefragt, etc.

Wie schaff ich das, in diesen Prozess mit einem STOP einzugreifen? Hab versucht mit einem BOOL und einer IF-Abfrage die MoveAxis.Execute auf FALSE zu setzen aber das geht nicht.

Weißt da jemand weiter?


Grüße und Danke


----------

