logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

step 7 - zliczanie impulsów z wodomierza w czasie

ferdimakury 03 Mar 2015 16:53 3162 13
REKLAMA
  • #1 14496609
    ferdimakury
    Poziom 2  
    Posty: 4
    Witam

    Do wejścia I10.0 mam podpięty kontaktron z wodomierza, który nadaje 100 imp/m^3. Napisałem sobie funkcje FB która mi zlicza zużytą wodę, korzystając z licznika SFB0 i to działa OK.

    Chciałbym mieć jeszcze drugie FB, które na wyjściu by mi dawało ile m^3 przeleciało w ostatnich 10 min, takie chwilowe zużycie. Nie za bardzo wiem jak się do tego zabrać.

    Pobór wody w moim systemie, to jakieś 2m^3 na godzinę.
  • REKLAMA
  • #2 14496678
    lesławek
    Poziom 32  
    Posty: 1529
    Pomógł: 190
    Ocena: 294
    Normalnie bierzesz licznik kasujesz go i zliczasz impulsy przez 10min (czas obliczasz timerem) potem dzielisz tą wartość przez 100 przepisujesz do jakiegoś rejestru, a sam licznik kasujesz. W rejestrze masz pomiar aktualizowany co 10 min.
  • #3 14496892
    ferdimakury
    Poziom 2  
    Posty: 4
    Tak to wiem że można zrobić. Ale chciałbym jakiś rejestr kołowy??, żebym na bieżąco, np 5s wiedział jakie jest zużycie wody za ostatnie okres.

    Chciałbym z tego licznika zrobić przepływomierz. Mam nadzieję, że nie zagmatwałem.
  • REKLAMA
  • #4 14497104
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    ferdimakury napisał:
    Ale chciałbym [...]na bieżąco, np 5s wiedział jakie jest zużycie wody za ostatnie okres.


    Czyli potrzebujesz 120 niezależnych liczników zerowanych co 5 sekund, zliczających przez 5*120 = 600 sekund = 10 minut.
  • #5 14497116
    lesławek
    Poziom 32  
    Posty: 1529
    Pomógł: 190
    Ocena: 294
    Albo po prostu pomnożenia wartości zapamiętanej w ciągu 5s przez 120, w ciągu 10s przez 60 itd aż w końcu po 10minutach zamiast estymacji masz rzeczywistą wartość....
  • #6 14497123
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    A jaka wartość będzie po 10 min 5 sek?
  • REKLAMA
  • #7 14497133
    lesławek
    Poziom 32  
    Posty: 1529
    Pomógł: 190
    Ocena: 294
    No zliczona przez 5s w kolejnym cyklu i znowu mnożona przez 120 tyle że to jest niedokładne...
  • REKLAMA
  • #8 14497150
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    Tylko to nie jest pomiar średniego przepływu za ostatnie 10 minut...

    @ferdimakury: może wystarczy odświeżanie pomiarów co 30 sekund lub 1 minutę? Wtedy miałbyś 20 lub 10 liczników. Kwadrans kopiowania i wklejania :)
  • #9 14497213
    apajak1988
    Poziom 19  
    Posty: 412
    Pomógł: 29
    Ocena: 41
    Popełniłem kiedyś taki algorytm.
    Licznik zliczał impulsy z przepływomierza w czasie t. Na bieżąco wszystkie impulsy były przeliczane na wydajność i uśredniane w buforze. Wynik uśredniony był wyrzucony na wyświetlacz.
  • #10 14497689
    Markos80

    Specjalista Automatyk
    Posty: 1857
    Pomógł: 474
    Ocena: 213
    Może zrób tablicę na 120 wartości (pomiary co 5s przez 10 minut) i wrzucaj tam stany licznika na zasadzie bufora kołowego, np. z indeksem n.
    Jedną pętlą obliczysz średnią ze zmian licznika, biorąc dla każdego elementu, jako początkową, "starą" wartość z indeksu n+1.
    Zamiast bufora kołowego możesz wykorzystać kolejkę FIFO. Element, który będzie "wypadał" z kolejki, będzie Twoją "starą" wartością odniesienia.
    Przykładowa implementacja FIFO.
    Konto firmowe:
    PUMPA
    Widok 7, Łuczyce, 32-010 | Tel.: 502XXXXXX (Pokaż) | Strona WWW: www.pumpa.pl
  • #11 14498476
    Szacho
    Poziom 15  
    Posty: 76
    Pomógł: 8
    Ocena: 5
    Dla pomiarów aktualizowanych co 5 sekund w czasie ostatnich 10min. Tablica na 120 wartości co 5 sekund, usuwasz ostatnią wartość w tablicy, przesuwasz elementy tablicy o 1, w wolne pierwsze miejsce wpisujesz nową wartość zliczoną w ciągu 5 sekund, obliczasz sumę z całej tablicy.
  • #12 14498659
    Los_sandalos
    Poziom 27  
    Posty: 1200
    Pomógł: 90
    Ocena: 197
    a jakby mierzyć czas między impulsami i z tego pokazywać przepływ?
  • #13 14498748
    ferdimakury
    Poziom 2  
    Posty: 4
    @mar-kos, @ Szacho - właśnie o to mi mniej więcej chodzi. Chce mieć średnią z przepływu za okres 10 minut, a aktualizowaną co 5s. Wiem że muszę zliczać impulsy w okresie 5s i wpisywać do jakieś tablicy 120'to elementowej, czyniąc to w koło.

    Kwestia jak to napisać, bo za mocny w adresowaniu pośrednim i takich algorytmach jeszcze nie jestem. O ile pierwsza część (zliczanie w okresie 5s) jest dla mnie prosta, to FIFO rozumiem, ale jeszcze nie ogarniam implementacji.

    @Los_sandalos - myślałem o takim rozwiązaniu, ale wtedy jakby woda przestała płynąć, to byśmy mieli na wyjściu ostatni chwilowy przepływ, czekając na impuls z wodomierza.
  • #14 14507776
    andy1955
    Specjalista Automatyk
    Posty: 700
    Pomógł: 136
    Ocena: 50
    Poszukaj na forum "adresowanie pośrednie".
    Chociażby to Link

Podsumowanie tematu

✨ Użytkownik podłączył kontaktron z wodomierza do wejścia I10.0, który generuje 100 impulsów na m^3. Stworzył funkcję FB do zliczania zużycia wody, ale chce dodatkowo uzyskać chwilowe zużycie wody w ostatnich 10 minutach, aktualizowane co 5 sekund. W odpowiedziach zaproponowano różne metody, w tym użycie bufora kołowego lub tablicy do przechowywania wartości zliczonych impulsów, co pozwoli na obliczenie średniego przepływu. Sugerowano również pomiar czasu między impulsami jako alternatywne podejście. Użytkownik poszukuje pomocy w implementacji algorytmu.
Wygenerowane przez model językowy.
REKLAMA