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.

Zapis stanu/PLC - Zapis stanu wyjść z godziną

Automatyk997 21 Lut 2014 11:27 1086 4
  • #1 21 Lut 2014 11:27
    Automatyk997
    Poziom 8  

    Dzień dobry,
    Mam nietypowy problem, system działa na sterowniku PLC (przypuszczam Frisko MR210) Będzie to automatycznie rozkładany namiot w tym celu aby zabezpieczyć go przed rozkładaniem przy zbyt silnym wietrze zastosuje wiatromierz z wejściem 4-20mA. Chciałbym równiez umieścić funkcję wyłączenia wiatromierza z zaznaczeniem tego że użytkownik rozkłada go na własną odpowiedzialność.

    Potrzebuję do tego możliwość zapisu stanu przestawienia wejścia z datą i godzina. Tak aby wiedzieć czy wina uszkodzenia namiotu leży po stronie użytkownika, czy po mojej.

    Jest to możliwe na sterowniku PLC, (stan zapisu flagi z godziną i datą)
    Rejestry daty i godziny istnieją oddzielnie
    R1 - sekundy
    R2 - minuty
    R3 - godziny
    R4 - dzień
    R5 - miesiąc
    R6 - rok


    P.S.
    Używam języka bloków funkcyjnych

    0 4
  • Pomocny post
    #2 21 Lut 2014 20:05
    mrrudzin
    Poziom 39  

    chciałoby się napisać - i... ?

    Kiedyś robiłem coś podobnego w sterowniku gdzie nie dało się stworzyć własnego typu danych - musisz znaleźć zmienną która pomieści wszystkie Twoje dane, albo kilka takich zmiennych.

    Tzn. int pomieści 32768 z tego co pamiętam
    Więc da się zapisać 32 godziny, 76 - minuty i 8 - dziesiątki sekund
    Tzn. zmienną z godziny mnożysz przez 1000, minuty przez 10 a sekundy dzielisz bez reszty przez 10.
    Jeśli masz inne zmienne - łączysz rzeczy podobnie. Może da się z części zrezygnować, albo troche skrócić (z roku 2014 interesuje Cie tylko 14 albo i 4).

    0
  • #3 25 Lut 2014 09:31
    Automatyk997
    Poziom 8  

    Bardziej mi chodzi o to, jak mógłbym je odczytać, np.: ostatnie 5 wyłączeń z datą? A nie o sam mechanizm zegara.

    0
  • #4 25 Lut 2014 10:15
    mrrudzin
    Poziom 39  

    No to prosto. W sterowniku tworzysz zmienną pamiętaną po wyłączeniu zasilania - licznik i zmienną pamiętającą czasy Twoich wyłączeń (to o czym pisałem wyżej).

    I albo sie bawisz i przy każdym nowym wpisie przesuwasz stare wpisy o jeden niżej, a najstarszy wpis "zapominasz" (piszesz procedure która przesuwa wpis 99 na pozycje 100, 98 na pozycje 99 ... 0 na pozycje 1 i na koniec na pozycję 0 wpisujesz nową wartość czasu). Ostatnie 5 wyłączeń będzie zapisanych w komórkach 0-4.


    Albo wpisujesz wartość na pozycję określoną przez licznik, dodajesz do licznika 1 itd.
    Przy odczytaniu sprawdzasz wartość licznika i bierzesz bieżący i 4 starsze wpisy. Tu jedyny problem będzie przy przejściu przez "0" (tzn. czytasz wpisy 98,99,0,1,2), ale to też można oprogramować.

    Czy o to chodziło?

    0
  • #5 25 Lut 2014 21:14
    Pittt
    Poziom 31  

    Zrób sobie funkcję która będzie zapisywać dane zgodnie z Twoim schematem jak w tabelce. Oprócz tego co wypisałeś dodaj jeszcze Lp. albo inny wskaźnik. Teraz zajmujesz 6 rejestrów + Lp. to dla prostoty rejestry (dane kolumn) zapisuj co 10 rejestrów. Będzie rezerwa na przyszłość. i tak kolejne zdarzenia będziesz miał:
    R11 - sekundy
    R12 - minuty
    R13 - godziny
    R14 - dzień
    R15 - miesiąc
    R16 - rok


    R21 - sekundy
    R22 - minuty
    R23 - godziny
    R24 - dzień
    R25 - miesiąc
    R26 - rok

    itd...

    0