Ankündigung

Einklappen
Keine Ankündigung bisher.

Startschwierigkeiten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Startschwierigkeiten

    Hallo ihr Lieben,

    Ich möchte KNX und Arduino miteinander verbinden. Dazu habe ich den Siemens Busankoppler, mein bestehendes KNX Netz und ein Arduino Uno so wie auf dieser Seite beschrieben (https://www.konnekting.de/konnekting...x-mit-arduino/) verbunden.

    Das Einbinden, oder besser gesagt, das vergeben einer Adresse für den Simes Buskonverters über das ETS Programm ist nicht möglich, doch da bin ich mir fast sicher, dass das Normal ist. Möchte dennoch Fragen: Ist das Normal?

    Auf den Arduino Uno Landete ich die Bibliothek KonnektingDevice.h und das Beispielprogramm: "Comunikation_test".

    Beim Kompetieren ist mit aufgefallen, dass es viele Warnungen gibt. ist das Normal?

    Beim Hochladen musste ich die Steckverbindung aus dem RX Pin ziehen, sonst scheitert das Hochladen. Ist das Normal?

    Nach den Hochladen stecke ich den Pin wieder rein und will mir die Kommunikation auf den Seriellen Monitor ansehen. Da sehe ich nichts. Auch nicht, wenn ich den ReSet-Knopf des Arduinos Drücke. Ein Taster an den Pin 3 zu hängen hat auch keine Wirkung, doch ich denke, dass dies von dem Programm auch nicht unterstützt wird.

    Ich nehme an, ihr merkt, dass ich unerfahren in diesem Thema bin. Ich bitte um Unterstützung und um das aufzeigen möglicher Fehlerquellen.

    #2
    Du hast aber gleich eine ganze Menge an Fragen und Problemen. Das kann dauern.

    Zunächst mal eine Klarstellung: Konnekting-Geräte können nicht mit der ETS parametriert werden. Genau so, wie für KNX-Geräte mit der ETS und einer Gerätedatei fünktioniert es für Konnekting-Geräte mit der Konnekting-Suite und einer kdevice.xml-Datei. Wenn du in Arduino die Bibliothek eingebunden hast, so musst du dir zusätzlich die Suite herunter laden. Die Suite läuft unter Java und bringt auch noch ein Tool mit, mit dessen Hilfe du aus der XML-Datei die passende .h erstellen kannst.

    Die Fehlermeldungen sollten nur Warnmeldungen sein. Bei Arduino 1.8.9 sind sie noch nicht vorhanden. Sollte bei der nächsten Version der Bibliothek verschwunden sein.

    Der Uno hat nur eine serielle Hardware-Schnittstelle. Ich kann mich dunkel erinnern, dass in der Demo SoftSerial verwendet wird. Ich persönlich nutze keine Arduinos sondern nackte Mega 328P, die ich per ICSP programmiere. Empfehlen würde ich für erste Experimente einen Arduino Micro. Hier sind Serielle Schnittstelle und USB-Schnittstelle getrennt. Denn genau so, wie die BCU das Programmieren stört (durch ziehen des RX-Pins behoben), stört der USB-Wandler die Kommunikation zwischen 328P und BCU. Vielleicht einfach mal, für einen kurzen Test, die Pins für Tx und Rx des Prozessors aus der Fassung puhlen und direkt mit der BCU verbinden.

    Jetzt musste ich doch mal schauen, was Communication_test macht. Kannte ich noch gar nicht. Wie ich bei dem kurzen drüberschauen gesehen habe, ist das ein Testprogramm, das anders als ein Device, schon parametriert ist. Die Adressen stehen ganz oben.

    Viel Erfolg!
    Frank

    PS: Wenn es funktioniert, gib bitte Meldung. Ähnliche Probleme tauchen immer wieder auf. Der nächste kommt dann schneller zum Ziel.

    Kommentar


      #3
      ETS ist normal, auch das Problem mit dem programmieren. Du kannst mit dem 328p (der ist auf dem Uno) außer mit SoftSerial keine Debugausgaben haben.
      Das hat der Demosketch aber eigentlich drin. Hast du denn die Pins 10 und 11 über einen TTL UART to USB am PC hängen oder wie sollen die Ausgaben denn am PC ankommen?

      Probier mal ohne Verbindung zum PC und schau im ETS Gruppenmonitor.
      OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

      Kommentar


        #4
        Hallo, Danke für die Unterstützung. Leider ist es so, dass ich wenig aus euren Beiträgen mitnehmen kann. Vermutlich liegt es an meiner Unerfahrenheit.

        Zitat von Albatros62 Beitrag anzeigen
        so musst du dir zusätzlich die Suite herunter laden. Die Suite läuft unter Java
        Ich habe die Konnekting Sute hier Heruntergeladen: https://github.com/KONNEKTING/Konnek...ag/1.0.0-BETA4. Nach dem Entpacken der .zip Datei habe ich keine Ausführbare Datei gefunden. Muss ich Java dafür auf den Rechner Installieren? wenn j welches?

        Zitat von Albatros62 Beitrag anzeigen
        Die Fehlermeldungen sollten nur Warnmeldungen sein.
        ja das stimmt.
        Zitat von Albatros62 Beitrag anzeigen
        erste Experimente einen Arduino Micro.
        Danke. Aktuell habe ich keinen doch ich denke darüber nach, mir einen zuzulegen.

        Zitat von Albatros62 Beitrag anzeigen
        Vielleicht einfach mal, für einen kurzen Test, die Pins für Tx und Rx des Prozessors aus der Fassung puhlen und direkt mit der BCU verbinden.
        Die Prozessoren sind auf meinen Bords fest mit der Platine verlötet. Ich traue mich nicht an die Pins des Prozessors zu gehen und dort etwas aufzuschneiden.

        Zitat von SirSydom Beitrag anzeigen
        Hast du denn die Pins 10 und 11 über einen TTL UART to USB am PC hängen oder wie sollen die Ausgaben denn am PC ankommen?
        In meiner Vorstellung verbinde ich den Arduino wie im Beispiel mit den BCU und den Arduino mit den PC über USB. Danach kann ich auf den Seriellen Monitor auf den PC die Kommunikation aus den KNX Bereich auf den Monitor sehen. bestimmt keine klaren Nachrichten aber vielleicht Kommunikationspakete in HEX. Nun habe ich das Gefühl, dass es etwas Naiv ist, so zu denken. Gibt es eine Möglichkeit dies mit der Aktuellen Hardware zu realisieren?

        Zitat von SirSydom Beitrag anzeigen
        Probier mal ohne Verbindung zum PC und schau im ETS Gruppenmonitor.
        Ich habe den Arduino von USB Kabel getrennt und ihn über den BCU mit Spannung versorgt. Im Busmonitor von ETS habe ich auch nach einen Reset keine Aktion sehen können. Ich habe an, das liegt daran, dasss ich das "Sute" Problem noch nicht gelöst habe.

        Kommentar


          #5
          Die Suite enthält alles was du brauchst. Auch ein fix und fertiges Java. Installieren musst du gar nix. Nur die Suite auf deine Platte entpacken (installer gibt's nicht, einfach entpacken) Gestartet wird über eine der beiden .BAT Dateien aus der entsprechenden Distribution von hier:
          https://github.com/KONNEKTING/Konnek...ag/1.0.0-BETA4

          Wird bei dir sicherlich die hier sein: KonnektingSuiteDistribution-1.0.0-BETA4-dist-win64.zip

          Zitat von Robert91 Beitrag anzeigen
          In meiner Vorstellung verbinde ich den Arduino wie im Beispiel mit den BCU und den Arduino mit den PC über USB. Danach kann ich auf den Seriellen Monitor auf den PC die Kommunikation aus den KNX Bereich auf den Monitor sehen.
          Das wird definitiv nicht der Fall sein.

          Nochmal: KONNEKTING ist eine Software/Library mit der du KNX Geräte bauen kannst. Ja, dazu muss der Code auch KNX Telegramme senden und empfangen können. Aber du wirst auf der seriellen Schnittstelle definitiv NICHT die Bus-Kommunikation mitschneiden/lesen können und auch nicht selbst zusamengezimmerte KNX Telegramme senden können.

          Vielleicht fangen wir mal von vorne an: Was willst du genau mit Arduino + KNX machen. Bitte recht detailiert.

          Zitat von Robert91 Beitrag anzeigen
          Nun habe ich das Gefühl, dass es etwas Naiv ist, so zu denken. Gibt es eine Möglichkeit dies mit der Aktuellen Hardware zu realisieren?
          Naiv... kommt drauf an was du machen willst, welches Problem du lösen willst.

          Für mich klingt das bis jetzt, wie wenn du "einfach mal probieren willst was geht" und/oder du gerne einen low-level Zugriff auf die Buskommunikation haben möchtest (für was auch immer).

          "Probieren" kann man mit KONNEKTING, aber eben nur in richtung "probieren wie man ein 'richtiges' KNX Gerät baut". Low-Level Bus-Zugriff ... dafür ist KONNEKTING nicht gemacht und viel zu mächtig/schwergewichtig.


          Wenn du Low-Level Zugriff auf den Bus brauchst und eigentlich gar kein "ETS-ähnlich" zu programmierendes Gerät bauen willst, dann schau dir das an: https://knx-user-forum.de/forum/%C3%...arduino-am-knx

          Kommentar


            #6
            In der Firma für die ich Arbeite haben wir ein KNX Demonstationsboard. Deckenleuchten und Glastaster sind daran befestigt. Die in sich geschlossene Einheit funktioniert. Ein Konverter der Firma Kampmann (so etwas in etwa: https://www.kampmann.de/hvac/produkt...ren/katherm-id) liegt auf ein Tisch unter den Demonstationsboard. Für den Konvektor will ich eine "Simulation" basten: Ein Arduino ist mit KNX verbunden und an ihn angeschlossen ist ein OLED, ein Lüfter und ein paar LED's. Der Display zeigt an in welcher stufe der Lüfter sich dreht (1 - 5) und die roten LED's Simulieren die Heizung und die Blauen LED's die Kühlung des Raums. Das Ganze zusammengelegt in eine ansehnliche gedruckte Hülle und auf das Demoboard geschraubt.

            Der Glastaster auf den Bord hat ein Temperatusensor. Die Simulation soll Heizen, wenn der Sollwert unterschritten wird, und Kühlen, wenn er überschritten wird. Wie intensiv geheißt oder gekühlt werden soll hängt von Temperaturunterschied zwischen ist und soll ab.

            Ich hätte diese Beschreibung ganz zu Anfang mitgeben sollen. Bitte entschuldigt mein versäumen.

            Kommentar


              #7
              Das Projekt ist, wenn ich das richtig verstanden habe, ein komplettes Konnekting-Device. Man könnte dazu den Communication_test entsprechend aufbohren. Ich habe das so verstanden, dass die Gruppenadressen hardcodiert werden können, weil sie sich, einmal eingerichtet, nicht ändern werden. Daher ist die Suite nicht erforderlich. Der Uno mit dem fest verlöteten Mega ist ungeeignet. Sicher könnte man die Widerstände von den UART-Pins zu dem USB-Konverter im Schaltplan und dann auf der Platine suchen und durch Steckbrücken ersetzen. Allerdings musst du dich ja an die Sache heran testen und da ist es besser, wenn man nicht ständig umstecken muss. Der Micro arbeitet mit einem 32U4, der seine eigene USB-Schnittstelle mitbringt. Man kann darüber programmieren und monitoren, wären der TPUART seine eigene Schnittstelle besitzt.

              Ich würde mit dem LC-Display und den LED's anfangen. Wenn da alles funktioniert, dann kann man die LED's nach und nach den Kommunikationsobjekten und damit den Gruppenadressen für Heizen, Kühlen etc. zuordnen. Der Gruppenmonitor der ETS ist hier hilfreich, weil man damit auch auf einer bestimmten GA Daten senden kann. Wenn du so weit gekommen bist, dann wird es aufwändiger. Du must ja Zeiten erfassen und die Display-Ausgabe formatieren.

              Besorg dir einfach mal einen Micro und probier, diesen zum Laufen zu bringen. Da ich selbst einen Mikro und einen TPUART hier habe, könnte ich das eine oder andere nachbauen und dich unterstützen.

              Kommentar


                #8
                ich hab noch 3 Mega2560 Boards (die haben 4 UARTS + USB) das würde auch gehen da ich mit SAMD arbeite hab ich nicht mehr wirklich Verwendung und würde es günstig abgeben wenn Interesse besteht.
                OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                Kommentar


                  #9
                  Zitat von SirSydom Beitrag anzeigen
                  ich hab noch 3 Mega2560 Boards
                  Danke für das Angebot doch ein Mega liegt auch bei mir auf den Schreibtisch. Soweit ich das einsehen kann ist die KonnektingDevice.h nicht darauf ausgelegt ein Mega2560 zu unterstützen. Als ich ihn angeschlossen habe und das Programm hochladen wollte, kam die Präprozessormeldung, das die HW nicht unterstützt wird. Mir fällt auch gerade kein Privates Projekt ein, für das ich ein Mega gebrachen könnte. Falls sich das ändert, melde ich mich aber.

                  Ich werde den Rat von Albatros62 folgen und mit ein Micro besorgen. Wenn das erledigt ist, melde ich mich wieder.

                  Kommentar


                    #10
                    Der Mega 2560 sollte auch funktionieren. Er ist nur nicht im Sketch aufgelistet. Du müsstest ihn dort ergänzen. Dort müsstest du auch festlegen, welche serielle Schnittstelle du für das Monitoring und den TPUART verwenden willst.

                    Kommentar


                      #11
                      Code:
                      #elif ATmega2560
                      
                      HardwareSerial Serial1(18,19);
                      #define KNX_SERIAL Serial1
                      #define TEST_LED LED_BUILTIN // On board LED
                      #define DEBUGSERIAL Serial // USB port
                      Ich denke, dass sollte in etwa so aussehen. leider ist meine #elif Zeile nicht richtig. wie bezeichne ich den Mega richtig? und ich möchte für die Kommunikation mit den BCU über die Pins 18 und 19 machen. bezeichnet sind sie auf den Bord als TX1 und RX1.

                      Kommentar


                        #12
                        Zitat von Albatros62 Beitrag anzeigen
                        Der Mega 2560 sollte auch funktionieren.
                        Der Mega2560 funktioniert defintiv!

                        Code:
                        #elif __AVR_ATmega2560__
                        
                        #define KNX_SERIAL Serial1 //(Serial1 on Pin 18/19)
                        #define DEBUGSERIAL Serial //(USB)
                        #define TEST_LED LED_BUILTIN // On board LED on pin D13
                        bin mir aber mit dem elif nicht sicher, nimm die Zeile einfach raus und mache es "hart" rein, dann ist es eine Fehlerquelle weniger.
                        OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                        Kommentar


                          #13
                          "__AVR_ATmega2560__" sollte korrekt sein. TX1/RX1 und Pin 18/19 sind identisch.
                          Zuletzt geändert von Albatros62; 02.10.2020, 13:36.

                          Kommentar


                            #14
                            Ich wünsche ein gelungenen Start in die neue Woche.

                            Ich hatte nun den Code von SirSydom übernommen und bekomme nun endlich Nachrichten auf den Seriellen Monitor und auf den Gruppenmonitor von ETS5. Nachrichten aus den Seriellen Monitor:

                            Code:
                            14:28:40.927 -> DEBUG! free ram: 7467 bytes
                            14:28:40.927 -> Initialize KonnektingDevice
                            14:28:40.927 -> 15/7/255 = 0x7fff
                            14:28:40.927 -> Toggle ProgLED, actual state: 0
                            14:28:40.927 -> PrgLed 0
                            14:28:40.927 -> PrgState 0
                            14:28:40.927 -> Manufacturer: 0xdead Device: 0xff Revision: 0x00
                            14:28:40.962 -> numberOfCommObjects: 2
                            14:28:40.962 -> memRead: index=0x00 using fctptr data=0x7f
                            14:28:40.962 -> _deviceFlags: 01111111
                            14:28:40.962 -> ->EEPROM
                            14:28:40.962 -> memRead: index=0x01 using fctptr data=0x11
                            14:28:40.962 -> memRead: index=0x02 using fctptr data=0xc7
                            14:28:40.962 -> memRead: index=0x0a using fctptr data=0x3f
                            14:28:40.962 -> memRead: index=0x0b using fctptr data=0x07
                            14:28:40.962 -> memRead: index=0x0c using fctptr data=0x80
                            14:28:40.962 -> ComObj index=0 HI=0x3f LO=0x07 GA=0x3f07 setting=0x80 active=1
                            14:28:40.995 -> memRead: index=0x0d using fctptr data=0x3f
                            14:28:40.995 -> memRead: index=0x0e using fctptr data=0x08
                            14:28:40.995 -> memRead: index=0x0f using fctptr data=0x80
                            14:28:40.995 -> ComObj index=1 HI=0x3f LO=0x08 GA=0x3f08 setting=0x80 active=1
                            14:28:40.995 -> IA: 0x11c7
                            14:28:40.995 -> Reset triggered!
                            14:28:40.995 -> Reset attempts: 9
                            14:28:40.995 -> Data available: 1
                            14:28:40.995 -> data not useable: 0x00. Expected: 0x03
                            14:28:40.995 -> Data available: 1
                            14:28:40.995 -> Reset successful
                            14:28:40.995 -> Init : Normal mode started
                            14:28:40.995 ->
                            14:28:40.995 -> Init successful
                            14:28:41.029 -> KnxDevice startup status: 0x00
                            14:28:41.029 -> Toggle LED every 2000 ms.
                            14:28:41.029 -> Setup is ready. Turning LED on and going to loop...
                            14:28:41.029 -> Sending: 0
                            14:28:41.029 -> DONE
                            14:28:41.029 ->
                            14:28:43.007 -> Sending: 1
                            14:28:43.007 -> DONE
                            14:28:43.007 ->
                            14:28:45.023 -> Sending: 0
                            14:28:45.023 -> DONE
                            14:28:45.023 ->
                            14:28:46.997 -> Sending: 1
                            14:28:46.997 -> DONE
                            14:28:46.997 ->
                            Diese Nachrichten decken sich auch mit den Busmonitor. Danke für die Unterstützung bis hier her.

                            Jetzt möchte ich Anfangen, den Arduino auf Impulse aus den KNX Netz reagieren zu lassen. Meine Idee ist, den BCU über die Sute eine Physikalische Adresse zu geben und dieses "neue" Gerät nun in die bestehende Gruppe in ETS5 hinzuzufügen. Nachdem das passiert ist, möchte ich mit dem Glastaster (ein KNX Modul auf dem Demonstationsboard) eine LED (oder die LED) auf den Arduino Mega ein und wieder aus schalten können.
                            Sind diese Schritte Zielführend oder sollte ich es anders machen? und wenn anderes, dann wie?

                            Kommentar


                              #15
                              Der Arduino sollte die physikalische Adresse 1.1.199 haben. Das sollte der ETS-Gruppenmonitor auch so anzeigen. Abwechselnd sollte auf Gruppenadresse 7/7/8 On und Off gesendet werden. Im Gruppenmonitor müsstest du auf Adresse 7/7/7 On oder Off senden können. Damit wird dann die LED ein- oder ausgeschaltet. Die physikalische Adresse wird je Gerät (und nicht je Funktion) vergeben. Wird im Normalbetrieb aber gar nicht benötigt (nur Absenderadresse im Gruppenmonitor). Wenn du im Glastaster die GA 7/7/7 mit der ETS programmierst, dann müsstest du die LED mit dem Taster ein- und ausschalten können.

                              PS: Die physikalische Adresse hat nichts mit der BCU zu tun. Die BCU gibt einfach alle Daten am Bus an den Prozessor weiter und umgekehrt.
                              Zuletzt geändert von Albatros62; 05.10.2020, 14:48.

                              Kommentar

                              Lädt...
                              X