habe ich mir bei reichelt einen Drucksensor MPX 4115A bestellt und an eine 0-10V klemme meine Wago gebastelt und die Umrechnungsformel eingegeben, das ganze sieht soweit auch nicht schlecht aus, nur passt mein Luftdruck von aktuell ca 950 hPa nicht zu dem Barometer das hier hängt und den Werten aus dem Netz (beide gut 1000 hPa)
Kann mir vielleicht jemand von euch sagen wo ich den Fehler gemacht habe?
Falls sich jemand wundert warum ich 2 Analoge Eingänge abfrage: die Berechnung des Drucks benötigt die genaue Versorgungsspannung, hier auf der sicheren Seite zu sein lese ich die auch gleich mit ein.
hier noch der fertige code, habs mit 2 Funktionsblöcken realisiert, vielleicht kanns ja jemand brauchen
Luftdruck (um die Spannung des Druckmessers in hPa umzuwandeln
FUNCTION_BLOCK Luftdruck
VAR_INPUT
Vdruck: WORD; (*Spannung des Druckmessers von 0-10V Klemme*)
Vref: WORD; (*Referenzspannung von 0-10V Klemme*)
END_VAR
VAR_OUTPUT
LuftdruckAbs: REAL;
END_VAR
VAR
END_VAR
LuftdruckAbs := (WORD_TO_REAL(Vdruck)/WORD_TO_REAL(Vref)+0.095)/0.009*10;
und hier noch die Reduzierung auf NN
FUNCTION_BLOCK Hoehenreduktion
VAR_INPUT
Temperatur: REAL := -15; (*Aussentemperatur*)
LuftdruckAbs: REAL := 0; (*gemessener Luftdruck*)
Hoehe: INT := 450; (*Höhe über NN*)
END_VAR
VAR_OUTPUT
LuftdruckRel: REAL := 0; (*Relativer Luftdruck bei NN*)
END_VAR
VAR
g_0: REAL := 9.80665; (*Normfallbeschleunigung (m/s^2)*)
RM: REAL := 287.05; (*Gaskonstante für trockene Luft (R = R_0 / M)*)
T: REAL := 273.15; (*Umrechnung von °C in K*)
Ch: REAL := 0.12; (*DWD-Beiwert für die Berücksichtigung der Luftfeuchte*)
E: REAL := 0; (*Dampfdruck des Wasserdampfanteils*)
a: REAL := 0.0065; (*vertikaler Temperaturgradient = Temperaturabnahme in K pro geopotentiellen Metern (K/gpm)*)
xp: REAL := 0; (*Exponent für Formel*)
END_VAR
IF Temperatur < 9.1 THEN
E := 5.6402 * ( -0.0916 + EXP(0.06 * Temperatur)); (*Dampfdruck des Wasserdampfanteils bei t < 9.1°C *)
ELSE
E := 18.2194 * (1.0463 - EXP(-0.0666 * Temperatur));(*Dampfdruck des Wasserdampfanteils bei t >= 9.1°C *)
END_IF
xp := Hoehe*g_0/(RM*(T+Temperatur+Ch*E+a*Hoehe/2)); (*Exponent für Formel*)
LuftdruckRel := LuftdruckAbs*EXP(xp); (*Formel für den NN-bezogenen Luftdruck laut Wikipedia*)
wenn jemand einen Fehler findet oder einen verbesserungsvorschlag hat, bitte melden, danke