Files
chemenu/kb/concepts/protocols/Modbus.md
T
torben 54d9540c08
CI / verify (push) Successful in 56s
Release / release (push) Successful in 36s
stack: Konfidenz-Mechanismus ersatzlos entfernt, Korpus migriert (schliesst #60, #86)
Files changed:
- .wikitool-kb.json
- AGENTS.md
- CHANGES.md
- INSTALL-MCP.md
- INSTALL.md
- README.md
- VERSION
- instructions/capture-session.md
- instructions/dev/issue-tracking.md
- instructions/german-terminology.md
- instructions/kb-profiles.md
- instructions/migrate-corpus.md
- instructions/migrations/5.0.0-confidence-removal.md
- instructions/private-instance.md
- instructions/setup-instance.md
- instructions/wiki-lint/SKILL.md
- instructions/wiki-manage/SKILL.md
- instructions/wiki-query/SKILL.md
- kb/CONTRACT.md
- kb/CONVENTIONS.md
- kb/CONVENTIONS.md.template
- kb/concepts/architectures/Consolidation Tiers.md
- kb/concepts/architectures/Context Isolation.md
- kb/concepts/architectures/Cross-platform Agent Skills.md
- kb/concepts/architectures/Episodic Memory.md
- kb/concepts/architectures/Hybrid Search.md
- kb/concepts/architectures/Implementation Spectrum.md
- kb/concepts/architectures/Knowledge Graph.md
- kb/concepts/architectures/LLM Wiki Pattern.md
- kb/concepts/architectures/MCP-Leseserver.md
- kb/concepts/architectures/Memory Lifecycle.md
- kb/concepts/architectures/OKF Compatibility.md
- kb/concepts/architectures/Optional Instance Context File.md
- kb/concepts/architectures/Personalization Plane.md
- kb/concepts/architectures/Procedural Memory.md
- kb/concepts/architectures/RAG.md
- kb/concepts/architectures/Scale Ceiling.md
- kb/concepts/architectures/Semantic Memory.md
- kb/concepts/architectures/Three-Layer Architecture.md
- kb/concepts/architectures/Token Economics.md
- kb/concepts/architectures/Working Memory.md
- kb/concepts/decisions/Delete Rather Than Anonymize.md
- kb/concepts/decisions/Denylist over Allowlist.md
- kb/concepts/decisions/Diff-Reviewable Agent Edits.md
- kb/concepts/decisions/Dual Licensing by File Plan.md
- kb/concepts/decisions/Issue Label Scheme.md
- kb/concepts/decisions/KB Stack Versioning.md
- kb/concepts/decisions/Structural Enforcement over Documented Rule.md
- kb/concepts/patterns/Audit Trail.md
- kb/concepts/patterns/BM25.md
- kb/concepts/patterns/Command Round-Trip Integrity.md
- kb/concepts/patterns/Confidence Scoring.md
- kb/concepts/patterns/Contradiction Resolution.md
- kb/concepts/patterns/Entity Extraction.md
- kb/concepts/patterns/Filter on Ingest.md
- kb/concepts/patterns/Forgetting.md
- kb/concepts/patterns/Graph Traversal.md
- kb/concepts/patterns/Mesh Sync.md
- kb/concepts/patterns/Quality Scoring.md
- kb/concepts/patterns/Reciprocal Rank Fusion.md
- kb/concepts/patterns/Self-Healing.md
- kb/concepts/patterns/Shared vs Private.md
- kb/concepts/patterns/Typed Relationships.md
- kb/concepts/patterns/Vector Search.md
- kb/concepts/patterns/Work Coordination.md
- kb/concepts/problems/Ambient Environment Dependency.md
- kb/concepts/problems/Detect-Repair Asymmetry.md
- kb/concepts/problems/Green Suite Blind Spot.md
- kb/concepts/problems/Naming Convention Conflict.md
- kb/concepts/problems/Write-Once Frontmatter Fields.md
- kb/concepts/protocols/CPPC.md
- kb/concepts/protocols/Modbus.md
- kb/concepts/protocols/SSD TRIM.md
- kb/concepts/workflows/Anti-Cramming Heuristic.md
- kb/concepts/workflows/Bulk Operations.md
- kb/concepts/workflows/CI Integration.md
- kb/concepts/workflows/Checkpoint Audit.md
- kb/concepts/workflows/Claude Code Auto Mode.md
- kb/concepts/workflows/Content Quality Control.md
- kb/concepts/workflows/Crystallization.md
- kb/concepts/workflows/Event-Driven Automation.md
- kb/concepts/workflows/Hooks.md
- kb/concepts/workflows/Index Scaling.md
- kb/concepts/workflows/Iteration and Cost Limits.md
- kb/concepts/workflows/KB Migration.md
- kb/concepts/workflows/Knowledge Compounding.md
- kb/concepts/workflows/Lint Workflow.md
- kb/concepts/workflows/Mass-Update Gate.md
- kb/concepts/workflows/Multi-Agent Collaboration.md
- kb/concepts/workflows/Privacy and Governance.md
- kb/concepts/workflows/Publish-Remote Gate.md
- kb/concepts/workflows/Quality and Self-Correction.md
- kb/concepts/workflows/Semantic Lint Automation.md
- kb/concepts/workflows/Session Orientation.md
- kb/concepts/workflows/Split Merge Reclassify.md
- kb/concepts/workflows/Split Threshold.md
- kb/concepts/workflows/Stub Threshold.md
- kb/concepts/workflows/Supersession.md
- kb/concepts/workflows/User Management.md
- kb/concepts/workflows/Workflow Extraction.md
- kb/concepts/workflows/Workflow Orchestration.md
- kb/entities/people/Andrej Karpathy.md
- kb/entities/people/E3DC GmbH.md
- kb/entities/people/Rohit Gupta.md
- kb/entities/people/Vannevar Bush.md
- kb/entities/projects/BCDModule.md
- kb/entities/projects/Chemenu.md
- kb/entities/projects/andybalholm-edl.md
- kb/entities/projects/goresponsiveness.md
- kb/entities/projects/ha-core.md
- kb/entities/projects/hacs-e3dc.md
- kb/entities/projects/hacs-integration-blueprint.md
- kb/entities/projects/llm-wiki-skills.md
- kb/entities/projects/plugnburn-edl.md
- kb/entities/projects/wiki-skills-vanillaflava.md
- kb/entities/projects/wiki-skills.md
- kb/entities/systems/AGENTS.md.md
- kb/entities/systems/CLAUDE.md.md
- kb/entities/systems/E3DC.md
- kb/entities/systems/ENVIRONMENT.md.md
- kb/entities/systems/Memex.md
- kb/entities/systems/Tolkien Gateway.md
- kb/entities/technologies/Arch Linux.md
- kb/entities/technologies/Disk Encryption.md
- kb/entities/technologies/Docker.md
- kb/entities/technologies/GRUB.md
- kb/entities/technologies/Gitea Actions.md
- kb/entities/technologies/Gitea.md
- kb/entities/technologies/Go.md
- kb/entities/technologies/Home Assistant.md
- kb/entities/technologies/Kernel PM Governors.md
- kb/entities/technologies/LVM.md
- kb/entities/technologies/Linux Kernel.md
- kb/entities/technologies/MQTT.md
- kb/entities/technologies/OPC UA.md
- kb/entities/technologies/Python.md
- kb/entities/technologies/Rust.md
- kb/entities/technologies/Wine GE.md
- kb/entities/technologies/Wine-Staging.md
- kb/entities/technologies/acpi-cpufreq.md
- kb/entities/technologies/amd-pstate.md
- kb/entities/technologies/iii Engine.md
- kb/entities/tools/AUR.md
- kb/entities/tools/Act Runner.md
- kb/entities/tools/Agent Memory.md
- kb/entities/tools/Aura.md
- kb/entities/tools/Bottles.md
- kb/entities/tools/ChatGPT.md
- kb/entities/tools/Claude Code.md
- kb/entities/tools/Codex CLI.md
- kb/entities/tools/Dataview.md
- kb/entities/tools/GPG.md
- kb/entities/tools/GitHub Copilot.md
- kb/entities/tools/Gitea MCP Server.md
- kb/entities/tools/Lutris.md
- kb/entities/tools/Marp.md
- kb/entities/tools/Mistral Vibe.md
- kb/entities/tools/NotebookLM.md
- kb/entities/tools/Obsidian Web Clipper.md
- kb/entities/tools/Obsidian.md
- kb/entities/tools/OpenAI Codex.md
- kb/entities/tools/OpenCode.md
- kb/entities/tools/Pi.md
- kb/entities/tools/Proton.md
- kb/entities/tools/Steam.md
- kb/entities/tools/Wine.md
- kb/entities/tools/awesome-llm-wiki.md
- kb/entities/tools/farzaa gist.md
- kb/entities/tools/gdeploy.md
- kb/entities/tools/makepkg.md
- kb/entities/tools/pascalandy schema.md
- kb/entities/tools/qmd.md
- kb/entities/tools/wikitool.md
- kb/index.md
- kb/log.md
- raw/CONTRACT.md
- tools/CONTRACT.md
- tools/README.md
- tools/chemenu/api.py
- tools/chemenu/cli.py
- tools/chemenu/commands/confidence_decay.py
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/index_build.py
- tools/chemenu/commands/new_page.py
- tools/chemenu/commands/search.py
- tools/chemenu/commands/touch.py
- tools/chemenu/commands/version_cmd.py
- tools/chemenu/conventions.py
- tools/chemenu/corpus_diff.py
- tools/chemenu/frontmatter_io.py
- tools/chemenu/lint_core.py
- tools/chemenu/mcp/server.py
- tools/chemenu/page.py
- tools/chemenu/search/base.py
- tools/chemenu/search/filters.py
- tools/chemenu/search/ripgrep.py
- tools/chemenu/search/service.py
- tools/chemenu/search/types.py
- tools/chemenu/tests/conftest.py
- tools/chemenu/tests/test_api.py
- tools/chemenu/tests/test_confidence_decay.py
- tools/chemenu/tests/test_corpus_diff.py
- tools/chemenu/tests/test_docs_verify.py
- tools/chemenu/tests/test_frontmatter_io.py
- tools/chemenu/tests/test_index_build.py
- tools/chemenu/tests/test_kb_scan.py
- tools/chemenu/tests/test_lint.py
- tools/chemenu/tests/test_mcp_server.py
- tools/chemenu/tests/test_new_page.py
- tools/chemenu/tests/test_page_ops.py
- tools/chemenu/tests/test_provenance.py
- tools/chemenu/tests/test_raw_cmd.py
- tools/chemenu/tests/test_search.py
- tools/chemenu/tests/test_touch.py
- tools/chemenu/tests/test_type_resolver.py
- tools/chemenu/tests/test_version_cmd.py
- tools/chemenu/tests/test_xref.py
- tools/chemenu/version.py
- types/concept.md
- types/concept.schema.yaml
- types/entity.md
- types/entity.schema.yaml
- types/instruction.md
- types/type-spec.md
2026-09-10 19:51:48 +02:00

9.0 KiB

type, concept_type, tags, created, modified, related, sources, provenance, summary
type concept_type tags created modified related sources provenance summary
types/concept.md protocol
industrial
automation
communication
serial
2026-07-25 2026-08-29
see-also
E3DC
see-also
ha-core
see-also
Home Assistant
general Industrielles Kommunikationsprotokoll von 1979 zur Anbindung speicherprogrammierbarer Steuerungen und Geräte über serielle oder TCP-Netze.

Modbus

Typ: Protokoll (Kommunikationsprotokoll)

Definition

Modbus ist ein serielles Kommunikationsprotokoll, das 1979 von Modicon (jetzt Schneider Electric) veröffentlicht wurde und für die Verwendung mit seinen programmierbaren Steuerungsgeräten (PLCs) bestimmt ist. Es ist seitdem zu einem De-facto-Standard-Kommunikationsprotokoll in industriellen Umgebungen geworden und ist jetzt die am häufigsten verfügbare Mittel zum Verbinden industrieller elektronischer Geräte.

Kernpunkte

  • Offener Standard - Öffentlich verfügbar, keine Lizenzgebühren
  • Serielles Protokoll - Ursprünglich für serielle (RS-232/RS-485) Kommunikation konzipiert
  • Client-Server-Modell - Ein Master, mehrere Slaves (Geräte)
  • Einfaches Frame-Format - Leicht auf eingebetteten Geräten zu implementieren
  • Weit verbreitet - Wird in vielen Branchen und Gerätetypen verwendet

Varianten

Modbus RTU

  • Transport: Seriell (RS-232, RS-485)
  • Kodierung: Binär (RTU = Remote Terminal Unit)
  • Prüfsumme: CRC
  • Anwendungsfall: Industrielle Umgebungen, lange Entfernungen
  • Geschwindigkeit: Bis zu 115200 Baud
  • Entfernung: Bis zu 1200 Meter (RS-485)

Modbus ASCII

  • Transport: Seriell (RS-232, RS-485)
  • Kodierung: ASCII-Zeichen
  • Prüfsumme: LRC (Longitudinal Redundancy Check)
  • Anwendungsfall: Menschenlesbar, langsamer aber robuster in lauten Umgebungen
  • Geschwindigkeit: Langsamer als RTU aufgrund der ASCII-Kodierung

Modbus TCP

  • Transport: Ethernet TCP/IP
  • Kodierung: Wie Modbus RTU (binär)
  • Port: 502 (Standard)
  • Anwendungsfall: Moderne Netzwerke, Integration mit IT-Systemen
  • Adressierung: Verwendet IP-Adressen statt Slave-IDs
  • Vorteil: Keine serielle-zu-Ethernet-Konverter erforderlich

Modbus over TCP/IP (Modbus/TCP)

Wie Modbus TCP - die häufigste TCP-Variante.

Adressierung

Geräte-Adressierung

  • Slave ID: 1-247 (0 ist Broadcast, 248-255 sind reserviert)
  • TCP: IP-Adresse ersetzt Slave ID, aber Slave ID ist noch im Protokoll-Frame

Daten-Adressierung

Modbus organisiert Daten in vier primäre Tabellen:

Tabelle Code Beschreibung
Discrete Inputs 0x Schreibgeschützt, 1-Bit (digitale Eingänge)
Coils 01 Lesen-Schreiben, 1-Bit (digitale Ausgänge)
Input Registers 04 Schreibgeschützt, 16-Bit (analoge Eingänge)
Holding Registers 03 Lesen-Schreiben, 16-Bit (analoge Ausgänge, Konfiguration)

Hinweis: Adressen werden oft mit einem Präfix referenziert:

  • 0: oder I: für Input (Discrete Inputs, Input Registers)
  • 1: oder Q: für Output (Coils, Holding Registers)
  • 4: für Holding Registers (häufige Konvention)

Datentypen

Modbus überträgt 16-Bit-Werte. Größere Werte werden als mehrere Register übertragen:

Datentyp Register Byte-Reihenfolge
INT16 1 Big-Endian
UINT16 1 Big-Endian
INT32 2 Konfigurierbar
UINT32 2 Konfigurierbar
FLOAT32 2 IEEE 754, konfigurierbar
FLOAT64 4 IEEE 754, konfigurierbar

Byte-Reihenfolge (Endianness):

  • Big-Endian: Höchstwertiges Byte zuerst
  • Little-Endian: Niedrigstwertiges Byte zuerst
  • Wort-Reihenfolge: Hochwort zuerst oder Niedrigwort zuerst

Häufige Kombinationen: 1211 (Big-Endian-Wort, Big-Endian-Byte), 2143, 4321 usw.

Funktionscodes

Häufige Modbus-Funktionscodes:

Code Name Beschreibung
01 Read Coils Mehrere Coil-Status lesen
02 Read Discrete Inputs Mehrere diskrete Eingänge lesen
03 Read Holding Registers Mehrere Holding Registers lesen
04 Read Input Registers Mehrere Input Registers lesen
05 Write Single Coil Ein einzelnes Coil schreiben
06 Write Single Register Ein einzelnes Holding Register schreiben
07 Read Exception Status Gerätekennstatus lesen
08 Diagnostics Diagnose-Funktionen
15 Write Multiple Coils Mehrere Coil-Status schreiben
16 Write Multiple Registers Mehrere Holding Registers schreiben
17 Report Slave ID Slave ID und zusätzliche Informationen melden

Verwendung in Ihren Projekten

Basierend auf der Repository-Struktur wird Modbus wahrscheinlich verwendet von:

  • E3DC-Systeme stellen Modbus-TCP-Schnittstellen bereit
  • ha-core kann Modbus verwenden, um mit E3DC-Wechselrichtern zu kommunizieren
  • Home Assistant-Integrationen verwenden häufig Modbus zur Gerätekommunikation

Beispiel: Lesen von E3DC-Daten über Modbus TCP

# Python example using pymodbus
from pymodbus.client import ModbusTcpClient

client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()

# Read battery SOC (Holding Register 40000, assuming INT16)
response = client.read_holding_registers(0, 1, slave=1)
soc = response.registers[0]

print(f"Battery SOC: {soc}%")
client.close()
// Go example using a Modbus library
package main

import (
    "fmt"
    "github.com/goburrow/modbus"
)

func main() {
    handler := modbus.NewTCPClientHandler("192.168.1.100:502")
    handler.SlaveId = 1
    handler.Timeout = 5000 * time.Millisecond
    
    client := modbus.NewClient(handler)
    if err := client.Connect(); err != nil {
        panic(err)
    }
    defer client.Close()
    
    // Read holding register 0
    results, err := client.ReadHoldingRegisters(0, 1)
    if err != nil {
        panic(err)
    }
    
    fmt.Printf("Value: %d\n", results[0])
}

Häufige Probleme

  1. Endianness-Fehler - Daten erscheinen mit falschen Werten
  2. Register-Adressierung um Eins daneben - Verschiedene Hersteller verwenden unterschiedliche Adressierung
  3. Baud-Raten-Fehler - Für serielle Verbindungen
  4. Parität/Stop-Bits - Serielle Konfigurationsprobleme
  5. Slave-ID-Konflikte - Mehrere Geräte mit gleicher ID auf demselben Bus
  6. Timeout-Probleme - Gerät reagiert nicht innerhalb des Timeout-Zeitraums
  7. Byte-Reihenfolge-Verwirrung - Unterschiedliche Interpretationen von Register-Paaren

Best Practices

  1. Die Modbus-Map immer dokumentieren - Welche Register enthalten welche Daten
  2. Zuerst mit Modbus-Tools testen - Modbus Poll, QModMaster oder ähnliches verwenden
  3. Timeouts elegant verarbeiten - Geräte können vorübergehend nicht verfügbar sein
  4. Werte zwischenspeichern - Nicht zu häufig abfragen
  5. Daten validieren - Auf angemessene Bereiche prüfen
  6. Ordnungsgemäße Fehlerbehandlung verwenden - Nicht davon ausgehen, dass Lesevorgänge erfolgreich sind
  7. Endianness dokumentieren - Byte- und Wort-Reihenfolge angeben

Tools

  • Modbus Poll - Windows GUI-Tool zum Testen
  • QModMaster - Cross-Plattform-Modbus-Master
  • modbus-palette - Node-RED-Knoten für Modbus
  • pymodbus - Python-Bibliothek
  • goburrow/modbus - Go-Bibliothek
  • libmodbus - C-Bibliothek
  • Wireshark - Mit Modbus-Dissektor für Analyse

Wann Modbus zu verwenden

  • Verbindung zu industriellen Geräten (PLCs, Wechselrichter, Sensoren)
  • Wenn Ethernet oder Seriell verfügbar ist
  • Für einfache, zuverlässige Kommunikation
  • Wenn das Gerät Modbus nativ unterstützt

Wann Modbus NICHT zu verwenden

  • Wenn höherwertige Protokolle verfügbar sind (MQTT, HTTP REST)
  • Für komplexe Datenstrukturen
  • Wenn Sicherheit ein Problem ist (Modbus hat keine eingebaute Sicherheit)
  • Für Hochgeschwindigkeits-Datenübertragung mit hohem Volumen

Sicherheitsaspekte

Modbus hat keine eingebaute Sicherheit:

  • Keine Authentifizierung
  • Keine Verschlüsselung
  • Keine Integritätsprüfung

Abhilfemaßnahmen:

  • Auf isolierten Netzwerken verwenden (nicht dem Internet ausgesetzt)
  • VPNs oder Firewalls zum Einschränken des Zugriffs verwenden
  • Modbus Security (TLS) in Betracht ziehen, falls verfügbar
  • Netzwerksegmentierung verwenden

Leistung

  • Latenz: Normalerweise 10-100ms pro Anfrage
  • Durchsatz: 10-100 Anfragen/Sekunde (hängt vom Netzwerk und den Geräten ab)
  • Nachrichtengröße: Durch Protokoll begrenzt (normalerweise < 260 Bytes)

Verwandte Concepts

  • MQTT - Alternatives Protokoll für IoT/Industrie
  • OPC UA - Modernes Industrieprotokoll mit Sicherheit
  • Industrial-Automation-Konzept

Historie

  • [1979] - Ursprünglich von Modicon veröffentlicht
  • [2004] - Modbus IDA (Modbus Industrial Automation) gegründet
  • [2006] - Modbus/TCP-Spezifikation veröffentlicht
  • [2007] - Modbus-Organisation gegründet
  • [2026-07-25] - Concept-Seite erstellt

Siehe auch

Beziehungen