Robot Cell Simulator – Zellensimulation
« Programme und Bahnen | Inhalt | Stations-SPS und SmartPad »
Auf allen Robotern ausführenWie die Roboter fahrenFanuc-ProgrammeOptionen des AblaufsKollisionsgefahrLive-3D-KollisionsprüfungVerriegelungssignaleProgrammablaufPOT-ProzesszeitenMerker und FB PSPSBewegungsplaner BewegungszeitenSimulationsdateiPlugin-EinstellungenBefehls-APIWie realistisch ist die Simulation?

Auf allen Robotern ausführen Simulation

Die Registerkarte Simulation startet dasselbe Programm (z. B. Folge 12) gleichzeitig auf allen Robotern der Zelle. Loops wiederholt den Durchlauf, Stop on breakpoints verwendet die Haltepunkte der Programme (siehe Programmablauf), Stop all stoppt alle Roboter. Derselbe Befehl steht unter Simulation → Run program on all robots....

Program: Typ Folge oder UP und die Nummer (1..9999). Loops: 1..999. Mit dem SPS-Programm ist das Feld gesperrt und zeigt die Zyklen des Blocks Start des SPS-Programms. Während des Ablaufs zeigt der Zähler daneben n / m (der Roboter, der am weitesten zurück ist).

Speed: 0..400 % der Echtzeit, mit dem Schieberegler, dem Feld und den Knöpfen 25 / 50 / 100 / 200 / 400 %. 0 % = Pause. Der Knopf Pause setzt die Geschwindigkeit auf 0: die Roboter, die Halte bei Befehlen und die Uhr der Station stehen. Resume (derselbe Knopf) fährt mit der Geschwindigkeit vor der Pause weiter.

Start in zwei Phasen: die Roboter bereiten zuerst den Ablauf vor (der Bahnplaner berechnet die Bahn des ersten Durchlaufs und den Start der nächsten), die Simulationsuhr steht dabei; sind alle Roboter bereit, startet die Uhr und alle Roboter fahren zusammen los (Konsole: Alle Roboter sind bereit ... Vorbereitung x s, nicht in der Simulationszeit; SmartPad: Bewegung wird vorbereitet / Bereit).

Vorbereitung im Hintergrund: nach dem Laden einer Studie oder Simulation, einer Änderung des SPS-Programms oder des Programms dieser Registerkarte werden die Programme, die die Roboter fahren (Folge und die daraus aufgerufenen UP), im Hintergrund geparst, eine Datei nach der anderen, die Szene bleibt bedienbar (Konsole: Simulation wird vorbereitet ..., kleines Fenster mit Fortschrittsbalken in der Ecke). Der Start nimmt sie dann aus dem Speicher (Konsole: Roboter vorbereitet in x s: n Programm(e) aus dem Speicher, m jetzt geparst); ein im SmartPad oder Editor geändertes Programm wird neu geparst, Makros beim Start.

Bis zu 12 Roboter gleichzeitig; jeder Roboter läuft in einem eigenen Thread, der Rechner braucht daher mindestens Roboter + 1 logische Prozessoren – siehe Ablauf, Prozessor und Genauigkeit.

Der grüne Knopf SPS fährt die Zelle mit der simulierten Stations-SPS: Folgenstart, Freigaben der Station und Zyklen kommen aus dem SPS-Programm – siehe Stations-SPS und SmartPad.

Schnellstart (Fast Run) – unter dem Knopf SPS eine Reihe von Knöpfen, die ein festgelegtes Programm sofort auf allen Robotern starten, mit der angegebenen Anzahl von Durchläufen und ohne das SPS-Programm (der Knopf SPS und die Felder des Reiters bleiben unverändert; das nächste Auf allen Robotern ausführen läuft wieder mit der SPS). Typisch: Folge 125, um alle Roboter vor der Simulation mit der SPS in HOME zu fahren (nach dem Laden einer Zelle stehen die Roboter nie in HOME). Die Knöpfe stehen in template/RCS/fast_run.xml von DReS, ein Element je Knopf:

<FastRun version="1">
  <Button program="folge123" loops="1"/>
  <Button program="folge125" loops="1" text="HOME" tooltip="Alle Roboter in HOME"/>
</FastRun>

program – Folge oder UP mit Nummer (folge125, Folge 125, up42), loops – Anzahl der Durchläufe (Standard 1), text / tooltip – optional. Passen die Knöpfe nicht in eine Zeile, wird umgebrochen; ohne Knöpfe ist die Reihe ausgeblendet. Eine geänderte Datei wird sofort neu gelesen; Rechtsklick auf die Reihe: Datei öffnen / Knöpfe neu laden. Die Optionen des Reiters (Verriegelungssignale, Programmregeln, Geschwindigkeit) gelten wie bei Auf allen Robotern ausführen. Fast Run läuft immer ohne das SPS-Programm, auch wenn der Knopf SPS eingeschaltet ist; Stop on breakpoints gilt auch hier.

Alle Roboter der Zelle während des Ablaufs von Folge 81

Ende der Simulation: endet eine Stationssimulation, meldet das Fenster Simulation beendet Die Simulation der Station ist beendet. Das Fenster ist nicht modal – Szene, Konsole und die anderen Fenster bleiben bedienbar, solange es offen ist. Mit Diese Meldung nicht mehr anzeigen (bis DReS neu gestartet wird) kommt es in dieser Sitzung nicht mehr; nach dem nächsten Start von DReS erscheint es wieder. Hat der Lauf Wettläufe gefunden, kommt stattdessen das Fenster Wettlauf gefunden (siehe Wettläufe: Vorschlag und Simulation beider Reihenfolgen). Es ist immer nur ein Fenster Simulation beendet offen: endet der nächste Lauf, während es noch offen ist, wird sein Text ersetzt (vorher konnten zwei oder drei Fenster gleichzeitig offen sein).

Über die Befehls-API gestartete Läufe (seit 2026-10-25): ein Lauf, ein Robustheitstest oder eine Simulation beider Reihenfolgen, den ein Skript oder der KI-Agent über die Befehls-API gestartet – oder angehalten – hat, endet ohne die Fenster Simulation beendet, Kollisionsgefahr in der Simulation, Wettläufe der Anforderungen, Wettlauf gefunden und Simulation beider Reihenfolgen - Ergebnis; ihr Text steht in der Konsole und in der API (status.lastRunMessages, run_data). Vorher blieben nach 50 Läufen und Stopps über die API etwa 90 Fenster offen. Eine über die API geladene Simulationsdatei öffnet auch nicht Simulation laden – Nicht wiederhergestellt. Mit den Schaltflächen des Fensters gestartete Läufe zeigen die Fenster wie bisher. Die Pause bei Kollisionsgefahr (Option Simulation bei Kollisionsgefahr anhalten) öffnet ihr Fenster mit Weiter auch bei einem Lauf der API.

DReS während einer Simulation schließen (seit 2026-10-25): DReS fragt nur einmal – das Fenster des Simulators fragt Die Simulation läuft. Die Simulation wirklich stoppen? (Vorgabe Nein; mit Nein bleibt DReS mit seinen Lizenzen offen). Die Frage Plugin important result von DReS kommt nur, wenn das Fenster des Simulators geschlossen (ausgeblendet) ist und noch eine Simulation oder ein Robustheitstest läuft. Wird DReS geschlossen, während eine Datei geladen wird, wartet das Schließen bis zum Ende des Ladens (Meldung in der Konsole), dann schließt sich DReS selbst. Die Uhr der Simulation (simTime in der API) steht, solange keine Simulation läuft, auch nach dem Öffnen des Simulators.

Meldung Simulation beendet am Ende einer Stationssimulation, mit dem Kontrollkästchen, das sie bis zum nächsten Start von DReS ausblendet

Wie die Roboter in der Simulation fahren

Fanuc-Programme in der Simulation

Ein Fanuc-Roboter (VW-Standard, siehe Fanuc-Roboter) fährt in der Simulation wie ein KUKA-Roboter: beim Laden des Archivs werden seine .ls-Programme in Ersatz-KUKA-Programme im Cache-Ordner übersetzt, und diese laufen mit denselben Optionen, demselben SPS-Programm, denselben Verriegelungen und Berichten. Die .ls-Dateien des Archivs bleiben unverändert.

FanucIn der Simulation
FOLGEnnn, UPnnn, MAKROnnnFolge n, UP n, Makro n (z. B. FOLGE31 → Folge 31, UP031 → UP 31)
Bewegungsprogramme MOTNnnnUnterprogramme mit einer freien UP-Nummer (die Konsole listet die Nummern)
DO[n], DI[n], F[n], M[n]Ausgang A n, Eingang E n, Flag F n, Merker M n
DO[n]=PULSEPuls
TC_ONLINE (...)Bewegungsbedingung: die erste als FB ONL, die weiteren als FB PSPS (siehe FB PSPS)
WAIT (Bedingung) / WAIT x(sec)WARTE BIS / WARTE ZEIT
TIMER[n]=RESET, TIMER[n]=START, TIMER[n]=STOP, ... (TIMER[m])Programmtimer des VW-Standards (zurücksetzen, starten, stoppen, lesen), gezählt von der Simulationsuhr (seit 2026-10-21)
WAIT (Signal OR TIMER[m]>=x)WARTE BIS Signal – der Roboter wartet auf das Signal; die Zeitgrenze wird nicht simuliert (Warnung in der Konsole des Ladens)
RTCP-Bewegung zu einem Punkt ohne seine RTCP-Position (RX..RR)bis zum genauen Zielpunkt simuliert (Warnung in der Konsole des Ladens); seit 2026-10-21
CALL UPnnn, IF (Bedingung),CALL UPnnnUP-Aufruf (mit der Bedingung)
CALL MAKROnnnSPSMAKRO n; MAKRO020 aktiviert die Verriegelungsanforderungen
Verriegelungenwie bei KUKA: Anforderung DO[81..96], Freigabe DO[41..56], Erlaubnis DI[41..56] in TC_ONLINE
MAKRO050 / MAKRO057Merkermakros: initialisieren die Merker beim Programmstart
J ... % / L ... mm/secPTP % / LIN mm/s (cm/min, mm/min und inch/min umgerechnet; max_speed = 2000 mm/s)
CNT, ACCÜberschleifen, Beschleunigung
... Offset,PR[n]der Punkt, um PR[n] im Benutzerkoordinatensystem (UF) der Bewegung verschoben – wenn PR[n] in der Sicherung (POSREG.VA) einen kartesischen Wert hat
... Tool_Offset,PR[n]der Punkt, um PR[n] im Werkzeugkoordinatensystem (UT) verschoben – wenn PR[n] in POSREG.VA einen kartesischen Wert hat

Nicht simuliert – immer gemeldet in der Konsole des Ladens als Fehler oder Hinweis, nie stillschweigend ausgelassen:

Optionen des Ablaufs Simulation

Vor dem Ablauf. Die Kollisionsprüfung des Ablaufs braucht aktuelle Arbeitsbereiche. Fehlen sie oder sind sie veraltet, fragt der Simulator: Calculate and run (berechnen und starten) oder Run without collision check (ohne Kollisionsprüfung starten); die Befehls-API berechnet sie selbst; seit 2026-10-25 läuft die Berechnung im Hintergrund, das Fenster reagiert und Cancel funktioniert, siehe Arbeitsbereiche. Mit Respect interlock signals fragt eine unvollständige Verriegelungskarte: Show the map (Karte zeigen) oder Run anyway (trotzdem starten).

Während des Ablaufs sind die Optionen der Registerkarte gesperrt. Auch während der Simulation wirken: die Achswerte in der Konsole, die Kollisionskarte, die Statuslampe, Console messages..., Collision risks..., die Geschwindigkeit, Pause und Continue (Quitt).

Kollisionsgefahr im Ablauf Work Zones

Stop the simulation at a collision risk (Standard: ein): fährt ein Roboter ohne Verriegelung in einen mit einem Partner gemeinsamen Bereich, während der Partner in diesem Bereich ist, hält die Simulation sofort an (Pause). Der Simulator macht ein Bild der Szene, schreibt die Achsen aller Roboter und öffnet das Fenster der Kollisionsgefahren. Aus: der Ablauf geht weiter, die Gefahren stehen in der Konsole und im Bericht.

Der Knopf Collision risks... öffnet dieses Fenster, auch während des Ablaufs. Im Fenster: Ignore (der Fall hält die Simulation nicht mehr an), Roboter zu den Punkten, Programme im Editor, Speichern als HTML / PDF. Benachbarte Punkte derselben Stelle sind standardmäßig ein Fall (siehe Plugin-Einstellungen > Kollisionsbericht). Die kleinen Knöpfe der Tabelle (Roboter zu den Punkten, Programm im Editor) behalten ihre Größe, auch in der letzten Spalte. Wo die Gefahr in der Zelle liegt, zeigen die Kollisionsstellen in der Szene.

Roboter zu den Punkten (Robots to the points, nur bei angehaltener oder pausierter Simulation): bei einer Kollisionsgefahr aus den Arbeitsbereichen fahren beide Roboter in die Punkte ihrer Programme. Bei einer Berührung der 3D-Modelle (KOLLISION (3D-Modelle)) fahren beide Roboter in ihre Achsen an der ersten Berührungsstelle der Zeile (die Achsen speichert die Live-3D-Prüfung). Eine Zeile kann mehrere Berührungsstellen enthalten (siehe Kollisionsstellen): jeder weitere Klick auf den Knopf fährt die Roboter zur nächsten Stelle der Zeile, nach der letzten beginnt es wieder mit der ersten. Die Konsole nennt beide Roboter, die Stelle und die Simulationszeit, z. B. Berührung 2 von 6 dieser Zeile (7.34 s); die rote Kugel mit derselben Zeit liegt auf den sich berührenden Teilen. Der Knopf einer 3D-Zeile mit mehr als einer Stelle zeigt die Anzahl der Stellen (z. B. 6), nach einem Klick die gezeigte Stelle (z. B. 2/6).

Bei einer Zeile der Arbeitsbereiche (violett) prüft der Simulator in dieser Stellung der Programmpunkte zusätzlich einmal die 3D-Modelle (dieselben Modelle wie Live 3D: Glieder der Roboter, CAD-Modell des Werkzeugs mit Greifern / Zangen, Vorrichtungen, Dummy-Werkzeug). Berühren sie sich, markiert eine orange Kugel die Stelle (Beschriftung 3D-Kontakt in den Programmpunkten R2 / R1) und die Konsole warnt: im Lauf waren die Roboter nicht gleichzeitig dort, aber ein anderes Timing (Geschwindigkeit, Warten, SPS) macht daraus eine echte Kollision – die Verriegelung halten, bis der Bereich frei ist. Sonst schreibt die Konsole, dass sich die Modelle nicht berühren, mit dem kleinsten Abstand und den Teilen. Die erste Prüfung dauert einige Sekunden (die Modelle werden gelesen), weitere sofort. Die orange Kugel verschwindet beim nächsten Roboter zu den Punkten oder beim Start der Simulation.

Eine blaue Zeile unter der Tabelle sagt, was die 3D-Ansicht nach dem letzten Klick zeigt, z. B. Gezeigt: Berührung 2 von 6 bei 7.30 s - R2 in UP142/P2, R1 in UP142/P2 (die rote Kugel mit dieser Zeit) oder Gezeigt: Programmpunkte - ... mit dem Ergebnis der Prüfung der Stellung. Die Tooltips der Spalten Point / Partner point erklären die Schreibweise: P2-P5 = der Bereich der Punkte P2 bis P5, P2, P12 = die beiden Punkte P2 und P12.

API: {"cmd":"collision_case","key":"...","action":"points"} (ein wiederholter Aufruf = die nächste Berührung), die Antwort enthält point ([x, y, z] mm, die Kugel der gezeigten Berührung), place / places (3D-Zeilen) und shown (der Text der blauen Zeile); bei einer Zeile der Arbeitsbereiche kommt das Ergebnis der Prüfung der Stellung etwa 0,2–6 s später in der Konsole.

Live-3D-Kollisionsprüfung Collision 3D

Die Option Live-3D-Kollisionsprüfung prüft die 3D-Modelle während der Simulation der Station (Run on all robots, Fast Run, Robustheitstest, Lauf über die Befehls-API – nicht der Lauf eines einzelnen Roboters). Bei jeder Prüfung vergleicht der Simulator:

FeldStandardBereichBedeutung
Zelle30 mm10..100 mmGenauigkeit der Prüfung: kleiner = genauer und langsamer
Dummy-Werkzeugkörper R60 mm10..300 mmRadius des Körpers vom Flansch zum TCP eines Dummy-Werkzeugs
Abstand bis200 mm50..1000 mmder kleinste Abstand jedes Roboterpaars wird bis zu diesem Wert gemessen. Am Ende der Simulation zeigt die Konsole die nächste Annäherung jedes Paars mit den Teilen: Sockel / Fahrwagen, Glied A1..A6, Werkzeugmodell, Dummy-Werkzeug, Körper des Dummy-Werkzeugs vom Flansch zum TCP
Warnung unter30 mm (neue Einstellungen; 0 = aus)0..500 mmSicherheitsabstand: eine nähere Annäherung ohne Kontakt kommt in das Fenster Kollisionsgefahren als 3D-Annäherung (Konsole: ANNÄHERUNG (3D-Modelle)); die Simulation hält nicht an
Kontakt bis5 mm0..50 mmKontaktschwelle: die nächsten Punkte der beiden Modelle höchstens so weit auseinander = KOLLISION (3D-Modelle). Weiter = 3D-Annäherung, auch wenn die Modelle eine Zelle der Prüfung teilen (siehe unten)
Prüfung in eigenem Threadeindie Prüfung läuft in einem eigenen Thread, unabhängig vom Zeichnen der Szene, von Fenstern und SmartPads. Aus: die Prüfung läuft im GUI-Thread – nur für Vergleiche
mehrere Prozessorkerne für eine Prüfungeindie Punkte der Roboter und die Roboterpaare einer Prüfung werden gleichzeitig auf der Hälfte der logischen Prozessoren (2..8) berechnet; die Ergebnisse sind gleich, eine Prüfung dauert weniger als die Hälfte
fester Schritt: die Simulationsuhr wartet auf jede Prüfungeindie Roboter werden genau in jedem Schritt der Simulationszeit geprüft: die Uhr der Station geht nicht über den nächsten Schritt hinaus, bis dort alle Roboter geprüft sind. Das Ergebnis hängt nicht von der Simulationsgeschwindigkeit und vom Rechner ab – ein langsamer Rechner macht den Lauf nur länger. Aus: eine Prüfung, wann immer der Rechner es schafft (bei 400 % etwa alle 0,2–0,3 s Simulationszeit)
Schritt20 ms10..500 msSchritt der festen Prüfung in Simulationszeit (siehe die Empfehlung unten)
Szene zeichnen16 ms16..1000 mswie oft die fahrenden Roboter gezeichnet werden: seltener = weniger Arbeit für Prozessor und Grafikkarte (lange Tests über Nacht); die Zeiten und die Prüfungen ändern sich nicht

Die Felder der Prüfung lassen sich nur bei eingeschalteter Live 3D collision check ändern; fester Schritt braucht Prüfung in eigenem Thread, und Schritt braucht fester Schritt.

Kollision und Annäherung. Jede Prüfung misst den kleinsten Abstand der Oberflächenpunkte der beiden Modelle (die Punkte liegen etwa 0,6–0,7 × Zelle auseinander, 18–21 mm bei 30 mm). Das Ergebnis ist eine von zwei Arten:

ArtWannMeldung
3D-Kollision (Kontakt)nächste Punkte höchstens Kontakt bis (Standard 5 mm)Konsole KOLLISION (3D-Modelle) … nächste Punkte x mm (Fehler), rote Kugel, die Simulation hält an wie bei einer Kollisionsgefahr (nicht im Robustheitstest – die Fälle gehen in seinen Bericht). So werden echte Berührungen auch in verriegelten Bereichen gefunden.
3D-Annäherungkein Kontakt: die Modelle teilen eine Zelle der Prüfung oder kommen näher als Warnung unterKonsole ANNÄHERUNG (3D-Modelle) … nächste Punkte x mm (Warnung), kleinere gelbe Kugel, keine Pause; Spalte Art des Fensters 3D-Annäherung (x mm)

Warum: eine gemeinsame Zelle von 30 mm mit 10–26 mm Abstand der nächsten Punkte hängt vom Zeitpunkt der Prüfung ab – in einem Test (2026-10-25) wurde dieselbe Vorbeifahrt der Zangen meist als Annäherung, in einzelnen Läufen als Berührung gemeldet, mit jedem Format der Werkzeugmodelle (siehe Formate der Werkzeugmodelle). Echte Kollisionen zeigen 0–3 mm. Wird eine Annäherung derselben zwei Roboter in denselben Punkten im Lauf zum Kontakt, ist der Fall eine Kollision (eine Zeile; die Annäherungen zählen mit).

Ältere Simulationsdateien und Agenten. Eine Simulationsdatei ohne live3dContact verwendet 5 mm; ihr live3dWarn bleibt wie gespeichert (oft 0 = aus – dann sind nur die gemeinsamen Zellen ohne Kontakt Annäherungen). Die Grenzfälle, die vor dem 2026-10-25 als KOLLISION gemeldet wurden, sind jetzt Annäherungen: sie halten die Simulation nicht an und sind in Check interlocks Warnungen. Nahe am alten Verhalten: Kontakt bis 50 mm (dann ist jede Annäherung unter 50 mm eine Kollision, auch ohne gemeinsame Zelle).

Orte der Kollisionen (Kugeln)

Nach einem Lauf mit Live-3D-Kollisionsprüfung und / oder der Prüfung der Arbeitsbereiche zeigt die 3D-Szene an jeder Stelle, an der die Prüfung ein Problem gefunden hat, eine Kugel. Das Menü Ansicht > Kollisionsstellen anzeigen (View > Show the places of collisions) schaltet sie ein und aus (Standard: ein, wird in den Einstellungen gespeichert). Ein Fall der Arbeitsbereiche hat eine Kugel. Ein Fall einer 3D-Berührung behält bis zu 4 Berührungsstellen, die mehr als 400 mm auseinander liegen (z. B. zuerst berühren sich die Zangen, später der Arm den Unterarm); jede Stelle hat ihre eigene rote Kugel, Zeit und Roboterachsen. Die Beschriftung über einer Kugel nennt den Roboter, den Partner und die Simulationszeit dieser Stelle.

Ansicht > Beschriftung der Kollisionsorte anzeigen (View > Show the labels of the collision places; Standard: ein, wird in den Einstellungen gespeichert) schaltet die Texte über den Kugeln; aus = nur die Kugeln, nützlich, wenn viele Beschriftungen die Roboter verdecken. Beide Schalter stehen auch im Kontextmenü der 3D-Ansicht. API: {"cmd":"view","collisionPlaceLabels":false}.

KugelBeschriftungBedeutung
rot
(Standard #ff0000, Radius 60 mm)
3D-Kontakt R2 / R1  7.1 s die 3D-Modelle (Glieder der Roboter, CAD-Modell des Werkzeugs oder Dummy-Werkzeug) haben sich zu dieser Zeit wirklich berührt (im Lauf). Die Kugel liegt in der Mitte der nächsten Punkte beider Modelle bei der tiefsten Berührung dieser Stelle – also auf den sich berührenden Teilen.
gelb
(Standard #ffc000, Radius 45 mm)
3D-Annäherung R2 / R1  17 mm  7.4 s eine 3D-Annäherung: die Modelle kamen sich ohne Kontakt nahe (gemeinsame Zelle der Prüfung oder unter Warnung unter); die Kugel liegt in der Mitte der nächsten Punkte bei der nächsten Annäherung dieses Falls.
violett
(Standard #e000e0, Radius 90 mm, durchsichtiger)
Zonen R2 / R1  7.7 s eine Kollisionsgefahr aus den Arbeitsbereichen: beide Roboter waren gleichzeitig ohne Verriegelung in ihrem gemeinsamen Bereich. Die Kugel ist die Mitte der Zelle (Voxel), in der sich beide Arbeitsbereiche treffen. Sie bedeutet nicht, dass sich die Modelle berührt haben – die Arbeitsbereiche nähern Roboter und Werkzeug nur an (Modus Dreiecke oder Würfel, siehe Arbeitsbereiche).
orange
(#ff9800, Radius 70 mm)
3D-Kontakt in den Programmpunkten R2 / R1 nur nach Roboter zu den Punkten einer Zeile der Arbeitsbereiche: in dieser Stellung der Programmpunkte berühren sich die 3D-Modelle. Im Lauf waren die Roboter nicht gleichzeitig dort – ein anderes Timing (Geschwindigkeit, Warten, SPS) würde daraus eine echte Kollision machen, also die Verriegelung halten, bis der Bereich frei ist. Entfernt beim nächsten Roboter zu den Punkten oder beim Start der Simulation.
Kollisionsstellen nach einem Lauf zweier Roboter: rote Kugeln = Berührungen der 3D-Modelle, violette Kugeln = Kollisionsgefahren aus den Arbeitsbereichen (Bild mit englischer Oberfläche)

Die Kugeln werden über den Modellen gezeichnet und sind so auch durch einen Roboter oder ein Werkzeug hindurch sichtbar. Fälle, die im Fenster Collision risks auf Ignore gesetzt sind, werden nicht gezeigt. Die Kugeln bleiben nach dem Ende des Laufs stehen und werden beim Start des nächsten Laufs entfernt.

Die Farben werden in Ansicht > Farben der Kollisionsstellen... eingestellt (Restore Defaults setzt Rot, Violett und Gelb zurück). API: {"cmd":"view","collisionPlaces":true}, {"cmd":"view","collisionPlaceColor3D":"#ff0000","collisionPlaceColorZone":"#e000e0","collisionPlaceColorProximity":"#ffc000"} (siehe Befehls-API).

Mehr Kugeln als Zeilen. Das Fenster Collision risk in the simulation fasst die Fälle eines Roboterpaars in aufeinanderfolgenden Punkten zu einer Zeile zusammen (z. B. UP142/P2-P5; die Spalte Count ist die Anzahl der Prüfungen, die ihn gefunden haben; die Spalte Art zeigt 3D-Kollision, 3D-Annäherung oder Arbeitsbereiche, mit dem nächsten Abstand der Modelle in Klammern; eine Zeile der Annäherung ist orange, nicht rot). Die Szene zeigt für jede Stelle jedes Falls eine Kugel, es kann also mehr Kugeln als Zeilen geben – im Bild oben gehören vier rote Kugeln (7.1, 7.4, 7.7 und 7.9 s) zu einer Zeile.

Die Berührungsstellen einer Zeile durchgehen. Roboter zu den Punkten (grüner Play-Knopf) einer 3D-Zeile fährt beide Roboter in ihre Achsen an der ersten Berührungsstelle der Zeile. Jeder weitere Klick fährt sie zur nächsten Stelle aller Fälle der Zeile; die Konsole schreibt z. B. 'R2' und 'R1' bei der Berührung 2 von 6 dieser Zeile (7.34 s) - die rote Kugel mit dieser Zeit markiert die Stelle; erneut klicken für die nächste Berührung. Nach der letzten Stelle beginnt es wieder mit der ersten. Die rote Kugel mit derselben Zeit liegt dann auf den sich berührenden Teilen.

Zeilen der Arbeitsbereiche. Roboter zu den Punkten einer Zeile der Arbeitsbereiche stellt beide Roboter in die Punkte ihrer Programme. Diese Stellung muss im Lauf nie gleichzeitig vorkommen (z. B. beide Roboter in ihren Schweißpunkten, während im Lauf einer schon weg war); dass dort keine rote Kugel ist, ist also richtig: die roten Kugeln markieren nur Berührungen, die im Lauf wirklich vorkamen. Ob sich die Modelle in dieser Stellung berühren würden, zeigt die Prüfung der Stellung: eine orange Kugel und eine Warnung in der Konsole oder der kleinste Abstand (siehe Kollisionsgefahr im Ablauf).

Roboter zu den Punkten, Berührung 1 der Zeile: die rote Kugel 3D contact R2 / R1 7.1 s liegt dort, wo sich die beiden Schweißzangen berühren

API: {"cmd":"collision_case","key":"...","action":"points"} macht dasselbe (ein wiederholter Aufruf = die nächste Stelle; oder der Schlüssel einer einzelnen Berührung) und antwortet mit point [x, y, z] mm der gezeigten Berührung. Die Stelle ansehen: {"cmd":"view","target":[x, y, z],"zoom":6} und scene_shot.

Genauigkeit: wie weit sich ein Roboter zwischen zwei Prüfungen bewegt

Eine Berührung, die kürzer ist als die Zeit zwischen zwei Prüfungen, kann fehlen. Entscheidend ist nicht die Zeit, sondern wie weit sich ein Punkt eines Modells zwischen zwei Prüfungen bewegt, solange der Roboter nahe an einem Partner ist (näher als Abstand bis) – schnelle Bewegungen im freien Raum spielen keine Rolle. Nach jedem Lauf schreibt die Konsole:

Dieselben Werte stehen in der API (live_check → stats) und für jeden Lauf eines Robustheitstests in seinem Protokoll und Bericht. Ein Lauf mit Live-3D-Prüfung an einer neuen Station oder einem neuen Rechner genügt, um die Einstellungen zu erhalten.

Gemessen (Station A: 5 Roboter + SPS-Programm, 10 Takte = etwa 720 s Simulation, Zelle 20 mm, Laptop i7-8750H)

ModusGeschw.DauerZeit einer PrüfungAbstand zwischen Prüfungen (größter)Größte Bewegung nahe am PartnerGefundene Berührungen der 3D-Modelle
eigener Thread, mehrere Kerne, ohne festen Schritt400 %194 s17 ms0,13 s (0,57 s)483 mm2
fester Schritt 50 ms, mehrere Kerne400 %502 s17 ms0,05 s (0,05 s)153 mm3
fester Schritt 50 ms, mehrere Kerne200 %706 s16 ms0,05 s (0,05 s)153 mm3
fester Schritt 20 ms, mehrere Kerne400 %835 s19 ms0,02 s (0,02 s)65 mm3 + Annäherungen unter 50 mm
Empfohlen zur Kollisionssuche (Robustheitstest, Verzögerungstest, Lauf über Nacht): Live 3D ein, eigener Thread, mehrere Kerne, fester Schritt 20 ms (oder der Schritt der Empfehlung in der Konsole), beliebige Simulationsgeschwindigkeit (400 % = kürzeste Dauer), Szene alle 250–1000 ms zeichnen. Für Taktzeiten ohne Kollisionsprüfung: Live 3D aus.

Verriegelungssignale zwischen den Robotern Simulation

Mit Respect interlock signals (A8n / Makro20 / A4n) tauschen die Roboter bei Run on all robots die Verriegelungssignale des VW-Standards so aus, wie es die SPS tut:

Der Partnerroboter eines Bereichs kommt aus den Beschreibungen der Signale E(40+n), A(40+n) und A(80+n) in den Langtexten des Roboterarchivs (Longtexts) und aus den Kommentaren Verriegelung n ... 0001R03 in den Programmen; ein Bereich ohne Beschreibung wird mit jedem Roboter geteilt, der denselben Bereich verwendet. Bei Fanuc-Robotern kommen die Beschreibungen aus den Signalkommentaren der Steuerung in DIOCFGSV.IO (DI n = E n, DO n = A n, z. B. DI 41 "L.Ant.1>R1" = Freigabe vom Partnerroboter R1), siehe Fanuc-Roboter. Beim Start zeigt die Konsole die Verriegelungskarte (Bereich - Partner) jedes Roboters.

Während des Ablaufs meldet die Konsole jedes Warten: waited 16.38 s at folge12 P17 for interlock 3, 5 (taken by ...) (Simulationszeit). Am Ende zeigt sie die Wartezeit pro Roboter - die Punkte, an denen Taktzeit verloren geht. Ein Roboter, der sein Programm mit noch belegtem Bereich beendet (kein A(40+n) = EIN), wird als Fehler gemeldet, und wenn alle Roboter aufeinander warten, stoppt der Ablauf mit der Meldung deadlock.

Die Simulation folgt der Programmreihenfolge und dem Bewegungsplaner; sie zeigt, wo Roboter warten, nicht ob die Bereiche geometrisch an der richtigen Stelle freigegeben werden - dafür Work Zones und Check interlocks verwenden.

Programmablauf

Ohne die Stations-SPS werden die Eingänge der Steuerung und die SPS nicht simuliert (außer den Verriegelungssignalen oben, wenn eingeschaltet); die Bedingungen der Programme werden daher wie folgt ausgewertet:

Console messages: was geschrieben wird, wie oft, und die Option DEBUG

Die Optionen gelten für den Ablauf eines einzelnen Programms und für Run on all robots.

Import der POT-Prozesszeiten (Makro40) Simulation

POT = Produktion ohne Teil (Geisterfahrt): der Testbetrieb der Station ohne Bauteile, in dem der Roboter statt des realen Prozesses die Prozesszeiten des POT-Makros wartet – dieselbe Situation wie in der Simulation. Die Schaltfläche POT-Zeiten importieren... unter der Tabelle Program rules übernimmt diese Zeiten in die Simulation. Der Import läuft automatisch – Sie öffnen nur das Fenster und bestätigen die Vorschläge:

POT-Zeiten importieren: Applikationen aus Makro40, Ausdrücke aus dem Tech-User des Archivs (VW User KS26.01.98), Modi
  1. Der Simulator liest aus dem Archiv jedes Roboters das POT-Makro (VW: Makro40 POT Prozesszeiten setzen, die Nummer des Makros wird abgefragt, Standard 40) und übernimmt alle Applikationen mit ihren Prozesszeiten, z. B. BZ1 Schweissen 1,0 s, BZ1 Bolzen Nachladen 2,0 s. Unterschiedliche Zeiten in den Robotern – die längste (Details im Tooltip der Zeit).
  2. Aus dem Archiv wird die VW-User-Version des Roboters ermittelt (VW_User\vw_usr_s.src, z. B. KS26.01.98_20260419) und aus dieser Version werden die Tech-Gruppen und Untergruppen gelesen (dieselben Definitionen wie im Tech-Befehlseditor, alle Formate des Tech-Users). Die Version wird im Fenster angezeigt; eine Version, die in DReS fehlt, wird gekennzeichnet und die Gruppen der Standardversion werden verwendet.
  3. Für jede Applikation wird der Befehl im Programm automatisch als regulärer Ausdruck gebildet: Gruppe und Untergruppe am Anfang des Befehls, die Nummer der Applikation als Steuerung, z. B. BZ1 → ^TECH2\s+BZ(\s|$).*\bSteuerung\s*=\s*Nr1\b, STP → ^TECH2\s+STP(\s|$), KL → ^TECH3\s+KL(\s|$), NZ → ^TECH2\s+NZ\/EP(\s|$). Die Gruppe heißt nicht in jeder VW-User-Version TECHn (ältere Versionen z. B. Tech_, TECH2_) – sie wird aus der Version des Roboters übernommen.
  4. Die Spalte In Programmen zeigt, wie viele Befehle in den Programmen der Roboter (Folgen, UPs, Makros) passen – man sieht sofort, welche Applikationen die Station wirklich verwendet (0 = nicht verwendet). Die Zeilen des POT-Makros selbst werden nicht gezählt.
  5. Der Modus wird vorbelegt: Nachladen für die Nachlade-Applikationen (... Nachladen), sonst solo. Nachladen: die Zeit läuft, während der Roboter weiterfährt; ist die Fahrt zum nächsten Punkt mit demselben Befehl kürzer, wartet der Roboter dort nur noch auf den Rest. davor für Prozesse vor dem Punkt (VOR Prozess, z. B. MS Zuenden, KL Start/Bereit), dahinter – der Prozess endet, nachdem der Roboter den Punkt verlassen hat. Die Bedeutung der Modi steht unter der Tabelle.
  6. Die angehakten Zeilen werden zu Regeln Custom command mit PrAct (Ausgang Prozess aktiv, Standard A4039). Die Vorschläge sind nicht angehakt – prüfen und die Zeilen anhaken. Von Hand eingetragene Regeln für dieselben Befehle (z. B. Wait at command SERVOZANGE 1200 ms) würden die Prozesszeit doppelt zählen – nach dem Import listet das Fenster sie auf und entfernt die angehakten. Die Zuordnung wird gespeichert und beim nächsten Import wieder vorgeschlagen.
Für Befehle, die im POT-Makro nicht vorkommen, bleiben Regeln von Hand nötig – z. B. das Schweißen mit der Servozange (SERVOZANGE ... Schweissen) oder das Bürsten (TECH4 Prozessgeraet BU ...) fehlen im Makro40. Auch Applikationen, die in POT trotzdem arbeiten (z. B. eine Zange, die trotzdem schließt), können im Makro fehlen. Die SPS reagiert nicht auf die Prozesszeiten; PrAct erscheint nicht im Bericht.

Merker, Flags und FB PSPS Simulation

Das Roboterprogramm wird wie auf der Steuerung interpretiert: die Inline-Formulare des VW-Standards (der in den Folds angezeigte Text, nicht der darin erzeugte KRL-Code) und einfacher Expertencode außerhalb der Folds (siehe unten). Die Befehle eines Punktes laufen in der Reihenfolge des Programms: ein WARTE BIS, eine Verriegelung (Makro20) oder ein FB PSPS hält die weiteren Befehle des Punktes an, bis die Bedingung erfüllt ist – z. B. A80 = EIN, WARTE BIS E80 & E76, A80 = AUS: der Handshake-Ausgang A80 bleibt EIN, solange der Roboter wartet, und geht erst nach dem Warten AUS. Befehle nach einem UP-Aufruf laufen nach dem UP.

Merker aus Signalen, die die Simulation nicht hat (Luft, Wasser, Strom der Zange, Sensoren des Werkzeugs – z. B. M95 Sicherheiten EZ1/SP1), erhalten einen festen Wert in der Signaldatei oder mit Force always EIN im SmartPad.

Bewegungsplaner Simulation

Mit Real motion (motion planner) bewegen sich die Roboter wie in der Steuerung: PTP achssynchron, LIN und CIRC entlang der Bahn, mit Beschleunigung und Überschleifen der Ecken. Real time (1:1) setzt die Animationsgeschwindigkeit auf 100 %.

Die Parameter passen die Schätzung an: Programm-Override, PTP-Beschleunigungszeit, Bahnbeschleunigung (from robot archive = DEF_ACC_CP aus $config.dat), Orientierungsgeschwindigkeit und Überschleifen. Default values stellt die Standardwerte wieder her.

Draw the real path zeichnet die geplante Bahn statt gerader Linien zwischen den Punkten.

Suchlauf (LIN SUCHEN): der Roboter fährt mit VB aus dem Suchlauf-Fold und den letzten Teil vor dem Punkt mit der reduzierten Geschwindigkeit Vred – der längste Fall, das Bauteil im Endpunkt des Suchlaufs (Plugin-Einstellungen > Simulation: Suchlauf: Strecke mit Vred, Standard 120 mm). Ein Suchlauf, der länger als Suchlauf: längste Zeit dauert (Standard 12 s, VW GANTT), gibt eine Warnung in der Konsole, z. B. Suchlauf (LIN SUCHEN) zu P5 dauert 3.63 s.

Machine data of the selected robot schreibt die aus den Maschinendaten gelesenen Achsgeschwindigkeiten in die Konsole.

Bewegungszeiten Simulation

Die Tabelle Motion times sammelt je Roboter die geplante Zeit, den Fortschritt, die Anzahl der Punkte, den Status und die Startzeit jedes Programmablaufs; klicken Sie auf eine Spaltenüberschrift, um zu sortieren. Export... speichert eine CSV-Datei (lässt sich in Excel öffnen) mit der Tabelle und der Zeit jedes Punktes (Programm, Punkt, Schritt wie UP81/P3, Bewegungsart, Zeit seit dem vorherigen Punkt und seit dem Start). Clear leert die Tabelle.

Die Bewegungszeiten sind Schätzwerte: Die Steuerung legt ihr genaues Bewegungsprofil nicht offen, und die SPS der Station ist ein vereinfachtes Modell. Nutzen Sie sie zum Vergleich von Varianten und um den Roboter mit der längsten Zeit in der Zelle zu finden – siehe Wie realistisch ist die Simulation?

Wie realistisch die Simulation ist (Simulationsuhr, Robotersteuerung, woher die Abweichungen kommen, Vergleich von Varianten) – siehe Ablauf, Prozessor und Genauigkeit.

Taktzeitbericht und seine Hinweise Simulation

Times: Stationseffizienz, der längste Takt und die Zeiten jedes Roboters

Nach Run on all robots speichert die Schaltfläche Report... der Registerkarte Times einen lesbaren Bericht (öffnet sich im Browser oder im PDF-Viewer, wenn Gespeicherten Bericht (HTML, PDF) im Standardprogramm öffnen eingeschaltet ist): welcher Roboter den Stationstakt bestimmt, wer wie lange auf welchen Verriegelungsbereich wartet und welcher Partner den Bereich zwischen welchen Punkten hält. Abschnitt 3. Was zu prüfen ist enthält Hinweise für den Programmierer, z. B. Punkte mit Prozesszeit auf einen Roboter mit Reserve verlagern oder Bereich n (A(40+n) = EIN) direkt nach dem gemeinsamen Bereich freigeben.

Report - options

Vor dem Speichern fragt das Fenster Report - options, was der Bericht enthält:

  • Bild der Station (3D-Ansicht) am Anfang,
  • Gantt-Diagramm eines Zyklus – jeder Roboter mit den mittleren Zeiten seiner Punkte: Bewegung, Prozess (Halt bei einem Befehl), Warten auf einen Verriegelungsbereich, WARTE BIS, WARTE ( EIN ) ZEIT (eigene Farbe, seit 2026-10-21) und Warte auf Folgenstart; die rote gestrichelte Linie ist der längste Roboter. Ein zweites Diagramm kann die Zyklen von .. bis mitteln (z. B. ab Zyklus 2, ohne den Start der Station),
  • PrAct (Prozess aktiv) im GANTT-Diagramm – Option: eine grüne Linie unter dem Roboter, solange der Ausgang Prozess aktiv EIN ist (Regeln mit PrAct), auch der Teil während der Bewegung (davor / dahinter),
  • Save as: HTML (Tooltips in den Diagrammen), PDF (A4 quer, Seitenzahlen, die Diagramme als Bilder, eine Abschnittsüberschrift bleibt nie allein unten auf einer Seite) und / oder Excel – ein Blatt je Tabelle: Zusammenfassung, Roboter, Zyklen (jeder Zyklus jedes Roboters), Warten Verriegelungen, Erster Zyklus, Belegung der Bereiche, Schritte des Zyklus (mittlere Zeit jedes Punkts: Bewegung, Prozess, Verriegelung, WARTE BIS, WARTE ZEIT [s], Folgenstart) und Vergleich; Zahlen sind Zahlenzellen. Alle Dateien erhalten denselben Namen,
  • Compare with a previous run – jeder Bericht speichert die Daten des Laufs daneben (*.rcsrun.json). Die Datei eines früheren Laufs auswählen (z. B. vor einer Änderung der Programme): der Bericht erhält den Abschnitt Vergleich mit dem früheren Lauf – Takt der Station, Effizienz, je Roboter Takt, Warten, Bewegung, Halte und Programmtimer sowie das Warten auf jeden Verriegelungsbereich, mit der Differenz (grün = besser, rot = schlechter).

Der Bericht listet auch das Warten auf Verriegelungen im ersten Zyklus (wer den Bereich hält und seit welchem Punkt) und warnt, wenn die Simulationsgeschwindigkeit nicht 100 % war oder während des Laufs geändert wurde – nur bei 100 % ohne Änderungen liefert der Bewegungsplaner Zeiten nahe am realen Roboter. Die Tabelle Roboter (auch das Blatt Roboter der Excel-Datei) hat die Spalte Werkzeug (3D): der Körper am Flansch für die Arbeitsbereiche und die 3D-Kollisionsprüfung – CAD-Modell des Werkzeugs: Name (JT-Modell des realen Werkzeugs), Dummy-Werkzeug (Näherung) (Kugel / Quader) oder kein Werkzeug; zusätzliche Elemente am Flansch (z. B. Werkzeugwechsler) folgen mit +. Der Abschnitt 5. Annahmen der Simulation erinnert daran, dass mit einem Dummy-Werkzeug die Arbeitsbereiche und die 3D-Kollisionsprüfung eine Näherung des realen Werkzeugs sind. Der API-Befehl robot liefert dasselbe als toolKind (cad / dummy / none) und toolText. Die Abschnitte zu den Wettläufen und zur Interlock priority des Laufs sind unter Wettläufe der Anforderungen beschrieben.

Die Texte der Hinweise und ihre Grenzwerte stehen in einer XML-Datei und lassen sich so für einen anderen Standard oder eine andere Sprache ändern, ohne neue Version der Erweiterung. Die Datei wird in der Zeile Berichtshinweise der Registerkarte Zeiten eingestellt:

ElementFunktion
DateinameHinweisdatei für den nächsten Bericht (rot = Datei nicht gefunden, der Bericht verwendet die eingebauten Hinweise)
Ordnersymbolwählt eine andere Hinweisdatei; die Datei wird vor der Verwendung geprüft und in den Einstellungen gespeichert
Bearbeitenöffnet die Hinweisdatei im DReS-Editor
Datei der Installationzurück zu <DReS-Ordner>\template\RCS\report_hints.xml (Standard)

Die Datei wird bei jedem Bericht gelesen – Datei im Editor speichern und erneut Bericht... klicken, ein Neustart von DReS ist nicht nötig. Abschnitt 5 des Berichts nennt die verwendete Datei. Tipp: die Datei der Installation vor Änderungen in einen eigenen Ordner kopieren – ein Update von DReS überschreibt sie.

Element / AttributBedeutung
<Hint id="...">ein Hinweis; die id ist fest (Liste unten), ein in der Datei fehlender Hinweis verwendet den eingebauten Text
enabled="false"schaltet den Text des Hinweises ab (der Rest des Kastens bleibt)
threshold="..."Grenzwert, ab dem der Hinweis erscheint (Einheit in der Tabelle unten)
<Text lang="en"> / lang="de"Text in der Sprache der Erweiterung (Help → Language); fehlt die Sprache, wird der englische Text verwendet. HTML ist innerhalb von <![CDATA[ ... ]]> erlaubt
{name}Wert, den der Bericht einsetzt, z. B. {robot}, {wait}; die Namen jedes Hinweises stehen im Kommentar darüber in der Datei
idWann der Hinweis erscheintthreshold (Standard)
bottleneckimmer – der langsamste Roboter bestimmt die Taktzeit–
cycleSplitAufteilung seines Takts: Bewegung, Halte an Befehlen, Warten, Rest–
processStopsHalte an Befehlen (Prozesszeit) des langsamsten Roboters über dem Grenzwert% des Takts (30)
bottleneckWaitsder langsamste Roboter wartet über dem Grenzwert auf Verriegelungens pro Takt (0,5)
robotWaitsein Roboter wartet mindestens den Grenzwert auf Verriegelungsbereiche – Kasten mit seinen Bereichens pro Takt (0,5)
reserveder wartende Roboter ist nicht der langsamste – er verbraucht seine Reserve–
zoneWaiteine Zeile je Bereich, auf den der Roboter gewartet hat–
zonePartnerder Partner, der den Bereich hält: früher freigeben, später anfordern–
noWaitingRoboter, die weniger als den Grenzwert warten; derselbe Grenzwert färbt die Wartespalte der Robotertabelles pro Takt (0,05)
Die Hinweise sind Regeln des Simulators – sie zeigen Stellen zum Prüfen, die Entscheidung bleibt beim Programmierer. Ohne Datei oder bei einem Fehler darin (Meldung in der Konsole) verwendet der Bericht die eingebauten Texte und Grenzwerte oben.

Wettläufe der Anforderungen Simulation

Zwei Roboter, die denselben Verriegelungsbereich innerhalb des Zeitfensters (Plugin-Einstellungen > Simulation, Standard 1 s) anfordern, sind ein Wettlauf (request race). In der Simulation gewinnt immer der Roboter, der wenige Millisekunden früher anfordert; an der Linie ist die Reihenfolge zufällig, weil die Roboter nie genau wie in der Simulation fahren. Dann kann der andere Roboter den Bereich zuerst bekommen – die Station fährt eine andere Reihenfolge, die Taktzeit ändert sich, und eine Bewegung ohne Verriegelung kann den Partner an einer Stelle treffen, die die Simulation nie gezeigt hat.

Am Ende einer Stationssimulation schreibt die Konsole für jeden Wettlauf eine Warnung: Bereich, beide Roboter mit den Punkten, kleinster Zeitabstand, wie oft es vorkam und welcher Roboter gewann. Dieselben Wettläufe stehen im Zeitenbericht (Times > Report), in Check interlocks (Code RACE), in den Laufdaten (requestRaces) und in jedem Schritt des Robustheitstests. Mit Fenster mit den Wettläufen ... in den Einstellungen listet ein Fenster sie am Ende auf.

Die Simulation ändert das SPS-Programm nie von selbst. Die Konsole sagt es zusammen mit den Wettläufen: n request race(s): the SPS program is not changed - at the end of the simulation you can add protection blocks ('Interlock priority') or simulate both orders (API race_study). Was Sie am Ende tun können, steht unter Wettläufe: Vorschlag und Simulation beider Reihenfolgen.

Mit Reihenfolge der Roboter bei einem Wettlauf während des Laufs beibehalten (Standard: ein) hält die Simulation die gefundene Reihenfolge in jedem nächsten Zyklus desselben Laufs, solange beide Anforderungen innerhalb des Fensters kommen. Ein Roboter, der später als das Fenster kommt (langsamer, gestört), lässt den anderen fahren – die Reihenfolge ändert sich wie an der Linie, und die Konsole meldet es. Das ist nur eine Regel des Laufs: das SPS-Programm wird nicht geändert. Im Robustheitstest behält ein in einem Schritt gefundener Wettlauf seine Reihenfolge für alle nächsten Schritte des Tests.

Fenster am Ende einer Simulation mit Wettläufen (Wettlauf gefunden) – siehe Wettläufe: Vorschlag und Simulation beider Reihenfolgen

Der Zeitenbericht (Times > Report) hat den Abschnitt Anforderungen im selben Moment (Wettläufe) mit Fenster, beiden Punkten, Gewinner und kleinstem / größtem Abstand, und den Abschnitt Interlock priority in diesem Lauf mit allen Regeln des Laufs (Quelle SPS, Plan, API, test oder auto mit dem Wettlauf, aus dem sie stammt; test und auto sind nur Regeln des Laufs, keine Bausteine im SPS-Programm) und jeder Anwendung einer Regel – eine Reihenfolgeänderung, weil ein Roboter später als das Fenster kam, ist rot.

Zeitenbericht: Anforderungen im selben Moment (Wettläufe) – Bereich 1, 0001R05 gewinnt mit 0,490 s Vorsprung, 0001R03 wartet 8,4 s – und Interlock priority in diesem Lauf mit dem SPS-Baustein (Fenster 1,0 s)

Was tun bei einem Wettlauf:

Wettläufe: Vorschlag und Simulation beider Reihenfolgen Simulation

Ein Wettlauf (request race): zwei Roboter fordern denselben Verriegelungsbereich fast im selben Moment an – innerhalb von Wettlauf um einen Bereich - Zeitfenster (Plugin-Einstellungen > Simulation). An der Linie ist die Reihenfolge der beiden Roboter zufällig. Die Simulation findet die Wettläufe, aber sie ändert das SPS-Programm nie von selbst. Sie entscheiden am Ende, was zu tun ist.

Fenster am Ende (Titel Wettlauf gefunden): endet eine Stationssimulation oder ein Robustheitstest mit Wettläufen, kommt dieses Fenster statt Simulation beendet. Es zeigt den Text zum Ende (Zyklen, Zeit) und eine Tabelle der Wettläufe:

Fenster Wettlauf gefunden am Ende einer Stationssimulation: drei Wettläufe (Bereiche 4, 1 und 5), der Roboter, der den Bereich in der Simulation zuerst bekam, der wartende Roboter und der kleinste Zeitabstand; darunter der Vorschlag, Takte pro Lauf und die Schaltflächen Beide Reihenfolgen simulieren, Schutzbausteine hinzufügen und Schließen. Das SPS-Programm wird nicht geändert.
SpalteBedeutung
Bereichder Verriegelungsbereich des Wettlaufs
Zuerst in der Simulationder Roboter (und Punkt), der den Bereich in dieser Simulation zuerst bekam
Zweiterder Roboter (und Punkt), der gewartet hat
Kleinster Abstand [s]der kleinste Zeitabstand zwischen beiden Anforderungen im Lauf

Unter der Tabelle: das Feld Takte pro Lauf: (1..20, Standard 3) und die Schaltflächen:

Fenster nach der Simulation beider Reihenfolgen (Titel Simulation beider Reihenfolgen - Ergebnis): das SPS-Programm ist wie vorher. Die Tabelle hat eine Zeile pro Wettlauf:

SpalteBedeutung
Bereichder Bereich des Wettlaufs
A: Reihenfolge der SimulationErgebnis der Variante A: Station x s, Warten y s, n Kollisionsgefahr(en) (Stationstakt, Warten, Zahl der Kollisionsgefahren)
B: Roboter vertauschtdasselbe für Variante B
BehaltenAuswahl A: R1 zuerst, B: R2 zuerst oder kein Baustein. Die empfohlene Variante ist vorgewählt: weniger Kollisionsgefahren, dann der kürzere Stationstakt

Gewählte Bausteine hinzufügen setzt die gewählten Bausteine Interlock priority in das SPS-Programm, jeden mit einem Kommentar mit den Ergebnissen beider Varianten; ein älterer Baustein desselben Roboterpaars im Bereich wird ersetzt. Schließen (SPS-Programm unverändert) schließt das Fenster ohne Änderung. Konsole und Protokoll schreiben eine Zeile pro Wettlauf, z. B. Simulation of both orders: zone 1: A 0001R05 first - ...; B 0001R03 first - ...; recommended A.

Fenster Simulation beider Reihenfolgen - Ergebnis: für Bereich 4 ergibt Variante A (0001R02 zuerst) einen Stationstakt von 72,1 s und 104,6 s Warten, Variante B (0001R05 zuerst) 82,4 s und 196,1 s, beide mit 4 Kollisionsgefahren – A ist unter Behalten vorgewählt. Gewählte Bausteine hinzufügen setzt die gewählte Reihenfolge in das SPS-Programm, Schließen (SPS-Programm unverändert) ändert nichts. Die Zeile über der Tabelle nennt den Pfad des Berichts.

API: Befehl race_study (Aktionen status, add_blocks, start, stop, apply).

Simulationsdatei

Simulation → Save simulation... / Load simulation... speichern und laden die Optionen der Registerkarte Simulation zusammen mit der Zelle (siehe auch Speichern und laden). Seit 2026-10-16 enthält die Datei auch Stop the simulation at a collision risk und alle Felder der Live 3D collision check (Element Options: stopAtCollisionRisk, live3d, live3dCell, live3dCapsule, live3dRange, live3dWarn, seit 2026-10-25 live3dContact – eine Datei ohne dieses Attribut verwendet 5 mm). Die Bedingungen der manuellen Synchronisation (WARTE BIS, z. B. E80 & E76) stehen im Element SyncWaits; eine Datei ohne dieses Element lässt das Feld unverändert (es wird nicht geleert). Der API-Befehl sps_program mit file liest auch das SPS-Programm (Element Sps) aus einer solchen Datei.

Für einen Fanuc-Roboter behält das Element ArchiveRobot den Pfad des Fanuc-Archivs, nicht des übersetzten Archivs im Cache; die Übersetzung wird bei jedem Laden neu erstellt.

Archiv aus einer ZIP-Datei (seit 2026-10-21): wurde das Archiv eines Roboters aus einer ZIP-Datei entpackt, behalten die Simulationsdatei und die Sitzung auch die ZIP-Datei; fehlt der entpackte Ordner im Cache (Cache gelöscht), wird die ZIP-Datei beim Laden erneut entpackt. Roboter einer Process-Simulate-Studie finden ihren Archivordner oder ihre ZIP-Datei mit dem Roboternamen neben der Studie (Archivsymbol mit Tooltip im Baum, siehe Insert robots at study positions). Der API-Befehl robot gibt archive und archiveZip zurück.

Zuletzt geladene Simulationen (seit 2026-10-18): Simulation → Zuletzt geladene Simulationen (Recent simulations) zeigt die letzten 15 geladenen Simulationsdateien (auch die über die API geladenen), die neueste zuerst; nur Dateien, die noch existieren. Ein Klick lädt die Simulation wie Load simulation..., ohne Dateidialog. Während der Simulation oder bei leerer Liste ist das Menü gesperrt. API-Befehl recent_files (lesend, ohne Lizenz): Antwort {"ok":true,"simulations":[...],"studies":[...],"current":"<Simulation_File>"} – simulations = diese Liste, studies = die zuletzt geöffneten Studien / Zellen (File → Recent files), current = die jetzt geladene Simulationsdatei. Der KI-Agent findet eine vom Benutzer genannte Datei in dieser Liste.

Werkzeugmodell aus einer JT-, glTF-, STL- oder STEP-Datei (seit 2026-10-22, glTF / STL / STEP seit 2026-10-25): ein mit dem Robotermenü Werkzeugmodell (JT / STEP / STL / glTF)... oder der API tool_model angebautes Werkzeugmodell wird im Element Docked gespeichert (Attribute robot, tool, position und jtFile = Pfad der Modelldatei – das Attribut behält seinen Namen auch für .gltf, .glb, .stl, .stp und .step, ältere Simulationsdateien bleiben gültig); die Sitzung speichert es in attached[].file. Beim Laden wird die Modelldatei erneut eingefügt und das Modell mit der gespeicherten Lage am Flansch angebaut (ein Dummy-Werkzeug des Roboters wird entfernt). Relative Pfade werden vom Ordner der Simulationsdatei aus aufgelöst, sodass ein verschobenes Simulationspaket seine Werkzeugmodelle findet; ein Modell, das nicht angebaut werden kann, wird mit dem Grund im Meldungsfenster aufgeführt.

Formate der Werkzeugmodelle in der Live-3D-Prüfung. Werkzeugmodelle, die aus dem JT™-Datenformat in glTF oder STL konvertiert wurden, liefern in der Live-3D-Kollisionsprüfung vergleichbare Ergebnisse. Die Konvertierung hat keinen Einfluss auf die Genauigkeit der Berechnung: das konvertierte Modell hat dieselben Dreiecke wie die detaillierteste Stufe des JT™-Modells, und die Kollisionsprüfung und die Arbeitsbereiche verwenden genau diese Dreiecke. Test: zwei Schweißzangen (R1, R2) in einer Station, originale JT™-Modelle, glTF und STL, 100 / 200 / 400 % Geschwindigkeit: in jedem Lauf und mit jedem Format wurden dieselben drei Berührungen (1–4 mm) gefunden. Ein Grenzfall bei 20–30 mm wurde als Annäherung gemeldet, in einzelnen Läufen als Berührung – das hängt vom Zeitpunkt der Prüfung ab, nicht vom Format; für solche Stellen einen festen Prüfschritt von 10 ms verwenden. Arbeitsbereiche aus Dreiecken: JT™ 14 s, glTF 9 s, STL 7 s.

FormatBerührungenAnnäherung im GrenzfallArbeitsbereiche
JT™3 in allen Läufen21–24 mm (einmal Berührung 4 mm)14 s
glTF3 in allen Läufen25–30 mm (einmal Berührung 2 mm)9 s
STL3 in allen Läufen22–30 mm7 s

Bausteine Interlock priority aus Wettläufen: wird das SPS-Programm mit der Simulation gespeichert und wurden für Wettläufe auf Ihre Wahl Bausteine Interlock priority eingefügt (Schaltfläche Schutzbausteine hinzufügen oder Gewählte Bausteine hinzufügen, oder API race_study), die noch nicht bestätigt sind, fragt Save simulation danach und listet die Bausteine auf:

Nach der Antwort kommt die Frage für diese Bausteine nicht wieder. Ohne SPS-Programm in der Datei gibt es keine Frage. API-Befehl save: "raceBlocks": "keep" (Standard) oder "remove", ohne Frage; die Antwort enthält raceBlocks (none = keine solchen Bausteine, kept, removed) und raceBlocksCount. race_rules und race_study liefern pendingBlocks – die Bausteine, die noch auf diese Entscheidung warten.

JT-Modelle als glTF (automatische Umwandlung)

Seit 2026-10-25 wandelt der Simulator die benötigten Modelle im JT™-Datenformat selbst um und lädt statt der JT-Datei das umgewandelte glTF-2.0-Modell (.glb, Teile und Farben) – an derselben Stelle, mit derselben Montage am Flansch und denselben Versätzen aus der Studie (das glTF-Modell behält das Koordinatensystem des JT-Modells; Test 2026-10-25: Montage Z 38 mm am Flansch für JT und glTF identisch). Die Umwandlung macht das eigenständige Programm modelconv (eine Schweißzange mit 0,5–0,8 Mio. Dreiecken in etwa 1 s).

API: load, open, insert_study_robots und package_open nehmen convert ("auto", "ask" = wie auto ohne Fenster, "never"); das Ergebnis steht in status.modelConversion (converted, reused, failed, skipped, seconds, models); model_cache liest und setzt Modus und Speicherort und schätzt die umzuwandelnden Modelle einer Simulations- oder Studiendatei ohne Umwandlung (siehe API-Referenz); für eine Studie (.xml) neben estimate (Werkzeuge an den Robotern) auch estimateAll – alle Komponenten der Studie mit 3D-Modell, wie File → Open mit allen Objekten. open nimmt objects ("all" oder eine in Available objects gespeicherte Auswahldatei .ini).

Simulationspaket (*.rcsz)

File → Simulationspaket speichern (*.rcsz)... speichert eine ZIP-Datei mit allem, was zum Öffnen der Simulation auf einem anderen Rechner nötig ist: die Simulationsdatei, das SPS-Programm und die Einstellungen darin, die umgewandelten Werkzeugmodelle (.glb + .glb.json; ein als JT geladenes Werkzeug wird jetzt umgewandelt) und die Daten der Roboter. Alle Pfade im Paket sind relativ; das Manifest rcsz.json enthält Formatversion, Datum, DReS-Version, die Dateiliste, die Dateien jedes Roboters und die JT-Quelldateien nur mit Namen (keine Pfade des Kunden).

Montierte Elemente. Das Robotermenü Montierte Elemente listet das Werkzeug und die Vorrichtungen am Roboter; jedes hat Ausblenden / Einblenden (das Modell wird nicht gezeichnet; wird mit der Simulation und dem Paket gespeichert) und Vom Roboter entfernen (ein Modell aus einer Datei wird aus der Szene gelöscht, ein Element der Studie bleibt ausgeblendet). Ein ausgeblendetes Modell bleibt in den Kollisionsprüfungen (3D, Arbeitsbereiche, Blockaden); nur ein entferntes wird nicht mehr geprüft. Dasselbe Modell wird nie zweimal an einem Roboter angebaut (derselbe Name oder ein Name, der mit dem anderen an einem Unterstrich beginnt): beim Laden einer Simulation, eines Pakets oder einer Sitzung, nach Insert robots at study positions und mit dem Robotermenü Doppelte Modelle entfernen bleibt nur eines (das Element der Studie vor einem Modell aus einer Datei, eine Vorrichtung vor einem Werkzeug). Ein Dummy-Werkzeug gibt es nur für einen Roboter ohne 3D-Modell seines Werkzeugs; das Anbauen eines Modells entfernt das Dummy, und ein Dummy in einem älteren Paket oder einer älteren Simulation wird nicht geladen, wenn der Roboter ein Modell hat. API: tool_info, tool_remove, tool_hide, tool_show, tool_model (replace).

File → Simulationspaket öffnen..., File → Open, Load simulation... und die zuletzt geöffneten Dateien nehmen .rcsz: das Paket wird nach %LOCALAPPDATA%\DrAmaT\RCS\Packages\<Name>_<Schlüssel> entpackt (dieselbe Datei erneut: kein neues Entpacken) und seine Simulation geladen – die Roboter aus dem Ordner des Pakets, ohne die Originalarchive. Beispiel: die Station PSZ mit 5 Robotern und 2 Schweißzangen als glTF (45 MB) ergibt ein Paket von etwa 20 MB. API: package_save (file, includeRobotData, includeSource, dryRun) und package_open (file).

Das Paket enthält außerdem die Briefing-Datei AGENTS.md der Station an der Wurzel der ZIP-Datei (vor dem Speichern aktualisiert, wenn Simulation > AGENTS.md automatisch aktualisieren an ist; nicht vorhanden, wenn die Option aus ist und keine Datei existiert); beim Öffnen des Pakets wird sie zurückgelesen. Siehe AGENTS.md.

Plugin-Einstellungen > Simulation

Tools → Settings..., Registerkarte Simulation:

Plugin-Einstellungen, Registerkarte Simulation: Kollisionsmerker in Makros suchen, Zeitfenster der Wettläufe, Fenster am Ende und die Option Reihenfolge der Roboter bei einem Wettlauf während des Laufs beibehalten
EinstellungBedeutung
Ausgang 'Prozess aktiv' (PrAct)Ausgang des Roboters, der während eines Prozesses EIN ist (Regeln mit PrAct, siehe Program rules); Standard A4039
Im Hintergrund vorbereitete MakrosMakros, die im Hintergrund mit den Programmen geparst werden, Standard 20, 46, 47, 50, 57 – siehe Vorbereitung im Hintergrund
Kollisionsmerker in Makros suchenMakros mit den Kollisionsmerkern (z. B. M8 = E41 & E43 & E45), Nummern getrennt mit ; oder ,. Die Merker werden beim Prüfen von FB PSPS und WARTE BIS durch die Eingänge E41..E56 ersetzt (Check interlocks, Kollisionsmatrix). Dieselbe Einstellung wie im Robot Collisions Analyzer; leer = jedes Programm
Suchlauf: Strecke mit Vred / Suchlauf: längste ZeitLIN SUCHEN, Standard 120 mm / 12 s – siehe Bewegungsplaner
FB PSPS während der Bewegung prüfenStandard 100 ms, 0 = nur vor der Bewegung – siehe FB PSPS während der Bewegung
Kein Halt auf der ProzessbahnStandard: ein – siehe FB PSPS während der Bewegung und Kein Halt auf der Prozessbahn
Richtung der Verfahrachse (Achse 7) eines Roboters mit Verfahrachse ableiten (Deduce the direction of the travel track (axis 7) of a robot that has one)Standard: ein. Bei Fanuc-Robotern mit integrierter Verfahrachse kommt die Richtung aus der Steuerungsposition in SYMOTN.VA; ergibt diese keine Richtung (E1 nahe 0, Achswinkel und gespeicherte Position aus verschiedenen Zeitpunkten), aus der Steuerungskonfiguration $SCR_GRP[1].$EXT_XYZ_MAP (1 = X, 2 = Y, 3 = Z, positive Richtung) und nur wenn diese fehlt, aus dem Robotertyp in der Process-Simulate-Studie (z. B. ..._7ACHSE_Y+). Jeder solche Fall und jeder Widerspruch zwischen Steuerungsposition, Steuerungskonfiguration und Studie wird in der Konsole als anomaly: ... gemeldet. Aus: nur eine durch die Steuerungsposition bestätigte Richtung wird verwendet, sonst wird der Roboter nicht simuliert eingefügt. Wirkt beim erneuten Laden des Roboters. API: settings_set mit dem Schlüssel Deduce_Rail_Direction (Gruppe RCS_Group) und dem Wert true / false
Wettlauf um einen Bereich - Zeitfensterzwei Roboter, die denselben Verriegelungsbereich innerhalb dieser Zeit anfordern (Simulationszeit, Standard 1 s, 0,1..5 s), sind ein Wettlauf – siehe Wettläufe der Anforderungen
Fenster mit den Wettläufen am Ende einer StationssimulationStandard: aus; die Konsole zeigt sie immer
Reihenfolge der Roboter bei einem Wettlauf während des Laufs beibehaltenStandard: ein: innerhalb eines Laufs bleibt die Reihenfolge der Simulation in jedem nächsten Zyklus, solange beide Anforderungen innerhalb des Fensters kommen; ein Roboter, der später als das Fenster kommt, lässt den anderen fahren. Das SPS-Programm wird nicht geändert – Schutzbausteine nur auf Ihre Wahl, siehe Wettläufe: Vorschlag und Simulation beider Reihenfolgen
Gespeicherten Bericht (HTML, PDF) im Standardprogramm öffnenStandard: ein: ein im Programm gespeicherter Bericht öffnet sich im Standardprogramm von Windows (Webbrowser, PDF-Betrachter). Gilt für den Zeitenbericht (Times > Report), den Bericht des Robustheitstests und den Bericht der Kollisionsrisiken. Aus: die Datei wird nur gespeichert, nichts öffnet sich – empfohlen, wenn ein KI-Agent oder ein Skript die Berichte erstellt. Der API-Befehl report öffnet nie einen Browser. API: report_open (siehe API-Referenz)
Modellkonverter (JT nach glTF)Pfad von modelconv.exe, einem eigenständigen Programm (GNU GPL v3, Quellcode auf Anfrage), das Dateien im JT™-Datenformat in glTF 2.0 mit den Teilen und Farben sowie in STEP und STL umwandelt. Leer = automatisch: <Programmordner>\RuntimeTools\modelconv\modelconv.exe – hat das Installationsprogramm den Konverter installiert (Abschnitt modelconv des Installationsprogramms), setzt sich der Pfad von selbst. Die Ordner-Schaltfläche wählt eine andere Datei, Standard leert das Feld (automatisch). Daneben der Zustand: gefunden / nicht gefunden. Der Simulator verwendet ihn, um beim Laden die JT-Modelle umzuwandeln. API: model_converter (siehe API-Referenz)
JT-Modelle: umgewandelte glTF-Modelle verwendenAuto (Standard) – fehlende glTF-Modelle werden ohne Rückfrage umgewandelt; Fragen – vor dem Umwandeln ein Fenster mit Anzahl, Größe und geschätzter Zeit; Nie – die JT-Dateien werden direkt geladen. API-Befehle arbeiten wie Auto ohne Fenster. Siehe JT-Modelle als glTF. API: model_cache convert
Umgewandelte Modelle speichernNeben der JT-Datei (Standard) oder Gemeinsamer Ordner (leer = %LOCALAPPDATA%\DrAmaT\RCS\Models). API: model_cache mode ("nextToJt" | "folder"), folder
Prozessorkerne für die Robotersiehe Prozessorkerne

Plugin-Einstellungen > Kollisionsbericht

Tools → Settings..., Registerkarte Kollisionsbericht, eine Option:

Plugin-Einstellungen, Registerkarte Kollisionsbericht: Benachbarte Punkte derselben Stelle als ein Fall
EinstellungBedeutung
Benachbarte Punkte derselben Stelle als ein Fall (z. B. UP48/P23-P25)Standard: ein: trifft ein Roboter denselben Partner an derselben Stelle in mehreren benachbarten Punkten eines Programms, zeigen das Fenster der Kollisionsgefahren und die gespeicherten Berichte (HTML / PDF, auch die des Robustheitstests und des API-Befehls collision_report) sie als einen Fall, z. B. UP48/P23-P25 statt drei Zeilen für P23, P24 und P25. Aus: eine Zeile pro Punkt.

Befehls-API

Jede Option dieser Registerkarte kann auch ein Skript oder ein KI-Agent lesen und setzen: run, fast_run, sim_options, sim_action (Pause / Resume, Continue, Check interlock map), live_check und collision_ignore; die Einstellungen der Wettläufe mit race_rules, Vorschlag und Simulation beider Reihenfolgen mit race_study, die Option Gespeicherten Bericht ... öffnen mit report_open, den Modellkonverter mit model_converter, die Umwandlung der JT-Modelle mit model_cache, das Simulationspaket mit package_save / package_open, die zuletzt geladenen Simulationen mit recent_files (laden mit load) – siehe Befehls-API.

JT ist eine Marke der Siemens Industry Software Inc. Andere Marken gehören ihren jeweiligen Inhabern.



« Programme und Bahnen | Inhalt | Stations-SPS und SmartPad »