Hallo zusammen,
ich habe mir den Wasserstandssensor HDL300
(4-20mA Output 5m Water Liquid Level Transmitter Sensor Hdl 300 - China Water Level Sensor and Level Sensor) gekauft. Wenn schon digitale Auswertung,so dachte ich mir, dann soll der Sensor auch ein digitales Signal abgeben und habe also die RS485-Version erworben und nicht die mit dem Spannungsausgang oder die mit dem Stromausgang. Mittlerweile denke ich, dass ich es mit denen leichter gehabt hätte, denn die Sensordaten aus der RS485-Version herauszukitzeln, will mir nicht gelingen.
Folgender Aufbau:
Spannungsversorgung 24V=, + an den roten Draht des Sensors, - an den gelben.
A und B (grün und blau) an die A/B-Klemmen eines fertigen (Eckstein) "MAX485 Module TTL Switch".
Seriell-USB-Adapter: Rx an Di des MAX-485-Moduls, Tx an Ro, umgekehrte Variante auch probiert.
Ergebnis im Terminal: nichts...
Auf meine Anfrage beim Hersteller wurde mir ein Blatt geschickt "Modbus level transmitter communication protocol"(siehe Anlage).
Aha. Also nix mit der Vorstellung, dass das Ding einfach seine Messwerte auf eine serielle Schnittstelle schickt, sondern man muss erst um Werte bitten, so zumindest verstehe ich das Blatt. Für das "Send read command" müsste ich also vom Terminal die Hex-Zeichen 01;03;00;00;00;01;84;0A schicken, dann sollte das Gerät seinerseits etwas schicken. Oder habe ich das falsch verstanden?
Bevor ich einen Aufbau mit einem Mikrocontroller mache, wollte ich erstmal per Terminal überprüfen, ob ich die Befehlsgeschichte richtig verstanden habe. Ich verwende GTKTerm unter Linux und einen USB<->Seriell-Wandler, der auch die 5 V für den 485-Baustein liefert. Di des 485 ist mit Rx verbunden, Ro mit Tx (auch umgekehrt probiert). Was mache ich mit De und Re? auf LOW oder auf HIGH legen?
Ist der Ansatz überhaupt richtig?
Vielen Dank für Hilfen, ich stehe ziemlich auf dem Schlauch...
-richard
MODBUS level transmitter communication protocol.pdf (82.2 KB)