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.

Step 7 bloki DB - Zmiana wartości w bloku

30 Mar 2013 19:43 6756 17
  • Poziom 9  
    Witam!

    Wjaki sposób zmieniać wartości w bloku DB w step 7. Mam ogranizenie co do wartości (długość elementu) czy można zmienić initial value poprzez nadanie nowej wartości?
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • SterControlSterControl
  • Poziom 18  
    Sprecyzuj pytanie bo szczerze nie wiem w czym problem :).

    W bloku DB1 masz np. zmienną DLUGOSC (int)

    no to jeśli piszesz w STL to lecisz

    L 100
    T DB1.dlugosc

    Jak w drabince to wykorzystujesz bloczek MOVE. O to chodzi?!
  • SterControlSterControl
  • Poziom 9  
    W programie widzę że wartość zadawana z panela to DB101.DBD546. W tym samym bloku widzę że max wartość to DB101.DBD564 - real. Nie mogę znalesć max w innym miejscu programu jak tylko w DB. w bloku jak jestem nie podłączony mam oczywiście 0.00000e+000. CZy wartość max musi być gdzieś zapisana w programie czy może być tylko na stałe w bloku DB, jeżeli w bloku DB to dlaczego nie widzę tej wartości (same zera jak nie jestem podłączony)
  • Poziom 9  
    co znaczy zmieniać poprzez podgląd zmiennych?
  • Poziom 13  
    mechamak napisał:
    czy można zmienić initial value poprzez nadanie nowej wartości


    Możesz zmienić, ale Ciebie powinna interesować wartość Actual value. I nie zmieniaj jej bezpośrednio w bloku DB, tylko tak jak radzili koledzy: poprzez Modify variable, bądź według wskazówki kolegi Ravender.
    Możesz też udogodnić sobie sprawę i zadawać wartość max z panela, tak samo jak masz zadawaną długość.
    Jeśli zmienisz bezpośrednio w DB, będziesz musiał go przeładować, a tym samym nadpiszesz pozostałe wartości aktualne w DB.
  • Poziom 18  
    Generalnie jeśli chodzi o bloki DB w STEP7 to jest to tak zrobione (bez wdawania się w jakieś głębsze filozofie), że masz Initial value czyli wartość domyślną ładowaną chyba podczas wgrywania programu.

    Masz też Actual value czyli wartość aktualną. Możesz ją podejrzeć gdy jesteś podpięty do sterownika, otworzysz blok DB i naciśniesz sobie podgląd programu online (te okularki na górze).

    Operacje L i Move umieszczają wartość w Actual Value. To co wysyłasz z panela też leci do Actual Value.

    Należy jeszcze wspomnieć (nie wiem czemu) ale np. odczytując dane z czytnika RS i ładując je do bloku DB (do zmiennej string) nie widać tego łańcucha w Actual Value podczas podglądu mimo, że on tam jest. Ja radzę sobie z tym tak, że mam zainstalowany serwer Kepware OPC i w razie potrzeby podłączam się do sterownika. Ale to już taka bardziej zaawansowana uwaga. Być może można to jakoś obejść.. nie wiem. Nie interesowałem się tym zbytnio
  • Specjalista Automatyk
    Ravender napisał:
    Generalnie jeśli chodzi o bloki DB w STEP7 to jest to tak zrobione (bez wdawania się w jakieś głębsze filozofie), że masz Initial value czyli wartość domyślną ładowaną chyba podczas wgrywania programu.

    Masz też Actual value czyli wartość aktualną. Możesz ją podejrzeć gdy jesteś podpięty do sterownika, otworzysz blok DB i naciśniesz sobie podgląd programu online (te okularki na górze).


    No nie do końca. Initial value jest ładowana online do actual value przy Cold Restart CPU, a także przez użycie komendy Initialize data Block w zakładce bodajże Edit, ale wtedy jest to tryb offline. Zawsze można tak "zinicjalizowane" DB załadować i wtedy wartości te będą Actual w trybie online.

    Latwiej jest to ogarnąć przy DB generowanym z FB czyli DB instance. Jego przewagą jest to, że można zmienić i załadować tylko jeden parametr. Wadą na pewno to, że inicjalizacja jest przy każdej zmianie struktury zmiennych IN, OUT, IN_OUT, STAT.
  • Poziom 9  
    Znalazłem w programie wartość max, chcę ją zmienić ale mam w bloku FC oznaczenie #wartość max. W jaki sposób nadawana jest wartość ograniczenia jeżeli w panelu brak ograniczenia
  • Specjalista Automatyk
    Wartość nastawiona większa niż wartość maksymalna, to załaduj wartość maksymalną jako nastawioną. 😃
  • Poziom 13  
    Tutaj bardziej chodzi o zmienną lokalną

    Prawdopodobnie masz też gdzieś w programie wywołany blok FC, w którym znalazłeś zmienną #wartość max

    W tym właśnie wywołanym bloku jedna ze zmienych IN powinna być przypisana do #wartość max, a dokładnie DB101.DBD564 o którym to pisałeś wcześniej.

    Nie ma się co rozwodzić na różnicami między initial i actual value, bo kolega próbuje tylko zmienić jedną wartość w DB.
    Gdyby chciał poznać róźnice bądź nauczyć się jak działą DB, to z pewnością przeczytałby chociażby Manuala :D
  • Poziom 15  
    Witam

    Ponieważ temat dość często pojawia się na forum, poniżej w kilku krokach wyjaśnię proces inicjalizowania wartości w blokach danych. Instrukcja dotyczy globalnych bloków DB. Załóżmy, że chcemy w bloku danych ustawić stałe wartości parametrów, które będą wykorzystywane przez program sterowania.

    Krok 1. Należy w bloku DB, w kolumnie Initial Value zdefiniować wartości zmiennych

    Step 7 bloki DB - Zmiana wartości w bloku

    Krok 2. Należy w bloku DB przełączyć sie na widok danych Data View, w widoku tym widoczne będą kolumny Initial Value oraz Actual value

    Step 7 bloki DB - Zmiana wartości w bloku

    Krok 3. Inicjalizacja bloku DB polega na przepisaniu wartości z kolumny Initial Value do kolumny Actual value. Należy wykorzystać polecenie Initialize Data Block

    Step 7 bloki DB - Zmiana wartości w bloku

    Krok 4. Blok DB należy zapisać i załadować do CPU

    Step 7 bloki DB - Zmiana wartości w bloku

    Należy pamiętać, że w CPU w programie sterowania istotna jest kolumna Actual value i wartości z tej kolumny przechowywane są w pamięci CPU. W pamięci ładowania LOAD przechowywane są wartości załadowane z programatora, które następnie są wczytywane do pamięci roboczej WORK i tam mogą być modyfikowane przez program sterowania, panel operatorski, wizualizację czy też tablicę VAT. Wykonanie kasowania pamięci (memory reset), umożliwia wyczyszczenie pamięci roboczej WORK w tym wartości w DB i wczytanie wartości początkowych pochodzących z pamięci ładowania LOAD.

    Mam nadzieję, że poniższe informacje będą przydatne.

    Pozdrawiam
  • Poziom 24  
    To powinien kazdy programista siemensa znac :)

    Duzo bardziej przydatniejszą informacja jest zgrywanie bloku DB ze sterownika do projektu. Oczywiście wgrywając bloki zawsze należy pamiętac o initialize data block gdy zmienilismy wartości initial. Pamiętajmy przy tym iż blok danych DB może zapamietywać równiez ustawienia np nastawy falownika i nie zawsze wartosci initial są wartością nas interesującą, podczas pracy nastawy mogły ulec zmianie chociazby poprzez panel zatem zawsze pamiętajmy przed modyfikacja o zczytaniu wartości actual a dopiero póżniej modyfikacji, zmian czy to innej edycji w interesujacym bloku DB.
  • Specjalista Automatyk
    piotr_krak napisał:
    To powinien kazdy programista siemensa znac :)


    Pytanie, gdzie wtedy tacy jak my byśmy błyszczeli wiedzą "tajemną"? :-)

    piotr_krak napisał:
    Duzo bardziej przydatniejszą informacja jest zgrywanie bloku DB ze sterownika do projektu.


    Pełna zgoda, z małym dodatkiem. Przed zgrywaniem porównajmy, czy program na komputerze mamy aktualny względem tego w sterowniku. Jeśli nie, to nadpisanie DB jest pełne, tzn. nadpisuje też symbolikę bloku danych. Na taką jaką widzimy w gołym upload'ie.
  • Poziom 10  
    Przepraszam, że odgrzewam kotleta ale ma dwa pytania:

    1. Do czego używane są wartości widoczne w kolumnie actual w data view (offline)?
    Rozumiem, że są to wartości zapisane w PLC.

    2. W jakim przypadku wartości actual z data view (offline) są przepisywane do actual data view (online)?

    Miałem taki przypadek, że po jakimś czasie wartośći actual (online) zostały nadpisane przez actual (offline). Pytanie co ja mogłem zrobić nie tak, że sie coś takiego stało. Ewentulanie co mogło sie stać w trakcie mojej nie obecności. Myslałem ze może ktoś zresetował pamieć PLC ale dane zostąły przepisany tylko w tym jednym DB. Reszta DB miała dane actual (online) w porzadku (różne od actual online).

    sterownik
    CPU 317-2 PN/DP
    6ES7 317-2EK13-0AB0 V2.6
  • Poziom 25  
    vulture30 napisał:
    1. Do czego używane są wartości widoczne w kolumnie actual w data view (offline)?
    Rozumiem, że są to wartości zapisane w PLC.

    Actual value to wartość zmiennej w sterowniku w danym momencie. To do czego są używane zależy co poeta(programista) miał na myśli. Sprecyzuj pytanie bo myślę że taka odpowiedź Cię nie zadowala.

    Cytat:
    2. W jakim przypadku wartości actual z data view (offline) są przepisywane do actual data view (online)?

    Wartości te są "przepisywane" do sterownika w momencie wgrania DB do sterownika.

    Cytat:
    Miałem taki przypadek, że po jakimś czasie wartośći actual (online) zostały nadpisane przez actual (offline). Pytanie co ja mogłem zrobić nie tak, że sie coś takiego stało. Ewentulanie co mogło sie stać w trakcie mojej nie obecności. Myslałem ze może ktoś zresetował pamieć PLC ale dane zostąły przepisany tylko w tym jednym DB. Reszta DB miała dane actual (online) w porzadku (różne od actual online).

    Wartość zmiennej w sterowniku może ulec zmianie zależnie od przeznaczenia tej zmiennej.
    Jeśli to wartość procesowa(np. pomiar poziomu) to będzie się zmieniać wraz ze zmianą tegoż poziomu, jeśli to wartość zadana dla regulatora to może się zmienić w wyniku działania operatora itp. itd. Różnica pomiędzy wartością online i offline nie jest niczym dziwnym jeśli ta wartość może się zmieniać w sterowniku.
  • Poziom 10  
    namok napisał:
    vulture30 napisał:
    1. Do czego używane są wartości widoczne w kolumnie actual w data view (offline)?
    Rozumiem, że są to wartości zapisane w PLC.

    Actual value to wartość zmiennej w sterowniku w danym momencie. To do czego są używane zależy co poeta(programista) miał na myśli. Sprecyzuj pytanie bo myślę że taka odpowiedź Cię nie zadowala.

    Cytat:
    2. W jakim przypadku wartości actual z data view (offline) są przepisywane do actual data view (online)?

    Wartości te są "przepisywane" do sterownika w momencie wgrania DB do sterownika.

    Cytat:
    Miałem taki przypadek, że po jakimś czasie wartośći actual (online) zostały nadpisane przez actual (offline). Pytanie co ja mogłem zrobić nie tak, że sie coś takiego stało. Ewentulanie co mogło sie stać w trakcie mojej nie obecności. Myslałem ze może ktoś zresetował pamieć PLC ale dane zostąły przepisany tylko w tym jednym DB. Reszta DB miała dane actual (online) w porzadku (różne od actual online).

    Wartość zmiennej w sterowniku może ulec zmianie zależnie od przeznaczenia tej zmiennej.
    Jeśli to wartość procesowa(np. pomiar poziomu) to będzie się zmieniać wraz ze zmianą tegoż poziomu, jeśli to wartość zadana dla regulatora to może się zmienić w wyniku działania operatora itp. itd. Różnica pomiędzy wartością online i offline nie jest niczym dziwnym jeśli ta wartość może się zmieniać w sterowniku.


    Odpowiedziałem mi na to pytanie w drugiej odpowiedzi :) Błędnie myslałem, że "initial" są wpisywane do sterownika w momencie wgrania DB. Z tego co teraz wiem to "initail" sa tylko jako takie notatki programisty, nie używane przez program nigdy (poza funkcją "initialize DB" ?)


    Generalnie szukałem przyczyny przepisania Acutal (offline) to actual (online). Skoro nie ma innego sposoóbu to ja lub ktoś musiał przypadkowo wysłac DB do sterownika.