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

Analiza FB w step7 - w czasie rzeczywistym

21 Wrz 2006 08:13 2117 7
  • Poziom 11  
    Witam, jeszcze za bardzo się nie znam na step7 więc moje pytanie może się wydać trochę śmieszne, ale chciałem zapytać jak można analizować w czasie rzeczywistym FB poniewać gdy ogląda się program w czasie rzeczywistym w FB widać tylko te co się dzieje w pierwszym odwołaniu do niego, a jeżeli FB jest wywołany więcej razy to już nie wiem gdzie można obejrzeć to co się dzieje w środku bo zawsze stan FB jest taki na jaki pozwalają mu sygnały z pierwszego odwołania. Mam nadzieje że ktoś rozumie o co mi chodzi, chociaż jak czytam co napisałem to nie jestem pewien :>.
  • SterControlSterControl
  • Poziom 24  
    1. możesz podejrzeć on-line DB skojarzone z danym wywołaniem FB (tzw. instance DB).
    2. możesz skorzystać z tzw. "debug mode":
    Debug/operation mode/debug mode
    Debug/call environment
    Tu wpisujesz środowisko, w którym jest uruchomiony ten FB. Tzn. blok programowy, w którym FB jest wywołany i instance DB, z którym ten FB jest skojarzony.
    Następnie otwierasz on-line żądany FB i zakładasz okulary ;)
    Ta metoda jest nieskuteczna, jeżeli ten FB jest wywoływany w danym bloku więcej, niż 1 raz.
  • SterControlSterControl
  • Poziom 11  
    Dzięki dokładnie o coś takiego mi chodziło - tzn to z pkt 2. bo to z 1. to wiadomo, chociaż nie za bardzo rozumiem o co chodzi że jezeli ten FB jest wywolywany w danym bloku wiecej, niz 1 raz to niedziała. Możesz dać jakiś przykład? Powiedzmy masz ob1 i tam 5 razy wywołujesz sobie fb1 do którego masz 5 różnych instance db (db1,db2 ...) no i z tego co udało mi się sprawdzić to motoda z pkt 2 działa dla każdego wywołania wystarczy w Call environment za każdym razem podać numer DB z jakim ma być debugowany FB, i dla takich wartości ten FB jest pokazany. Chyba że nie zrozumiałem o co chodzi. Pozdrawiam i jeszcze raz dzięki, bardzo mi pomogłeś.
  • Pomocny post
    Poziom 24  
    Nie działa na pewno przy podglądaniu bloków FC.
    W FB być może instance DB ratuje sytuację i można.
  • Poziom 11  
    Ok u mnie przynajmniej w FB działa, ale mam nowy problem, jest FB i niema do niego instance DB tylko lokalne struktury statyczne, jak wtedy podejś do tematu, jak wtedy debugować wewnątrz FB aby mieć wewnątrz sygnąły podawane jako parametry przy danym wywołaniu FB, najlepiej na przykładzie mam sobie blok powiedzmy FB1 wewnątrz którego jest 5 odwołać do FB2, ale FB2 niema żadnego instance DB tylko jest pięć struktur statycznych zgodnych z FB2. Oczywiście w każdym z 5 odwołań są inne sygnały wejściowe, jak wtedy podejrzeć co się dzieje wewnątrz FB dla konkretnego odwołania. Mam nadzieje że to też ktoś zrozumie chociaż muszę przyznać że nie jest łatwo bo znowu pozakręcałem. Aktualnie przesiadam się z Cimplicity na Stepa i kompletny zakręt, zero podobieństwa. pozdrawiam i z góry dzięki za obpowiedzi.
  • Poziom 24  
    Rzecz w tym, że nie podejrzysz.
    Albo - będziesz do celów testowych blokował wywołania których nie podglądasz, a odblokujesz, kiedy będziesz pewien prawidłowego działania testowanego FB,
    albo - zmienisz strukturę programu, tak aby nie wywoływać FB2 z FB1 więcej, niż 1 raz.
    Z tego, co wiem, tego problemu się nie da inaczej obejść.
    Siemens w odróżnieniu od konkurencji bardzo oszczędnie gospodaruje pamięcią, ale niestety skutkuje to m. in. problemami jw.

    Na cimplicity nie pracowałem, więc nie mogę Ci dużo podpowiedzieć. Pamiętam, że koledzy, którzy musieli się przesiąść z S7 na cimplicity, po początkowym zachwycie klęli w żywy kamień. Nie wiem, o co dokładnie chodziło.
    Z uwag praktycznych dotyczących S7:
    - jeżeli nie potrzebujesz instance DB, pracuj na FC a nie FB.
    - jeżeli masz problemy z local variables, zaczynaj naukę od posługiwania się wprost wartościami globalnymi. Łatwiej podejrzeć i jest mniej pułapek po drodze.
    - Struktury lokalne są tworzone na stosie, w związku z czym należy się spodziewać, że po wyjściu z bloku zostaną nadpisane wartościami przypadkowymi. Nie licz na to, że cokolwiek na nich zapamiętasz do następnej pętli.
    - to, co masz w danym DB, możesz odczytać i zapisać w dowolnym bloku w Twoim programie.
  • Poziom 11  
    Znalazłem taką jedną opcje "Monitor with Call up function", aby uzyskac do niej dostep otwieramy blok w którym jest odwołanie do FB który chcemy podglądac, robimy "Debug->Test operation, następnie po prostu najezdżamy na blok który będziemy otwierać, prawy myszy, i oprócz opcji "open" i "monitor" jest "monitor with call up function" problem w tym że opcja ta nie zawsze jest dostępna, chyba tylko jak się otworzy blok i wgra do sterownika to wtedy się pojawia.
  • Poziom 24  
    Nie znam tej funkcji. Warto wiedzieć...
    Prawdopodobnie Siemens zautomatyzował w ten sposób wypełnianie pól "Call environment".
    To, że blok musi być w sterowniku, to chyba oczywiste. W końcu podgląda się ten blok on-line w czasie pracy.
    Funkcja może być nieaktywna również jeżeli struktura programu uniemożliwia poprawny podgląd.