Dieser Funktionsbaustein ist die digitale Entsprechung einer Kurvenschalteinheit auf einer mechanischen Welle oder Schiene. Der Funktionsbaustein stellt bis zu 32 Tracks bereit. Sobald eine vorgegebene Position erreicht ist, wird ein logischer und/oder physischer Ausgang ausgelöst.
Die Tracks werden als ein Array von 32 booleschen Werten dargestellt. Auf diesen Tracks können insgesamt bis zu 255 Schaltereignisse angeordnet werden.
In MC_CamSwitch_Ref (Alias der Struktur ST_CamSwitch_Ref der MotionInterface-Bibliothek) legen Sie die Anzahl der Schaltereignisse (NumberOfSwitches) und einen Zeiger auf ein Array von Schaltereignissen (ST_CamSwitch) fest. Der Wert für den Parameter NumberOfSwitches muss der Anzahl der Einträge ST_CamSwitch im Array entsprechen.
Ein Schaltereignis wird durch die Struktur ST_CamSwitch der MotionInterface-Bibliothek dargestellt.
Der Funktionsbaustein MC_DigitalCamSwitch kann die Richtigkeit des Parameters NumberOfSwitches und die Richtigkeit der einzelnen Schaltereignisse im Array der Schaltereignisse, die mit Einträgen der Struktur ST_CamSwitch definiert sind, nicht überprüfen.
WARNUNG | |
---|---|
Der Parameter TrackNumber der Struktur ST_CamSwitch gibt die Nummer des Tracks an, d. h. den Ausgang. Der maximale Wert ist 32.
Der Parameter Position der Struktur ST_CamSwitch gibt die Position des Tracks an, an dem das Schaltereignis in Benutzereinheiten ausgelöst werden soll.
Der Parameter AxisDirection der Struktur ST_CamSwitch gibt die Bewegungsrichtung an, in der das Schaltereignis ausgelöst werden soll. Die entsprechende Enumeration ET_AxisDirection liefert drei Werte:
Both (0): Das Schaltereignis wird bei Bewegungen in beide Bewegungsrichtungen ausgelöst.
Positive (1): Das Schaltereignis wird nur bei Bewegungen in positiver Bewegungsrichtung ausgelöst.
Negative (2): Das Schaltereignis wird nur bei Bewegungen in negativer Bewegungsrichtung ausgelöst.
Der Parameter CamSwitchMode der Struktur ST_CamSwitch gibt die Art der Umschaltung für das auszulösende Schaltereignis an. Die entsprechende Enumeration ET_CamSwitchMode liefert vier Werte:
On (0): Der Ausgang wird auf ON gesetzt, wenn die angegebene Position erreicht ist.
Off (1): Der Ausgang wird auf OFF gesetzt, wenn die angegebene Position erreicht ist.
Invert (2): Der Ausgang wird umgeschaltet, wenn die angegebene Position erreicht ist.
TimeBased (3): Der Ausgang wird für den über den Parameter Duration festgelegten Zeitraum auf ON gesetzt.
Über den Eingang TrackOptions des Funktionsbausteins können Sie eine Kompensationszeit für das Auslösen der Schaltereignisse über MC_Track_Ref festlegen (dies ist ein Alias der Struktur ST_Track_Ref der MotionInterface-Bibliothek). Jedes Element des Arrays für die Struktur ST_Track_Ref gibt die Kompensationszeit für den entsprechenden Track an. Ein Element des Arrays hat zwei Werte:
OnCompensation: Gibt die Kompensationszeit in Sekunden an, nach der der Ausgang auf ON gesetzt wird.
OffCompensation: Gibt die Kompensationszeit in Sekunden an, nach der der Ausgang auf OFF gesetzt wird.
Sie können positive und negative Werte für die Kompensationszeit verwenden, um eine positive oder negative Kompensation zu ermöglichen. Wenn CamSwitchMode auf Invert gesetzt ist, wird unabhängig vom vorherigen Status des Ausgangs nur der Wert für OnCompensation verwendet. Wenn CamSwitchMode auf TimeBased eingestellt ist, wird nur der Wert für OnCompensation verwendet (der Ausgang ON bleibt für die mit dem Parameter Duration für das Schaltereignis angegebene Zeit erhalten. Die Kompensation (neue Triggerposition) hängt von der Beschleunigung und der Geschwindigkeit zum Zeitpunkt der Berechnung ab: ((neue Triggerposition + Kompensationszeit) * Geschwindigkeit) + (0,5 * Beschleunigung * Kompensationszeit2). Bei einer Modulo-Achse kann sich die neue Triggerposition eines Schaltereignisses in der nächsten Modulo-Periode befinden. Wenn die neue Triggerposition eines Schaltereignisses über zwei Modulo-Perioden liegt, wird der Fehler EdgePositionOutOfTwoModuloRanges erkannt.
Über den Eingang EnableMask des Funktionsbausteins können Sie die vom Funktionsbaustein zu steuernden Tracks angeben. Mit dem Standardwert FFFFFFFF hex werden die Tracks vom Funktionsbaustein gesteuert. Wenn der Wert für EnableMask während der Laufzeit geändert wird, werden die Tracks, deren EnableMask-Wert 0 ist, nicht zurückgesetzt, aber die Tracks werden nicht mehr vom Funktionsbaustein gesteuert.
Beispiel mit sieben Schaltereignissen auf zwei Tracks auf einer Modulo-Achse gemäß der Definition in den Strukturen ST_CamSwitch_Ref und ST_CamSwitch:
Schaltereignis |
TrackNumber | CamSwitchMode | Position | AxisDirection | Duration |
S01 |
1 |
0 (On) |
2000 |
1 (Positive) |
- |
S02 |
1 |
1 (Off) |
3000 |
1 (Positive) |
- |
S03 |
1 |
0 (On) |
4000 |
1 (Positive) |
- |
S04 |
1 |
1 (Off) |
1000 |
1 (Positive) |
- |
S05 |
2 |
0 (On) |
2500 |
2 (Negative) |
- |
S06 |
2 |
1 (Off) |
3200 |
2 (Negative) |
- |
S07 |
2 |
3 (TimeBased) |
3000 |
0 (Both) |
1750 ms |
Grafische Darstellung des Beispiels:
Die Bewegungsrichtung ist positiv, wie durch den Pfeil angezeigt.
Schaltereignisse S01, S02, S03 und S04 werden Track 1 mit dem Parameter TrackNumber zugewiesen, d. h. sie wirken auf Ausgang 1. Schaltereignisse S05, S06 und S07 werden Track 2 mit dem Parameter TrackNumber zugewiesen, d. h. sie wirken auf Ausgang 2.
Schaltereignis S01 wird an Position 2000 ausgelöst (CamSwitchMode = On). Schaltereignis S02 wird an Position 3000 ausgelöst (CamSwitchMode = Off).
Schaltereignis S03 wird an Position 4000 ausgelöst (CamSwitchMode = On). Modulo-Sprünge wirken sich nicht auf die Ausgänge aus. Ausgang 1 bleibt On bis zum nächsten Schaltereignis, unabhängig von einem Modulo-Sprung, der in der Zwischenzeit auftreten kann. Schaltereignis S04 wird an Position 1000 ausgelöst (CamSwitchMode = Off).
Der Parameter AxisDirection der Schaltereignisse S05 und S06 wird auf 2 (Negative) gesetzt, sodass diese Schaltereignisse im Beispiel nicht mit positiver Bewegungsrichtung ausgelöst werden.
Das Schaltereignis S07 wird an Position 3000 ausgelöst (CamSwitchMode = TimeBased) und bleibt für eine Dauer von 1750 ms gemäß der Einstellung im Parameter Duration aktiv.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
Axis |
Axis_Ref |
Verweis auf die Achse, für die der Funktionsbaustein ausgeführt werden soll. |
Switches |
MC_CamSwitch_Ref (Alias der Struktur ST_CamSwitch_Ref der MotionInterface-Bibliothek) ermöglicht die Festlegung der Anzahl der Schaltereignisse (NumberOfSwitches) und eines Zeigers auf ein Array von Schaltereignissen (ST_CamSwitch). Die maximale Anzahl an Schaltereignissen beträgt 255. |
|
Enable |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE. Der Eingang Enable startet oder beendet die Ausführung eines Funktionsbausteins.
|
EnableMask |
DWORD |
Standardwert: FFFFFFFF hex Dieser Eingang legt die vom Funktionsbaustein zu steuernden Tracks fest. Mit dem Standardwert werden alle Tracks vom Funktionsbaustein gesteuert. Wenn der Wert für EnableMask während der Laufzeit geändert wird, werden die Tracks, deren EnableMask-Wert 0 ist, nicht zurückgesetzt, aber die Tracks werden nicht mehr vom Funktionsbaustein gesteuert. |
TrackOptions |
Dieser Eingang legt eine Kompensationszeit für das Auslösen der Schaltereignisse fest, die einem Track über MC_Track_Ref zugewiesen sind (dies ist ein Alias der Struktur ST_Track_Ref der MotionInterface-Bibliothek). |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
InOperation |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE.
|
Error |
BOOL |
Wertebereich: FALSE, TRUE. Standardwert: FALSE.
|
ErrorID |
Diese Aufzählung stellt Diagnoseinformationen zur Verfügung. |