Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Fatek PLC - jak rozwiązać tą funkcję na drabince

Łukasz G. 10 Jun 2009 18:36 6081 7
  • #1
    Łukasz G.
    Level 11  
    Witam!
    Jestem początkującym programistą więc proszę o pomoc z następującym problemem:
    Zakładamy że mamy wejścia X0 do X4, X0=1, X1-X4=0 uruchamia podprogram 1, X1=1, X0,X2-X4=0 uruchamia podprogram 2 itd. w sumie 5 podprogramów.
    Ale gdy np. X0=1 i sterownik wykonuje podprogram 1 lub go zakończy, zdejmuje sygnał X0=0, to sterownik ma nie kończyć zadanego programu tylko resetuje program i wszystkie aktywne wyjścia Y, i tak ma być do każdego z podprogramów.
    Próbowałem z funkcją FUN 67 CALL, ale gdy np X0=1, a potem X0=0, to sterownik nie resetuje wykonywanego programu i utrzymuje niektóre wyjścia Y w stanie 1.
    Z góry dziękuję za pomoc
  • #2
    Smokey68
    Level 13  
    Jeżeli dobrze zrozumiałem, to program ma reagować wykonaniem odpowiedniego podprogramu w zależności od stanów wejść.

    Łukasz G. wrote:


    Ale gdy np. X0=1 i sterownik wykonuje podprogram 1 lub go zakończy, zdejmuje sygnał X0=0, to sterownik ma nie kończyć zadanego programu tylko resetuje program i wszystkie aktywne wyjścia Y, i tak ma być do każdego z podprogramów.


    nie do końca wiem jak to rozumieć...Chodzi Ci o to że gdy sygnał dajmy na to X0 przeskoczy z 1 na 0 to ma nastąpić wyzerowanie wszystkich wyjść i stanów czy wręcz przeciwnie?
    W pierwszym wypadku masz to, że tak powiem za darmo, bo PLC pracuje cyklicznie i w każdym cyklu wykonuje cały program. Wystarczy więc na końcu każdego networka umieścić zwykłą cewkę (a nie (s) lub (r)).

    w przeciwnym przypadku - jeżeli dajmy na to podprogram jest sekwencją wielu czynności - nie wykonuje się w 1 cyklu (bo np posiada timery lub czeka na odpowiedz z czujników itp itd) to musisz na poczatku każdej z podfunkcji zrobić podtrzymanie sygnałów X0-X5

    Quote:

    Próbowałem z funkcją FUN 67 CALL, ale gdy np X0=1, a potem X0=0, to sterownik nie resetuje wykonywanego programu i utrzymuje niektóre wyjścia Y w stanie 1.
    Z góry dziękuję za pomoc


    W temacie napisałeś, że ma to być w Ladderze, po co więc jakiekolwiek Funkcje? Robisz jedynie kilka networków w stylu X0| | -> .... -> ( )Y0
    i po sprawie :)

    Powodzenia!
  • #3
    Łukasz G.
    Level 11  
    Kolego Smokey68 dziękuję za zainteresowanie tematem, jednak sprawa nie jest do końca taka prosta. Zakładajmy że pod pewne wejścia X0 do X4 będzie podłaczony wyłącznik kołowy wybierający odpowiedni podprogram, natomiast do wejść X5...X-n są podawane sygnały z maszyny(start, stop z pulpitu operatora, czujniki indukcyjne itp.). Natomiast na wyjściach Y0...Y-n są podpięte elektrozawory, sterowanie falownikami itd.
    Dużym uproszczeniem w projektowaniu jest stosowanie cewek S i R więc niemogę z tego zrezygnować. I teraz zakładając że wybieram podprogram 1 naciskam start i maszyna zaczyna cykl pracy. Naciskam stop maszyna zatrzymuje się . Wykonała jakąś ilośc zaprogramowanych "ruchów" i np. niektóre cewki Y0...Y-n mają 1. Maszyna nie jest kolizyjna więc mogę jednocześnie zresetować wszystkie cewki, stany na taimerach i licznikach. I tak właśnie ma się dziać jeśli po naciśnięciu stopu zmienie wyłącznikiem podprogram 1 na np.3.
  • #4
    rasta.
    Level 11  
    A nie wystarczy na początku każdego podprogramu ustawić wszędzie 0?
  • #5
    Łukasz G.
    Level 11  
    A jak to praktycznie zrealizować ?
  • #6
    Smokey68
    Level 13  
    rasta, czasami są ograniczenia w oprogramowaniu do jednej cewki na network, a to już pewnie dyskwalifikuje pomysł. Dodatkowo w każdym cyklu niezależnie od tego czy następowała by zmiana podprogramu czy nie, kasowane byłyby wyjścia i stany (w przypadku wyjść to pół biedy bo i tak by były na końcu ustawiane, ale ze stanami to już gorzej). Lukasz, jak tylko dorwę kompa z jakimkolwiek softem do PLC to Ci spróbuję jakąś propozycję narysować.
    Pozdrawiam
  • #7
    multiprojekt_kg
    Level 13  
    Witam,


    wybór z nastawnika kodowego odpowiedniego "podprogramu" najlepiej wykonać nie na CALLach tylko używając programowania krokowego: STEP LADDER.

    wówczas nie będzie takiego problemu. dodatkowo przy uruchomieniu każdorazowo. Np. reset 16tu wyjsc Y0-Y15 używając funkcji RST i wpisując do niej WY0... (WORD Y0 - WORD = 16)

    Pozdrawiam,


    Krzysztof Gołąb
    MULTIPROJEKT.
  • #8
    FlyManPL
    Level 11  
    Nie wiem, czy dobrze zrozumiałem problem, ale postaram się pomóc. Mam podobną rzecz - markery od M0.0 do M0.3 ustalają tryb działania sterownika. Po wejściu w odpowiedni tryb program może być włączony lub wyłączony przyciskiem START/STOP. Naciśnięcie przycisku START/STOP, gdy program nie ma wybranego trybu nie powoduje nic. Naciśnięcie przycisku START/STOP w momencie, gdy mamy wybrany tryb pracy oraz gdy urządzenie działa powoduje zatrzymanie działania (resetuje wszystkie wyjścia).

    Poniżej przedstawiam drabinki, jak to zrealizowałem. Przykład jest tylko dla jednego trybu pracy, kolejne tryby pracy wyglądają analogicznie. Różnią się pierwszym zadajnikiem (inny adres markera) oraz częścią właściwą trybu/podprogramu, która znajduje się za zadajnikiem markera M1.0.

    Fatek PLC - jak rozwiązać tą funkcję na drabince

    Fatek PLC - jak rozwiązać tą funkcję na drabince

    Z tego, co widzę, to na chwilę obecną zmiana trybu pracy nie powoduje wyłączenia danego podprogramu, ale można to w dość prosty sposób "dorzucić".

    Mam nadzieję, że coś pomogłem.