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

Programowanie PLC Omron - Timer 10ms jako sygnał wejściowy układu logicznego

pablos23 05 Gru 2007 17:18 4908 18
  • #1 4554757
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Witam.

    Mój problem dotyczy programowania PLC firmy Omron. Podejrzewam, że mógłbym mieć ten sam problem, mając do czynienia z kontrolerami innych firm.

    Chciałbym użyć timera, który ustawia na wyjściu "1" po upływie 10ms i jest restertowany z każdym nowym cyklem PLC. Wyjście z tego zegara chciałbym podłączyć do układu logicznego. Na podstawie tego co przeczytałem w Manualu o upływie określonego czasu mówi jedynie flaga ale czy jej wskazanie może być sygnałem wejściowym określonego układu? Czy zna ktoś inny pomysł na rozwiązanie tego problemu?

    Będę bardzo wdzięczny za każdą poradę/opinię.

    pozdrawiam
  • #2 4555719
    wojteks84
    Poziom 2  
    Posty: 3
    Zliczanie czasu w sterowniku TMR 0,01s Omikron, odbywa się w pamięci wewnętrznej i jest ustawianie jako flaga (może być "podglądane" za pomocą podłączonego komputera lub kontrolera PLC).

    Nie bardzo rozumiem co chcesz uzyskać... Czy chcesz zmieniać czas wyzwalania timera, czy wykorzystać wskazanie czasu w pamięci? (Obie rzeczy są niemożliwe...)
  • #3 4556979
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Chciałbym wykorzystać wskazanie czasu w pamięci. Konkretnie chcę użyć dwóch bloków, których sygnały wyjściowe wchodzą do bloku logicznego AND. Pierwszy z bloków porównywałby stałą wartość z wartością w rejestrze " High speed counter" która odpowiada wszystkim zmianom wartości logicznej jednego z dwóch cyfrowych sygnałów na wejściu PLC. Na wyjściu PLC chcę dostać "1" wtedy gdy w ciągu 10 ms uzyskam liczbę zmian jednego z dwóch cyfrowych sygnałów powyżej dopuszczalnej wartości.

    Sterownik ten chcę wykorzystać jako komputer bezpieczeństwa w systemie monitorowania prędkości głównego wału i wału generatora w gondoli wiatraka energotwórczego. Prędkości obrotu każdego wału mierzą enkodery. Każdy z enkoderów posiada 2 cyfrowe sygnały będące zarazem wejściem do PLC. W przypadku detekcji nadmiernej prędkości na wyjściu ustawiam 1 co pozwoli mi skręcić łopaty wiatraka o 90 stopni i zatrzymać jego pracę.
  • Pomocny post
    #4 4560993
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    No to wg. mnie wywazasz otwarte drzwi. Skoro w wiatraku masz enkoder to wystarczy dowiedziec sie co to za rodzaj enkodera i napisac aplikacje. Jezeli zwykly impulsowy enkoder 2-fazowy to musisz znac ilosc impulsow na obrot. Szybkim licznikiem liczysz z niego imulsy a timerem liczysz czas i ustawiasz przerwanie na wartosc zadana timera. W tym przerwaniu obliczasz predkosc czyli ilosc impulsow w stalym czasie. Wynik obliczenia porownujesz ze stalymi ktore sobie zalozysz (max i min speed) i sygnalami z komparatorow regulujesz czy przechyl lopat lub inny system regulacji jego predkosci.

    Proste a nie jakies opcje z liczeniem czasu z timera ,resetowaniu po cyklu itd. Tak na marginesie to cykl dobrego PLC jest o wiele wiele szybszy niz 10ms wiec i tak nic by z tego nie wyszlo ;)
  • #5 4572772
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Przepraszam za długi czas brak odpowiedzi. Chyba nie wierzyłem w podpowiedź i nie zaglądałem tu.

    Napisałem już program wedle powyższej idei. Chcę użyć pojedynczego bloku, który czyta częstotliwość impulsów i wpisuje RPM w określone miejsce pamięci. Wybrałem w tej funkcji:
    - r/min ( możliwe również r/s oraz r/h)gdzie r-liczba obrotów,
    - 10ms jako czas zliczania impulsów (możliwa 1ms lub 1000ms)
    - konwersja f to speed ( możliwa konwersja w całkowitą liczbę pulsów)
    - 1024/obrót ( z działania enkodera)
    - podałem miejsce w pamięci

    Potem tylko deklaracja stałych i komparatory.

    Chcę jednak pokusić się o alternatywny program. Brakuje mi tylko informacji jak wpisać wynik działania komparatora w określone miejsce pamięci. Będę wdzięczny za poradę.

    To dopiero zalążek tego programu.
  • #6 4573300
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Wiec jak juz masz obliczona predkosc(jednostki jakie sobie chcesz) to musisz poprzenosic dane do twoich rejestrow, pamieci. Nigdy nie bawilem sie Omronem ale napewno jest funkcja MOVE. Czy to w drabince czy w STLu. Wiec podajesz tam wartosc lub rejestr wartosci ktora chcesz przeniesc i rejestr do ktorego chcesz przeniesc. Ale jezeli to maja byc wyniki porownania to komparatory maja wyjscia boolowskie czyli 0 lub 1 wiec ustawial bedziesz na wyjsciu koparatora flagi lub markery (zalezy od PLC jak sie nazywa) no i potem zostaje ci sama logika ;)
  • #7 4575376
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Faktycznie jest taka funkcja jak MOVE i użyłem jej do wpisania stałej wartości w określone miejsce pamięci. Potem zrobię porównanie ze zmierzonym RPM . Jest jednak jeszcze jeden problem. Nie chcę zatrzymywać wiatraka jeśli wykryję nadmierną prędkość w czasie jednego cyklu PLC (jeden cykl ustawię w granicach 10ms, sterownik Omron nie jest zbyt szybki). Dlatego chcę znaleźć funkcję, która zapamięta wartość RPM z jednego cyklu, wykonana uśrednienie z wartością RPM z następnego cyklu i w zależności od wyniku tej operacji ustawi 0 lub 1 na wyjściu. Byłbym bardzo wdzięczny za pomoc w poszukiwaniu funkcji umożliwiającej realizację tego pomysłu.To jedna z idei, pewnie mogę to zrealizować w zupełnie inny sposób. W każdym razie, alarm musi być ustawiony na podstawie 2 wartości zmierzonych w ciągu 20 ms.
  • Pomocny post
    #8 4575503
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Tak jak pisalem. Nie znam sie na omronach ale takze nie spotkalem sie ze sterownikiem w ktorym mozna ustawic dlugosc cyklu. Kazda funkcja jest wykonywana w innym czasie przez sterownik, jedna dluzej, druga krócej.

    Co do twojego problemu. Zrob w ten sposob. Ustaw pierwsze przerwanie, zmierz predkosc, przelicz, wpisz do rejestru nr.1 i ustaw jakiegos markera(flage) ktory bedzie ustawiony tylko w przypadku wykonania pierwszego przerwania.

    Wychodzisz z przerwania, znowu liczysz 10ms i wywolujesz drugie przerwanie, inne. Tym markerem z pierwszego nie pozwalasz wywolac znowu pierwszego ale zezwalasz wywolac drugie. Znowu liczysz itd, wpisujesz do rejestru nr.2, resetujesz markera z pierwszego przerwania i ustawiasz markera z drugiego, ktory pozwoli ci powtorzyc procedure od poczatku. W tym samym przerwaniu sumujesz 2 wartosci i nastepnie dzielisz przez 2. Reszte juz znasz. Z mojego doswiadczenia wiem ze probkowanie 2 tylko wartosci to malo daje. Lepiej pobrac wiecej probek. Tych 10 ms nie zauwazysz a nie sadze zeby np. 6 czy 7 probek czyli kolo sek zrobilo tak duza roznice i pozwolilo sie rozwalic wiatrakowi.

    Pozatym nie musisz go zatrzymywac. Mozesz uzyc wyjsc analogowych i regulowac predkosc wiatraka skladajac lub rozlkladajac lopaty. Chyba ze wiatrak ma tylko opcje zamkniete i otwarte.
  • #9 4576574
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Rozwiązanie problemu z uśrednieniem wartości zmierzonych w ciągu dwóch kolejnych 10 ms przedstawiam w załączonym pliku Word. Przepraszam za nomenklaturę,ale to mój pierwszy program dla PLC.

    Ostatnim problemem będzie zliczanie kolejnych cykli PLC i zmiana wartości sygnału wyjściowego np. co kolejne 6 z nich. Będę nad tym intensywnie pracował w następnych dniach.

    Ten sterownik będzie wykorzystany w dodatkowym systemie monitorowania prędkości i jego zadaniem będzie obrócenie łopat o 90 stopni w przypadku alarmu. Do regulacji położenia łopat służy główny komputer, do którego przesyłane będą dane z tych samych enkoderów co w przypadku PLC. Tak zorganizowanego sytemu wymaga prawo na północy Europy. Nie wiem jak jest obecnie w Polsce.

    pozdrawiam

    ps.chciałem załadować System Manual,ale się nie zmieściłem w normie:)
    Załączniki:
    • pomoc.doc (31.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #10 4579549
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Moje wczorajsze rozważania były błędne.

    Szukam odpowiedniej flagi.
  • #11 4581460
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Nie wiem cos sie uparl na te cykle. Nie wyobrazam sobie tego programu poprostu.

    Dalem ci przyklad. Jezeli ten sterownik nie bedzie wykonywal nic poza kontrola predkosci to nie trzeba robic tego w przeraniu ale w programie glownym tez sie da.

    Program jest prosty do napisania. Potrzebna jest znajomosc podstawowych funkcji i funkcji wywolujacych przerwania. Wsio.
  • #12 4582395
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Sterownik ma za zadanie przetwarzać jeszcze sygnał z pewnego czujnika, 0 w przypadku prawidłowej operacji, 1 to nadmierne wibracje. Będzie wykonywał też szereg innych funkcji.
  • #13 4586614
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Będę bardzo wdzięczny za pomoc w następujących problemie,niezależnym od powyższego:

    1. Jako argument instrukcji logicznej chcę ustawić wejściowy bit czyli muszę wpisać np.0.00. Blok logiczny pozwala jednak na operacje na słowach jak D0, H0 w zależności od typu pamięci. Jak sobie z tym radzić?


    Wykrzystałbym powyższy pomysł z flagą wykonania zadania,ale nie mogę znaleźć odpowiedniej dla danej funkcji.

    pozdrawiam
  • #14 4587082
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Nie musisz szukac zadnej odpowiedniej. Setujesz poprostu jakas. Przeciez rejestrow jednobitowych (flag) masz pelno w sterowniku.
  • #15 4594972
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Mam nadzieję, że znalazłem rozwiązanie.
    Chcę użyć słowa zawierającego wartość zwiększaną o 1 co każde 10 ms bez względu na czas cyklu PLC. Wybrałem funkcję dzielenia tej wartości przez dwa i chcę wykorzystać słowo zawierające ewentualną resztę z dzielenia. Ponieważ będę dzielił przez 2, reszta będzie 1 lub 0. Korzystając z bloku porównania arytmetycznego będę decydował którą funkcję wykonać. Identyczne funckcje będą wykonywane na zmianę. Potem zostaje już tylko matematyka.

    Mógłbym już jutro przetestować napisany program, ale na przeszkodzie stoi błąd w oprogramowaniu ( mam nadzieję, że to ja jednak czegoś nie rozumiem) dla funkcji przeliczającej f pulsów wejściowych na wartość RPM. Czekam na odpowiedź z pomocy technicznej firmy Omron.

    Program na pewno będzie napisany do końca stycznia.

    pozdrawiam
  • #16 4599819
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Opisywana wcześniej funkcja mierząca RPM z następującymi parametrami:
    -liczba pulsów enkodera na obrót wałka
    -czas zliczania pulsów
    - r/min lub r/s lub r/h

    może być wykorzystana tylko dla jednego enkodera.

    Zastanawiam się obecnie jak z wykorzystaniem liczników i zegarów zmierzyć RPM głównego wału wiatraka.
  • #17 4600913
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Czy wie ktoś jakie jest źródło błędu takiego jak: Overlapping Rungs?
  • Pomocny post
    #18 4680533
    eromus
    Poziom 11  
    Posty: 47
    Pomógł: 1
    Ocena: 1
    Błąd ten występuje gdy chcesz umieścić dwie niezależne linie kodu w jednej sieci (rungs). Przenieś jedną linię do nowej sieci.
  • #19 4712921
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Dzięki.

Podsumowanie tematu

✨ Dyskusja dotyczy programowania sterownika PLC firmy Omron w kontekście wykorzystania timera o czasie 10 ms jako sygnału wejściowego do układu logicznego. Autor pragnie zastosować timer, który po upływie 10 ms ustawia wyjście na "1" i jest resetowany co cykl PLC, aby na jego podstawie sterować logiką AND. W praktyce problem rozwiązywany jest poprzez pomiar liczby impulsów z enkoderów dwufazowych, które monitorują prędkość obrotową wału głównego i generatora w turbinie wiatrowej. Proponowane podejście polega na wykorzystaniu licznika wysokiej prędkości do zliczania impulsów oraz timera do pomiaru czasu, a następnie obliczeniu prędkości obrotowej (RPM) w określonym przedziale czasowym (np. 10 ms). W celu stabilizacji pomiarów i uniknięcia reakcji na pojedynczy cykl PLC, sugerowane jest uśrednianie wartości RPM z dwóch kolejnych cykli. Dyskutowano także o implementacji funkcji MOVE do przenoszenia wartości do rejestrów pamięci oraz o wykorzystaniu flag (markerów) do sterowania logiką programu i synchronizacji pomiarów. Poruszono problem braku możliwości ustawienia długości cyklu PLC oraz konieczność stosowania przerwań do realizacji pomiarów w stałych odstępach czasu. Wskazano, że program można realizować zarówno w przerwaniach, jak i w programie głównym, w zależności od wymagań. Autor poszukuje także rozwiązania problemu zapisu wyniku działania komparatora do pamięci oraz sposobu operowania na bitach wejściowych w blokach logicznych. W dyskusji pojawił się także problem błędu "Overlapping Rungs" w oprogramowaniu, który wynika z umieszczenia dwóch niezależnych linii kodu w jednej sieci drabinkowej. Całość dotyczy zastosowania sterownika Omron do monitorowania prędkości i bezpieczeństwa pracy turbiny wiatrowej poprzez kontrolę sygnałów z enkoderów i odpowiednią reakcję na przekroczenie dopuszczalnych wartości prędkości.
Wygenerowane przez model językowy.
REKLAMA