MC_ReadCamTableMasterPosition
Mit dem FunktionsbausteinMC_ReadCamTableMasterPosition kann die Masterposition für eine gegebene Slaveposition berechnet werden. Während die Slaveposition für eine gegebene Masterposition eindeutig sein muss, ist dies für den inversen Fall nicht so. Damit man nun als Ausgabe für den Funktionsbaustein eine beschränkte Anzahl von Werten für Master ausgeben kann, werden nur für eine gegebene Masterposition (MasterStartPosition) die jeweils kleinere (MasterLow) und größere Masterposition (MasterHigh) zu dem Slavewert ausgegeben.
So wird für die Kurvenscheibe vom Bild 1 für den Slavewert von 80 und einem Masterstartwert von 180 die Werte für MasterHigh von 225 und für MasterLow von 135 ausgegeben. Wenn die Kurvenscheibe zyklisch ist, werden für einen Masterstartwert von 90 neben dem MasterHigh von 135 auch der MasterLow von -135 berechnet. Im linearen Fall (nichtzyklisch) der Kurvenscheibe wird im Bild 2 nur der Wert MasterHigh als gültig dargestellt.
Bild1
Bei zyklischen Kurvenscheiben mit Hub kann die Masterposition nicht nur in einem der benachbarten Zyklen der StartMasterpos liegen, sondern bei entsprechender Slaveposition auch mehrere Zyklen weiter.
Bild2
Die Berechnung der Masterposition erfolgt mit numerischen Algorithmen, deren Genauigkeit über die Variable MasterAccuracy eingestellt werden kann.
Eingänge
VAR_INPUT
Execute : BOOL;
CamTableID : MC_CAM_ID;
SlavePosition : LREAL; (* absolute slave axis position *)
MasterOffset : LREAL; (* E *)
SlaveOffset : LREAL; (* E *)
MasterScaling : LREAL := 1.0; (* E *)
SlaveScaling : LREAL := 1.0; (* E *)
MasterStartPosition : LREAL; (* Master position to start the iteration from *)
MasterAccuracy : LREAL; (* Master iteration accuracy *)
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Execute | BOOL | Mit einer steigenden Flanke am Eingang Execute wird das Kommando ausgeführt. |
CamTableId | MC_CAM_ID | Tabellen ID |
SlavePosition | LREAL | Die Slaveposition, deren Masterposition gesucht ist. |
MasterOffset | LREAL | Offset zur Masterposition der Kurvenscheibe |
SlaveOffset | LREAL | Offset zur Slaveposition aus der Kurvenscheibe |
MasterScaling | LREAL | Skalierung der Masterposition der Kurvenscheibe |
SlaveScaling | LREAL | Skalierung der Slaveposition der Kurvenscheibe |
MasterStartPosition | LREAL | Startposition des Masters |
MasterAccuracy | LREAL | Genauigkeit für die Berechnung |
Ausgänge
VAR_OUTPUT
Execute : BOOL;
Done : BOOL;
Busy : BOOL;
Active : BOOL;
Error : BOOL;
ErrorID : UDINT;
MasterLow : ST_CamMasterData; (* position information of the lower bound master position *)
MasterHigh : ST_CamMasterData; (* position information of the upper bound master position *)
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Done | BOOL | Wird TRUE, wenn die Kopplung erfolgreich durchgeführt wurde und die Kurvenscheibe aktiv ist. |
Busy | BOOL | Der Busy-Ausgang wird TRUE, sobald das Kommando mit Execute gestartet wird und bleibt TRUE, solange der Befehl abgearbeitet wird. Wenn Busy wieder FALSE wird, so ist der Funktionsbaustein bereit für einen neuen Auftrag. Gleichzeitig ist einer der Ausgänge Done oder Error gesetzt. |
Error | BOOL | Wird TRUE, sobald ein Fehler eintritt. |
ErrorID | UDINT | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer. |
MasterLow | ST_CamMasterData | Masterposition kleiner als die MasterStartPosition in der Datenstruktur ST_CamMasterData |
MasterHigh | ST_CamMasterData | Masterposition größer als die MasterStartPosition in der Datenstruktur ST_CamMasterData |