Hallo, Ich versuche, dass mein Mega2560 mit meinem Smart-Meter über Modbus spricht. Das Smart-Meter ist der Master und sendet mir folgendes: 02 03 00 01 00 01 D5 F9 Sagt mir, er möchte ein analoges Register vom Slave mit Adresse 2 auslesen, beginnend bei Register 1. Ich sende dem Master folgendes zurück: 02 03 02 00 64 FD AF Slave 2 antwortet auf analoge Registerabfrage, 2 Bytes werden kommen, 16-bit Wert '100' und den CRC. Nach einem online Parser ist meine Antwort stimmig, aber passt sie wirklich zu der Frage des Masters? Bisher zeigt er mir gar nichts an und mir fehlen langsam die Ideen. Ich nutze eine der internen UART Schnittstellen. Muss ich nach Abschluss der Sequenz ein CR schicken? Morgen möchte ich mal mit dem Oszi schauen, ob mein Max485 überhaupt sendet. Tim
Tim schrieb: > mit meinem Smart-Meter über Modbus spricht. Das Smart-Meter ist Wie gut, dass es nur eines gibt https://bg-etech.de/Bedienungsanleitungen.html Immerhin gibt es einen Standard, aber bei ModbusRTU ist der Zähler ein Slave
Tim schrieb: > passt sie > wirklich zu der Frage des Masters? Bisher zeigt er mir gar nichts an und > mir fehlen langsam die Ideen. > > Ich nutze eine der internen UART Schnittstellen. Muss ich nach Abschluss > der Sequenz ein CR schicken? imho passen request und response zusammen. Nein, Modbus-RTU schließt nicht mit "CR" ab. Was ich an deiner Stelle prüfen würde a) mit einem USB-RS485 Wandler am Bus mithorchen ob dein Slave wirklich diese Daten am Bus sendet. MAX485 und besonders auch DE/RE richtig angeschlossen und angesteuert? b) mit einem Modbus-Progrämmchen am PC den Request senden und prüfen ob der Slave antwortet
> MAX485 und besonders auch DE/RE richtig > angeschlossen und angesteuert? Das ist immer der Moment wo Programmiere auf Hardware treffen und lernen das Buffer auch mal schlecht sein koennen. :-D Olaf
Olaf schrieb: > Das ist immer der Moment wo Programmiere auf Hardware treffen und lernen > das Buffer auch mal schlecht sein koennen. :-D Hä? Man muss nur das richtige Event zur Steuerung des DE/RE-Pins verwenden. AVR liefern das TXC-Flag, wenn der (Hardware-)Buffer komplett verschickt wurde. Damit kann man dann die Datenrichtung des Transceivers umschalten. Das hat rein gar nichts mit einer Pufferproblematik zu tun.
Die Deoversion von Simply Modbus ist gut zum Testen. www.simplymodbus.ca
Hallo, ich habe dieses Programm genutzt um mit dem Auslesen meines Modbus-Zählers zu starten. Dann auf einem ATmega implementiert. Der Zähler ist ein Slave und wird abgefragt.
> Man muss nur das richtige Event zur Steuerung des DE/RE-Pins verwenden.
Aber Leute die nur programmieren und nichts mit Hardware machen
haben das oft nicht auf dem Schirm.
Und ich hatte auch schonmal einen Mikrocontroller der hat das
entsprechende Flag schon weggenommen wenn vom letzten Bit erst 2/3
ausgegeben waren. Das hat dann oft funktioniert, gelegentlich auch mal
nicht. Je nach Mondphase und Umgebungstemperatur.
Jedenfalls einmal unseren schnieken Oszi dranhalten und genau darauf
achten was auf dem Bus laeuft kann nicht schaden.
Olaf
Tim schrieb: > Nach einem online Parser ist meine Antwort stimmig, aber passt sie > wirklich zu der Frage des Masters? Bisher zeigt er mir gar nichts an und > mir fehlen langsam die Ideen. Hast Du das hier gelesen und auch verstanden? https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf Da steht auf Seite 13, dass zwischen zwei Bytes einer Message nicht mehr als 1.5 Zeichen Pause sein dürfen. Ansonsten wird das Paket als unvollständig verworfen. Zwischen zwei Paketen müssen mindestens 3.5 Zeichen Pause sein. "n Zeichen Pause" ist der Zeitraum, in dem n Zeichen gesendet werden, also 1 Startbit, 8 Datenbits, 0 oder 1 Parity Bit, 1, 1.5 oder 2 Stopbits mit der voreingestellten Baudrate. Wenn Du hier das Timing nicht einhältst, dann sind Probleme garantiert. > Ich nutze eine der internen UART Schnittstellen. Muss ich nach Abschluss > der Sequenz ein CR schicken? Lies gefälligst die originalen(!) Modbus-Spezifikationen unter modbus.org. https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf sowie die oben verlinkte Spezifikation für die serielle Übertragung. Da steht alles drin. fchk
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.