Was brauchen Sie für ein Firmware-Update einer WAGO-SPS?

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.

  1. invoke_method lehnt alle firmware*- und 0-0-update-*-Methoden ab. Deshalb kann ein Agent kein Update starten.1
  2. upload_file sendet die ganze Datei mit einem PUT. Die WDA-Dokumentation nennt für diesen Aufruf den Fehler 413. Firmware-Uploads brauchen Blöcke von ca. 4 MB.23
  3. 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.

1

Wer kann Firmware auf eine SPS schreiben?

Zwei getrennte Wege zur SPS
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 vor
  • engineer → policy · committet
  • policy → tool · geprüft
  • files → tool · ausgewählt
  • mcp → plc · keine Firmware
  • tool → plc · flasht
  • mcp → audit · protokolliert
  • tool → audit · protokolliert

Beide Wege schreiben in dasselbe Audit-Log mit Hash-Kette. Das Log zeichnet auch jede Ablehnung auf.5

2

Was muss vor dem Start bereit sein?

PunktAnforderung
HostDocker mit Compose und Git. Windows 10 oder 11 und Linux sind möglich.
NetzwerkHTTPS (Port 443) vom Host zu jeder SPS. Der Container nutzt network_mode: host.
ToolDas Image wagoalex/wago-plc-mcp-server-fwupdate und der Ordner fwupdate/ aus dem Repository.
FirmwareDie Firmware-Dateien von WAGO: .wup oder eine signierte .zip für den CC100-IEC62443.
FreigabeEine committete Datei firmware-policy.yaml mit der IP-Adresse des Geräts und der exakten Revision.
ZugangsdatenDer 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-BuildPFC300: 30. CC100, PFC200 G2, TP600 und Edge Controller: 28. Der CC100-IEC62443 hat keine Prüfung.
WartungsfensterEine gestoppte Maschine oder ein gestoppter Prozess, denn die SPS startet beim Update neu.
3

Welche Firmware-Datei braucht jedes Gerät?

GerätFirmware-DateiFreizugebende Revision
CC100CC100-Linux4.9.1
PFC200 G2, außer 0750-8217PFC-G2-Linux4.9.1
PFC200 G2 0750-8217 (Modem)PFC-G2-Linux-red-autoupdateNur Modem4.9.50
PFC300PFC-300-Linux4.9.1
TP600 und Edge ControllerTP-Linux4.9.1
WP400WP400-Linux4.9.1
CC100-IEC62443wago-image-wago-cc100-02.00.13-fw-bundle.zipNullen 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

4

Wie führen Sie ein Update aus?

Von der Firmware-Datei zur aktualisierten SPS
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-run
  • dry-run → flash · bestanden
  • flash → verify · fertig
  • get-files → set-env
  • set-env → commit
  1. Firmware-Dateien holen

    Kopieren Sie die .wup- oder .zip-Dateien in den Ordner firmware.

  2. Verbindung einstellen

    Kopieren Sie _env nach .env. Tragen Sie PLC_IP und PLC_PASSWORD ein.

  3. Freigabe committen

    Tragen Sie die IP-Adresse und die Revision in firmware-policy.yaml ein. Committen Sie die Datei.

  4. 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.

  5. SPS flashen

    Stoppen Sie die Maschine. Starten Sie das Tool. Warten Sie auf ==> Done.

  6. Audit-Log prüfen

    Starten Sie audit_verify.py. Das Ergebnis muss eine intakte Kette zeigen.

firmware-policy.yamlyaml
approvals:
  192.168.1.10: "4.9.1"
Befehle im Ordner fwupdatebash
cp _env .env
docker compose pull
docker compose run --rm -e DRY_RUN=true fwupdate
docker compose run --rm fwupdate

Für alle freigegebenen SPSen ersetzen Sie fwupdate in den letzten zwei Befehlen durch fleet. Das Tool aktualisiert die SPSen dann nacheinander.7

5

Welchen Weg sollten Sie nutzen?

WegFreigabeWer startetEinsatz
Tool von HandEintrag in firmware-policy.yamlSie, auf einem Host im AnlagennetzKein Runner ist verfügbar
Datei ops/fw-*.yamlDer gemergte Pull RequestCI, beim MergeBeste NachweiseFür Routinearbeit
Run workflowEintrag in firmware-policy.yamlCI, per KlickDie 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

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.
7

Was stoppt ein Update?

MeldungAktion
has uncommitted changesCommitten Sie die Datei. Fügen Sie unter Windows auch .gitattributes mit *.yaml text eol=lf hinzu.
not listed in the firmware policyTragen Sie das Gerät in einem Pull Request ein.
is approved for firmware X, but the resolved bundle is YKorrigieren Sie die Freigabe oder den Firmware-Ordner.
bundles match order numberSetzen Sie TARGET_VERSION auf die exakte Revision.
Device is already atKeine Aktion nötig. Setzen Sie FW_ALLOW_REFLASH=true nur für ein gewolltes erneutes Flashen.
below the minimumAktualisieren Sie zuerst auf den Zwischen-Build aus der Meldung.
activate failedLegen Sie /tmp/fwupdate auf der SPS an. Nutzen Sie den Befehl unten.
Auf der SPS per SSH ausführenbash
mkdir -p /tmp/fwupdate && chgrp admin /tmp/fwupdate && chmod 770 /tmp/fwupdate
8

Was beantwortet die Dokumentation noch nicht?

9

Sind Sie bereit für das Update?

Opening diagram…