IF_RobotMotion - ClearSegmentsFromId (Methode)
Typ: |
Methode |
Verfügbar ab: |
V1.0.0.0 |
Dieses Kapitel enthält Informationen zu folgenden Aspekten:
Löschen von abgesetzten Fahrbefehlen.
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(…).
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 |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich GD.ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
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. |
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.
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.
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.
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.
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
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.
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.
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.
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
0 |
Ok |
|
ExecutionAborted |
80 |
Der Roboter befindet sich bereits im Segment. |
|
ExecutionAborted |
73 |
Der Roboter befindet sich bereits in der Zone. |
|
ExecutionAborted |
9 |
Es ist keine verbundene Bahn verfügbar. |
|
ExecutionAborted |
101 |
Der Roboter ist bereits durch das Segment gefahren. |
|
ExecutionAborted |
100 |
Das Segment wurde nicht gefunden. |
|
ExecutionAborted |
102 |
Der Roboter kann nicht vor dem Segment stoppen. |
|
ExecutionAborted |
205 |
Die externe Positionsquelle wurde konfiguriert. |
|
UnexpectedProgramBehavior |
3 |
Eine Schnittstelle ist ungültig. |
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. |
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. |
Enumerationsname: |
InterfaceInvalid |
Enumerationswert: |
3 |
Beschreibung: |
Eine Schnittstelle ist ungültig. |
Es wurde kein Fahrauftrag gelöscht.
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. |
Enumerationsname: |
Ok |
Enumerationswert: |
0 |
Beschreibung: |
Ok |
Alle Fahraufträge ab und einschließlich der am Eingang i_udiSegmentId übergebenen ID wurden erfolgreich gelöscht.
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. |
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. |