S: Modbus Slave Library

Hat wer eine Empfehlung für eine bestimmte Modbus Slave Library für RS485/RTU?
Der Slave wird ein Mega (während der Entwicklung) und final dann ein UNO/NANO.

Als Master Library werde ich vermutlich die ModbusMaster verwenden.

Ich bräuchte auf alle Fälle eine Slave Library die auch Function 16 (preset/write multiple holding registers) unterstützt.
Auch will ich die Serielle (egal ob HW oder Soft) übergeben können.
Und es soll ein paar vernünftige RTU Slave Beispiele dabei sein.

habe mir einige angesehen - aber beispielsweise die gefallen mir nicht:
die "originale" Arduino Modbus Library
die modbus-esp8266

Wenns sonst nichts gibt, gehe ich auf die SimpleModbusSlave ... aber deren Nachteil ist halt dass sie seit 6 Jahren nicht mehr gewartet wurde.

Was würdet ihr verwenden und weswegen würde ihr mir diese empfehlen?

Meine Modbus-Library eModbus ist zwar nur für ESP32 und ESP8266, ich habe mir aber für eigene Zwecke einen Server (sagt man jetzt zu Slave, wg. PC...) für den Nano geschrieben. Wenn Du Interesse hast, sag' Bescheid.

Slave - "Server" im Sinne, als dieser auf Meldungen von anderen reagiert.

Funktion 3 zum Auslesen von n Werte
Funktion 6 zum Setzen eines Wertes
aber auch
Funktion 16, der ich bis zu sagen wir 30 uint16_t übergeben können sollte und vieleicht am Ende einer Übertragung einen eigenen Callback definieren könnte damit ich eine Aktion starten könnte.

Wenn die Register nicht zwangsweise alle hintereinander sein müssen wäre es mir sehr recht (das verlangt aktuell nämlich die SimpleModbusSlave10).

@Miq1 also wenn du mir mal deinen Slave zeigen würdest - käme mir das sehr entgegen.

Ansonsten patche ich die SimpleModbusSlave.
Muss mich erst einlesen was ich bei der GPL3.0 darf oder nicht darf...

Klar - schau mal hier, da haben wir ihn gerade mal wieder benutzt.

1 Like

hast die

#include "Logging.h"

auch noch irgendwo?
Und sehe ich das Richtig, du hast einfach 256 byte "Speicher" die sich dann als Register auslesen lassen?

// MODBUS memory 
#define MEMSIZE 256
uint8_t data[MEMSIZE];

Die Logging.h gehört zur eigentlichen eModbus-Library und wird hier nicht gebraucht - kannst du rausschmeißen. Genau wie die Kommentare zum "Nano D0" und der I2C-Verbindung dahin. :grin:

Das Ding ist ein Werkzeug und wurde schon diverse Male in anderem Zusammenhang eingesetzt, deswegen sind diese Relikte drin.

Und ja, in der Form ist es ein Testserver, der reproduzierbare Ergebnisse liefert. Du müsstest den Testspeicher durch deine eigene Anwendung ersetzen. Der Rahmen - das Modbus-Handling - bleibt ja gleich.