Antwort
Der WAGO PLC MCP Server kann keine SPS flashen. Eine Person oder CI startet das separate fwupdate-Tool. Dieses Tool braucht eine committete Git-Freigabe für das Gerät und die Firmware-Revision.
invoke_methodlehnt allefirmware*- und0-0-update-*-Methoden ab. Deshalb kann ein Agent kein Update starten.1upload_filesendet die ganze Datei mit einemPUT. Die WDA-Dokumentation nennt für diesen Aufruf den Fehler413. Firmware-Uploads brauchen Blöcke von ca. 4 MB.23- Im GitOps-Modus macht der Agent nur einen Vorschlag. Eine Person prüft den Vorschlag und führt den Merge aus.4
Gilt fürServer 2.4.4, Firmware 4.9.1 und 02.00.13. Geprüft in Code und Dokumentation. Wir haben kein Gerät geändert. Wir haben das Upload-Limit nicht über den MCP Server getestet.
Wer kann Firmware auf eine SPS schreiben?
Diagram structure
- KI-Agent
agent - Person oder CI
engineer - Firmware-Dateien
files - MCP Server
mcp - Freigabe-Repository
policy - fwupdate-Tool
tool - WAGO-SPS
plc - Audit-Log
audit agent→mcp· liest, schlägt vorengineer→policy· committetpolicy→tool· geprüftfiles→tool· ausgewähltmcp→plc· keine Firmwaretool→plc· flashtmcp→audit· protokollierttool→audit· protokolliert
Beide Wege schreiben in dasselbe Audit-Log mit Hash-Kette. Das Log zeichnet auch jede Ablehnung auf.5
Was muss vor dem Start bereit sein?
| Punkt | Anforderung |
|---|---|
| Host | Docker mit Compose und Git. Windows 10 oder 11 und Linux sind möglich. |
| Netzwerk | HTTPS (Port 443) vom Host zu jeder SPS. Der Container nutzt network_mode: host. |
| Tool | Das Image wagoalex/wago-plc-mcp-server-fwupdate und der Ordner fwupdate/ aus dem Repository. |
| Firmware | Die Firmware-Dateien von WAGO: .wup oder eine signierte .zip für den CC100-IEC62443. |
| Freigabe | Eine committete Datei firmware-policy.yaml mit der IP-Adresse des Geräts und der exakten Revision. |
| Zugangsdaten | Der WBM-Benutzername und das Passwort. Nutzen Sie ein Docker Secret je Gerät, wenn die Passwörter verschieden sind. |
| Geräteordner | /tmp/fwupdate auf der SPS, mit Gruppe admin und Modus 0770. |
| Mindest-Build | PFC300: 30. CC100, PFC200 G2, TP600 und Edge Controller: 28. Der CC100-IEC62443 hat keine Prüfung. |
| Wartungsfenster | Eine gestoppte Maschine oder ein gestoppter Prozess, denn die SPS startet beim Update neu. |
Welche Firmware-Datei braucht jedes Gerät?
| Gerät | Firmware-Datei | Freizugebende Revision |
|---|---|---|
| CC100 | CC100-Linux | 4.9.1 |
PFC200 G2, außer 0750-8217 | PFC-G2-Linux | 4.9.1 |
PFC200 G2 0750-8217 (Modem) | PFC-G2-Linux-red-autoupdate | Nur Modem4.9.50 |
| PFC300 | PFC-300-Linux | 4.9.1 |
| TP600 und Edge Controller | TP-Linux | 4.9.1 |
| WP400 | WP400-Linux | 4.9.1 |
| CC100-IEC62443 | wago-image-wago-cc100-02.00.13-fw-bundle.zip | Nullen behalten02.00.13 |
Beide PFC-G2-Dateien nennen dieselben Artikelnummern. Die Dateidaten können 0750-8217 also nicht erkennen. Die freigegebene Revision wählt die Firmware-Datei aus.6
Wie führen Sie ein Update aus?
Diagram structure
- Firmware-Dateien holen
get-files - Verbindung einstellen
set-env - Freigabe committen
commit - Testlauf ausführen
dry-run - SPS flashen
flash - Audit-Log prüfen
verify commit→dry-rundry-run→flash· bestandenflash→verify· fertigget-files→set-envset-env→commit
- Firmware-Dateien holen
Kopieren Sie die
.wup- oder.zip-Dateien in den Ordnerfirmware. - Verbindung einstellen
Kopieren Sie
_envnach.env. Tragen SiePLC_IPundPLC_PASSWORDein. - Freigabe committen
Tragen Sie die IP-Adresse und die Revision in
firmware-policy.yamlein. Committen Sie die Datei. - Testlauf ausführen
Starten Sie das Tool mit
DRY_RUN=true. Das Tool lädt die Datei hoch, prüft die Datei und bricht dann ab. - SPS flashen
Stoppen Sie die Maschine. Starten Sie das Tool. Warten Sie auf
==> Done. - Audit-Log prüfen
Starten Sie
audit_verify.py. Das Ergebnis muss eine intakte Kette zeigen.
yamlapprovals:
192.168.1.10: "4.9.1"bashcp _env .env
docker compose pull
docker compose run --rm -e DRY_RUN=true fwupdate
docker compose run --rm fwupdateFür alle freigegebenen SPSen ersetzen Sie fwupdate in den letzten zwei Befehlen durch fleet. Das Tool aktualisiert die SPSen dann nacheinander.7
Welchen Weg sollten Sie nutzen?
| Weg | Freigabe | Wer startet | Einsatz |
|---|---|---|---|
| Tool von Hand | Eintrag in firmware-policy.yaml | Sie, auf einem Host im Anlagennetz | Kein Runner ist verfügbar |
Datei ops/fw-*.yaml | Der gemergte Pull Request | CI, beim Merge | Beste NachweiseFür Routinearbeit |
| Run workflow | Eintrag in firmware-policy.yaml | CI, per Klick | Die Freigabe existiert, und Sie wollen sie jetzt nutzen |
Die CI-Wege brauchen einen Self-hosted Runner und die Workflows apply.yml und firmware.yml. Sie brauchen auch die Variablen FIRMWARE_SOURCE und AUDIT_SYSLOG. Ohne AUDIT_SYSLOG erzeugt ein CI-Lauf keinen Audit-Eintrag.6
Was passiert während des Flashens?
- Dauer
- 5 bis 15 Minuten je SPS. Ca. 20 Minuten beim CC100-IEC62443.
- Neustart CC100
- Bis zu 10 Minuten.
- Fortschritt
- Er stoppt bei ca. 93 %. Das echte Signal ist der Status
Unconfirmed (4). - Letzte Zeile
==> Done.mit dem Status und der neuen Firmware-Version.
Was stoppt ein Update?
| Meldung | Aktion |
|---|---|
has uncommitted changes | Committen Sie die Datei. Fügen Sie unter Windows auch .gitattributes mit *.yaml text eol=lf hinzu. |
not listed in the firmware policy | Tragen Sie das Gerät in einem Pull Request ein. |
is approved for firmware X, but the resolved bundle is Y | Korrigieren Sie die Freigabe oder den Firmware-Ordner. |
bundles match order number | Setzen Sie TARGET_VERSION auf die exakte Revision. |
Device is already at | Keine Aktion nötig. Setzen Sie FW_ALLOW_REFLASH=true nur für ein gewolltes erneutes Flashen. |
below the minimum | Aktualisieren Sie zuerst auf den Zwischen-Build aus der Meldung. |
activate failed | Legen Sie /tmp/fwupdate auf der SPS an. Nutzen Sie den Befehl unten. |
bashmkdir -p /tmp/fwupdate && chgrp admin /tmp/fwupdate && chmod 770 /tmp/fwupdate