RS232 Verbindung zu einem Terminal/Logger

  • Hallo zusammen,


    Nachdem ich heute erfolgreich meine serielle Schnittstelle freigeschaltet habe musst ich diese erstmal ausprobieren. Mein erstes Erfolgserlebnis konnt ich mit einem Modbus Sensor verzeichnen. Naja jetzt habe ich Blut geleckt.

    Zu meinem Plan:

    Verbindung über RS232.

    Folgenden Platine möchte ich dazu verwenden :

    https://www.pollin.de/p/rs232-ttl-wandler-mit-max3232-810358

    Soweit ich mich eingelesen habe, sollte diese Platine den Pegel von 12V auf 3.3V und umgekehrt unterstützen.


    Eine Verbindung über 232 habe ich mit dem COM 1 bedingt herstellen können, empfangen ja aber Senden hat noch nicht funktioniert. Ich habe ein null-modemkabel und ein Standard Kabel probiert. VIll mache ich noch etwas falsch. Das ist aber nicht das was ich hier erfragen möchte. Zu mindestens jetzt noch nicht. (;


    Eine Schnittstelle dient zum Senden von Befehlen und Empfangen von Daten /Antworten. Ich möchte mit dem Rpi ein kompaktes Auslesegerät für Momentanwerte aufbauen. Damit dieses möglich ist habe ich die write (Computer-> Endgerät) und read (Endgerät->Computer) Daten über ein Tool am Computer ausgelesen. Dieser Kommunikationsweg erfolt über ein null-modemkabel.

    Wie kann ich diese nutze bzw. Wie sende ich diese an das Endgerät, damit ich eine Antwort bekomme? Das Tool gibt mir Hex und ASCII Zeilen aus.



    Aktuell stelle ich eine Verbindung über Serial (Python) her.

    Baudrate, Bytes, Stoppbits,.... Sind bekannt. Nur kann ich mit Handshake noch nichts anfangen.


    Vill hat jemand einen Tipp wie ich eine Verbindung herstellen kann.

  • Moin hudyhud,


    ich würde mir z.B.: minicom (ein TerminalProgramm für die serielle Schnittstelle) installieren und die Verbindung testen.

    Dann weisst du das die Verbindung geht und welche Parameter ev. benötigt werden.

    Erst dann solltest du an programmieren gehen.


    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Was macht Minicom genau?

    Parameter habe ich aufgrund einer Computer unterstützten Auslesung schon erhalten.

    Ich probiere es mal mit minicom und schaue ob es mich weiter bringt.

  • Moin hudyhud,


    minicom ist ein Terminalprogramm das die serielle Schnittstele nutzt.


    Ich hatte es so verstanden, das die Kommunikation zwischen RPi und dem anderen Gerät noch nicht geht.


    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Moin,


    Minicom sagt mir das meine Schnittstelle offline ist. Obwohl diese offen ist. Ich vermute mal, dass ich erst mit einem Befehle das Gerät aktiviern muss damit es Befehle sendet.


    die Verbindung zwischen dem Computer <->Datenlogger funktioniert (Null-Modemkabel). Dort habe ich den Datentransfer (Schreiben und Antwort) mitlesen können. Es sollten Hex DEZ Daten sein bzw. ASCII rechts (Bild).


    Die Verbindung zwischen Rpi <-> funktioniert noch nicht. Mir würde eine einzige Antwort von dem Datenlogger reichen, danach kann ich mir die Befehle entsprechend anpassen.

    Mir fehlt momentan DIE Idee eine Antwort zu erzwingen.


    Ist mein write Befehle im richitgen Format?!

  • Welche "Schnittstelle" ?

    /dev/ttyS0 /dev/ttyAMA0 /dev/ttyUSB0 ....

    Und die seriellen Parameter, z.B. 19200 N80, sollten auch mit der Gegenstelle übereinstimmen.


    Möglicherweise ist Deine "Schnittstelle" noch an ein Terminal fürs login gelockt, oder Du hast sie für den Modbus Sensor verkonfiguriert.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Moin hudyhud,


    du nutzt einen Raspberry 3?

    Bei dem ist die UART(RS232) durch das Bluetooth belegt. Dazu muss ein Eintrag in der /boot/config.txt gemacht werden.

    Einfach in der letzten Zeile dtoverlay=pi3-miniuart-bt einfügen und Reboot.


    Dann minicom mit folgenden Daten starten. minicom -b 9600 -D /dev/ttyACM0 Hinter b steht die Baudrate, bitte anpassen.



    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Quote

    du nutzt einen Raspberry 3?

    Bei dem ist die UART(RS232) durch das Bluetooth belegt. Dazu muss ein Eintrag in der /boot/config.txt gemacht werden.

    Einfach in der letzten Zeile dtoverlay=pi3-miniuart-bt einfügen und Reboot.

    Korrekt. Bluetooth ist schon ausgeschaltet. War für die Verwendung des Modbus auch notwendig.


    Quote

    Dann minicom mit folgenden Daten starten. minicom -b 9600 -D /dev/ttyACM0 Hinter b steht die Baudrate, bitte anpassen.

    die Schnittstelle muss ich dann auch anpassen? Bei mir wäre es die /.../serial0.


    Habe heute noch etwas probiert, dabei habe ich den "CL/LASTVALUE " Befehl in eine BIN gewandelt und gesendet (gibt es eine Möglichkeit direkt HEX Werte zu senden?). (wenn man bedenkt, dass die ASCII-Werte nicht mit den HEX werten übereinstimmen "." = \r)

    Die Antwort war leider nicht plausibel. Ich bin ja schon froh eine Antwort vom Logger zu bekommen.(;

    Ich spiele noch etwas an den Einstellungen der Schnittstelle herum.

  • Mit einer Software von dem Loggerhersteller, kann ich die Momentanwerte über RS232 auslesen.

    Mit dieser Software kann ich die Schnittstelle des Loggers entsprechend einstellen (Baudrate, usw.)

    Über einen sniffer habe ich geschaut, welche Befehle über die Computerschnittstelle zum Logger gesendet werden.

  • Moin hudyhud,


    in Ermangelung der entsprechenden Hardware(MAX2323) und einer Gegenstelle kann ich dir im Moment nicht weiterhelfen.


    Habe irgendwo gelesen das das Programm cutecom auf Hex umgestellt werden kann. Das ist aber ein grafisches Programm.


    Vielleicht liest ja jemand mit, der weiter hilft.


    Gruss Bernd


    Habe doch noch was.

    Probier mal

    Code
    1. sudo echo "EF" >> /dev/ttyAMA0
    2. usw.

    Wenn du die nötige Befehlssequenz abgeschickt hast, kann man auch mit

    sudo cat /dev/ttyAMA0 lesen.

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

    Edited once, last by Bernd666 ().

  • Moin,

    vielen dank.

    Komme erst am Freitag wieder zum Testen.

    Quote



    Hint: sudo echo und Umleitung per >/>> funktionieren nicht, dafür gibt's z.B. eine Subshell oder tee (-a).

    llutz : kannst du mir das gerade kurz erklären was dabei passiert? sudo echo .....???? (Wie sieht der gesamte Befehl aus?)

  • Eine Umleitung a la "sudo echo bla >foo", wobei foo eine Datei ist auf die der User keine Rechte hat, scheitert deshalb, weil das sudo nur auf das echo wirkt. Die Umleitung auf die Datei wird aber schon vorher durch die Schell ausgeführt, ohne sudo (root-Rechte). Deswegen klappt das nicht.

    Alternative

    sudo bash -c "echo bla >foo"

    obiges führt einfach eine komplette Subshell per sudo aus, oder

    echo bla | sudo tee -a foo

    tee ist hier der Ersatz für die Umleitung, es nimmt Daten von Standard-Input und lenkt sie um (-a = append, entspricht >>).

    "Wenn du nichts zu sagen hast, sag einfach nichts!"

  • Hallo an die Experten,


    ich habe einen RPi3B+ mit Strech aufgesetzt und versuche mit einem USB2Seriell-Adapter eine Kommunikation zu einem ser. Gerät herzustellen.


    Mt Hilfe von minicom und einer Brücke zw. Rx/Tx kann ich leider keine Zeichen empfangen.


    Per Notebook (Ubuntu 18.04) und einem RPi2B (Wheezy) funktioniert aber alles.


    Kann hier jemand weiterhelfen ? Bin ratlos. :(


    Code
    1. lsusb
    2. Bus 001 Device 007: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
    3. Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp.
    4. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
    5. Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
    6. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  • crw-rw---- 1 root dialout 188, 0 Okt 3 10:14 /dev/ttyUSB0

    hast Du als Schnittstelle im minicom eingestellt ?


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Und dein Benutzer, wenn nicht root, ist in der Gruppe "dialout" (Kommando: groups, id)?

    "Wenn du nichts zu sagen hast, sag einfach nichts!"

  • Ja, habe ich. Gleiche Einstellungen wie bei den anderen beiden Systemen ...

    Das sagt gar nichts. Der 3B+ hat eine andere Firmware und damit abweichende Module und Bootparameter.


    Vllt. hilft Dir das https://www.raspberrypi.org/forums/viewtopic.php?t=170214


    Der serielle Port /dev/ttyUSB0 darf nicht schon von einem anderen Programm benützt werden, wenn Du minicom darauf verbindest. < ps aux > zeigt in der TTY Spalte die verwendeten Devices an.



    Servus !

    RTFM = Read The Factory Manual, oder so