Zurück zur Startseite

APCS-Emulation: Modbus RTU-Controller

Der Artikel beschreibt die Entwicklung eines Software-Emulators für APCS mit Delphi, der Modbus RTU, MDVV und Wägecontroller emuliert. Umfasst Architektur, Integration mit Befehlswarteschlangen und Vorteile für Tests. Geeignet für Middle-/Senior-Entwickler industrieller Systeme.

APCS-Emulator: vom Steuerpult zum Delphi-Code
Advertisement 728x90

Software-Emulation von Steuerungen in SCADA-Systemen für Tests

Die Entwicklung von Software für Überwachungs- und Datenakquisitionssysteme (SCADA) erfordert eine gründliche Prüfung der Interaktionen zwischen Geräten, Sensoren und Steuerungen. Traditionelle physische Inbetriebnahmepanele mit Schaltern und Lastzellen konnten nur einfache Szenarien simulieren, waren aber durch ihre Tragfähigkeit (bis zu 30 kg) begrenzt und konnten parallele Prozesse nicht vollständig nachbilden. Der Übergang zur Software-Emulation mittels Delphi beseitigte diese Einschränkungen und ermöglichte eine präzise Simulation von Modbus-RTU-Kommunikation sowie des Verhaltens von Eingangs-/Ausgangsmodulen.

Der Emulator ist als Gerätekonfigurator aufgebaut: Benutzer fügen Steuerungen hinzu, weisen RS-485-Adressen zu und legen Eingänge/Ausgänge zu. Er unterstützt alle Geräteversionen, einschließlich Not-Aus-Taster zur Simulation von Kommunikationsausfällen.

Emulator-Architektur

Das Hauptfenster des Emulators zeigt eine Liste der Geräte mit Statusanzeigen. Bei Waage-Steuerungen sind folgende Funktionen verfügbar:

Google AdInline article slot
  • Ein Schieberegler zur Anpassung des Gewichts ohne physische Grenzen.
  • Manuelle Einstellung von Parametern und Zustandswechsel.
  • Ein Umschalter zwischen manuellem und automatischem Modus mit zufälligen Gewichtszunahmen für realistische Batching-Szenarien.

I/O-Module ermöglichen manuelles Ein- und Ausschalten. Im automatischen Modus emulieren sie das reale Dosieren von Materialien (Zement, Aggregat, Wasser).

Die Integration in die Hauptanwendung ist minimal: Die Compiler-Direktive $IF Emulate=True leitet Aufrufe von ComPort.Write auf Emulator.Send um.

{$IF Emulate=True}
Emulator.Send(EmulData, FWaitingTime);
{$ELSE}
ComPort.Write(OutDIOM, 11, @InDIOM, 8);
ComPort.Wait(FWaitingTime);
{$IFEND}

Änderungen sind auf das Kommunikationsmodul beschränkt – Modbus-RTU-Befehle bleiben unverändert, und Antworten folgen streng den Spezifikationen.

Google AdInline article slot

Kommunikation und Befehlswarteschlangen

Die Kommunikation folgt einem "Befehl"-Muster mit mehreren Warteschlangen zur Parallelisierung:

  • Kontinuierliches Lesen des Steuerungszustands (auch während Ruhephasen).
  • Lesen der Eingänge/Ausgänge von I/O-Modulen zur Überwachung.
  • Senden von Befehlen (höchste Priorität: Batching starten, Motor aktivieren).

Ein kontinuierlicher Fluss verwalte die Warteschlangen. Lese-Warteschlangen füllen sich bis zu einem Schwellenwert, während hochprioritäre Befehle des Bedieners an den Anfang eingefügt werden. Befehle werden dynamisch basierend auf aktuellem und erwartetem Gerätestatus generiert.

Beispiel: Auf einer Betonanlage laufen drei oder mehr Batching-Vorgänge parallel (Einstellung, Gewichtszuweisung, Start). Auf einer Zementanlage erfolgen sequenzielle Zustandsprüfungen vor jedem neuen Befehl.

Google AdInline article slot

Warteschlangenanzeigen werden rot, wenn die Kommunikation unterbrochen ist. Verzögerungen über 10 I/O-Module (20 ms pro Anfrage) führen zu einer Gesamtzykluszeit von etwa 400 ms plus Steuerungspolling, was insgesamt etwa 1 Sekunde Antwortzeit ergibt – dies wird in der Benutzeroberfläche berücksichtigt, um falsche Fehlermeldungen zu vermeiden.

Vorteile der Software-Emulation

  • Vollständige Szenariosimulation: Ausfälle, Verstopfungen, paralleles Batching – alles ohne physische Hardware.
  • Konfigurationsspeicherung/Ladung speziell für einzelne Anlagen.
  • Erweiterbarkeit: Neue Geräte hinzufügen erfordert nur die Einhaltung von Modbus- und Steuerungsspezifikationen.
  • Schnellere Inbetriebnahme: Weniger unvorhersehbare Fehler vor Ort.

Der Emulator läuft auf älteren Windows XP/7-Anwendungen und ermöglicht komplexe Prozessprüfungen ohne Ausfallzeiten oder Beschädigungsrisiko.

Wichtige Erkenntnisse

  • Die Emulation bewahrt die Genauigkeit von Modbus RTU und minimiert Änderungen am Kerncode.
  • Der automatische Modus beinhaltet zufälliges Dosieren für realistische Testbedingungen.
  • Mehrere Befehlswarteschlangen ermöglichen parallele Ausführung ohne Blockierung.
  • Einfachheit: Nach Verständnis des Protokolls und der Gerätedokumentation leicht zu erlernen.
  • Kosteneinsparungen: Keine physischen Panels nötig, schnellere Entwicklung und Debugging.

— Editorial Team

Advertisement 728x90

Weiterlesen