Ü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:
- Typen:
Type_Master1Dusw., die definieren, was ein Motion-Objekt kann. - Motion-Objekte:
AXIS_REFundENCODER_AXIS_REF, die im PLC-Programm deklariert werden.
Die MC3-Funktionsbausteine verwenden die spezialisierten Motion-Objekte oder die Typen direkt.

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_REFan. Die spezialisierten Typen sind nicht für die Verwendung als eigenständige Instanz geeignet. - 2. Neben der
AXIS_REFkönnen weitere Motion-Objekte mit verschiedenen Fähigkeiten instanziiert werden (z. B. ein Positionsgeber alsENCODER_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_MoveAbsolutemit einerENCODER_AXIS_REFauszufü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_VARImplementierung:
// 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 |
|---|---|---|
|
| 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. |
|
| Für Encoder-Achsen ist in der MC3 die eigenständige |