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

programowanie PLC - zmiana stanu sygnału z każdym OFF-ON

pablos23 19 Gru 2007 14:00 2404 6
  • #1 4603788
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Witam.

    Mam dostępny blok generujący sygnał 10 Hz, zaś potrzebuję sygnału 5Hz. Czy zna ktoś blok umożliwiający zmianę stanu danego sygnału z każdym przejściem OFF to On. Będę bardzo wdzięczny za poradę.
    Mój problem dotyczy Omron PLC ale funkcje dostępne dla innych sterowników są na pewno takie same.


    pozdrawiam
  • #2 4607750
    monsinior
    Poziom 17  
    Posty: 162
    Pomógł: 18
    Ocena: 7
    Cytat:
    Mój problem dotyczy Omron PLC ale funkcje dostępne dla innych sterowników są na pewno takie same.

    Nie sądzę w SIEMENS jest coś takiego jak jak clock memory w cpu i tam masz zakres częstotliwości i merkery Mxxx.0 - Mxxx.7 odzwierciedlają różne częstotliwości (info w helpie) poszukaj czy omron nie ma czegoś podobnego w ustawieniach CPU.

    W omron masz coś takiego jak "second clock pulse" w SR254 i SR255.
    W SR255 bit 01 jest clock pulse 0.2s więc masz 5Hz.

    Pozdrawiam M.M.
  • Pomocny post
    #3 4610128
    mrrudzin
    Poziom 39  
    Posty: 5940
    Pomógł: 516
    Ocena: 580
    Ale co chcesz osiągnąć?
    Blok wykrywający przejście z 0 na 1 nazywa się detekcją narastającego zbocza. Jeśli nie ma w sterowniku - można sobie samemu napisać.
    Jeśli mając sygnał 10Hz chcesz otrzymać 5Hz (bo tyle wyczytałem z posta) możnaby dać licznik do 2. Liczniki przeważnie mają wejście wyzwalane narastającym zvoczem. Gdy licznik liczy od 0, podanie impulsu powoduje pojawienie się "1" w akumulatorze, następny daje "2". W tym momencie musisz napisać warunek - jeśli w akumulatorze jest 2, wyzeruj licznik i wystaw "1" na wyjście pomocnicze. Licznik będzie liczył 0,1,2->0,1,2->0 itd. W efekcie częstotliwość podzieli Ci się na 2.
  • #4 4671410
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    Chcę zbudować układ złożony z dwóch sterowników. Pierwszy z nich ma symulować sygnały z enkodera, drugi zaś liczyć RPM na podstawie częstotliwości sygnału z pierwszego sterownika. Istnieją gotowe funkcje umożliwiające wytworzenie sygnału o wysokiej częstotliwości jednak wydaje mi się, że mam błąd w oprogramowaniu właśnie dla nich. Szukam zatem jakieś alternatywy. Jednym z pomysłów było wykorzystanie flagi przełączającej się z określoną częstotliwością.
    Przepraszam za długi brak odpowiedzi.

    Dodano po 37 [minuty]:

    Potrzebuję wysokich częstotliwości a największa częstotliwość jaką mogę uzyskać przy użyciu gotowej flagi to 50Hz dlatego cieżko będzie mi użyć metody z licznikiem.
  • #5 4671827
    mrrudzin
    Poziom 39  
    Posty: 5940
    Pomógł: 516
    Ocena: 580
    Ale chwile. Żeby uzyskać wysoką częstotliwość potrzebujesz jakieś szybkie wyjście (tak jak do zliczania impulsów z enkodera potrzebujesz szybkie wejście).
    Enkoder podaje na wyjścia (A i B) dwa sygnały przesunięte w fazie. Na tej podstawie jest możliwe określenie prędkości i kierunku.

    Odnośnie pierwszego pytania (z pierwszego postu) - próbowałeś z detekcją zbocza?

    Czy problem z zboczem ma jakiś związek z problemem z enkoderem?

    Cytat:

    jednak wydaje mi się, że mam błąd w oprogramowaniu właśnie dla nich

    Możesz to rozwinąć?
  • #6 4674469
    pablos23
    Poziom 15  
    Posty: 200
    Ocena: 2
    W tej chwili działają funkcje generujące sygnał wysokiej częstotliwości, więc nie rozważam już innych metod. Rozważałem funckje detekcji zbocza, ale nie wyobrażam sobie ich wykorzystania do podzielenia częstotliwości na pół.

    W tym projekcię chcę być na 200% pewny, że kiedy nadmierna prędkość wałów utrzyma się przez pewien czas mój program zadziała prawidłowo. W tym celu piszę programy imitujące różne przyspieszenia, powtarzające się przechodzenie wartości RPM ponad i pod limit. Nie mam problemów z enkoderem.

    Hmm,myślisz,że użycie timera i jego flagi ukończenia jest dobrym sposobem na opóźnienie jednego z sygnałów z enkodera?

    Dodano po 4 [godziny] 59 [minuty]:

    Myślę, że pomysł z użyciem timera i jego flagi ukończenia nie wypali. Potrzebuję krótszego przesunięcie niż 1ms a tyle jest w stanie dać mi najszybszy zegar.
  • #7 4732893
    mrrudzin
    Poziom 39  
    Posty: 5940
    Pomógł: 516
    Ocena: 580
    Pokolei:
    Aby podzielić częstotliwość na pół najprostsze rozwiązanie to licznik do 2.
    Na wejście dajesz sygnał generowany przez siebie, a przeważnie licznik ma detekcje narastającego zbocza. Sygnał na wejściu licznika wygląda tak (A):

    liczy do 2. Po zliczeniu wystawia bit na nogę Done (B). Jednocześnie trzeba go zresetować (czyli z 2 robi się 0 (C))
    A010101010101010
    B011221122112211
    C011001100110011

    No i na wyjściu masz sygnał podzielony na pół.

    Hmm...
    Przesunięcie krótsze niż 1ms?
    A sprawdź ile czasu zajmuje Ci jeden skan programu :)
    Jedyne rozwiązanie jakie mogłoby w tym przypadku wypalić to wewnętrzne przerwanie.

Podsumowanie tematu

✨ Dyskusja dotyczy problemu generowania sygnału o częstotliwości 5 Hz na bazie sygnału 10 Hz w sterowniku PLC Omron. Proponowane rozwiązania obejmują wykorzystanie detekcji narastającego zbocza (edge detection) do wykrywania przejść sygnału z OFF na ON oraz zastosowanie licznika do podziału częstotliwości przez 2. W Omronie wskazano na rejestry SR254 i SR255, gdzie bit 01 w SR255 generuje impuls o okresie 0,2 s (5 Hz). Dyskutowano również o ograniczeniach czasowych związanych z opóźnieniami i czasem skanowania programu, co utrudnia uzyskanie przesunięć sygnału krótszych niż 1 ms. W kontekście symulacji sygnałów enkodera i pomiaru RPM poruszono kwestie generowania wysokich częstotliwości oraz wykorzystania timerów i flag ich zakończenia, które mogą nie spełniać wymagań czasowych. Najprostsze i rekomendowane rozwiązanie to użycie licznika z detekcją narastającego zbocza do podziału częstotliwości sygnału wejściowego na pół.
Wygenerowane przez model językowy.
REKLAMA