AIVeRa - KI-Agent und Sprachsteuerung
InstallationEinschaltenVoraussetzungen in WindowsSprachsteuerungWhisperWie man sprichtUnbekannte Befehle - KI-AgentEigene BefehleSchwellen, Signal und ProtokollKI-Assistent (MCP-Server)Wie es funktioniert und wohin die Daten gehenEditor-APIFenster KI-Agent (Editor)Command APIPrüf-Prompts

VeRa ist der KI-Agent von DrAmaT Robot Studio. Er arbeitet auf drei Arten: per Sprache ("Vera" und ein Befehl), als KI-Assistent (Claude Code, Claude Desktop oder ein anderer MCP-Client steuert den Editor und den Robot Cell Simulator mit den Werkzeugen von VeRa) und aus Skripten (Befehls-APIs des Editors und des Simulators). Alles läuft auf diesem Computer; die APIs sind lokale Pipes, die nur der Benutzer nutzen kann, der DReS gestartet hat.

Installation

VeRa ist optional und im Installationsprogramm nicht ausgewählt. Auf der Seite Choose Components, Gruppe AI agent VeRa (optional):

Ohne diese Komponenten werden die Skripte von VeRa nicht installiert und nichts von VeRa läuft: das Installationsprogramm vermerkt die gewählten Komponenten in AIAgent\components.ini, und die Einstellungen einer nicht installierten Komponente (Settings > Configure > AI Agent: Command API, VeRa voice control, VeRa AI agent (MCP server), der Anbieter Claude Code des Fensters AI Agent; im Robot Cell Simulator seine Registerkarte KI-Agent) sind gesperrt mit dem Hinweis Not installed - install DReS again and select the component .... Das Fenster AI Agent mit einem API-Schlüssel funktioniert ohne sie. Das Installationsprogramm schreibt die Auswahl in AIAgent\first_run.ini; DReS übernimmt sie beim ersten Start (nur Einstellungen, die vorher nicht gesetzt waren) und benennt die Datei in first_run.applied um. Später lässt sich alles in Settings > Configure > AI Agent ändern.

Einschalten

Alles ist standardmäßig aus. Settings > Configure > AI Agent (Editor): Command API of the editor (Skripte, KI-Assistent), Voice control VeRa (Mikrofon), die Sprache der Befehle und der Antworten, die Pfade der Skripte und auf der Registerkarte VeRa voice control das Kontrollkästchen Pass commands VeRa does not know to the AI Agent window (standardmäßig an, siehe Unbekannte Befehle). Einstellungen > Konfigurieren... > AI Agent (Robot Cell Simulator): die Befehls-API des Simulators. Die große Taste VeRa (Mikrofon) rechts am Ende der Symbolleiste startet und beendet das Zuhören; sie ist grün, solange VeRa zuhört.

Settings > Configure > AI Agent, Registerkarte VeRa voice control (lokale Pfade verdeckt; das Fenster ist auf Englisch abgebildet, eine deutsche Oberfläche gibt es nicht)

Die Seite Settings > Configure > AI Agent hat vier Registerkarten: AI Agent window (Verbindung der Chatfenster des Editors und des Robot Cell Simulators zum Modell, Wissensdateien), VeRa voice control, Command API (siehe Editor-API) und VeRa AI agent (MCP server) (siehe KI-Assistent). Auf der Registerkarte AI Agent window wählen Sie den Anbieter (Anthropic-API-Schlüssel, OpenAI-kompatible API wie VW LLMaaS, Azure OpenAI oder ein lokales Ollama, oder Claude Code mit Ihrem claude.ai-Konto), das Modell, die Grenzen und den anonymen Modus und sehen die Liste der Wissensdateien des Agenten mit ihren Versionen - beschrieben in Fenster KI-Agent (Editor) > Einstellungen.

Settings > Configure > AI Agent, Registerkarte AI Agent window: Anbieter, Modell, Grenzen und Wissensdateien (lokale Pfade verdeckt)

Voraussetzungen in Windows

  1. Mikrofon für Desktop-Apps - Windows-Einstellungen > Datenschutz > Mikrofon: "Apps Zugriff auf das Mikrofon erlauben" und "Desktop-Apps den Zugriff auf das Mikrofon erlauben" eingeschaltet (meist schon an). Jedes Mikrofon geht: eingebaut, Headset oder Webcam; Windows nutzt das Standard-Aufnahmegerät (Soundeinstellungen > Eingabe).
  2. Spracherkennung der Sprache der Befehle - wird mit der Sprache installiert, Windows-Einstellungen > Zeit und Sprache > Sprache: English (United States) für englische Befehle und/oder Deutsch (Deutschland) für deutsche Befehle, jeweils mit der Option Spracherkennung (unter Sprachoptionen > Sprache). Nach dem Hinzufügen den Download fertigstellen lassen (Windows Update) und den Computer neu starten. VeRa hört gleichzeitig in jeder installierten der beiden Sprachen.
  3. Stimmen für die Antworten (optional) - die Sprachausgabe-Stimmen derselben Sprachpakete (z. B. Hedda für Deutsch, Zira für Englisch, Paulina für Polnisch); VeRa nimmt eine weibliche Stimme der Sprache, ohne eine antwortet sie auf Englisch.
  4. In DReS - Settings > Configure > AI Agent: Voice control VeRa einschalten, dann die Mikrofontaste rechts am Ende der Symbolleiste.

Nicht nötig: Online-Spracherkennung von Windows, Internetverbindung oder ein Konto - die Erkennung läuft vollständig auf dem Computer. Für den KI-Assistenten (MCP-Server) zusätzlich Python 3 (python.org, keine weiteren Pakete) und ein MCP-Client wie Claude Code.

Wenn VeRa nicht reagiert: in AIAgent\vera_voice.log nachsehen - dort steht, was VeRa gehört hat (mit Sicherheit), was sie nicht verstanden hat und Fehler, z. B. no speech recognizer for English or German installed in Windows (Punkt 2 fehlt). Zuerst den Namen sagen ("Vera, ..."), deutlich und in einem Zug; eine graue Mikrofontaste bedeutet, dass VeRa nicht zuhört (anklicken). Die Schwellen stehen in vera_commands.json.

Sprachsteuerung

Die Spracherkennung von Windows arbeitet offline. Englische Befehle brauchen nichts weiter; deutsche Befehle brauchen das deutsche Sprachpaket (Windows-Einstellungen > Zeit und Sprache > Spracherkennung). Windows muss das Mikrofon für Desktop-Apps erlauben (Windows-Einstellungen > Datenschutz > Mikrofon). VeRa antwortet per Sprache auf Polnisch, Deutsch oder Englisch. Die Befehle stehen in AIAgent\vera_commands.json - Sätze auf Englisch und Deutsch, der Befehl des Editors und die Antwort; eigene hinzufügen und das Zuhören neu starten. Was nicht in der Datei steht, geht an das Fenster KI-Agent (wenn eingeschaltet).

Lizenz: seit 2026-10-21 braucht die Sprachsteuerung die Zusatzlizenz 248 API / CLI (VeRa steuert den Editor und den Simulator über ihre Befehls-APIs). Ohne sie startet VeRa nicht; die Statusleiste meldet VeRa: not started - license 248 - API / CLI ... not found. Zustand der Lizenz: Help > License info.

Whisper (Spracherkennung offline)

Whisper (Open Source, whisper.cpp, MIT-Lizenz) schreibt den gesprochenen Befehl als Text - es versteht Akzente viel besser als die Spracherkennung von Windows, die den Klang nur mit den festen Sätzen vergleicht (z. B. wurde "activate last project" als "last line" gehört). Es läuft auf diesem Computer: ein kleiner Server AIAgent\whisper\whisper-server.exe hört nur auf 127.0.0.1 (Port 8178), wird mit dem Zuhören von VeRa gestartet und beendet; keine Internetverbindung, kein Konto. Ablauf: Windows findet weiterhin den Namen "Vera" und schneidet das Gesagte aus; Whisper schreibt es (etwa 0,5 s auf einem Laptop-Prozessor) und VeRa sucht den Satz aus vera_commands.json, der dem Text am nächsten ist - kleine Abweichungen ("activate the last project", "files" / "file") sind erlaubt, Befehle zum Schließen, Neuladen oder Wiederherstellen brauchen die genauen Wörter. Whisper wird für englische Befehle genutzt; deutsche Befehle behalten die Erkennung von Windows.

Modell: empfohlen ist ggml-medium.bin (mehrsprachig, etwa 1,5 GB) - es erkennt deutsche Wörter in den Befehlen (z. B. Folge) und Zahlen viel besser als ggml-base.en.bin (nur Englisch, etwa 148 MB). Es ist langsamer: etwa 4 s pro Befehl mit 6 Prozessor-Threads statt etwa 0,4 s. Einstellen in vera_commands.json: "whisper": {"model": "whisper/models/ggml-medium.bin"}. Die Modelldatei kann in AIAgent\whisper\models liegen; eine Ordnerverknüpfung (Junction) auf ein anderes Laufwerk ist in Ordnung. Download: Datei ggml-medium.bin von huggingface.co/ggerganov/whisper.cpp (ein fertiges Download-Paket auf dramat.eu ist geplant).

Auswahl: Settings > Configure > AI Agent > VeRa voice control > Speech recognition: Automatic (Whisper, wenn installiert, sonst Windows - Standard), Windows speech recognition oder Whisper. Unter der Auswahl zeigt DReS, ob Whisper installiert ist. Die Änderung gilt, wenn das Zuhören neu gestartet wird (Taste VeRa zweimal).

Manuelle Installation (wenn DReS ohne die Komponente installiert wurde oder der Download fehlschlug): https://dramat.eu/download/whisper.zip nach <Installation>\AIAgent\whisper entpacken - oder aus den offiziellen Quellen whisper-bin-x64.zip (Release von github.com/ggml-org/whisper.cpp) und das Modell ggml-base.en.bin (huggingface.co/ggerganov/whisper.cpp, etwa 148 MB) herunterladen; whisper-server.exe und alle *.dll aus dem Zip sowie das Modell nach <Installation>\AIAgent\whisper kopieren.

Einstellungen in vera_commands.json, Teil "whisper": enabled, exe und model (relativ zur Datei oder absolut - ein größeres Modell, z. B. ggml-small.en.bin, ist genauer, aber langsamer), port, threads (Prozessor-Threads), audioCtx (512 = bis etwa 10 s Sprache, schneller), prompt (Wörter, die Whisper erwarten soll), maxDistance (wie stark der Text von einem Satz abweichen darf, 0.34 = etwa ein Drittel der Wörter). In vera_voice.log steht bei jedem Befehl, was Whisper geschrieben hat und welcher Satz genommen wurde (Whisper: ..., -> ...).

Wie man spricht

Zwei Arten: in einem Satz - "Vera, check syntax" - oder in zwei Schritten - "Vera" sagen, die Mikrofontaste beginnt zu blinken (orange / grün), dann innerhalb von 8 Sekunden den Befehl ohne den Namen. Ohne den Namen am Anfang reagiert VeRa nicht, damit Gespräche im Raum nicht als Befehle gelten. VeRa hört gleichzeitig Englisch und Deutsch (jede Sprache, wenn ihre Spracherkennung in Windows installiert ist) und antwortet in der Sprache des Befehls; in den Einstellungen können Befehle und Antworten auch auf eine Sprache festgelegt werden (Antworten auch Polnisch).

EnglischDeutschBefehl des EditorsAntwort
Vera, save, Vera, save fileVera, speichern, Vera, Datei speichern{"cmd": "save"}Gespeichert.
Vera, save allVera, alles speichern{"cmd": "save_all"}Alles gespeichert.
Vera, close, Vera, close file, Vera, close the file, Vera, close this file, Vera, close current file, Vera, close the current file, Vera, close active file, Vera, close the active fileVera, schließen, Vera, Datei schließen, Vera, diese Datei schließen, Vera, aktive Datei schließen{"cmd": "close"}Geschlossen.
Vera, close all files, Vera, close all the files, Vera, close all windowsVera, alle Dateien schließen, Vera, alles schließen, Vera, alle schließen{"cmd": "close_all"}Alle geschlossen.
Vera, restore last session, Vera, restore the last session, Vera, open last sessionVera, letzte Sitzung wiederherstellen{"cmd": "restore_session", "what": "all"}Letzte Sitzung wird wiederhergestellt.
Vera, restore robots from last session, Vera, restore robots from the last session, Vera, restore robot projects from last session, Vera, restore robot projects from the last sessionVera, Roboter aus der letzten Sitzung wiederherstellen{"cmd": "restore_session", "what": "robots"}Roboter der letzten Sitzung werden wiederhergestellt.
Vera, restore files from last session, Vera, restore files from the last session, Vera, restore the files from the last sessionVera, Dateien aus der letzten Sitzung wiederherstellen{"cmd": "restore_session", "what": "files"}Dateien der letzten Sitzung werden wiederhergestellt.
Vera, reload, Vera, reload fileVera, neu laden, Vera, Datei neu laden{"cmd": "reload"}Neu geladen.
Vera, check syntaxVera, Syntax prüfen{"cmd": "check_syntax"}
Vera, next window, Vera, next fileVera, nächstes Fenster, Vera, nächste Datei{"cmd": "window_next"}
Vera, previous window, Vera, previous fileVera, vorheriges Fenster, Vera, vorherige Datei{"cmd": "window_previous"}
Vera, first file, Vera, first windowVera, erste Datei, Vera, erstes Fenster{"cmd": "window_first"}
Vera, last file, Vera, last windowVera, letzte Datei, Vera, letztes Fenster{"cmd": "window_last"}
Vera, undoVera, rückgängig{"cmd": "undo"}
Vera, redoVera, wiederholen{"cmd": "redo"}
Vera, start simulator, Vera, open simulatorVera, Simulator starten, Vera, Simulator öffnen{"cmd": "run_plugin", "name": "Robot Cell Simulator"}Ich starte den Simulator.
Vera, next robot, Vera, next robot active, Vera, activate next robot, Vera, set next robot active, Vera, next project, Vera, next robot project, Vera, set next robot project active, Vera, next robot project active, Vera, activate next robot project, Vera, activate next project, Vera, set next project active, Vera, next project active, Vera, activate the next project, Vera, activate the next robotVera, nächster Roboter, Vera, nächstes Projekt, Vera, nächsten Roboter aktivieren, Vera, nächstes Roboterprojekt, Vera, nächstes Roboterprojekt aktivieren{"cmd": "project_next"}
Vera, previous robot, Vera, previous robot active, Vera, activate previous robot, Vera, set previous robot active, Vera, previous project, Vera, previous robot project, Vera, set previous robot project active, Vera, previous robot project active, Vera, activate previous robot project, Vera, activate previous project, Vera, set previous project active, Vera, previous project active, Vera, activate the previous project, Vera, activate the previous robotVera, vorheriger Roboter, Vera, vorheriges Projekt, Vera, vorherigen Roboter aktivieren, Vera, vorheriges Roboterprojekt, Vera, vorheriges Roboterprojekt aktivieren{"cmd": "project_previous"}
Vera, close robot project, Vera, close robot, Vera, close active robot project, Vera, close the robot project, Vera, close projectVera, Roboterprojekt schließen, Vera, Roboter schließen, Vera, aktives Projekt schließen, Vera, Projekt schließen{"cmd": "close_project"}Projekt geschlossen.
Vera, next line, Vera, go to next line, Vera, move to next line, Vera, go to the next line, Vera, move to the next lineVera, zur nächsten Zeile, Vera, nächste Zeile{"cmd": "goto", "target": "line", "direction": "next"}Zeile {0}.
Vera, previous line, Vera, go to previous line, Vera, move to previous line, Vera, go to the previous line, Vera, move to the previous lineVera, zur vorherigen Zeile, Vera, vorherige Zeile{"cmd": "goto", "target": "line", "direction": "previous"}Zeile {0}.
Vera, first line, Vera, go to first line, Vera, go to the first line, Vera, move to first line, Vera, move to the first lineVera, zur ersten Zeile, Vera, erste Zeile{"cmd": "goto", "target": "line", "direction": "first"}Zeile {0}.
Vera, last line, Vera, go to last line, Vera, go to the last line, Vera, move to last line, Vera, move to the last lineVera, zur letzten Zeile, Vera, letzte Zeile{"cmd": "goto", "target": "line", "direction": "last"}Zeile {0}.
Vera, next fold, Vera, go to next fold, Vera, move to next fold, Vera, go to the next fold, Vera, move to the next foldVera, zum nächsten Fold, Vera, nächster Fold{"cmd": "goto", "target": "fold", "direction": "next"}Zeile {0}.
Vera, previous fold, Vera, go to previous fold, Vera, move to previous fold, Vera, go to the previous fold, Vera, move to the previous foldVera, zum vorherigen Fold, Vera, vorheriger Fold{"cmd": "goto", "target": "fold", "direction": "previous"}Zeile {0}.
Vera, first fold, Vera, go to first fold, Vera, go to the first fold, Vera, move to first fold, Vera, move to the first foldVera, zum ersten Fold, Vera, erster Fold{"cmd": "goto", "target": "fold", "direction": "first"}Zeile {0}.
Vera, last fold, Vera, go to last fold, Vera, go to the last fold, Vera, move to last fold, Vera, move to the last foldVera, zum letzten Fold, Vera, letzter Fold{"cmd": "goto", "target": "fold", "direction": "last"}Zeile {0}.
Vera, next tech, Vera, go to next tech, Vera, move to next tech, Vera, go to the next tech, Vera, move to the next techVera, zum nächsten Tech, Vera, nächster Tech{"cmd": "goto", "target": "tech", "direction": "next"}Zeile {0}.
Vera, previous tech, Vera, go to previous tech, Vera, move to previous tech, Vera, go to the previous tech, Vera, move to the previous techVera, zum vorherigen Tech, Vera, vorheriger Tech{"cmd": "goto", "target": "tech", "direction": "previous"}Zeile {0}.
Vera, first tech, Vera, go to first tech, Vera, go to the first tech, Vera, move to first tech, Vera, move to the first techVera, zum ersten Tech, Vera, erster Tech{"cmd": "goto", "target": "tech", "direction": "first"}Zeile {0}.
Vera, last tech, Vera, go to last tech, Vera, go to the last tech, Vera, move to last tech, Vera, move to the last techVera, zum letzten Tech, Vera, letzter Tech{"cmd": "goto", "target": "tech", "direction": "last"}Zeile {0}.
Vera, next point, Vera, go to next point, Vera, move to next point, Vera, go to the next point, Vera, move to the next pointVera, zum nächsten Punkt, Vera, nächster Punkt{"cmd": "goto", "target": "point", "direction": "next"}Zeile {0}.
Vera, previous point, Vera, go to previous point, Vera, move to previous point, Vera, go to the previous point, Vera, move to the previous pointVera, zum vorherigen Punkt, Vera, vorheriger Punkt{"cmd": "goto", "target": "point", "direction": "previous"}Zeile {0}.
Vera, first point, Vera, go to first point, Vera, go to the first point, Vera, move to first point, Vera, move to the first pointVera, zum ersten Punkt, Vera, erster Punkt{"cmd": "goto", "target": "point", "direction": "first"}Zeile {0}.
Vera, last point, Vera, go to last point, Vera, go to the last point, Vera, move to last point, Vera, move to the last pointVera, zum letzten Punkt, Vera, letzter Punkt{"cmd": "goto", "target": "point", "direction": "last"}Zeile {0}.
Vera, next up call, Vera, go to next up call, Vera, move to next up call, Vera, next up, Vera, go to next up, Vera, move to next up, Vera, go to the next up call, Vera, move to the next up call, Vera, go to the next up, Vera, move to the next up, Vera, next U P call, Vera, go to next U P call, Vera, move to next U P call, Vera, go to the next U P call, Vera, move to the next U P call, Vera, next U P, Vera, go to next U P, Vera, move to next U P, Vera, go to the next U P, Vera, move to the next U P, Vera, next subprogram call, Vera, go to next subprogram call, Vera, move to next subprogram call, Vera, go to the next subprogram call, Vera, move to the next subprogram call, Vera, next subprogram, Vera, go to next subprogram, Vera, move to next subprogram, Vera, go to the next subprogram, Vera, move to the next subprogramVera, zum nächsten UP Aufruf, Vera, nächster UP Aufruf{"cmd": "goto", "target": "up", "direction": "next"}Zeile {0}.
Vera, previous up call, Vera, go to previous up call, Vera, move to previous up call, Vera, previous up, Vera, go to previous up, Vera, move to previous up, Vera, go to the previous up call, Vera, move to the previous up call, Vera, go to the previous up, Vera, move to the previous up, Vera, previous U P call, Vera, go to previous U P call, Vera, move to previous U P call, Vera, go to the previous U P call, Vera, move to the previous U P call, Vera, previous U P, Vera, go to previous U P, Vera, move to previous U P, Vera, go to the previous U P, Vera, move to the previous U P, Vera, previous subprogram call, Vera, go to previous subprogram call, Vera, move to previous subprogram call, Vera, go to the previous subprogram call, Vera, move to the previous subprogram call, Vera, previous subprogram, Vera, go to previous subprogram, Vera, move to previous subprogram, Vera, go to the previous subprogram, Vera, move to the previous subprogramVera, zum vorherigen UP Aufruf, Vera, vorheriger UP Aufruf{"cmd": "goto", "target": "up", "direction": "previous"}Zeile {0}.
Vera, first up call, Vera, go to first up call, Vera, go to the first up call, Vera, move to first up call, Vera, move to the first up call, Vera, first up, Vera, go to first up, Vera, go to the first up, Vera, move to first up, Vera, move to the first up, Vera, first U P call, Vera, go to first U P call, Vera, move to first U P call, Vera, go to the first U P call, Vera, move to the first U P call, Vera, first U P, Vera, go to first U P, Vera, move to first U P, Vera, go to the first U P, Vera, move to the first U P, Vera, first subprogram call, Vera, go to first subprogram call, Vera, move to first subprogram call, Vera, go to the first subprogram call, Vera, move to the first subprogram call, Vera, first subprogram, Vera, go to first subprogram, Vera, move to first subprogram, Vera, go to the first subprogram, Vera, move to the first subprogramVera, zum ersten UP Aufruf, Vera, erster UP Aufruf{"cmd": "goto", "target": "up", "direction": "first"}Zeile {0}.
Vera, last up call, Vera, go to last up call, Vera, go to the last up call, Vera, move to last up call, Vera, move to the last up call, Vera, last up, Vera, go to last up, Vera, go to the last up, Vera, move to last up, Vera, move to the last up, Vera, last U P call, Vera, go to last U P call, Vera, move to last U P call, Vera, go to the last U P call, Vera, move to the last U P call, Vera, last U P, Vera, go to last U P, Vera, move to last U P, Vera, go to the last U P, Vera, move to the last U P, Vera, last subprogram call, Vera, go to last subprogram call, Vera, move to last subprogram call, Vera, go to the last subprogram call, Vera, move to the last subprogram call, Vera, last subprogram, Vera, go to last subprogram, Vera, move to last subprogram, Vera, go to the last subprogram, Vera, move to the last subprogramVera, zum letzten UP Aufruf, Vera, letzter UP Aufruf{"cmd": "goto", "target": "up", "direction": "last"}Zeile {0}.
Vera, close window, Vera, close the window, Vera, close warnings window, Vera, close dialog, Vera, close the dialogVera, Fenster schließen, Vera, Dialog schließen, Vera, Meldungsfenster schließen{"cmd": "close_dialog"}Fenster geschlossen.
Vera, close program, Vera, close editor, Vera, exit program, Vera, exit editor, Vera, close the program, Vera, close the editorVera, Programm beenden, Vera, Programm schließen, Vera, Editor schließen, Vera, Editor beenden{"cmd": "ui_click", "action": "File > Exit"}Auf Wiedersehen.
Vera, stop listening, Vera, goodbyeVera, nicht mehr zuhören, Vera, auf WiedersehenstopAuf Wiederhören.
Vera, set active project / active project / activate robot threeVera, aktives Projekt / aktiviere Roboter drei{"cmd":"set_active_project"}Aktives Projekt: {0}.
Vera, first / second ... ninth / last robot (also: activate second robot, set fifth robot active)Vera, erster / zweiter ... letzter Roboter (auch: zweiten Roboter aktivieren)robot by its position in the project treeAktives Projekt: {0}.
Vera, next robot / previous robot (also: next robot active, activate next robot)Vera, nächster / vorheriger Roboternext / previous robot projectAktives Projekt: {0}.
Vera, first / second ... ninth / last file (also: second file active, activate fifth file)Vera, erste / zweite ... letzte Datei (auch: zweite Datei aktivieren)open document by its position (Window menu)Aktive Datei: {0}.

Unbekannte Befehle → KI-Agent

Hört VeRa ihren Namen, ist der Rest aber keiner ihrer Sprachbefehle, gibt sie nicht auf: der von Whisper geschriebene Text geht als Nachricht an das Fenster KI-Agent des Editors (wie {"cmd":"ai_chat"}), das Fenster öffnet sich und VeRa sagt "Ich habe es an den KI-Agenten weitergegeben" (Englisch "I passed it to the AI agent", Polnisch "Przekazałam to agentowi AI"). Der KI-Agent plant die Schritte und antwortet im Chat. Beispiele:

Einstellung: Settings > Configure > AI Agent, Registerkarte VeRa voice control, Kontrollkästchen Pass commands VeRa does not know to the AI Agent window (needs the license 'API / CLI') - standardmäßig an (INI-Schlüssel AI_Agent_Voice_Forward; für das Skript: vera_voice.ps1 -ForwardUnknown on|off). Ist es aus, sagt VeRa, dass sie den Befehl nicht kennt. Ohne die Lizenz API / CLI kann der KI-Agent nicht antworten. Für lange, freie Sätze liefert das mehrsprachige Whisper-Modell ggml-medium.bin den besten Text.

Eigene Befehle

Die Befehle sind nicht fest im Programm: sie stehen in AIAgent\vera_commands.json (Textdatei, mit dem Editor bearbeiten und die VeRa-Taste zweimal klicken, um das Zuhören neu zu starten). Jeder Befehl hat die Sätze ("say", Englisch und Deutsch, nur Wörter - keine Ziffern), den Befehl des Editors ("cmd") und die gesprochene Antwort ("reply", Polnisch, Deutsch, Englisch). Jeder Befehl der Editor-API ist möglich, auch jede Menüaktion über ihren Pfad, z. B. {"cmd":"ui_click","action":"Tools > Compare files"} oder {"cmd":"ui_click","action":"File > Reload all files"} - die Liste aller Pfade: Menüaktionen für eigene Befehle (etwa 620 Aktionen aller Menüs; aktuelle Liste auch über {"cmd":"ui_actions"}). Beispiel:
{ "say": { "en": ["compare files"], "de": ["Dateien vergleichen"] }, "cmd": { "cmd": "ui_click", "action": "Tools > Compare files" }, "reply": { "pl": "Porównuję.", "de": "Ich vergleiche.", "en": "Comparing." } }

Schwellen, Signal und Protokoll

In vera_commands.json: minConfidence (Standard 0.5) - wie sicher die Spracherkennung sein muss, um einen Befehl auszuführen; wakeConfidence (0.4) - dasselbe für "Vera" allein (ein kurzes Wort, Windows ist dabei weniger sicher); niedrigere Werte reagieren leichter, aber auch auf falsche Wörter. awakeSignal nach "Vera" allein: none (nur Blinken, Standard), beep oder voice ("Ja?"). Alles, was VeRa gehört, ausgeführt oder nicht verstanden hat, steht in AIAgent\vera_voice.log (in %TEMP%, wenn das Installationsverzeichnis schreibgeschützt ist).

KI-Assistent (MCP-Server)

Ohne externen KI-Assistenten: der Robot Cell Simulator hat einen eigenen Chat mit einem KI-Agenten, das Fenster KI-Agent (Registerkarte neben den Meldungen; Verbindung zum Modell in den Einstellungen des Simulators, Lizenz API / CLI). Mit dem Anbieter Claude Code - Ihr claude.ai-Konto nutzt dieses Fenster ebenfalls VeRa: der Simulator startet Claude Code mit diesem MCP-Server, und Claude Code steuert den Simulator mit den Werkzeugen rcs und status; außerhalb des anonymen Modus liest er mit editor_read und projects die Roboterprogramme der Station im Editor (siehe Einrichtung Schritt für Schritt, Weg B).

AIAgent\vera_mcp.py (Python 3, keine weiteren Pakete) ist ein MCP-Server. Einmal in Claude Code registrieren: claude mcp add vera -- python "<Installation>\AIAgent\vera_mcp.py" (derselbe Befehl steht in den Einstellungen mit einer Kopiertaste). Dann dem Assistenten sagen, was zu tun ist, z. B. "VeRa, öffne UP48 von Roboter R03 und prüfe die Syntax" oder "VeRa, simuliere Variante C3 Folge 81 zehnmal und vergleiche sie mit dem Original". Werkzeuge: Lizenz: der KI-Assistent (MCP-Server) und jedes andere Programm oder Skript, das DReS oder den Robot Cell Simulator über die Befehls-APIs steuert, brauchen die Zusatzlizenz API / CLI (Steuerung durch andere Programme, Skripte und KI-Agenten); ohne sie gehen nur lesende Befehle (Status, offene Dokumente, Fenster) und die Einstellungen der Befehls-APIs sind gesperrt. Auch die Sprachsteuerung braucht diese Lizenz (seit 2026-10-21).

Registerkarte VeRa AI agent (MCP server): der Befehl zur Registrierung von VeRa in Claude Code, die Taste kopiert ihn
WerkzeugWas es macht
statusZustand des Editors und des Simulators: APIs erreichbar, Lizenzen bereit, aktive Datei, offener Dialog, Editor beschäftigt (stellt die Sitzung wieder her / öffnet Dateien), RCS lädt / läuft.
editorBeliebiger Befehl der Editor-API (DReS_API), z. B. {"cmd":"plugins"}, {"cmd":"documents"}, {"cmd":"ui_actions"}, {"cmd":"ui_click","action":"File > Save all"}, {"cmd":"ui_list"}, {"cmd":"settings_get","filter":"..."} - siehe Editor-API.
editor_readNur die lesenden Befehle der Editor-API: status, documents, projects, search, robot_data, points, tech mit action list, check_syntax, axis_limits (ohne save, format, remember und dialog), find_projects (ohne open), path_check, tool_base_usage, payload_check (ohne dialog), robot_world, compare, archive_diff. Andere Befehle, tech set und CSV-Ausgabedateien werden abgelehnt – für einen Agenten, der die Roboterprogramme lesen, aber nichts ändern darf (z. B. das Fenster KI-Agent des Simulators mit Claude Code).
rcsBeliebiger Befehl der API des Robot Cell Simulator (DReS_RCS_API): load, set, run, fast_run, stop, report, run_data, zones, check_interlocks, ui_windows, ui_list, ui_actions, ui_get, ui_set, ui_click, ui_view, ui_view_set, ui_context, ui_close, ui_key, ui_file, ui_shot, settings_get, settings_set. wait_idle = true wartet, bis Laden / Simulation beendet ist. Siehe rcs_api und rcs_api_reference.
open_fileÖffnet ein Roboterprogramm oder eine beliebige Textdatei im Editor (optional an einer Zeile).
saveSpeichert das aktive Dokument oder die angegebene offene Datei.
save_allSpeichert alle geänderten Dokumente.
close_fileSchließt das aktive Dokument oder die angegebene offene Datei. Eine nicht geänderte Datei schließt sofort. Eine geänderte Datei: ohne action fragt der Editor den Benutzer (Speichern / Verwerfen / Abbrechen); der Assistent fragt zuerst den Benutzer und übergibt action = save (speichern und schließen), discard (Änderungen verwerfen und schließen) oder cancel (offen lassen).
close_allSchließt alle Dokumente. Nicht geänderte schließen sofort; bei geänderten fragt der Editor den Benutzer, außer bei action = save / discard / cancel (cancel lässt die geänderten offen).
reloadLädt das aktive Dokument (oder die angegebene Datei) neu von der Festplatte.
documentsOffene Dokumente des Editors (Datei, geändert, aktiv).
projectsRoboterprojekte im Projektbaum (Name, Steuerungstyp, Konfigurationsdatei, aktiv).
set_active_projectSetzt das aktive Roboterprojekt (Name oder ein Teil davon, z. B. 'R03' oder '0001R03').
close_projectSchließt ein Roboterprojekt wie 'Close robot' im Projektbaum: seine offenen Dateien (bei einer geänderten Datei fragt der Editor Speichern / Verwerfen / Abbrechen) und den Roboter im Baum. Ohne Namen: das aktive Projekt.
restore_sessionStellt die letzte Sitzung des Editors wieder her (die zuletzt gespeicherte): what = all (Roboterprojekte und Dateien, Standard), robots (nur die Roboterprojekte) oder files (nur die offenen Dateien). Bereits offene Dateien und Roboter bleiben offen.
gotoBewegt den Cursor im aktiven Dokument (oder in der angegebenen offenen Datei) und gibt Zeile und Text zurück. target: line, first_line, last_line, point (Bewegung), fold (Hauptfold), tech (TECH-Befehl), up (UP- / Unterprogrammaufruf); direction: next oder previous (vom Cursor), first oder last (im Dokument). Zugeklappte Folds um das Ziel werden aufgeklappt.
check_syntaxPrüft die Syntax des aktiven Dokuments (oder der angegebenen offenen Datei) und gibt das Ergebnis sofort zurück: valid, errors, warnings, problems (line, severity, text, message) und messages (Texte des Ergebnisfensters, das der Editor selbst schließt). run = false liest nur die Markierungen der letzten Prüfung. Siehe check_syntax.
menuListet die Menüaktionen des Editors (Pfad wie 'File > Save all'), optional gefiltert.
menu_clickLöst eine Menüaktion des Editors über ihren Pfad aus, z. B. 'File > Save all' oder 'Window > Close all'. Ein Dialog, den sie öffnet, ist mit editor {"cmd":"ui_windows"} zu sehen und wird mit ui_set / ui_click beantwortet.
start_rcsSchaltet die API des Robot Cell Simulator ein und öffnet ihn (wartet, bis er antwortet).
rcs_studySimulationsstudie im RCS: lädt eine Simulationsdatei, optional Folge 125 nach HOME, startet eine Folge (Zyklen, Geschwindigkeit, SPS) und gibt die Laufdaten zurück (Stationstakt, Roboter, Wartezeiten). Optional eine Berichtsdatei.

Warten: das Werkzeug rcs mit "wait_idle": true (und timeout_s) wartet, bis der Simulator frei ist: kein Laden, keine Vorbereitung, keine Simulation, keine offene Aktion im Fenster – und jetzt auch, bis ein laufender Robustheitstest beendet ist.

Schlüssel der Sitzung: wenn DReS den Prozess selbst startet (das Fenster KI-Agent des Simulators mit Claude Code, die Sprachsteuerung), gibt es ihm den Schlüssel der Sitzung in der Umgebungsvariablen DRES_API_TOKEN. vera_mcp.py fügt diesen Schlüssel jedem Befehl an den Editor oder den Simulator hinzu.

Wie es funktioniert und wohin die Daten gehen

Die Sprachsteuerung läuft vollständig auf diesem Computer: die Spracherkennung von Windows (offline) erkennt nur die Sätze aus vera_commands.json, das Skript schickt den Befehl über eine lokale Pipe an den Editor. Nichts geht ins Internet, kein KI-Konto ist nötig. KI-Assistent (MCP): Sie schreiben (oder diktieren) dem Assistenten, z. B. Claude Code mit Ihrem Konto; das Sprachmodell seines Anbieters entscheidet, welche Werkzeuge von VeRa benutzt werden, vera_mcp.py führt sie auf diesem Computer aus und gibt die Ergebnisse (z. B. Dateinamen, Programmzeilen, Ergebnisse einer Simulation) an den Assistenten zurück - diese Ergebnisse sind Teil des Gesprächs und werden vom Anbieter nach den Bedingungen Ihres Kontos verarbeitet. Sprachsteuerung und KI-Assistent sind unabhängig; beide arbeiten nur, solange ihre APIs in den Einstellungen eingeschaltet sind. Die Sprachsteuerung ist Teil von DReS und braucht die Zusatzlizenz API / CLI (248); DReS startet sie selbst und gibt ihr einen Schlüssel der Sitzung, den kein anderes Programm kennt.

Editor-API

Befehle von \\.\pipe\DReS_API (AIAgent\dres_api.ps1) zusätzlich zu denen in Befehls-API. Änderungen, die einen Dialog öffnen können, antworten mit queued; ein Dialog ist mit ui_windows zu sehen. Befehle verschiedener Verbindungen laufen nacheinander: ein Befehl einer zweiten Verbindung wartet, bis der laufende Befehl beendet ist. Befehle außer den lesenden brauchen die Zusatzlizenz API / CLI (auch die Sprachsteuerung).

Das Fenster KI-Agent des Editors (Tools > Show / hide AI Agent chat, Alt+4) benutzt diese Befehle ebenfalls: ein Chat mit einem KI-Modell, das für Sie im Editor arbeitet (Werkzeug editor_command); seine direkten Befehle (/documents, /projects …) führen diese Befehle ohne Modell aus.

Registerkarte Command API: die Befehls-API des Editors für den KI-Agenten und Skripte, Zustand listening
BefehlParameterWas er macht
licensedetailsZustand der Lizenzprüfung (ready) und die verfügbaren Lizenzen (lesend, keine Lizenz nötig); mit "details": true außerdem, wie Help > License info: licenses – jede Lizenz mit fid, name, onKey, available, expired, privilegesFile, viaExperimental, type (perpetual, expiration, trial, timeperiod, executions), start, end, daysLeft, executions; key {id, type}; knowledgePacks – die installierten Wissenspakete mit file, year, available und error (der Grund der Sperre). Beispiel: {"cmd":"license","details":true}
documentsoffene Dokumente (Datei, geändert, aktiv)
documents_viewsortBy, robotPrefix, robotNameAnsicht der Liste Open documents wie in ihrem Kontextmenü (siehe Offene Dokumente): sortBy = name | modified | path | robot, robotPrefix = true (Robotername vor jeder Datei) / false (nur vor Dateien mit gleichem Namen), robotName = full | short (kurzer VASS-Name, z. B. 5670R01); die Einstellungen bleiben nach einem Neustart erhalten; ohne Parameter wird nur der aktuelle Zustand zurückgegeben (sortBy, robotPrefix, robotName), z. B. {"cmd":"documents_view","sortBy":"robot","robotPrefix":true,"robotName":"short"}
activatefilemacht ein offenes Dokument aktiv
savefile, as, overwrite, ignoreEmptyComment, ignoreWarnings, manualUpgrade81, manualUpgradeCommentedspeichert das aktive oder das angegebene Dokument. Ohne die Optionen wird das Speichern eingereiht (queued); eine Rückfrage des Speicherns (Fenster) sieht der Benutzer, die nächsten Befehle melden A dialog is open. ignoreEmptyComment: Ignore bei der Frage "Empty comment" (Job / Programm mit leerem Kommentar, Yaskawa, VKRC, Fanuc). ignoreWarnings: Save im Fenster "Syntax warnings" mit den Standardoptionen, d. h. die Datei wird unverändert gespeichert, wenn die Prüfung nur Warnungen oder Infos gefunden hat; Syntaxfehler gehen nie durch – die Datei wird nicht gespeichert und die Antwort nennt den Grund (Yaskawa, VKRC, Fanuc; ABB und KRC haben kein solches Fenster). manualUpgrade81: Antwort auf die Frage "Manual upgrade" (VKRC, Datei mit TPVW unter 8.3 und Tech-Befehlen bei eingeschaltetem Run WoV manual upgrade on file save; der WorkVisual-Codegenerator schreibt die Tech-Befehle im Format 8.3 um, der Dateikopf bleibt 8.1): true = Manual upgrade ausführen, false = Datei so behalten, wie DReS sie gespeichert hat; ohne den Parameter entscheidet die Einstellung Settings > VKRC > Manual Upgrade > File with TPVW below 8.3 and Tech commands (Standard Ask); wird die Frage durch die API geschlossen, gilt das als Cancel: die Datei wird nicht gespeichert (saved:false, error mit dem Hinweis manualUpgrade81 / manualUpgradeCommented: true / false answers this question). manualUpgradeCommented: Antwort auf die Frage "Manual upgrade" bei einer VKRC-Datei mit auskommentierten Folds (;;FOLD ...: Punkte, SCHRITT, Trigger, VExpert) und eingeschaltetem Run WoV manual upgrade on file save; der WorkVisual-Codegenerator löscht die auskommentierten Folds (Punkte auch mit ihren Koordinaten in der .dat-Datei): true = Manual upgrade ausführen (die auskommentierten Folds werden gelöscht), false = ohne ihn speichern; ohne den Parameter entscheidet die Einstellung Settings > VKRC > Manual Upgrade > File with commented folds (Standard Ask); wird die Frage durch die API geschlossen, gilt sie als Abbrechen – die Datei wird nicht gespeichert und der error nennt den Parameter. Beide Fragen werden gestellt, bevor die Datei geschrieben wird. as: Speichern unter neuem Namen ohne Dateidialog (Name ohne Ordner = Ordner des Dokuments; eine vorhandene Datei nur mit overwrite:true). Mit einer dieser Optionen speichert der Befehl sofort und blockiert die API nie: ein Fenster, das die Optionen nicht abschalten (Syntax warnings ohne ignoreWarnings, Empty comment ohne ignoreEmptyComment, Backup- / Dateinamen-Fragen), wird wie Abbrechen geschlossen und die Antwort lautet sofort saved:false, ok:false, error "dialog: Titel ..." mit der Option, die es abschaltet, dialogs [Titel]. Sonst antwortet er mit saved (true / false), dialogs (automatisch beantwortete Fragen, z. B. "Empty comment", "Syntax warnings") und bei Misserfolg ok:false mit error. Entsprechende Einstellung: Settings > Editor > Save > Questions on save ("Do not ask about an empty comment when saving" = ignoreEmptyComment, "Save without asking when there are only syntax warnings" = ignoreWarnings, beide standardmäßig aus). Beispiel: {"cmd":"save","ignoreEmptyComment":true,"ignoreWarnings":true}
save_allignoreEmptyComment, ignoreWarnings, manualUpgrade81, manualUpgradeCommentedspeichert alle geänderten Dokumente; mit den Optionen sofort, Antwort saved (alle), dialogs und files (Ergebnis je Datei); unbenannte Dokumente werden übersprungen (mit save + as speichern)
closefile, saveschließt ein Dokument; ein geändertes nur mit save=true
close_allsaveschließt alle Dokumente; geänderte nur mit save=true
reloadfile, forcelädt neu von der Festplatte; ein geändertes nur mit force=true
projectsRoboterprojekte des Projektbaums (Name, Konfiguration, Typ, Steuerung, aktiv); type 0 VKRC, 1 Fanuc, 2 ABB, 3 KRC (auch VKRC 5 / KRC4 VW), 4 Yaskawa, controller = Name des Typs
set_active_projectnamesetzt das aktive Roboterprojekt (Name oder sein Ende, z. B. R03)
export_longtextsdir, format, projectsspeichert die Langtexte jedes Roboterprojekts des Projektbaums in getrennte Dateien, eine pro Roboter, wie Tools > Export langtext for all robot projects to separate files... (siehe Langtext-Export): dir = Ordner (Pflicht), format = csv (Standard, Zeilen E41;Text) | native (Format der Steuerung), projects = nur Roboterprojekte, deren Name einen dieser Texte enthält (ohne oder mit ["*"] alle); Antwort pro Projekt: project, type, count, file, source, error sowie die Anzahl gespeicherter Dateien, z. B. {"cmd":"export_longtexts","dir":"D:/x/longtexts","format":"native","projects":["R01","R02"]}
write_filefile, content, overwrite, encoding, bom, width, height, landscapeschreibt eine Datei für den Benutzer ohne Dialoge: txt csv md json xml html svg log als Text (CSV mit BOM für Excel, bom), pdf aus HTML-content gedruckt (landscape für breite Tabellen; Größen in px wie am Bildschirm, Standardschrift Arial 10 pt), xlsx aus CSV-content (Trennzeichen ;, eine Zeile #sheet Name beginnt ein neues Blatt, die erste Zeile ist die Kopfzeile), png bmp jpg aus SVG-content gerendert (width / height in Pixeln), Roboterdateien src dat sub ls mod sys jbi (Windows-1252 oder encoding); ein Name ohne Ordner wird in den Ordner der Agentendateien geschrieben (Settings > AI Agent > Command API, Standard Dokumente\DReS AI); eine vorhandene Datei wird nur mit overwrite: true überschrieben; Antwort file, bytes; Lizenz API / CLI, z. B. {"cmd":"write_file","file":"interlocks.xlsx","content":"#sheet Pairs\nRobot A;Robot B;Zones\nR1;R2;3"}
save_knowledgefile, content, mode, loadspeichert Wissen, das der Benutzer dem Agenten beigebracht hat, als eigene Wissensdatei (siehe Den Agenten anlernen): file = nur der Name (.md wird ergänzt), content = das Wissen als Markdown, mode = new (Standard; Fehler, wenn die Datei existiert) | append (fügt einen Abschnitt ## Added <Datum> hinzu) | replace; eine neue Datei bekommt die Zeile Version: 1.0 (<Datum>); Ordner = Einstellung Your knowledge files: (Settings > AI Agent > AI Agent window; leer = <Ordner der Agentendateien>\knowledge, Standard Dokumente\DReS AI\knowledge); load = true (Standard) fügt die Datei den Wissensdateien des KI-Agenten des Editors hinzu und lädt das Wissen sofort, wenn der Agent untätig ist, sonst im nächsten Chat oder nach /reload; Antwort file, bytes, added (neu in der Liste), inKnowledgeList, loaded (now | next chat or /reload); Lizenz API / CLI, z. B. {"cmd":"save_knowledge","file":"cell_rules","content":"# Rules of cell 10\n- ...","mode":"append"}
collision_mapprojects, programs, formats, file, titleVerriegelungs- (Kollisions-) Karte Roboter–Roboter der geöffneten Roboterprojekte wie Tools > Collision map of the robot projects... (siehe Kollisionskarte); nur KUKA VKRC und Fanuc im VW-Standard, gemischte Stationen erlaubt, andere Steuerungen stehen in skipped; Signalanalyse des Programmcodes (keine geometrische Kollisionsprüfung, die Programme werden nicht geändert): projects = Namensteile (ohne oder mit ["*"] alle), programs = Basisnamen, z. B. ["folge81","up42"] (leer: jede Folge mit ihren UPs), formats = svg | png | html | pdf | csv | xlsx | json (keins: nur die Antwort), file = Pfad ohne Endung (nur Name: Ordner der Agentendateien, Settings > AI Agent > Command API, Standard Dokumente\DReS AI), title; Antwort: robots, pairs (a, b, zonesA, zonesB, state BOTH | ONE_SIDED), partnerChecks, findings (max. 80), findingCount, skipped, files; Lizenzen API / CLI (248) und Wissen des KI-Agenten (247), z. B.{"cmd":"collision_map","projects":["*"],"formats":["png","html"],"file":"station_map"}
open_projectconfigöffnet ein Roboterprojekt aus seiner Konfigurationsdatei wie File > Open robot project (VKRC / KRC $config.dat, Fanuc system.va, ABB system.xml, Yaskawa SYSTEM.SYS); das Projekt erscheint im Projektbaum und wird aktiv; Antwort queued
sessionaction, name, overwrite, file, todas Menü Sessions ohne Dialoge: action = list (Standard; jede gespeicherte Sitzung mit name, files, projects, current) | current (nur die aktuelle Sitzung) | save (name, ohne ihn die aktuelle Sitzung; eine andere vorhandene Sitzung nur mit overwrite: true) | save_file (file .ini, overwrite) | new | open (name) | open_file (file) | import_file (file, onConflict) | delete (name) | rename (name, to). open, open_file und new schließen alle Dokumente und Roboterprojekte und werden abgelehnt, solange ein Dokument ungespeicherte Änderungen hat (Antwort ok: false mit der Liste modified); die Sitzung wird im Hintergrund wiederhergestellt (Antwort queued) – status zeigt den Fortschritt in session, die Konsole das Ergebnis
commandsfile, controllerKatalog der Befehlseinträge des Befehlsmenüs der Steuerung des aktiven Dokuments (oder der angegebenen offenen file, oder von controller = vkrc | krc | fanuc | abb | yaskawa): controller, groups (Untermenüs wie im Menü), commands – je Eintrag index, group, name (Text des Menüeintrags, wird als command von insert_command verwendet), tooltip, template (der eingefügte Text) und fields, dazu ein Hinweis note zur Steuerung. Lesend, ohne Änderung. Menü und API verwenden dieselbe Funktion:
  • Yaskawa – Menü Yaskawa > Commands: Vorlagen mit Feldern {{...}}, fields [{n, default}].
  • VKRC – Menü VKRC > SPS-Commands (Gruppen Makro / UP / Zange, PLC (SPS-Befehle), Warte / FB, ana / BS / Pendeln, Jump / Label, Comment): nur die Einträge, die Text einfügen, fields = []; index = ID des Menüeintrags; der Text enthält Standardwerte wie A23 oder i1, die danach mit replace / edit geändert werden; Schritt, Trigger, SERVOZANGE, VEXPERT, USER und I-Bus brauchen einen Dialog oder einen Fold und sind nicht verfügbar.
  • Fanuc – die Einträge des Menüs VFanuc > SPS-Commands (Gruppen = Untermenüs: APPL, Register, I/O, If/Select, Wait, Jmp/Lbl, CALL, TC_ONLINE, Miscellaneous, Weave, Skip, Payload, Offset/Frames, Multiple Control, Program Control, Makro, Tool_Offset, Lock PReg, Collision Detect, MONITOR, Stick Detect, Path Switch, Line Tracking; !Comment in der Gruppe SPS-Commands) und von VFanuc > Templates (Gruppe Templates/<Gruppe der Vorlagendatei>); fields = [], index = Position in der Liste; der Text enthält Beispielwerte (R[1], DO[1], UP001 ...), die danach mit replace / edit geändert werden. Die Gruppe APPL enthält Einträge des /APPL-Kopfes des Programms, keine Zeilen des Programmrumpfs. CALL VW_USER ist nicht im Katalog (Befehl tech).
  • KRC – die 6 Dialoge des Menüs KRC > Insert instruction (Gruppe Insert instruction): output ($OUT[n]=TRUE / FALSE), pulse (PULSE($OUT[n], TRUE, t)), wait_input (WAIT FOR [NOT] $IN[n] / $OUT[n]), wait_time (WAIT SEC t), timer ($TIMER[n] / $TIMER_STOP[n]), call (Program()); fields = die Namen der Felder von values (siehe insert_command), template = ein Beispiel. KRL-Commands (Inline-Formulare aus .kfd / .kop) sind über die API nicht verfügbar.
  • ABB – die Einträge des Menüs ABB > Templates (Datei template\abb.template.xml, Gruppe Templates/<Gruppe>), fields = []. Die Installation bringt Standard-RAPID-Vorlagen in den Gruppen Motion (MoveJ, MoveL, MoveC, MoveAbsJ), I/O (SetDO, Set, Reset, PulseDO, SetGO, WaitDI, WaitDI mit Zeitgrenze), Wait (WaitTime, WaitUntil), Program flow (Prozeduraufruf, IF, IF ELSE, FOR, WHILE, TEST, Kommentar) und Messages (TPWrite, TPErase) mit.
insert_commandcommand, values, file, line, position, strict, checkfügt einen Eintrag des Katalogs commands in das aktive Dokument (oder die angegebene offene file) ein, mit derselben Funktion wie ein Klick im Menü – derselbe Text, dieselben Regeln für Einrückung und Folds; keine Meldungsfenster, Fehler kommen in error. Für alle Steuerungen gleich: command = Name des Eintrags (genauer Name, sonst ein eindeutiger Anfang, Groß-/Kleinschreibung egal) oder sein index aus commands; line (ab 1) und position (after = Standard, before) wählen die Stelle, ohne line die Zeile des Cursors wie im Menü; Antwort: file, command, text (eingefügte Zeilen), firstLine, lastLine, modified; das Dokument ist geändert, nicht gespeichert (Rückgängig funktioniert wie bei edit); check:true führt check_syntax aus und ergänzt valid, errors, warnings, problems. Je Steuerung:
  • Yaskawa (SPYON, CALL JOB ...): nur zwischen NOP und END, eingerückt innerhalb von IFTHEN- / WHILE-Blöcken. values = Inhalte der Felder {{...}} in der Reihenfolge der Vorlage, als Array (["1"]), als Objekt mit der Nummer des Feldes ({"1":"2"}) oder als ein String bei einer Vorlage mit einem Feld. Ein Feld ohne Wert behält den Standardtext (in defaults der Antwort aufgeführt); mit strict:true fügt der Befehl nichts ein und liefert die fehlenden Felder. Die Antwort enthält zusätzlich group, fields [{n, value, default}] und defaults.
  • VKRC und Fanuc: keine values; der Text wird mit seinen Beispielwerten eingefügt und danach mit replace / edit anhand von firstLine / lastLine geändert. Bei Fanuc wird dieselbe Menüaktion wie beim Klick ausgelöst; Vorlagen aus VFanuc > Templates werden als ganze Zeilen eingefügt; Einträge der Gruppe APPL kommen in den /APPL-Kopf des Programms; innerhalb des Unter-Folds eines Punktes erhalten die Zeilen die Einrückung des Punktes.
  • KRC: values = Objekt mit den Feldern des Dialogs: signal (Nummer), type (IN / OUT, nur wait_input, Standard IN), state (true / false, Standard true; bei wait_input false = NOT), time (s, mindestens 0,012; Standard 0,5 bei pulse, 1 bei wait_time), timer (1..64, Standard 1), action (start / stop / reset / restart, Standard start), program (Name, Parameter dürfen angegeben werden: MyProg(1, TRUE)), comment (angehängt als ; Kommentar, nur bei output, pulse, wait_input). Unvollständige oder falsche Werte ergeben einen Fehler mit der Liste der Felder. Derselbe Text, dieselben Regeln für Einrückung und Folds wie im Menü (zugeklappter Fold: nach ;ENDFOLD; Protect Folds: nach dem umschließenden Fold) und dieselbe Lizenz (KRC).
  • ABB: keine values; die Vorlage wird als ganze Zeilen mit der Einrückung der vorherigen Zeile eingefügt, nach THEN / DO / ELSE / PROC / CASE ... eine Ebene tiefer.
Beispiele: {"cmd":"insert_command","command":"SPYON","values":["2"],"check":true} (Yaskawa), {"cmd":"insert_command","command":"output","values":{"signal":12,"state":false},"line":20} (KRC: $OUT[12]=FALSE nach Zeile 20)
check_syntaxfile, runprüft die Syntax des aktiven Dokuments (oder der angegebenen offenen file) in jedem Viewer (KUKA VKRC / KRC, Fanuc, ABB, Yaskawa) und antwortet direkt, nichts wartet auf einen Klick: valid (true / false), errors, warnings (Anzahl), problems [{line (ab 1), severity = error | warning | info, text (die Zeile), message}] – die Markierungen, die der Viewer in den Zeilen gesetzt hat (höchstens 300) – und messages = die Texte des Ergebnisfensters (z. B. The syntax is valid oder das Fenster mit den falschen Befehlen); der Editor liest dieses Fenster und schließt es selbst, es blockiert also den nächsten Befehl nicht. run: false liest nur die Markierungen der letzten Prüfung, ohne erneut zu prüfen (Standard true). Ist bereits ein Dialog des Editors offen, gibt der Befehl einen Fehler mit dessen Titel zurück (schließen mit ui_windows / ui_close). Beispielantwort: {"ok":true,"file":"D:/x/KRC/R1/Program/folge81.src","valid":false,"errors":1,"warnings":0,"problems":[{"line":42,"severity":"error","text":"LIN P5 Vel=2 m/s CPDAT5","message":"..."}],"messages":["..."]}
window_next / window_previous / window_first / window_lastnächstes / vorheriges / erstes / letztes Dokumentfenster
undo / redoRückgängig / Wiederholen im aktiven Dokument; KRC- / KUKA-iiQKA-Programme haben kein Rückgängig – dort ändert der Befehl nichts (eine Änderung zuerst mit dryRun prüfen oder die Datei mit reload neu laden)
gotofile, target, directionbewegt den Cursor im aktiven (oder im angegebenen offenen) Dokument und gibt Zeile und Text zurück; target = line | fold | point | tech | up, direction = next | previous | first | last; point, tech und up gehen auch in Fanuc-Programmen .ls, deren Zeilen keine Nummern haben
foldaction, file, line, direction, position, maxFolds, topLevel, valuesKRC- / KUKA-iiQKA-Programme: Folds (;FOLD ... ;ENDFOLD) als ganze Einheiten – auflisten, anspringen, markieren, kopieren, ausschneiden, löschen, einfügen, verschieben, zuklappen, aufklappen, Parameter lesen und ändern, Parameterdialog öffnen, aus- / einkommentieren; dieselben Funktionen und Regeln wie Tastatur und Menü (siehe fold)
cursorfile, line, column, context, move, count, selectliest oder setzt den Cursor: line / column (ab 1) setzen die Position, context = n Zeilen vor und nach dem Cursor; move bewegt ihn wie die Tasten: left | right | up | down | word_left | word_right (count-mal), line_start | line_end, page_up | page_down (count Seiten), page_start (erste sichtbare Zeile) | page_end (letzte sichtbare Zeile), document_start | document_end; select: true erweitert die Markierung; Antwort file, line, column, text (die Zeile), lines (Anzahl der Zeilen), selection {fromLine, toLine, chars, text}, modified, context [{line, text}]
selectfile, what, line, from, tomarkiert Text: what = line (die aktuelle Zeile oder line), lines (from, to), all, none (hebt die Markierung auf); Antwort wie bei cursor
findfile, text, regex, case, word, direction, all, maxsucht im Dokument: text (einfacher Text, oder ein regulärer Ausdruck mit regex: true), case: true = Groß-/Kleinschreibung beachten, word: true = ganze Wörter; direction = next | previous (vom Cursor) | first | last – markiert den Treffer (Antwort count, index und der Zustand des Cursors, notFound, wenn es keinen gibt); all: true gibt stattdessen die Liste der Treffer zurück (matches [{line, column, text}], count, more, wenn es mehr als max gibt, Standard 200)
replacefile, find, with, regex, case, word, scope, all, dryRun, forcesucht und ersetzt: find → with (mit regex die Gruppen \1, \2 …), case, word wie bei find; scope = document (Standard) | selection; all: true (Standard) = jeder Treffer, false = nur der nächste Treffer ab dem Cursor; dryRun: true ändert nichts und gibt count, lines und preview [{line, old, new}] zurück (höchstens 30 Zeilen); das ganze Ersetzen ist ein Rückgängig-Schritt (nicht in KRC-Programmen: sie haben kein Rückgängig); in KRC- / KUKA-iiQKA-Programmen gelten die Fold-Regeln (force, Standard false)
editfile, action, text, count, line, position, from, to, forceändert den Text wie die Tastatur: action = type (text am Cursor, ersetzt die Markierung) | backspace / delete_char (count Zeichen; bei einer Markierung: löscht die Markierung) | insert (text als neue Zeile(n) vor oder nach line, position = before | after; ohne line am Cursor) | replace (Zeilen from..to durch text) | delete (Zeilen from..to; ohne sie die Markierung oder die aktuelle Zeile); Antwort wie bei cursor (und fromLine / toLine); ein Rückgängig-Schritt (nicht in KRC-Programmen: sie haben kein Rückgängig); in KRC- / KUKA-iiQKA-Programmen gelten die Fold-Regeln (force, Standard false)
techaction, file, scope, projects, maxFiles, fileMask, openFiles, command, line, where, fields, full, summaryOnly, csv, set, dryRun, useSelectedVwUserlistet (action=list) oder ändert (action=set) die Parameter von Technologiebefehlen in den offenen Programmen oder in allen Programmen der Roboterprojekte (scope=projects), list auch in eine CSV-Datei: VKRC-TECH-Folds und SERVOZANGE-Folds, Fanuc CALL VW_USER(...); die Änderung bleibt im Editor (nicht gespeichert)
searchpattern, scope, projects, files, path, fileMask, ignoreCase, where, fields, max, maxFiles, context, text, csvsucht mit einem regulären Ausdruck in den Dateien der Roboterprojekte auf der Festplatte (nichts wird geöffnet); benannte Gruppen sind die Werte: Treffer, Zusammenfassung der Werte mit ihrer Anzahl, Treffer je Projekt / Datei, optional eine CSV-Datei
robot_dataprojects, sections, allDaten der Roboter aus ihrer Konfiguration – was die Registerkarten Robot info, Profinet und CTB data zeigen (Name, Modell, Seriennummer, Software, VW User, IP, Werkzeuge, Basen, Lasten, Profinet, EtherCAT, Kalibrierung, Achsgrenzen), auch für inaktive Projekte
pointsfile, table, path, motions, acc, ranges, process, maxRows; scope, projects, files, fileMask, maxFiles, checks, selectPunkte eines Programms als Tabelle (X Y Z A B C S T, Werkzeug, Basis ...), Länge der TCP-Bahn, Bewegungszeit, Längen zwischen Punkten, Prozesslänge (Kleber); für viele Programme die Prüfungen samePoints und callStart, von DReS berechnet
ai_chatshow, message, stop, newChat, learn, autoLearn, learnDir, anonymous, lastdas Fenster KI-Agent des Editors: zeigen (true) / ausblenden (false), Nachricht senden (auch die Antwort yes | anon | no auf die Frage vor den ersten echten Daten), Agent anhalten, neuer Chat (wie die Schaltfläche New chat: mit autoLearn speichert der Agent zuerst das Wissen des Chats), learn = true wie die Schaltfläche Learn (der Agent speichert, was ihm beigebracht wurde, als Wissensdateien, siehe Den Agenten anlernen), autoLearn = true | false (Wissen vor jedem neuen Chat automatisch speichern), learnDir = Ordner der eigenen Wissensdateien (leer = Standard), anonymer Modus, last = Anzahl der letzten Einträge; Antwort visible, busy, anonymous, autoLearn, learnDir, consentPending, transcript
ui_windows, ui_list, ui_actions, ui_get, ui_set, ui_click, ui_close, ui_key, ui_view, ui_view_set, ui_context, ui_shotjede Menüaktion (File, Edit, Window, Tools ...), jeder Dialog, Kontextmenü des Datei- / Projektbaums und des Editors - wie im Simulator (UI-Befehle). ui_set mit scroll statt value blättert ein Textfeld oder eine Liste (auch ein schreibgeschütztes, z. B. das Gespräch im Fenster KI-Agent): "top", "bottom", eine Zahl 0..1 (Position) oder "find:Text" (die erste Stelle des Textes oben in der Ansicht), z. B. {"cmd":"ui_set","id":12,"scroll":"find:Programs that fail"} (id aus ui_list); Antwort queued. ui_set mit dockHeight / dockWidth (px) statt value für ein Steuerelement in einem angedockten Fenster (z. B. das Fenster KI-Agent, die Konsole) ändert die Größe dieses Docks (Höhe für ein Dock oben / unten, Breite für eines links / rechts); 0 liest nur die aktuelle Größe; Antwort queued, height, width (die Größe vor der Änderung), z. B. {"cmd":"ui_set","id":12,"dockHeight":420}; ein Fehler, wenn das Steuerelement nicht in einem angedockten Fenster liegt

session – Sitzungen des Editors

Eine Sitzung ist die Liste der offenen Dateien und Roboterprojekte, unter einem Namen gespeichert (Menü Sessions) oder in einer .ini-Datei. Der Befehl session macht dasselbe wie das Menü, ohne Dialoge; er braucht die Lizenz API / CLI (248) und wird abgelehnt, solange ein modaler Dialog des Editors offen ist.

Beispiele:

{"cmd":"session","action":"list"}
  → {"ok":true,"current":"Cell A","sessions":[{"name":"Cell A","files":40,"projects":["R1","R2"],"current":true},{"name":"Cell B","files":12,"projects":["R1"]}]}
{"cmd":"session","action":"save","name":"Cell A","overwrite":true}       → {"ok":true,"saved":"Cell A"}
{"cmd":"session","action":"save_file","file":"D:/x/cell_a_session.ini"}  → {"ok":true,"file":"D:\\x\\cell_a_session.ini"}
{"cmd":"session","action":"import_file","file":"D:/x/old_install/dres.ini","onConflict":"rename"}
  → {"ok":true,"imported":["Cell C","Cell A (2)"],"skipped":[],"overwritten":[]}
{"cmd":"session","action":"open","name":"Cell B"}
  → {"ok":true,"queued":true,"action":"open","note":"documents and robot projects are closed and the session restored in the background - ..."}
  → (ungespeicherte Dokumente) {"ok":false,"error":"documents with unsaved changes - save or close them first (or ask the user)","modified":["D:/x/KRC/R1/Program/up42.src"]}
{"cmd":"status"}
  → {..., "busy":true, "busyReason":"restoring session 'Cell B'", "currentSession":"Cell B",
     "session":{"name":"Cell B","projects":["R1"],"projectCount":1,"fileCount":12,"filesOpened":5,"seconds":3.2}}
{"cmd":"session","action":"rename","name":"Cell B","to":"Cell B old"}     → {"ok":true,"renamed":"Cell B","to":"Cell B old"}
{"cmd":"session","action":"delete","name":"Cell B old"}                   → {"ok":true,"deleted":"Cell B old"}

cursor, select, find, replace, edit – Bewegen und Bearbeiten im Dokument

Diese Befehle arbeiten im aktiven Dokument (oder in der angegebenen offenen Datei file) jedes Viewers: KUKA VKRC / KRC (.src), Fanuc (.ls), Yaskawa (.jbi) und ABB (.mod). Zeilen und Spalten zählen ab 1. In einem VKRC-Programm wird der sichtbare Text des Viewers bearbeitet (die Fold-Titel, z. B. PTP P1 Vel=100% PDAT1), genau wie mit der Tastatur: der Viewer prüft die geänderten Zeilen, zugeklappte Folds um das Ziel werden aufgeklappt. Die Datei wird nicht gespeichert – speichern Sie sie mit save nur, wenn der Benutzer es wünscht; undo nimmt eine Änderung in einem Schritt zurück (VKRC, Fanuc, Yaskawa, ABB; KRC- / KUKA-iiQKA-Programme haben kein Rückgängig – Vorschau mit dryRun, eine falsche Änderung wird nur mit reload und force:true verworfen, wobei alle ungespeicherten Änderungen verloren gehen). Prüfen Sie das Ergebnis mit check_syntax. Die Befehle brauchen die Lizenz API / CLI (248) und werden abgelehnt, solange ein modaler Dialog des Editors offen ist.

KRC- / KUKA-iiQKA-Programme – Fold-Regeln von edit und replace. Die Befehle folgen denselben Regeln wie die Tastatur (siehe Bearbeitungsregeln für Folds):

Beispiele:

fold – Folds von KRC- / KUKA-iiQKA-Programmen als ganze Einheiten

Arbeitet im aktiven Dokument (oder in der angegebenen offenen file), wenn es ein KRC- / KUKA-iiQKA-Programm (.src) ist. Der Befehl verwendet dieselben Funktionen wie Tastatur und Menü, mit demselben Schutz (Protect Folds, ganze Punkt-, Befehls- und Inline-Form-Folds). Der Fold einer Aktion wird mit line angegeben: die Kopfzeile des Folds oder eine beliebige Zeile darin (dann der innerste Fold um diese Zeile; eine ;ENDFOLD-Zeile gehört zu ihrem eigenen Fold). Verwenden Sie fold für ganze Folds und edit_dialog / set_params für die Parameter eines Befehls – nicht edit / replace auf den Zeilen des Folds. Meldungsfenster von copy / cut / paste werden wie Abbrechen geschlossen und in dialogs zurückgegeben, der Befehl wartet also nie auf einen Klick. Änderungen werden in einem schreibgeschützten Programm abgelehnt; das Dokument ist geändert, nicht gespeichert, und KRC-Programme haben kein Rückgängig.

ParameterStandardBedeutung
actionlistlist | goto | select | copy | cut | delete | paste | move | collapse | expand | params | set_params | edit_dialog | comment (siehe unten)
fileaktives Dokumentein offenes KRC- / KUKA-iiQKA-Programm
lineZeile des CursorsZeile (ab 1) des Folds: die Kopfzeile oder eine Zeile im Fold; bei goto die Startzeile der Suche
directionnext (goto); keiner (move, Pflicht)goto: next | previous (beliebiger Fold nach / vor line) | next_sibling | previous_sibling (nächster / vorheriger Fold mit demselben übergeordneten Fold) | parent | child (erster Fold darin) | first | last (Folds der obersten Ebene des Dokuments); move: up | down
positionafterpaste: after (nach dem ;ENDFOLD des Folds) | before (vor seiner Kopfzeile) | inside (als letzte Zeilen des Folds)
maxFolds2000list: höchstens so viele Folds in folds (1..20000); count ist immer die volle Anzahl
topLevelfalselist: true = nur Folds, die nicht in einem anderen Fold liegen
valueskeiner (Pflicht bei set_params)set_params: {Schlüssel: Wert} – die Schlüssel der Zeile ;Params (siehe params)

AktionWas sie tutAntwort
listalle Folds des Programms (lesend)folds [{line, endLine (-1 = kein ;ENDFOLD), depth (0 = oberste Ebene), kind = point | command | user, title (die Kopfzeile), collapsed, parentLine, provider (das Formular / der Befehl von Punkt- und Befehls-Folds)}], count, protectFolds, balanced, structure (das erste Problem, wenn nicht ausgeglichen)
gotobewegt den Cursor zu einem Fold (zugeklappte Folds darum werden aufgeklappt)fold, line; notFound: true, wenn es keinen solchen Fold gibt
selectmarkiert den ganzen Fold (Kopfzeile bis ;ENDFOLD)fold, fromLine, toLine
copykopiert den ganzen Fold in die Zwischenablage (mit den Punktdaten, wie Ctrl+C)fold, dialogs
cutschneidet den ganzen Fold aus (wie Edit > Cut mit den Punktdaten)fold und das Ergebnis einer Änderung
deletelöscht den ganzen Fold mit seinen Daten (wie Delete auf dem markierten Fold, ohne die Frage)fold und das Ergebnis einer Änderung
pastefügt die Zwischenablage (einen kopierten / ausgeschnittenen Fold) als ganze Zeilen an position ein; nie in einen Punkt-, Befehls- oder Inline-Form-FoldpastedAtLine und das Ergebnis einer Änderung; ok: false, wenn nichts eingefügt wurde
moveverschiebt den Fold über die nächste Einheit darüber / darunter (ein Fold desselben übergeordneten Folds oder eine Zeile) mit seinen Daten – die Punktnamen bleiben; nie über die Zeilen DEF / END der Routine; bei eingeschaltetem Protect Folds werden Folds in Folds nicht verschobenmovedToLine und das Ergebnis einer Änderung
collapse / expandklappt den Fold zu / auffold, collapsed
paramsliest die Zeile ;Params key=value; ... eines Befehls- / Inline-Form-Folds (oder seines direkten Unter-Folds) (lesend)params {Schlüssel: Wert}, keys (Reihenfolge der Zeile), paramsLine, iiqka (true = ein KUKA-iiQKA-Formular, set_params möglich)
set_paramsändert Parameter eines KUKA-iiQKA-Befehls- / Bewegungs-Folds: die Zeile ;Params, der Titel und der Inhalt werden nach den Regeln des Formulars neu aufgebaut; andere Folds: edit_dialogchanged (Schlüssel), dialogs und das Ergebnis einer Änderung
edit_dialogöffnet den Parameterdialog des Folds wie ein Doppelklick (modal – mit den UI-Befehlen ui_windows, ui_set, ui_click beantworten)queued: true
commentkommentiert den ganzen Fold aus / ein (KRC > Comment / uncomment auf der Kopfzeile)dialogs und das Ergebnis einer Änderung

Das Ergebnis einer Änderung: balanced (true, wenn jedes ;FOLD sein ;ENDFOLD hat), structure (das Problem, wenn nicht ausgeglichen), lines (Anzahl der Zeilen), cursorLine, modified. Jede Antwort einer Aktion auf einem Fold enthält fold {line, endLine, depth, kind, title, collapsed, parentLine, provider}. Beispiele:

{"cmd":"fold","action":"list","topLevel":true}
{"cmd":"fold","action":"goto","line":40,"direction":"next_sibling"}
{"cmd":"fold","action":"copy","line":52}      danach   {"cmd":"fold","action":"paste","line":80,"position":"after"}
{"cmd":"fold","action":"move","line":52,"direction":"down"}
{"cmd":"fold","action":"params","line":61}    → {"ok":true,"params":{"IlfProvider":"...","Kuka.PointName":"P2","Kuka.BlendingEnabled":"True",...},"keys":[...],"paramsLine":63,"iiqka":true,...}
{"cmd":"fold","action":"set_params","line":61,"values":{"Kuka.BlendingEnabled":"False"}}

tech – Parameter von Technologiebefehlen

Liest und ändert die Parameter von Technologiebefehlen in den offenen Dokumenten ohne Dialog – wie die Plugins VKRC Tech Updater / Fanuc Tech Updater. Es wirkt auf VKRC-Programme Folge, UP und Makro (TECH-Folds %VUSER und SERVOZANGE-Folds %VSERVOGUN) und auf Fanuc-Programme (CALL VW_USER(...)). Erfordert die Lizenz API / CLI.

ParameterBedeutung
actionlist (Standard) – die Befehle und ihre Parameter; set – Parameter ändern
fileein offenes Dokument; ohne file alle offenen Dokumente
scopefile (die angegebene Datei oder, bei leerem file, das aktive Dokument), open (alle offenen Dokumente) oder projects (die Programme der Roboterprojekte, siehe unten); Standard open ohne file, file mit ihm
projectsbei scope projects: nur Roboterprojekte, deren Name einen dieser Texte enthält, z. B. ["R05","R06"]; ohne Angabe alle VKRC- und Fanuc-Projekte des Projektbaums
maxFilesbei scope projects: höchstens diese Anzahl Dateien (Standard 300)
csvnur mit action list: schreibt die gefundenen Befehle in diese CSV-Datei, z. B. "D:/x/servozange.csv"
fileMasknur diese Programme (scope projects und open), z. B. ["up*"], ["folge*"], ["makro*"] oder ["folge81*"]
openFileslist mit scope projects: true – liest die Dateien über den Editor (die Dateien werden geöffnet) statt von der Festplatte (Standard false)
fieldsnur diese Parameter, z. B. ["Programmnummer","Punktnummer","FahrzeugTyp","Offset"]
fulltrue – die ausführliche Antwort von list (siehe unten); Standard false – kompakte Antwort
summaryOnlytrue – nur die summary und eine Anzahl je Dokument; false – immer die Liste der Befehle; ohne Angabe: nur die Zusammenfassung, wenn mehr als 400 Befehle gefunden werden
commandnur dieser Befehl: Gruppe.Untergruppe des TECH-Befehls (z. B. TECH1.EZ/SP/KE, ein Komma gilt als Punkt), SERVOZANGE.Schweissen oder SERVOZANGE (alle SERVOZANGE-Folds)
linenur der Befehl in dieser Zeile
wherenur Befehle, deren aktuelle Werte diese Bedingungen erfüllen: "6" (gleich), ">0", ">=2", "<5", "<=5", "!=6"; z. B. {"P1":"5"}, {"FahrzeugTyp":"6"} oder {"Offset":">0"}
setneue Werte: {"<Name oder P#>":"<Wert>"}
dryRuntrue – zeigt nur, was sich ändern würde, nichts wird geändert
useSelectedVwUsertrue – eine Datei außerhalb aller Roboterprojekte wird mit dem in der Symbolleiste gewählten VW User geändert (Standard false)

Parameternamen stammen aus den Definitionen des VW User – dieselben Namen wie im Dialog des Befehls (z. B. Fzg-Typ, Techaufruf); P1, P2 … (oder nur die Nummer) gehen ebenfalls. Groß-/Kleinschreibung, Leerzeichen und Zeichen wie - oder _ werden ignoriert, ein eindeutiger Namensanfang genügt. SERVOZANGE-Parameter: Programmnummer, Punktnummer, FahrzeugTyp (auch Fz-Typ), Offset, TeachIn (Auto / Manual), Ausgleich (AUS / SCHWACH / MITTEL / STARK / INDIVIDUELL), Kraft, Blechdicke, …, Bedingung; Strom, Doppelhub und Messen lassen sich nur im Dialog des Folds ändern. Werte aus einer Liste (Enum) können als Nummer oder als Text angegeben werden.

Antwort von list (kompakt, Standard) – je Dokument mit Treffern: file, project, vwUser, projectVwUser, errors und commands [{line, command, params}], dabei ist params ein Objekt der benutzten Parameter, z. B. {"Programmnummer":"99","FahrzeugTyp":"6"} (P# bei einem Parameter ohne Namen; unbenutzte Parameter, der Text der Zeile und die Listen der erlaubten Werte entfallen; Dokumente ohne Treffer entfallen). Mit full: true das ausführliche Format: params [{P, name, value, values (erlaubte Werte einer Liste, "n=Text"), used: false bei einem Parameter, den dieser Befehl nicht benutzt}] und text. Das Antwortfeld summary nennt jeden benutzten Wert jedes Parameters mit seiner Anzahl, z. B. {"SERVOZANGE.Schweissen FahrzeugTyp": {"6": 52, "7": 46}} (höchstens 100 Werte je Parameter). Bei mehr als 400 Befehlen kommen nur die Zusammenfassung und eine Anzahl je Dokument zurück (summaryOnly erzwingt das oder schaltet es ab). Antwort von set – je Dokument changes [{line, command, old, new, error, unchanged}], insgesamt found, changed und eine note.

scope projects: alle Folge-, UP- und Makro-Dateien der VKRC- und Fanuc-Roboterprojekte des Projektbaums werden auf der Festplatte durchsucht (VKRC folge*.src, up*.src, makro*.src unter KRC\R1, Fanuc folge*.ls, up*.ls, makro*.ls; fileMask grenzt das ein). list liest die Dateien von der Festplatte und öffnet sie nicht – line ist die Zeile in der Datei auf der Festplatte; mit openFiles: true werden sie über den Editor gelesen (geöffnet). set öffnet die Dateien mit passenden Befehlen (SERVOZANGE – %VSERVOGUN, TECH – %VUSER, Fanuc – VW_USER(), weil die Änderung im Editor erfolgt; sie bleiben offen, das Antwortfeld opened listet die vom Befehl geöffneten Dateien.

CSV-Export (csv, nur mit list): eine Zeile je Befehl, Spalten Project;File;Line;Command, eine Spalte je Parametername (P# bei einem Parameter ohne Namen) und Text; Trennzeichen ;, UTF-8 mit BOM (öffnet sich in Excel). Antwortfelder csv (Pfad der Datei) und csvRows (Anzahl der Zeilen).

VW User: die Definitionen der VKRC-TECH-Befehle kommen vom in der Symbolleiste gewählten VW User (Kombinationsfeld Select vw user); er wird beim Aktivieren eines Roboterprojekts automatisch gesetzt.

Die Änderung bleibt im Editor: das Dokument ist geändert, aber nicht gespeichert – save / save_all auf Wunsch. Rückgängig (Undo) funktioniert für diese Änderungen nicht (die Folds tragen Blockdaten). Beim Speichern wird der KRL-Code neu erzeugt (z. B. VW_SGB_SPOT_ADV/MAIN(...,FahrzeugTyp,...)); das Speichern eines VKRC-Programms normalisiert sein Format.

Beispiele:

{"cmd":"tech","action":"list","command":"SERVOZANGE"}
{"cmd":"tech","action":"list","file":"D:/x/KRC/R01/Program/folge81.src","command":"TECH1.EZ/SP/KE"}
{"cmd":"tech","action":"set","command":"SERVOZANGE.Schweissen","set":{"FahrzeugTyp":"2"},"dryRun":true}
{"cmd":"tech","action":"set","command":"SERVOZANGE.Schweissen","where":{"FahrzeugTyp":"6"},"set":{"FahrzeugTyp":"2"}}
{"cmd":"tech","action":"set","file":"D:/x/KRC/R01/Program/folge81.src","line":120,"set":{"P1":"5"}}
{"cmd":"tech","action":"list","scope":"projects","command":"SERVOZANGE","csv":"D:/x/servozange.csv"}
{"cmd":"tech","action":"list","scope":"projects","command":"SERVOZANGE","fields":["Programmnummer","Punktnummer","FahrzeugTyp","Offset"],"fileMask":["up*"],"where":{"Offset":">0"}}
{"cmd":"tech","action":"set","scope":"projects","projects":["R01","R02"],"command":"SERVOZANGE.Schweissen","set":{"FahrzeugTyp":"2"},"dryRun":true}

search – regulärer Ausdruck in den Dateien der Roboterprojekte

Sucht Zeile für Zeile mit einem regulären Ausdruck in den Dateien der Roboterprojekte auf der Festplatte – nichts wird im Editor geöffnet, nichts wird geändert. Unabhängig vom Plugin Robot Data Spy. Wird vom Agenten RobotDataSpy benutzt. Erfordert die Lizenz API / CLI.

ParameterBedeutung
patternregulärer Ausdruck je Zeile (Pflicht); benannte Gruppen (?<name>...) sind die Werte, die in groups und summary zurückkommen
scopeprojects (Standard) – die Dateien der Roboterprojekte des Projektbaums; files – die Dateien oder Ordner in files (Standard, wenn files angegeben ist); open – die offenen Dokumente
projectsnur Roboterprojekte, deren Name einen dieser Texte enthält, z. B. ["R01"]; ohne Angabe alle Projekte
filesbei scope files: Pfade von Dateien oder Ordnern (Ordner mit Unterordnern)
pathUnterordner jedes Roboterprojekts, z. B. "KRC/R1/System"
fileMaskz. B. ["folge*.src","up*.src"], ["$config.dat"]; Standard VKRC / KRC *.src, *.dat, *.sub, Fanuc *.ls, *.va, ABB *.mod, *.modx, *.sys, *.prg, *.cfg, Yaskawa *.jbi, *.dat, *.prm
ignoreCaseStandard true
whereBedingungen auf den Gruppen: "6", ">0", ">=2", "<5", "<=5", "!=6", "~Text" (enthält), z. B. {"tool":">0"}
fieldsnur diese Gruppen in der Antwort
maxaufgelistete Treffer (Standard 200, höchstens 5000); found zählt alle
maxFileshöchstens diese Anzahl Dateien (Standard 5000)
contextZeilen vor und nach einem Treffer (0 bis 5, Standard 0)
texttrue – der Text der Zeile auch dann, wenn das Muster Gruppen hat (um das Muster zu prüfen)
csvschreibt alle Treffer in diese CSV-Datei: Spalten Project;File;Line, eine Spalte je Gruppe und Text

Antwort: filesSearched, filesWithHits, found, hits [{project, file (relativ zum Roboterprojekt), line, groups, text, context}], summary (jeder Wert jeder Gruppe mit seiner Anzahl, höchstens 100 Werte je Gruppe), perProject, perFile (bis 100 Dateien), note, wenn nicht alle Treffer aufgelistet sind, filesLimit, csv und csvRows.

Beispiele:

{"cmd":"search","pattern":"BAS\\s*\\(#TOOL,\\s*(?<tool>\\d+)","fileMask":["folge*.src","up*.src"],"where":{"tool":">0"}}
{"cmd":"search","pattern":"&PARAM TPVW_VERSION\\s*=\\s*(?<v>[\\d.]+)","projects":["R01"],"csv":"D:/x/tpvw.csv"}

robot_data – Daten aus der Roboterkonfiguration

Die Daten der Roboter aus ihrer Konfiguration – was die Registerkarten Robot info, Profinet und CTB data zeigen. Das aktive Projekt liefert die geladene Konfiguration; ein anderes Projekt wird ohne Dialoge von der Festplatte gelesen (der Zustand des Editors bleibt gleich). VKRC, KRC, Fanuc, ABB, Yaskawa. Erfordert die Lizenz API / CLI.

ParameterBedeutung
projectsRoboterprojekte, deren Name einen dieser Texte enthält, z. B. ["R01"]; ["*"] alle; ohne Angabe das aktive Projekt
sectionsinfo (Name, Modell, Seriennummer, Software, VW User, Trafo, IP / Netzmaske / Gateway, WorkVisual- und KUKA.Load-Projekt), tools, bases, loads, profinet (Geräte, Kamera-IPs; KUKA iiQKA: PROFINET-Station, KLI-IP / Netzmaske, Module des Roboters), ethercat (KUKA VKRC / KRC / iiQKA: EtherCAT-Module der Sicherung, siehe Registerkarte Profinet), cal (Kalibrierung / Justage), softend (Achsgrenzen), all; Standard info, tools, bases, loads
alltrue – auch Werkzeuge / Basen / Lasten ohne Daten (Standard false: nur die definierten)

Antwort: robots [{project, config, active, type (VKRC, KRC, Fanuc, ABB, Yaskawa), info, tools, bases, loads, profinet, ethercat, cal, softEnd, iiqka, error}], note, wenn kein Projekt passt. VKRC / KRC: Werkzeuge, Basen und Lasten mit no, name, x, y, z, a, b, c; Fanuc: UT / UF (x, y, z, w, p, r), Lasten je Werkzeug; ABB: tooldata / wobjdata (Quaternionen); Yaskawa: Werkzeuge, User Frames, Lasten. ethercat (auch bei all): Array von {bus (z. B. ecatms_config.xml, SYS-X48), name, address, vendorId, productCode, file} – ein Objekt je EtherCAT-Modul. iiqka: true für ein Projekt aus einer Sicherung KUKA iiQKA (sonst nicht vorhanden).

Beispiele:

{"cmd":"robot_data","projects":["*"],"sections":["info"]}
{"cmd":"robot_data","projects":["R01"],"sections":["tools","bases","loads"]}
{"cmd":"robot_data","projects":["*"],"sections":["profinet","ethercat"]}

points – Punkttabelle und TCP-Bahn eines Programms

Die Punkte eines Programms als Tabelle (wie der Export der Punkttabelle) und die TCP-Bahn (die Werkzeuge Path (TCP) der Punkttabellen). Eine im Editor offene Datei wird aus dem Editor gelesen (auch ungespeicherte Änderungen), sonst von der Festplatte in einem verborgenen Editor (sie wird nicht geöffnet). VKRC, KRC, Fanuc, ABB, Yaskawa. Erfordert die Lizenz API / CLI.

ParameterBedeutung
filedas Programm (.src, .ls, .mod, .jbi); ohne Angabe das aktive Dokument
tabletrue (Standard) – columns und rows: Point, Motion, X, Y, Z, A, B, C, S, T, E1.., Tool, Base, VB, VE (VKRC)
maxRowshöchstens diese Anzahl Zeilen (Standard 500)
pathtrue (Standard) – die TCP-Bahn in path
accBeschleunigung für die Bewegungszeit in mm/s² (Standard 2000)
rangesLängen zwischen Punkten, z. B. [["P5","P12"]]
processLänge des Prozesses (Kleber, MAG, Laser): {"on":"<Regex der Zeile, die ihn einschaltet>","off":"<Regex aus>"}
motionstrue – jede Bewegung mit Segment, Geschwindigkeit, Überschleifen und Schaltpunkten (motionList)

Antwort: file, open, type, columns, rows, pointCount, rowsNote, notes und path {motions, lengthMM (TCP-Bahn mit Überschleifen), lengthExactMM (Geometrie), timeCpS (CP-Bewegungen mit Beschleunigung), timePlannedS (mit PTP und Achsdaten), ranges, process {ranges, lengthMM}, motionList, notComputed, configNote, error}.

Viele Programme und Prüfungen (mit checks, scope projects oder files): die Punkttabellen aller gewählten Programme, die Abstände berechnet DReS.

ParameterBedeutung
scope, projects, filesprojects – die Programme der Roboterprojekte (Filter projects: ein Teil des Projektnamens; "*" oder "all" = alle Roboterprojekte – ebenso bei tech, search und robot_data), oder die Liste files
fileMaskStandard ["folge*","up*"]; ohne Endung wird die Endung der Steuerung ergänzt
maxFileshöchstens diese Anzahl Dateien (Standard 300)
checks.samePointsPunktpaare, deren Abstand in jedem Programm geprüft wird: "1" (erster), "2", "last", "-2" oder ein Name "P5", z. B. [["1","2"],["1","last"]]
checks.callStarttrue – jeder Aufruf eines UP / MAKRO im Programm: der Punkt des Aufrufs gegen den ersten Punkt des aufgerufenen Programms (dasselbe Roboterprojekt)
checks.tolerancein mm (Standard 2); verschiedene Basen mit demselben Werkzeug werden in Weltkoordinaten verglichen (Basen aus $config.dat), verschiedene Werkzeuge sind nicht vergleichbar
checks.onlyFailedtrue (Standard) – nur die Programme, die die Bedingung verletzen
selectdiese Punkte jedes Programms, z. B. ["1","last"] (selected)

Antwort: filesChecked, toleranceMM, samePoints {checked, failed}, callStart {checked, failed}, files [{project, file, points, checks [{check, a, b, distMM, ok, world | frames}], calls [{program, atPoint, line, firstPoint, distMM, ok, world | frames, error}], selected, error}]. Etwa 2 s je Programm.

Beispiele:

{"cmd":"points","file":"D:/x/KRC/R01/Program/up42.src","table":true,"path":true,"ranges":[["P5","P12"]]}
{"cmd":"points","file":"D:/x/KRC/R01/Program/up12.src","table":false,"process":{"on":"A1544.*EIN","off":"A1544.*AUS"}}
{"cmd":"points","scope":"projects","projects":["R01"],"fileMask":["folge*"],"checks":{"samePoints":[["1","2"],["1","last"]],"callStart":true,"tolerance":2}}

axis_limits – Achsbereichsnutzung der Punkte

Für jeden Punkt: die Achswerte des Roboters (Programm oder Rückwärtstransformation) gegenüber den Software-Endschaltern; Nutzung = |Wert - Mitte des Bereichs| / halber Bereich · 100 % (100 % = Endschalter). Quellen lassen sich kombinieren: open (geöffnete Programme), files, projects (Projektbaum, "*" = alle), folders (Archive auf dem Datenträger); ohne Quelle das aktive Programm. threshold (Standard: Programmeinstellung, "remember":true speichert ihn), showAll (Standard false: nur Punkte mit einer Achse ab der Schwelle - nur diese Achsen - und Punkte ohne Ergebnis), masks, vendor, format (pdf / html / xlsx / csv) + save, maxRows, "dialog":true (Einstellungsfenster mit diesen Werten, "run":true - dort erstellen). Antwort: summary, programs, points, above, belowThreshold, withoutResult, withoutWarnings, rows (worstAxis, usage, side, marginDeg, axes, note), saved. Fortschritt in dres.log (axis_limits: n/m files ..., alle 3 s); das Berichtsfenster füllt auch progress von status. Details: Axis limit usage.
{"cmd":"axis_limits","projects":["*"],"threshold":95,"format":"pdf","save":"D:/reports/axis_limits.pdf"}
{"cmd":"axis_limits","folders":["D:/archives/R03"],"vendor":"Fanuc","showAll":true,"format":"csv","save":"D:/reports/R03.csv"}
{"cmd":"axis_limits","open":true,"dialog":true}
Die Zeilen haben reach: ok, outsideLimits (Achswerte des Programms außerhalb des Endschalters), unreachable (Rückwärtstransformation mit dieser Konfiguration außerhalb der Endschalter), notSupported (Montage / Fahrachse nicht bestätigt), noData.

points_transform – Punkte verschieben, drehen, ausrichten, spiegeln

Der Befehl des Fensters Transform points... der Punktetabelle (VKRC und Fanuc; KRC / ABB / Yaskawa: Fehler "not available yet"). mode: preview (Standard; liest ein geöffnetes oder gespeichertes Programm, schreibt nichts), apply und undo (das Programm muss geöffnet sein; die Änderung bleibt ungespeichert - mit save speichern). points (Namen oder "all"), op (move / align / mirror), frame (base / world / tool / custom), pivot (tcp / frame), dx dy dz rx ry rz, ref, plane (xz / yz / xy), offset, mirror (same / lr), config (mirrored / keep), mflip (z / y / x), srcRobot / dstRobot {x y z a b c}, custom {x y z rx ry rz} oder customPoints [3 Punkte], allowWarnings, maxRows. Antwortzeilen: point, status (ok / limit / unreachable / not_checked / error), frame, before / after, worldBefore / worldAfter, shiftMM, configBefore / configAfter, axes. Das Agentenwerkzeug editor_read erlaubt nur mode: preview. Einzelheiten und die Annahmen der Spiegelung: Punkte transformieren.
{"cmd":"points_transform","file":"D:/x/UP42.src","mode":"preview","points":["P12","P13"],"op":"move","dy":5}
{"cmd":"points_transform","file":"D:/x/UP42.src","mode":"undo"}

Prüfungen vieler Programme und Roboter

Dieselben Quellen wie axis_limits (open, files, projects, folders, masks, includeSystem, vendor oder scope + paths); KUKA-Systemdateien ($*.src, System, Mada, TP, STEU, VW_User) werden übersprungen. Die Programme werden ohne Öffnen und ohne Fenster gelesen: ein Fenster des Parsers wird geschlossen und als Befund LOAD_WARNING gemeldet. Jedes Programm braucht die Lizenz seines Robotertyps; Programme ohne sie werden übersprungen (Hinweis). Fortschritt in dres.log und in progress von status. Antwort im gemeinsamen Format: summary {errors, warnings, infos}, findings [{check, code, severity error / warning / info, robot, controller, file, program, point, line, message, suggestion, value, limit}] (Fehler zuerst, maxItems, Standard 500), files, programs, notes. Im Projektbaum stehen dieselben Prüfungen im Menü eines Roboters: Checks of <Roboter> (Fenster mit den Befunden, Doppelklick öffnet das Programm in der Zeile, Speichern als CSV / HTML).
BefehlWas er tut
find_projectsRoboterarchive in einem Ordner: folder, recursive (true), maxDepth (6), vendor; Antwort projects [{robot, controller, config, root}] – config für open_project; "open":true öffnet sie nacheinander. VKRC / KRC: VKRC, wenn das Archiv VW_User / Folgen / UPs / folge*.src hat.
check_syntaxMit einer Quelle (siehe oben): Syntax aller Programme (alle .src / .ls / .mod / .JBI, nicht nur Bewegungsprogramme), programList (Programme mit Fehlern / Warnungen, alle mit "allPrograms":true), invalidPrograms, valid; VKRC ohne Prüfung der TECH-Parameter, außer "checkTech":true. Ohne Quelle: das einzelne Dokument wie bisher.
path_checkTCP-Bahn der Bewegungsprogramme: approximation (true: Überschleifen in mm größer als die Hälfte der kürzeren Nachbarbewegung), switchPoints (true: Distanz länger als die Bewegung, Delay auf der anderen Seite des Punkts oder außerhalb der Bewegung – wie Menü Path (TCP) > Check switch points), arcs (true: Punkte auf einer Linie, mehr als 180°, Radius, Hilfspunkt nahe am Ende), longSegments [mm] (0 = aus), duplicates [mm] (Punkte eines Programms an derselben Stelle; < 0 = aus), singularity [Grad] (|Achse 5| darunter bei LIN / CIRC, singularityPtp), reach (Achswerte außerhalb der Software-Endschalter / mit der Konfiguration des Punkts nicht erreichbar; Punkte ohne Daten pro Programm und Grund zusammengefasst).
tool_base_usageproject | config | folder | file: Nutzung der Werkzeuge und Basen in den Programmen (wie das Fenster Tool / base usage) mit defined aus den Roboterdaten; Befunde: verwendet, aber nicht definiert (Fehler mit Punkten, Warnung nur mit Zuweisungen), nur zugewiesen, definiert, aber nicht verwendet (ein Befund pro Gruppe). "programs":true listet die Programme pro Nummer.
payload_checkLastdaten jedes Tools / Payload-Schedules, das die Programme verwenden, und im VW-Standard (VKRC, Fanuc) ihr Umschalten an den Greifermakros MAKRO343 (Greifer ZU: Lastdaten mit Bauteil) / MAKRO342 (Greifer AUF: ohne Bauteil) – wie das Fenster Payload check (Schaltfläche von Tool / base usage). Parameter unten.
robot_worldproject | config | folder: Ist die Position des Roboters im WORLD-Koordinatensystem definiert? KUKA: $ROBROOT aus $machine.dat (robroot X Y Z A B C, source Datei:Zeile), $EX_KIN ET1 und $ERSYSROOT für einen Roboter auf einer Fahrachse; ABB: Base Frame aus MOC.cfg; Fanuc / Yaskawa: nicht im Backup. defined, zero, note; bei defined false ein hint: ohne Studie mit den Roboterpositionen ist eine geometrische Kollisionsprüfung nicht möglich – der Agent rät keine Positionen und bietet die Prüfung der programmierten Verriegelungen an (collision_map, RCS check_interlocks).
compareZwei Dateien a, b: equal, onlyInA, onlyInB, hunks (geänderte Zeilen mit context); ignoreWhitespace (true), ignoreCase, ignoreComments, maxHunks.
archive_diffZwei Archivordner a, b: onlyInA, onlyInB, changed (geänderte Zeilen pro Programm, "details":true mit den Zeilen), same; masks, maxFiles und die Optionen von compare.
compare_offlinePunkte der Version vom Roboter b gegenüber der Offline-Version a (Archiv, Ordner oder Programm) mit Toleranzen pos (1 mm), ori (0,5°), axes (0,5°), moved (20 mm): nachgeteachte / verschobene Punkte, Status/Turn, neue / entfernte Punkte, Geschwindigkeit, TOOL / BASE, Befehle; Befunde und groups. VKRC, KRC und Fanuc, Lizenz Archive Diff des Robotertyps. Siehe Vergleich mit der Offline-Version.
{"cmd":"find_projects","folder":"D:/archives/ST010"}
{"cmd":"check_syntax","folders":["D:/archives/ST010"],"maxItems":200}
{"cmd":"path_check","projects":["*"],"singularity":5,"reach":true,"longSegments":1500}
{"cmd":"tool_base_usage","project":"R01"}
{"cmd":"payload_check","project":"R01","minPartMass":8}
{"cmd":"robot_world","folder":"D:/archives/ST010/R01"}
{"cmd":"archive_diff","a":"D:/backup/R03_old","b":"D:/backup/R03_new","masks":["*.src","*.dat"]}
{"cmd":"compare_offline","a":"D:/olp/R03","b":"D:/backup/R03","pos":1,"axes":0.5}
payload_check – Lastdaten und Greifermakros (Lizenz des Robotertyps):
AttributStandardBedeutung
project | config | folder | file–der Roboter: Projekt des Projektbaums, Konfigurationsdatei ($config.dat, system.va, system.xml, SYSTEM.SYS), Ordner mit genau einem Roboterarchiv (mit vendor) oder ein Programm des Roboters
minPartMassWert des Fensters (10)[kg] leichtere Bauteile brauchen keine eigenen Lastdaten: ein fehlendes Umschalten an MAKRO343 ist nur ein Hinweis (info)
minToolMassWert des Fensters (5)[kg] Lastdaten eines Greifers / einer Schweißzange / Klebepistole ... (am Namen des Tools erkannt), die leichter sind: LOAD_TOO_LIGHT; 0 = aus
gripperWert des Fensters (true)Greifermakros 342 / 343 prüfen (VKRC, Fanuc)
maxItems500höchste Anzahl der Befunde in der Antwort (1..20000)
dialogfalsetrue: das Fenster Payload check mit diesen Werten öffnen (sie werden als Werte des Fensters gespeichert), Antwort {"ok":true,"dialog":true}
Antwort: summary, findings (gemeinsames Format, check payload, value = Nummer / Name der Lastdaten), robot, controller, config, programs, loadKind (LOAD_DATA VKRC / KRC, PAYLOAD Fanuc, tooldata ABB, TOOL Yaskawa), gripperCloses, gripperOpens, loads [{key, name, defined, mass (nur mit defined), uses, programs}], notes (z. B. die in Makro50 gefundenen Bauteilkontrollen), minPartMass, minToolMass, gripper.
CodeSchwereBedeutung
LOAD_NOT_SETerror (warning nur mit Zuweisungen)verwendetes Tool / Payload-Schedule ohne Lastdaten
LOAD_ZERO_MASSwarningLastdaten mit der Masse 0 kg
LOAD_TOO_LIGHTwarningProzesswerkzeug leichter als minToolMass
PAYLOAD_NOT_SWITCHED_IN_PROGRAMSinfoFanuc: kein PAYLOAD[n] in den Programmen
PART_LOAD_NOT_SWITCHEDwarning (info: leichtes Bauteil, Schließen am ersten Punkt ohne Bauteilkontrolle)nach MAKRO343 dieselben Lastdaten
PART_LOAD_NOT_HEAVIERwarningnach MAKRO343 Lastdaten mit gleicher oder kleinerer Masse
PART_LOAD_NOT_RESETwarningnach MAKRO342 weiter die Lastdaten des Bauteils
PART_PRESENT_WITHOUT_PART_LOADwarningBauteilkontrolle „Bauteil im Greifer“, die erste Bewegung verwendet aber Lastdaten, die in den anderen Programmen nicht mit Bauteil verwendet werden
VW-Logik: die Bauteilkontrollen M1..M16 aus Makro50 (Bauteil vorhanden mit + E15, kein Bauteil nur mit negierten Eingängen) und WARTE BIS / WAIT darauf zeigen, ob der Roboter ein Bauteil hält; Schließen und Öffnen am selben Punkt ohne Bewegung ist ein Greifertest (ignoriert). Fanuc: nur die Programme des Ordners ENGLISH. Details: Payload check. Andere Befehle nur mit geöffneten Projekten (Quellen des Projektbaums): points mit checks, tech, robot_data, collision_map – für Archive auf dem Datenträger zuerst find_projects und open_project. search nimmt auch "scope":"folders".