Hallo zusammen,
ich bin relativ neu und habe mir Dank diesem Forum schon viel anlesen können. Aktuell bin ich dann wirklich praktisch bei der Umsetzung während einer Inbetriebnahme einer Achse mit TwinCat 3.
Ich arbeite objektorientiert und habe einen Funktionsblock für die Achse geschrieben, wobei die verschiedenen Methoden MoveAbsolut, Homing ... lauten.
Ich habe irgenwie noch ein Problem mit der StateMachine.
Mit dem aktuellen Aufbau kann ich das Homing nur einmal ausführen weil danach der Schritt 10 einfach übersprungen wird. Das das passiert macht Sinn, aber mir fällt keine Alternative ein.
(Twincat3)
Das Problem ist, dass beim zweiten mal den .Done ausgang bereits aktiviert ist, unabhängig von der aktuellen Position. Beim Homing mag das eventuell sogar ok sein, dass ich die Methode nur einmal ausführen kann. Bei anderen Methoden, wie MoveAbsolut hingegen ist es ein noch größeres Problem
ich bin relativ neu und habe mir Dank diesem Forum schon viel anlesen können. Aktuell bin ich dann wirklich praktisch bei der Umsetzung während einer Inbetriebnahme einer Achse mit TwinCat 3.
Ich arbeite objektorientiert und habe einen Funktionsblock für die Achse geschrieben, wobei die verschiedenen Methoden MoveAbsolut, Homing ... lauten.
Ich habe irgenwie noch ein Problem mit der StateMachine.
Mit dem aktuellen Aufbau kann ich das Homing nur einmal ausführen weil danach der Schritt 10 einfach übersprungen wird. Das das passiert macht Sinn, aber mir fällt keine Alternative ein.
(Twincat3)
Code:
Deklaration
...
mcHoming : MC_Home;
stHomingOut : ST_McOutputs;
...
Schrittekette
...
5:
IF ibEndSwitch0=FALSE THEN
nSwitchHoming :=100;
ELSIF ibEndSwitch0=TRUE THEN
nSwitchHoming :=10;
END_IF
10:
(* homing block*)
mcHoming( Axis := Axis1,
Execute := TRUE,
(* set by NC Control
Position := -5,
HomingMode := MC_DefaultHoming, *)
bCalibrationCam := ibEndSwitch0,
Done =>StHomingOut.Done,
Busy =>stHomingOut.Busy,
Active =>stHomingOut.Active,
CommandAborted=>stHomingOut.CommandAborted,
Error =>stHomingOut.Error,
ErrorID =>stHomingOut.ErrorID
);
IF mcHoming.Done THEN //alt StHomingOut.Done:
nSwitchHoming:=20;
END_IF
20:
...