Ich habe ein Gerät (ein Energiezähler), das Daten über RS-485 (Modbus-Protokoll) sendet. Und ich möchte es mit MCU sammeln. Das Wichtigste ist, dass ich versuche, ein Board zu entwerfen, und ich möchte, dass es skalierbar ist. Das heißt, ich habe möglicherweise 1 Gerät angeschlossen oder vielleicht 2 oder 3 Geräte (mit unterschiedlichen Slave-IDs). Ich habe folgende Fragen:
Vielen Dank im Voraus!
Ja, offensichtlich brauchen Sie einen UART. Dein Fahrer sieht auch okay aus. Ein UART ist genug. Versuchen Sie nicht, Ihr Projekt zu erstellen, wenn Sie mit Begriffen wie: Bussystem, RS485, Physical Layer, UART, RS232, Halbduplex, Master-Slave-Topologie, Bus-Arbitrierung nicht vertraut sind. Damit verstehen Sie, was ein Bussystem ist und wie mehrere Geräte an einer Leitung funktionieren. Ein guter Ausgangspunkt sind Anwendungshinweise von einigen RS485-Anbietern und Tutorials, zum Beispiel dieses .
Persönlich habe ich den ST3485 verwendet, der hier einen Anwendungshinweis enthält, der einige grundlegende Dinge erklärt, aber Sie können die gleichen Informationen auch von allen anderen Anbietern finden.
Für Ihre Firmware- und Protocool-Entschlüsselung gibt es viele Bibliotheken da draußen. Zunächst müssen Sie wissen, ob Sie ein Master- oder ein Slave-Gerät bauen möchten. Für alle oben genannten Punkte gilt: Google ist dein Freund. Aber damit Google das Richtige findet, müssen Sie die Terminologie kennen (was zu suchen ist)!
Wenn es sich um MODBUS-RTU handelt, sollten Sie sich frühzeitig Gedanken über die Hardware machen. Das MODBUS-RTU-Protokoll hat eine 3-1/2-Zeichen-MARK-Bedingung, um START/END anzuzeigen, was ein gewöhnlicher UART möglicherweise nicht unterstützt.
Bei MODBUS ASCII gibt es dieses Problem nicht – der Doppelpunkt und CR/LF werden als Trennzeichen verwendet. Der Nachteil ist natürlich, dass es viel langsamer ist.
Tut