Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Blok FC archiwizujący pomiary napięcia

crew1988 22 Lis 2010 16:48 732 1
  • #1 22 Lis 2010 16:48
    crew1988
    Poziom 14  

    Witam,

    Chciałbym aby funkcja np FC 1 archiwizowała zmiany na wejściu analogowym.
    Pomiar powinien być dokonywany co 2 sekundy. Wyniki pomiarów powinny być pamiętane w bloku danych np DB 1. W bloku tym powinno być pamiętanych ostatnich 20 pomiarów. Najnowszy pomiar powinien być zawsze zapisywany na pierwszej pozycji, zaś reszta się przesuwa ( i ostatni tracony).

    Aby zapewnić maksymalną uniwersalność funkcji, nie może ona korzystać z parametrów globalnych ( bezpośrednio odwoływać się do jakichkolwiek adresów). Funkcja ta powinna posiadać następujące parametry:
    - pomiar - wartość zmierzona, parametr wejściowy typu Real
    - nr_DB - numer DB do którego ma zostać zapisany pomiar, parametr wejściowy, typu BLOCK_DB

    Prosze o pomoc w danym zagadnieniu. Z góry serdecznie dziękuje

    0 1
  • #2 23 Lis 2010 08:25
    piotr_krak
    Poziom 24  

    Na piechotę wygląda to tak. Do FC1 wrzucasz dane wejściowe:
    DB_dane - blok danych
    MD_pomiar - wynik ostatniego pomiaru
    dobrze byłoby mieć też
    M_start - bit wywołania funkcji
    M_koniec - koniec zapisu danych

    Jeśli nie umiesz z funkcją to bierzesz przedostatnia wartość z DB_dane i zapisujesz jako ostatnia i tak analogicznie do początku gdzie będziesz miał pierwszy wynik zapisujesz do drugiej danej (w STL za pomocą Load i Transfer)
    Na samym końcu zapisujesz nową daną z MD_pomiar do pierwszego adresu w DB1.

    Z wykorzystaniem pętli możesz stworzyć obiekt uniwersalny, możesz zdeklarować ile chcesz pomiarów zapisywać 20 albo mniej albo więcej bez ingerencji w program. Tylko tam jest więcej tłumaczenia :P.
    Pozdrawiam

    0
  Szukaj w 5mln produktów