Ankündigung

Einklappen
Keine Ankündigung bisher.

91 Geräte auf einer Linie mit Adressen von 1.1.x bis 1.15.x

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

    KNX/EIB 91 Geräte auf einer Linie mit Adressen von 1.1.x bis 1.15.x

    Hallo Forum,
    ich sichte gerade das EIB Projekt unseres Feuerwehrhauses. (Ist schon 6 Jahre im Dienst, tut auch alles mehr oder weniger gut; Elektriker ging damals Pleite)

    Mein Hintergrund: Ich bin kein Profi, habe mich allerdings vor 11 Jahren im Rahmen meiner Abschlussarbeit mit EIB auseinander gesetzt und unser Firmengebäude mit ca. 400 Teilnehmern Programmiert (inkl. Homeserver...der heute noch rennt! Gutes Teil!)(1 Bereich, 8 Linien)

    Zu meinen Fragen
    Beim ersten Sichten des Projekts viel mir auf, dass keine Koppler projektiert sind, damit schließe ich auf eine Line. Allerdings ist auch kein Linienverstärker projektiert (>63 Teilnehmer) was mich dann auch stutzig macht.

    Schaue ich nun die Topologieansicht an (Screenshot), sehe ich Adressbereiche für 15 Linien. Die Adressbereiche scheinen in "Räume" untergliedert zu sein. Die Gruppenadressen übrigens auch...
    Bei den Gruppenadressen denke ich ist es einfach nur "Chaotisch" hat aber technisch keinen Einfluss.

    Wie sieht es aber mit der Physikalischen Adressierung aus?
    Was passiert wenn man in einer Linie wild alle Adressen vergibt?
    Da es schon seit 6 Jahren funktioniert scheint es ja nicht wild zu sein. Zumindest wenn kein Koppler im Spiel ist. So scheint es zumindest.

    Mich würde es aber dennoch interessieren, was für Ereignisse zu erwarten sind, wenn man sowas macht. Habt Ihr da Erfahrungen?

    Grüße
    Ralf
    You do not have permission to view this gallery.
    This gallery has 1 photos.

    #2
    Ist Murks - fällt halt ohne Koppler nicht auf.
    Gruss
    GLT

    Kommentar


      #3
      Moin Ralf,
      die PA braucht die ETS, wenn du einen Teilnehmer programmieren möchtest.
      Untereinander reagieren die Teilnehmer, außer Koppler, nur auf die GA.
      Koppler trennen Netzsegmente physisch über die angeschlossene Leitung sowie logisch über die PA.
      Wenn deine Topologie nicht stimmt und du baust einen Koppler ein, dürftest das zu ziemlichem Chaos führen.

      Wenn bei >63 Teilnehmern kein Koppler projektiert ist, dann hat das Projekt wahrscheinlich auch nur ein Netzteil. Damit fährst du elektrisch zumindest an (oder jenseits) der Grenze der Spezifikation. Hierbei ist nicht auszuschließen, dass das irgendwann zu nicht erklärbaren Phänomen führt.

      Gruß, Sebastian
      Baustelle 2.0 (Detailprogrammierung und Restarbeiten)
      Ruhri? -> Komm zum Stammtisch

      Kommentar


        #4
        ja es läuft erstmal solange es so bleibt, würde aber dennoch raten das zu ändern bzw. hinzuweisen, dass die Programmierung bzw. Topologie falsch ist.
        Gruß Andree Czybulski

        Kommentar


          #5
          Du kannst schrittweise die PAs anpassen, ohne jeweils den Programmierknopf zu drücken (Physikalische Adresse überschreiben) Das geht aber nur immer für ein Gerät.

          Ich würde mir eine "saubere" Struktur ausdenken und entsprechend anpassen.
          Schau mal nach dem Netzteil, es könnte auch eine größere Leistung haben. Ich würde jetzt entweder auf ein 1280iger Netzteil von MDT wechseln (falls nicht schon ein 960 mA eingebaut ist) oder aber einen Koppler einbauen und eine 2 Linie aufbauen.

          Schau mal interessehalber auf KNX Projekt überprüfen, da dürfte es Fehlermeldungen hageln. Immerhin hast du das Projekt, und das ist in der Situation Gold wert

          Gruß
          Florian

          Kommentar


            #6
            Hallo zusammen,
            vielen Dank für die schnellen Antworten, in dem Fall lag ich mit meiner Vermutung richtig...ist vermurkst.

            @Florian: ja, ich hatte mir auch überlegt nach und nach alle Teilnehmer auf die richtige PA zu setzen. Das schon mal aus Prinzip, auch wenn's in einer Linie so tut.

            Ich war heute vor Ort und hab mal in alle Schaltschränke geschaut, und es ist schon so wie im Projekt dargestellt.
            -Eine Spannungsversorgung GIRA 640mA unterbrechungsfrei
            -Nur eine Linie
            -Kein Linienverstärker

            Läuft das bei 91 Teilnehmer nicht auf Überlast? Kann man das messen? Die Überlast LED leuchtet mal nicht...

            Noch eine Frage zur Verdrahtung. Bisher ging ich davon aus, dass innerhalb der Linie eine klares Daisy-Chain eingehalten werden muss / sollte.
            Hier liegt aber eine Stern / Baum Verkabelung vor.
            Z.B. Laufen vom Netzteil 4 EIB-Leitungen weg. Unterwegs kommen dann noch der ein oder andere kurze Ast hinzug.

            An der Verkabelung selber will ich im großen und Ganzen erst mal nichts ändern. Weil: es tut ja.
            Wo es geht, hätte ich versucht die Verkabelung aus dem Stern in eine Daisy-Chain zu bekommen, wobei, wenn die 4 Leitungen von der Stromversorgung weg Stichleitungen sind, dann wird das wohl nix werden....

            Eine 2. Linie einführen seh ich grad auch keinen Vorteil, da bräuchte ich nochmals zwei Netzteile und zwei Koppler.
            Wenn dann eher einen LV einfügen wenn es dann doch mal mucken macht.

            Was habt ihr für Ideen für die Herangehensweise? Fokus auf minimalste Änderungen an der Hardware / Minimalste Hardwarekosten.
            Gruß
            Ralf

            Kommentar


              #7
              1. PA Vergabe Murks, läuft aber, weil nur 1 Segment.
              2. 91 Teinehmer Murk, läuft aber, weil Netzteil mehr aushält.
              3. Daisy Duck, nein. Alles ausser Ring ist erlaubt.

              Tut das Not? Irgendwas zu ändern? Wenn Du willst, bau nen LV ein mit ner 2. SPV

              Wenn es läuft, dann läufts. Ned anfassen. Es sei denn es wird bezahlt. Oder Du hast zu viel Freizeit.

              90 Adressen umschiessen mit "PA überschreiben" macht bei 9 PAs pro Stunde 10 Stunden. (Wenn Du ganz schnell bist).
              Bei 6 PAs (je 10 Minuten) dann mal 15 Stunden.
              Bei einem Stundenlohn von xyz Euro macht das gesamt abcd Euro netto.

              Kosten und Nutzen gegenüber stellen, abwägen, entscheiden.
              Zuletzt geändert von PeterPan; 07.08.2017, 23:48.
              Smart Building Design GmbH (everything) - www.smart-building-design.com
              Smart Building Services GmbH (Onlineshop) - www.knxshop4u.ch
              Tapko Technologies GmbH (Sales DACH) - www.tapko.de
              SBS GmbH on FB - PeterPan on FB

              Kommentar


                #8
                Zitat von PeterPan Beitrag anzeigen
                2. 91 Teinehmer Murk, läuft aber, weil Netzteil mehr aushält.
                oder weil die Teilnehmer jeweils weniger als die maximal erlaubten 10mA ziehen.

                Gruß, Sebastian
                Baustelle 2.0 (Detailprogrammierung und Restarbeiten)
                Ruhri? -> Komm zum Stammtisch

                Kommentar


                  #9
                  Viele Relais bei KNX sind Bistabil, d.h. sie benötigen nur Strom beim Schalten. Es kann dir also passieren, dass bei Zentralbefehlen Probleme auftauchen.

                  Ich würde in jedem Fall ein großes Netzteil mit 1280 mA einbauen. Wenn jemand bereit ist, den Rest zu bezahlen, kann man die Anlage richtig umprogrammieren, oder du machst deine 2. Diplomarbeit und siehst alles als Lerneffekt - oder never change a running system.

                  Gruß
                  Florian

                  Kommentar


                    #10
                    Ohne Linienkoppler ist es tatsächlich egal. Das Gateway schreibt (beim Programmieren) einen Frame mit der PA auf den Bus, und das abgesprochene Gerät reagiert dann darauf. Ein Gerät hat keine Ahnung, in welcher Linie es hängt. Erst hinter einem Linienkoppler wird es schwierig, weil der natürlich von einer korrekten Topologie ausgeht.

                    Die Mindeststromaufnahme eines KNX-Geräts sind ca. 4mA (das braucht der TPUART). 10mA sind das zulässige Maximum, die ein Taster o.ä. aber in der Realität nie erreichen wird (von Lichtorgeln wie dem Dakanimo mal abgesehen).

                    In Summe bin ich voll bei Peter Pan: wenn es läuft, nicht anfassen. Die PAs kann man auch mit eibd und einem kleinen Skript ändern (was den manuellen Aufwand reduziert), aber zum einen sind dann ETS und Anlage nicht mehr synchron, und zum anderen: was bringt das?

                    Kommentar


                      #11
                      Zitat von l0wside Beitrag anzeigen

                      In Summe bin ich voll bei Peter Pan: wenn es läuft, nicht anfassen. Die PAs kann man auch mit eibd und einem kleinen Skript ändern (was den manuellen Aufwand reduziert), aber zum einen sind dann ETS und Anlage nicht mehr synchron, und zum anderen: was bringt das?
                      Mich würde mal interessieren wie das script aussieht ich hab mir grad schon nen wurm gesucht bzw. es müsste ja auch mit knxd den ich nutze gehn ich hab da nämlich demnächst ähnliches vor aber irgendwie blick ich nicht so ganz durch die doku von knxd

                      Kommentar


                        #12
                        ACHTUNG: von diesen Änderungen bekommt die ETS nichts mit! Es werden nur die Geräte geändert, nicht die Datenbank!

                        Die Aufrufe des eibd sind simpel. Es braucht:
                        Code:
                        progmodeon local:/tmp/eib $alteadresse
                        writeaddress local:/tmp/eib $neueadresse
                        Ein Shellskript zu schreiben, das das auf Basis einer Tabelle immer wieder aufruft, überlasse ich dem geneigten Leser. Wer´s ganz eilig hat, kriegt auch meinen Code von fastwriteaddress, da ist die Adresse dann innerhalb von 2 Sekunden ins Gerät geschrieben.

                        Die URL muss natürlich angepasst werden. Mit knxd bin ich nicht recht warm geworden, das liegt aber vermutlich an meiner Faulheit.

                        Kommentar


                          #13
                          Hallo zusammen,
                          danke nochmals für euere Tipps.
                          Also, ich nehme mit:
                          -PA anpassen in einer Linie ist hier nur "Schöner Wohnen"
                          -Verdrahtung kann ich so lassen, ist zumindest nicht falsch
                          -Netzteil ist theoretisch zu schwach, tut aber in der Praxis, weil es entweder ein Top Gerät ist, oder die Teilnehmer recht sparsam, oder kein Gleichzeitigkeitseffekt anliegt.

                          Klar lässt man da normal die Finger weg.

                          Leider tut halt nicht alles. Aktuell ist die Fenster- und Lüftungssteuerung durcheinander gekommen. (Die Lüftung geht an, das Fenster geht zu, statt auf...könnt euch vorstellen was die Umkleide für ne Luft hat...)
                          Ist aber kein Wunder, die Programmierung ist genauso lapsig wie die Topologie...

                          Da wäre noch der Heizkörper die sich nicht regeln lässt..(ist jetzt auch klar, keine GA am Raumregler programmiert)
                          und und und, ich find immer wieder neues.
                          Und die ersten Änderungswünsche der Kameraden sind auch schon da.

                          Das Ganze werd ich auf Hobby buchen, das hat bekanntlich ein offenes Budget ;o)
                          Es muss ja auch nicht von heute auf morgen alles erledigt sein, ich versuch nur einen Masterplan zu haben, den ich dann je nach Zeit und Lust umsetze.

                          So werd ich sicher den Geräten die ich "anfasse" ne neue PA geben. So regelt es sich nach und nach.
                          Muss nur schauen, das ich fertig werd solange ich noch Spass dran habe ;o)

                          Besten Dank an alle!
                          Gruß
                          Ralf

                          Kommentar


                            #14
                            Genau so...
                            Smart Building Design GmbH (everything) - www.smart-building-design.com
                            Smart Building Services GmbH (Onlineshop) - www.knxshop4u.ch
                            Tapko Technologies GmbH (Sales DACH) - www.tapko.de
                            SBS GmbH on FB - PeterPan on FB

                            Kommentar


                              #15
                              Nachdem ich per PN nach dem Sourcecode von fastwriteaddress gefragt wurde: hier ist er.
                              Code:
                              /*
                                  EIB Demo program - write individual address
                                  Copyright (C) 2005-2011 Martin Koegler <mkoegler@auto.tuwien.ac.at>
                              
                                  This program is free software; you can redistribute it and/or modify
                                  it under the terms of the GNU General Public License as published by
                                  the Free Software Foundation; either version 2 of the License, or
                                  (at your option) any later version.
                              
                                  This program is distributed in the hope that it will be useful,
                                  but WITHOUT ANY WARRANTY; without even the implied warranty of
                                  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                                  GNU General Public License for more details.
                              
                                  You should have received a copy of the GNU General Public License
                                  along with this program; if not, write to the Free Software
                                  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
                              */
                              #include "common.h"
                              #include <stdio.h>
                              #include <string.h>
                              #include <unistd.h>
                              #include <stdbool.h>
                              
                              #define BUFSIZE 256
                              const uint8_t PAWrite_PDU[] = {0x00,0xC0};
                              uint8_t readbfr[BUFSIZE];
                              bool force;
                              
                              int main (int ac, char *ag[])
                              {
                                int len, res, n;
                                EIBConnection *con;
                                eibaddr_t dest, src;
                                if (ac < 3)
                                  die ("usage: %s [--force] url eibaddr", ag[0]);
                              
                                if (!strcmp(ag[1],"--force")) {
                                  ag++;
                                  ac--;
                                  force = true;
                                } else {
                                  force = false;
                                }
                              
                                con = EIBSocketURL (ag[1]);
                                if (!con)
                                  die ("Open failed");
                              
                                dest = readaddr (ag[2]);
                              
                                if (!force) {
                                  len = EIB_M_ReadIndividualAddresses(con,BUFSIZE,readbfr);
                                  if (len == 0) {
                                    die("No device in programming mode");
                                  } else if (len > 2) {
                                    die("More than one device in programming mode");
                                  }
                                }
                              
                                res = EIBOpenT_Broadcast(con,0);
                                if (res < 0) {
                                  die("Cannot open broadcast connection");
                                }
                              
                                memcpy(readbfr,PAWrite_PDU,2);
                                readbfr[2] = dest >> 8;
                                readbfr[3] = dest & 0xFF;
                              
                                res = EIBSendAPDU(con,4,readbfr);
                                if (res < 4) {
                                  die("Cannot send address");
                                }
                              
                                usleep(500000);
                                for (n=0; n < 10; n++) {
                                  res = EIB_M_GetMaskVersion(con,dest);
                                  if (res >= 0) {
                                    break;
                                  }
                                }
                                printf("mask %04X\n",res);
                                if (res < 0) {
                                  die("Cannot read mask version, set address failed");
                                }
                                EIBClose (con);
                              
                                usleep(500000);
                                con = EIBSocketURL (ag[1]);
                              
                                len = EIB_M_Progmode_Off (con, dest);
                                if (len == -1)
                                  die ("Set failed");
                              
                              #if 0
                              
                              
                                res = EIBOpenT_Individual(con,dest,0);
                                if (res < 0) {
                                  die("Cannot connect to device");
                                }
                              
                              
                              
                                readbfr[0] = 0x20;
                                readbfr[1] = 0x81;
                                readbfr[2] = 0x00;
                                readbfr[3] = 0x60;
                                readbfr[4] = 0x00;
                              
                                res = EIBSendAPDU(con,5,readbfr);
                                if (res < 0) {
                                  die("Cannot write to 0x60");
                                }
                              #endif
                                EIBClose (con);
                                return 0;
                              }
                              Übersetzen wie folgt:
                              • eibd herunterladen, entpacken, übersetzen - dazu gibt es ausreichend Doku
                              • Den obigen Code in bcusdk-0.0.5/eibd/examples/fastwriteaddress.c speichern
                              • cd bcusdk-0.0.5/eibd/examples
                              • gcc -c fastwriteaddress.c
                              • gcc -o fastwriteaddress fastwriteaddress.o common.o -leibclient

                              Eventuell muss man mit -I und -L dem gcc noch etwas helfen.

                              Aufruf:
                              fastwriteaddress [--force] <url> <PA>

                              Mit dem Parameter --force wird ohne Rücksicht auf Verluste der Schreibbefehl rausgeschossen. Ohne schaut das Progrämmchen wenigstens noch, ob ein Gerät im Programmiermodus ist.

                              Fehlerhandling ist nicht explizit implementiert, wenn kein Gerät zum Programmieren da ist, hängt das Programm. Verbesserungen willkommen.

                              Kommentar

                              Lädt...
                              X