RS232-Modbus-zu-USB-Verkabelung

Ich habe ein RS232-Gerät, das Daten nach dem Modbus-Protokoll sendet. Ich habe Probleme mit der Kommunikation und ich denke, meine Verkabelung ist falsch. Da die meisten Modbus-Geräte über RS485 arbeiten, ist es schwierig, Informationen darüber zu finden.

Das ist das Kabel vom Sensor:Sensorkabel

Ich habe einen USB-zu-RS232-Konverter und ein RS232-Kabel. Ich habe eine Seite des RS232-Kabels abisoliert und die RXD-, TXD- und GND-Drähte an die entsprechenden Drähte des Sensors angeschlossen. nach diesem Diagramm:

Geben Sie hier die Bildbeschreibung ein

Der Sensor wird über ein externes 5-V-Netzteil mit Strom versorgt. Ich bekomme keine Kommunikation zum Sensor. Ich habe dies versucht, indem ich RXD und TXD umkehrte und auch auf einem Himbeer-Pi mit Strom für den Sensor, der vom Pi kommt.

Ich habe auch versucht, einen RS485-zu-USB-Konverter zu verwenden. Ich bekomme auf diese Weise Daten, aber sie machen nach dem Modbus-Protokoll keinen Sinn, sie scheinen zufällig zu sein. Ich habe das Minimalmodbus-Python-Modul und serielle Testtools verwendet. Der Sensor ist ein Calex PyroCube S, laut Datenblatt verwendet er eine Schlagrate von 9600, Parität keine und 2 Stoppbits. Ich denke, dass die Sklavennummer 1 ist?

irgendwie offensichtlich, aber: Haben Sie TX am Sensor mit RX am USB-zu-RS232 und RX am Sensor mit TX am Kabel verdrahtet? (Ich frage, weil Sie sagen ... entsprechend ... ). Modbus ist ein Protokoll, es kann auf RS485 oder RS232 oder anderen elektrischen Ebenen arbeiten (im Handbuch Ihres Geräts steht, dass es sich auf RS232 befindet, sodass Sie RS485 vergessen können). Die Bedienungsanleitung des Gerätes sieht sehr dürftig aus, ich konnte nicht einmal die Slave-ID finden, vielleicht gibt es eine Einstellung im Menü des Gerätes. Wenn jemand anderes den Sensor zuvor verwendet hat, beachten Sie, dass die Baudrate möglicherweise geändert wurde.
In der Konfiguration Ihrer Software müssen Sie die Flusskontrolle deaktivieren
Schlagen Sie in der Modbus-Registerkarte im Handbuch Ihres Sensors nach, um zu erfahren, wonach Sie fragen müssen. Wenn Sie jedoch nach einem nicht vorhandenen Register fragen, sollten Sie zumindest eine Fehlerantwort erhalten = eine vollständige Meldung als Antwort, anstatt Stille . Sie können versuchen, die Slave-IDs in einer Sequenz zu scannen. Der Adressraum der Slave-IDs ist 0..254, wenn der Speicher dient.
Meiner Erfahrung nach ist der richtige Weg, dies zu tun, die Anwendung des allgemeinen Debugging-Ansatzes. Teile und herrsche. Gehen Sie entlang der Signalkette und wenden Sie eine Sonde / einen Tap an, um zu sehen, wie weit Sie ein Signal sehen können. Oder Sie können von der untersten "Schicht" aus beginnen, auf der sie zugänglich ist. RS232 ist insofern nett, als es relativ langsam ist. Sie müssen überprüfen, ob Sie einige Impulse / Flanken aus dem TX-Pin des PCs (DB9 Pin 3) erhalten. Ein Oszilloskop wäre das optimale Werkzeug, aber ich bezweifle, dass Sie eines haben. Probieren Sie bei 9600 bps eine LED in Reihe mit einem 1k-Widerstand aus. Oder einen aktiven Lautsprecher, schalten Sie einen 100k-Widerstand in Reihe mit Line-In.
Wenn Sie sehen, dass Ihre Anfragen herauskommen, versuchen Sie, nach Antworten zu suchen - dieselbe Untersuchung, Sie verstehen die Idee. Auf der Softwareseite kenne ich die pythoneske API für serielle Geräte nicht. Aber ich kenne mich mit den zugrunde liegenden nativen APIs in Linux und Win32 aus. Wenn Sie Windows-basiert sind, versuchen Sie es mit RealTerm - konfigurieren Sie den COM-Port und versuchen Sie, einige binäre Bytesequenzen zu senden, die Modbus-Anforderungen umfassen (der einzige schwierige Teil ist die Prüfsumme). Wenn Sie einige Sonden an RS232 haben und nichts sehen können, überprüfen Sie zuerst die Sonden - deaktivieren Sie die Flusskontrolle und starten Sie bei 2400 bps.
Übrigens ist der einfachste Loopback-Test das Kurzschließen der Pins 2 und 3 im DB9. Stellen Sie sicher, dass Sie das physische Loopback von einem möglichen SW-basierten lokalen Echo in Ihrem Terminal unterscheiden können (sollte standardmäßig deaktiviert sein). Dieser Test funktioniert problemlos in jedem Terminal-Emulator: Putty, Hyperterminal, Minicom, wie Sie es nennen. Es ist die erste Plausibilitätsprüfung Ihrer Umgebung.
Was ist das für ein Sensor? Ein Datenblatt wäre schön.

Antworten (1)

Wenn es RXD und TXD hat, ist es nicht RS485. Es sieht für mich wie normales RS-232 aus, das Modbus-RTU-Daten enthält.

Geben Sie hier die Bildbeschreibung ein

Versuchen Sie, das Holder-Register 0x0040 mit QModMaster bei einer Baudrate von 9600 auszulesen.