Jump to content

Daten über RS232 sind kaputt


Recommended Posts

Hallo,

 

ich hab am Freitag noch mein RS232 Bricklet bekommen.

Allerdings klappt das mit dem Auslesen noch nicht.

Vorab, es handelt sich bei den Daten um Temperaturen aus einem externen Gerät. Das Gerät bzw dessen Schnittstelle kann ich nicht beeinflussen und sie ist auch nicht dokumentiert. Ich hab mich mit einem alten Laptop mit serieller Schnittstelle und Putty herangetastet und folgende Daten ermittelt:

19200 Baud

8 Bit

1 Stopbit

Parity None

Flow XON/XOFF

Die Anlage sendet alle 500ms eine Datenzeile die so aussehen sollte:

pm 61 0 9.4 79 159 0.1 -0.9 71.6 200.0 68.3 0.0 68 42 54 76 0.0 0.0 -2427668000000000000000000000000.0 0 65.1 140.0 63.7 0.0 140 55 140 140.0 140.0 0.0 0.0 140 140 15 140 100 100 100 100 100 100 140 140 14 0.7 0.8 0.0 9.9 0.00 0.00 0.0 0.00 305 829 1 df1 1 0 0 0

 

Stattdessen kommt aus dem Brickviewer Logger sowas im Ascii Modus heraus

pm 65 0 0.6 71 1fH........r.....0 57.6 0.$S...&$.....r...0 -2427........00000000FL.8000.....r...0.0 53.5...R&ML...........140.0 ...&...& 140 24 .&.L.. 1........100 100 .&$L.. 1.r...r....R'...&...r....0 0.00 3.$.NHL........

. 0

 

Aus dem ReadCallback kommt es ähnlich heraus.

Meine Configuration :

rs232bricklet.SetConfiguration(BrickletRS232.BAUDRATE_19200,

                                                BrickletRS232.PARITY_NONE,

                                                BrickletRS232.STOPBITS_1,

                                                BrickletRS232.WORDLENGTH_8,

                                                BrickletRS232.HARDWARE_FLOWCONTROL_ON,

                                                BrickletRS232.SOFTWARE_FLOWCONTROL_OFF

                                                );

 

Auf den ersten Blick sehen die fehlerhaften Daten nur so aus, als hätte sich irgendwas im Zeichensatz vergriffen. Aber der ganze Datensatz hat keine Sonderzeichen o.ä. drin; und ab und zu (am Anfang des Datensatzes, aber auch in der Mitte ) klappt es ja auch.

 

Hat jemand einen Tipp für mich ?

Was kann ich noch liefern ? Hex Daten?

 

Dankeschön!

Link zu diesem Kommentar
Share on other sites

  • Replies 53
  • Created
  • Letzte Antwort

Top Posters In This Topic

Hi!

Ja, das war auch mein Gedanke. Ich hab auch im Brickv mit allem herumexperimentiert.. es wird nicht besser.

 

Die Konfiguration die ich in Putty verwende funktioniert astrein und über Stunden hinweg sauber. Vielleicht hab ich die nicht richtig in das Tinkerforge-Universum übersetzt ?

 

Das Gerät ist eine Heizungsanlage, der Hersteller gibt diese Sachen nicht raus, und alles was man dann im Internet findet ist genau das was ich hier probiert habe :-) Ich habe lange gesucht und probiert.

 

Einzig, die Heizung führt die serielle Schnittstelle mit einem RJ45 Stecker nach aussen. Zwischen Heizung und Bricklet ist also noch ein Adapter. Aber, das ist auch der gleiche Adapter der bei Putty dazwischen war.

Link zu diesem Kommentar
Share on other sites

Hi!

Das werde ich alles möglichst heute Abend noch ausprobieren.

Was mir gestern Abend noch an der Putty Konfiguration aufgefallen ist: Ich hatte den Zeichensatz von UTF8 auf Latin1 umgestellt;

 

Ich bin nicht der größte Byte Schubser ...  also, ich bekomm ein char Array aus der API heraus, das müsste dann ja bereits in einem bestimmten Zeichensatz kodiert sein, oder ? Fehlt mir hier vielleicht auch "nur" noch eine Umwandlung ?

 

Firmware ist aktuell.

 

Ich werde noch berichten.

 

Schöne Grüße

Link zu diesem Kommentar
Share on other sites

Die heile Ausgabe besteht nur aus ASCII Zeichen. Das ist also kein Problem mit dem Zeichensatz. Das sollte in Putty mit UTF-8 und Latin1 gleich gut funktionieren, da beide ASCII auf die gleiche Weise enthalten. Sprich in Putty von UTF-8 auf Latin1 umzustellen ist nicht nötig, wenn doch dann ist da etwas faul.

 

Die kaputt Ausgabe beinhaltet im Brick Viewer im ASCII Anzeigemodus viele Punkte, also Werte die in ASCII keinem darstellbaren Zeichen entsprechen.

 

Kannst du so ein kaputte Ausgabe mal aus dem Hex Modus hier zeigen, damit wir sehen können welche Werte sich hinter den Punkte verstecken?

 

Die kaputt Ausgabe ist ja nicht vollständig kaputt. Da sind ja auch mitten drin noch heile Teile. Hast du vielleicht ein Wackelkontaktproblem, das nur das RS232 Bricklet betrifft?

Link zu diesem Kommentar
Share on other sites

HAllo!

 

also der Reihe nach:

- Wenn ich die Hardwareflusskontrolle auf off stelle, kommen keinerlei Daten mehr aus der Schnittstelle , egal was für Software eingestellt ist.

- Hex und normale Daten habe ich angehängt. btw: Der Brickviewer macht einem das abspeichern der Hexdaten nicht einfach, ein Speichern unter Button wäre nett)

- Wackelkontakt hab ich untersucht; aber wärend des Lesevorgangs bewegt sich nichts an dem Aufbau

- Alle Error Counter sind auf 0; auch im Testprogramm wird der Error Callback nicht ausgelöst

 

hab ich noch was vergessen ?

 

Danke!

Brickvrs232ausgabe_hex.txt

Brickvrs232ausgabe.txt

Link zu diesem Kommentar
Share on other sites

Du sagtests in Putty XON/XOFF Softwareflusskontrolle aktiviert zu haben. War das wirklich nötig damit es funktioniert? Das scheint mir komisch, wenn du sagst beim Bricklet zwingend Hardwareflusskontrolle aktivieren zu müssen.

 

In der heilen Ausgabe kommt diese Zeichenkette vor:

 

-2427668000000000000000000000000.0

 

Die taucht auch in der kaputten Ausgabe wieder auf, aber so (hex-escaped):

 

-24276\x82\x82\x82\x82\x82\x82\x82\x82\xc1\x82\x82\x82\x82\x82\x82\x82\x98\x980000.0

 

Zuerst fällt auf, dass die kaputt Version 4 Zeichen kürzer ist. Betrachtet man das ganze dann binär und versucht das zu Deckung zu bringen sieht das so aus:

 

heile
00101101 00110010 00110100 00110010 00110111 00110110 00110110 00111000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00101110 00110000 

kaputt
00101101 00110010 00110100 00110010 00110111 00110110                        10000010 10000010 10000010 10000010 10000010 10000010 10000010 10000010 11000001 10000010 10000010 10000010 10000010 10000010 10000010 10000010             10011000 10011000  00110000 00110000 00110000 00110000 00101110 00110000

 

Im Mittelteil sieht das doch halbwegs ähnlich aus. Es scheint nicht so zu sein, dass die kaputten Teile völlig zufällig kaputt sind.

 

Hast du mal versucht die Baudrate eine Stufe rauf oder runter zu stellen?

Link zu diesem Kommentar
Share on other sites

Hi,

 

ich hab am Brickviewer  alles mögliche an Baudraten (auch an anderen Parametern) ausprobiert.

Es geht dann von "ganz kaputt" zu "etwas weniger kaputt" wieder über zu "ganz kaputt".

 

Ich werde heute nochmal den alten Laptop mit echtem RS232 Port bemühen und nochmal ein Log aus/mit Putty erstellen. Ich teste nochmal mit den Flusskontrollen, dem Zeichensatz und auch nochmal wegen Wackelkontakt

 

Kann ich sonst noch was tun ?

 

Noch eins zu den Daten: Das sind immer verschiedene Zeilen; in zeitlicher Nähe von Minuten sind die Daten identisch oder nur minimal unterschiedlich; mit mehr zeitlichem Abstand zwischen zwei Logs kann es sein, dass die Heizung in einem komplett anderem Betriebszustand ist.

Link zu diesem Kommentar
Share on other sites

Meine Vermutung ist, das die Heizung mit einer nicht-standard Baudrate spricht und das Bricklet damit weniger gut zurecht kommt als dein Laptop.

 

Wenn du für das Bricklet die Baudrate ein Stufen über oder unter 19200 stellst, ist es dann sofort vollständig kaputt? Oder ist es dann kaputter aber es sind immer noch heile Teile dabei?

 

Gibt es keine Dokumentation zur Heizung die was über die Baudrate sagt?

Link zu diesem Kommentar
Share on other sites

Hi,

 

die Einstellungen hab ich selber von anderen Usern, die es ebenso mit try and Error rausbekommen haben. Der Hersteller sagt dazu gar nichts, das ist ja das dumme....

 

Ich ziehe einfach nochmal Logs mit den benachbarten Baud Raten.

Ich hab auch noch einen USB auf Seriel Adapter bestellt, den kann ich dann auch noch in den Ring werfen.

 

Dankeschön!

 

Link zu diesem Kommentar
Share on other sites

Hi,

ich hab da noch eine Zwischenfrage. Ich bin beim RED Brick über dessen GPIO Schnittstelle und dessen UART Pins gestolpert. Die Pins können doch auch RS232, richtig ? Ja, mir ist bewusst, dass ich dann ausserhalb der Brick-Welt bin. Das wäre mir durchaus auch recht.

Sind diese Pins dann ähnlich wie beim Raspberry zu behandeln ? Soweit ich das sehe braucht dieser ja noch einen Pegelwandler (MAX323IC) on top.

 

Dankeschön und schöne Grüße

 

BTW: Ich hab die Threds gefunden, in denen es um ein Kabel/Board für den GPIO Port geht. Alleine schon weil es dort die Spannung nochmal abzugreifen gibt wäre ich auch für so ein Kabel.

Link zu diesem Kommentar
Share on other sites

Auf der GPIO Schnittstelle des RED Brick liegen auch UART Pins, ja. Die GPIO Schnittstelle ist aber momentan nur in Hardware vorhanden. Sie wird vom Kernel momentan weder passend konfiguriert, noch gibt es momentan ein passendes Flat Flex Kabel dazu. Das ist also nichts was du kurzfristig nutzen könntest.

Link zu diesem Kommentar
Share on other sites

Nach etwas suchen glaube ich verstanden zu haben, dass es das Kabel nicht nur hier nicht, sondern nirgends gibt.... Das ist schade.

 

Ist ja seltsam, dass es Stecker gibt, für die es keine Kabel zu kaufen gibt.

Ein Kabel wäre nett. Ein kleines Platinchen dazu wäre noch netter.

Gibt es da Planungen? Wisst ihr zumindest wann es irgendwo so ein Kabel gibt ?

Link zu diesem Kommentar
Share on other sites

Hallo,

 

also, heute bin ich ein bischen schlauer:

- Nullmodem Kommunikation zwischen zwei Laptops geht ohne weiteres

- Stapel am "neuen" Laptop an der Heizung produziert den bekannten Müll

- Stapel am 5V Netzteil produziert auch nur Müll

- Stapel am "alten" Laptop funktioniert wie gewollt

 

Was ist der Unterschied ? Der Akku des alten Laptops ist defekt, er hing bei allen Versuchen am klassischen Netzteil mit 3 poligem Schukostecker.

 

Das ganze ist beliebig oft reproduzierbar. Scheint also eher ein elektrisches Problem zu sein.

Ich hab hier mehrere 5V Netzteile zur Verfügung, das klassische HandyLadegerät, eine Wandwartze mit mehr Bums von einem Tablet, alle haben das gleiche Problem.

 

Was könnte da nun helfen ? Eine galvanische Trennung an der RS232 Schnittstelle ? Ein anderes Netzteil ? aber welches ?

 

 

Noch was zum GPIO Anschluss: In der Doku steht, der Anschluss wäre für Profis verwendbar. Aber nach dem was ich jetzt lese, gibt es selbst für Profis nicht mal eine theoretische(!) Chance (wegen nicht verfügbarem Kabel) das Ding zu nutzen. Das ist schon doof. Wenn das nicht geht, sollte das auch in der Doku gar nicht erwähnt sein.Software krieg ich hin, Hardware nicht...

Link zu diesem Kommentar
Share on other sites

Wie genau ist denn dein Aufbau?

 

Hast den den Stapel am Laptop per USB angeschlossen und die Stromversorgung geht auch über USB?

 

Wie hast du den Stapel mit dem Laptop verbunden, wenn du das 5V Netzteil verwendest?

 

Das macht den Eindruck eines Masseschleifenproblems. Allerdings würde ich dann erwarten, dass es besser funktioniert wenn der Labtop und der Stapel Batteriebetrieben sind. Die einzige Masseverbindung also übers RS232 Kabel läuft.

Link zu diesem Kommentar
Share on other sites

Hi,

 

Aufbau "alter Laptop":

- Netzteil des Laptops an Steckdose

- Laptop

- USB-Kabel liefert Strom an den Stack

- Stack (RED+WLAN, Master, RS232)

- RS232 Kabel

- Heizung

==> Daten auslesen funktioniert in allen Varianten (Brickv, Programm auf dem RED Brick ...)

 

 

Aufbau "neuer Laptop":

- Laptop im Akku Betrieb

- USB Kabel liefert Strom an den Stack

- Stack (RED+WLAN, Master, RS232)

- RS232 Kabel

- Heizung

==> Daten kommen zerstört an (via USB Kabel am Brickv oder auch im Programm am RED)

 

 

Aufbau RED-Standalone:

- diverse USB Stecker-Netzteile

- Stack (RED+WLAN, Master, RS232)

- RS232 Kabel

- Heizung

=> Daten auslesen funktioniert nicht (Brickv über WLAN, Programm auf dem Red ...); Laptop ist nur über WLAN verbunden

 

 

Zum RS232 Kabel:

Der Anschluss ist als RJ45 Stecker aus der Heizung herausgeführt  und mittels eines dummen Adapters (keine Elektronik) auf RS232 gemünzt.

 

Derzeit läuft mein Programm gut und stabil in der Konfiguration "alter Laptop", wobei der Laptop hier nur Strom über USB zur Verfügung stellt.

 

Könnte das auch mit der Qualität/Stabilität der Spannung aus den Netzteilen zu tun haben ? Messgeräte hab ich genug, nur weiß ich gerade nicht was es zu messen gilt :-/

 

Dankeschön für die Unterstüzung!

 

Link zu diesem Kommentar
Share on other sites

So ein richtig klares Bild ergibt sich da noch nicht.

 

Macht es einen Unterschied, wenn du beim "neuen Laptop" Aufbau den Laptop mit seinem Netzteil anstatt Akku betreibst? Sprich du grob elektrisch gesehen den gleichen Aufbau wie beim "alten Laptop" hast?

 

Ich frage mich, ob das hier ein Problem mit der Masseverbindung zwischen Heizung und Bricklet ist. Annahme ist: Diese Masseverbindung ist gestört bzw. nicht vorhanden, wird beim "alten Laptop" Aufbau aber übers Stromnetz hergestellt.

 

Wenn du ein Multimeter zur Hand hast, dann könntest du messen, ob von Masse am Bricklet über deine selbstgebautes Kabel Kontakt zur Masse am RJ45 Stecker für die Heizung besteht. Am Bricklet findest du Masse auf der Stiftleiste und der Schraubklemme.

 

Was meinst du beim "RED Standalone" Aufbau mit "Daten auslesen funktioniert nicht"? Kommt da dann gar nichts an, oder ist das auch so kaputt wie beim "neuen Laptop" Aufbau?

 

Funktioniert folgender Nullmodem Test, wenn du den alten Laptop die Heizung simulieren lässt (unter der Annahme, dass der alte Laptop noch einen richtigen RS232 Anschluss hat)?

 

230V --- alter Laptop --- Nullmodem --- RS232 Bricklet --- neuer Laptop --- Akku

Link zu diesem Kommentar
Share on other sites

...

Ich frage mich, ob das hier ein Problem mit der Masseverbindung zwischen Heizung und Bricklet ist. Annahme ist: Diese Masseverbindung ist gestört bzw. nicht vorhanden, wird beim "alten Laptop" Aufbau aber übers Stromnetz hergestellt.

...

 

unterschiedliche Massepotentiale können erheblich stören, deswegen

- entweder galvanisch (komplett) trennen

- oder sehr niederomig(!) eine durchgehende Masse benutzen

. . .

und - sind die Datenleitungen terminiert ?

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


×
×
  • Neu erstellen...