Pavel Pelán Dotazy k HW 22. 6. 2021 20:28 23. 6. 2021 15:41

Dobrý den,

v následujících otázkách uvažuji pouze zápis dat z PLC do souboru pomocí fce FileWrite, jde mě o to, jak správně zapisovat, aby nedošlo k poškození paměti.

Jaký je rozdíl mezi zápisem na USB Flash disk, SD kartu a interní disk PLC, z hlediska jejich životnosti?
Jakým způsobem je řešen řadič u zápisu na USB Flash disk?
Jaký je přibližný počet zápisů na interní disk PLC(CP-2005 /128MB)?
Jaký je přibližný počet zápisů na SD kartu(8GB)?
Liší se nějak podstatně počty zápisů na SD kartu u 1 a 2 řady Foxtrotu?

Co konkrétně určí jeden cyklus zápisu do flash? 
Pokud provedu FileOpen, 5x FileWrite(asynchronně v dalších cyklech PLC), FileClose, provedl jsem jeden nebo pět cyklů zápisu?
Pokud budu cyklicky přepisovat jedinou proměnnou v souboru a pokaždé provedu FileClose, vydrží "nezaplněná" 8GB SD karta dvakrát více zápisů než než 4GB?

Děkuji za odpověď.

 

Odpovědi 3

Luboš Urban 23. 6. 2021 13:43

Počet zápisů (resp. smazání) jedné buňky se může dost lišit v závislosti na použité technologii paměti. Např. pro USB disky se udává asi 3000 až 5000 smazání, ale existují i paměti, které snesou 100000 cyklů. Pro SD karty se většinou uvádí 100000 zápisů. Podobně je na tom interní disk. Zápisem se myslí změna hodnoty v jedné buňce (buňku je třeba nejprve smazat a pak zapsat novou hodnotu). Potíž je v tom, že výrobce potažmo dodavatel USB Flash / SD karty počet zápisů většinou neuvádí.

Všechna uvedená média (USB/SD/Flash disk) jsou v PLC použitá jako diskové zařízení, takže dalším důležitým parametrem je typ souborového systému. Ten totiž určuje, jak se budou vytěžovat (opakovaně používat) jednotlivé buňky a tedy jakou důležitost bude mít parametr "počet zápisů do jedné buňky". Z tohoto pohledu je na tom nejhůře souborový systém FAT (FAT16/FAT32). Je historicky nejstarší, takže tam dochází k přetěžování některých sektorů při opakovaném zápisu do stejného souboru. Zároveň je implementačně nejjednodušší, takže jak USB Flash tak SD karty jsou obvykle předformátovány na FAT už od výrobce. Pak existují modernější souborové systémy, které se snaží vytěžovat paměť rovnoměrně i v případě, že dlouhodobě pracujeme se stejným souborem. Většinou se jedná o žurnálové souborové systémy, které vedou "žurnál" změn souboru na disku (zjednodušeně si to lze představit tak, že při změně v souboru se nepřepíše předchozí hodnota v nějaké buňce, ale poznamená se informace o tom, která buňka se změnila a tato informace se zapíše do volného místa na disku + v celém souborovém systému běží trvale algoritmy, které optimalizují využití disku slučováním změn ze žurnálu). Žurnálové souborové systémy jsou pak navíc odolné proti výpadku napájení při zápisu do disku - výpadek nevede k porušení souborového systému (jako u FAT) ale pouze ke ztrátě naposledy zapisované informace (tuto situaci pak dále komplikuje disková cache).

Pro počet zápisů do jednoho sektoru v systému FAT je nejvíc kritická operace FileClose(), protože tam dojde k přepisu sektoru, ve kterém je uvedena délka souboru.
Takže pokud máme SD kartu s FAT a budeme cyklicky přepisovat jedinou proměnnou v souboru a pokaždé provedeme FileClose, vydrží "nezaplněná" 8GB SD karta stejný počet zápisů jako 4GB. Ale pokud to bude SD karta se systémem ext4, pak vydrží "nezaplněná" 8GB SD karta dvakrát více zápisů než než 4GB

Takže konkrétně:
Foxtrot 1 umí pouze SD/SDHC karty se systémem FAT.
Foxtrot 2 se přizpůsobí podle toho, jak je dané medium naformátované. Interní disk používá žurnálový souborový systém UBI FS, který byl vyvinutý speciálně pro paměti FLASH. Pokud do Foxtrot 2 dáme prázdnou SD kartu se systémem FAT, tak jí Foxtrot 2 při prvním zapnutí napájení automaticky naformátuje na ext4, což je žurnálový souborový systém vhodný pro SD karty. Pokud na vložené SD kartě s FAT systémem už nějaká data jsou, pak Foxtrot 2 nemá jinou možnost, než používat FAT se všemi negativy, které to přináší. Doporučené je pro SD karty použít ext4. A konečně pro USB Flash disk použije Foxtrot 2 vždy souborový systém podle USB disku. Tam se nepředpokládá, že by USB disk byl zasunut trvale a pro krátkodobé použití nehraje typ souborového systému tak velkou roli.

Na závěr (pro Foxtrot 2):
Doporučuje se použít SD karty se souborovým systémem ext4, nejlépe karty deklarované jako průmyslové (např. APACER  8GB SD3.0 MLC -40...85°C viz https://www.soselectronic.cz/products/apacer/ap-msd08gia-1htm-86-mdg10-8c0cb-226615). Co se týká operací se soubory, pak je vhodné zavírat soubor až ve chvíli, kdy jsou do souboru zapsaná všechna data.

Pavel Pelán 23. 6. 2021 14:48

Kolik počtů zápisů tedy přibližně vydrží interní disk PLC CP-2005 a co se stane s PLC pokud  tuhle paměť, překročením počtu zápisu, poškodím ?

Luboš Urban 23. 6. 2021 15:41

Jak bylo psáno, interní flash disk vydrží stejně jako SDHC karty přibližně 100 000 zápisů do jednoho místa. Při použití žurnálovacího souborového systému se zapisuje pokaždé do jiného místa a systém se snaží paměť zatěžovat rovnoměrně. Pokud dojde k poškození paměťové buňky, systém označí sektor jako poškozený a dále se nepoužívá. Snižuje se tím kapacita disku. Ve chvíli, kdy by došlo k poškození celé paměti, Foxtrot nebude moci fungovat, protože na interním flash disku je celý systém.

Vaše odpověď

Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.