Umstieg NC2 zur MC3

Funktionsbausteine

NC2 Funktionsbaustein

MC3 Funktionsbaustein

Hinweis

MC_Power.Enable_Positive

MC_Power.Enable_Negative

MC_Power.EnablePositive

MC_Power.EnableNegative

Unterstrich entfernt

MC_ExtSetPointGenEnable

MC_ActivateExternalSetpointGeneration

Weitere Details zur Externe Sollwertgenerierung

MC_ExtSetPointGenDisable

MC_ActivateExternalSetpointGeneration mit einem Aborting Kommando ablösen

Beispiel: MC_Halt

MC_ExtSetPointGenFeed

Siehe ITcNcExternalSetpointGeneration

 

MC_ExtSetPointGenFeedWithTorque

-

 

 

 

 

MC_GearInDyn

In Zukunft über MC_GearIn

 

MC_GearOut

 

Durch ein Bewegungs- oder Halt/Stop-Kommando auf eine Slave-Achse wird diese vom Master abgekoppelt.

MC_CamOut

 

Durch ein Bewegungs- oder Halt/Stop-Kommando auf eine Slave-Achse wird diese vom Master abgekoppelt.

MC_Power.Override

(Wertebereich in %)

MC_SetOverride.VelocityFactor

(Wertebereich normalisiert auf 1)

Bei der MC3 ist der Override standardmäßig auf 1 (100%) gesetzt. In der Motion UI erfolgt die Eingabe in %.

MC_SetPosition.Mode

MC_SetPosition.Relative

Umbenennung des Eingangs für bessere Lesbarkeit im Code.

MC_Reset

MC_Reset

MC3: Wirkt, wenn sich die Achse im Fehlerzustand befindet. Ein zusätzlicher asynchroner Reset-Befehl für Sercos-Geräte wird ebenfalls ausgelöst und ausgewertet. MC_Reset.Done = TRUE, wenn die Hardware zurückgesetzt wurde (einschließlich zusätzlichem Reset für Sercos) und sich der Achsenstatus auf „Disabled” oder „Standstill” geändert hat.

Der Schleppfehler wird nicht zurückgesetzt und bleibt trotz Reset-Kommando bestehen.

MC_Home.bCalibrationCam

Siehe Kapitel MC_Home und Homing-Module

Zentrale Konfiguration, Parametrierung und Verknüpfung mit I/O-Komponenten zentral in Homing Modulen

MC_Home.HomingMode := MC_DefaultHoming

MC_Home

MC_Home führt die Standard-Referenzierfahrt, die im Homing-Objekt konfiguriert ist, aus.

MC_Home.HomingMode := MC_Direct

MC_SetHomingState.Mode := EHomingMode.DirectSetPosition

Zusätzlicher Funktionsbaustein neben MC_Home.

MC_Home.HomingMode := MC_ForceCalibration

MC_SetHomingState.Mode := EHomingMode.ForceIsPositionValid

Zusätzlicher Funktionsbaustein neben MC_Home.

MC_Home.HomingMode := MC_ResetCalibration

MC_SetHomingState.Mode := EHomingMode.ResetIsPositionValid

Zusätzlicher Funktionsbaustein neben MC_Home.

MC_MoveVelocity.InVelocity

MC_MoveVelocity.Busy

MC_MoveVelocity.Active

 

MC_MoveVelocity.InVelocity

MC_MoveVelocity.Busy

MC_MoveVelocity.Active

 

In der Ausgangssituation wurde das Kommando mit Execute := TRUE abgeschickt und es wird wieder Execute := FALSE gesetzt.

NC2: Busy = TRUE, Active = TRUE und InVelocity = TRUE werden mit einer fallenden Flanke am Execute Eingang zurückgesetzt. Jedoch signalisieren die Ausgänge (insbesondere InVelocity) mindestens für einen Zyklus TRUE, sobald die Zielgeschwindigkeit erreicht ist.

MC3: Busy = TRUE, Active = TRUE und InVelocity = TRUE bleiben so lange gesetzt, bis das Bewegungskommando durch ein anderes Kommando abgelöst wird, auch wenn Execute bereits auf FALSE gesetzt ist (PLCopen-konform).

MC_GearIn.InGear

MC_GearIn.Busy

MC_GearIn.Active

(ebenso MC_GearInPos)

MC_GearIn.InGear

MC_GearIn.Busy

MC_GearIn.Active

(ebenso MC_GearInPos)

In der Ausgangssituation wurde das Kommando mit Execute := TRUE abgeschickt und es wird wieder Execute := FALSE gesetzt.

NC2: Busy = TRUE, Active = TRUE und InGear = TRUE werden mit einer fallenden Flanke am Execute Eingang zurückgesetzt. Jedoch signalisieren die Ausgänge (insbesondere InGear) mindestens für einen Zyklus TRUE, sobald die Master- und Slave-Achse sich synchron zueinander bewegen.

MC3: Busy = TRUE, Active = TRUE und InGear = TRUE bleiben so lange gesetzt, bis das Bewegungskommando durch ein anderes Kommando abgelöst wird, auch wenn Execute bereits auf FALSE gesetzt ist (PLCopen-konform).

Re-Triggern eines MC-Funktionsbausteins am Beispiel MC_MoveAbsolute

VAR
    axis_nc2 : TC2_MC2.AXIS_REF;
    axis_mc3 : Tc3_Mc3Ptp.AXIS_REF;

    move_absolute_mc3 : Tc3_Mc3Ptp.MC_MoveAbsolute;
    move_absolute_nc2_1 : Tc2_MC2.MC_MoveAbsolute;
    move_absolute_nc2_2 : Tc2_MC2.MC_MoveAbsolute;
END_VAR
CASE step OF
    0:
        // MC3 init movement
        move_absolute_mc3(Axis := axis_mc3, Position := 111, Execute := TRUE);

        // NC2 init movement
        move_absolute_nc2_1(Axis := axis_nc2, Position := 111, Velocity := 100, Execute := TRUE);

        step := step + 1;

    1:
        // MC3 retrigger same FB instance during one cycle
        move_absolute_mc3 (Axis := axis_mc3, Position := 111, Velocity := 100, Execute := FALSE);
        move_absolute_mc3 (Axis := axis_mc3, Position := 222, Velocity := 100, Execute := TRUE);

        // NC2 use additional FB instance
        move_absolute_nc2_1(Axis := axis_nc2, Position := 111, Velocity := 100,Execute := FALSE);
        move_absolute_nc2_2(Axis := axis_nc2, Position := 222, Velocity := 100,Execute := TRUE);
        step := step + 1;
END_CASE
Umstieg NC2 zur MC3 1:

Re-Triggern eines MC-Funktionsbausteins am Beispiel MC_MoveAbsolute

In der NC2 gilt: Wenn der Eingang Execute während der Ausführung des Kommandos erneut getriggert wird, gibt der Funktionsbaustein keinerlei Rückmeldung, führt aber auch kein weiteres Kommando aus.

Für die MC3 gilt diese Einschränkung nicht. Wenn der Eingang Execute während der Ausführung des Kommandos erneut getriggert wird, werden die neuen Parameter übernommen und der Baustein entsprechend des Buffermodus erneut ausgeführt. Dies kann innerhalb eines PLC-Zyklus durchgeführt werden. Beispielsweise ist der erste Aufruf mit Execute := FALSE (Wechsel von TRUE auf FALSE) fbMyMoveAbsolute(Axis := ax, Execute := FALSE, Position := 111) und direkt folgend der zweite Aufruf derselben Bausteininstanz mit einer neuen Position fbMyMoveAbsolute(Axis := ax, Execute := TRUE, Position := 222).

Status

NC2

MC3

Hinweis

myAxisRef.Status.IoDataInvalid

myAxisRef.McToPlc.Std.AxisState

PLCopen Zustandsdiagramm erweitert (Zustände: Invalid, NotReady, Enabling, Disabling).

Beispiel: Die Achse verbleibt im Zustand NotReady, wenn die Antriebshardware nicht bereit ist (siehe Kapitel Zustandsdiagramm)

myAxisRef.Status.Homed

AxisRef.McToPlc.Std.IsPositionValid

IsPositionValid berücksichtigt z. B. auch den Zustand des Antriebsobjekts der Achse (CoE Antrieb Input: Position actual value invalid). Startet die Achse u. a. mit einem Absolutwertgeber, hat die Achse eine eindeutige Referenzposition und meldet IsPositionValid := TRUE.

myAxisRef.ReadStatus()

myAxisRef.McToPlc.Std

Statusinformationen können direkt aus dem CDT Std abgerufen werden.

Fehler auf Ebene der Antriebshardware oder fehlende Kommunikation

Ausgangssituation ist der Wechsel des TwinCAT-Systems von Config nach Run. Dabei ist die Antriebshardware in einem Fehlerzustand oder die Kommunikation über den EtherCAT-Feldbus ist gestört.