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

[Rozwiązano] Step 7 - Cykla pracy sterownika - na podstawie przykładu

nuep 02 Sty 2020 17:42 696 10
  • #1 18376047
    nuep
    Poziom 10  
    Posty: 17
    Ocena: 7
    Witam,

    Proszę o pomoc w zrozumienie cyklu pracy sterownika. Próbuję rozgryźć ten temat na podstawie prostego przykładu zamieszczonego poniżej.

    AN M 70.6
    S Q 0.0

    //licznik C 6 dla zmiany stanu Q0.0 z 0 na 1
    A Q 0.0
    CU C 6

    A M 70.6
    R M 70.6
    R Q 0.0

    //licznik C 3 dla zmiany stanu Q0.0 z 1 na 0
    AN Q 0.0
    CU C 3
    //licznik C 2 dla zmiany stanu Q0.0 z 0 na 1
    A Q 0.0
    CU C 2

    W pierwszym cyklu po załadowaniu programu do PLC licznik C6 i C2 przyjmuje wartość 1 i to jest jasne.
    Z kolei przy zmianie wartości bitu M 70.6 następuje inkrementacja licznika C2 i C3. I to też jest jasne.
    Pytanie dlaczego nie następuje inkrementacja licznika C6? Licznik ten jest analogiczny ja C2. Wygląda to jakby, że w tej linii kodu nie następowała zmiana wartość dla Q0.0, dlatego nie dochodzi do inkrementacji licznika C6.

    Proszę o rozpisanie co się zmienia dla poszczególnych cykli sterownika po zmianie wartości bitu M70.6. Pomoże mi to mam nadzieję ostatecznie zrozumieć sposób wykonywania programy przez PLC.
  • Pomocny post
    #2 18376206
    kosmos99
    Poziom 38  
    Posty: 4188
    Pomógł: 338
    Ocena: 820
    W złym miejscu umieściłeś CU 6, umieść pod R Q0.0 i powinno działać.
  • #3 18376233
    nuep
    Poziom 10  
    Posty: 17
    Ocena: 7
    Tak, wiem. Tylko dlaczego C6 w tym miejscu nie działa? Jaka jest logika działania programu w cyklu? Specjalnie umieściłem dwa liczniki pod spodem, C2 jest analogiczny dla C6 i C2 działa jak należy. Ty to widzisz a ja mam z tym problem, dla mnie z początku nie miało to znaczenia, dopiero metodą prób po ustawieniu licznika pod spodem program zadziałał.
  • Pomocny post
    #4 18376248
    kosmos99
    Poziom 38  
    Posty: 4188
    Pomógł: 338
    Ocena: 820
    Bo rozdzieliłeś instrukcję RS, wLADzie by się tak zrobić nie udało.
  • #5 18376274
    nuep
    Poziom 10  
    Posty: 17
    Ocena: 7
    Dzięki. Czy takie założenia można wywnioskować na podstawie instrukcji programowanie sterownika w Step7 czy wynika to z doświadczenia albo zrozumienia działania cyklu? Czy ewentualnie jest gdzieś ujęte, że pomiędzy instrukcjami RS nie należy umieszczać żadnych instrukcji pośrednich.
  • Pomocny post
    #6 18376543
    zembol
    Poziom 25  
    Posty: 499
    Pomógł: 79
    Ocena: 56
    Dzień dobry.
    Proszę pamietać jak działa sterownik.
    1. Odwzorowanie obszarów I do pamięci odwzorowania wejść
    2. Wykonanie programu (proszę pamiętać ze znacznie ma ostatnia instrukcja wykonana na danej zmiennej)
    3. Tworzenie obrazu wyjść i przepisanie do obszaru wyjść q
  • Pomocny post
    #7 18376738
    Markos80

    Specjalista Automatyk
    Posty: 1861
    Pomógł: 475
    Ocena: 215
    kosmos99 napisał:
    Bo rozdzieliłeś instrukcję RS, wLADzie by się tak zrobić nie udało.
    To samo można zapisać w tym języku, tylko trzeba rozdzielić na osobne network'i, ale nie zmienia to faktu, że tak samo by nie zadziałało.
    CU działa na zbocze narastające, a problemem jest A Q0.0, które za raz po S Q0.0 jest zawsze 1 (CU "widzi" zmianę tylko w pierwszym skanie sterownika, dlatego zlicza do 1).
    Konto firmowe:
    PUMPA
    Widok 7, Łuczyce, 32-010 | Tel.: 502XXXXXX (Pokaż) | Strona WWW: www.pumpa.pl
  • Pomocny post
    #8 18379688
    ThoronDC
    Poziom 16  
    Posty: 112
    Pomógł: 17
    Ocena: 9
    Zobacz jak zachowuje się RLO i będziesz wiedziała gdzie jest problem.

    Jak rozbijesz na oddzielnie networki będzie OK (na początku każdego Networku jest domyślne RLO=1) lub przed A Q0.0 dodaj SET.
  • #9 18387177
    nuep
    Poziom 10  
    Posty: 17
    Ocena: 7
    Dziękuję za odpowiedzi. Niestety mam problem ze zrozumieniem dlaczego RLO = 1 zaraz po S Q0.0.
    Po ustawieniu bitu M 70.6 = 1 w miejscu poniżej następują resety:
    A M 70.6
    R M 70.6
    R Q 0.0
    i to rozumiem odbywa się w tym samym cyklu co ustawienie bitu. Czy wartość Q0.0 na końcu cyklu = 0 czy 1?
    Rozumiem, że w tym samym cyklu M70.6 osiągnie wartość 0 po resecie a czy w tym cyklu nastąpi ustawienie/ set bitu Q0.0, czyli Q0.0=1, czy odbędzie się to w kolejnym cyklu?

    Czy przy ustawieniu bitu M 70.6 = 1na chwilę zgaśnie fizycznie Q0.0?

    Dodam, że kod czytam od góry do dołu i tak go analizuję.

    ThoronDC ustawiłem SET przed A Q0.0. Nic to nie zmienia.
    Chyba mam zły tok myślenie i nie potrafię z nim zerwać.
  • Pomocny post
    #10 18387603
    Ravender
    Poziom 20  
    Posty: 627
    Pomógł: 49
    Ocena: 73
    
    1) AN M 70.6
    2) S Q 0.0
    
    //licznik C 6 dla zmiany stanu Q0.0 z 0 na 1
    3) A Q 0.0
    4) CU C 6
    
    5) A M 70.6
    6) R M 70.6
    7) R Q 0.0
    


    cykl 1 - założenie, ze M70.6 = 0, Q0.0 = 0
    
    1) true
    2) 1
    
    3) true
    4) c6 = 1
    
    5) false
    6) -
    7) -
    

    Więc Q0.0 = 1 na koniec cyklu

    ---
    Cykl 2 - M70.6=0, Q0.0 = 1
    
    1) true
    2) 1 
    
    3) true
    4) C6 = 1 (brak zmiany q0.0 więc licznik nie liczy)
    
    5) false
    6) - 
    7) - 
    

    Więc Q0.0 = 1 na koniec cyklu

    ---
    cykl3 - założenie, ze zmieniasz M70.6 = 1
    
    1) false
    2) 1
    
    3) true
    4) c6 = 1 (brak zmiany q0.0)
    
    5) true
    6) 0
    7) 0
    

    Więc Q0.0 = 0 na koniec cyklu

    ---
    cykl4 - teraz m70.6 = 0, q0.0 = 0
    
    1) true
    2) 1
    
    3) true
    4) c6 = 1 (brak zmiany Q0.0)
    
    5) false
    6) -
    7) -
    


    Widzisz gdzie leży problem? Od strony licznika C6 wartość Q0.0 zawsze wynosi jeden, prócz pierwszego cyklu. Dlatego licznik zlicza tylko jeden raz i tyle :).

    Dodano po 6 [minuty]:

    Zasadniczo błąd w twoim podejściu jest taki, że wykorzystujesz do S i R ten sam marker (M70.6). Jeśli już, to powinieneś to zrobić w ten sposób:

    
    AN M70.6
    = Q0.0
    


    Sety i resety wykorzystuj raczej wtedy, gdzie kompletnie różne zdarzenia ustawiają to wyjście.. np. masz na maszynie dwa przyciski... jeden od załączenia silnika (set) a drugi od wyłączenia (reset). A ty podpiąłeś do jednego przycisku silnik :D i jesteś zdziwiony, że dziwnie działa ;)

    Dodano po 12 [minuty]:

    ---
    A to co wydaje mi się próbowałeś zrobić, to przycisk monostabilny czyli wciskając guzik załączasz wyjście. Wciskając ponownie wyłączasz wyjście. A zrobić to można np. tak:

    
    a I0.0 //- przycisk
    fp m10.0
    = m10.1
    
    a m10.1
    X q0.0  //(xor)
    = q0.0
    


    Nie sprawdzałem ale powinno działać :)
  • #11 18393308
    nuep
    Poziom 10  
    Posty: 17
    Ocena: 7
    Dziękuję wszystkim za odpowiedzi.

    Ravender, dzięki za szczegółową odpowiedź. Tak ogólnie przykład kodu był testowy i tylko do analizy cyklu sterownika. Po przeanalizowaniu twojego postu temat jest dla mnie jasny.

    Pozdrawiam

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji poruszono problem zrozumienia cyklu pracy sterownika PLC w kontekście działania liczników C6, C2 i C3. Użytkownik zauważył, że licznik C6 nie inkrementuje się w oczekiwany sposób, mimo że jego logika wydaje się analogiczna do C2. Odpowiedzi wskazują, że problem wynika z umiejscowienia instrukcji CU oraz z rozdzielenia instrukcji RS, co wpływa na sposób, w jaki sterownik interpretuje zmiany stanu. Uczestnicy podkreślają znaczenie kolejności instrukcji oraz działania RLO (Result Logic Output) w cyklu sterownika. Po analizie kodu i odpowiedzi, autor zrozumiał logikę działania cyklu i przyczyny problemu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA