Jste zde

Uložení a zálohování dat na MMC card v PLC Simatic S7 - praktická ukázka

Vyzkoušíme jak uložit data (čísla v datových blocích) na MMC kartu v PLC, aby se nikdy neztratila. Kopie celého datového bloku se dá totiž přes PLC funkci vytvořit na MMC kartě. Z té už jej žádnými běžnými postupy nedostanete a data máte stále k dispozici.

Na ukládání a hlavně zachování dat na MMC nebo-li Micro Memory Card, je obecně hodně dotazů na fóru, takže ukázka jak na to.

  • Nejprve je vhodné si připomenout, jak je paměť v PLC Simatic rozdělena. Tohle je poměrně nejsrozumitelnější ukázka rozdělení paměťového prostoru v PLC.
  • Pokud ale neprovedete nějaké úkony popsané dále a není nějaká odchylka v PLC programu, nedá se o data přijít, v PLC budou vždy k dispozici. Takže kdo nic neřeší a nemá s tím problém, tak pro něj budou následující řádky jen zajímavé. Taky jsem ale nevěděl úplně přesně jak zálohování funguje, takže stálo za to to zkusit.

MMC card PLC Simatic S7 

  • Pro náš pokus si v PLC s MMC (konkrétně CPU313) vytvoříme jeden datový blok DB31 pro pět proměnných, na kterém si nejprve ukážeme některé typické situace ztráty dat, a poté možnost jejich zálohování.

MMC card PLC Simatic S7 

  •  Deset bytes a 5x integer s definovanou inicializační hodnotou podle pořadí, to je náš DB31. 

MMC card PLC Simatic S7 

  • Většinou jsou po opětovném zapnutí v DB mnohokrát jiná čísla jen proto, že si je při startu nebo někde v programu přepisujeme. Takže my si do DB31 vložíme nová data přes VAT tabulku a příkaz "Modify value". Inicializační čísla 1-5 byla v DB po prvním překopírování do PLC.
  • Nyní po jakémkoliv zapnutí a vypnutí PLC, nebo přepsání HW konfigurace, budou stále v DB čísla 11 - 15, tedy naše uložená data. Tohle pro většinu aplikací stačí a pokud neprovedeme nějaký "Clear reset", nebo překopírování celého datového bloku, tak vše bude OK. Typický příklad je, že čísla v DB slouží jako parametry pro nějakou funkci (PID regulátor) a nastaví se například z OP panelu.

MMC card PLC Simatic S7 

  • Jestliže ale překopírujeme do PLC i náš datový blok, nebo třeba celý program, máme po datech. Máme-li v DB konečné nastavení, je vhodné jej překopírovat z PLC do PC, abychom jej měli s aktuálními daty.
  • Pokud se potom potřebujeme vrátit zpět k inicializačním hodnotám, musíme datový blok znovu inicializovat, a teprve poté jej přenést znovu do PLC.

MMC card PLC Simatic S7 

  • Stejný případ ztráty dat nastane, jestliže provedeme přes Step7 v menu "PLC" -> "Diagnostic/Setting" -> "Clear/Reset". Takže pozor na to.

MMC card PLC Simatic S7 

  • Formátování MMC karty. Někde jsem se dokonce dočetl, že je vhodné provádět vždy před přepsáním programu atp. Takže ne, jen uvedené situace a jejich signalizace vyžadují reset MMC. Formátování karty nemá s uvedeným příkladem ukládání datových bloků moc společného, ale nedávno se mě na to někdo vícekrát ptal, takže jen pro informaci, jak se to dělá.

MMC card PLC Simatic S7 

  • Teď se dostanem k záloze dat. Pomocí systémové funkce SFC82 vytvoříme na MMC datový blok s daty, které potřebujeme zachovat. Je nutno ale respektovat několik pravidel.
  • Celá funkce i následujíci funkce (SFC83,84) přistupují k datům na MMC kartě, což chvíli trvá, a nelze ji tedy vyvolávat v programu cyklicky, ale jen jednou. K tomu slouží M30.0 který se nastaví pouze v jednom cyklu na "H" a následně se vykoná funkce SFC82.
  • Datový blok se vygeneruje pod číslem v MW34, tedy jako DB32.
  • LOW_LIMIT určuje nejnižší číslo DB který se bude generovat po opětovném vyvolání funkce a UP_LIMIT nejvyšší číslo DB. To znamená, že je datový blok vygeneruje jen jednou a pokud už existuje vygeneruje se další v nastaveném rozsahu. Jestliže jsou čísla v limitech stejná, po opětovném spuštění funkce se už nic nestane, neboť jeden DB již je vygenerován. My si dvojnásobným spuštěním SFC82 vygenerujeme dva datové bloky, DB33 a DB34. Limitní hodnoty jsou v hexa, takže 20h=32.
  • COUT a ATTRIB jsou popsány detailně v helpu, pro pochopení funkce nejsou důležité.
  • SRCBLK klasický zápis zdroje dat, které se "vrhnou" do generovaného datového bloku. Tedy náš DB31 a první dvě proměnné.
  • Jediná možnost jak se nyní vygenerovaného datového bloku zbavit, je přepojit se on-line do CPU a normálně jej smazat, nebo použít systémovou funkci z PLC programu.

 

 

MMC card PLC Simatic S7 

  • Funkci SFC82 jsme spustili dvakrát pro vygenerování dvou datových bloků. Tohle je ukázka z on-line obsahu CPU, vidíme nové DB32 a DB33. Tady je můžeme, pokud potřebujeme, při odladění bloky vymazat. Stává se to, když se spleteme a spustíme SFC82 v nevhodný okamžik. 

MMC card PLC Simatic S7 

  • Pro zápis a čtení platí, že je nutné používat systémové funkce SFC83 (čtení) a SFC84 (zápis). Opět se volají jen jednou, stejně jako SFC82. Protože mám jen jedno "tlačítko" pro čtení/zápis (M30.2), tak pomocí M30.4 přepínáme jakou funkci budem volat.

MMC card PLC Simatic S7 

  • Po jednom vyvolání funkce SFC83 se překopírují do DB31 čtyři bytes z DB33.
  • Zápis do DB se provádí obdobným způsobem.

 

  • Data z těchto DB, DB32 a DB33 už nevymažete z PLC žádným běžným způsobem. Takže pokud potřebujete uchovat recepty nebo podobné věci, je tohle jedna z cest. Jen je nutno si řádně rozmyslet a naprogramovat přesný postup volání funkcí v PLC programu.

 

 

 

 

 

MMC card PLC Simatic S7 

 

Jaroslav Blažek


 

Doplňující odkazy k článku:

Částečný popis ukládání dat na MMC kartu, příklad: http://support.automation.siemens.com/WW/view/en/15261720 

Něco o kódu chyby při volání SFC82: http://support.automation.siemens.com/WW/view/en/16626212

Recepty a MMC karta, příklad: http://support.automation.siemens.com/WW/view/en/15261408

Další články, testy, recenze o PLC, Scada/HMI systémech, pohonech, profi-software a komponentech nejen pro průmyslové aplikace najdete na automatizace.HW.cz

Hodnocení článku: