Vzorové programy 30.06.2021 10:04 30.06.2021 10:04

Příklad Example_Load&Save_VAR ukazuje, jak ukládat resp. načítat hodnoty {PUBLIC} proměnných z PLC programu.

Pro uložení hodnot proměnných do souboru slouží funkční blok fbSavePubVar().

Pro načtení hodnot proměnných ze souboru slouží funkční blok fbLoadPubVar().

V centrální jednotce Foxtrotu řady CP-1xxx je třeba FW v9.7 nebo vyšší. Foxtroty řady CP-2xxx podporují funkčnost ve všech verzích. Prostředí Mosaic musí být verze 2016.2 nebo vyšší.

Princip činnosti

Příklad využívá vlatnosti prostředí Mosaic, které každou {PUBLIC} proměnnou zařadí do *.pub souboru. Tento soubor lze automaticky posílat do Foxtrotu jako součást vysílaného kódu (viz Manažer projektu | Exportní soubory, kde musí být zatrženo "Generovat assembler (soubor .pub)", "Automaticky posílat novější soubory do PLC" a "Posílat soubor assembler (.pub)").

Funkční blok fbSavePubVar() vybírá z .pub souboru jména proměnných, načítá jejich aktuální hodnotu pomocí funkce GetVarValueByName() a poté uloží jméno proměnné a její hodnotu do souboru na SD kartu. 

Formát uložení odpovídá .csv souboru, položky jsou oddělené znakem ";" (středník). Čárku nelze použít kvůli vícerozměrným polím kde je čárka součástí názvu proměnné. Řádky v souboru jsou zakončeny znaky CR a LF.

Funkční blok fbLoadPubVar() slouží k obnovení hodnot proměnných, které byly předtím uloženy blokem fbSavePubVar().

Proměnné, které mají být tímto způsobem zálohované, musí mít v definici uvedenou direktivu {PUBLIC} a dále direktivu {OPEN_UP}. Direktiva {PUBLIC}  působí zařazení proměnné do seznamu v .pub souboru.

Direktiva {OPEN_UP} umožní pracovat s proměnnými přes jejich jméno (nezávisle na umístění v paměti PLC). Toho pak využívají funkce GetVarValueByName() a SetVarValueByName(). Uvedený princip zálohování hodnot proměnných tedy není závislý na umístění proměnných v paměti. Jinými slovy záleží pouze na názvech proměnných. Pokud se nezmění název proměnné, tak bude možné obnovit její hodnotu (dokonce i v případě, že se mezi uložením a obnovením změnil datový typ proměnné).

Příklad deklarací proměnných pro automatickou zálohu:

VAR_GLOBAL
  g_jedna  {PUBLIC} {OPEN_UP} : INT;
  g_dva    {PUBLIC} {OPEN_UP} : REAL;
  g_str    {PUBLIC} {OPEN_UP} : T_MY_STRUCT;
  g_arr    {PUBLIC} {OPEN_UP} : ARRAY[1..5] OF INT;
  g_arrStr {PUBLIC} {OPEN_UP} : ARRAY[1..5] OF T_MY_STRUCT;
END_VAR


Ovládání příkladu

Příklad se ovládá nastavením následujících proměnných:

  rqSample   : BOOL;     // nastavit hodnoty proměnných (pro kontrolu ulozeni)
  rqSave     : BOOL;     // ulozit .pub promenne do zalohy (soubor VarList.var)
  rqLoad     : BOOL;     // nacist promenne z ulozene zalohy

Takže nejprve je třeba nastavit rqSample na TRUE, což naplní kontrolní hodnoty do ukládaných proměnných. Pak nastavíme rqSave na TRUE, což způsobí vygenerování záložního souboru VarList.var. Pak můžeme zvolit HALT a RUN se studeným startem, což způsobí vynulování proměnných. A pak nastavíme rqLoad na TRUE a tím se načtou zálohované hodnoty ze souboru VarList.var.

Výhody

Ukládání probíhá automaticky na základě .pub souboru, při změnách ukládaných proměnných není třeba upravovat kód pro ukládání resp. načítání. Ukládání je paměťově nezávislé, tj. mapování proměnných nehraje roli. Lze tak obnovovat hodnoty proměnných i v případě nových verzí programu PLC, kde se mapování může výrazně lišit. 

Pro obnovu hodnot lze dokonce použít zálohu vytvořenou na jiném PLC systému (pokud obsahuje požadované proměnné).

Nevýhody

Příklad ukládá všechny proměnné označené direktivami {PUBLIC} a {OPEN_UP}. To někdy může vadit.

Rizika

Ukládání resp. načítání probíhá v několika cyklech PLC (aby se omezila časová náročnost). Kolik proměnných se zpracuje v jednom cyklu PLC udává vstupní proměnná maxItems. To znamená, že uložené hodnoty nemusí být konzistentní, což může být problém zejména při ukládání hodnot polí resp. struktur.
Také zápis do souboru probíhá v několika cyklech. Z tohoto pohledu je třeba počítat s tím, že může dojít k výpadku napájení PLC během zápisu zálohy a nedojde k uložení souboru. Je tedy vhodné ukládat zálohu střídavě do dvou souborů, aby byl alespoň jeden soubor k dispozi pro obnovu dat.

Poznámka

Při ladění se simulátorem PLC Foxtrot řady CP-1xxx v Mosaicu je třeba překopírovat ručně soubor .pub z adresáře SendRoot do adresáře ROOT (ten používá simulátor místo SD karty). Do adresáře ROOT se pak také ukládá záloha. Pro simulátor řady CP-2xxx není tato operace nutná.

Připojené dokumenty