Aufbau des Demoprojekts

Aufrufe

Aufruf des Funktionsbaustein FB_SmgAddOnModule

Der Aufruf des AxisModule und des FB_SmgAddOnModule erfolgt in der Aktion SubModules des Equipmentmoduls SR_SmgAddOnModule.

G-SE-0069347.1.gif-high.gif

 

 

Aufruf der Beispielapplikation

Der Aufruf der Beispielapplikation erfolgt in der Aktionslogik des Equipmentmoduls SR_SmgAddOnModule.

Als Beispiel wurde hier eine fliegende Säge umgesetzt:

G-SE-0069345.1.gif-high.gif

 

 

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 "stSlave1In­terface" (AXM.ST_ModuleInterface).

G-SE-0069349.1.gif-high.gif 

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).

G-SE-0069346.1.gif-high.gif 

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 erforder­lichen 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:

G-SE-0069366.1.gif-high.gif

 

 

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

ET_Channel

Kanal, über den der Auftrag ausgeführt wird.

Ein-/Ausgang

Datentyp

Beschreibung

iq_stMotionJob

ST_MotionJob

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

ST_MotionJob für den Kanal A

iq_stMotionJobB

ST_MotionJob

ST_MotionJob für den Kanal B

iq_stMotionJobC

ST_MotionJob

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

ET_Channel

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

ET_CamMode

Abbruchkriterium des Kurvenauftrags, z. B. ET_CamMode.Endless

i_etSlaveSetPosMode

ET_SetposMode

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

ET_SetposMode

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

PDL.ST_MultiCam

MultiCam-Struktur

Methode TakePoly5CamJob

Startet ein Polynom 5. Grades mit variablen Anfangs-und Endwerten.

Eingang

Datentyp

Beschreibung

i_etChannel

ET_Channel

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

ET_CamMode

Abbruchkriterium des Kurvenauftrags, z. B. ET_CamMode.Endless

i_etSlaveSetPosMode

ET_SetposMode

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

ET_SetposMode

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

ET_Channel

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

ET_PosMode

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

ET_Channel

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

ET_PosMode

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

ST_RealtimeData

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

ST_Touchprobe

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

ST_PhaseGenerator

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).