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):
- AI agent: command APIs and MCP server - die Skripte in
AIAgent; die Befehls-APIs des Editors und des Robot Cell Simulator werden beim ersten Start eingeschaltet. - Voice control VeRa with Whisper (offline) - die Sprachsteuerung mit der lokalen Spracherkennung Whisper (
AIAgent\whisper), wird bei der Installation von dramat.eu heruntergeladen (whisper.zip, etwa 140 MB) und mit der MD5-Prüfsumme geprüft - schlägt der Download fehl, nutzt VeRa die Spracherkennung von Windows; die Sprachsteuerung wird beim ersten Start eingeschaltet (die Mikrofontaste in der Symbolleiste startet das Zuhören). - Multilingual speech model Whisper medium (large download) - das Modell
ggml-medium.bin(whisper_medium.zip, etwa 1,5 GB, von dramat.eu heruntergeladen und mit der MD5-Prüfsumme geprüft, entpackt nachAIAgent\whisper\models): viel besser bei deutschen Wörtern wie Folge und bei freien Sätzen für den KI-Agenten, etwa 4 s pro Befehl; setzt die Sprachsteuerung VeRa voraus. Ohne es nutzt VeRa das englische Modell auswhisper.zip.
AIAgent nicht installiert und nichts von VeRa läuft. 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). Extras > Einstellungen > KI-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.

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.

Voraussetzungen in Windows
- 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).
- 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.
- 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.
- 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).
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).
| Englisch | Deutsch | Befehl des Editors | Antwort |
|---|---|---|---|
| Vera, save, Vera, save file | Vera, speichern, Vera, Datei speichern | {"cmd": "save"} | Gespeichert. |
| Vera, save all | Vera, 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 file | Vera, 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 windows | Vera, 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 session | Vera, 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 session | Vera, 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 session | Vera, Dateien aus der letzten Sitzung wiederherstellen | {"cmd": "restore_session", "what": "files"} | Dateien der letzten Sitzung werden wiederhergestellt. |
| Vera, reload, Vera, reload file | Vera, neu laden, Vera, Datei neu laden | {"cmd": "reload"} | Neu geladen. |
| Vera, check syntax | Vera, Syntax prüfen | {"cmd": "check_syntax"} | |
| Vera, next window, Vera, next file | Vera, nächstes Fenster, Vera, nächste Datei | {"cmd": "window_next"} | |
| Vera, previous window, Vera, previous file | Vera, vorheriges Fenster, Vera, vorherige Datei | {"cmd": "window_previous"} | |
| Vera, first file, Vera, first window | Vera, erste Datei, Vera, erstes Fenster | {"cmd": "window_first"} | |
| Vera, last file, Vera, last window | Vera, letzte Datei, Vera, letztes Fenster | {"cmd": "window_last"} | |
| Vera, undo | Vera, rückgängig | {"cmd": "undo"} | |
| Vera, redo | Vera, wiederholen | {"cmd": "redo"} | |
| Vera, start simulator, Vera, open simulator | Vera, 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 robot | Vera, 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 robot | Vera, 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 project | Vera, 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 line | Vera, 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 line | Vera, 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 line | Vera, 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 line | Vera, 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 fold | Vera, 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 fold | Vera, 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 fold | Vera, 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 fold | Vera, 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 tech | Vera, 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 tech | Vera, 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 tech | Vera, 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 tech | Vera, 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 point | Vera, 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 point | Vera, 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 point | Vera, 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 point | Vera, 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 subprogram | Vera, 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 subprogram | Vera, 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 subprogram | Vera, 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 subprogram | Vera, 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 dialog | Vera, 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 editor | Vera, 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, goodbye | Vera, nicht mehr zuhören, Vera, auf Wiedersehen | stop | Auf Wiederhören. |
| Vera, set active project / active project / activate robot three | Vera, 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 tree | Aktives Projekt: {0}. |
| Vera, next robot / previous robot (also: next robot active, activate next robot) | Vera, nächster / vorheriger Roboter | next / previous robot project | Aktives 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:
- "Vera, open Folge 125 for all robots"
- "Vera, how many robot projects are open?"
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 (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. Die Sprachsteuerung arbeitet ohne diese Lizenz.

| Werkzeug | Was es macht |
|---|---|
| status | Zustand des Editors und des Simulators: APIs erreichbar, Lizenzen bereit, aktive Datei, offener Dialog, RCS lädt / läuft. |
| editor | Beliebiger 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. |
| rcs | Beliebiger 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). |
| save | Speichert das aktive Dokument oder die angegebene offene Datei. |
| save_all | Speichert alle geänderten Dokumente. |
| close_file | Schließ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_all | Schließ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). |
| reload | Lädt das aktive Dokument (oder die angegebene Datei) neu von der Festplatte. |
| documents | Offene Dokumente des Editors (Datei, geändert, aktiv). |
| projects | Roboterprojekte im Projektbaum (Name, Steuerungstyp, Konfigurationsdatei, aktiv). |
| set_active_project | Setzt das aktive Roboterprojekt (Name oder ein Teil davon, z. B. 'R03' oder '0001R03'). |
| close_project | Schließ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_session | Stellt 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. |
| goto | Bewegt 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_syntax | Prüft die Syntax des aktiven Dokuments (oder der angegebenen offenen Datei) und gibt die Meldungen zurück. |
| menu | Listet die Menüaktionen des Editors (Pfad wie 'File > Save all'), optional gefiltert. |
| menu_click | Lö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_rcs | Schaltet die API des Robot Cell Simulator ein und öffnet ihn (wartet, bis er antwortet). |
| rcs_study | Simulationsstudie 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 arbeitet ohne die Zusatzlizenz API / CLI: 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 außer den lesenden brauchen die Zusatzlizenz API / CLI (die Sprachsteuerung arbeitet ohne sie).
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.

| Befehl | Parameter | Was er macht |
|---|---|---|
| documents | offene Dokumente (Datei, geändert, aktiv) | |
| activate | file | macht ein offenes Dokument aktiv |
| save | file | speichert das aktive oder das angegebene Dokument |
| save_all | speichert alle geänderten Dokumente | |
| close | file, save | schließt ein Dokument; ein geändertes nur mit save=true |
| close_all | save | schließt alle Dokumente; geänderte nur mit save=true |
| reload | file, force | lädt neu von der Festplatte; ein geändertes nur mit force=true |
| projects | Roboterprojekte des Projektbaums (Name, Konfiguration, Typ, aktiv) | |
| set_active_project | name | setzt das aktive Roboterprojekt (Name oder sein Ende, z. B. R03) |
| open_project | config | ö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 |
| check_syntax | file | prüft die Syntax (Ergebnis in der Konsole) |
| window_next / window_previous / window_first / window_last | nächstes / vorheriges / erstes / letztes Dokumentfenster | |
| undo / redo | Rückgängig / Wiederholen im aktiven Dokument | |
| goto | file, target, direction | bewegt 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 |
| tech | action, file, scope, projects, maxFiles, fileMask, openFiles, command, line, where, fields, full, summaryOnly, csv, set, dryRun, useSelectedVwUser | listet (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) |
| search | pattern, scope, projects, files, path, fileMask, ignoreCase, where, fields, max, maxFiles, context, text, csv | sucht 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_data | projects, sections, all | Daten 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, Kalibrierung, Achsgrenzen), auch für inaktive Projekte |
| points | file, table, path, motions, acc, ranges, process, maxRows; scope, projects, files, fileMask, maxFiles, checks, select | Punkte 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_chat | show, message, stop, newChat, anonymous, last | das 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, anonymer Modus, last = Anzahl der letzten Einträge; Antwort visible, busy, anonymous, 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_shot | jede 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 |
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.
| Parameter | Bedeutung |
|---|---|
| action | list (Standard) – die Befehle und ihre Parameter; set – Parameter ändern |
| file | ein offenes Dokument; ohne file alle offenen Dokumente |
| scope | file (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 |
| projects | bei scope projects: nur Roboterprojekte, deren Name einen dieser Texte enthält, z. B. ["R05","R06"]; ohne Angabe alle VKRC- und Fanuc-Projekte des Projektbaums |
| maxFiles | bei scope projects: höchstens diese Anzahl Dateien (Standard 300) |
| csv | nur mit action list: schreibt die gefundenen Befehle in diese CSV-Datei, z. B. "D:/x/servozange.csv" |
| fileMask | nur diese Programme (scope projects und open), z. B. ["up*"], ["folge*"], ["makro*"] oder ["folge81*"] |
| openFiles | list mit scope projects: true – liest die Dateien über den Editor (die Dateien werden geöffnet) statt von der Festplatte (Standard false) |
| fields | nur diese Parameter, z. B. ["Programmnummer","Punktnummer","FahrzeugTyp","Offset"] |
| full | true – die ausführliche Antwort von list (siehe unten); Standard false – kompakte Antwort |
| summaryOnly | true – 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 |
| command | nur 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) |
| line | nur der Befehl in dieser Zeile |
| where | nur Befehle, deren aktuelle Werte diese Bedingungen erfüllen: "6" (gleich), ">0", ">=2", "<5", "<=5", "!=6"; z. B. {"P1":"5"}, {"FahrzeugTyp":"6"} oder {"Offset":">0"} |
| set | neue Werte: {"<Name oder P#>":"<Wert>"} |
| dryRun | true – zeigt nur, was sich ändern würde, nichts wird geändert |
| useSelectedVwUser | true – 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.
- eine Datei des aktiven Roboterprojekts: wird geändert;
- eine Datei eines anderen (inaktiven) Projekts: der VW User ihres Projekts wird von der Festplatte gelesen (KRC\R1\VW_User\vw_usr_s.src); derselbe wie in der Symbolleiste – Änderung ohne Projektwechsel, ein anderer – abgelehnt (zuerst set_active_project);
- eine Datei außerhalb aller Roboterprojekte: nur mit useSelectedVwUser: true;
- Fanuc: nur Dateien des aktiven Roboterprojekts (VW_USER-Datei des aktiven Projekts);
- SERVOZANGE-Folds brauchen keinen VW User.
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.
| Parameter | Bedeutung |
|---|---|
| pattern | regulärer Ausdruck je Zeile (Pflicht); benannte Gruppen (?<name>...) sind die Werte, die in groups und summary zurückkommen |
| scope | projects (Standard) – die Dateien der Roboterprojekte des Projektbaums; files – die Dateien oder Ordner in files (Standard, wenn files angegeben ist); open – die offenen Dokumente |
| projects | nur Roboterprojekte, deren Name einen dieser Texte enthält, z. B. ["R01"]; ohne Angabe alle Projekte |
| files | bei scope files: Pfade von Dateien oder Ordnern (Ordner mit Unterordnern) |
| path | Unterordner jedes Roboterprojekts, z. B. "KRC/R1/System" |
| fileMask | z. 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 |
| ignoreCase | Standard true |
| where | Bedingungen auf den Gruppen: "6", ">0", ">=2", "<5", "<=5", "!=6", "~Text" (enthält), z. B. {"tool":">0"} |
| fields | nur diese Gruppen in der Antwort |
| max | aufgelistete Treffer (Standard 200, höchstens 5000); found zählt alle |
| maxFiles | höchstens diese Anzahl Dateien (Standard 5000) |
| context | Zeilen vor und nach einem Treffer (0 bis 5, Standard 0) |
| text | true – der Text der Zeile auch dann, wenn das Muster Gruppen hat (um das Muster zu prüfen) |
| csv | schreibt 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.
| Parameter | Bedeutung |
|---|---|
| projects | Roboterprojekte, deren Name einen dieser Texte enthält, z. B. ["R01"]; ["*"] alle; ohne Angabe das aktive Projekt |
| sections | info (Name, Modell, Seriennummer, Software, VW User, Trafo, IP / Netzmaske / Gateway, WorkVisual- und KUKA.Load-Projekt), tools, bases, loads, profinet (Geräte, Kamera-IPs), cal (Kalibrierung / Justage), softend (Achsgrenzen), all; Standard info, tools, bases, loads |
| all | true – 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, cal, softEnd, 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.
Beispiele:
{"cmd":"robot_data","projects":["*"],"sections":["info"]}
{"cmd":"robot_data","projects":["R01"],"sections":["tools","bases","loads"]}
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.
| Parameter | Bedeutung |
|---|---|
| file | das Programm (.src, .ls, .mod, .jbi); ohne Angabe das aktive Dokument |
| table | true (Standard) – columns und rows: Point, Motion, X, Y, Z, A, B, C, S, T, E1.., Tool, Base, VB, VE (VKRC) |
| maxRows | höchstens diese Anzahl Zeilen (Standard 500) |
| path | true (Standard) – die TCP-Bahn in path |
| acc | Beschleunigung für die Bewegungszeit in mm/s² (Standard 2000) |
| ranges | Längen zwischen Punkten, z. B. [["P5","P12"]] |
| process | Länge des Prozesses (Kleber, MAG, Laser): {"on":"<Regex der Zeile, die ihn einschaltet>","off":"<Regex aus>"} |
| motions | true – 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.
| Parameter | Bedeutung |
|---|---|
| scope, projects, files | projects – 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 |
| fileMask | Standard ["folge*","up*"]; ohne Endung wird die Endung der Steuerung ergänzt |
| maxFiles | höchstens diese Anzahl Dateien (Standard 300) |
| checks.samePoints | Punktpaare, deren Abstand in jedem Programm geprüft wird: "1" (erster), "2", "last", "-2" oder ein Name "P5", z. B. [["1","2"],["1","last"]] |
| checks.callStart | true – jeder Aufruf eines UP / MAKRO im Programm: der Punkt des Aufrufs gegen den ersten Punkt des aufgerufenen Programms (dasselbe Roboterprojekt) |
| checks.tolerance | in mm (Standard 2); verschiedene Basen mit demselben Werkzeug werden in Weltkoordinaten verglichen (Basen aus $config.dat), verschiedene Werkzeuge sind nicht vergleichbar |
| checks.onlyFailed | true (Standard) – nur die Programme, die die Bedingung verletzen |
| select | diese 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}}
VeRa - KI-Agent und Sprachsteuerung