ProbierEsAus
Level-1
- Beiträge
 - 3
 
- Reaktionspunkte
 - 0
 
-> Hier kostenlos registrieren
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:
    ...
	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
			
				Zuletzt bearbeitet: