Guten Morgen, nachdem ich seit Jahren begeistert eure Beiträge lese muss ich mich heute mit meiner ersten Frage an euch wenden, in der Hoffnung, dass ich ein bisschen Input / Gedankenanregungen von euch bekommen kann. Ich habe mit einem STM32F103 folgendes für eine Applikation schon realisiert. STM32 spielt Modbus RTU Slave und erhält über UART RS485 (Modbus) Steuerbefehle. Diese setzt er intern um, bzw. steuert einzelne digitale I/Os und gibt auch entsprechende Antwort auf der Modbsu RTU Leitung an den Master zurück. Diese oben beschriebene Elektronik hat noch DIP Schalter zur Einstellung der jeweiligen Slave Adresse. (Konkret geht es darum, dass ein Modbus Master viele versch. Klimaanlagen in einem Hotelgebäude über Modbus ansteuern kann) Aktuell sitzen ca 40 dieser Geräte in einem Modbus Netz, ein Modbus Master sendet die Steuerbefehle an die jeweiligen Slaves und diese setzen die Steuerbefehle (kühlen, heizen, Lüfterstufen etc.) um. Eingangssignale an den Slave über UART Interrupt im µC, Steuerbefehle an den Master über Sendebefehle aus der HAL Die einzelnen Modbus Header und Steuerbefehle konnte ich alle umsetzen und an sich läuft das System nun seit 6 Monaten sehr gut. Die neue Applikation sieht vor, dass GENAU DIE GLEICHEN FUNKTIONALITÄTEN nun über Modbus TCP realisiert werden sollen. Also 1 Modbus TCP Master sendet an die Slaves eben die gleichen Steuerbefehle und Abfragen (Heizen/Kühlen/Lüfterstufen/Fehlerabfragen/Betriebsstundenabfragen etc. etc) Und genau da liegt mein Problem: Ich habe mit div. STM32 Prozessoren unter Zuhilfenahme von CubeMX und Cube IDE schon diverse Kommunikationen realisiert (USB über VCP, I2C, SPI, RS485 etc.) aber noch NIE etwas mit ETH/TCP zu tun gehabt. Habe schon gesehen, dass der STM32F107VCT6 schon "Ethernet" mit an Bord hat, aber ich habe keinerlei Ahnung wie ich hier anfangen soll. Bietet die HAL hier etwas "fertiges"? Hat irgend jemand die "ersten Schritte" diesbezüglich für mich und kann mir evtl. sogar sagen wie groß der Aufwand ist so etwas zu portieren bzw. wie die Vorgehensweise hier ist? Für jede ernst gemeinte Antwort bin ich überaus dankbar
Für eine schnelle Lösung mit möglichst vielen "Fertigbauteilen" könntest du dir überlegen, das Arduino-Framework einzusetzen. Ethernet sollte damit erschlagen sein: https://github.com/stm32duino/Arduino_Core_STM32/wiki/STM32Ethernet und für Modbus/TCP: https://github.com/eModbus/eModbus Wenn es auch Modbus/TCP über WLan sein darf gäb's noch die "No Code" Lösung, die aber etwas Hardware erfordert: Du lässt deinen STM32 wie er ist (nimmt aber u.U. den RS485 Transciever weg) Du bastelst einen ESP32 dazu (ESP32C3 reicht) und spielst diese Software auf: https://github.com/zivillian/esp32-modbus-gateway dann mit RX/TX direkt an den STM32, fertig. Oder, je nach Gegebenheit, einen ESP32 für jeweils ein ganzes RS485-Segment, z.B. Stockwerk, je nachdem wie die Kabel liegen. Wenn WLan zu wackelig ist: ein Fork des modbus-gateway-Projekts läuft auch mit Ethernet...
Hallo, ich habe gute Erfahrungen mit einem STM32H7 und den entsprechenden Beispielen gemacht. Das ging fast out-of-the-box mit der CubeIDE. Hier gibt es genügend Beispiele. ModbusTCP ist ja was on-top, bei ST wird der LwIP Stack verwendet. Jetzt ist jede CPU-Familie etwas eigen, da musst du dich mit dem Datenblatt auseinander setzen. Was ich mich frage ist, warum nicht eben nur ein Master Gerät angebunden wird - das restliche Netzwerk bleibt wie es ist. Da könntest du auch eventuell was fertiges nehmen als Gateway.
Hallo, danke für die Antworten. Warum kein Gateway? Das restliche Netzwerk so erhalten wie es ist? Ganz klar: Alle alten Installationen zielen auf Modbus RTU, für NEUE Installationen an NEUEN Gebäuden ist Modbus TCP vorgesehen. Keine Ahnung warum :-( Hättest du für den STM32H7 ein konkretes Beispiel? Da ich mit der Hal arbeite habe ich natürlich keine Ahnung wie ich cpp (c plus plus Dateien des Arduino) sinnvoll einbinden könnte. Was ich bräuchte wäre echt so eine "Anleitung für Dumme", die mir zeigt was ich in der CubeMX wie einstellen muss und die mir auch ein Softwarebeispiel gibt.
Wähle einfach mal das STM32h743-eval oder 735 oder so Board aus in der Cube-IDE und klick dich mal bei den Beispielen durch. Generell kannst und solltest du: -das Freertos mit-konfigurieren -den LWIP Stack mit-konfigurieren Ich weiß jetzt nich genau, ob da die ioc Files bei den Beipspielen IMMER mit dabei sind. Dort wird eben auch die Middleware konfiguriert. Aber das wäre so der Anfang. Den Rest musst du selbst machen. Oder habt ihr Budget über für einen Externen? (Zwinker, Zwinker...)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.