Forum: Mikrocontroller und Digitale Elektronik Modbus RTU Lib für STM32


von Mein_erstes_Mal (peter_s158)


Lesenswert?

Hallo,
ich suche eine kleine einfache Lib um einen Modbus Slave zu 
implementieren.
Würde auch was komerzielles nehmen.

Danke für eure Hilfe

von Frank K. (fchk)


Lesenswert?

https://libmodbus.org/
(sehr verbreitet, gut getestet, ist aber eher für Posix API wie Linux)

https://github.com/alejoseb/Modbus-STM32-HAL-FreeRTOS
https://github.com/urands/stModbus
https://github.com/kiltum/modbus
https://github.com/eziya/STM32_HAL_FREEMODBUS_RTU
(speziell für STM32, keine Ahnung wie gut die sind)

fchk

von Harald K. (kirnbichler)


Lesenswert?

https://github.com/cwalter-at/freemodbus

In C geschrieben, kann RTU, ASCII und TCP, Adaptionen für diverse 
Controller (verschiedene ARMe, AVR, MSP430) und auch Betriebssysteme 
(Windows/Linux).

Nicht der schönste Sourcecode, aber funktional.

von Mein_erstes_Mal (peter_s158)


Lesenswert?

Danke für die Beispiele.


Harald K. schrieb:
> https://github.com/cwalter-at/freemodbus
>
> In C geschrieben, kann RTU, ASCII und TCP, Adaptionen für diverse
> Controller (verschiedene ARMe, AVR, MSP430) und auch Betriebssysteme
> (Windows/Linux).
>
> Nicht der schönste Sourcecode, aber funktional.

Glaube das diese am einfachsten zu portieren ist.
Die St spezifischen haben alle FreeRtos und das brauche ich nicht.

Sollte jemand noch andere kennen bitte immer her damit.
Danke und schönen Abend

von Mein_erstes_Mal (peter_s158)


Lesenswert?

Hat jemand ein lauffähiges Beispiel ohne FreeRtos?
Würde mir sehr helfen Danke

von Harald K. (kirnbichler)


Lesenswert?

Mein_erstes_Mal schrieb:
> Hat jemand ein lauffähiges Beispiel ohne FreeRtos?

Such Dir hier eines aus:

https://github.com/cwalter-at/freemodbus/tree/master/demo

Die Beispiele für AVR, MSP430, Atsam3s, hc8, bare, lpc214x etc. nutzen 
alle kein FreeRTOS.

Und wenn Du sehen willst, wo die Unterschiede zwischen FreeRTOS und 
nicht-FreeRTOS liegen, mach ein Diff auf atsam3s und atsam3s_freertos

Interessant sind nur die Dateien im Verzeichnis port - da geschieht die 
Anpassung an die jeweils verwendete serielle Schnittstelle.

von Mein_erstes_Mal (peter_s158)


Lesenswert?

Harald K. schrieb:
> Interessant sind nur die Dateien im Verzeichnis port - da geschieht die
> Anpassung an die jeweils verwendete serielle Schnittstelle.

Hallo, ja, das bestehende Projekt ist mit der HAL gemacht.
Und ich weiß leider nicht wie ich jetzt das ganze verheiratet bekomme.

von Harald K. (kirnbichler)


Lesenswert?

Nun, das bestehende Projekt wird ja wohl irgendwo irgendwelche 
Funktionen haben, über die es mit der seriellen Schnittstelle redet.

Oder tut es das noch gar nicht? Dann wirst Du herausfinden, wie Du das 
mit der HAL machst, und das in dem Portierungslayer verwenden. Es gibt 
da ein Beispiel namens "bare", das enthält gar nichts µC-spezifisches, 
sondern nur ein Grundgerüst, in das Du Deine entsprechenden 
HAL-Funktionen reinpacken musst.

Sieh Dir beispielsweise demo/bare/port/portserial.c an. Da gibt es die 
Funktionen xMBPortSerialPutByte und xMBPortSerialGetByte. Die Namen sind 
doch recht selbsterklärend, oder?

Als ersten Schritt solltest Du Dir vielleicht die doxygen-Dokumentation 
bauen, dazu musst Du nur das (sogar im Verzeichnis tools mitgelieferte) 
doxygen auf doc/doxygen.conf loslassen, und erhältst eine Latte von 
HTML-Dateien.

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
Noch kein Account? Hier anmelden.