analoge Messwerte glätten

xinix

Level-1
Beiträge
46
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

nun noch mal ne zweite Frage.

Ermittle Füllstände mit Füllstandssensorik 4-20mA. Da die Tanks mit sehr schnell mit großen Mengen befüllt werden, schwanken diese Werte während der Befüllung. Ich habe nun gedacht, vielleicht den zwischenwert der in einer sec. gemessenen Werte zu verwenden. Es hapert aber etwas an der Umsetzung. Benötige mal einen Denktritt. Das wird wohl nur in ST gehen oder?

Danke!
 
wie wäre es mit nen time? Mit der Flanke nimmst du immer den Aktualwert auf. Falls du Skype / ICQ oder so hast meld dich ich zeig dir dann etwas ST :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hab leider noch keinen skype bzw. icq konto. Werd ich mir aber wohl mal anlegen. vielleicht komme ich morgen noch mal auf dein Angebot zurück....

Vielen Dank erst einmal.
 
denk mal an eine Mittelwertbildung über n Werte in einer Zeiteinheit nach.
(Aktueller Wert + letzter Wert + vorletzter Wert , . . . / Anzahl Werte)
 
mit dieser vorgehensweise hatte bereits spekuliert - jedoch fehlt mir die umsetzung wie ich zum Beispiel 10 messwerte in einer Sekunde abfrage.
Im Grunde ist mir das schon klar. In dem ich mir mit einem Zeitglied alle 1/10 sek mit einer Flanke den Messwert zu einer var hinzuaddiere, gleichzeitig einen zähler bis 9 mitlaufen lasse, dann durch 10 teile und alles rücksetze. nur wie setze ich das in ST um ?!?!?

:confused:

der Weg scheint das Ziel zu sein... leider spielt die Zeit nicht mit....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
it tackt=true and lauf<>9 then
zwischenwert:=zwischenwert+messwert;
lauf:=lauf+1;
end_if;

if lauf=9 then
zwischenwert=zwischenwert/10;
lauf:=0;
end_if;
 
Zuletzt bearbeitet:
Hallo Dante,

erst mal vielen dank für den Tritt! Das ist ja echt genial wenn man weiß wie man das nutzen kann. Wurde in diesem Forum eigentlich schon mal so eine Art Befehlsreferenz für ST veröffentlicht? Oder wo bekomme ich soetwas her? Am schönsten wäre eine wo jeweils ein kleines Beispiel angehängt ist?

Zwei PDF's habe ich mir heute schon aus dem Forum geladen, die sind nur sehr beschränkt in der Befehlsvielfalt...

Übrigens, ich hatte doch schon seit ewigkeiten ein Skype Zugang, jedoch finde ich für die alte cam keine treiber mehr.... Hadset hätte ich - Naja, Du hast ja aber sicher auch wichtigeres zu tun.... :_)

Gruß
 
Hallo,
lies die Messwerte doch Zyklusweise ein und Glätte sie z.B. über 10 Zyklen.
Für so etwas verwende ich immer folgende Variante:

Ergebniss := (((Ergebniss *9) + AktuellerWert)/10);

Ist sehr einfach zu Programmieren und wenn es noch nicht genug Geglättet ist nimmst du halt 15 oder 20 Zyklen.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
und wo werden die zyklen gezählt? mit "Ergebniss *9" liest sich ja für mich eher wie ne normale multiplikation?!?

oder wird damit dem Controller klar gemacht er will 9x ein Ergebnis haben?

das wäre ja nun auch ne geniale Lösung....

Danke!
 
Es wird bei jedem durchlauf der AktuelleWert in das Ergebinss geschrieben und verrechnet. So hast du einen Durchschnitt der letzten 10 Zyklen. Aber es dauert beim Start halt auch diese 10 Zyklen bis du ein richtig verwertbares Ergebniss bekommst.
Hoffe es ist jetzt ein bischen verständlicher.

Gruß
 
für den Start kann mann sich auch behelfen:
solange bis das 1. mal die volle Anzahl Zyklen für die Mittelwertbildung erreicht sind einfach den Aktualwert ausgeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,



schau dir mal ein PT1-Glied an

Das ist genau das was ich gesucht habe! Nach dem ich mich ein bisschen reingelesen habe, kam mir das auch etwas bekannt vor ( Lehrzeit ) aber das war irgend wie soweit im Hintergrund - Quasi verstaubt in der Ecke meines Hirns*ROFL*

Danke!
 
Zurück
Oben