kk logo

  • Netzwerk-Grundlage: Die LOGO! benötigt eine feste IP-Adresse.
  • Verbindung einrichten: In LOGO!Soft unter Ethernet-Verbindungen eine neue Serververbindung (Modbus) hinzufügen.
  • Port & Berechtigungen: Der Port muss auf den Modbus-Standard 502 eingestellt sein. Der Haken bei "Alle Verbindungsanfragen Serverseite annehmen" zwingend setzen, damit der ESP32 zugreifen darf.
  • Datenübertragungstabelle: Diese bleibt im Dialogfeld komplett leer. Die LOGO! ordnet als Server ihren internen VM-Speicher (Variablenspeicher) automatisch den Modbus-Standardadressen zu (z. B. V0.0 = Coil 0).
  • Signale empfangen (ESP32 schaltet LOGO!): Im Schaltplan einen Netzwerkeingang (NI) platzieren, in den Eigenschaften auf Lokaler VM stellen und die Adresse V0.0 (entspricht Modbus Coil 0) zuweisen. Dieser Baustein wird direkt mit dem gewünschten Hardware-Ausgang (z. B. Q1) verbunden.
  • Signale senden (LOGO! meldet an ESP32): Im Schaltplan einen Netzwerkausgang (NQ) platzieren, auf Lokaler VM stellen und die Adresse V0.1 (entspricht Modbus Coil 1) zuweisen. Ein Hardware-Eingang (z. B. I1) wird direkt an diesen NQ angeschlossen.
  • Betrieb: Das Programm auf die Steuerung laden und die LOGO! in den RUN-Modus versetzen, damit sie auf Anfragen lauscht.

ESP32 (Client-Rolle / Aktiver Controller)

  • Netzwerk-Grundlage: Der ESP32 baut eine WLAN-Verbindung auf und bekommt eine feste IP (hier: 192.168.0.222). In deiner LogicKiste übernimmt das der bestehende Web-Dashboard-Block im Hintergrund.
  • Bibliothek & Setup: Die Bibliothek <ModbusIP_ESP8266.h> (von A. Emelianov) wird eingebunden. Im setup() wird das Modbus-Objekt per mb.client() als aktiver Master deklariert, der das Netzwerk steuert.
  • Verbindungsaufbau (Loop): Im loop() wird durchgehend mb.task() aufgerufen, um Modbus-Prozesse abzuarbeiten. Eine if-Abfrage prüft, ob die Verbindung zur LOGO! (logoIP) steht, und baut sie bei Bedarf über Port 502 automatisch neu auf (mb.connect(logoIP, 502)).
  • Schreiben (Taster → LOGO!): Der ESP32 wertet den Zustand des Tasters über eine Flankenerkennung aus (um das Netzwerk nicht mit Daten zu fluten). Ändert sich der Zustand, sendet der Befehl mb.writeCoil(logoIP, 0, state) den Wert an Coil 0. Das schaltet verzögerungsfrei den zugeordneten Netzwerkeingang (V0.0) in der LOGO!.
  • Lesen (LOGO! → LED): Der ESP32 ruft zyklisch (z. B. alle 100 ms) den Befehl mb.readCoil(logoIP, 1, &logoM2State, 1, cbReadLogo) auf, um Coil 1 (V0.1) der LOGO! abzufragen. Die Bibliothek speichert das Ergebnis (true/false) automatisch in der Variablen logoM2State.
  • Hardware schalten: Der ESP32 nutzt den Wert aus logoM2State, um über digitalWrite(LED_PIN, logoM2State) die physische LED passend zum Eingangssignal der LOGO! ein- oder auszuschalten.

 

Um dir nun die passenden Blöcke und C++ Generatoren für LogicKiste zu schreiben: Soll ich den Code exakt auf die in deinem ESP-Sketch verwendete Bibliothek (ModbusIP_ESP8266.h) zuschneiden und möchtest du für die LOGO-Adressen (V0.0 etc.) lieber ein direktes Texteingabefeld oder zwei getrennte Zahlenfelder für Byte und Bit?

Der ESP Code

 

 

Ronnie

schwäbischer tüftler und bastler, kraftsportler, neurodivers, 45 Jahre, 1 Frau, 5 Kinder und 1003 Ideen. 

1.2 ronnie berzins

logickiste

Blockly für Arduino: Grafische Programmierung als echtes C++ Werkzeug
für deine eigenen, kreativen Projekte und Ideen auf hohem Niveau.

https://www.logickiste.de/

blockly for arduino