Ankündigung

Einklappen
Keine Ankündigung bisher.

Empfehlung RS485 - USB Adapter

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Empfehlung RS485 - USB Adapter

    Moin zusammen!
    In der Produktvorstellung vom wiregate wurde geschrieben, das bereits eine Anbindung an RS485 im Labor verwirklicht wurde.
    Selbes habe ich nun vor.
    Hat jemand Erfahrung, welcher USB adapter dabei zu empfehlen wäre. Am besten wäre natürlich das Modell, das seitens Elaborated Networks GmbH verwendet wurde, da deren Treiber eines Tages möglicherweise eingepflegt werden.

    Wer kann helfen?

    Gruß
    arne

    #2
    Es gibt da sicher 100 Wege nach Rom und 98 davon funktionieren auch.. Also eigentlich easy, trotzdem im Detail:

    Grundsätzlich werden alle USB-Seriell-Adapter mit Prolific 2303 (wie der in unserem Shop) SW-seitig unterstützt.
    Ebenso alles mit FT232 von FTDI; Der ist aber "etwas spezieller", in der Praxis aber anstregender, wenn es nicht um Spezialfälle geht Rate ich zu ersterem.

    Die beiden sind 99% dessen was es so zu kaufen gibt. Dabei gibts aber leider auch einige schwarze Schaafe (auch bekannt als China-Schrott)..

    Für RS485 nun steht man vor der Wahl:
    a) direkt USB->RS-485 - meist teuerer/fummelig, gerne auch beides
    b) o.g. USB->RS232 und einen RS-232->RS485 Wandler; aber da immer vorsicht, die gibts mit und ohne Stromversorgungsbedarf, China und Sub-China, 2&4Draht, also den passenden kaufen.

    Ich hab mich da für das "China-Modell" entschieden (konkret sowas) und davon sind auch seit Monaten einige im produktiveinsatz für WP, Wetterstation, Lüfter..
    Von verlinktem Anbieter gibts den auch in 4draht/RS422..

    Vom Heizungshersteller hab ich für 150.- EUR jedenfalls geraffel bekommen, das nicht nur so billig aussieht wie der verlinkte sondern auch war.
    Daher würde ich zu gut&günstig raten
    Eingebunden ins WireGate ist das ganze übrigens eigentlich komplett, es fehlt nur ein "bisschen" an Doku&Kommunikation dazu..

    Seriell(232/422/485)->LAN (oder Plugin zum verarbeiten) zu "Portkosten" unter 25 EUR sind eigentlich kein Thema.

    Makki
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      Super, vielen Dank!
      Aufgrund des Hinweises, das alle nahezu alle USB Adapter über den PL2303 Treiber laufen, habe ich mir jetzt folgenden Adapter geordert:
      https://www.m-ware.de/adapter-und-ko...rs485-adapter-[8732]/a-8732/
      Bin mal gespannt.

      Gruß
      arne

      Kommentar


        #4
        Also. Ich habe nun den vorher genannte Adapter gekauft, und versuche mich jetzt an der Programmierung.

        Leider habe ich damit bisher überhaupt keinen Erfolg und suche nach Fehlern.

        Zunächst wird im wiregate der adapter erkannt als /dev/usbserial-2-4

        Muß ich nun, um über perl auf den adapter zugreifen zu können socat benutzen? Oder kann ich direkt auf oben genannten socket zugreifen. Bisher habe ich den direkten Weg verusucht:
        Code:
        my $USBSERIAL_dev = "/dev/usbserial-2-4";
        Die Hauptverarbeitung wird dann wie in den hier vorher geposteten Beispielen geöffnet, und gelingt auch.

        Als nächstes will ich ein Telegramm auf den rs485-bus senden. Dies habe ich nun folgendermaßen versucht:
        Code:
        syswrite($socket[$socknum],"02 61 B0 06 02 32 FF 4C 00");
        Leider passiert nicht das was passieren sollte. Mit oben genanntem Telegramm sollte eigentlich ein Gerät gesteuert werden, was jedoch nicht passiert.

        Die Fehlersuche gestaltet sich nun etwas schwierig, da ich viele Möglichkeiten von Fehlerquellen gibt:
        - Muß ich vorher mit Socat eine TCP Socketverbindung herstellen?
        - Ist die Methode das Protokoll zu sendne richtig?
        - Ist die Trennund der Sendebytes richtig? Oder ist eine Schreibweise \0x02\0x61\..... zu verwenden?
        - und zuletzt, falls alles andere so richtig war, ist evtl ein Fehler in meinem Telegramm.

        Daher ist der erste Schritt wichtig, ob ich grundsätzlich die Ansteuerung richtig mache.

        Ich hoffe auf Hilfe,
        Gruß
        arne

        P.S.
        Ich habs jetzt mal mit socat versucht (port 5331). Leider gehts auch nicht.
        habe noch eine zweite sockelverbindung zu port 5332 errichtet, und diese mit telnet beobachtet. Geht das? da müsste man doch dann die daten auch sehen, oder?

        Kommentar


          #5
          Es geht beides, erstmal würde ich mir das aber socat&TCP/UDP ansehen, damit man das Protokoll lernt und prüfen obs manuell flutscht.

          Ich mach mir dann je nach komplexität evtl. erstmal ein standalone Mini-Perlskript, um die Kommunikation zu erstellen&testen und erst dann ein Plugin daraus..

          Wie da was funktioniert weiss die Glaskugel aber nicht ohne ein paar Details
          Ist es Ascii, kann das mit syswrite so schon klappen, ist es binär ist pack Dein Freund..

          Makki
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #6
            OK. Das werde ich schonmal in Erfahrung bringen!
            Müsste es denn nicht so sein, dass wenn ich über socat ´ne TCP-listen verbindung schaffe, und auf diese mit telnet verbindung aufnehme, das ich dann den "Busverkehr" beobachten können müsste?

            Kommentar


              #7
              Nee, es kommt zwar stark drauf an, sehen tut man mit einer parallelverbindung erstmal nichts.
              Daher einfacher mit socat+UDP, dann kann man schön mit tcpdump/WireShark mithorchen.. Aber es gibt da tausend Varianten, es kommt eben drauf an..
              Wenn man das unter Windows bevorzugt können auch ser2net, portmon&Co erstmal einfacher sein.

              Die Doku zum Gerät/Protokoll hilft auch der

              1. Sicherstellen, das der RS485 tut, wie er sollte. Bausrate&Co..
              2. Protokoll verstehen und programmatisch antesten
              3. Plugin schreiben (oder mit socat ins LAN schieben und am HS o.ä.), alles machbar

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar


                #8
                Ok, das hilft schonmal weiter, und ich probier nicht an der flaschen Stelle rum. Danke.

                Was ich über das Protokoll weiß ist folgendes:
                  • Total Frame length of Communication Message is variable.
                  • Minimum Frame Length is 7 Byte(In case of Data Field Length is ‘0’), Maximum Frame Length is limited 32 Byte(In case of Data Field Length is ‘25’ Byte).
                Velocity: 9600 bps, Non-echo Mode
                Bit: Data bit : 8bit, Start bit : 1bit, Stop bit : 1bit, No Parity



                Darüber hinausgehend habe ich dann die Beschreibung der mind. 7 Bytes.

                Untere Zeile sieht mir tatsächlich danach aus, als wär ASCII schonmal ´n fehler gewesen.
                Letztlich sehe ich erst ob dieSchnittstelle funktioniert, und ich das Protokoll richtig verstanden habe, wenn das Gerät durch den Bus angesteuert wird. Dieses sendet nämlich erst ein Telegramm auf den Bus, wenn ich einen richtiges request telegramm abgesetzt habe.

                Ich werd´s heute abend antesten, und berichte.

                arne

                Kommentar


                  #9
                  etwas frustriert muß ich nun zugeben, dass ich es nichtmal geschafft habe den Socket mittels Wireshark zu beobachten.

                  Ich habe es sowohl mit der tcp-listen als auch der upd-datagramm methode gemäß dem Beispiel in der wiregate hilfe versucht, und mich dann mit wireshark an den port zu hängen. Entweder kommt die Meldung dass der angefragte port nicht innerhalb der wartezeit geantwortet hat, oder (bei tcp-listen auf port 7002) wireshark bleibt hängen und es passiert nichts.

                  Ideen? Was mach ich denn hier bereits falsch?

                  gruß
                  arne

                  Kommentar


                    #10
                    Wo, wie, was ?
                    Wo (wireshark)?
                    Wie genau gestartet?
                    Was ist es denn nun für ein Gerät, oder ist das geheim?
                    Mit 1/4 Infos hilft es sich schwer..

                    Step-by-Step:
                    - Es greift nur einer auf das usbserial(ttyUSB) gleichzeitig, entweder Plugin, oder socat
                    - RS485 stimmt? TX, RX, 2draht, 4draht etc.
                    Dann
                    socat -vx /dev/usbserial-2-4,raw udp-datagram:192.168.1.3:7003,bind=:7003,reuseaddr
                    192.168.1.3:7003 = Ziel-IP und UDP-Port des Windows-PCs
                    - prüfen ob socat läuft (am besten mal so in der ssh-Konsole starten, dann sieht man auch, ob&was sich tut)
                    - Windows-Firewall abschalten

                    Dann dieses und dieses sehr praktische Tool verwenden, bis man weiss wie und ob es überhaupt spricht. Geht nicht, Goto 1

                    Oder es gibt z.B. eine "Orginalsoftware" -> erstmal mit portmon sniffen was da passiert.

                    Falls es ein ASCII-Protokoll ist, kann man so auch direkt mit dem Gerät auf der Konsole "sprechen"
                    socat - /dev/usbserial-2-4,echo=0

                    Makki
                    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                    -> Bitte KEINE PNs!

                    Kommentar


                      #11
                      Ach watt, nix geheim.
                      Es handelt sich um eine motorgetriebene gardienenstange, die bereits über einen rs485 bus verfügt. Ich habe vom Hersteller die Beschreibung des Telegramms dazu bekommen. Die entscheidenen Angaben dazu habe ich weiter oben geschrieben. Alles weitere sind die definitionen der einzelnen bytes.
                      Das große Problem, ich gehe davon aus, dass der Antrieb erst dann ein Telegramm abschickt, wenn ich vorher eine richtiges request telegramm vom wiregate abgesendet habe. Somit lässt sich erstmal nix beobachten. Und da, wie Du schreibst, immer nur eine Verbindung zur Zeit funktioniert, wird auf dem Bus ohne gleichzeitig laufendes Plugin nix zu beobachten sein. Der Weg ist also schonmal nicht zielführend.
                      Ich werde als erstmal probieren, direkt über die Konsole in ASCII Format das telegramm zu senden. Wenn das nicht geht, verusch ich das ganze nochmal vorher in binär umzuwandeln.

                      Wie gesagt, mein hauptproblem ist, das ohne ein von mir abgesendetes richtiges telegramm überhaupt kein busverkehr entstehen wird (denke ich zumindest)

                      arne

                      Kommentar


                        #12
                        kann es sein, das ich um über die ssh-konsole die socat-Verbindung herzustellen root Rechte brauche? Ich bekomme zumindest die Meldung Permission denied

                        Kommentar


                          #13
                          Ja, muss root sein, PW ist dasselbe..

                          Makki
                          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                          -> Bitte KEINE PNs!

                          Kommentar


                            #14
                            Ok.... mann, tu ich mich dieses Mal schwer.
                            Also. Als root eingeloggt, Windows-firewall aus, über Socat den usb-adapter mit port 7003 des Windows rechners verbunden. oder nicht?
                            Also. Über SSH hab ich die von Dir beschriebene Zeile (mit angepasster ip) eingegeben.
                            Sind nun irgendwelche Meldungen zu erwarten? es kommen jedenfalls keine.

                            Über Wireshark filter ich nun den Port 7003 heraus, nur leider gibt es ja keine Daten auf dem Bus. Somit über wireshark auch nix zu sehen.

                            Wenn ich über eine zweite ssh-konsole auch über sokat auf die serielle Schnittstelle schreibe, kommt auf port 7003 leider nix an.
                            Das hatte ich dann mit
                            echo "02 61 B0 06 02 32 FF 4c 00" | socat - /dev/usbserial-2-4,echo=0,b9600
                            gemacht.

                            Ich habe ehrlich gesagt das Gefühl, dass ich zu viele Baustellen gleichzeitig habe, und finde momentan kienen Ansatz. Ich bräuchte zumindest mal zuverlässig ein Telegramm auf dem Bus, damit ich wenigstens weiß ob der Adapter denn funktioniert.

                            Achso, kurz noch zur Info: Angeschlossen sind T+ und T-

                            einen etwas kleinlauter werdenden Gruß,
                            arne

                            Kommentar


                              #15
                              Deswegen ja die Frage nach den Protokolldetails, dann könnte man ein Beispiel machen wie es richtig gesendet würde
                              Ich hab schon soviel seriellen Plempel ans laufen gebracht da wirds an der Garderobenstange (was es nicht alles gibt!) doch nicht scheitern..

                              Und kommt jetzt drauf an aber ich kenne nur die Variante +/- &GND!

                              Makki
                              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                              -> Bitte KEINE PNs!

                              Kommentar

                              Lädt...
                              X