Ankündigung

Einklappen
Keine Ankündigung bisher.

Fragen zu EibStudio v4

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

    #16
    Weitere Anmerkung. Hatte nach dem Import in die V4 auf einen neuen Export von der ETS5 im knxproj Format gemacht. Hat mich einiges an Zeit gekostet, den Code anschließend wieder zu kompilieren, da die Gruppenadressen anders ausgegeben werden. Z.B. werden "/" in Gruppenadressen automatisch zu "_" konvertiert. War im alten Stand nicht so. Also musste ich alle Gruppenadressen anpassen mit diesem Zeichen.
    Kann aber auch an der ETS5 und dem neuen Format liegen.

    Kommentar


      #17
      Zitat von chris2605x Beitrag anzeigen
      War im alten Stand nicht so. Also musste ich alle Gruppenadressen anpassen mit diesem Zeichen.
      Würdest du das bitte bei Gelegenheit nochmal testen? Einfach deine knxproj in ein neues Projekt importieren. Die Umbenennung ist in Version 4.014 geändert worden, dadurch sollten solche Probleme nicht mehr existieren und alle Zeichen erlaubt sein.

      Kommentar


        #18
        Solange die Onewire Makros nicht gehen, steige ich nicht wieder auf die V4 um.

        Kommentar


          #19
          Gibt es eine Chance, dass sich das mit dem Onewire jemand anschauen kann?
          ist ja immerhin eine Makro Bibliothek von Enertex.
          Ich habe den Eindruck, dass es auch hier irgendein Konvertierungsproblem in die Variablen NameD_Temperature gibt.

          Kommentar


            #20
            Neue Erkenntnisse:
            V3 mit Onewire Makro funktioniert
            Patch 4.007 mit altem Programm aus V3 funktioniert
            Sobald das Projekt mit EibStudioV4 hochgeladen wird, funktioniert nichts mehr.

            Applikation mit Version 4.016

            Kommentar


              #21
              Du könntest mir mal die erstellten Programmdateien "tmpApp.txt", "tmpConf.txt", "tmpAddr.txt" schicken, dann kann ich genau prüfen, was sich dabei ändert.

              Fürs EibStudio v3 sind die nach dem Kompilieren im Verzeichnis "EibstudioData" im EibStudio-Verzeichnis (werden beim Schließen des Programms entfernt).

              Im EibStudio v4:
              Im Projectverzeichnis: [Projektname]_tmp/

              Kommentar


                #22
                Dateien sind per Mail verschickt. Danke!

                Rückmeldung zur EibStudio Version 4.016: Die Variablen werden jetzt korrekt dargestellt. "/" wird wieder als "/" und nicht als "_" konvertiert.
                Die 4.016 scheint mir allerdings nicht richtig signiert zu sein. Windows 10 sagt hier, dass es eine nicht vertrauenswürdige Datei wäre.

                Kommentar


                  #23
                  Wo habe ich einen Gedanken fehler?
                  Es soll jedes Zimmer einzeln gesperrt werden wenn in dem Raum ein Fenster geöffnet wird. (das macht er auch)
                  Sollte das Fenster nach 15minuten immer noch auf sein sollen alle Räume gesperrt werden.
                  Der Timer zählt auch los aber am ende ist nur eine 0 am Ausgang

                  2019-03-20 16_15_13-Window.png
                  Angehängte Dateien

                  Kommentar


                    #24
                    Du wirst den Trigger der Verzögerung auch nicht merken, der ist nur für einen Zyklus auf 1b01 (delayc S. 71)

                    Sind die Fenstersensoren 1b01 wenn offen? Nehme ich mal an. Warum dann nicht einfach ein OR für alle sensoren, um den Timeout zu triggern?

                    Zieh dir doch ein Gruppenadress-Schreiben auf den Ausgang des Nots, dann siehst du genau, wenn der ein und aus geht

                    Kommentar


                      #25
                      Die Fenster sind auf 1b01 wenn sie Geschlossen sind. somit muss ich sie Invertieren. NOR würde dann nicht gehen und deswegen ein NAND. im Debug Modus sieht auch alles gut aus bis zum Verzögerungs Objekt. hier liegt eine 1 an am Ausgang halt immer einer null "und wie du schreibst nur ein Impuls wenn die zeit abgelaufen ist?"
                      Der Obere Block soll die Heizung ausschalten (Sofort) wenn ein Fenster geöffnet wird. Das passiert auch.
                      Der untere Block sollte eigentlich 15 warten wenn ein Fenster geöffnet wird und dann alle Heizungen sperren.
                      Wird das und die Fenster wieder geschlossen sollen alle Heizungen wieder angehen.

                      Kommentar


                        #26
                        Der Timer gibt ja nur einen kurzen Impuls über einen Zyklus aus. Ich verwende einen "Register" um den aktiven Wert der Fenster/Türkontaktekontakte durch zu schalten, wenn der Timer abgelaufen ist. Schaut bei mir so aus (Türe mit 2 Kontakte):

                        Screenshot_EibPC_Fensterkontakte2019-03-20 19-14-49.png
                        Ist schon eine ziemliche Umstellung von der bisherigen Programmierung - ich "kämpfe" mich da auch noch durch .

                        Kommentar


                          #27
                          Zitat von Avalon66 Beitrag anzeigen
                          Der Timer gibt ja nur einen kurzen Impuls über einen Zyklus aus. Ich verwende einen "Register" um den aktiven Wert der Fenster/Türkontaktekontakte durch zu schalten, wenn der Timer abgelaufen ist. Schaut bei mir so aus (Türe mit 2 Kontakte):

                          Screenshot_EibPC_Fensterkontakte2019-03-20 19-14-49.png
                          Ist schon eine ziemliche Umstellung von der bisherigen Programmierung - ich "kämpfe" mich da auch noch durch .
                          Danke für den Hinweis, Werteänderung und Register haben mir nun ein "echtes" Delay gebaut.

                          Dieses Delay löst nun von 0 auf 1 einen Timer Aus und speichert dann den Wert
                          Bei 1 auf null wird ohne einen Timer sofort eine 0 gespeichert.
                          Ich glaube das war es was ich haben wollte.

                          2019-03-20 19_58_47-Window.png

                          Kommentar


                            #28
                            Ihr denkt zu kompliziert.

                            Das Validierungskonzept erlaubt, dass wir gar nichts explizit speichern müssen:

                            GAs 1/0/0-1/0/2 sind die Kontakte. 1b01 heißt geschlossen.
                            GA 2/0/0 ist Heizungssperre

                            Wenn alle Kontakte 1: NOT = 0, sonst 1.
                            Sobald also ein Fenster auf geht (Kontakt = 0): NOT = 1, triggert den Timer.
                            AND2 bleibt 0 bis der Timer feuert. Ist dann noch NOT==1, dann wird AND2=1

                            Der Timer ist auf "Neu starten" parametriert.
                            Geht also in der Zwischenzeit alles zu und bleibt zu, wird wenn der Timer feuert das AND2=0 bleiben.
                            Geht in der Zwischenzeit alles zu und wieder auf, wird der Timer neu gestartet.

                            Das AND2 ändert sich mit jeder Änderung von Timer und NOT, geht also sofort auf 0 sobald alles zu ist. Will man hier auch ne verzögerung, kann man die wieder genauso aufbauen.


                            Im Grunde genauso wie programmiert:
                            AlleSensorenZu = '1/0/0'b01 and '1/0/1'b01 and '1/0/2'b01
                            if !AlleSensorenZu and after(!AlleSensorenZu,15000) then write('2/0/0'b01, EIN) else write('2/0/0'b01, AUS) endif

                            delay.png

                            Kommentar


                              #29
                              Zitat von foobar0815 Beitrag anzeigen
                              Ihr denkt zu kompliziert.

                              Das Validierungskonzept erlaubt, dass wir gar nichts explizit speichern müssen:

                              GAs 1/0/0-1/0/2 sind die Kontakte. 1b01 heißt geschlossen.
                              GA 2/0/0 ist Heizungssperre

                              Wenn alle Kontakte 1: NOT = 0, sonst 1.
                              Sobald also ein Fenster auf geht (Kontakt = 0): NOT = 1, triggert den Timer.
                              AND2 bleibt 0 bis der Timer feuert. Ist dann noch NOT==1, dann wird AND2=1

                              Der Timer ist auf "Neu starten" parametriert.
                              Geht also in der Zwischenzeit alles zu und bleibt zu, wird wenn der Timer feuert das AND2=0 bleiben.
                              Geht in der Zwischenzeit alles zu und wieder auf, wird der Timer neu gestartet.

                              Das AND2 ändert sich mit jeder Änderung von Timer und NOT, geht also sofort auf 0 sobald alles zu ist. Will man hier auch ne verzögerung, kann man die wieder genauso aufbauen.


                              Im Grunde genauso wie programmiert:
                              AlleSensorenZu = '1/0/0'b01 and '1/0/1'b01 and '1/0/2'b01
                              if !AlleSensorenZu and after(!AlleSensorenZu,15000) then write('2/0/0'b01, EIN) else write('2/0/0'b01, AUS) endif

                              delay.png
                              ich glaub auch das wir manchmal zu kompliziert denken

                              aber wenn and2 eine 0 bekommt von dem knoten 15s (da ja nur ein impuls) wird doch 2/0/0 wieder 0 gesetzt oder wie stellst du die Adresse im knoten ein? ich brauch ja bei 2/0/0 eine dauer "1" wenn irgendein fenster auf ist. und eine 0 wenn die fenstert geschlossen sind.

                              Ich glaub das hatte ich gestern schon ausprobiert und das ging nicht. aber ich probier das gerne nochmal aus heute.

                              Zuletzt geändert von PharaDOS; 21.03.2019, 12:38.

                              Kommentar


                                #30
                                Du hast vollkommen Recht. Das Schreiben auf die GA muss mit externem Trigger sein, und obiges ist der Trigger.
                                Ein zweites schreiben mit Trigger der Konstante 0 kommt vom AND.
                                ​​​​​

                                Kommentar

                                Lädt...
                                X