Ankündigung

Einklappen
Keine Ankündigung bisher.

Steuerung der Zirkulationspumpe

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

    #16
    kannst Du!
    Und im Regelfall wirst Du auch eine Antwort bekommen:-)

    Aber so richtig "warm" mit dem EibPC wirst Du vermutlich erst, wenn Du mal was ausprobierst.
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #17
      so, ich habe nochmal einen anderen versuch gestartet. mach dieses progrämmchen das was ich von ihm möchte? ich hoffe nämlich ich komme langsam dahinter. ich möchte ja auch etwas selber machen und nicht mein ganzen haus durch forum programmieren lassen ;-)

      Gefrierschrank
      Gefrierfreigabe=AUS
      if („BHKW“ or Gefrierfreigabe) then write („Gefrierschrank“,EIN) endif
      if after(„BHKW“==AUS, 3600000u64) then Gefrierfreigabe=EIN endif (1 Std. ohne BHKW Truhe an)
      if after(„BHKW“ or Gefrierfreigabe, 7200000u64) then Gefrierfreigabe=AUS endif (nach 2 Std Laufzeit Truhe Freigabe zurücksetzen)

      Kommentar


        #18
        Zitat von fuchs Beitrag anzeigen
        nochmal eine frage die zeile sperren=AUS wird die nicht in jedem durchlauf ausgeführt? dann würde es ja nicht funktionieren oder?
        Das ist in diesem Fall (oberste Ebene) eine Deklaration mit Initialwertzuweisung, sprich die Variable wird angelegt, vom Typ der Konstante und mit dem Wert vorbelegt.

        Kritik spare ich mir jetzt einfach mal.
        BR
        Marc

        Kommentar


          #19
          Zitat von Uwe! Beitrag anzeigen
          Code:
          Sperre=EIN
          Sperre=AUS
          zu einer Endlosschleife führen. Beide Zeilen werden aber nur ein einziges mal abgearbeitet.
          Will ja nicht meckern, aber eine Endlosschleife stelle ich mir anders vor

          Zitat von Uwe! Beitrag anzeigen
          Nein, er bleibt nicht hängen, sondern entscheidet immer wieder von neuem, welche Zeile Deines Programms ausgeführt wird!
          Das erlebe ich auch so
          In jedem Zyklus wird geprüft ob sich "rechts" was geändert hat. Wenn ja, wird die Zeile abgearbeitet, wenn nein, nicht.
          Mit Zuweisungen ist das aber so eine Sache, denn in tieferen Ebenen werden sie jedes Mal ausgeführt, auch wenn sich rechts nichts geändert hat (üblicherweise ändern sich z.B. Konstanten nicht).
          BR
          Marc

          Kommentar


            #20
            Zitat von saft6luck Beitrag anzeigen
            Deklaration mit Initialwertzuweisung
            dann ist mir das auch klar, warum es nicht durchlaufen wird. danke für den hinweis. habe ich es denn im meinem "gefrierprogramm" richtig umgesetzt? aufgetautes senkt nämlich die akzeptant bestimmt ganz schnell ;-)

            Kommentar


              #21
              Ich bin mir noch nicht sicher was du damit machen möchtest.

              Der Gefrierschrank geht an, wenn das BHKW läuft oder du die Freigabe zum Kühlen gibst.

              if after(„BHKW“==AUS, 3600000u64) then Gefrierfreigabe=EIN endif
              Hier wird eine Stunde nachdem das BHKW aus ging die Gefrierfreigabe erteilt.

              if after(„BHKW“ or Gefrierfreigabe, 7200000u64) then Gefrierfreigabe=AUS endif
              Nach 2 Stunden wird die Gefrierfreigabe wieder entzogen.

              Ich denke du möchtest mit dem BHKW deinen Gefrierschrank aktivieren und 2 Stunden nachdem das BHKW aus ging wieder ausschalten, oder?

              Würd ich in etwa so machen (Aber Steffi schreibt das immer noch schöner):
              Variablendefinition + Startwert
              Gefrierfreigabe=AUS

              Handling ob Gefrierschrank geht oder nicht:
              if (Gefrierfreigabe==EIN) then write („Gefrierschrank“,EIN) endif
              if (Gefrierfreigabe==AUS) then write („Gefrierschrank“,AUS) endif

              if („BHKW“==EIN) then Gefrierfreigabe=EIN endif
              if after(„BHKW“==AUS, 7200000u64) then Gefrierfreigabe=AUS

              Eine Stunde ohne BHKW:
              if delay(„BHKW“==AUS, 3600000u64) then Gefrierfreigabe=EIN


              Hab da aber auch noch 2 Probleme:
              Wird die delay von einem BHKW==EIN auch getriggert?
              Wenn das BHKW 1 Stunde nicht lief und die Gerierfreigabe auf EIN geht, wann soll Sie dann wieder aus gehen?

              So, und jetzt kommt die Steffi und macht den Code in schön.
              Gruß
              Volker

              Wer will schon Homematic?

              Kommentar


                #22
                die truhe soll spannung haben wenn das bhkw läuft. läuft das bhkw nicht soll nach 1 stunde die truhe spannung bekommen, damit nichts auftaut. wenn die truhe 2 stunden strom hatte soll die spannung wieder ausgehen. entweder bis die stunde wieder rum ist oder das bhkw läuft.

                Kommentar


                  #23
                  Zitat von SteffiEnertex Beitrag anzeigen
                  [highlight=epc]
                  sperren=AUS
                  bewegung = („Bewegung Bad“ or „Bewegung Küche“ or „Bewegung WC“)
                  if bewegung and !sperren then write("Zirkulation",EIN); sperren=EIN endif
                  if after(sperren,180000u64) then write("Zirkulation",AUS); endif
                  if after(sperren, 1380000u64) then sperren=AUS endif
                  [/highlight]
                  Mir würde folgende Änderung mehr zusagen, da dann die Pumpe nur 1x eingeschaltet wird.

                  Falls die Pumpe nur über den eibPC gesteuert wird, sollte noch eine Startbedingung für die Pumpe existieren, damit sie nicht endlos weiter läuft, wenn der eibPC nach dem Einschalten einen Reset macht.

                  Den Timer in den Aktor zu verlegen würde hier mehr Sicherheit bringen (also Zeile 4 raus und ein 3 min. Treppenhauslicht in den Aktor).
                  BR
                  Marc

                  Kommentar


                    #24
                    Zitat von saft6luck Beitrag anzeigen
                    Will ja nicht meckern, aber eine Endlosschleife stelle ich mir anders vor
                    Dann les noch mal den gesamten Kontext.
                    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                    Kommentar


                      #25
                      Zitat von Uwe! Beitrag anzeigen
                      Dann les noch mal den gesamten Kontext.
                      Autsch.
                      BR
                      Marc

                      Kommentar


                        #26
                        Zitat von saft6luck Beitrag anzeigen
                        eine Deklaration mit Initialwertzuweisung
                        Zitat von fuchs Beitrag anzeigen
                        dann ist mir das auch klar, warum es nicht durchlaufen wird.
                        Wobei der Grund, warum es nicht (bzw. eben nur einmal) durchlaufen wird nicht darin liegt, dass es eine dem EibPC irgendwie bekannte Initialwertzuweisung (im Sinne eines eigenen Befehls) ist, sonder eben einfach nur daran, dass sich die Konstante "EIN" niemals ändert! Würde sie sich ändern, würde die Zeile erneut durchlaufen.
                        Ebenso wird eine Zeile X=Y+3*Pi nur ein einzigesmal durchlaufen, sofern sich Y, 3 und Pi niemals ändert.
                        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                        Kommentar


                          #27
                          Zitat von SnowMaKeR Beitrag anzeigen
                          if (Gefrierfreigabe==EIN) then write („Gefrierschrank“,EIN) endif
                          if (Gefrierfreigabe==AUS) then write („Gefrierschrank“,AUS) endif

                          if („BHKW“==EIN) then Gefrierfreigabe=EIN endif
                          if after(„BHKW“==AUS, 7200000u64) then Gefrierfreigabe=AUS
                          if delay(„BHKW“==AUS, 3600000u64) then Gefrierfreigabe=EIN

                          die ersten beiden zeilen sind klar, ebenso die dritte. in der vierten schaltet er aber nicht sofort ab. die truhe soll ja mlöglichst nur mit dem vom bhkw erzeugten strom laufen. in der fünften schaltest du nach 1 std die freigabe nach dem ausschalten des bhkw ein. das ist ok aber wo schaltest du es dann nach zwei stunden wieder aus? ich hatte das mit meiner letzten zeile ja so

                          if after(„BHKW“ or Gefrierfreigabe, 7200000u64) then Gefrierfreigabe=AUS endif

                          ich dachte damit stelle ich sicher, dass die truhe immer zwei stunden läuft. danach wartet die truhe wieder auf das bhkw oder bekommt nach 1 std wieder für zwei stunden strom

                          Kommentar


                            #28
                            Zitat von Uwe! Beitrag anzeigen
                            Wobei der Grund, warum es nicht (bzw. eben nur einmal) durchlaufen wird nicht darin liegt, dass es eine dem EibPC irgendwie bekannte Initialwertzuweisung (im Sinne eines eigenen Befehls) ist, sonder eben einfach nur daran, dass sich die Konstante "EIN" niemals ändert! Würde sie sich ändern, würde die Zeile erneut durchlaufen.
                            Ebenso wird eine Zeile X=Y+3*Pi nur ein einzigesmal durchlaufen, sofern sich Y, 3 und Pi niemals ändert.
                            Also, für das Verständnis:

                            [highlight=epc]
                            if ( x ) then sperren = EIN endif
                            if ( sperren ) then blah endif
                            [/highlight]

                            kann nicht kompiliert werden, denn auch wenn 'sperren' in Zeile 1 eindeutig vom Typ 1b1 ist, kennt der Kompiler die Variable nicht.

                            [highlight=epc]
                            sperren = EIN
                            if ( x ) then sperren = EIN endif
                            if ( sperren ) then blah endif
                            [/highlight]

                            Mit der 'Zuweisung' in der obersten Ebene wird die Variable Deklariert, vom Typ 1b1. Jetzt kennt sie der Kompiler, ist also offensichtlich ein Unterschied.

                            In diesem Beispiel sieht man auch, dass 'sperren = EIN' ausgeführt wird, auch wenn sich "rechts" nichts ändert, oder ändern sich Konstanten etwa? Die Erklärung "rechts muss sich was ändern" ist also zumindest unvollständig und hilft dann nicht bei der Erklärung.

                            Um des lieben Friedens willen: Wenn rechts ein variabler Teil steht, wird die Anweisung öfters ausgeführt, auch wenn es eine Deklaration ist
                            BR
                            Marc

                            Kommentar


                              #29
                              Ich habe deinen Wunsch falsch verstanden.

                              Ich dachte, die Gefriertruhe soll mit dem BHKW anfangen zu laufen und erst 2 Stunden nachdem das BHKW ausgegangen ist ausschalten.
                              Gruß
                              Volker

                              Wer will schon Homematic?

                              Kommentar


                                #30
                                Moin,

                                ich finde die Erklärung von Uwe! super.
                                Ich hab noch keine Formulierung gefunden, dies einfacher und verständlichen beschreibt.

                                Eine Variable muss deklariert werden um sie verwenden zu können.
                                sperren=EIN
                                Schließlich muss der EibPC wissen, mit welchem Startwert er anfangen soll.
                                Vielleicht kann man es sich so vorstellen, dass sich sperren beim Start von "undefiniert" in EIN "ändert".
                                Deshalb würde
                                if sperren then ...
                                1x ausgeführt werden

                                steffi
                                Enertex Bayern GmbH - www.eibpc.com

                                Kommentar

                                Lädt...
                                X