Elektroda.pl
Elektroda.pl
X
Elektroda.pl
SterControlSterControl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

S7-300 - Podzielnik binarny i pamięć zbocza

17 Gru 2013 16:59 4419 13
  • Poziom 9  
    Witam

    Tak się składa, że znajomy musi zrobić projekt z przedmiotu Przemysłowych systemów rozproszonych a, że ja kiedyś na laboratorium byłem biegły na S7-200 to poprosił mnie o pomoc. Problem jest jednak taki, że obecnie studenci pracują już na S7-300 i S7-1200. Ja nie za bardzo mam możliwość usiąść przy nich i coś zrobić, najczęściej analizuję programy, napisane przez studentów na tych zajęciach i rysuję mu program na kartce. To trochę uciążliwe ale np. S7-300 nie różni się na tyle od S7-200 by nie można było ogarnąć choćby podstawy.

    Ale do rzeczy. Napisałem program. Niestety teraz nie mogę wrzucić zdjęć, może zrobię to później jak kolega wrzuci skany. Jednak kiedy dziś przerzucił go na STEP 7, okazało się, że nie działa poprawnie a wykładowca przyglądając się jemu wskazał błąd w miejscu gdzie zrobiłem podzielnik binarny.


    Układ wyglądał mniej więcej tak:

    S7-300 - Podzielnik binarny i pamięć zbocza

    To jest układ uruchamiający pompę P1. Pominąłem styki awarii i pamięci alarmu, one nie powinny stanowić różnicy. Ale jakby ktoś był ciekawy to były to styki NC między stykiem WYB_P1 a zboczem narastającym. Dodatkowo była jeszcze gałąź uruchamiająca P1, gdy na P2 wejdzie awaria ale to też chyba nie ma większego znaczenia.

    Układ nawet się nie uruchamiał. Miał on pracować tak, że zapisana PAM_WYBP1 w następnych Networkach zapisuje też po zboczu narastającym pamięć rozruchu. A rozruch nawet się nie zapisywał. Prowadzący powiedział, że działa to tak, że jak styk I4.0 wejdzie na 1 to układ zapisuje i od razu resetuje PAM_WYBP1.

    Wybaczcie ale ja jakoś tego nie widzę. To zwykły podzielnik binarny. Problemem jest to, że ja nie pracowałem nigdy na S7-300 i nie za bardzo wiem dlaczego do zbocza trzeba przypisać jakąś pamięć, jakby ktoś mógł mi to wytłumaczyć to byłbym wdzięczny. A poza tym czy ktoś widzi tu jakiś problem, a przynajmniej ten, który wskazał prowadzący?

    Na pomoc znajomego w wytłumaczeniu kilku spraw nie mogę liczyć, bo on nie za bardzo łapie ten przedmiot.

    Liczę na waszą pomoc.
    Pozdrawiam
    [3.12.2020, webinar] Zagadnienia pomiarowe w nowoczesnej inżynierii materiałowej. Zarejestruj się
  • SterControlSterControl
  • Poziom 9  
    Tak, dokładnie o to mi chodzi. Tylko, że wciąż nie jestem pewny co zachodzi w tym programie. Na screenach w punkcie drugim widać, że na zielono podświetla się jednocześnie SET i RESET pamięci M11.0, A jednak w Networku 2 widać, że styk M11.0 zasila M1.0, czyli tak jakby był zapisany. Widać też, że M10.0 nie zostało zresetowane co mnie dziwi, przecież to ta sama gałąź, która prowadzi do SET M11.0.

    Tak jak wcześniej pisałem, nie pracowałem na S7-300 i nie do końca rozumiem takiego działania, gdyż na S7-200 taki podzielnik binarny działa bez zarzutów, nawet to sprawdziłem.

    Nie wiem w czym tkwi problem, więc jeśli TY andy1955 możesz mi to wytłumaczyć byłbym wdzięczny, przy okazji dobrze by było gdybym zrozumiał potrzebę używania pamięci zbocza.
  • SterControlSterControl
  • Poziom 13  
    na rysunku 2 widzisz tylko, że M11.0 ma logiczną 1.
  • Poziom 9  
    Z tego co mi się wydawało to w S7-200 przy podglądzie podświetlało się to co było zasilone. Tutaj na S7-300 wygląda jakby były zasilone i SET i RESET. Ogólnie to co napisałeś ErykK też zauważyłem i ma sens, bo przecież styk M11.0 w końcu zasila M1.0, wiec tak jakby faktycznie ma logiczną jedynkę. Ale to podświetlenie trochę mnie myli. Pamiętam gdy pracowałem na S7-200 i z programem było coś nie tak, że Networki się kłóciły i jednocześnie gdzieś była zapisywana dana pamięć a w innym resetowana, to nie było tak, że program wcale nie ruszał. Ruszał, tylko trochę wariował.

    Więc wybaczcie mi trochę to skołowanie ale na pierwszy rzut oka wydawało mi się, że to może trochę podpierać tezę prowadzącego laboratorium. Czyli jeśli to podświetlenie RESET M11.0 nic nie znaczy to wygląda na to, że układ działa poprawnie. Jedynie M10.0 się nie resetuje albo zwyczajnie program tego nie pokazuje, bądź druga opcja, zauważyłem, że na dole są "zdefiniowane" tylko E4.0, M1.0 i M11.0, może dlatego M10.0 nie reaguje.

    Edit: Miałem mieć okazję dziś sprawdzić ten układ na S7-300 ale nie udało się. Za to mój kolega był w laboratorium i za jego pośrednictwem sprawdziliśmy ten podzielnik binarny. I było tak jak ja myślałem i jak Wy Panowie mi pisaliście. Ten podzielnik działa bezbłędnie. Cieszy mnie to, bo od początku nie mogłem uwierzyć, że mogłem popełnić błąd w tak prostym układzie. Najwyraźniej albo kolega popełnił błąd w dalszej części programu i coś źle przepisał albo prowadzący sam nie wiedział co jest nie tak ale istnieje jeszcze taka opcja, że i ten prosty układ został źle przepisany, więc go nie oskarżam.

    Tak więc wygląda na to, że zakładanie tego tematu nie było potrzebne. Mimo to, wciąż przydałoby mi się wytłumaczenie tych pamięci zbocza, na zaś ;)
  • Poziom 9  
    Właściwie to link, który podałeś nie wyjaśnia mi nic.

    Jak stworzyć podzielnik binarny lub inaczej zwany przerzutnik bistabilny lub jeszcze inaczej jak ktoś go nazwał w tamtym temacie przycisk dwustanowy to ja doskonale wiem. Zresztą podałem swój przykład na górze i działa on świetnie na S7-200, 300 i 1200. To akurat fragment programu jaki napisałem.

    Jako, że nie pracowałem nigdy na S7-300 zgłupiałem, gdy prowadzący wskazał w nim błąd, dlatego napisałem do was o pomoc. Jednak na kolejnych zajęciach, gdy znajomy wklepał go ponownie okazało się, że wszystko jest dobrze. Na domiar złego, wyszło na to, że chyba cały mój program działa poprawnie. Heh, pewnie w stresie się gdzieś pomylił poprzednio :) Luzik, laikiem nie jestem ;P

    Dlatego, skoro sprawa podzielnika się wyjaśniła to została jeszcze sprawa pamięci pomocniczej używanej do zbocza narastającego i opadającego w S7-300 i S7-1200. Zauważyłem, że działa to zupełnie tak jak w S7-200 tylko, że tam były zwykłe zbocza. Dlatego nie rozumiem ich używania.

    Ktoś mógłby to zbagatelizować ale rzecz jasna sam też staram się zanalizować potrzebę tych pamięci i zastanawiam się jaka byłaby reakcja programu, gdyby gdzieś dalej nadpisywano tę pamięć. Domyślam się, że wtedy taki styk wysyłał by impuls, samodzielnie bez zasilania z poprzedniej części takiego podzielnika. Czy tak?

    Myślę, że jeśli ktoś wyjaśni mi wszystko co bym chciał to nie trzeba byłoby już kontynuować tego tematu ;)

    Pozdrawiam
  • Poziom 37  
    Witam,

    Czyli zacznijmy od początku. Analizując Twój program:

    1. Stan początkowy programu: Wejście I4.0 = 0; M11.0 = 0 i M1.0 = 0;
    2. Podajemy logiczną 1 na I4.0, za merkerem M0.2 pojawia się zbocze narastające. Setuje się merker M11.0 (bo M1.0 jest jeszcze = 0). Dolna gałąź Networku 1 jest jeszcze nie spełniona (bo M1.0 jest jeszcze = 0);
    3. Przechodząc do Networku 2, ustawia się merker M1.0 na 1 (bo M11.0 jest = 1).
    4. W następnym obiegu pętli programu, jeśli na i4.0 jest nadal logiczna 1 to nie dzieje się nic.
    5. Jeśli zdejmiemy logiczną 1 z wejścia I4.0 to również nie dzieje się nic.
    6. Przy kolejnym podaniu 1 na I4.0 w pierwszej gałęzi Networku 1 nie dzieje się nic (bo ustawione jest M1.0 na 1), a w drugiej skasuje się M11.0 (bo ustawione jest M1.0 na 1).
    W Networku 2 skasuje się M1.0 (bo M11.0 = 0) i tak w kółko.

    Pozdrawiam.
  • Poziom 9  
    Witam

    bhtom, doceniam Twoje zaangażowanie w mój temat ale tutaj można byłoby przytoczyć powiedzenie "nie ucz ojca dzieci robić" ;) Widać, że mniej więcej wiesz o co chodzi, więc szacuneczek. Twoja analiza części programu jaką wstawiłem z pewnością przyda się każdemu, kto zajrzy do tego tematu a kto dopiero zaczyna przygodę ze sterownikami SIEMENS. Pomińmy fakt, że po części zostało to przeanalizowane wcześniej. Jeśli natomiast chodzi o mnie, przywołując wspomniane powiedzenie, to mnie tego tłumaczyć nie trzeba, ja doskonale wiem jak on działa.

    Zróbmy tak, wytłumaczę o co mi chodzi jeszcze raz.

    Mój początkowy problem polegał na tym, że prawdopodobnie znajomy źle przepisał program, który mu napisałem na kartce, do STEP 7 przez co nie działał on wcale a prowadzący zajęcia wskazał błąd w podzielniku binarnym. Jako, że ja pracowałem kiedyś na studiach na S7-200 a znajomy pracuje na S7-300 i S7-1200 nabrałem wątpliwości co do takiego samego działania podzielnika w tych sterownikach. Moje podejrzenia padły na PAMIĘĆ ZBOCZA, bo jej nie używało się w zboczach w S7-200.

    Stąd temat tutaj założony i prośba o wskazanie błędu i wytłumaczenie konieczności stosowania tych pamięci.

    Jak się później okazało, znajomy faktycznie źle przepisał program, bo gdy na następnych zajęciach zrobił to dokładnie, napisany przeze mnie program działał bezbłędnie.

    Stąd wiem, że w moim programie nie było żadnego błędu, w co w zasadzie wierzyłem cały czas, bo sam podzielnik binarny to banalny układ. Pozostała część programu jest bardziej złożona ale i ona okazała się poprawna.

    Podsumowując, problem zniknął, można powiedzieć sam, ja laikiem nie jestem i na sterownikach znam się na tyle, że czego nie rozumiem w S7-300 czy S7-1200 to jestem w stanie to wydedukować. Mimo to, uznałem, że dobrze by było gdyby ktoś fachowo wytłumaczył mi te PAMIĘCI ZBOCZA, choć jak już pisałem powoli sam wydedukowałem o co z nimi chodzi. Teraz to już czysta ciekawość a nie potrzeba.

    Dlatego, jeśli ktoś jeszcze chce mi wytłumaczyć działanie mojego programu to ja mówię "NIE, DZIĘKUJĘ ZA FATYGĘ", jeśli ktoś będzie chciał opisać działanie PAMIĘCI ZBOCZA to odpowiadam "TAK, UWAŻNE SŁUCHAM" :D

    To tyle w temacie ;)

    Pozdrawiam
  • Poziom 9  
    To może zamiast porównywać S7-200 do S7-300 porównajmy to drugie do S7-1200.

    W załączniku dodaję screen z układu sygnalizacji alarmu na S7-1200. Identyczny układ został zrobiony w S7-300 tylko, że poprzez blok Function.

    A ma działać tak, wchodzi awaria i sygnalizacja pulsuje, tutaj mamy dwie opcje:
    a) jeśli styk awarii wciąż jest na 1 i potwierdzimy, to dioda świeci cały czas,
    b) jeśli styk awarii jest na 0 i potwierdzimy, to dioda gaśnie.

    Na S7-300 działa bezbłędnie. Natomiast na S7-1200 gdy załączymy awarię, dioda pulsuje, jeśli styk awarii jest na 1 i potwierdzimy to dioda świeci dopóki potwierdzenie też jest na 1, kiedy zejdzie na 0 to dioda znów pulsuje. Dalsza część jest już ok.

    Różnica w budowie układu jest taka, że w S7-300 w Networku 1 jest oddzielny styk normalnie otwarty do zadawania awarii i dalej styk zbocza narastającego z przypisaną mu pamięcią pomocniczą, natomiast w S7-1200 jak widać nie ma styku normalnie otwartego a jest tylko ten jeden styk zbocza narastającego z przypisaną pamięcią pomocniczą oraz adresem styku zadającego awarię.

    Stąd pytanie, dlaczego na S7-1200 to nie działa tak jak powinno?

    S7-300 - Podzielnik binarny i pamięć zbocza
  • Specjalista Automatyk
    radec_r napisał:
    jeśli ktoś będzie chciał opisać działanie PAMIĘCI ZBOCZA to odpowiadam "TAK, UWAŻNE SŁUCHAM"


    Siemens napisał:

    All edge instructions use a memory bit (M_BIT) to store the previous state of the input signal being monitored. An edge is detected by comparing the state of the input with the state of the memory bit. If the states indicate a change of the input in the direction of interest, then an edge is reported by writing the output TRUE. Otherwise, the output is written FALSE.


    Bit pamięci (poniżej styku) pamięta poprzedni stan bitu wejścia (powyżej styku). --|P|-- daje 1 gdy z lewej było 1 i we = 1 i pam = 0.

    Code:


       WE        WY
    --|P|--------( )
       M

    działa tak:

       WE     M    WY
    --| |----|/|---( )


       WE           M
    --| |----------( )


    Zacząłbym od sprawdzenia, czy M0.4 nie jest pomyłkowo użyte w innym miejscu w programie.
  • Poziom 9  
    Użycie M0.4 w innym miejscu niemal od razu odrzuciłem, bo też o tym myślałem i sprawdzałem. Mimo to na wszelki wypadek zrobiłem to ponownie i tylko potwierdziłem, że jest użyta tylko raz, w układzie alarmowym.

    W zapamiętywaniu przez bit pamięci poprzedniego stanu bitu wejścia jest logika, teraz to jasne. Rozumiem to tak, że to swego rodzaju zabezpieczenie, że w momencie podawania 1 na wejściu, zbocze nie poda po raz kolejny sygnału, gdy w dalszej części programu będzie np. SET na to wejście. Albo coś w tym rodzaju :D

    Co do tego układu... w sumie coś mi w nim nie gra, bo z niego jakby wynika, że M będzie miało zawsze taki sam stan jak WE a ma przecież zapamiętywać poprzedni stan WE. Kolejną sprawą jest, że ja chyba nigdy takiego układu bym nie zrobił, bo nie wiem czy by zadziałał. Nie miał bym pewności czy styk M nie otworzy się zanim sygnał dojdzie do WY. Ale to czysta teoria, w praktyce może jest inaczej i się mylę.

    Podsumowując, wciąż błąd w układzie alarmowym nie jest zdiagnozowany, może macie inne pomysły a może wrzuciłbym ewentualnie cały program i ktoś by to przejrzał, jest prosty i niedługi... Za wyjaśnienie działania zbocza bardzo dziękuję jestam, to mnie też nauczy żeby rozwiązania problemów szukać u źródła, w tym przypadku na stronie SIEMENSA ;)
  • Specjalista Automatyk
    radec_r napisał:
    Rozumiem to tak, że to swego rodzaju zabezpieczenie [...] Co do tego układu... w sumie coś mi w nim nie gra, bo z niego jakby wynika, że M będzie miało zawsze taki sam stan jak WE a ma przecież zapamiętywać poprzedni stan WE.


    Przekombinowujesz. Zbocze 0->1 jest wtedy, gdy _teraz_ jest 1 i _poprzednio_ było 0 czyli zbocze = (WE i nie M). Po wyliczeniu tego wyrażenia logicznego pozostaje zapisać stan WE (_teraz_) do pamięci pomocniczej M żeby móc jej użyć w kolejnym cyklu jako _poprzednio_. Ten bit pamięci pomocniczej jest tylko do prywatnego użytku w wewnątrz styku --|P|--, nie powinien być używany nigdzie indziej w programie.

    SET na wejście ma mało sensu i w niektórych sterownikach powoduje błąd kompilacji lub ostrzeżenie.

    radec_r napisał:
    Nie miał bym pewności czy styk M nie otworzy się zanim sygnał dojdzie do WY

    To jest program. Wynik jego działania jest deterministyczny. Operacje są wykonywane od góry do dołu i od lewej do prawej.

    radec_r napisał:
    błąd w układzie alarmowym nie jest zdiagnozowany, może macie inne pomysły a może wrzuciłbym ewentualnie cały program

    Wrzuć projekt i oprócz niego screeny. Ja nie mam czym otworzyć projektu dla S7, ale na samych obrazkach nie wszystkie błędy będzie widać. Może któryś z kolegów pomoże.