Übersicht: MC3-Typen

MC3-Funktionsbausteine verwenden typisierte Achsreferenzen, um die erforderlichen Fähigkeiten einer Achse festzulegen. Jeder Typ repräsentiert eine bestimmte Motion-Fähigkeit. Die Fähigkeit kann beispielsweise die Eignung als Kopplungsmaster sein oder die Möglichkeit der Achse, einen Positionssollwert entgegenzunehmen. Jedes Motion-Objekt (AXIS_REF, ENCODER_AXIS_REF) implementiert nur die Fähigkeiten, die es tatsächlich unterstützt.

Der Compiler prüft, ob das Motion-Objekt den für den Funktionsbaustein erforderlichen Typen implementiert. Ist dies nicht der Fall, lässt sich das Programm nicht kompilieren. Damit wird verhindert, dass Operationen für Motion-Objekte aufgerufen werden, die diese nicht unterstützen. Am Funktionsbaustein werden nur Fähigkeiten abgefragt und nicht das Motion-Objekt selbst. Der Compiler prüft, ob das Motion-Objekt diese Fähigkeit implementiert.

Die Grafik skizziert die Abhängigkeiten und Ursprünge der Typen (Type_*) und Motion-Objekte (AXIS_REF, ENCODER_AXIS_REF). In der Mitte sind die entscheidenden Ebenen zu erkennen:

Die MC3-Funktionsbausteine verwenden die spezialisierten Motion-Objekte oder die Typen direkt.

Übersicht: MC3-Typen 1:

Typ

AXIS_REF

ENCODER_AXIS_REF

Type_PtpErrorResettable

X

X

Type_PtpReadWriteParameter

X

X

Type_PtpSetHomingState

X

X

Type_PtpSetPosition

X

X

Type_PtpTouchProbe

X

X

Type_Camming1D

X

 

Type_ErrorTriggerable

X

X

Type_Master1D

X

X

Type_MotionObject

X

 

Type_Phasing1D

X

 

Verwendung

Die Funktionsbausteine der Tc3_Mc3Base, Tc3_Mc3Ptp, Tc3_Mc3Camming und Tc3_Mc3FluidPower setzten eine Parametrierung mit spezialisierten Typen (Type_*) oder allgemeinere Motion-Objekte (AXIS_REF) voraus. Der oberen Grafik ist zu entnehmen, dass die allgemeineren Motion-Objekte ausgewählte Typen implementieren.

1. Legen Sie in der PLC für eine PTP oder hydraulische Achse wie gewohnt eine Instanz vom Typ AXIS_REF an. Die spezialisierten Typen sind nicht für die Verwendung als eigenständige Instanz geeignet.
2. Neben der AXIS_REF können weitere Motion-Objekte mit verschiedenen Fähigkeiten instanziiert werden (z. B. ein Positionsgeber als ENCODER_AXIS_REF).
Funktionsbausteine können nur mit Motion-Objekten verwendet werden, die die benötigten Fähigkeiten zur Verfügung stellen. Es ist nicht möglich, ein MC_MoveAbsolute mit einer ENCODER_AXIS_REF auszuführen. Dies führt zu einem Compilerfehler.

Die Benutzung der Typen an z. B. Kopplungsbausteinen ermöglicht die Wiederverwendung der Funktionsbausteine mit verschiedenen Motion-Objekten. Bei einem Funktionsbaustein-Eingang des Typen Type_Camming1D ist ersichtlich, dass dieser Parameter ein Objekt erfordert, das als Slave-Objekt für Kurvenscheiben fungieren kann. Eine fehlerhafte Verwendung von Motion-Objekten fällt bereits während der Kompilierung und nicht erst zur Laufzeit des Anwenderprogramms auf.

Die Tabelle zeigt eine Auswahl an Funktionsbausteinen und die verwendeten Motion-Objekte oder Typen.

Funktionsbaustein

Parameter

Erforderlicher Typ

AXIS_REF

ENCODER_AXIS_REF

Basis Kommandos

MC_Power

Axis

AXIS_REF

X

-

MC_Home

Axis

AXIS_REF

X

-

MC_SetHomingState

Axis

Type_PtpSetHomingState

X

X

MC_Stop

Axis

AXIS_REF

X

-

MC_Halt

Axis

AXIS_REF

X

-

MC_Reset

Axis

Type_PtpErrorResettable

X

X

MC_MoveAbsolute

Axis

AXIS_REF

X

-

MC_MoveRelative

Axis

AXIS_REF

X

-

MC_MoveVelocity

Axis

AXIS_REF

X

-

MC_MoveModulo

Axis

AXIS_REF

X

-

MC_SetOverride

Axis

AXIS_REF

X

-

MC_SetPosition

Axis

Type_PtpSetPosition

X

X

MC_ReadParameter

Axis

Type_PtpReadWriteParameter

X

X

MC_WriteParameter

Axis

Type_PtpReadWriteParameter

X

X

MC_ReadBoolParameter

Axis

Type_PtpReadWriteParameter

X

X

MC_WriteBoolParameter

Axis

Type_PtpReadWriteParameter

X

X

MC_ReadHardwareParameter

Axis

AXIS_REF

X

X

MC_WriteHardwareParameter

Axis

AXIS_REF

X

X

Getriebekopplung

MC_GearIn

Master

Type_Master1D

X

X

Slave

AXIS_REF

X

-

MC_GearInPos

Master

Type_Master1D

X

X

Slave

AXIS_REF

X

-

Kurvenscheiben

MC_CamIn

Master

Type_Master1D

X

X

Slave

Type_Camming1D

X

-

MC_CamTableSelect

Slave

Type_Camming1D

X

-

Phasing

MC_PhasingAbsolute

Master

Type_Master1D

X

X

Slave

Type_Phasing1D

X

-

MC_PhasingRelative

Master

Type_Master1D

X

X

Slave

Type_Phasing1D

X

-

Messtaster

MC_TouchProbe

Axis

Type_PtpTouchProbe

X

X

TriggerInput

TRIGGER_REF

separater Typ

MC_AbortTrigger

Axis

Type_PtpTouchProbe

X

X

TriggerInput

TRIGGER_REF

separater Typ

Beispiel

Deklaration:

VAR
    myAxis1        : AXIS_REF;
    myAxis2        : AXIS_REF;
    myEncoder      : ENCODER_AXIS_REF;
    myGearIn       : MC_GearIn;
    myTypeInstance : Type_Master1D;
END_VAR

Implementierung:

// valid call
myGearIn(
    Master:= myAxis1,
    Slave:= myAxis2,
    Execute:= TRUE);
// valid call
myGearIn(
    Master:= myEncoder,
    Slave:= myAxis2,
    Execute:= TRUE);
myGearIn(
    Master:= myAxis1,
    Slave:= myEncoder, // Compiler error
    Execute:= TRUE);
myGearIn(
    Master:= myTypeInstance, // FB runtime error 16#8145
    Slave:= myAxis2,
    Execute:= TRUE);

Das Kommando MC_GearIn erwartet am Eingang Slave ein Objekt vom Typ AXIS_REF. Somit ist es nicht möglich, eine Encoder-Achse vom Typ ENCODER_AXIS_REF zu verwenden, dies führt zu einem Compilerfehler. Gleiches gilt z. B. für das Kommando MC_CamIn, da ENCODER_AXIS_REF nicht den Typ Type_Camming1D anbietet.

MC3-Typen enthalten keinen Implementierungscode. Sie werden im Solution Explorer nicht für eine Verknüpfung zwischen einer MC3-Achse und einer Instanz in der PLC angeboten. Im letzten Beispiel ist eine Instanz des Typen Type_Master1D dem Eingang Master zugewiesen. Dies führt nicht zu einem Compilerfehler, da der Typ grundsätzlich der richtige ist. Die Logik des Funktionsbaustein erkennt aber eine fehlende Verknüpfung zu einer Achse und quittiert dies mit dem Fehler 16#8145.

Migration NC2 zu MC3

NC2

MC3

Erforderliche Aktion

Axis : Tc2_MC2.AXIS_REF

Axis : Tc3_Mc3Ptp.AXIS_REF

Keine – In der MC3 verwenden die Funktionsblöcke die Motion-Objekte oder die Typen als Input. Da die Motion-Objekte entsprechende Typen anbieten, muss der Input am Funktionsbaustein sowie die Deklaration nicht verändert werden.

Encoder : Tc2_MC2.AXIS_REF

Encoder : Tc3_Mc3Ptp.ENCODER_AXIS_REF

Für Encoder-Achsen ist in der MC3 die eigenständige ENCODER_AXIS_REF zu wählen.