Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ich lese meinen Wasserzähler über eine Logik aus. Dazu gibt es ein China Modul und ein Python Modul das man sich installieren kann.
Das bei mir ist aber MBus nicht Modbus
Im Grunde gibt es keine 'Standard Modbus' Geräte. Modbus ist ein Protokoll und definiert:
dass es adressierbare Geräte gibt (8 oder 16 Bit-Adressierung: 1...256 oder 65.536 gleichzeitige Geräte - Achtung, einzelne Adressen in den oberen Bereichen sind oft reserviert, z.B. für Broadcasts),
dass es in diesen Geräten numerierte Speicherplätze gibt, in denen 16-bit-Werte (Register) oder Statusinformationen (Einzelbits=Coils) abgelegt sind,
wie diese Speicherplätze gelesen und beschrieben werden können (Funktionscodes 1-15),
wie die Datenpakete für das Auslesen und Beschreiben sowie die zugehörigen Antworten inhaltlich aufgebaut sind.
WAS in welchem Coil oder Register steht, definiert Modbus nicht. Bei einem Gerät steht an derselben Speicherstelle0815 die Außentemperatur, beim nächsten der aktuelle Puls des Patienten, beim Dritten die Netzfrequenz, und beim vierten in ASCII der erste Buchstabe der Herstellerbezeichnung des Gerätes.
Extrembeispiel: Register 40815 - 40817 auf einem Trovis Heizungsregler enthalten den aktuellen Zählerstand des ersten von bis zu sechs gleichzeitig möglichen, per MBus angeschlossenen Wärmemengenzählern (bitte nicht MBus und Modbus durcheinanderbringen, das sind völlig verschiedene Dinge). Bei der Implementierung muss ich folgendes wissen:
Zählerstand = Tausenderstellen + Einerstellen + Nachkommastellen
Zählerstand = (#40815 x 10^4) + (#40816 x 10^0) + (#40817 x 10^-3)
Ich kann zwar alle drei Register einzeln für sich auslesen, bekomme dabei aber keinen einzigen plausiblen Wert, sofern ich die zugehörige Berechnungsformel nicht kenne oder ich gar nicht weiss, dass ich diese 3 Register mathematisch auswerten und addieren muss - z.B. weil der Hersteller dazu keine Informationen gegeben hat (leider oft der Fall).
Daher ist es wichtig, sich Listen der Register und Coils der Geräte zu besorgen, denn die sind immer gerätespezifisch. shNG hat meines Wissen eine Art Standard-Modbus Plugin, das die oben genannten 4 Punkte des Protokolls implementiert (die Bezeichnung 'Standard' führt leider etwas in die Irre, siehe oben - denn die entsprechenden Items für das konkrete Gerät müssen anhand der Register- und Coils-Listen der Hersteller immer noch selbst definiert werden, sofern das nicht schon jemand anderes für dieses konkrete Gerät getan hat).
WIE die Daten technisch zu übertragen sind (also über welche Schnittstelle und über was für ein Verkabelungssystem), definiert Modbus übrigens ebenfalls nicht:
Geschwindigkeit zwischen Master und Client 9.600/19.200/115.200,
6, 7 oder 8-bit-Übertragung, Parität, Anzahl Start-Stopbits, XON/XOFF (wie z.B. das bekannte 8N1) usw.
Das ist Herstellersache und somit für jedes Gerät ebenfalls herauszufinden. Deine 2-Draht Verbindung liefert aber einen Hinweis auf RS485. Bei sehr langen Leitungen sind aus Impedanz-/Pegelgründen die bereits genannten Endwiderstände am Ende von RS485-Leitungen notwendig (wie ganz früher bei 10-MBit-Coax-LAN). Wenn Deine beiden Geräte RS485 mit gleicher Geschwindigkeit, Parität etc bieten, kannst Du die sogar über ein gemeinsames Kabel über denselben Modbus Master anbinden; die werden dann eben nur unterschiedlich adressiert.
Weitere Infos bei Interesse hier in diesem Projekt, da hab ich im Anhang mal die wichtigsten Basics zusammengeschrieben. Es wird auch gezeigt, wie man ein serielles Modbus-RTU-Gerät per Adapter auf Modbus TCP umrüstet, und es gibt einen Link auf ein Projekt, in dem Masifi's Modbus RTU-KNX-Adapter (ebenfalls RS485) zur Direktanbindung eines Heizungsreglers an KNX verwendet wird.
Hoffe, das hilft Dir weiter.
/tom
Zuletzt geändert von Tom Bombadil; 14.01.2023, 16:43.
Dann solltest Du oben Deinen Titel von ModBus in MBus ändern. Wie geschrieben geht es bei mir den Wasserzähler auszulesen. Code habe ich DIr per PN geschickt. Ob das über einen Wireless Adapter geht, kann ich Dir nicht sagen.
Für den Zähler welchen wir hier im Einsatz haben gibt es noch einen Impuls Ausgang. Jedoch hätte ich gerne ein Paar mehr Informationen wie z.B Durchfluss, Spitzendurchfluss Tag, Zählerstand
Von Impulszählern bin ich ganz ab. Das fällt mal der Bus aus, mal wird was neu gestartet und hier und da fehlt ein Impuls, andauernd muss man die Zähler visuell mit den gespeicherten Daten abgleichen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar