Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

spoob zrozumienia programowania i obslugi systemu

micha_ 18 May 2009 13:13 1923 15
IGE-XAO
  • #1
    micha_
    Level 11  
    witam wszystkich
    od lat zajmuje sie programowaniem procesorow (atmel,freescale) glownie w c und asm -> chcialbym sprobowac programowania gotowych systemow typu s7-300. potrzebuje zrozumienia systemu operacyjnego???
  • IGE-XAO
  • #2
    arkady_pl
    Level 24  
    A po co chcesz rozumieć OS?
    Wyobraź sobie, że Twój program też wykona sie krokowo i tyle. To co w Atmelach masz realizowane sprzetowo to tutaj goni firmware, któy zupełnie Ciebie nie interesuje.

    Atmelki są do czego innego a S7 do czego innego - pomimo wielu podobieństw i możliwosci aplikacyjnych.
  • IGE-XAO
  • #3
    poczitamagoczi
    Level 14  
    Jak to po co "zrozumieć" ?

    Żeby być mądrzejszym!

    Mnie też zawsze bardzo ciekawiło jak działa taki OS na PLCkach. Czy są gdzieś udostępnione źródła takiego systemu ? Na studiach miałem trochę teorii o LPC i była tam mowa o tym że wszystkie zadania są realizowane w jednym cyklu - i to pewnie wymusza zastosowanie konkretnej strategii planowania. Czy podczas wgrywania programu na PLC wgrywany jest cały obszar pamięci czy tez tylko fragmenty kodu z poszczególnymi taskami -> funkcjami? Czy sterowniki PLC posiadają bootloadera? Jakie procki stosowane są w PLCkach? W ostatniej EP widziałem sterownik Simensa LOGO z ARM966 -> czy stosowanie ARMów to normalka w PLC?
  • #4
    arkady_pl
    Level 24  
    poczitamagoczi wrote:
    Jak to po co "zrozumieć" ?

    Żeby być mądrzejszym!

    Mnie też zawsze bardzo ciekawiło jak działa taki OS na PLCkach. Czy są gdzieś udostępnione źródła takiego systemu ? Na studiach miałem trochę teorii o LPC i była tam mowa o tym że wszystkie zadania są realizowane w jednym cyklu - i to pewnie wymusza zastosowanie konkretnej strategii planowania. Czy podczas wgrywania programu na PLC wgrywany jest cały obszar pamięci czy tez tylko fragmenty kodu z poszczególnymi taskami -> funkcjami? Czy sterowniki PLC posiadają bootloadera? Jakie procki stosowane są w PLCkach? W ostatniej EP widziałem sterownik Simensa LOGO z ARM966 -> czy stosowanie ARMów to normalka w PLC?


    Autor pytania chce poznac działanie OS'a aby programować S7.
    Pytanie na jakim poziomie. Dostępne oficjalne oprogramowanie nie dopuszcza "programisty" na poziom OS'a. Warstwa sprzetu i systemu operacyjnego jest niedostępna z poziomu warstwy aplikacji. Owszem, OS obsługuje aplikację, ale nie musisz go znać aby pisać aplikację. Tym bardziej w przypadku PLC.

    Owszem, w wielu przypadkach znajomość mechanizmów OS'a pozwala na lepszą optymalizację aplikacji, ale w przypadku PLC według mnie nie ma to znaczenia.

    Natomiast jeśli autor zadał by pytanie o to, jak to działa, jakie mechanizmy tam są zaimplementowane itp. to zupełnie inna bajka.

    Chyba, że autor chce pisać nowy firmware?
  • #5
    micha_
    Level 11  
    dzieki za odpowiedzi
    zaczynam programowac s7-300 i potrzebuje paru instrukcji logiki programu, ogladalem pare przykladow i dlatego wydaje mi sie troche dziwne.
    -dlaczego nie robi sie kontroli calego portu (np ep0) a potem tylko
    modifikacji pamieci(asm)???
    -dlaczego sprawdzane jest wrzystko po koleji?

    -czy mozna pisac caly program tylko na tych specjalnych funkcjach?
    -jezeli one sa gotowe to poco pisac wogole program???
    pozdrowienia
  • Helpful post
    #6
    arkady_pl
    Level 24  
    micha_ wrote:
    dzieki za odpowiedzi
    zaczynam programowac s7-300 i potrzebuje paru instrukcji logiki programu, ogladalem pare przykladow i dlatego wydaje mi sie troche dziwne.
    -dlaczego nie robi sie kontroli calego portu (np ep0) a potem tylko
    modifikacji pamieci(asm)???
    -dlaczego sprawdzane jest wrzystko po koleji?

    -czy mozna pisac caly program tylko na tych specjalnych funkcjach?
    -jezeli one sa gotowe to poco pisac wogole program???
    pozdrowienia


    Rozumiem Twoje pytania. Ja też operowałem na uC a wcześniej to i na normalnych rezystorkach. Patent w tym, że PLC nie są typowymi uC.

    Wyobraź sobie, że PLC to uC z wgranym oprogramowaniem, które zawiera w sobie interpreter. Wbudowany język jest w pewnym sensie ograniczony bo doststosowany do specyfiki sektora, w której sa używane PLC. Ale jednoczesnie w tym ograniczeniu jest tez wyspecjalizowany w wielu funkcjach. Ma wiele gotowych funkcji, które Ty musiałbyś oprogramować ręcznie na uC. Na przykład regulator PID.

    Ideologicznie uC i PLC są jak każdy układ przetwarzania dancyh - operują na operandach, mają jakiś algorytm i generują wyniki oraz pozwalają wytwarzać sprzężenia zwrotne czyli używać wyników jako operandów.

    Quote:
    -dlaczego sprawdzane jest wrzystko po koleji?

    trochę to wynika z przyjętego założenia analizy układu. Poczytaj o języku drabinkowym (LAD) - powinno Ci to pomóc w zrozumieniu tech dziwnych zachowań tego urządzenia.

    Quote:
    -jezeli one sa gotowe to poco pisac wogole program???

    gdyż program wynikowy najczęściej jest zestawem zależności pomiędzy dostępnymi funkcjami.

    Dodano po 10 [minuty]:

    Jeszcze jeden drobiazg odnośnie
    Quote:
    -dlaczego sprawdzane jest wrzystko po koleji?
    - sygnał z tego samego wejścia może być używany w wielu miejscach aplikacji a jeden cykl/krok aplikacji , musi skutkowac przeanalizowaniem wszystkich stanów wejść, wygenerowaniem stanów przejściowych a następnie stanów wyjściowych.

    Wyobraź sobie, że cały program w PLC to jedna wielka instrukcja, która jest wykonywana w każdym "cyklu" Twojego uC.
  • #7
    micha_
    Level 11  
    jezeli wejscia i wyjscia sa w calym cyklu tylko raz sprawdzane i ustawiane to po skopiowaniu wartosci variable "wejscie" do pamieci mozna jej uzywac wszedzie az do nastepnego cyklu czy nie?
  • #8
    arkady_pl
    Level 24  
    micha_ wrote:
    jezeli wejscia i wyjscia sa w calym cyklu tylko raz sprawdzane i ustawiane to po skopiowaniu wartosci variable "wejscie" do pamieci mozna jej uzywac wszedzie az do nastepnego cyklu czy nie?


    Wejścia są zapamiętywane raz, ale wartości wewnętrzne rejestrów i znaczników nie. Rejestry i znaczniki mogą się wielokrotnie zmieniać i można ich dowolnie często używać i modyfikować "w locie".

    Sterownik robi obraz stanu wejść i wyjść. I to ten obraz jest poddawany obróbce wewnątrz a następnie generowany jest nowy obraz stanów wyjściowych.

    Jedna uwaga - jeśli wcześniejsze polecenia zmienią stan wyjścia nr 34 a potem uzywasz wartości tego wyjścia jako wejście to zostanie pobrana wartość po zmianie a nie ta zapisana w przy zczytywaniu.

    Druga uwaga - stan wyjśc w trakcie analizy nie jest widoczny na zewnątrz.

    Wyobraź sobie taki układ, że masz uC obudowany zatrzaskami i bramkami izolującymi od otoczenia. uC odcina się od świata zewnętrznego, potem dokonuje całej analizy a następnie podłącza do świata zewnętrznego i strobuje zatrzaski na wyjściach.

    Dodano po 4 [minuty]:

    INFO: Jeden cykl w PLC to nie to samo co jeden cykl w uC. Na jeden cykl w PLC skłąda się ogromna ilośc cykli jego wewnętrznego procka. Jako jeden cykl w PLC określa się jedną analizę całego układu. Czas tej jednej analizy bywa zatem w wielu przypadkach wielce krytyczny.

    Dodano po 3 [minuty]:

    Niektóre sterowniki potrafią reagowac na przerwania. Droższe mają nawet kolejkę. Tańsze mogą nie wychwycić sygnału przerwania jeśli będzie zbyt krótki(zbyt długi czas jednego "cyklu" )
  • #9
    micha_
    Level 11  
    oznacza to ze musze dla kazdego wydarzenia pisac code
    np. wejscie 1 hi-> to zapisz w pamiec i zrob to.
    itd.
    specjalne funkcje leca automatycznie ->interupt
    a do innych funkcji trzeba pisac code
  • #10
    arkady_pl
    Level 24  
    micha_ wrote:
    oznacza to ze musze dla kazdego wydarzenia pisac code
    np. wejscie 1 hi-> to zapisz w pamiec i zrob to.
    itd.
    specjalne funkcje leca automatycznie ->interupt
    a do innych funkcji trzeba pisac code

    Nie do końca poprawnie rozumujesz ale powiedzmy, że tak - na tym poziomie mozna uznac to rozumowanie.

    Weźmy prosty przykład. Masz wejście I3 oraz wyjście Q8.
    Czyli innymi słowy, masz bit 2 portu wejsciowego i bit 7 portu wyjściowego.
    Zadanie: stan bitu 2 ma być odwzorowany na bicie wyjściowym 7.
    Rozwiązanie przykładowe:
    - przesuniesz stan portu do akumulatora,
    - porównasz z maską z ustawionym bitem 2
    - jeśli zero ominiesz następną instrukcję
    - (jeśli 1) ustawienie bitu 7
    - omin instrukcję
    - kasuj bit 7
    ---------
    mozna i prościej.

    A w PLC zapis będzie taki
    |-------| I3 |--------( Q8 )----|
    czyli zwykły włącznik żarówy w żyrandolu.
    Zwierny styk I3 podaje zasilanie na Q8.


    Teraz odpowiedź na Twoje pytanie: nie musisz pisac procedur do zdarzeń chociaż możesz. Wyobraź sobie, że PLC to taka mała skrzynka rozdzielcza w Twojej piwnicy, zapakowana przekaxnikami, czasówkami i czyms tam jeszcze.
    Program pisany dla PLC opisuje połaczenia/zależności pomiędzy wejściami i wyjściami. W wielu PLC masz tez do dyspozycji komparatory, liczniki, rejestry przesówne i inne gadżety. A Twoim zadaniem jest opisac "układ połączeń elektrycznych" pomiędzy tymi komponentami. Tak jakbyś budował układ elektroniczny.

    MOJA PROPOZYCJA:
    Jako, że jesteś mocno wtopiony w ASM(wiem co to znaczy bo sam w tym pisałem i czasami dziergam) to polecam spróbowac LOGO SOFT COMFORT. To jest aplikacja do "pisania" programów pod PLC firmy Siemens ale dla linii LOGO!
    Ma ona pewna zaletę, można tworzyć aplikację w języku FBD - budujesz schemat elektryczny z bramek i zatrzasków.
    Jak się z tym oswoich to łatwiej będzie opanować kolejne.
    Sprawdziłęm to na sobie.
  • #11
    micha_
    Level 11  
    zachowanie takie oznacza przychamowanie systemu,
    w momencie jak sprawdze caly 8 bitowy port wejscia ,zkopiuje go do pamieci i pamiec bede krok po kroku porownywac z 8 bitowym operdantem ktorego za karzdym razem przesune w lewo to mam w jedej funkcji:
    -kontrole wejscia (dane rownolegle)
    -ustawienie pamieci (dane seryjne)
  • #12
    arkady_pl
    Level 24  
    W moim przykładzie chciałem zilustrować jak głęboko schodzisz w swoim rozumowaniu. Nie schodź tak głęboko. Wejdź na troszkę wyższy poziom abstrakcji. Jedyne powiązanie na poziomie sprzętu to I/O. Tak jak pisałem, PLC to taka szafa z przekaźnikami, które musisz połączyć. I ten język nie do końca odwzorowuje ASM. Jest łudząco podobny ale te różnice powodują Twoje pytania.

    Pamiętaj, nie piszesz oprogramowania do warstwy sprzętowej. Operujesz na pewnego rodzaju interpreterze poleceń, który udostępnia tobie wiele różnych "makr".
  • #13
    micha_
    Level 11  
    no miejmy nadzieje ze powoli rozumiem o co tu chodzi
  • #14
    arkady_pl
    Level 24  
    Micha_, czy na początek musisz koniecznie dziergać kod?
    Może zacznij od języków graficznych - łatwiej będzie pojąć sedno istnienia PLC. Potem zejdź na poziom kodu.

    Zerknij
    PLC SIM lub link poziom wyżej

    lub trzymając się linii Siemens'a Link

    Zerknij tez na inny wątek - może się przdać Link
    Tam też znajduja się zrzuty ekranu symulatora i pliczki do pobrania.
  • #15
    micha_
    Level 11  
    s7-300 stoi na stole,pierwsze male operacje na wejsciach / wyjsciach dzialaja bez problemu,teraz jeszcze detale i bedzie dobze!!!!
    jezeli sys i ta przeleci wrzystko to dlaczego pisze sie funkcje czy bloki( tylko po to zeby bylo ladnie i czysto czy ma to cos wspulnego z funkcjonalnoscia wielokrotnego wywolania bloku danych
    pozdrowienia
  • #16
    arkady_pl
    Level 24  
    micha_ wrote:
    s7-300 stoi na stole,pierwsze male operacje na wejsciach / wyjsciach dzialaja bez problemu,teraz jeszcze detale i bedzie dobze!!!!
    jezeli sys i ta przeleci wrzystko to dlaczego pisze sie funkcje czy bloki( tylko po to zeby bylo ladnie i czysto czy ma to cos wspulnego z funkcjonalnoscia wielokrotnego wywolania bloku danych
    pozdrowienia

    Raczej jest to kwestia optymalizacji "kodu".
    Sam pisząc w ASM napewno wiele razy tworzyłeś bloki "funkcje" do wielokrotnego użycia z różnymi danymi zdejmowanymi ze stosu.
    Tutaj też, jeśli w wielu miejscach układu masz zastosować ten sam układ styków i cewek, to robisz "makro". Dzięki temu sterownik nie musi pamiętać 500 linii a tylko np. 120. Czyli sterownik może mieć mniej pamięci, czyli być tańszy.