Robot Safety View
Robot Safety View zeigt einen Roboter: den Arbeitsraum aus seinen Programmen (TCP aller eingelernten Punkte und Linearbahnen), die aus dem Backup des Roboters gelesenen Sicherheitszonen und eine Prüfung, ob ein Punkt oder eine Bahn in eine verbotene Zone eindringt oder eine erlaubte Zone verlässt und wie nah sie der Grenze kommt.

Das Ergebnis ist eine Warnung, keine Sicherheitszertifizierung. Die Prüfung verwendet den TCP der eingelernten Punkte und die Geraden der Linearbewegungen (mit optionalem Werkzeugradius). Roboterarm, Werkzeuggeometrie, Bremswege, durch ein Signal geschaltete Zonen und die reale Zelle werden nicht ausgewertet. Das Ergebnis ersetzt nicht die Validierung und das Abnahmeprotokoll der Sicherheitskonfiguration. Die Sicherheitsdateien der Steuerung werden nur gelesen, nie geschrieben.

Wo: Menü Plugins » Robot Safety View; Kommando-API: plugin_cmd mit den Kommandos safety_open, safety_calculate, safety_status, safety_zones, safety_findings, safety_report, safety_image (siehe VeRa / Kommando-API).

Beispiele

Alle Beispiele zeigen einen Roboter R1 und Zonen "Zone n".


ABB SafeMove, Draufsicht: drei verbotene Zonen (rot, jeweils mit ihrer Belegtüberwachung, Beschriftungen 1/2, 3/4 und 5/6), die erlaubte Arbeitszelle (grün, Beschriftung 31), die Kontur des Arbeitsraums der Programme (blau gestrichelt) mit den TCP-Punkten und die Punkte, die näher als 1000 mm an einer Grenze liegen (orange; Nahe der Grenze = 1000 mm). 0 Verletzungen. Die Zonentabelle zeigt Aktivierung (Eingangssignal oder permanent), Stoppreaktion und den kleinsten Abstand jeder Zone.


Derselbe Roboter in der Seitenansicht (X-Z): die Zonen mit ihren Z-Grenzen, der Quader um die TCP-Punkte und die gepunktete Linie Z = 0.


Fanuc DCS: die Zonen der Cartesian Position Check (ein erlaubtes Polygon, zwei verbotene Quader, durch einen Disabling input geschaltet - gestrichelt). Dieser Roboter hat eine externe Achse (J7), deshalb rät das Programm seine Position in WORLD nicht: die Meldung im Panel sagt, dass Arbeitsraum und Prüfung nicht ausgewertet werden; die Zonen werden weiterhin gezeigt.

Beispielbericht: HTML und PDF - Zusammenfassung, Zonentabelle, Befunde und die Bilder mit der Legende.

Die Ansicht lesen

Die Bilder dieses Abschnitts stammen aus zwei Demo-Archiven (ein KUKA-iiQKA-Roboter mit Demo-Arbeitsräumen und ein KUKA-VKRC-Roboter mit Kreisbewegungen) und zeigen die englische Oberfläche. Die Demo-Zonen wurden in eine Kopie des Archivs geschrieben, damit jede Markierung vorkommt; es sind nicht die Zonen einer realen Zelle.

Das Ergebnis ist eine Warnung, keine Sicherheitsbescheinigung. Ein Befund heißt "diese Stelle im Programm ansehen"; kein Befund heißt nicht, dass die Zelle sicher ist (Roboterarm, Werkzeuggeometrie, Bremswege und die reale Zelle werden nicht bewertet).


Das Fenster: links die Zeichnung (Reiter Draufsicht (X-Y) und Seitenansicht (X-Z)) mit der Legende darunter, rechts das Panel Roboter und Zonen mit der Datei, den Prüfeinstellungen, der Zusammenfassung, der Zonentabelle und der Befundtabelle. Demo: KUKA iiQKA, Arbeitsräume $WORKSPACE[1..8] aus $custom.dat und ein Achsarbeitsraum $AXWORKSPACE[8]; Nahe der Grenze = 50 mm, Werkzeugradius = 0 mm; Zone 206 ist vom Bericht ausgeschlossen.


Dieselbe Draufsicht als exportiertes Bild (Bild exportieren... / API safety_image) mit der Legende (der untere Teil der großen grauen Zone 201 ist hier abgeschnitten). Was sie zeigt:
Ein Roboter mit Kreisbewegungen (KUKA VKRC, Draufsicht): die blauen Quadrate sind die TCP-Punkte, die dünnen durchgezogenen blauen Kurven sind Kreisbewegungen (vom vorherigen Punkt über den Hilfspunkt zum Zielpunkt), das blaue gestrichelte Polygon ist die Kontur des Arbeitsraums. SafeOperation ist in dieser Steuerung ausgeschaltet - ihre Zone ist als deaktiviert gelistet und nicht gezeichnet, deshalb gibt es keinen Befund.


Ausschnitt der exportierten Draufsicht: zwei Kreisbewegungen als Bögen zwischen Start- und Zielpunkt.


Derselbe Roboter in der Seitenansicht (X-Z): der Quader um die TCP-Punkte (blau gestrichelt), die Bögen, der Ursprung von WORLD mit den Buchstaben X und Z und die gepunktete Linie Z = 0.

Markierungen der Zeichnung
MarkierungBedeutung
hellrote Fläche mit rotem Rand (2 px)verbotene Zone mit Stoppreaktion: der TCP darf nicht eindringen. Eine Verletzung ist ein Punkt oder eine Bahn darin.
grüner Rand (2 px), ohne Füllungerlaubte Zone mit Stoppreaktion: der Roboter muss darin bleiben. Eine Verletzung ist ein Punkt oder eine Bahn außerhalb.
gestrichelter Rand (rot oder grün)durch ein Signal geschaltete Zone (SafeOperation: Aktivierung über einen Eingang; Fanuc: Disabling input; ABB: Aktivierungssignal). Sie wird geprüft, als wäre sie aktiv; die Befunde bekommen den Hinweis "Zone durch ein Signal geschaltet". Beispiel: das Fanuc-Bild unter Beispiele oben.
grauer Rand (1 px), ohne Füllungnur Information: keine Stoppreaktion (KUKA-MODE ohne STOP, ABB NoStop, Belegtsignale). Gezeichnet, nicht geprüft, keine Befunde.
gepunkteter Rand (rot, grün oder grau)KUKA $WORKSPACE[n]: Überwachungs-Arbeitsraum der Steuerung, keine Sicherheitszone. Die Farbe folgt dem MODE (INSIDE_STOP = rot, OUTSIDE_STOP = grün, ohne STOP = grau).
nicht gezeichnetKUKA $AXWORKSPACE[n] (Achsbereiche, keine X-Y-Z-Form), in der Steuerung ausgeschaltete Zonen (z. B. #OFF, SafeOperation ausgeschaltet), Zonen mit einem Fehler (z. B. gekipptes Koordinatensystem), Zonen ohne Haken Bericht. Sie stehen in der Zonentabelle.
blauer gestrichelter RandArbeitsraum der Programme: Draufsicht - konvexe Hülle aller TCP-Punkte und Kreispunkte; Seitenansicht - der Quader darum (X und Z).
kleine blaue QuadrateTCP-Punkte der Programme (Zielpunkte in WORLD), nur mit TCP-Punkte anzeigen.
Linearbewegungennicht als Linien gezeichnet - ihre Geraden werden geprüft (Befund der Art segment), die Zeichnung zeigt ihre Endpunkte.
dünne durchgezogene blaue KurveKreisbewegung (z. B. KUKA CIRC, Yaskawa MOVC) als Bogen vom vorherigen Punkt über den Hilfspunkt zum Zielpunkt; entlang des Bogens geprüft (Art arc). Nur mit TCP-Punkte anzeigen.
großer roter Punkt (120 mm)Verletzung: am TCP-Punkt (Art point) oder an der tiefsten Stelle der Geraden bzw. des Bogens (Arten segment, arc).
großer oranger Punkt (120 mm)nahe der Grenze: auf der erlaubten Seite, aber der Abstand (mit Werkzeugradius) ist kleiner als Nahe der Grenze. Die Punkte werden in der Reihenfolge der Befundtabelle gezeichnet (schlimmste zuerst), ein oranger Punkt kann deshalb einen roten an derselben Stelle verdecken.
Kreuz mit X und Y (Draufsicht) oder X und Z (Seitenansicht)Ursprung von WORLD (die Linien reichen von -300 bis +600 mm).
gepunktete braune Linie (Seitenansicht)Z = 0 (Hallenboden).
Beschriftung 202 $WORKSPACE[2]...Zonennummer und ein Kurzname (auf 14 Zeichen gekürzt); Zonen mit gleicher Form teilen sich eine Beschriftung (Nummern mit / verbunden). Die vollen Namen stehen im Tooltip der Beschriftung und in der Zonentabelle. Beschriftungen behalten beim Zoomen ihre Größe und werden verschoben, wenn sie sich verdecken würden.


Das Panel Roboter und Zonen der Demo (verbreitert): die Zonentabelle mit der vom Bericht ausgeschlossenen Zone 206 (graue Zeile) und die Befundtabelle mit den Arten point, axisWorkspace und segment.

Zonentabelle
SpalteBedeutung
BerichtHaken: die Zone wird ausgewertet, gezeichnet und in den Bericht geschrieben. Ohne Haken ist die Zeile grau und die Zone wird nicht ausgewertet (Status "nicht im Bericht (nicht ausgewertet)"). Schaltflächen Alle / Keine; API report_zones / report_exclude; je Archiv gespeichert.
Nr.Nummer der Zone: die Nummer der Steuerung (Fanuc, ABB, SafeOperation-Räume), 100 = Zellbereich von SafeOperation, 200 + n = KUKA $WORKSPACE[n], 300 + n = KUKA $AXWORKSPACE[n].
NameName aus der Sicherheitskonfiguration; KUKA: $WORKSPACE[n] <MODE>, $AXWORKSPACE[n] <MODE> (Name).
Typerlaubt oder verboten und die Form (Quader, Polygon, Achsbereiche); bei KUKA-Arbeitsräumen der Hinweis, dass es ein Arbeitsraum der Steuerung und keine Sicherheitszone ist.
Z [mm]untere und obere Z-Grenze (- bei Achsbereichen).
KoordinatensystemKoordinatensystem der Zone (WORLD, User Frame ...); bei $AXWORKSPACE die überwachten Achsen und ihre Bereiche in Grad.
Aktivierungpermanent, durch ein Signal (in der Zeichnung gestrichelt) oder der KUKA-MODE.
StoppReaktion der Steuerung (Roboter stoppt / kein Stopp: nur Ausgang).
StatusErgebnis je Zone: kleinster Abstand, Anzahl der Verletzungen und der Punkte nahe der Grenze, oder warum die Zone nicht geprüft wird (nur Information, in der Steuerung deaktiviert, nicht im Bericht, Fehler).

Befundtabelle (schlimmste zuerst, Doppelklick öffnet das Programm in der Zeile)
SpalteBedeutung
Stufeviolation (Verletzung, Abstand unter 0) oder near (nahe der Grenze, Abstand von 0 bis zum Wert von Nahe der Grenze, bei $AXWORKSPACE Nahe der Grenze (Achsen)).
ZoneNummer und Name der Zone.
Artpoint - der TCP eines geteachten Punkts; segment - die Gerade einer Linearbewegung vom vorherigen Punkt geht tiefer in die Zone als ihre beiden Endpunkte (die Punkte selbst haben eigene Befunde); arc - eine Kreisbewegung, entlang des Bogens geprüft, geht tiefer als ihre Endpunkte; axisWorkspace - die Achswerte eines Punkts gegen einen KUKA $AXWORKSPACE (keine Position in der Zeichnung).
AbstandAbstand zur Grenze auf der erlaubten Seite: in mm (der Werkzeugradius ist abgezogen), bei axisWorkspace in Grad. Negativ = wie tief der TCP oder die Bahn auf der falschen Seite liegt.
Programm, Punkt, Zeiledas Programm, der Name des Zielpunkts der Bewegung und die Zeile der Bewegung im Programm.
PositionX Y Z in WORLD des Befunds (bei segment / arc die tiefste Stelle der Bahn); bei axisWorkspace die Achswerte gegen ihre Bereiche, z. B. A1 -15.0 outside 80.0 .. 125.0.
Hinweisz. B. "Zone durch ein Signal geschaltet", "Achsarbeitsraum: Abstand in Grad (Werkzeugradius nicht verwendet)".

Woher die Daten kommen (je Roboter)

RoboterProgramme (Arbeitsraum)Sicherheitszonen
FanucTextprogramme *.LS des Backups (die binären *.TP-Dateien werden nicht gelesen); TCP in WORLD aus den Punktdaten, UT / UF und der Kinematik des RobotersDCSVRFY.DG
ABBRAPID-Module *.mod / *.sys (im Modul deklarierte oder in der Anweisung stehende Robtargets), Werkzeug und Werkobjekt aus der AnweisungBACKINFO\sc_cfg.xml
KUKA VKRC / KRCFolgen, UPs und Makros *.src mit den Punkten der .dat-Datei (TCP in WORLD, nur bei einem in WORLD stehenden Roboter - siehe Wie Robot Safety View rechnet)SCTLPARA.SAF (Zellenbereich und 16 überwachte Räume) und die Arbeitsräume $WORKSPACE[n] aus KRC\STEU\Mada\$custom.dat sowie die achsspezifischen Arbeitsräume $AXWORKSPACE[n] aus KRC\R1\Mada\$machine.dat (nur KUKA KRC; beide bei VKRC vorerst nicht gezeigt)
KUKA iiQKAKRL-Programme *.src / *.dat des Backups (wie KUKA KRC)active_safety_configuration.yml, die Arbeitsräume $WORKSPACE[n] aus KRC\STEU\Mada\$custom.dat und die achsspezifischen Arbeitsräume $AXWORKSPACE[n] aus KRC\R1\Mada\$machine.dat
YaskawaINFORM-Jobs *.JBIFSU-Blöcke //RBRNGLMT ... (erkannt, nicht interpretiert)

Lizenz

Die Basislizenz des Roboters, auf den sich der Bericht bezieht: VKRC_HASP (KUKA VKRC), KRC_HASP (KUKA KRC), VFANUC_HASP (Fanuc), ABB_HASP (ABB) oder YASKAWA_HASP (Yaskawa). Die Programme eines Roboters ohne seine Basislizenz werden nicht analysiert. Das Fenster öffnet sich ohne Lizenz; die Lizenz wird bei Recalculate bzw. Read zones geprüft und muss die des analysierten Roboters sein (ein ABB-Archiv braucht die ABB-Basislizenz, ein VKRC-Archiv die VKRC-Basislizenz usw.), nicht irgendeine. Ein KUKA iiQKA-Archiv (mit der Sicherheitskonfiguration active_safety_configuration.yml oder KRL-Programmen eines iiQKA-Backups) braucht statt KRC_HASP die Lizenz iiQKA. Eine zusätzliche Lizenz ist nicht nötig.

Wie Robot Safety View rechnet

Robot Safety View vergleicht die Punkte der Roboterprogramme mit den Zonen der Sicherheitskonfiguration. Es ist eine Plausibilitätsprüfung der Programme gegen die aus dem Archiv gelesenen Zonen - eine Warnung, keine Sicherheitsabnahme.

1. Punkte: der TCP jedes Bewegungspunkts in WORLD

2. Zonengeometrie und Abstand

3. Bahnen zwischen den Punkten

4. KUKA-Achsarbeitsräume $AXWORKSPACE: die Achsen der Punkte

5. Zonen, die nicht ausgewertet werden

6. Überhaupt nicht ausgewertet

Das Ergebnis ist eine Warnung, keine Sicherheitsabnahme: die Sicherheitskonfiguration muss am Roboter validiert werden.

Fanuc (Dual Check Safety)

ABB (SafeMove)

Yaskawa (Functional Safety Unit)

KUKA (SafeOperation)

KUKA-Arbeitsräume $WORKSPACE[n] (KUKA KSS und KUKA iiQKA)

KUKA-Achsarbeitsräume $AXWORKSPACE[n] (KUKA KSS und KUKA iiQKA)

KUKA iiQKA (Sicherheitskonfiguration)

Programme von KUKA KRC und iiQKA

Die Punkte von KUKA-KRC- und KUKA-iiQKA-Programmen werden wie die VKRC-Punkte ausgewertet: der TCP des Werkzeugs des Punkts in WORLD, nur bei einem in WORLD stehenden Roboter ($ROBROOT = 0, keine Linearachse) - siehe Wie Robot Safety View rechnet.

Legende der Zeichnung

Dieselbe Legende steht im Fenster unter der Ansicht und unter den Bildern des Berichts. Beispiele für jede Markierung und die Spalten der Tabellen: Die Ansicht lesen.
ZeichnungBedeutung
rote Fläche mit rotem Randverbotene Zone: der TCP darf nicht eindringen
grüner Rand, ohne Füllungerlaubte Zone: der Roboter muss darin bleiben
gestrichelter Rand (rot oder grün)Zone, die durch ein Signal aktiviert (Fanuc: deaktiviert) wird - wird als aktiv geprüft
grauer Randnur Information: eine Überwachung ohne Stoppreaktion (ABB NoStop, Belegtsignale) oder eine Zonenform ohne Überwachung
gepunkteter RandKUKA $WORKSPACE[n]: Überwachungs-Arbeitsraum der Steuerung, keine Sicherheitszone
blauer gestrichelter RandArbeitsraum der Programme: die Kontur aller TCP-Punkte in der Draufsicht, der Quader darum in der Seitenansicht
blaue PunkteTCP-Punkte der Programme (Zielpunkte in WORLD)
Kreuz mit den Buchstaben X und Y (Draufsicht) oder X und Z (Seitenansicht)Ursprung des Koordinatensystems WORLD
gepunktete waagerechte Linie (Seitenansicht)Z = 0 (Hallenboden)
Beschriftung 1/2 NameZonennummer und ein Kurzname; Zonen mit gleicher Form teilen sich eine Beschriftung (z. B. eine Zone und ihre Belegtüberwachung); eine Beschriftung wird verschoben, wenn sie eine andere verdecken würde; die vollen Namen stehen im Tooltip der Beschriftung und in der Zonentabelle
roter PunktVerletzung (der TCP oder eine Linearbahn ist in einer verbotenen Zone oder außerhalb einer erlaubten)
oranger Punktnahe der Grenze (auf der erlaubten Seite näher als der Wert von Nahe der Grenze)
Die KUKA-Achsarbeitsräume $AXWORKSPACE[n] haben keine Position in X, Y, Z: sie und ihre Befunde werden nicht gezeichnet, nur in den Tabellen gelistet. Zonen ohne Haken Bericht werden nicht gezeichnet. In den Berichtstabellen sind die Zeilen der Verletzungen rot und der Punkte nahe der Grenze orange.

Fenster

Kommando-API: Parameter der Achsarbeitsräume und der Berichtszonen

Diese Parameter sind neu (die übrigen Parameter sind oben bei den Feldern des Fensters beschrieben):
ParameterKommandosBedeutungStandard
near_degsafety_open, safety_calculate, safety_report Feld Nahe der Grenze (Achsen) in Grad (Zahl, 0..90): Warnung nahe der Grenze der KUKA-Achsarbeitsräume $AXWORKSPACE. Keine Zahl = Fehler near_deg: number expected.der Wert des Felds (zuerst 2 Grad)
report_zonessafety_open, safety_calculate, safety_report nur diese Zonen im Bericht (Spalte Bericht): ein Array von Zonennummern (id aus safety_zones, z. B. 308) oder Namen (wie in der Zonentabelle) oder eine einzelne Nummer / ein Name; alle anderen Zonen entfallenfehlt = die gespeicherte Auswahl des Archivs (zuerst: alle Zonen)
report_excludesafety_open, safety_calculate, safety_report diese Zonen entfallen in der Auswertung und im Bericht (Nummern oder Namen wie bei report_zones); zusammen mit report_zones gelten beide. [] = keine Zone weggelassen.fehlt = die gespeicherte Auswahl des Archivs
Beispiel: {"cmd": "plugin_cmd", "plugin": "Robot Safety View", "command": "safety_calculate", "archive": "...zip", "near_deg": 3, "report_exclude": [208, 308]}.

Kommando-API: JSON der Ergebnisse

Die Antworten von safety_open, safety_calculate, safety_status und der JSON-Bericht enthalten diese Felder (zusätzlich zu den bisherigen); die Zonenfelder stehen auch in der Antwort von safety_zones:
FeldWoBedeutungStandard
iiqkaErgebnistrue = KUKA iiQKA (yml-Sicherheitskonfiguration im Archiv gefunden)false
workspacesErgebnisKUKA: Anzahl der definierten $WORKSPACE[n] (auch #OFF)0
workspaceFileErgebnisKUKA: Pfad der $custom.dat mit den Arbeitsräumenfehlt (keine Datei)
kindjede Zoneworkspace = KUKA $WORKSPACE (Überwachung der Steuerung, keine Sicherheitszone), safety = Sicherheitszonesafety
modejede Zone mit kind = workspaceMODE des Arbeitsraums, z. B. #INSIDE_STOP, #OUTSIDE, #OFFfehlt bei Sicherheitszonen
near_degErgebnisWert von Nahe der Grenze (Achsen) [Grad]2
axisWorkspacesErgebnisKUKA: Anzahl der definierten $AXWORKSPACE[n] (auch #OFF)0
axisWorkspaceFileErgebnisKUKA: Pfad der $machine.dat mit den Achsarbeitsräumenfehlt (keine Datei)
pointsWithAxes, pointsWithoutAxesErgebnisKUKA: Punkte mit / ohne Achswerte für $AXWORKSPACEfehlt (kein Achsarbeitsraum geprüft)
report_zones, report_excludeErgebnisNummern der Zonen im Bericht / weggelassen (Spalte Bericht)alle Zonen / []
reportjede Zonetrue = Zone ausgewertet und im Bericht. Die Antworten der Kommandos listen alle Zonen; die JSON-Datei des Berichts nur die Zonen des Berichts.true
kind = axisWorkspacejede ZoneKUKA $AXWORKSPACE (Achsüberwachung der Steuerung, keine Sicherheitszone), Nummer 300 + n; mit mode, axes (überwachte Achsen: {"A1": [N, P], ...}), unit = deg, axName (Name $AXWORKSPACE_NAMEn), minMargin_deg (statt minMargin_mm) und pointsNotEvaluated; polygon ist leer-
margin, unitjeder BefundAbstand auf der erlaubten Seite und seine Einheit (mm oder deg); zusätzlich margin_mm mit x, y, z oder bei kind = axisWorkspace margin_deg und axes (Text, z. B. A1 81.0 in 80.0 .. 125.0)mm
kindjeder Befundpoint (Zielpunkt), segment (Linearbewegung), arc (Kreisbewegung entlang des Bogens), axisWorkspace (KUKA $AXWORKSPACE)-
arcsErgebnisKreisbewegungen: {"evaluated": n, "asSegment": n, "notEvaluated": n} = entlang des Bogens geprüft / als Gerade geprüft (Punkte auf einer Geraden oder zusammenfallend) / nur Zielpunkt (Hilfs- oder Startpunkt nicht verfügbar)alle 0
otherMotionsErgebnisBewegungen anderer Art (Spline, nicht modellierte Bewegung wie Fanuc A): nur Zielpunkt0
archive / safetyFile kann auch eine KUKA-iiQKA-Backup-ZIP oder active_safety_configuration.yml sein; die neuen Parameter stehen in der Tabelle oben.

Grenzen