Ankündigung
Einklappen
Keine Ankündigung bisher.
Kommunikation Enertex Spannungsversorgung und EibPC
Einklappen
X
-
offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
Enertex Produkte kaufen
-
Zitat von enertegus Beitrag anzeigenHabe hier eben nachgefragt: Ist vorgegebenen vom KNX Standard.
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
-
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
- Likes 1
Kommentar
-
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
-
Zitat von enertegus Beitrag anzeigenHabe hier eben nachgefragt: Ist vorgegebenen vom KNX Standard.BR
Marc
Kommentar
-
Zitat von enertegus Beitrag anzeigenSo nun hier der überarbeitete Code.
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
Der Spannungsgrenzwert wurde überschritten 27.92418.24
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]
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
-
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
Kommentar