IF_RobotMotion - ClearSegmentsFromId (Methode)

Übersicht

Typ:

Methode

Verfügbar ab:

V1.0.0.0

Dieses Kapitel enthält Informationen zu folgenden Aspekten:

oAufgabenstellung

oBeschreibung

oSchnittstelle

oDiagnosemeldungen

Aufgabenstellung

Löschen von abgesetzten Fahrbefehlen.

Beschreibung

Mit der Methode ClearSegmentsFromId(...) können ein bereits abgesetzter Fahrauftrag mit der ID i_udiSegmentId sowie alle auf diesen Fahrauftrag nachfolgenden Fahraufträge wieder gelöscht werden.

Fallbeispiele erläutern das Verhalten der Methode ClearSegmentsFromId(…).

Schnittstelle

Eingang

Datentyp

Beschreibung

i_udiSegmentId

UDINT

ID des zu löschenden Fahrauftrags. Alle folgenden Fahraufträge werden ebenfalls gelöscht.

Der zu löschende Fahrauftrag mit der ID i_udiSegmentId wird über alle im Roboter konfigurierten verbundenen Bahnen hinweg gesucht.

Sonderfall: ID = 0 -> In diesem Fall werden alle im Roboter konfigurierten Fahraufträge gelöscht.

Voraussetzung dafür ist, dass der Roboter sich im Stillstand - IF_RobotFeedback.xInMoiton = FALSE - befindet.

Ausgang

Datentyp

Beschreibung

q_etDiag

GD.ET_Diag

Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose.

Ein Wert ungleich GD.ET_Diag.Ok entspricht einer Diagnosemeldung.

q_etDiagExt

ET_DiagExt

Bausteinspezifischer Ausgang zur Diagnose.

q_etDiag = ET_Diag.Ok -> Statusmeldung

q_etDiag <> ET_Diag.Ok -> Diagnosemeldung

q_sMsg

STRING[80]

Ereignisabhängige Meldung, die zusätzliche Informationen über den Diagnosezustand gibt.

Fallbeispiel 1

Ausgangssituation:

oFB_Robot.xEnable = TRUE -> FB_Robot.xActive = TRUE UND FB_Robot.xReady = TRUE.

oFB_Robot.xStart = FALSE -> Der Roboter beginnt nicht mit der Abarbeitung von Fahrbefehlen.

oEs wurden Fahrbefehle (MoveL, MoveC) abgesetzt. Siehe Grafik.

o IF_RobotFeedback.xInMotion = FALSE.

G-SE-0064128.1.gif-high.gif

 

 

1. Es müssen alle abgesetzten Fahraufträge wieder gelöscht werden.

Variante 1:


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 0,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oAlle abgesetzten Fahraufträge werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

Variante 2:


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 10,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oAlle abgesetzten Fahraufträge werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

2. Es mussen der Fahrauftrag mit SegmentId = 20 und alle folgenden gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 20,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDer Fahrauftrag mit SegmentId = 20 und alle folgenden werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

3. Es müssen der Fahrauftrag mit SegmentId = 30 und alle folgenden gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 30,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDer Fahrauftrag mit SegmentId = 30 und alle folgenden werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

Fallbeispiel 2

Ausgangssituation:

o FB_Robot.xEnable = TRUE -> FB_Robot.xActive = TRUE UND FB_Robot.xReady = TRUE.

oFB_Robot.xStart = TRUE -> Der Roboter beginnt mit der Abarbeitung von Fahrbefehlen.

o Es wurden Fahrbefehle (MoveL, MoveC) abgesetzt. Siehe Grafik.

oIF_RobotFeedback.xInMotion = TRUE -> Der Roboter befindet sich im Fahrauftrag mit SegmentId = 10.

G-SE-0064129.1.gif-high.gif

 

 

1. Es müssen alle abgesetzten Fahraufträge gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 0,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDies ist an dieser Stelle nicht mehr möglich, da der Roboter sich im Fahrauftrag mit der SegmentId = 10 befindet und in Bewegung ist.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.ExecutionAborted UND q_etDiagExt = ET_DiagExt.AlreadyInSegment.

2. Es mussen der Fahrauftrag mit SegmentId = 10 und alle folgenden gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 10,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDies ist an dieser Stelle nicht mehr möglich, da der Roboter sich im Fahrauftrag mit der SegmentId = 10 befindet und in Bewegung ist.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.ExecutionAborted UND q_etDiagExt = ET_DiagExt.AlreadyInSegment.

3. Es müssen der Fahrauftrag mit JobId = 20 und alle folgenden gelöscht werden.

Vorraussetzung:

oEs ist möglich, anzuhalten, bevor der Fahrauftrag mit SegmentId = 20 beginnt.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 20,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDer Fahrauftrag mit SegmentId = 20 und alle folgenden werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

Vorraussetzung:

oEs ist nicht möglich, anzuhalten, bevor der Fahrauftrag mit SegmentId = 20 beginnt.

Ergebnis des Aufrufs:

oDer Fahrauftrag mit SegmentId = 20 und alle folgenden werden NICHT gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.ExecutionAborted UND q_etDiagExt = ET_DiagExt.StopInFrontOfSegmentNotPossible.

4. Es müssen der Fahrauftrag mit JobId = 30 und alle folgenden gelöscht werden.

Vorraussetzung:

oEs ist möglich, anzuhalten, bevor der Fahrauftrag mit SegmentId = 30 beginnt.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 30,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDer Fahrauftrag mit SegmentId = 30 und alle folgenden werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

Fallbeispiel 3

Ausgangssituation:

oFB_Robot.xEnable = TRUE -> FB_Robot.xActive = TRUE UND FB_Robot.xReady = TRUE.

oFB_Robot.xStart = TRUE ->FALSE.

oEs wurden Fahrbefehle (MoveL, MoveC) abgesetzt. Siehe Grafik.

oIF_RobotFeedback.xInMotion = FALSE -> Der Roboter bewegt sich nicht, befindet sich jedoch schon im Fahrauftrag mit = 10.SegmentId

G-SE-0064130.1.gif-high.gif

 

 

1. Es müssen alle abgesetzten Fahraufträge gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 0,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oAlle abgesetzten Fahraufträge werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

2. Es mussen der Fahrauftrag mit SegmentId = 10 und alle folgenden gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 0,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oAlle abgesetzten Fahraufträge werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

3. Es müssen der Fahrauftrag mit SegmentId = 20 und alle folgenden gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 20,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDer Fahrauftrag mit SegmentId = 20 und alle folgenden werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

4. Es müssen der Fahrauftrag mit SegmentId = 30 und alle folgenden gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 30,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDer Fahrauftrag mit SegmentId = 30 und alle folgenden werden gelöscht.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.Ok UND q_etDiagExt = ET_DiagExt.Ok.

Fallbeispiel 4

Ausgangssituation:

oFB_Robot.xEnable = TRUE -> FB_Robot.xActive = TRUE UND FB_Robot.xReady = TRUE.

oFB_Robot.xStart = TRUE.

oEs wurden Fahrbefehle (MoveL, MoveC) abgesetzt. Siehe Grafik.

oIF_RobotFeedback.xInMotion = TRUE -> Der Roboter bewegt sich und befindet sich im Fahrauftrag mit SegmentId = 20.

G-SE-0064131.1.gif-high.gif

 

 

1. Es mussen der Fahrauftrag mit SegmentId = 10 und alle folgenden gelöscht werden.


ifRobotMotion.ClearSegmentsFromId(   i_udiSegmentId := 10,
                                     q_etDiag => etDiag,
                                     q_etDiagExt => etDiagExt,
                                     q_sMsg => sMsg);

Ergebnis des Aufrufs:

oDer Fahrauftrag mit SegmentId = 10 kann nicht gelöscht werden, da sich der Roboter bereits im Fahrauftrag mit SegmentId = 20 befindet.

oDiagnosemeldung: q_etDiag = GD.ET_Diag.ExecutionAborted UND q_etDiagExt = ET_DiagExt.SegmentAlreadyPassed.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Ok

0

Ok

ExecutionAborted

AlreadyInSegment

80

Der Roboter befindet sich bereits im Segment.

ExecutionAborted

AlreadyInZone

73

Der Roboter befindet sich bereits in der Zone.

ExecutionAborted

NoConnectedPathAvailable

9

Es ist keine verbundene Bahn verfügbar.

ExecutionAborted

SegmentAlreadyPassed

101

Der Roboter ist bereits durch das Segment gefahren.

ExecutionAborted

SegmentNotFound

100

Das Segment wurde nicht gefunden.

ExecutionAborted

StopInFrontOfSegmentNotPossible

102

Der Roboter kann nicht vor dem Segment stoppen.

ExecutionAborted

ExternalPositionSourceConfigured

205

Die externe Positionsquelle wurde konfiguriert.

UnexpectedProgramBehavior

InterfaceInvalid

3

Eine Schnittstelle ist ungültig.

AlreadyInSegment

Enumerationsname:

AlreadyInSegment

Enumerationswert:

80

Beschreibung:

Der Roboter befindet sich bereits im Segment.

Problem

Ursache

Lösung

Es wurde kein Fahrauftrag gelöscht.

Der Fahrauftrag mit der am Eingang i_udiSegmentId übergebenen ID wird bereits abgefahren.

Sicherstellen, dass ClearSegmentsFromId(...) früh genug aufgerufen wird, um sicherzugehen, dass der Roboter nicht in das Segment gefahren ist, das gelöscht werden soll.

AlreadyInZone

Enumerationsname:

AlreadyInZone

Enumerationswert:

73

Beschreibung:

Der Roboter befindet sich bereits in der Zone.

Problem

Ursache

Lösung

Es wurde kein Fahrauftrag gelöscht.

Der Roboter befindet sich bereits in der Zone vor dem Fahrauftrag mit der am Eingang i_udiSegmentId übergebenen ID.

Sicherstellen, dass ClearSegmentsFromId(...) früh genug aufgerufen wird, um sicherzugehen, dass der Roboter sich nicht in der Zone vor dem Segment befindet, das gelöscht werden soll.

ExternalPositionSourceConfigured

Enumerationsname:

ExternalPositionSourceConfigured

Enumerationswert:

205

Beschreibung:

Die externe Positionsquelle wurde konfiguriert.

Problem

Ursache

Lösung

Es wurde kein Fahrauftrag gelöscht.

Für die Roboterkomponenten Kartesisch, Orientierung und Hilfsachsen wurde eine externe Positionsquelle konfiguriert.

Das Löschen von Fahraufträgen ist nicht möglich, wenn für die Roboterkomponenten eine externe Positionsquelle konfiguriert wurde.

Keine Fahraufträge löschen.

InterfaceInvalid

Enumerationsname:

InterfaceInvalid

Enumerationswert:

3

Beschreibung:

Eine Schnittstelle ist ungültig.

Es wurde kein Fahrauftrag gelöscht.

NoConnectedPathAvailable

Enumerationsname:

NoConnectedPathAvailable

Enumerationswert:

9

Beschreibung:

Es ist keine verbundene Bahn verfügbar.

Problem

Ursache

Lösung

Es konnten keine Fahraufträge gelöscht werden.

ClearSegmentsFromId(...) aufgerufen, aber es ist keine verbundene Bahn verfügbar.

Vor dem Aufruf von ClearSegmentsFromId(...) eine verbundene Bahn anlegen.

Ok

Enumerationsname:

Ok

Enumerationswert:

0

Beschreibung:

Ok

Alle Fahraufträge ab und einschließlich der am Eingang i_udiSegmentId übergebenen ID wurden erfolgreich gelöscht.

SegmentAlreadyPassed

Enumerationsname:

SegmentAlreadyPassed

Enumerationswert:

101

Beschreibung:

Der Roboter ist bereits durch das Segment gefahren.

Problem

Ursache

Lösung

Es wurde kein Fahrauftrag gelöscht.

Der Fahrauftrag mit der am Eingang i_udiSegmentId übergebenen ID wurde bereits abgefahren.

Sicherstellen, dass ClearSegmentsFromId(...) aufgerufen wird, bevor der Roboter das Segment abgefahren hat.

SegmentNotFound

Enumerationsname:

SegmentNotFound

Enumerationswert:

100

Beschreibung:

Das Segment wurde nicht gefunden.

Problem

Ursache

Lösung

Es wurde kein Fahrauftrag gelöscht.

Der Fahrauftrag mit der am Eingang i_udiSegmentId übergebenen ID wurde nicht gefunden.

Sicherstellen, dass ein Segment mit der ID i_udiSegmentId erfolgreich zum Roboter geschickt wurde.

StopInFrontOfSegmentNotPossible

Enumerationsname:

StopInFrontOfSegmentNotPossible

Enumerationswert:

102

Beschreibung:

Der Roboter kann nicht vor dem Segment stoppen.

Problem

Ursache

Lösung

Es wurde kein Fahrauftrag gelöscht.

Es ist nicht mehr möglich, vor dem Fahrauftrag mit der am Eingang i_udiSegmentId übergebenen ID zu stoppen.

Sicherstellen, dass ClearSegmentsFromId(...) früh genug aufgerufen wird, sodass der Roboter vor Befahren des Segments anhalten kann.