Ankündigung

Einklappen
Keine Ankündigung bisher.

>> Smelly One <<

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

    Lieber dreamy1

    es ist bald Weihnachten und ich wünsche mir etwas vom Christkind.

    Eine Ankündigung von dir wann es denn ungefähr den Feinstaubsensor geben wird Bitteeee

    lg
    Christian

    Kommentar


      Hi Christian,

      am DUSTI bin ich immer mal wieder dran, das Design wird wohl über die Weihnachtstage sein Ende finden (da habe ich auch wieder mehr Luft). Ich denke Q2/2021 für ein Paket vom DHL ist da nicht unrealistisch.

      Jetzt aber bitte wieder back to topic, hier gehts doch um den Smelly :-)
      Viele Grüße,
      Stefan

      DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

      Kommentar


        Hallo zusammen,

        Ich versuche schon länger den RTR des Smelly zu optimieren, komme aber nicht wirklich zu einem sauberen Ergebnis.
        Nun mal die Frage, wer nutzt denn noch alles den RTR des Smelly?

        Was hab ich bisher versucht:

        Ich steuere mit dem RTR eine FBH, nun habe ich festgestellt, dass wenn der Istwert>Sollwert ist, der Smelly das Ventil sofort wieder schließt.

        Code:
        if ((RTR)&&[MARKIEREN](Sollwert>temp)[/MARKIEREN]) {
        ...
        ...
              if (y_res >= (oldy_res + offsetBus) || y_res < (oldy_res - offsetBus)) {
              oldy_res = y_res; //Stellgröße Wert nerken
              result = knx.groupWrite1ByteInt(KNX_GA_VALVE, (y_res*2.55));
              }
           }
        }
        else if (((BA==1)||(BA==3)||(BA==4))&&(y_res!=0)&&(temp>=S ollwert)&&(RTR)) {[MARKIEREN]y_res=0[/MARKIEREN]; Valve_str=float2str(y_res,0); result = knx.groupWrite1ByteInt(KNX_GA_VALVE, y_res);} //Stellgröße 0 setzen, wenn keine Regelung
        Das ist bei einer FBH nicht gerade sinnvoll.
        Nun hab ich den oben genannten Code wie folgt geändert:

        Code:
        if (RTR) {
        ...
        ...
              if (y_res >= (oldy_res + offsetBus) || y_res < (oldy_res - offsetBus)) {
              oldy_res = y_res; //Stellgröße Wert nerken
              result = knx.groupWrite1ByteInt(KNX_GA_VALVE, (y_res*2.55));
              }
           }
        }
        Dabei ist mir dann aufgefallen dass das Stellsignal noch mit 2.55 multipliziert wird, ich dachte es wird hier mit 0-100% gearbeitet, so hatte ich auch meinen Ventilantrieb-Aktor auf PWM 0-100% eingestellt.

        Also hab ich überall im Code die "*2.55" entfernt.

        Jetzt habe ich das Problem dass der Smelly eine Ventilstellung von 100% zeigt aber laut Aufzeichnung es nur 39% sind. Nun weiß ich nicht was wirklich passiert.
        Habe zu Testzwecken weitere KNX_GAs angelegt, aber die verwirren mich eher als dass sie mir helfen.

        Kann mir jemand helfen den RTR vom Smelly für meine FBH zu optimieren?

        Gruß Tom
        Zuletzt geändert von TomW80; 06.12.2020, 23:14.

        Kommentar


          Hi Tom,

          da kann wohl nur WagoKlemme helfen.
          Viele Grüße,
          Stefan

          DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

          Kommentar


            Ich vermute mal der Faktor 2.55 war drin da der Wert (denke ein DPT 5/6) mit 0-255 für die Einstellung der Ventile verwendet wird, dargestellt allerdings mit 0-100%. Würde wieder mit dem Faktor passen 39*2,55=99,45
            Grüße
            Dirk

            Kommentar


              Zitat von dreamy1 Beitrag anzeigen
              Hi Tom,

              da kann wohl nur WagoKlemme helfen.
              OK

              Zitat von Dirk81 Beitrag anzeigen
              Ich vermute mal der Faktor 2.55 war drin da der Wert (denke ein DPT 5/6) mit 0-255 für die Einstellung der Ventile verwendet wird, dargestellt allerdings mit 0-100%. Würde wieder mit dem Faktor passen 39*2,55=99,45
              Wie gesagt habe ich alle Multiplikationen/Divisionen mit 2.55 entfernt, mein Ventil wird mit DPT 5.001 (0-100%) gesteuert.

              Kommentar


                Hi

                Zitat von TomW80 Beitrag anzeigen
                Wie gesagt habe ich alle Multiplikationen/Divisionen mit 2.55 entfernt, mein Ventil wird mit DPT 5.001 (0-100%) gesteuert.
                Das hat aber nichts zu sagen denn DPT 5 ist ein Byte, also Werte von 0-255. Diese werden beim DPT 5.001 lediglich als Prozentwert dargestellt. Wird wie hier mit Prozenten gerechnet, bleibt der DPT auf dem Bus aber immer noch ein Byte ist und deshalb muss der Prozentwert mit 2.55 multipliziert werden, um aus den internen Prozent dann einen Wert im Bereich zwischen 0 und 255 zu machen.
                Kind regards,
                Yves

                Kommentar


                  Zitat von starwarsfan Beitrag anzeigen
                  Das hat aber nichts zu sagen denn DPT 5 ist ein Byte, also Werte von 0-255. Diese werden beim DPT 5.001 lediglich als Prozentwert dargestellt. Wird wie hier mit Prozenten gerechnet, bleibt der DPT auf dem Bus aber immer noch ein Byte ist und deshalb muss der Prozentwert mit 2.55 multipliziert werden, um aus den internen Prozent dann einen Wert im Bereich zwischen 0 und 255 zu machen.
                  Ok, aber dann versteh ich nicht warum der Smelly bei einer Solltemperatur von 22,50 °C und einer Isttemperatur von 23,34°C das Ventil 100% öffnen will.

                  Wie oben schon erwähnt hab ich zur Analyse des P-, I- und D-Anteils weitere KNX_GAs eingefügt.
                  Hier zeigt mir der P-Anteil bei den o.g. Temperaturen einen Wert von 255,04 (Kp =5 und TI= 30*60)

                  Sind meine Änderungen für die Analyse so überhaupt korrekt?
                  Kann ich den Byte-Wert so einfach als Float-Wert speichern oder muss ich den umwandeln?

                  Code:
                  //RTR
                  float d, e_sum, e_alt=0, Sollwert=0, Sollwert_alt=0, Ki, Kd=0,[MARKIEREN] fyP, fyI, fyD;[/MARKIEREN]
                  byte yP, yI, yD, y_res, oldy_res, oldy;
                  unsigned long Td;
                  ...
                  ...
                  ...
                  //RTR
                  
                  //if ((RTR)&&(Sollwert>temp)) {
                  if (RTR) { //Regelung notwendig ?
                  if (Sollwert!=Sollwert_alt) {
                  Sollwert_alt=Sollwert;
                  e_sum=0;
                  e_alt=Sollwert-temp;
                  }
                  else if ((millis() - prevMillisRTR > (Ti*1000))&&(! MinMax)) { //Regelalgorithmus starten
                  prevMillisRTR = millis();
                  d=Sollwert-temp;
                  result = knx.groupWrite2ByteFloat(KNX_GA_D, d);
                  // P-Glied:
                  yP = (Kp * d);
                  [MARKIEREN]fyP = yP;
                  result = knx.groupWrite2ByteFloat(KNX_GA_YP, fyP);[/MARKIEREN]
                  if (Kp==0) { Kp = 1; }
                  // I-Glied:
                  Ki = Kp / Ti;
                  e_sum = e_sum + d;
                  if (!I_Glied) Ki=0;
                  else if (Windup) {
                  if (e_sum>(y_max/(Ki*Ti))) {e_sum=y_max/(Ki*Ti);}
                  if (e_sum<(y_min/(Ki*Ti))) {e_sum=y_min/(Ki*Ti);}
                  }
                  [MARKIEREN]result = knx.groupWrite2ByteFloat(KNX_GA_ESUM, e_sum);[/MARKIEREN]
                  yI = Ki * Ti * e_sum;
                  [MARKIEREN]fyI = yI;
                  result = knx.groupWrite2ByteFloat(KNX_GA_YI, fyI);[/MARKIEREN]
                  // D-Glied:
                  Td = Ti;
                  Kd = Kp * Td;
                  yD = Kd * (d-e_alt) / Td;
                  [MARKIEREN]fyD = yD;
                  result = knx.groupWrite2ByteFloat(KNX_GA_YD, fyD);[/MARKIEREN]
                  e_alt=d;
                  
                  // Gesamt-Stellgröße
                  if (!P_Glied) yP=0; // P-Anteil nullen
                  if (!I_Glied) yI=0; // I-Anteil nullen
                  if (!D_Glied) yD=0; // D-Anteil nullen
                  y_res = yP + yI + yD+y; // Stellgröße (y) = P-Anteil + I-Anteil + D-Anteil + Arbeitspunkt y
                  if (y_res>y_max) y_res=y_max; // Stellgröße begrenzen: max
                  if (y_res<y_min) y_res=y_min; // Stellgröße begrenzen: min
                  Valve_str=float2str(y_res,0);
                  if (y_res >= (oldy_res + offsetBus) || y_res < (oldy_res - offsetBus)) {
                  oldy_res = y_res; //Stellgröße Wert merken
                  result = knx.groupWrite1ByteInt(KNX_GA_VALVE, y_res);
                  }
                  }
                  }
                  //else if (((BA==1)||(BA==3)||(BA==4))&&(y_res!=0)&&(temp>=Sollwert)&&(RTR)) {y_res=0; Valve_str=float2str(y_res,0); result = knx.groupWrite1ByteInt(KNX_GA_VALVE, y_res);} //Stellgröße 0 setzen, wenn keine Regelung
                  Zuletzt geändert von TomW80; 07.12.2020, 22:53.

                  Kommentar


                    Was ich nicht ganz verstehe ist dass der Smelly heute Nacht auf einmal mit dem Regeln anfängt. Kann es sein dass es daran liegt das Ist<Soll ist?
                    Kann es ein Problem mit den Variablen yP, yI und yD die als byte deklariert sind geben wenn es negative Werte gibt?
                    smelly1.JPG
                    smelly2.JPG

                    Kommentar


                      Hallo Zusammen,

                      ich habe heute meinen ersten Smelly One in Betrieb genommen. Löten hat funktioniert und erfasst nun auch alle Werte. Habe den Sketch und die Gruppenadresse wie folgt konfiguriert:

                      Code:
                      #define KNX_PA                       "1.0.185"                           //KNX PA
                      #define KNX_GA_STATUS        "4/1/0"                              //Status IAQ
                      #define KNX_GA_CO2              "4/1/1"                              //CO2-Messwert
                      #define KNX_GA_TVOC           "4/1/2"                              //VOC-Messwert
                      #define KNX_GA_TEMP           "4/1/3"                              //Temperaturmesswert
                      #define KNX_GA_HUM             "4/1/4"                             //Feuchtemesswert
                      #define KNX_GA_VALVE          "40/0/0"                           //Ventilstellung
                      #define KNX_GA_SOLL            "40/0/1"                           //Sollwert
                      #define KNX_GA_BA                "40/0/2"                           //Betriebsart
                      und

                      Code:
                      bool piep_allow=false;                                          //Piepser bei Grenzwertüberschreitung zulassen (Jumper setzen !)
                      bool Taup_Anz=true;                                            //Taupunkt in Sektion 5 dauerhaft anzeigen
                      bool Lux_Anz=false;                                            //Helligkeitswert anzeigen, Wert wird reziprog angezeigt
                      bool StatusiAQ_Anz=false;                                  //Status iAQ anzeigen
                      bool LEDs_Anz=true;                                           //RGB LED anzeigen für Luftqualität CO2 nach Grenzwerten
                      bool LEDB_Anz=false;                                         //Blaue LED anzeigen für Feuchtigkeit > 65%
                      bool KNX_receive=true;                                       //KNX Empfang einschalten
                      bool RTR=false;                                                   //RTR freigeben
                      Wenn ich nun auf der ETS die Temperatur auslese erhalte folgende Antworten, unteranderem auf der Gruppe 8/0/0 die überhaupt nicht konfiguriert ist sowie für die Gruppe 4/1/0 Status IAQ kommt keine Antwort:

                      Bildschirmfoto 2020-12-18 um 17.54.02.png

                      Kann mir da jemand weiterhelfen?

                      LG

                      Alex

                      Kommentar


                        Hallo Alex,

                        ich bin mir nicht sicher, aber als Hauptgruppe ist normalerweise nur 0...31 zulässig (zumindest nach dem alten Standard, ich weiß nicht ob die Library auch mehr unterstützt).

                        Status GA schaue ich mal nach.

                        Ich würde auch mal die vielen Leerzeichen im Sketch rausnehmen, eines reicht :-)
                        Viele Grüße,
                        Stefan

                        DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

                        Kommentar


                          Hallo Stefan,

                          ok, ändere es mal auf 30 ab. Sollten die Gruppen bei ausgeschlafenem RTR aber gar nicht genutzt werden?

                          Status GA wäre super wenn du mal schauen könntest.

                          Leerzeichen sind durch Copy & Paste aus Parallels passiert.

                          Danke für deine Unterstützung

                          Liebe Grüße

                          Alex

                          Kommentar


                            Die Status GA sowie andere GA's können bei Bedarf hier einfach ergänzt werden, wenn diese bei einer Leseanfrage an die Tmeperatur mitgesendet werden sollen:

                            snip_20201218191817.png
                            Viele Grüße,
                            Stefan

                            DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

                            Kommentar


                              Nochwas:

                              Wenn Du oben "bool KNX_receive=true" setzt, werden bei einer Lesenanfrage auch die RTR-GA's gesendet, das dürften bei Dir die 8er Hauptgruppen sein. Egal ob der RTR aktiviert ist oder nicht. Der KNX_receive wird nur benötigt, wenn der RTR genutzt wird...ansonsten einfach ausschalten (=false).
                              Viele Grüße,
                              Stefan

                              DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

                              Kommentar


                                Danke Stefan,

                                noch eine Frage. Der CO2 und VOC werden mir als HEX-Wert zurückgemeldet. Ist das normal?

                                Grüße

                                Alex

                                Kommentar

                                Lädt...
                                X