# Durchflussmessung



## müni (26 August 2010)

Hallo,
ich möchte mit einer SAE FW5 die mit der Programmiersprache Codesys programmiert wird einen Funktionsbaustein erstellen mit dem ich digitale Impulse (0-60Hz) eines Wasserzählers erfasse und in Liter pro Sekunde umrechnen kann erstellen.
*Der FB hat die Eingänge:*
*Zählerimpulse:* Digitaler Eingang an dem der Wasserzähler angeschlossen ist *(BOOL)*
*Wertigkeit_der_Impulse:* zb. 1Impuls=1L , 1Impuls=10L, 1Impuls=100L *(WORD)*
*Systemzeit_ms:* Eventuell die Millisekunden von der Systemzeit der SPS *(DWORD)*
*Daemfung:* in welchem Abstand der Messwert L/s, L/min, L/h aktualisiert wird zb.10 Sekunden, 30 Sekunden usw. *(WORD)*
*und die Ausgänge:*
*Liter_Sekunde:* Der errechnete Durchfluss in Liter pro Sekunde *(REAL)*
*Liter_Minute:* Der errechnete Durchfluss in Liter pro Minute *(REAL)*
*Liter_Stunde:* Der errechnete Durchfluss in Liter pro Stunde *(REAL)*
*m3:* Der errechnete Durchfluss in m³ *(REAL)*
besitzen.
(Bei gleichbleibenden Durchfluss sollte der Messwert L/s , L/min, L/h nicht zu stark schwanken)
Ich habe mich schon seit längerem mit der Erstellung des FB beschäftigt habe aber leider keine Lösung gefunden.
PS:
Ich bin kein Profi in der SPS Programmierung
Vielleicht hätte jemand solch einen FB Baustein für mich.


----------



## Paule (26 August 2010)

Verstehe ich das richtig?
Du hast einen Baustein erstellt mit Ein- und Ausgangsparametern, aber der Code von dem Baustein fehlt dir noch?
Wenigstens hast du die Aufgabe klar gestellt. 

Ich sehe gerade, du bist schon seit über einem Jahr dabei, und das ist dein erster Beitrag.
Und du suchst dann eine fertige Lösung für dein Problem, interessant.


----------



## IBFS (26 August 2010)

müni schrieb:


> Vielleicht hätte jemand solch einen FB Baustein für mich.


 
"Solch" einen Baustein kann man garnicht fertig geben, denn das wäre schon ein sehr großen Zufall, wenn er genau auf deine EAs passen würde.




müni schrieb:


> Ich bin kein Profi in der SPS Programmierung


 
Das hat mehr was mit Allgebra zu tun. Wenn du alle wichtigen Codefragmente vorzugsweise in ST hier reinstellst 
und dann noch Fehler da sind, dann wird bestimmt der Eine oder Andere was dazu sagen.

Das haben wir bisher, wie du bestimmt schon gesehen hast , immer so gehalten. 


Aber bitte nicht nach dem Motto - ich bin unwissend helft mir.    Das ist zu billig. 

Gruß

Frank


----------



## müni (26 August 2010)

Vielleicht hättest du für mich einen Tipp wie ich das Problem mit der Durchflussmessung lösen könnte.
Gruß MÜNI
--------------------------------------------------------
Behandle jeden so, wie du selbst behandelt werden möchtest.


----------



## müni (27 August 2010)

IBFS schrieb:


> "Solch" einen Baustein kann man garnicht fertig geben, denn das wäre schon ein sehr großen Zufall, wenn er genau auf deine EAs passen würde.
> 
> 
> 
> ...


 

Hallo Frank,
Vielleicht hätte mir auch schon ein sinnvoller Tipp bei meinem Problem mit der Durchflussmessung weitergeholfen!!!

Gruß Müni
--------------------------
*wenn billig*, *dann richtig*


----------



## Unimog-HeizeR (27 August 2010)

müni schrieb:


> Hallo Frank,
> Vielleicht hätte mir auch schon ein sinnvoller Tipp bei meinem Problem mit der Durchflussmessung weitergeholfen!!!
> 
> Das waren doch schon alles sinnvolle Tipps!
> ...


----------



## müni (27 August 2010)

Unimog-HeizeR schrieb:


> müni schrieb:
> 
> 
> > Hallo Frank,
> ...


----------



## PN/DP (28 August 2010)

müni schrieb:


> Ich habe mich schon seit längerem mit der Erstellung des FB beschäftigt habe aber leider keine Lösung gefunden.
> PS:
> Ich bin kein Profi in der SPS Programmierung



Bei Deiner längeren Beschäftigung muß doch mehr bei rausgekommen sein, als nur die Aufstellung der gewünschten 
Eingangs- und Ausgangs-Parameter. Oder sind die Parameter die Vorgabe einer anderen Person?
Du müßtest Dir doch schon ein paar Gedanken über den Lösungsweg gemacht haben, ist doch nur ein bischen Mathematik.
Hast Du keine Vorstellung, welche Formeln Du benutzen mußt? (wie man rechnen muß sieht man doch schon an der Einheit)
Oder hängt es daran, daß Du überhaupt keine Ahnung von Codesys-ST hast?
Was hast Du schon auf Deinem Papier außer den E/A-Parametern?



müni schrieb:


> Hallo Timo,
> da du mir bei der Lösung von der beschriebenen Aufgabestellung auch nicht weiterhelfen *kannst* glaube ich dass du wie manch andere in diesem Forum auch nur ein Sprücheklopfer bist oder selber keine Ahnung  von Programmierung hast!  J


Glaube mir, Timo KANN Dir weiterhelfen und er hat garantiert mehr Ahnung vom Programmieren als Du.
Doch Du hast noch nicht einmal erwähnt, wo es bei Dir klemmt und was Du genau wissen willst. 
Nur zweimal nach einer fertigen Lösung gefragt.
Nun gib mal was substantielles von Dir!

Damit ich nun von Dir nicht auch als nicht-helfen-wollender oder -könnender abgestempelt werde, gebe ich Dir mal einen 
(sinnvollen?) Tip zu Deinem nicht näher spezifizierten "Problem mit der Durchflussmessung":

Was Du ausrechnen mußt ist klar, nämlich das, was als Ausgang an Deinem FB steht.
Woraus Du das berechnen mußt ist auch klar, das sind die Parameter am Eingang des FB.

Nehmen wir mal den ersten Ausgangswert
*Liter_Sekunde:* Der errechnete Durchfluss in Liter pro Sekunde *(REAL)*
Du zählst genau eine Sekunde lang die Zählerimpulse, multiplizierst die Anzahl mit der Wertigkeit Liter/Impuls und bekommst 
ein Ergebnis in Liter in dieser einen Sekunde, also Liter pro Sekunde! 
Um die eine Sekunde abzumessen kannst Du die Systemzeit_ms oder einen Timer benutzen (wenn Dir das erlaubt ist).
Wenn die Sekunde rum ist gibst Du das Ergebnis aus und beginnst eine neue Impulszählung.
Für die Zählerei brauchst Du noch Merk-Variablen in dem FB.
Die Liter pro Minute und Liter pro Stunde kannst Du aus den Liter pro Sekunde hochrechnen oder in einer Minute oder Stunde
zählen, je nachdem, wie schnell und genau Du die Ergebnisse brauchst.

Über die Dämpfung können wir später reden, wenn wir gesehen haben, wie gut Dein mathematisches Verständnis und Deine 
Programmierfähigkeiten sind. Und vielleicht darüber, wie der FB noch schneller die Werte errechnen kann.

Was der letzte Ausgang *m3:* Der errechnete Durchfluss in m³ *(REAL)* sein soll, müsstest Du mal genauer erklären.
Die Beschreibung ist nicht eindeutig.

PS:
"Ich bin kein Profi in der Programmierung" sagt die Klofrau in meiner Fabrik auch dauernd - und sie hat recht. 

Gruß
Harald
---------------------------------------------------------------------------------------------
Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.


----------



## Pietpinguin (28 August 2010)

PN/DP schrieb:


> Was der letzte Ausgang *m3:* Der errechnete Durchfluss in m³ *(REAL)* sein soll, müsstest Du mal genauer erklären.



Der Ausgang m³ soll wahrscheinlich der Zählwert sein. (Summenzähler)

Alles andere ist doch wirklich leicht zu lösen....


----------



## Sera (29 August 2010)

ich denke es wird noch nen Ausgangsbit fehlen, das anzeigt das ein neuer gültiger Wert anliegt, dass dann ein Zyklus lang gesetzt bleibt. Nenn es mal Valid
Summenzähler wäre dann auch einfach: einfach mit jedem puls an valid den aktuellen messwert zu einer summe hinzuaddieren.
Weiß ja nicht ob de es brauchst , dafür würde ich auch noch nen reset reinnehmen, um den summe auf 0 setzen zu können.

dann zum zählen:

würde Flanken zählen, diese über einen definierten zeitraum, mittels ebereits erwähnten Timer.
dann musst deinen Messwertanzahl mal der L/puls nehmen. 
Nun hast also Liter/Messzeitraum

Damit kannst nu unterschiedlich weitermachen

1. Ausgangswerte werden nach jedem Messzeitraum ausgegeben

Das erreichst du in dem du den Wert von Liter/Messzeitraum jewils mit einem unterschiedlichen Faktor für L/s L/min L/h versiehst.
Vorteil hier bekommst schnelle Werte an den Ausgängen, Nachteil, es sind Schätzungen, da diese nur vom momentanen messwert abhängig sind, und Schwankungen der momentanen Messwerte unterworfen sind.

2. Summierung

du summierst Messwerte Zeitraum/Messzeitraum auf  NAchteil, bekommst am Ausgang 1s nur alle sek nen neuen wert, an min alle min usw Vorteil dieser Wert entspicht dann was wirklich geflossen ist in der zeit.

3. Kombination.
Als Beispiel mal, die Zeiträume kannst auch anpassen

Sekundenausgang wird mit jedem Messzyklus aktualisiert
Minutenausgang summierst die Messwerte z.B einer Sekunde auf
Stundenausgang summierst die Messwerte für ne Minute auf

Damit erhälst du am Sekundenausgang immer im Messzyklus neue Werte
am Minutenausgang alle Sekunde und am Stunden ausgang alle Minute neue Werte, damit würden die Schwankungen von momentanen Messwerten nicht so starken Einfluss haben auf die ausgänge
Die Zeiträume über die du Mittelst müsstest eben an deine bedürfnise anpassen.

Gibt sicherlich noch mehr möglichkeiten, es kommt einfach drauf an was du mit dem baustein bezwecken willst, ob es auf genauigkeit oder geschwindigkeit ankommt.

Achte noch drauf das bei 60Hz alle 16,6ms nen neuer Puls kommen kann, und der Eingang das auch messen kann! Wenn du Pulse verlierst ist dein Messwert für die Katz.


----------



## müni (29 August 2010)

PN/DP schrieb:


> Bei Deiner längeren Beschäftigung muß doch mehr bei rausgekommen sein, als nur die Aufstellung der gewünschten
> Eingangs- und Ausgangs-Parameter. Oder sind die Parameter die Vorgabe einer anderen Person?
> Du müßtest Dir doch schon ein paar Gedanken über den Lösungsweg gemacht haben, ist doch nur ein bischen Mathematik.
> Hast Du keine Vorstellung, welche Formeln Du benutzen mußt? (wie man rechnen muß sieht man doch schon an der Einheit)
> ...


 
Hallo Leute,

*ich bedanke mich mal für eure positive Unterstützung.*

Mein erster Versuch war es die Impulse für eine gewisse Zeit zu messen. Im Anschluss habe ich die L/s über eine Schlussrechnung ermittelt. Für Testzwecke habe ich mir mit der SPS konstante Impulse für die Durchflussmessung erzeugt, das Problem an der ganzen Sache war, das die L/S stark schwankten trotz gleichbleibenden Eingangsimpulsen !!!??? (bei zb.30L/S schwankte der Messwert zischen 18 und 54L/S)
Mein zweiter Versuch der mir besser gefallen würde (da ich auch geringe Durchflüsse ermitteln möchte) war, die Zeit zwischen den Steigenden Flanken zu messen und daraus die L/S zu ermitteln. Und wieder hatte ich das Problem mit dem stark schwankendem Ausgangsmesswert L/S !!!??
Der Rest vom FB für die m³ , L/min usw. wäre nicht das Problem! 


Gruß Müni


----------



## bits'bytes (29 August 2010)

wenn man davon ausgeht dass kein rechenfehler hinter den schwankungen steckt ...

#1
ich würde meinen du hast einfach zu wenig impulse pro periode.

z.B. du hast 5 impulse / periode. jetzt fallen diese in deinen Messzyklus so unglücklich rein dass du in der aktuellen periode nur 4 hast, dann hast du in der nächsten periode wahrscheinlich 6. in summe und im mittel hast du wieder 5, allerdings 2 einzelne messergebnisse entsprechend 4 und 6 -> prozentuell ziemlich auseinander. 

dann solltest du überlegen ob z.B irgend ein gleitender Mittelwert hilft... oder ganz was einfaches z.B (4 * alt + neu ) / 5. Wenn das auf anhieb bessere resultate zeigt kannst du das ja verfeinern....

#2
die Impulse dürften nicht so regelmässig kommen wie du das vielleicht glaubst... dann musst du auch die Zeit zwischen mehreren Impulsen messen, nicht von einem zum nächsten...


bg
bb


----------



## Sera (29 August 2010)

bei gleichbleibender pulszahl verschiedene ergebnisse...

also entweder hast was in deinem block falsch gemacht oder die pulse werden von sps nicht alle gezählt

um das rauszubekommen solltest du nur mal pulse zählen und die ausgeben und die vergleichen, weichen die in einem konstanten zeitraum stark ab, und du hast alles richtig geproggt, 
schätze ich dass deine zykluszeit schlicht zu langsam ist, und du deswegen impulse verlierst. entweder du schaust das de ne schneller zykluszeit bekommst oder setzt nen zählermodul ein

Also zwischen dem abfragen kommen puls die du nicht siehst. sagen wir im zyklus  wechselt der eingang 01010101 sps ließt nur ersten 0er und letzten 1er ein, also ein wechsel, die ganzen pulse dazwischen bekommt sie nicht mit.

Kannst mal bei sehr geringer pulszahl sagen wir mal 1-10Hz versuchen, also sehr geringer durchfluss. Wenn es daran liegt sollten die ergebisse dann sehr ähnlich sein

um die kleinen abweichungen wegzubekommen siehe letzten beitrag, ne mittlung sollte helfen, denk aber das nich das prob grad 

bei fehler im baustein, kannst dir selber an dir gurgel gehen^^

edit: ideee von bits kann auch sein dass kannst durch testweise längeren messzeitraum testen also mal 1 min zählen und das 2-3 mal dann siehst ob das dann annähernd gleich ist

edit2:
wenn de nen oszi hast kannst dir auch einfach mal die pulse anschaun ooder das entsprechende datenblatt des sensors mal genau anschaun, da müsste eigentlich sowas drinstehen


----------



## Paule (30 August 2010)

müni schrieb:


> Unimog-HeizeR schrieb:
> 
> 
> > Hallo Timo,
> ...


----------



## Sera (30 August 2010)

*jetzt ist mal wieder gut*

Ich glaube müni hats nu begriffen, dass seine ursprüngliche Fragestellung nicht optimal gestellt war. Ok das zitierte war nicht gerade nett, aber hättet auch etwas, wie soll ich sagen, zurückhaltender?, zuvorkommender?, erwachsener?, reagieren können und nicht gleich draufklopfen.
Denke wäre nu angebracht das  auf sich beruhen zu lassen und nicht wie Kinder in einem Fachforum rumzuzicken. Ich kann verstehen wenn ihr ihm nicht mehr helfen wollte, aber es gibt sicher ne ecke im Forum in der über sowas diskutiert werden kann das muss nicht hier in den thread geschehen.


----------



## müni (30 August 2010)

Paule schrieb:


> müni schrieb:
> 
> 
> > Ich muss das jetzt doch noch mal aufgreifen:
> ...


----------

