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.

CPU 313 - Bloki danych DB

jaceksz78 03 Apr 2013 12:27 2262 5
SterControl
  • #1
    jaceksz78
    Level 10  
    Witam
    W pracy mam taki przypadek że po zaniku zasilania posypał się program w sterowniku Siemens CPU 313 pomimo posiadania karty pamięci. Niestety firma niemiecka, która wykonywała aplikację jest nieosiągalna i jesteśmy zmuszeni sami sobie radzić z problemem. Nie pozostawili ani kodów źródłowych ani nie zrobili backupów. CPU współpracuje z systemem scada Ifix, panelem dotykowym siemens, oraz wymienia kilka zmiennych z innym sterownikiem Siemens po sieci industrial ethernet. Aplikacja jest bardzo prosta i obsługuje kilka urządzeń na zasadzie włącz/wyłącz. Odczytałem program z CPU i okazało się że kod sterujący który można było zawrzeć w kilkudziesięciu linijkach jest ogromny i wygląda na zlepek kilku aplikacji. Najłatwiej byłoby napisać wszystko od nowa niż się w to wszystko wgryzać. Z systemu scada udało się wyciągnąć adresy zmiennych po jakich się komunikują, natomiast panel też trzeba pisać od nowa. Dlatego pojawiło się parę pytań
    1. W starym programie jest stworzonych bardzo dużo bloków DB nawet po kilkaset bajtów a wykorzystywane jest w rzeczywistości kilka bajtów. I tak np jest DB jako stan przycisków ze scada, drugi jako stan urządzeń do scada, trzeci jako alarmy do scada, czwarty jako nastawy urządzeń, kilka bloków DB do komunikacji z panelem, kilka do obliczeń jako komórki pamięci itp. Czy można te kilka bloków wrzucić do jednego, lub dwóch, czy jest jakaś zasada lub dobre praktyki że w jednym bloku nie mogą być dane do zapisu drugie do odczytu itp.
    2. Czy z jednego bloku danych może jednocześnie korzystać system scada i HMI, czy należy to rozbijać na dwa niezależne DB
    3. Jak otwieram DB instance można w jakiś sposób odczytać z jakim FB jest powiązany?. Przy otwieraniu (program zgrany z PLC) takiego DB jest komunikat o typie DB i wersji ale nie mogę się doszukać powiązań. Czy to tylko można zrobić analizując kod programu? Program był pisany w step 7 5.2 ja mam 5.4.

    Większe doświadczenie mam ze sterownikami GeFanuc. W siemensie robiłem tylko aplikacje dla zabawy
  • SterControl
  • #2
    ILSSystem
    Automation specialist
    jaceksz78 wrote:
    Witam
    W pracy mam taki przypadek że po zaniku zasilania posypał się program w sterowniku Siemens CPU 313 pomimo posiadania karty pamięci.

    Co rozumie Pan poprzez "posypanie programu" ? Proszę o podanie nr seryjnego (zamówieniowego) PLC.
    Quote:
    Odczytałem program z CPU i okazało się że kod sterujący który można było zawrzeć w kilkudziesięciu linijkach jest ogromny i wygląda na zlepek kilku aplikacji.

    Oznacza, że program jest w sterowniku (utrata zasilania nie spowodowała utraty programu na karcie, co najwyżej reset parametrów.
    Quote:
    Przy otwieraniu (program zgrany z PLC) takiego DB jest komunikat o typie DB i wersji ale nie mogę się doszukać powiązań. Czy to tylko można zrobić analizując kod programu?

    View -> Details

    Co do Databloków to zazwyczaj dane tam gromadzone są w jakiś sposób sortowany. Jeden DB posiada np analogi a drugi dane do HMI itp. Moim zdaniem im więcej tym lepiej ... choć bez przesady.
    Pozdrawiam
  • SterControl
  • #3
    jaceksz78
    Level 10  
    "Posypanie się programu", to trochę źle ubrałem w słowa. Tak właściwie to utracone zostały dane, które nie były zdefiniowane w pozycji Initial Value tylko w Actual Value czy to z racji wykonanych obliczeń czy ustawione na etapie testowania. Tak czy inaczej Kod sterujący+dane tworzą spójną całość. Jeśli coś tracimy całość traci swoją funkcjonalność. Najgorsze jest to że przeciętny użytkownik takiej aplikacji nie jest w stanie odtworzyć tych ustawień i nie mając pod ręką programisty zakład za 100 milionów euro staje. Na to wychodzi że aplikacja tak do końca nie była dobrze napisana.
    Co do CPU którego problem dotyczy to jego nr seryjny 6ES7 313-5BF03-0AB0 V2.6. Identyczny problem mieliśmy na dwóch cpu 315 2DP 6ES7 315-AG10-0AB0 V2.6. Jednego odtworzyła firma pisząca aplikację na tę część linii łącząc się zdalnie, drugiego zleciliśmy zewnętrznej firmie która już zaczęła wszystko pisać od nowa, gdyż to ten sam problem i przyczyny co z CPU 313 (brak kontaktu z firmą, brak kopii i oryginalnego programu). Dzięki pomysłowości pracowników brak funkcjonalności sterownika sterowanie tymczasowo zostało zastąpione czasówkami, przekaźnikami, potencjometrami (falowniki)
    Jestem odpowiedzialny za utrzymanie ruchu na zakładzie i chciałbym poznać lepiej swojego przeciwnika, a dlatego że aplikacja na CPU 313 jest prosta i w razie jak coś się nie uda nie będzie to miało większego znaczenia na proces produkcyjny wiec chcę na nim poćwiczyć. Troszkę poszukam w internecie troszkę się popytam i się zrobi.
    Czy ktoś miał kiedyś takie problemy że przy zaniku napięcia sterownik stracił wartości Actual Value, czy to jest dolegliwość siemensa mimo zastosowania drogich kart pamięci. Jeden przypadek to może byłby zbieg okoliczności ale 3 w krótkim odstępie czasu to co się dzieje nie tak. Zakład ma dopiero 4 lata
  • #4
    ElMapet
    Level 20  
    "Czy ktoś miał kiedyś takie problemy że przy zaniku napięcia sterownik stracił wartości Actual Value, czy to jest dolegliwość siemensa mimo zastosowania drogich kart pamięci. Jeden przypadek to może byłby zbieg okoliczności ale 3 w krótkim odstępie czasu to co się dzieje nie tak."

    gdyby po uruchomieniu nie było programu to mógłbyś zwalić winę na S7-300,
    w tym przypadku to wasza błąd spowodował utratę danych
  • #5
    Rkarcz
    Automation specialist
    jaceksz78 wrote:
    Czy ktoś miał kiedyś takie problemy że przy zaniku napięcia sterownik stracił wartości Actual Value, czy to jest dolegliwość siemensa mimo zastosowania drogich kart pamięci. Jeden przypadek to może byłby zbieg okoliczności ale 3 w krótkim odstępie czasu to co się dzieje nie tak. Zakład ma dopiero 4 lata


    Na przestrzeni 10 lat 1 przypadek resetowania ustawień do wartości inicjalizujących po restarcie w wyniku zaniku zasilania. Reklamowałem całość i wymieniono całość - PLC i kartę pamięci. Patrząc na fw jakie masz w tym CPU to gwarancji na to raczej nie masz. Siemens daje max. 3 lata gwarancji - ale to definiuje się przy zamówieniu i jest specjalna adnotacja na fakturze.
    Sprawdź, czy po takiej utracie danych masz w buforze diagnostycznym "Memory reset request". Jeśli tak, to zacznij od karty - kilkadziesiąt euro. Jeśli nie pomoże, pozostaje wymiana CPU. Nic mądrzejszego nie wymyślisz. Bo nawet wpisanie wartości actual do initial i tak nic ci nie da. Skoro operatorzy ciągle coś zmieniają, to i tak zawsze coś będzie do przestawiania w nastawach procesu.

    U mnie bufor wyglądał tak:

    Event 27 of 113: Event ID 16# 430E
    Memory reset executed
    Previous operating mode: STOP (memory reset)
    Requested operating mode: STOP (own initialization)
    Incoming event
    12:10:16.030 PM 02/08/2013
    (Coding: 16# 430E FF23 0000 0000 0000 0000)


    Event 28 of 113: Event ID 16# 4546
    STOP caused by CPU memory management
    Previous operating mode: STOP (own initialization)
    Requested operating mode: STOP (memory reset)
    Internal error, Incoming event
    12:10:01.683 PM 02/08/2013
    (Coding: 16# 4546 FF32 C0C0 8FFE 0000 0000)


    Event 29 of 113: Event ID 16# 4300
    Power on backed up
    Previous operating mode: No voltage
    Requested operating mode: STOP (own initialization)
    Incoming event
    12:10:01.683 PM 02/08/2013
    (Coding: 16# 4300 FFF3 0000 0000 0000 0000)


    Event 30 of 113: Event ID 16# 6522
    Illegal memory submodule: replace submodule and reset memory

    Operating mode: STOP (own initialization)
    Internal error, Incoming event
    12:10:01.683 PM 02/08/2013
    (Coding: 16# 6522 FF03 0000 0001 0001 8FFE)


    Event 31 of 113: Event ID 16# 4580
    STOP: backup buffer contents inconsistent (no transition to RUN)
    Previous operating mode: No voltage
    Requested operating mode: STOP (memory reset)
    Internal error, Incoming event
    12:09:49.064 PM 02/08/2013
    (Coding: 16# 4580 FFF2 0000 0002 0000 0000)


    Event 32 of 113: Event ID 16# 494E
    Power failure
    Previous operating mode: STOP (memory reset)
    Requested operating mode: No voltage
    External error, Incoming event
    12:09:49.061 PM 02/08/2013
    (Coding: 16# 494E FF2F C000 0000 0000 0000)
  • #6
    jaceksz78
    Level 10  
    Udało się w końcu złapać programistę, który robił te pechowe aplikacje. Wymienił 2 karty wgrał na nowo soft. Na szybkiego co zdążył przeanalizować to zmianie uległo kilka flag w DB (powód nie wyjaśniony) co spowodowało że aplikacja przestała działać prawidłowo. Sam stwierdził że nie warto dla takiej usterki jeździć 2 tys km i może uda się od niego wyciągnąć kod źródłowy (tylko jego szef musi wyrazić zgodę)
    A jak już będę miał źródło to już łatwo to wszystko będzie rozszyfrować
    Dzięki