oscat.lib > Anwendungsbeispiele / Application Examples

Gemittelte Aussentemperatur der letzten 24 Std.

(1/3) > >>

martin.k:
Hallo !

Thema: Hausautomatisierung - Temperaturen

Mich interessiert die gemittelte Aussentemperatur der letzten 24 Std. Dazu verwende ich SH_1 und FT_avg.
Variabeln:
xAussentemperaturSued_C ist die Aussentemperatur
xAussentemperaturSued_C24 ist die gemittelte Aussentemperatur auf 24 Std. Ich mache auch noch eine Auswertung auf 72 Std. Diese Variable heisst dann natürlich xAussentemperaturSued_C72

Anbei ein Screenshot.

Leider speichert FT_avg nur 32 Werte was schon bei 24 Std. zu einer gewissen Ungenauigkeit führt...

Viele Grüße



[gelöscht durch Administrator]

McNugget2000:
Grundsätzlich wirst Du dir hierfür die OSCAT.Lib direkt öffnen und etwas verändern müssen.
Die Begrenzung von FT_AVG auf 32 hat seinen Ursprung im Baustein Delay, der intern aufgerufen wird.

So wie ich es sehe, könnte das Array im Innern von Delay (da es ja ein INT Wert ist) auf einen höheren Wert umstellen.
Zu beachten wäre dabei, dass dann auch die Werte-Kontrollen im Innern von FT_AVG angepasst werden müssen.

Ich hoffe, das war so richtig... Hugo?? Habe ich es verstanden??

Gruss

McNugget

hugo:
sicherlich kann man in der llib dinge anpassen, die lib ist ja auch aus diesem grund open source.

sicherer wäre ein vorgehen wenn man sich neue bausteine mit neuen eigenschaften erzeugt, dann hat man nicht das problem bei jeder neuen release der lib wieder anpassen zu müssen.

nun zum thema aussentemperatur

ein mittelwert ist in diesen fall nichts anderes als ein filter.
genausogut (mit besseren filtereigenschaften) wäre hier ein tiefpass : FILTER_W, FILTER_DW. FT_PT1.  _W ist für 16 bit daten, _DW ist für 32 bit daten und _PT1 ist für REAL.
der Vorteil eines tiefpassfilters sind ein besserer Frequenzgang und ein wesentlich geringerer aufwand. versuchs mal mit einem ft_pt1 mit T1 = T#8h.
Beim Einsatz von FT_PT1 sparst du dir auch gleich den sample and hold am eingang.

Mittelwertbildung als filter hat nur einen Vorteil, einen konstanten Phasengang über den Frequenzbereich. ansonsten sind die Filtereigenschaften sogar schlechter, und Störungen mit hohen Frequenzen werden schlechter gefiltert.

das beispiel unten zeigt den einsatz zweier tiefpässe für t_aussen und T_aussen_long

Die zeit eines tiefpasses bedeutet:
nach der Zeit T1 hat der Ausgang bei einem eingangsprung 63% dieses sprungs mitgemacht, und bei 3*t bereits 95%.
also 8h entspricht etwa einem mittelwert über 24h

[gelöscht durch Administrator]

hugo:
bei meinem obigen Beispiel verwende ich ft_pt1 einen tiefpass der mit real zahlen arbeitet.

normalerweise liegen die sensordaten als word oder dword vor.
in diesem fall kann man die sensordaten direkt auf einen filter_w oder filter_DW legen und direkt ohne umwandlung auf reals filtern.

zur info.
die lösung mit sample and hold und avg bildung 32 samples benötigt etwa 25 mal mehr CPU Zeit als die filterung mit tiefpass.

die lösung mit filter_w oder _DW wird nochmals deutlich weniger cpu last erzeugen

ewo:
Hallo Hugo,
bisher habe ich meine analogen Messwerte nach dem AIN Modul mit einem FT_PT1 gefiltert. Nach diesem Beitrag habe ich nun zwischen Eingangssignal und AIN einen Filter_W mit der Zeit T#1m40s gelegt, das funktioniert soweit gut, die Ausgangswerte sind schön konstant. Jedoch immer wieder aus unerklärlichem Grund macht der Ausgang Y bei einem Eingangswert X von z.B. 12000 einen Sprung von 12000 auf ca. 8000! Dies passiert so ca alle 20 Minuten. Als Klemme habe ich eine WAGO 750-455 im Einsatz.

Gruß
Ewald

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln