Ankündigung

Einklappen
Keine Ankündigung bisher.

Siemens BCU "nicht resetbar" ?!

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

    Siemens BCU "nicht resetbar" ?!

    Hey,

    ich knabbere gerade an einem kleinen Problem und komm nicht weiter...

    Ich hab hier eine Siemens BCU an einem Arduino.

    Gemäß Datenblatt (http://www.opternus.com/uploads/medi...t_20130806.pdf) sende ich einen "U_Reset.request-Service", also 0x01 (Siehe Seite 22).
    Die Antwort des BCU sollte sein: "TP-UART-Reset.indication", also 0x03 (Siehe Seite 44).

    Aber stattdessen bekomme ich in unregelmäßiger Reihenfolge und Häufigkeit pro Reset-Request eines der folgenden Bytes:

    0xfd
    0xf8
    0xf1
    0xf2
    0xf4
    0xfe

    Die KNX Busleitung ist am BCU angeschlossen und sonst funktional.

    Das ganze hat schon mal funktioniert... An der Stelle im Code hab ich auch nix geändert. Die bytes die ich da empfange kann ich auch mit dem Datenblatt nicht zuordnen...

    Any ideas?!

    Gruß
    Alex


    [update]
    ein zweiter BCU verhält sich genau so... Am BCU liegts demnach wohl nicht.
    Zuletzt geändert von tuxedo; 30.06.2016, 21:50.

    #2
    Hallo tuxedo,

    das Muster sieht mir ganz nach einem Bitversatz aus... Bist Du Dir sicher das Du die Schnittstelle auf 9600 oder 19200 8E1 eingestellt hast (siehe Datenblatt Seite 21)? IIRC macht der Arduino standardmaessig 8N1 und dann wuerde das parity bit fehlen...

    Viele Gruesse,

    Sven

    Kommentar


      #3
      Jepp, steht auf 8E1 ... Der Code dafür ist ja auch schon ein wenig Älter und funktionierte bisher. Ich hab lediglich an einer ganz anderen Ecke strukturelle Änderungen vorgenommen und leider länger nicht mehr getestet. Nun nun stelle ich fest, dass die BCU nicht die gewünschte Antwort liefert. Die eingesetzte Hardware ist fertig aufgebaut und hat auch vor dieser Änderung schon funktioniert.

      Werde zur Sicherheit aber mal das ganze mal noch ohne Arduino, direkt am PC ausprobieren und da den Reset von Hand triggern (nicht dass die BCU doch ne Macke hat). Kann auch noch mit dem Logic-Analyzer mal drauf schauen was da wirklich kommt. Vielleicht hat auch der Arduino ein Problem?!

      Kommentar


        #4
        Hallo Alex,

        entweder passt die Bitrate nicht (der TPUART2 kann 9600 und 19200 Baud, weiß nicht, was die BCU von sich gibt) oder es ist das Parity Bit.
        Bei falscher Übertragung müsste der TPUART mit einer state.indication mit "protocol error" reagieren, also 0x17.
        Mein Verdacht: der TPUART sendet mit 19200, du sampelst aber mit 9600. Dein höherwertiges Nibble ist nämlich immer 0xF, also High. Das ist aber auch der Ruhezustand auf dem Bus. Wenn der TPUART nach 8x52µs schon mit Senden fertig ist, du aber 8x104µs zuhörst, sind in den vier MSB (oberes Nibble) nur Einsen. Das passt zum Bild.

        Du hast doch einen Logic Analyzer, häng den doch mal dran.

        Max

        Kommentar


          #5
          Der Siemens BCu macht auch 19200 Baud.

          Mein Verdacht: der TPUART sendet mit 19200, du sampelst aber mit 9600.
          Da bringst du mich auf eine Idee... Ich hab gestern ne ganze Weile am Logging über SoftSerial gesessen. Eingestellt waren 9600 Baud... Aber mein Terminal hat mir mit 9600 Baud nur kryptische Zeichen geliefert. Softserial auf 19200 und Terminal ebenfalls auf 19200 Baud und schon klappte das Logging.

          Vielleicht ist irgendwo - wie auch immer - ein Register oder so falsch und das Timing passt nicht mehr. Gut, Softserial ist ne ganz andere Geschichte, aber es könnte ein Hinweis sein.

          Im Code hab ich jedenfalls für die KNX Schnittstelle 19200 8E1 eingestellt, und der Siemens BCU macht genau das. Der Code lief ja auch schon einmal ...

          Kommentar


            #6
            So, endlich mal den Saleae dran gehängt...

            Auf der TX Leitung zwischen µC und BCU müsste ich ja den Reset-Request sehen. Also 0x01.

            Das schaff ich aber nur, wenn ich den Analyzer auf 9600-8E1 einstelle... Im Code steht aber 19200-8E1 ...
            Forciere ich den Analyzer auf 19200-8E1 dann bekommt ich in der Auswertung "'6' (0x06) (framing error)"

            *mysteriös* Irgendwie scheint der Arduino da bockmist zu bauen. Muss ich den Code wohl nochmal genauer debuggen.

            Interessanterweise sehe ich mit dem Analyzer kein einziges byte etc. auf der TX Leitung vom BCU zum µC, während der µC aber fleissig der Meinung ist da kommt was.

            Kommentar


              #7
              Ohe je... Schande über mich. Des Rätsels Lösung ist gefunden:

              Der Arduino läuft nicht mit 5V/16Mhz sondern mit 3.3V/8Mhz ... Kaum macht man's richtig, geht's.

              Kommentar

              Lädt...
              X