Aufruf des Funktionsbaustein FB_SmgAddOnModule
Der Aufruf des AxisModule und des FB_SmgAddOnModule erfolgt in der Aktion SubModules des Equipmentmoduls SR_SmgAddOnModule.
Aufruf der Beispielapplikation
Der Aufruf der Beispielapplikation erfolgt in der Aktionslogik des Equipmentmoduls SR_SmgAddOnModule.
Als Beispiel wurde hier eine fliegende Säge umgesetzt:
Funktionsbaustein FB_SmgAddOnModule
Der Funktionsbaustein FB_SmgAddOnModule wird im AdditionalMode des AxisModule aufgerufen. Es handelt sich um einen Anwendungsfunktionsbaustein, der im Demoprojekt SmgAddOnModuleExample zur Verfügung gestellt wird.
HINWEIS: Im vorliegenden Demoprojekt ist der Funktionsumfang des FB_SmgAddOnModule für das Beispiel einer fliegenden Säge ausgelegt.
Wenn sein Funktionsumfang für ihre Anwendung nicht ausreicht, kann dieser erweitert werden.
Aufgabe
Der Funktionsbaustein FB_SmgAddOnModule hat folgende Aufgaben:
oSteuerung und Kommunikation zwischen Applikation und AxisModule:
oDie Steuerung des FB_SmgAddOnModule erfolgt über die Standardvariable "stSlave1Interface" (AXM.ST_ModuleInterface).
oDas Modul wird über die folgenden Standardbefehle in die Betriebsart versetzt und gestartet (siehe Aktion Init_CmdTables):
stAutoTable[udiStepIndex].sTitle: = "Additional Mode Slave1";
stAutoTable[udiStepIndex].udiModuleName: = c_udiSlave1;
stAutoTable[udiStepIndex].diStep: = diStep;
stAutoTable[udiStepIndex].diCMD: = AXM.Et_Cmd.AdditionalWs;
stAutoTable[udiStepIndex].timTimeOut: = T#0MS;
stAutoTable[udiStepIndex].xEndCMD: =FALSE;
oDie Steuerung der Beispielapplikation aus dem FB_SmgAddOnModule erfolgt über die Benutzervariable stApplicationItf (ST_ApplicationItf).
Die vorherige Abbildung zeigt die Kommunikationswege zwischen dem AxisModule, dem FB_SmgAddOnModule und der Applikation "Fliegende Säge".
oAktivierung und Überwachung des SMG:
Über eine interne Zustandsmaschine wird der Funktionsbaustein in seine Betriebsbereitschaft versetzt. Dieser aktiviert dabei den SMG. Außerdem werden Daten für einen eventuellen Warmstart gespeichert und Diagnosemeldungen aus der Applikation überwacht.
oBereitstellung von Methoden und Eigenschaften für Kommandoeingaben an den SMG:
In diesen Methoden werden vor dem Aufruf der ursprünglichen SMG-Methoden die erforderlichen SMG-Parameter festgelegt. Sie sind nur Hüllen, die die Komplexität der SMG-Funktionen und -Parameter vermindern. Über diese Methoden wird die Applikation realisiert.
Methoden und Eigenschaften
Die folgenden Methoden und Eigenschaften des FB_SmgAddOnModule sind im Demoprojekt SmgAddOnModuleExample verfügbar:
Methode DoWarmStart
Diese Methode führt eine Positionierung auf die Kurvenposition der aktuellen, unterbrochenen Kurve aus. Für die Kurvenpunktberechnung wird die Masterposition (iq_stModuleItf.stMain.i_ifMaster) verwendet und in der Anwendungsperiode (i_lrPeriode) berechnet.
Der Warmstart wird nur für Aufträge vom Typ ET_MotionJobType.ExternalCam realisiert.
Das sind Aufträge, die über die Methode TakeMultiCamJob gesendet wurden. Ansonsten wird eine absolute Positionierung auf die Position Null gestartet.
Bei Bedarf kann diese Methode erweitert werden.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_lrPeriode |
LREAL |
Anwendungsperiode bezogen auf den Master (Teilelänge) in Einheiten |
i_lrVelocity |
LREAL |
Maximale Warmstartgeschwindigkeit in Einheiten/s |
i_lrAcceleration |
LREAL |
Maximale Beschleunigung in Einheiten/s2 |
i_lrDeceleration |
LREAL |
Maximale Verzögerung in Einheiten/s2 |
i_lrJerk |
LREAL |
Maximaler Ruck in Einheiten/s3 |
Methode TakeJob
Über diese Methode wird die ursprüngliche Methode TakeJob direkt aufgerufen. Sie wird bei Aufträgen verwendet, bei denen der Anwender vollen Zugriff auf alle auftragsrelevanten Parameter und Funktionen benötigt.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_etChannel |
Kanal, über den der Auftrag ausgeführt wird. |
Ein-/Ausgang |
Datentyp |
Beschreibung |
---|---|---|
iq_stMotionJob |
ST_MotionJob enthält alle auftragsrelevanten Daten. |
Methode TakeJobAll
Über diese Methode wird die ursprüngliche Methode TakeJobAll direkt aufgerufen. Sie wird bei Aufträgen verwendet, bei denen der Anwender vollen Zugriff auf alle Parameter und Funktionen benötigt.
Ein-/Ausgang |
Datentyp |
Beschreibung |
---|---|---|
iq_stMotionJobA |
ST_MotionJob für den Kanal A |
|
iq_stMotionJobB |
ST_MotionJob für den Kanal B |
|
iq_stMotionJobC |
ST_MotionJob für den Kanal C |
Methode TakeMultiCamJob
Diese Methode verwendet als Eingang eine Standard-MultiCam-Struktur, baut daraus ein segmentiertes Profil (ET_MotionJobType.ExternalCam) und gibt es als Auftrag an den SMG weiter. Pro Kanal können maximal drei solcher Aufträge gepuffert werden. Eine Puffertiefe von zwei reicht normalerweise aus, um einen ruckfreien Übergang zwischen zwei Kurven zu erreichen.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_etChannel |
Kanal, über den der Auftrag ausgeführt werden soll. |
|
i_diJobId |
DINT |
Während der Ausführung wird diese JobId in der Variablen stRTDataTemp.stChannel_x.diCurrentJobId angezeigt. |
i_etCamLimitMode |
Abbruchkriterium des Kurvenauftrags, z. B. ET_CamMode.Endless |
|
i_etSlaveSetPosMode |
Art des SetPos-Auftrags, z. B. ET_SetposMode.Absolute |
|
i_lrSlaveSetposValue |
LREAL |
Wert, auf den die Slaveachse beim Start des Auftrags gesetzt wird. |
i_etMasterSetPosMode |
Art des SetPos-Auftrags, z. B. ET_SetposMode.Absolute |
|
i_lrMasterSetposValue |
LREAL |
Wert, auf den die logische Masterachse beim Start des Auftrags gesetzt wird. |
i_xClearBufferedJobs |
BOOL |
TRUE = Löscht beim Start alle gepufferten Aufträge. FALSE = Der neue Auftrag wird im Puffer an der letzten Stelle eingereiht. |
i_xTerminateCurrentJob |
BOOL |
TRUE = Bricht beim Start einen eventuell aktiven Auftrag ab. FALSE = Der neue Auftrag wird gepuffert, wenn ein anderer Auftrag aktiv ist. |
Ein-/Ausgang |
Datentyp |
Beschreibung |
---|---|---|
iq_stMultiCamData |
MultiCam-Struktur |
Methode TakePoly5CamJob
Startet ein Polynom 5. Grades mit variablen Anfangs-und Endwerten.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_etChannel |
Kanal, über den der Auftrag ausgeführt werden soll. |
|
i_diJobId |
DINT |
Während der Ausführung wird diese JobId in der Variablen stRTDataTemp.stChannel_x.diCurrentJobId angezeigt. |
i_etCamLimitMode |
Abbruchkriterium des Kurvenauftrags, z. B. ET_CamMode.Endless |
|
i_etSlaveSetPosMode |
Art des SetPos-Auftrags, z. B. ET_SetposMode.Absolute |
|
i_lrSlaveSetposValue |
LREAL |
Wert, auf den die Slaveachse beim Start des Auftrags gesetzt wird. |
i_etMasterSetPosMode |
Art des SetPos-Auftrags, z. B. ET_SetposMode.Absolute |
|
i_lrMasterSetposValue |
LREAL |
Wert, auf den die logische Masterachse beim Start des Auftrags gesetzt wird. |
i_lrXStart |
LREAL |
X-Wert der Kurve am Startpunkt |
i_lrYStart |
LREAL |
Y-Wert der Kurve am Startpunkt |
i_lrMStart |
LREAL |
Steigung der Kurve am Startpunkt |
i_lrKStart |
LREAL |
Krümmung der Kurve am Startpunkt |
i_lrXEnd |
LREAL |
X-Wert der Kurve am Endpunkt |
i_lrYEnd |
LREAL |
Y-Wert der Kurve am Endpunkt |
i_lrMEnd |
LREAL |
Steigung der Kurve am Endpunkt |
i_lrKEnd |
LREAL |
Krümmung der Kurve am Endpunkt |
i_xClearBufferedJobs |
BOOL |
TRUE = Löscht beim Start alle gepufferten Aufträge. FALSE = Der neue Auftrag wird im Puffer an der letzten Stelle eingereiht. |
i_xTerminateCurrentJob |
BOOL |
TRUE = Bricht beim Start einen eventuell aktiven Auftrag ab. FALSE = Der neue Auftrag wird gepuffert, wenn ein anderer Auftrag aktiv ist. |
Methode TakePosJob
Startet eine Positionierung mit den angegebenen Parametern.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_etChannel |
Kanal, über den der Auftrag ausgeführt werden soll. |
|
i_diJobId |
DINT |
Während der Ausführung wird diese JobId in der Variablen stRTDataTemp.stChannel_x.diCurrentJobId angezeigt. |
i_etPosMode |
Positioniermodus, z. B. ET_PosMode.Relative |
|
i_lrPosition |
LREAL |
Zielposition bzw. Distanz |
i_lrVelocity |
LREAL |
Maximale Geschwindigkeit in Einheiten/s |
i_lrAcceleration |
LREAL |
Maximale Beschleunigung in Einheiten/s2 |
i_lrDeceleration |
LREAL |
Maximale Verzögerung in Einheiten/s2 |
i_lrJerk |
LREAL |
Maximaler Ruck in Einheiten/s3 |
i_lrDelay |
LREAL |
Startverzögerung in ms |
i_xClearBufferedJobs |
BOOL |
TRUE = Löscht beim Start alle gepufferten Aufträge. FALSE = Der neue Auftrag wird im Puffer an der letzten Stelle eingereiht. |
i_xTerminateCurrentJob |
BOOL |
TRUE = Bricht beim Start einen eventuell aktiven Auftrag ab. FALSE = Der neue Auftrag wird gepuffert, wenn ein anderer Auftrag aktiv ist. |
Methode TakeSetPosJob
Verändert die Position eines Kanals. Die Achsposition entspricht nach dem SetPos wieder der Summe aller Kanäle.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_etChannel |
Kanal, über den der Auftrag ausgeführt werden soll. |
|
i_diJobId |
DINT |
Während der Ausführung wird diese JobId in der Variablen stRTDataTemp.stChannel_x.diCurrentJobId angezeigt. |
i_etPosMode |
Positioniermodus, z. B. ET_PosMode.Relative |
|
i_lrValue |
LREAL |
Wert, auf den die Position eines Kanals gesetzt wird bzw. Wert um den die Position eines Kanals versetzt wird. |
Eigenschaften
Name |
Datentyp |
Zugriff |
Beschreibung |
---|---|---|---|
stRTData |
Lesen |
In dieser Eigenschaft werden Feedbackwerte vom SMG zur Verfügung gestellt (siehe ST_RealtimeData und ST_RealtimeChannel). Bevor diese jedoch verwendet werden können, müssen sie in eine lokale Variable kopiert werden: stRTDataTemp:=fbSmgAddOnSlave1.strData; Dieses Umkopieren wird in der Beispielapplikation durchgeführt. |
|
astTouchProbe |
Lesen/Schreiben |
Diese Eigenschaft bezieht sich ebenfalls auf eine SMG-Variable. Sie wird in der Beispielapplikation "Fliegende Säge" jedoch nicht verwendet. (Siehe auch ST_Touchprobe). |
|
stPhaseGenerator |
Lesen/Schreiben |
Diese Eigenschaft bezieht sich ebenfalls auf eine SMG-Variable. Sie wird in der Beispielapplikation "Fliegende Säge" jedoch nicht verwendet. (Siehe auch ST_PhaseGenerator). |