12.08.2025 11:16 | |
Beigetreten: 01.02.2021 Letzter Bes: 10.09.2025 Beiträge: 1702 Bewertung:
|
Praxisleitfaden für den schnellen Einstieg 1. Einleitung Die neue Generation der S7-1200 G2 von Siemens bietet eine Web API auf Basis von JSON-RPC 2.0. Ein typischer Anwendungsfall ist das Auslesen des Diagnosepuffers für Störungsanalyse und Monitoring. In diesem Leitfaden zeigen wir, wie die Web API in einer Docker-Umgebung mit einem einfachen Python-Skript angesprochen wird. 2. Voraussetzungen Hardware & Software
Konfiguration in TIA Portal
📌Hinweis: Die Web API ist Bestandteil der Webserver-Funktionalität. Details siehe Kapitel 7 im Systemhandbuch 3. Aufbau der Web API
4. Beispiel: Diagnosepuffer auslesen 4.1 Projektstruktur project/ │ ├─ Dockerfile └─ s7_api_test.py 4.2 Dockerfile FROM python:3.11-slim WORKDIR /app # requests direkt installieren (kein requirements.txt nötig) RUN pip install --no-cache-dir requests COPY s7_api_test.py . CMD ["python", "s7_api_test.py"] 4.3 s7_api_test.py import requests import json # Feste Konfiguration (hier anpassen) CPU_IP = "192.168.0.1" USERNAME = "User" PASSWORD = "Siemens123!" API_URL = f"https://{CPU_IP}/api/jsonrpc" # Login-Funktion def login(): payload = { "jsonrpc": "2.0", "method": "Api.Login", "params": {"user": USERNAME, "password": PASSWORD}, "id": 1 } response = requests.post(API_URL, headers={"Content-Type": "application/json"}, data=json.dumps(payload), verify=False) return response.json()["result"]["token"] # Diagnosepuffer abfragen def get_diagnose(token): payload = { "jsonrpc": "2.0", "method": "DiagnosticBuffer.Browse", "params": {"language": "de-DE", "count": 5}, "id": 2 } response = requests.post(API_URL, headers={"Content-Type": "application/json", "X-Auth-Token": token}, data=json.dumps(payload), verify=False) print(json.dumps(response.json(), indent=2)) # Hauptprogramm if __name__ == "__main__": token = login() get_diagnose(token) 5. Ausführung im Docker-Container Image bauen: docker build -t s7-api-test . Container starten: docker run --rm s7-api-test 6. Sicherheitshinweis
7. Weiterführende Funktionen Die Web API bietet viele weitere Methoden, z. B.:
7.1 Beispielcode: Ping und Version abfragen def api_ping(token): payload = { "jsonrpc": "2.0", "method": "Api.Ping", "params": {}, "id": 3 } response = requests.post(API_URL, headers={"Content-Type": "application/json", "X-Auth-Token": token}, data=json.dumps(payload), verify=False) print("Ping:", response.json()) def api_version(token): payload = { "jsonrpc": "2.0", "method": "Api.Version", "params": {}, "id": 4 } response = requests.post(API_URL, headers={"Content-Type": "application/json", "X-Auth-Token": token}, data=json.dumps(payload), verify=False) print("API Version:", response.json()) # Beispielaufruf im Hauptprogramm ergänzen if __name__ == "__main__": token = login() get_diagnose(token) api_ping(token) api_version(token) 📘Vollständige Funktionsliste→ Kapitel 7 im Systemhandbuch 8. Fazit Mit der Web API derS7-1200 G2 lassen sich Diagnosedaten direkt aus der CPU auslesen – auch aus einem Docker-Container. 9. Nützliche Links
Im Anhang ist ein Beispiel zur Konfiguration eines TIA Projektes (ab TIA V20) enthalten Hinweis: Die in diesem Beitrag beschriebene Vorgehensweise bezieht sich auf den Zeitpunkt der Erstellung dieses Beitrags (Stand: Mai 2023). Viele Grüße Eure Fachberatung Deutschland (CG) DateianhangBeschreibung_TIA Projekt_S7-1200 G2_ WebAPI 2.pdf (41 Downloads) |
Zuletzt bearbeitet von: Fachberatung Deutschland am: 08/12/2025 12:30:23Formatierung geändert |
|
Folgen Sie uns auf