Digitale Impulse eines Durchflussmessers in Volumenstrom umrechnen

Zuviel Werbung?
-> Hier kostenlos registrieren
So, ich habe den Hersteller angerufen und das geklärt:

- Die Länge eines Impulses ist mindestend 0,25s
- Für die ermittlung des Volumenstromes ist die Anzahl der Impulse pro Zeit maßgebend. D.H. es variert der zeitliche abstand zwischen den Impulsen und nicht die Impulsdauer an sich.

Wo liegt denn dann dein Problem?

Pulse pro Sekunde zählen?

Qualität der errechneten Werte nicht besonders zufrieden, da diese sehr gesprungen sind.

Bilde dir einen Mittelwert nach z.B. 10 Sekunden
 
Ja, sicher... So mach ich das ja schon.

Hatte eben die hoffnung, dass es eine etwas ausgereiftere Funktion gibt, die z.B. die Zeit zwischen den Impulsen misst und daraus einen Durchflusswert ermittelt. Damit könnten mehr Werte pro Zeit (nach jedem neuen Impuls) errechnet werden was das Ganze fließender machen würde
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, sicher... So mach ich das ja schon.

Hatte eben die hoffnung, dass es eine etwas ausgereiftere Funktion gibt, die z.B. die Zeit zwischen den Impulsen misst und daraus einen Durchflusswert ermittelt. Damit könnten mehr Werte pro Zeit (nach jedem neuen Impuls) errechnet werden was das Ganze fließender machen würde

Naja, dann müßte der Durchfluß doch immer die gleiche Menge haben.
 
Wieso?

Wenn ein Impuls 0,01m³ bedeuted und der letzte Impuls 10s vor einem aktuellem war, dann habe ich einen Durchfluss von 0,01m³/10s. Wenn der darauf folgende Impuls nach 1s kommt, habe ich einen Durchfluss von 0,01m³/1s usw...

Ich kann also nach jedem Impuls einen aktuellen Wert ausgeben und muss nicht erst für 30s die Impule zählen um einen Wert ausgeben zu können

Edit:
Ok, es würde bei der Methode aber ein Problem geben wenn kein Impuls mehr folgt da kein durchfluss mehr vorhanden ist. Es würde dann der letzte Wert stehen bleiben.
 
Zuletzt bearbeitet:
Atlas schrieb:
- Für die ermittlung des Volumenstromes ist die Anzahl der Impulse pro Zeit maßgebend.
Richtig, aber wichtig ist das es die variablen Zeit zwisschen erste und letzte Puls ist, und nicht die festen Aktualisierzeit.

Atlas schrieb:
Ich kann also nach jedem Impuls einen aktuellen Wert ausgeben und muss nicht erst für 30s die Impule zählen um einen Wert ausgeben zu können
Was passiert denn wenn das Wasser abgeschaltet wird ? Behaltetst du dann die letzten gemessene Wassermenge, obwohl da kein Wasser fliesst ?
Irgendwie musst du eine Aktualisierzeit wählen das passt an die Ober- und Untergrenzen für das Wasserdurchfluss. Nur dann hast du eine Realistischen Wert in jeden Fall.
Die genauigkeit wird auch grösser wenn du die Zeit zwisschen mehrere Impulse messt. Wenn du für jeder Impuls die Berechnung durchfürst steigt die ungenauigkeit mit die Wassermenge. Das willst du sicherlich nicht.
 
Zuletzt bearbeitet:
Ja, wir sind nach wie vor bei meinem ersten Post... Die inzwischen 3 Seiten waren zwar eine wirklich interessante Diskussion, aber das was ich eigentlich wissen wollte geht hier nicht hervor.

Vermutlich meine Schuld, da ich das vieleicht falsch formuliert habe. Ich versuchs nochmal auf ne andere Art:

Gibt es eine bereits fertigen und erprobten Baustein der die funktion erfüllt? (Z.B. sowas wie http://www.oscat.de/ - Hier hab ich aber leider nichts in der richtung gefunden)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aufruf alle 100ms

Menge addieren und umrechnen....

36000 ist da ein Hilfreicher Faktor als Denkanstoss...

Wir benutzen da einen sehr guten Baustein um Turbinen Impulse zu Volumenströme zu wandeln...
Da schreib ich dir morgen den Programmcode
 
Zuletzt bearbeitet:
Also die ganze Diskussion geht in eine vöölig falsche Richtung.

Was du brauchst ist eine ganznormale Addition.

Lass die Intelligenz im Gerät:

Siemens und E&H sind gute Bespiele...

Setz den Impulsausgang auf Impuls pro m³...

was du nun noch machen musst ist einfachste Addidion.

Merker wann er zählen soll (M20.0) + Positive Flanke (M30.0) und dann addierst nur noch auf. Mit nem Reset stellst alle Werte wieder auf 0

Fertig :ROFLMAO:ROFLMAO:ROFLMAO:

möööp, nicht das was er sucht... du ermittelst lediglich das volumen, er möchte aber den volumenstrom
wiki schrieb:
Unter einem Volumenstrom versteht man das Volumen eines Mediums, das sich innerhalb einer Zeiteinheit durch einen Querschnitt bewegt.

jesper ist da schon auf dem richtigen dampfer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Digitale Impulse eines Durchflussmessers in Volumenstrom umrechnen

Hatte mich erst verlesen, kam wegen dem Durchflussmesser durcheinander. Wenn man nen Padel oder ne Turbine hat ist das zwar ne Durchflussmessung aber die man errechnen muss, aus den Impulsen.

Das sind 3 - 4 Netzwerke in dem du das Berechnen kannst.

Morgen im laufe des Nachmittags poste ich hier mal den Code aus meinem Baustein


 
Danke für deine Unterstützung. Ich habe ja bereits einen Baustein der das macht. Original ist der in AWL geschrieben aber fürs Forum hab ich den FB als AWL Quelle exportiert:

Code:
FUNCTION_BLOCK "Imp_To_Flow"
TITLE =Imp_To_Flow
//Für die Funktion dieses Bausteines wird der SFB3 "TP" benötigt!
//
//Der Baustein zählt digitale Impulse (Count-Impulses) in einem einstellbaren 
//Zeitfenster (Time-Impuls). Die gezählten Impulse werden mit einer einstellbaren 
//Einheit (Faktor) multipliziert und nach ablauf des Zeitfensters ausgegeben.
//
//Mit der Funktion können z.B. Impulse eines Durchflussmessers in einen 
//Volumenstrom pro Zeit umgerechnet werden.
//
//Beispiel:
//Einheit pro Impuls = 0.01m³
//Bei einer Zeitbasis von PT = 15s ergibt sich folgende Einheit für den CImp 
//welcher bei CImpE angegeben werden kann:
//
//         0.01m³
//CImpE = ------ * 3600 = 2,4 m³/h
//          15s
AUTHOR : Atlas
VERSION : 1.0


VAR_INPUT
  CImp : BOOL ;    //Count Impuls
  CImpE : REAL ;    //Einheit eines Count Impulses. z.B. 0,01m³ = 0.01
  PT : TIME ;    //Zeitbasis in der die CImp ausgewertet werden.
END_VAR
VAR_OUTPUT
  Flow : REAL ;    
END_VAR
VAR
  SFB3_TP : "TP";    
  CImpCounter : REAL ;    
  ImpFP : BOOL ;    
  TImp_Done : BOOL ;    
  TImp_Start : BOOL ;    
END_VAR
BEGIN
NETWORK
TITLE =
// Mit Hilfe des SFB3 einen Time-Impuls mit definierter Zeit erzeugen. 
// Dieser Impuls dient als Zeitbasis für die weitere
// Abarbeitung des Bausteines.
      UN    #SFB3_TP.Q; 
      =     #TImp_Start; 

      CALL #SFB3_TP (
           IN                       := #TImp_Start,
           PT                       := #PT);

// Nächsten Schritt nur abarbeiten wenn T-Impuls true
      UN    #SFB3_TP.Q; 
      SPB   Calc; 

// Hilfsmerker zur Berechnung wieder rücksetzen
      R     #TImp_Done; 

// Pei pos. Flanke des Count-Impulses Zählen 
      U     #CImp; 
      FP    #ImpFP; 

      SPBNB Cnt1; 
      L     #CImpCounter; 
      L     1.000000e+000; 
      +R    ; 
      T     #CImpCounter; 
Cnt1: BE    ; 

// Die gezählten C-Impulse mit der Einheit verrechnen und ausgeben
// Wurde die Berechnung bereits durchgeführt direkt zum Ergebnis springen
Calc: U     #TImp_Done; 
      SPB   End1; 

      L     #CImpE; 
      L     #CImpCounter; 
      *R    ; 
      T     #Flow; 

// C-Impuls Counter zurücksetzen
      L     0.000000e+000; 
      T     #CImpCounter; 

// Über Hilfsmerker speichern, dass Wert berechnet wurde
      S     #TImp_Done; 

End1: BE    ; 
END_FUNCTION_BLOCK
 
Zuletzt bearbeitet:
Es ist eine Ermessensfrage, ob man die Zeit zwischen zwei oder zwischen mehreren Impulsen auswertet. Bei 300 bis 1000 Impulsen pro Stunde liegt die Periode zwischen 3,6 und 12s. Ich denke, man kommt hier mit der Zeit zwischen zwei Impulsen ganz gut hin. Prozessalarm oder gar Zählerkarten braucht man normalerweise nicht. Gewöhnliche Zähler sind so ausgelegt dass die Impulse mit ebenso gewöhnlichen SPS-Eingängen ausgewertet werden können. Durchflüsse von Gasmengenzählern, Güllezählern oder auch die Leistung über einen Stromzähler (S0-Schnittstelle) berechne ich auch über die Zeit zwischen zwei Impulsen. Die Berechnung beginnt ab dem zweiten Impuls. Über eine Impulsüberwachung setze ich die Berechnung zurück. Wenn z.Bsp. nach 15s kein Impuls kommt, wird alles auf Null gesetzt (oder auch über ein Freigabesignal). Mit einer kommenden Flanke wird die Berechnung wieder aktiv. Zur Ermittlung der Zeit zwischen den Impulsen verwende ich die Systemzeit (SFC64). Wenn man dann das Ergebnis oder die ermittelte Zykluszeit dämpft, erhält man quasi einen "Analogwert", d.h. man vermeidet die Sprünge in der Anzeige zwischen den Aktualisierungen. Wie gesagt, alles eine Ermessensfrage.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe gerade gesehen, dass in meinem geposteten SCL code noch ein kleiner Fehler ist. Tut zur Veranschaulichung aber nichts zur sache und ich habe keine einfache Copy & Paste Vorlage geliefert :)

War ein langer weg bis hier her, aber ich glaube ich setz einfach nen Filter dahinter wie von Dagobert vorgeschlagen und gut ist!
 
Ja, das mit dem SCL war wohl etwas stark vereinfacht geschrieben :)

Habe den Baustein als Quelle exportiert und dabei kam dann der (98%ige) AWL Code in der SCL Umgebung dabei raus den ich hier super reinkopieren konnte...
 
Ja, das mit dem SCL war wohl etwas stark vereinfacht geschrieben :)

Habe den Baustein als Quelle exportiert und dabei kam dann der (98%ige) AWL Code in der SCL Umgebung dabei raus den ich hier super reinkopieren konnte...
War das der Quelleneditor fielleicht?
Hat wenig mit scl zu tun, was du da gepostet hast.

bike

P.S. Ich denke es ist nicht so ganz gut einen fehlerhaften Code hier stehen zu lassen.
Hast du Angst dass der kopiert wird, oder warum korrigierst du den von dir selbst geschrieben Fehler nicht?
 
Zurück
Oben