Ankündigung

Einklappen
Keine Ankündigung bisher.

Kommunikation Enertex Spannungsversorgung und EibPC

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

    #46
    Zitat von enertegus Beitrag anzeigen
    Bin nicht genau sicher für die Spannung und Strommessung in "mili", ich glaube die mV und mA haben da einen ähnlichen Hintergrund (bin nicht im Büro, sondern unterwegs).
    Habe hier eben nachgefragt: Ist vorgegebenen vom KNX Standard.

    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #47
      Ok, danke für die Info! Zwar komischer Standard, aber gut, dass ihr euch dran haltet!
      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

      Kommentar


        #48
        Zitat von enertegus Beitrag anzeigen
        Habe hier eben nachgefragt: Ist vorgegebenen vom KNX Standard.
        Welcher Teil ist da vorgegeben?

        DTP 14.x erlaubt durchaus V und A, insbesondere auch genauer/richtiger als f16.

        Abgesehen davon hat die Angabe in mV ja auch nichts mit der Genauigkeit des gemessenen Wertes zu tun (und BTW das ist die Information, die in der Anleitung fehlt).
        BR
        Marc

        Kommentar


          #49
          So nun hier der überarbeitete Code. Über die Defines kann man die einzelnen Features ein bzw. ausblenden.
          Der Code kann einfach per #include eingebunden werden oder am Ende des bestehende Projekts gehängt werden - ist am Anfang sicher einfacher, weil man die Gruppenadressen dann einfacher konfigurieren kann. Damit dies möglich ist, haben wir das mal exemplarisch mit indizierter Adressierung gemacht (address/getaddress). Das Ende der Konfuguration markiert der entsprechende Kommentar.
          EDIT: Das ist der erste Entwurf, kann sein,dass ich noch was ändert...
          EDIT: Eben angebpasst, da waren noch ein paar Unstimmigkeiten drinn
          Viel Spaß
          Code:
          #addto [EibPC]
          //  Definition der verschiedenen Bereiche und Anzeigemöglichkeiten der PowerSupply960
          //  Bei kommentieren bzw. entkommentieren der jeweiligen #define .... - Zeile,
          //  wird die jeweils beschriebene Aktion ausgeführt.
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //
            #define PS960_WebServer
          //  Bei Definition wird eine leere PS960_PowerSupply-Webserverseite hinzugefügt
          //  Die Seite wird unter der Rubrik Enertex mit dem Seitennamen PowerSupply angehängt.
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //
            #define Grenzwertanzeige
          //  Bei Definition wird die Eingabe von Grenzwerten ermöglicht und Überschreitungen dargestellt.
          //  Temperaturwerte minimal-aktuell-maximal werden angezeigt. Die Aktualisierung erfolgt sobald sich ein Wert ändert.
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //
            #define Chart V,A,W,°C
          //  Bei Definition werden 2 Timecharts hinzugefügt. Alle 15 Minuten werden die Werte in den Buffer geschrieben.
          //  Der 1. Chart enthält die Spannungs-, Strom- und Leistungsverläufe.
          //  Der 2. Chart enthält den Temperaturverlauf der PowerSupply
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //
            #define Spannung,Strom,Leistung-Wächter
          // Bei Definition werden jeweils (Minimale,Aktuelle,Maximale) Anzeigen (inklusive Zeitstempel)
          // für Spannung, Strom und Leistung hinzugefügt. Die Aktualisierung erfolgt sobald sich ein Wert ändert.
          // Eine prozentuale Messwertausgabe ist empfehlenswert, da sich der Wert sonst sekündlich ändern kann.
          // Diese wird über die ETS an der Stromversorgung parametriert.
          // Zu jedem Messwert wird jeweils ein Chartverlauf angezeigt. Die Aktualisierung erfolgt alle 15 Minuten.
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //
            #define EnergieWächter
          // Bei Definition werden 6 Anzeigeelemente hinzugefügt, welche die Aufgenommene und Abgegebene Energie
          // von Einschaltzeitpunkt, seit Analysereset und Lebenszeit angeben. Die Aktualisierung erfolgt alle 15 Minuten.
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //
            #define Information
          // Bei Definition werden Einschaltdatum, Einschaltzeit, Betriebsstunden, Analysereset, Wirkungsgrad hinzugefügt
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //
            #define Mail
          // Wenn die Grundkonfigurationen (Handbuch Seite 145) vorgenommen wurden und die Empfängeradresse
          // im weiteren Code angegeben ist, wird bei Definition und Überschreiten des festgelegten Grenzwertes eine E-Mail versendet
          //
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------
          //  Hier die ID der Webserver Seite konfigurieren
          //  Default ist belegt: 99
          //  --------------------------------------------------------------------------------------------------------------------
          #ifdef PS960_WebServer
          PS960_PowerSupplyID=99
          #endif
          Zyklus15=mtime(0,0) or mtime(15,0) or mtime(30,0) or mtime(45,0)
          //  --------------------------------------------------------------------------------------------------------------------
          //  Hier die Gruppenadressen der PS960 konfigurieren
          //  Die Gruppenadressen so eintragen, dass die Typenkennzeichnung
          //  (z.B. t24) hinten angefügt ist.
          //  Beispiel: PS960_GAEinschaltzeit="Einschaltzeit-0/4/0"t24
          //  --------------------------------------------------------------------------------------------------------------------
          // Uhrzeit- und datumsgebende Gruppenadressen
          #ifdef Information
          if systemstart() then write("Datum-0/2/0",setdate()) endif
          if systemstart() then write("Uhrzeit-0/2/4",settime()) endif
          PS960_GAUhrzeit="Uhrzeit-0/2/4"t24
          PS960_GAUhrzeit_address=getaddress("Uhrzeit-0/2/4")
          PS960_GADatum="Datum-0/2/0"
          PS960_GADatum_address=getaddress("Datum-0/2/0")
          #endif
          PS960_GASpannung="Spannung-0/4/5"
          PS960_GAStrom="Strom-0/4/6"f16
          PS960_GALeistung="Leistung-0/4/7"f32
          PS960_GALeistung_address=getaddress("Leistung-0/4/7"f32)
          #ifdef Spannung,Strom,Leistung-Wächter
          PS960_GASpannungMax="Spannung Maximum-0/4/13"
          PS960_GASpannungMax_address=getaddress("Spannung Maximum-0/4/13")
          PS960_GASpannungMin="Spannung Minimum-0/4/12"
          PS960_GASpannungMin_address=getaddress("Spannung Minimum-0/4/12")
          PS960_GAStromMax="Strom Maximum-0/4/15"f16
          PS960_GAStromMax_address=getaddress("Strom Maximum-0/4/15"f16)
          PS960_GAStromMin="Strom Minimum-0/4/14"f16
          PS960_GAStromMin_address=getaddress("Strom Minimum-0/4/14"f16)
          PS960_GALeistungMax="Leistung Maximum-0/4/17"f32
          PS960_GALeistungMax_address=getaddress("Leistung Maximum-0/4/17"f32)
          PS960_GALeistungMin="Leistung Minimum-0/4/16"f32
          PS960_GALeistungMin_address=getaddress("Leistung Minimum-0/4/16"f32)
          #endif
          PS960_GAAufgenommeneEnergieLebenszeit="AufgenommeneEnergieLebenszeit-0/4/23"
          PS960_GAAbgegebeneEnergieLebenszeit="AbgegebeneEnergieLebenszeit-0/4/20"
          #ifdef EnergieWächter
          PS960_GAAufgenommeneEnergieLebenszeit_address=getaddress("AufgenommeneEnergieLebenszeit-0/4/23")
          PS960_GAAbgegebeneEnergieLebenszeit_address=getaddress("AbgegebeneEnergieLebenszeit-0/4/20")
          
          PS960_GAAbgegebeneEnergieEinschalten="AbgegebeneEnergieSeitEinschalten-0/4/21"
          PS960_GAAbgegebeneEnergieEinschalten_address=getaddress("AbgegebeneEnergieSeitEinschalten-0/4/21")
          PS960_GAAbgegebeneEnergieAnalyseReset="AbgegebeneEnergieSeitAnalysereset-0/4/22"
          PS960_GAAbgegebeneEnergieAnalyseReset_address=getaddress("AbgegebeneEnergieSeitAnalysereset-0/4/22")
          PS960_GAAufgenommeneEnergieEinschalten="AufgenommeneEnergieSeitEinschalten-0/4/24"
          PS960_GAAufgenommeneEnergieEinschalten_address=getaddress("AufgenommeneEnergieSeitEinschalten-0/4/24")
          PS960_GAAufgenommeneEnergieAnalyseReset="AufgenommeneEnergieSeitAnalysereset-0/4/25"
          PS960_GAAufgenommeneEnergieAnalyseReset_address=getaddress("AufgenommeneEnergieSeitAnalysereset-0/4/25")
          #endif
          #ifdef Information
          PS960_GAAnalyseReset_address=getaddress("Reset-0/4/3")
          PS960_GAEinschaltzeit="Einschaltzeit-0/4/0"t24
          PS960_GAEinschaltzeit_address=getaddress("Einschaltzeit-0/4/0"t24)
          PS960_GAEinschaltdatum="Einschaltdatum-0/4/1"d24
          PS960_GAEinschaltdatum_address=getaddress("Einschaltdatum-0/4/1"d24)
          PS960_GABetriebsstunden="Betriebsstunden-0/4/2"
          PS960_GABetriebsstunden_address=getaddress("Betriebsstunden-0/4/2")
          #endif
          #ifdef Grenzwertanzeige
          PS960_GASpannung_address=getaddress("Spannung-0/4/5")
          PS960_GAStrom_address=getaddress("Strom-0/4/6")
          PS960_GATemperatur="Temperatur-0/4/8"
          PS960_GATemperatur_address=getaddress("Temperatur-0/4/8")
          PS960_GATemperaturMin="Temperatur Minimum-0/4/18"
          PS960_GATemperaturMin_address=getaddress("Temperatur Minimum-0/4/18")
          PS960_GATemperaturMax="Temperatur Maximum-0/4/19"
          PS960_GATemperaturMax_address=getaddress("Temperatur Maximum-0/4/19")
          PS960_GASpannungGrenzwert="Spannung Grenzwert-0/4/9"
          PS960_GASpannungGrenzwertueberschritten="SpannungGrenzwertTreffer-0/4/26"
          PS960_GASpannungGrenzwertueberschritten_address=getaddress("SpannungGrenzwertTreffer-0/4/26")
          PS960_GASpannungGrenzwert_address=getaddress("Spannung Grenzwert-0/4/9")
          PS960_GAStromstaerkeGrenzwert="Strom Grenzwert-0/4/10"
          PS960_GAStromstaerkeGrenzwert_address=getaddress("Strom Grenzwert-0/4/10")
          PS960_GAStromstearkeGrenzwertueberschritten="StromGrenzwertTreffer-0/4/27"
          PS960_GAStromstearkeGrenzwertueberschritten_address=getaddress("StromGrenzwertTreffer-0/4/27")
          #endif
          //  --------------------------------------------------------------------------------------------------------------------
          //  Hier die Default der Mailadresse konfigurieren
          //  Nur für NP Erweiterung. Der EibPC verschickt bei
          //  überschreiten des eingestellten Grenzwertes eine Warnung heraus.
          //  Um die Funktion sendmail nutzen zu können, muss die Grundkonfiguration
          //  des E-Mail vorgenommen werden ( Handbuch Seite 145).
          //  --------------------------------------------------------------------------------------------------------------------------
          #ifdef Mail
          PS960_Mail_Empfaengeradresse=$Praktikum@enertex.de$
          #endif
          //  --------------------------------------------------------------------------------------------------------------------
          //  Hier die PageIDs der Webelemente konfigurieren
          //  Defaults sind belegt: 1 bis 31
          //  --------------------------------------------------------------------------------------------------------------------------
          #ifdef Chart V,A,W,°C
          PS960_PSSpannung5ID=1
          PS960_PSTemperaturID=26
          #endif
          #ifdef Grenzwertanzeige
          PS960_SpannungGrenzwertID=2
          PS960_Input4ID=3
          PS960_Input5ID=4
          PS960_Output17ID=5
          PS960_Output18ID=6
          PS960_TemperaturID=7
          #endif
          #ifdef Spannung,Strom,Leistung-Wächter
          PS960_PSSpannung6ID=8
          PS960_PSStrom7ID=9
          PS960_PSLeistung8ID=10
          PS960_MinimaleSpannungID=11
          PS960_MinimalerStromID=12
          PS960_MinimaleLeistungID=13
          PS960_MaximaleSpannungID=14
          PS960_MaximalerStromID=15
          PS960_MaximaleLeistungID=16
          PS960_AktuelleSpannungID=17
          PS960_AkutellerStromID=18
          PS960_AktuelleLeistungID=19
          #endif
          #ifdef EnergieWächter
          PS960_AbgegebeneEnergieEinschaltenID=20
          PS960_AbgegebeneEnergieAnalyseResetID=21
          PS960_AbgegebeneEnergieLebenszeitID=22
          PS960_AufgenommeneEnergieEinschaltenID=23
          PS960_AufgenommeneEnergieAnalyseResetID=24
          PS960_AufgenommeneEnergieLebenszeitID=25
          #endif
          #ifdef Information
          PS960_ResetID=27
          PS960_WirkungsgradID=28
          PS960_EinschaltDatumID=29
          PS960_EinschaltZeitID=30
          PS960_BetriebsstundenID=31
          #endif
          //  --------------------------------------------------------------------------------------------------------------------------
          //  Hier die IDs der Timebuffer konfigurieren
          //  Default sind belegt: 254 bis 244
          //  --------------------------------------------------------------------------------------------------------------------------
          PS960_LeistungBuffer=254
          PS960_SpannungBuffer=253
          PS960_StromBuffer=252
          #ifdef Chart V,A,W,°C
          PS960_TemperaturBuffer=251
          #endif
          #ifdef Spannung,Strom,Leistung-Wächter
          PS960_LeistungMaxBuffer=249
          PS960_LeistungMinBuffer=248
          PS960_SpannungMaxBuffer=247
          PS960_SpannungMinBuffer=246
          PS960_StromMinBuffer=245
          PS960_StromMaxBuffer=244
          #endif
          //  --------------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------------
          //  Beginn EibPC Code
          //  --------------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------------
          //  Hier muss nichts mehr verändert werden
          //  --------------------------------------------------------------------------------------------------------------------------
          #ifdef Information
          if systemstart() then write(address(PS960_GAEinschaltdatum),PS960_GADatum) endif
          if systemstart() then write(address(PS960_GAEinschaltzeit),PS960_GAUhrzeit) endif
          //Einschaltdatum
          if systemstart() or change(PS960_GAEinschaltdatum) then pdisplay(PS960_EinschaltDatumID,convert(PS960_GAEinschaltdatum,$$),DATE,ACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Einschaltzeit
          if systemstart() or change(PS960_GAEinschaltzeit) then pdisplay(PS960_EinschaltZeitID,convert(PS960_GAEinschaltzeit,$$),CLOCK,ACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Wirkungsgrad
          PS960_Pzu=convert(PS960_GAAufgenommeneEnergieLebenszeit,0f16)
          PS960_Pab=convert(PS960_GAAbgegebeneEnergieLebenszeit,0f16)
          PS960_Wirkungsgrad=(PS960_Pab/PS960_Pzu)*100f16
          if systemstart() or change(PS960_Wirkungsgrad) then pdisplay(PS960_WirkungsgradID,convert(PS960_Wirkungsgrad,$$)+$%$,INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Betriebsstunden
          PS960_Betriebsstunden=convert(PS960_GABetriebsstunden,0f16)*100f16
          if change(PS960_GABetriebsstunden) then read(address(PS960_GABetriebsstunden_address)) endif
          if systemstart() or change(PS960_GABetriebsstunden) then {
              pdisplay(PS960_BetriebsstundenID, convert(PS960_Betriebsstunden,$$) + $ h $,CLOCK,INACTIVE,GREEN,PS960_PowerSupplyID);
          } endif
          #endif
          #ifdef Grenzwertanzeige
          //TemperaturAnzeigeButton
          PS960_AktuelleTemperatur=convert(PS960_GATemperatur,$$)
          PS960_MinimaleTemperatur=convert(PS960_GATemperaturMin,$$)
          PS960_MaximaleTemperatur=convert(PS960_GATemperaturMax,$$)
          if change(PS960_GATemperatur) or change(PS960_GATemperaturMin) or change(PS960_GATemperaturMax) then pdisplay(PS960_TemperaturID,PS960_MinimaleTemperatur + $ °C -    $ + PS960_AktuelleTemperatur  + $ °C -    $ + PS960_MaximaleTemperatur + $ °C$,TEMPERATURE,INACTIVE,GREY,PS960_PowerSupplyID) endif
          //MtimeChart2Grafen Temperatur Min Max
          timebufferconfig(PS960_TemperaturBuffer, 0, 672u16, 0f16)
          if  Zyklus15 then {
              timebufferadd(PS960_TemperaturBuffer,PS960_GATemperatur);
          } endif
          //Store and Read2Buffer Temperatur,max
           
          if chtime(23,45,01) then {
              timebufferstore(PS960_TemperaturBuffer);
          } endif
          if after(systemstart(),30000u64) then {
              timebufferread(PS960_TemperaturBuffer);
          } endif
          // Grenzwerte für Spannung und Stromstearke
          // Grenzwerte Input/Output
          PS960_StromInput=webinput(PS960_Input5ID)
          PS960_SpgInput=webinput(PS960_Input4ID)
          PS960_SpgInputBack=convert(PS960_SpgInput,0f16)*1000.0f16
          if after(systemstart(),5000u64) or change(PS960_GASpannungGrenzwert) or change(PS960_GAStromstaerkeGrenzwert) then {
              weboutput(PS960_Output17ID,$aktueller Grenzwert Spannung: <br>$ + convert((PS960_GASpannungGrenzwert/1000f16),$$) + $ Volt$);
              weboutput(PS960_Output18ID,$aktueller Grenzwert Srom: <br>$ + convert(PS960_GAStromstaerkeGrenzwert,$$) + $ mA$)
          } endif
          if change(PS960_SpgInput) then {
              weboutput(PS960_Output17ID,$aktueller Grenzwert Spannung: <br>$ + PS960_SpgInput + $ Volt$);
              write(address(PS960_GASpannungGrenzwert_address),PS960_SpgInputBack)
          } endif
          if change(PS960_StromInput) then {
              weboutput(PS960_Output18ID,$aktueller Grenzwert Strom: <br>$ + PS960_StromInput + $ mA$);
              write(address(PS960_GAStromstaerkeGrenzwert_address),convert(PS960_StromInput,0f16))
          } endif
          if change(PS960_GASpannungGrenzwert) then read(address(PS960_GASpannung_address)) endif
          if change(PS960_GAStromstaerkeGrenzwert) then read(address(PS960_GAStrom_address)) endif
          //Grenzwerte über/unterschritten
          PS960_SpgGrenzwertOben=PS960_GASpannungGrenzwertueberschritten
          PS960_SpgGrenzwertUnten=!PS960_GASpannungGrenzwertueberschritten
          PS960_StromGrenzwertOben=PS960_GAStromstearkeGrenzwertueberschritten
          PS960_StromGrenzwertUnten=!PS960_GAStromstearkeGrenzwertueberschritten
          PS960_SpannungGrenzwert=PS960_GASpannungGrenzwert
          PS960_StromGrenzwert=PS960_GAStromstaerkeGrenzwert
          PS960_SpannungV=convert(PS960_GASpannung,0f16)/1000f16
          PS960_StromMA=convert(PS960_GAStrom,0f16)
          if PS960_SpgGrenzwertOben==1b01 or PS960_StromGrenzwertOben==1b01 then {
              pdisplay(PS960_SpannungGrenzwertID,$Spg: $ +convert(PS960_SpannungV,$$) + $ Volt $ + $- Strom: $ +convert(PS960_StromMA,$$)+ $ mA$,WARN,DARKRED,GREEN,PS960_PowerSupplyID);
          } endif
          if systemstart() or PS960_SpgGrenzwertUnten and PS960_StromGrenzwertUnten then {
              pdisplay(PS960_SpannungGrenzwertID,$Spg: $ +convert(PS960_SpannungV,$$) + $ Volt $ + $- Strom: $ +convert(PS960_StromMA,$$)+ $ mA$,WARN,INACTIVE,GREY,PS960_PowerSupplyID);
          } endif
          #endif
          #ifdef Spannung,Strom,Leistung-Wächter
          //Aktuelle Spannung
          PS960_S1=convert(PS960_GASpannung,0f16)/1000f16
          if systemstart() or change(PS960_GASpannung) then pdisplay(PS960_AktuelleSpannungID,convert(PS960_S1,$$) + $V$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Maximale Spannung
          PS960_S2=convert(PS960_GASpannungMax,0f16)/1000f16
          if systemstart() or change(PS960_GASpannungMax) then pdisplay(PS960_MaximaleSpannungID,convert(PS960_S2,$$) + $V$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Minimale Spannung
          PS960_S3=convert(PS960_GASpannungMin,0f16)/1000f16
          if systemstart() or change(PS960_GASpannungMin) then pdisplay(PS960_MinimaleSpannungID,convert(PS960_S3,$$) + $V$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Aktueller Strom
          if systemstart() or change(PS960_GAStrom) then pdisplay(PS960_AkutellerStromID,convert(PS960_GAStrom,$$) + $mA$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Maximaler Strom
          if systemstart() or change(PS960_GAStromMax) then pdisplay(PS960_MaximalerStromID,convert(PS960_GAStromMax,$$) + $mA$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Minimaler Strom
          if systemstart() or change(PS960_GAStromMin) then pdisplay(PS960_MinimalerStromID,convert(PS960_GAStromMin,$$) + $mA$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Aktuelle Leistung
          PS960_L1=convert(PS960_GALeistung,2.2f16)
          if systemstart() or change(PS960_L1) then pdisplay(PS960_AktuelleLeistungID,convert(PS960_L1,$$) + $W$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Maximale Leistung
          PS960_L2=convert(PS960_GALeistungMax,2.2f16)
          if systemstart() or change(PS960_GALeistungMax) then pdisplay(PS960_MaximaleLeistungID,convert(PS960_L2,$$) + $W$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          //Minimale Leistung
          PS960_L3=convert(PS960_GALeistungMin,2.2f16)
          if systemstart() or change(PS960_L3) then pdisplay(PS960_MinimaleLeistungID,convert(PS960_L3,$$) + $W$ + $ - am $ + convert(settime(),$$),INFO,INACTIVE,GREEN,PS960_PowerSupplyID) endif
          #endif
          #ifdef EnergieWächter
          //Abgegebene Energie Lebenszeit
          if change(PS960_GAAufgenommeneEnergieLebenszeit) then {
          read(address(PS960_GAAufgenommeneEnergieLebenszeit_address));
          read(address(PS960_GAAbgegebeneEnergieLebenszeit_address));
          }endif
          if Zyklus15 then read(address(PS960_GAAbgegebeneEnergieLebenszeit_address)) endif
          if systemstart() or change(PS960_GAAbgegebeneEnergieLebenszeit) then pdisplay(PS960_AbgegebeneEnergieLebenszeitID,convert(PS960_GAAbgegebeneEnergieLebenszeit,$$c14) + $ Wh$c14,METER,INACTIVE,GREY,PS960_PowerSupplyID) endif
          //Abgegebene Energie Einschalten
          if Zyklus15 then read(address(PS960_GAAbgegebeneEnergieEinschalten_address)) endif
          if systemstart() or change(PS960_GAAbgegebeneEnergieEinschalten) then pdisplay(PS960_AbgegebeneEnergieEinschaltenID,convert(PS960_GAAbgegebeneEnergieEinschalten,$$c14) + $ Wh$c14,METER,INACTIVE,GREY,PS960_PowerSupplyID) endif
          //Abgegebene Energie AnalyseReset
          if Zyklus15 then read(address(PS960_GAAbgegebeneEnergieAnalyseReset_address)) endif
          if systemstart() or change(PS960_GAAbgegebeneEnergieAnalyseReset) then pdisplay(PS960_AbgegebeneEnergieAnalyseResetID,convert(PS960_GAAbgegebeneEnergieAnalyseReset,$$c14) + $ Wh$c14,METER,INACTIVE,GREY,PS960_PowerSupplyID) endif
          //Aufgenommene Energie Lebenszeit
          if Zyklus15 then read(address(PS960_GAAufgenommeneEnergieLebenszeit_address)) endif
          if systemstart() or change(PS960_GAAufgenommeneEnergieLebenszeit) then pdisplay(PS960_AufgenommeneEnergieLebenszeitID,convert(PS960_GAAufgenommeneEnergieLebenszeit,$$c14) + $ Wh$c14,METER,INACTIVE,GREY,PS960_PowerSupplyID) endif
          //Aufgenommene Energie Einschalten
          if Zyklus15 then read(address(PS960_GAAufgenommeneEnergieEinschalten_address)) endif
          if systemstart() or change(PS960_GAAufgenommeneEnergieEinschalten) then pdisplay(PS960_AufgenommeneEnergieEinschaltenID,convert(PS960_GAAufgenommeneEnergieEinschalten,$$c14) + $ Wh$c14,METER,INACTIVE,GREY,PS960_PowerSupplyID) endif
          //Aufgenommene Energie AnalyseReset
          if Zyklus15 then read(address(PS960_GAAufgenommeneEnergieAnalyseReset_address)) endif
          if systemstart() or change(PS960_GAAufgenommeneEnergieAnalyseReset) then pdisplay(PS960_AufgenommeneEnergieAnalyseResetID,convert(PS960_GAAufgenommeneEnergieAnalyseReset,$$c14) + $ Wh$c14,METER,INACTIVE,GREY,PS960_PowerSupplyID) endif
          #endif
          #ifdef Information
          ////Charts
          // PS960_Analyse Reset
          PS960_AnalyseReset=0b01
          if systemstart() then pdisplay(PS960_ResetID,$Letzter Reset am $+convert(settime(),$$),WASTE,STATE4,GREEN,PS960_PowerSupplyID) endif
          if pbutton(PS960_ResetID,PS960_PowerSupplyID)==1 then PS960_AnalyseReset=1b01 endif
          if PS960_AnalyseReset then write(address(PS960_GAAnalyseReset_address),1b01) endif
          if PS960_AnalyseReset then pdisplay(PS960_ResetID,$Letzter Reset am $+convert(settime(),$$),WASTE,BRIGHTRED,BLINKRED,PS960_PowerSupplyID) endif  
          if after(PS960_AnalyseReset,5000u64) then pdisplay(PS960_ResetID,$Letzter Reset am $+convert(settime(),$$),WASTE,STATE4,GREEN,PS960_PowerSupplyID) endif
          if systemstart() or after(PS960_AnalyseReset,1000u64) then {
              PS960_AnalyseReset=0b01;
              read(address(PS960_GAUhrzeit_address));
              read(address(PS960_GADatum_address));
          #endif
              #ifdef Spannung,Strom,Leistung-Wächter
              read(address(PS960_GASpannungMin_address));
              read(address(PS960_GASpannungMax_address));
              read(address(PS960_GAStromMin_address));
              read(address(PS960_GAStromMax_address));
              read(address(PS960_GALeistungMin_address));
              read(address(PS960_GALeistungMax_address));
              #endif
              #ifdef EnergieWächter
              read(address(PS960_GAAbgegebeneEnergieLebenszeit_address));
              read(address(PS960_GAAbgegebeneEnergieEinschalten_address));
              read(address(PS960_GAAbgegebeneEnergieAnalyseReset_address));
              read(address(PS960_GAAufgenommeneEnergieLebenszeit_address));
              read(address(PS960_GAAufgenommeneEnergieEinschalten_address));
              read(address(PS960_GAAufgenommeneEnergieAnalyseReset_address));
              #endif
              #ifdef Grenzwertanzeige
              read(address(PS960_GASpannungGrenzwert_address));
              read(address(PS960_GAStromstaerkeGrenzwert_address));
              read(address(PS960_GATemperatur_address));
              read(address(PS960_GATemperaturMin_address));
              read(address(PS960_GATemperaturMax_address));
              read(address(PS960_GASpannungGrenzwertueberschritten_address));
              read(address(PS960_GAStromstearkeGrenzwertueberschritten_address));
              #endif
              #ifdef Information
              read(address(PS960_GAEinschaltzeit_address));
              read(address(PS960_GAEinschaltdatum_address));
              read(address(PS960_GABetriebsstunden_address));
              read(address(PS960_GAAnalyseReset_address))
              } endif
              #endif
          #ifdef Spannung,Strom,Leistung-Wächter
          //MtimeChart2Grafen Spannung Min Max
          timebufferconfig(PS960_SpannungMinBuffer, 1, 672u16, 3.3f16)
          timebufferconfig(PS960_SpannungMaxBuffer, 1, 672u16, 3.3f16)
          //MtimeChart2Grafen Leistung Min Max
          timebufferconfig(PS960_LeistungMinBuffer, 1, 672u16, 3.3f32)
          timebufferconfig(PS960_LeistungMaxBuffer, 1, 672u16, 3.3f32)
          //MtimeChart2Grafen Strom Min Max
          timebufferconfig(PS960_StromMinBuffer, 1, 672u16, 3.3f16)
          timebufferconfig(PS960_StromMaxBuffer, 1, 672u16, 3.3f16)
          
          if Zyklus15 then {
              timebufferadd(PS960_SpannungMinBuffer,PS960_S3);
              timebufferadd(PS960_SpannungMaxBuffer,PS960_S2);
                  timebufferadd(PS960_StromMinBuffer,PS960_GAStromMin);
              timebufferadd(PS960_StromMaxBuffer,PS960_GAStromMax);
              timebufferadd(PS960_LeistungMinBuffer,PS960_GALeistungMin);
              timebufferadd(PS960_LeistungMaxBuffer,PS960_GALeistungMax) ;
          } endif
          //Store and Read2Buffer Spannung,Min,Max
          if chtime(23,45,01) then {
              timebufferstore(PS960_SpannungMinBuffer);
              timebufferstore(PS960_SpannungMaxBuffer);
          } endif
          if after(systemstart(),30000u64) then {
              timebufferread(PS960_SpannungMinBuffer);
              timebufferread(PS960_SpannungMaxBuffer);
          } endif
          
          
          //Store and Read2Buffer Strom,min,max
          if chtime(23,45,04) then {
              timebufferstore(PS960_StromMinBuffer);
              timebufferstore(PS960_StromMaxBuffer);
          } endif
          if after(systemstart(),31000u64) then {
              timebufferread(PS960_StromMinBuffer);
              timebufferread(PS960_StromMaxBuffer);
          } endif
          
          //Store and Read2Buffer Leistung,Min,Max
          if chtime(23,45,41) then {
              timebufferstore(PS960_LeistungMinBuffer);
              timebufferstore(PS960_LeistungMaxBuffer);
          } endif
          if after(systemstart(),32000u64) then {
              timebufferread(PS960_LeistungMinBuffer);
              timebufferread(PS960_LeistungMaxBuffer);
          } endif
          #endif
          #ifdef Chart V,A,W,°C
          //MtimeChart3Graphen3Datatyp Spannung Strom Leistung
          timebufferconfig(PS960_SpannungBuffer, 1, 672u16, 3.3f16)
          timebufferconfig(PS960_StromBuffer, 1, 672u16, 3.3f16)
          timebufferconfig(PS960_LeistungBuffer, 1, 672u16,1.1f32)
          PS960_SBuffer=convert(PS960_GASpannung,0f16)/1000f16
          
          if after(systemstart(),20000u64) or  Zyklus15 then {
              timebufferadd(PS960_SpannungBuffer,PS960_SBuffer);
              timebufferadd(PS960_StromBuffer,PS960_GAStrom);
              timebufferadd(PS960_LeistungBuffer,PS960_GALeistung)
          } endif
          //Store and Read3Buffer Spannung,Strom,Leistung
          if cycle(30,00) then {
              timebufferstore(PS960_SpannungBuffer);
              timebufferstore(PS960_StromBuffer);
              timebufferstore(PS960_LeistungBuffer)
          } endif
          if after(systemstart(),10000u64) then {
              timebufferread(PS960_SpannungBuffer);
              timebufferread(PS960_StromBuffer);
              timebufferread(PS960_LeistungBuffer)
          } endif
          #endif
          #ifdef Mail
          // Benachrichtigung per E-mail bei überschreiten des eingestellten Grenzwertes
          PS960_Betreff1=$Spannungsgrenzwert überschritten$
          PS960_Nachricht1=$Der Spannungsgrenzwert wurde überschritten $ + convert(PS960_SpannungV,$$) + convert(PS960_StromMA,$$)
          if PS960_SpgGrenzwertOben==1b01 then sendmail(PS960_Mail_Empfaengeradresse,PS960_Betreff1,PS960_Nachricht1) endif
          PS960_Betreff2=$Stromgrenzwert überschritten$
          PS960_Nachricht2=$Der Stromgrenzwert wurde überschritten $ + convert(PS960_SpannungV,$$) + convert(PS960_StromMA,$$)
          if PS960_StromGrenzwertOben==1b01 then sendmail(PS960_Mail_Empfaengeradresse,PS960_Betreff2,PS960_Nachricht2) endif
          #endif
          #addto [WebServer]
          #ifdef PS960_WebServer
          // Webelemente für das Power Supply
          page(PS960_PowerSupplyID)[$Enertex$,$PowerSupply$]
          design $black$
          header(0)
          footer(0)
          #endif
          #ifdef Grenzwertanzeige
               weboutput(PS960_Output17ID)[SINGLE,ICON] weboutput(PS960_Output18ID)[SINGLE,ICON]\\
              pshifter(PS960_TemperaturID)[TEMPERATURE]$Temperatur Min  -  Aktuell  -  Max$
               webinput(PS960_Input4ID)[UPDATE]$Grenzwert Spannung in V$ webinput(PS960_Input5ID)[UPDATE]$Grenzwert Strom in mA$ \\
              pshifter(PS960_SpannungGrenzwertID)[WARN]$Grenzwerte$
               line
          #endif
          #ifdef Chart V,A,W,°C
               mtimechart(PS960_PSSpannung5ID)[EXTLONG,2,255,0,500,0,500]($Spg. in V$,0,PS960_SpannungBuffer,$Strom in mA$,1,PS960_StromBuffer,$Leistung in W$,1,PS960_LeistungBuffer)\\
              mtimechart(PS960_PSTemperaturID)[EXTTRIPLE,2,255,0,500,0,500]($Temperatur in °C$,0,PS960_TemperaturBuffer)
          #endif
          #ifdef Spannung,Strom,Leistung-Wächter
               pshifter(PS960_MaximaleSpannungID)[INFO] $Maximale Spannung$ pshifter(PS960_MaximalerStromID)[INFO] $Maximaler Strom$ pshifter(PS960_MaximaleLeistungID)[INFO] $Maximale Leistung$
               pshifter(PS960_AktuelleSpannungID)[INFO] $Aktuelle Spannung$ pshifter(PS960_AkutellerStromID)[INFO] $Aktueller Strom$ pshifter(PS960_AktuelleLeistungID)[INFO] $Aktuelle Leistung$
               pshifter(PS960_MinimaleSpannungID)[INFO] $Minimale Spannung$ pshifter(PS960_MinimalerStromID)[INFO] $Minimaler Strom$ pshifter(PS960_MinimaleLeistungID)[INFO] $Minimale Leistung$
               mtimechart(PS960_PSSpannung6ID)[EXTTRIPLE,2,255,0,500,0,500]($Spannung in V$,0,PS960_SpannungBuffer,$Spannung Min$,0,PS960_SpannungMinBuffer,$Spannung Max$,0,PS960_SpannungMaxBuffer)\\
                   mtimechart(PS960_PSStrom7ID)[EXTTRIPLE,2,255,0,500,0,500]($Strom in mA$,0,PS960_StromBuffer,$Strom Min$,0,PS960_StromMinBuffer,$Strom Max$,0,PS960_StromMaxBuffer) \\
                  mtimechart(PS960_PSLeistung8ID)[EXTTRIPLE,2,255,0,500,0,500]($Leistung in W$,0,PS960_LeistungBuffer,$Leistung Min$,0,PS960_LeistungMinBuffer,$Leistung Max$,0,PS960_LeistungMaxBuffer)
               line
          #endif
          #ifdef EnergieWächter
                  pshifter(PS960_AbgegebeneEnergieEinschaltenID)[METER]$Abgegebene Energie seit Einschaltzeitpunkt$ \\
              pshifter(PS960_AbgegebeneEnergieAnalyseResetID)[METER]$Abgegebene Energie seit Analyse-Reset$ \\
              pshifter(PS960_AbgegebeneEnergieLebenszeitID)[METER]$Abgegebene Energie seit Lebenszeit$
                  pshifter(PS960_AufgenommeneEnergieEinschaltenID)[METER]$Aufgenommene Energie seit Einschaltzeitpunkt$ \\
              pshifter(PS960_AufgenommeneEnergieAnalyseResetID)[METER]$Aufgenommene Energie seit Analyse-Reset$ \\
              pshifter(PS960_AufgenommeneEnergieLebenszeitID)[METER]$Aufgenommene Energie seit Lebenszeit$
          #endif
          #ifdef Information
          pbutton(PS960_EinschaltDatumID)[DATE]$Einschaltdatum$pbutton(PS960_EinschaltZeitID)[CLOCK]$Einschaltzeit$pbutton(PS960_BetriebsstundenID)[CLOCK]$Betriebsstunden$pbutton(PS960_ResetID)[WASTE]$Analysereset$ pshifter(PS960_WirkungsgradID)[INFO]$Wirkungsgrad$
          #endif
          //  --------------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------------
          //  Ende PowerSupply960 Code
          //  --------------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------------
          //  --------------------------------------------------------------------------------------------------------------------------
          Zuletzt geändert von enertegus; 19.05.2015, 16:51.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #50
            Guten Abend Michael,

            vielen Dank für den Code.

            Kannst Du bitte einmal einen Screenshot der fertigen Visu Seite hochladen.

            Viele Grüße Michael

            Kommentar


              #51
              Hier noch der Link zum vorhin hochgeladenen Code.
              You do not have permission to view this gallery.
              This gallery has 1 photos.
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #52
                Zitat von enertegus Beitrag anzeigen
                Habe hier eben nachgefragt: Ist vorgegebenen vom KNX Standard.
                Kannst du das nicht näher erläutern, was hier konkret vorgegeben ist?
                BR
                Marc

                Kommentar


                  #53
                  Auch von meiner Seite - Danke für den Code!

                  Grüße Michael
                  Meine Installation: HS4, EiBPC, Wiregate, DALI, Sonos Multiroom, Fritzbox, Iphone, PV

                  Kommentar


                    #54
                    Zitat von enertegus Beitrag anzeigen
                    So nun hier der überarbeitete Code.
                    Hab noch einen Verbesserungsvorschlag für diesen Abschnitt:

                    Code:
                    #ifdef Mail
                    // Benachrichtigung per E-mail bei überschreiten des eingestellten Grenzwertes
                    PS960_Betreff1=$Spannungsgrenzwert überschritten$
                    [COLOR=#FF0000]PS960_Nachricht1=$Der Spannungsgrenzwert wurde überschritten $ + convert(PS960_SpannungV,$$) + convert(PS960_StromMA,$$)[/COLOR]
                    if PS960_SpgGrenzwertOben==1b01 then sendmail(PS960_Mail_Empfaengeradresse,PS960_Betreff1,PS960_Nachricht1) endif
                    PS960_Betreff2=$Stromgrenzwert überschritten$
                    [COLOR=#FF0000]PS960_Nachricht2=$Der Stromgrenzwert wurde überschritten $ + convert(PS960_SpannungV,$$) + convert(PS960_StromMA,$$)[/COLOR]
                    if PS960_StromGrenzwertOben==1b01 then sendmail(PS960_Mail_Empfaengeradresse,PS960_Betreff2,PS960_Nachricht2) endif
                    Die beiden markierten Zeilen führen zu einem Mailtext, der wie folgt aussieht:

                    Der Spannungsgrenzwert wurde überschritten 27.92418.24
                    Das ist nicht wirklich lesbar. Ich würde da eher sowas vorschlagen:

                    Code:
                    [COLOR=#0000FF]PS960_Nachricht1=$Der Spannungsgrenzwert wurde überschritten: $ + stringformat(PS960_SpannungV, 4, 1, 5, 1) + $V bei $ + stringformat(PS960_StromMA, 4, 1, 5, 0) + $mA.$[/COLOR]
                    Die Anzahl der Nachkommastellen ist natürlich Geschmackssache, aber 1 Kommastelle bei Volt und keine bei mA ist für mich ok.

                    Außerdem bau ich wahrscheinlich auch noch den aktuellen Grenzwert in den Mailtext mit ein.

                    Generell werd ich für den Webserver die Nachkommastellen noch beschneiden, da z. B. drei Nachkommastellen bei einem mA Wert nicht viel Sinn machen. IMHO. Macht es für mich übersichtlicher und leichter lesbar.

                    Außerdem fehlt mir im Webserver noch die Angabe WANN der Grenzwert überschritten wurde.
                    Zuletzt geändert von Uwe!; 13.10.2015, 13:09.
                    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                    Kommentar


                      #55
                      hier scheint mir auch noch ein Fehler drin zu stecken, da fehlt das "_address":
                      Code:
                      //  --------------------------------------------------------------------------------------------------------------------------
                      //  --------------------------------------------------------------------------------------------------------------------------
                      //  Beginn EibPC Code
                      //  --------------------------------------------------------------------------------------------------------------------------
                      //  --------------------------------------------------------------------------------------------------------------------------
                      //  Hier muss nichts mehr verändert werden
                      //  --------------------------------------------------------------------------------------------------------------------------
                      #ifdef Information
                      if systemstart() then write(address(PS960_GAEinschaltdatum[COLOR=#FF0000][B]_address[/B][/COLOR]),PS960_GADatum) endif
                      if systemstart() then write(address(PS960_GAEinschaltzeit[COLOR=#FF0000][B]_address[/B][/COLOR]),PS960_GAUhrzeit) endif
                      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                      Kommentar

                      Lädt...
                      X