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

Pomysł na algorytm w PLC. Nie można zmienić układu.

fantasta 29 Lis 2011 12:11 2589 17
  • #1 10196643
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Witam.

    Jako że wchodząc na dział automatyka widzę same problemy z bramami itd mam małe zadanie na ruszenie szarych komórek. Ciekaw jestem waszego pomysłu jak zrealizować pewny układ sterowania. Ja mam swoja wizję i działa, ale jestem ciekaw czy pomysły innych będą takie same, podobne lub zupełnie inne.


    Układ wygląda tak.
    Koło obraca się ze stała prędkością. Na kole razem z nim obracają się detale. Nie zawsze są w takiej samej odległości. Nieraz są w odległości pół obwodu koła a nieraz jak na rys. na obwodzie znajduje się kilkanaście detali. Czujnik wykrywa detal i sterownik ma za zadanie uruchomić dysze po zadanym czasie aby trafić w detal. Czyli prosty układ, jada detale, czujnik wykrywa detal, sterownik odlicza czas (bo prędkość obrotowa jest stała) i uruchamia dyszę.

    Pomysł na algorytm w PLC. Nie można zmienić układu.

    Problem jednak pojawia się gdy detale jadą gęsto obok siebie i podczas liczenia czasu od wykrycia detalu czujnik wykryje np. kolejne 3 detale. Wtedy są one omijane przez dysze bo sterownik liczył czas od pierwszego.

    Nie można zmienić układu, dodać czujnik itd.
  • #2 10196722
    waloos
    Poziom 11  
    Posty: 41
    Ocena: 1
    "Problem jednak pojawia się gdy detale jadą gęsto obok siebie i podczas liczenia czasu od wykrycia detalu czujnik wykryje np. kolejne 3 detale. Wtedy są one omijane przez dysze bo sterownik liczył czas od pierwszego." ?

    Pierwszego wykrytego detalu? ja bym sprawdził czujnik na mniejszej predkości obrotowej - pewnie ma problem z szybkim liczeniem.
  • #3 10196724
    test-automatyka
    Poziom 16  
    Posty: 175
    Pomógł: 14
    Ocena: 9
    Należy zatem zastosować więcej niż jeden timer:)
  • #4 10196869
    datch
    Poziom 13  
    Posty: 70
    Pomógł: 2
    Ocena: 6
    Witam
    Tak jak kolega powyżej napisał trzeba zastosować kilka timerów jeżeli jeden jest zajęty to użyj następny, albo za każdym razem czujnik włącza kolejny timer a gdy koniec timerów to od początku, a na koniec bramkę z or do dyszy.
    wyjście timera1-|----|
    wyjście timera2-| or |-- wyjście uruchamiające dysze.
    wyjście timera3-|----|

    pozdrawiam
    Daniel
  • #5 10196883
    asher
    Poziom 17  
    Posty: 158
    Pomógł: 22
    Ocena: 9
    test-automatyka napisał:
    Należy zatem zastosować więcej niż jeden timer:)

    Dokładnie tak. Czujnik detalu jako trigger startuje timer T0. Jeżeli T0<>0 to startuje T1 itp. Sygnał elektrozaworu dyszy wydmuchowej kasuje timer.
    Ma to też jedną wadę: musisz zdefiniować maksymalną liczbę timerów. Chociaż jeżeli sterownik jest jakiś sensowny to da radę to obejść z zastosowaniem adresowania pośredniego i jakiejś pętli.
  • #6 10196885
    test-automatyka
    Poziom 16  
    Posty: 175
    Pomógł: 14
    Ocena: 9
    waloos napisał:
    "Problem jednak pojawia się gdy detale jadą gęsto obok siebie i podczas liczenia czasu od wykrycia detalu czujnik wykryje np. kolejne 3 detale. Wtedy są one omijane przez dysze bo sterownik liczył czas od pierwszego." ?

    Pierwszego wykrytego detalu? ja bym sprawdził czujnik na mniejszej predkości obrotowej - pewnie ma problem z szybkim liczeniem.


    Nie o to chodzi:) czujnik liczy poprawnie, chodzi o sam algorytm.
  • #7 10196971
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Kolega waloos nie zrozumiał idei tematu.

    Ja wiem, łatwo powiedzieć, użyć więcej timerów i OR na dyszę.

    Trzeba jednak kilka rzeczy uwzględnić. Co jak żaden nie pracuje, jak zrobić żeby zachowana była kolejność, jak zrobić żeby startował pierwszy, potem drugi, potem trzeci i jak pierwszy skończył żeby nie startował czwartego tylko znowu pierwszy, i do tego konkretne wyzwolenie dyszy musi kasować konkretny timer który ją wyzwolił. Czas dyszy też trzeba jakoś ustalić aby był stały.
  • #8 10197699
    lemos
    Poziom 17  
    Posty: 328
    Pomógł: 24
    Ocena: 37
    Witam,
    kolego łatwiej byłoby gdybyś podał konkretny symbol-typ sterownika.
    Znając maksymalne możliwe zagęszczenie elementów można zdefiniować ilość potrzebnych timerów a co za tym idzie jeżeli jest w użyciu ostatni to gdy pojawi się element startujesz od zera. Odnośnie kasowania timerów, to skoro dany timer odmierzył zadany czas to wyzwala dyszę a tym samym kasuje swój licznik.

    Pozdrawiam
    R.L.
  • #9 10198172
    waloos
    Poziom 11  
    Posty: 41
    Ocena: 1
    Raczej kolega napisał trochę mało czytelnie.

    Jednak rzeczywiście trudno tu pisać jak rozwiązać problem skoro nie znamy wszystkich parametrów.

    Uważam, że tutaj można uzyskać nakierowanie na sposób rozwiązania problemu.

    Dla mnie wyglada to tak:
    czujnik wykrywa pierwszy detal program wie po jakim czasie detal dojedzie do dyszy, żeby ta mogla zadziałać.

    kiedy jednak sa blisko siebie to czujnik idetyfikuje je jako jeden i działa tylko dla pierwszego - czy tak?

    czy masz mozliwość sprawdzenie ze czujnik wystawia poprawie sygnal do ster., że ma jeden po drugim detal?

    czy da sie zrobic tak, że zmiejszyć predkość obrotową tego kola z detalami zeby sprawdzić poprawność tego układu?

    pozdrawiam
  • #10 10198463
    test-automatyka
    Poziom 16  
    Posty: 175
    Pomógł: 14
    Ocena: 9
    waloos napisał:
    Raczej kolega napisał trochę mało czytelnie.

    Jednak rzeczywiście trudno tu pisać jak rozwiązać problem skoro nie znamy wszystkich parametrów.

    Uważam, że tutaj można uzyskać nakierowanie na sposób rozwiązania problemu.

    Dla mnie wyglada to tak:
    czujnik wykrywa pierwszy detal program wie po jakim czasie detal dojedzie do dyszy, żeby ta mogla zadziałać.

    kiedy jednak sa blisko siebie to czujnik idetyfikuje je jako jeden i działa tylko dla pierwszego - czy tak?

    czy masz mozliwość sprawdzenie ze czujnik wystawia poprawie sygnal do ster., że ma jeden po drugim detal?

    czy da sie zrobic tak, że zmiejszyć predkość obrotową tego kola z detalami zeby sprawdzić poprawność tego układu?

    pozdrawiam

    Nie :) czujnik poprawnie wykrywa pojawienie się detalu, chodzi o przypadki gdy w krótkim czasie pojawi się kilka detali i jak dla tych kilku detali wyzwolić dyszę.
    Problem jest czysto algorytmiczny. Nie wnikaj w czujnik :)
  • #11 10198801
    andrjalo
    Poziom 22  
    Posty: 451
    Pomógł: 30
    Ocena: 90
    Tak jak kolega napisał jest fantastą więc niech wymyśli jak przekroczyć prędkość światła myślę że i tak nasza technika dostarcza nam tyle zagadnień że wirtualnych nie potrzeba. A jak ma realny problem niech to powie a nie szuka rozwiązań pośrednich.
  • #12 10199043
    Marek_Pe
    Poziom 23  
    Posty: 508
    Pomógł: 46
    Ocena: 111
    Aż sie prosi o użycie rejestru przesuwnego.

    Znana jest minimalna przerwa między elementami. Wystarczy więc próbkować stan we z podwójną/potrójną częstotliwością. Długość rejestru zależeć będzie od wielkości zwłoki pomiędzy wykryciem elementu a reakcją czyli jego zdmuchnięciem.

    Inna wersja pomiar czasu pomiędzy elementami (do tablicy) i sterowanie dyszą wg danych zdejmowanych z tablicy w trybie fifo. Raz na kółko synchronizacja czasu.

    Pozdrowienia.
  • #13 10199916
    roks
    Specjalista Automatyk
    Posty: 524
    Pomógł: 77
    Ocena: 55
    Witam

    Dokładnie tak jak pisze Kolega Marek_Pe . Timer generujący impulsy z częstotliwością odpowiadającą najmniejszej możliwej odległości , uruchomienie dyszy z odpowiedniej pozycji rejestru ( odpowiadającej przesunięciu czujnik - dysza )

    pozdrowienia
  • #14 10200213
    pafciowaw
    Specjalista Automatyk
    Posty: 2439
    Pomógł: 480
    Ocena: 364
    Pomysł z niezależnymi timerami jest lepszy - każdy timer wyzwalany jest czujnikiem (który widzi detal) i po określonym czasie uruchamia dyszę; jedyna trudność: w programie zawrzeć tyle timerów ile ewentualnie znajdzie się detali między czujnikiem a dyszą.
    Pomysł z rejestrem przesuwnym ma małą wadę - nie można synchronizować (kasować?) rejestru jeżeli detale ciągle się pojawiają przed czujnikiem.
    Do obydwu pomysłów dołożyłbym dodatkowo: sprawdzanie długotrwałości obrotu koła i na tej podstawie wyliczał czas na przesunięcie detalu (dla pomysłu z timerami) lub korygował częstotliwość przesuwania rejestru (pomysł Kol. Marek_Pe)
  • #15 10200228
    riddyk
    Poziom 21  
    Posty: 358
    Pomógł: 34
    Ocena: 109
    Witam,

    tworzymy tablicę która będzie odpowiadać 90* różnicyc pomiędzy czujnikiem, a dyszą. Wartości w tablicy będa się przesówać zgodnie z prędkością obwodu po jakim poruszają się detale. W chwili wykrycia detalu przez czujnik zapiszemy na początku tablicy znak, aby wysterował dyszę. Zgodnie z upływem czasu/zbliżania się detalu do dyszy, w tablicy będzie się zbliżał znak wyzwalający dyszę.
  • #16 10200274
    piotr5000
    Poziom 21  
    Posty: 393
    Pomógł: 40
    Ocena: 30
    A czy jest możliwe przesunięcie czujnika ?
    Jeżeli detal będzie wykrywany bliżej dyszy , to czas od wykrycia detalu do otwarcia dyszy będzie na tyle mały że następny detal nie zdąży przed czujnik i nie ma problemu.
  • #17 10200512
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    piotr5000 napisał:
    A czy jest możliwe przesunięcie czujnika ?
    Jeżeli detal będzie wykrywany bliżej dyszy , to czas od wykrycia detalu do otwarcia dyszy będzie na tyle mały że następny detal nie zdąży przed czujnik i nie ma problemu.



    No oczywiście to było by najprostsze, ale się niestety nie dało, bo ten czujnik sterował też etykieciarką która nakleja etykiety.
    Ja zastosowałem pomysł z niezależnymi timerami. Określiłem ich max ilośc na 4 to w zupełności wystarczyło.
  • #18 10206253
    asher
    Poziom 17  
    Posty: 158
    Pomógł: 22
    Ocena: 9
    fantasta napisał:
    Ja wiem, łatwo powiedzieć, użyć więcej timerów i OR na dyszę.

    Trzeba jednak kilka rzeczy uwzględnić. Co jak żaden nie pracuje, jak zrobić żeby zachowana była kolejność, jak zrobić żeby startował pierwszy, potem drugi, potem trzeci i jak pierwszy skończył żeby nie startował czwartego tylko znowu pierwszy, i do tego konkretne wyzwolenie dyszy musi kasować konkretny timer który ją wyzwolił. Czas dyszy też trzeba jakoś ustalić aby był stały.


    Kolego po pierwsze chciałeś pomysł na algorytm :D to go dostałeś (nie mylić pomysłu z gotowcem :D ). Warunki jakie wyżej poruszyłeś są możliwe do łatwego opisania powiedzmy dla zdefiniowanych sztywno 4 no może 5 timerów. Z większą ilością trzeba by już było się narobić. Podtrzymuję pomysł adresowania pośredniego i pętli zliczającej kolejne elementy. Pytanie czy sterownik jest na tyle zaawansowany żeby to dźwignąć.

Podsumowanie tematu

✨ W dyskusji poruszono problem algorytmu sterowania w układzie PLC, gdzie czujnik wykrywa detale na obracającym się kole. Głównym wyzwaniem jest synchronizacja uruchamiania dyszy w sytuacji, gdy detale są blisko siebie, co prowadzi do pomijania niektórych z nich. Uczestnicy sugerują zastosowanie wielu timerów, które będą uruchamiane przez czujnik, oraz wykorzystanie rejestru przesuwnego do zarządzania czasem reakcji dyszy. Wskazano również na potrzebę zdefiniowania maksymalnej liczby timerów oraz na konieczność uwzględnienia prędkości obrotowej koła. Ostatecznie autor zastosował pomysł z niezależnymi timerami, ograniczając ich liczbę do czterech.
Wygenerowane przez model językowy.
REKLAMA