====== Dokumentace k souborům ======
/*
===== Název modelu =====
Tento soubor obsahuje název modelu jednotky Unipi. Název je uložen v I2C EEPROM, ze které se vyčte při startu jednotky. **Soubor je pouze pro čtení.**
/proc/device-tree/unipi-model
*/
===== Obecné údaje =====
==== Název desky I/O ====
**Soubor je pouze pro čtení** a obsahuje název desky vstupů a výstupu jednotky Unipi, přičemž číslo v rozsahu [1-3] odpovídá sekci jednotky.
Vrátí chybu, pokud se jedná o desku s neznámým ID zařízení a není možné získat odpovídající název desky.
/* FIXME -> opravdu vrátí chybu, nebo bude prázdný?? */
/run/unipi/io_group[1-3]/sys_board_name
==== Sériové číslo desky I/O ====
**Soubor je pouze pro čtení** a obsahuje sériové číslo desky vstupů a výstupu jednotky Unipi, přičemž číslo v rozsahu [1-3] odpovídá sekci jednotky.
Pokud sériové číslo není platné, vrátí nulu.
/run/unipi/io_group[1-3]/sys_board_serial
==== Verze firmwaru ====
**Soubor je pouze pro čtení** a obsahuje označení verze firmwaru desky vstupů a výstupu jednotky Unipi, přičemž číslo v rozsahu [1-3] odpovídá sekci jednotky. Číslo verze firmwaru používá následující formát: [0-9,A-F].[0-9,A-F][0-9,A-F].
Pokud je číslo verze neplatné, vrátí chybu.
/* FIXME -> opravdu prátí chybu, nebo bude prázdný?? */
/run/unipi/io_group[1-3]/firmware_version
==== UART konfigurace ====
**Soubor umožňuje čtení i zápis** a obsahuje nastavení sériových portů dostupných na desce vstupů a výstupů, přičemž číslo v rozsahu [1-3] odpovídá sekci jednotky.
Pokud deska I/O neobsahuje sériový port, soubor je prázdný.
/run/unipi/io_group[1-3]/uart_config
==== UART délka fronty ====
**Soubor je pouze pro čtení** a obsahuje počet přijatých znaků ve vyrovnávací paměti sériového portu na desce vstupů a výstupů, přičemž číslo v rozsahu [1-3] odpovídá sekci jednotky.
Pokud deska I/O neobsahuje sériový port, soubor je prázdný.
/run/unipi/io_group[1-3]/uart_queue_length
==== Stav životnosti úložiště ====
**Soubory jsou pouze pro čtení** a obsahují informace o stavu úložiště.
První soubor udává **počet cyklů přemazání paměti** oproti maximu [%]. \\
/run/unipi_stats/cycles_used
Druhý soubor udává **počet bloků** [%], které jsou **v pořádku**. \\
/run/unipi_stats/good_blocks
----
Pro jednotky Neuron je k dispozici třetí soubor indikující **počet startů jednotky** s aktuální SD kartou.
/run/unipi_stats/power_cycles
V případě, že máte v Neuronu podporovanou SD kartu, je možno následujícími soubory zjistit **výrobce karty**.
/run/unipi_stats/vendor_1
/run/unipi_stats/vendor_2
/run/unipi_stats/vendor_3
===== Vstupy a výstupy (I/O) =====
==== Digitální vstupy ====
Slouží ke čtení stavu zvoleného vstupu v dané sekci [1-3] jednotky. Více informací, včetně napěťových úrovní pro detekci log.0/1 naleznete [[cs:hw:007-patron:description-of-io:01-description-of-di|v článku o digitálních vstupech]].
**Soubor je pouze pro čtení ** a pokud obsahuje hodnotu ''0'', je na digitálním vstupu detekována logická hodnota 0. Obsahuje-li hodnotu ''1'', je detekována logická hodnota 1.
/run/unipi/io_group[1-3]/di_[1-3]_[0-9][0-9]/di_value
==== Digitální výstupy ====
Slouží ke čtení/nastavení stavu zvoleného tranzistorového výstupu v dané sekci [1-3] jednotky. Více informací naleznete [[cs:hw:007-patron:description-of-io:02-description-of-do|v článku o digitálních výstupech]].
**Soubor umožňuje čtení i zápis** a pokud obsahuje hodnotu ''0'', je digitální výstup rozepnut. Obsahuje-li hodnotu ''1'', je sepnut. Zápis hodnoty do tohoto souboru změní stav (sepnut/rozepnut) výstupu dle uvedeného pravidla.
/run/unipi/io_group[1-3]/do_[1-3]_[0-9][0-9]/do_value
==== Relé výstupy ====
Slouží ke čtení/nastavení stavu zvoleného relé výstupu v dané sekci [1-3] jednotky. Více informací naleznete [[cs:hw:007-patron:description-of-io:03-description-of-ro|v článku o relé výstupech]].
**Soubor umožňuje čtení i zápis** a pokud obsahuje hodnotu ''0'', je relé výstup rozepnut. Obsahuje-li hodnotu ''1'', je sepnut. Zápis hodnoty do tohoto souboru změní stav (sepnut/rozepnut) výstupu dle uvedeného pravidla.
/run/unipi/io_group[1-3]/ro_[1-3]_[0-9][0-9]/ro_value
==== Analogové vstupy ====
Následující soubory slouží k nastavení režimu a ke čtení hodnoty na analogovém vstupu v dané sekci jednotky [1-3]. Informace o zapojení, technické informace a další podrobné informace naleznete v [[https://kb.unipi.technology/cs:automation:02-glossary:analog-inputs-hidden|článku o Analogových vstupech]].
=== Nastavení režimu analogových vstupů ===
Nastavení režimu AI sekce 1 (s výjimkou některých jednotek např. S5xx):
**Soubor umožňuje čtení i zápis** a v závislosti na obsažené hodnotě je nastaven režim vstupu.
/run/unipi/io_group1/ai_1_1/mode_ai_voltage_current
Tento vstup je možné nastavit do dvou režimů dle následující tabulky:
|< 100% 30% 70%>|
^ Hodnota ^ Režim AI ^
| 0 | Napětí 0–10V |
| 1 | Proud 0–20mA |
----
Nastavení režimu AI sekce 2,3 (a jednotek S5xx):
**Soubor umožňuje čtení i zápis** a v závislosti na obsažené hodnotě je nastaven režim vstupu.
/run/unipi/io_group[1-3]/ai_[1-3]_[1-9]/mode_ai_voltage_current_resistance
Tento typ vstupu je možné nastavit do několika režimů dle následující tabulky:
|< 100% 30% 70%>|
^ Hodnota ^ Režim AI ^
| 0 | Vypnuto |
| 1 | Napětí 0–10V |
| 2 | Napětí 0–2.5V |
| 3 | Proud 0–20mA |
| 4 | Odpor (třívodičová metoda) 0–1960 Ohm |
| 5 | Odpor (dvouvodičová metoda) 0–100 kOhm |
=== Čtení analogových vstupů ===
{{ :files:img_warning-line_b.png?nolink |}}
{{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
**Poznámka:** \\
Vždy lze číst pouze jeden soubor, dle [[#nastaveni_rezimu_analogovych_vstupu|nastaveného režimu]] vstupu.
----
Čtení hodnoty napětí na AI:
**Soubor umožňuje pouze čtení** a obsahuje měřenou hodnotu napětí v **mV**.
/run/unipi/io_group[1-3]/ai_[1-3]_[1-9]/in_voltage0_raw
----
Čtení hodnoty proudu na AI:
**Soubor umožňuje pouze čtení** a obsahuje měřenou hodnotu proudu v **mA**.
/run/unipi/io_group[1-3]/ai_[1-3]_[1-9]/in_current1_raw
----
Čtení hodnoty odporu na AI (pouze u sekce 2,3 a jednotek S5xx):
**Soubor umožňuje pouze čtení** a obsahuje měřenou hodnotu odporu v **Ohmech**.
/run/unipi/io_group[1-3]/ai_[1-3]_[1-9]/in_resistance2_raw
==== Analogové výstupy ====
Následující soubory slouží k nastavení režimu a k zápisu analogové hodnoty na výstup v dané sekci jednotky [1-3], na výstupu AOR v první sekci je také umožněno čtení odporu. Informace o zapojení, technické informace a další podrobné informace naleznete v [[https://kb.unipi.technology/cs:automation:02-glossary:analog-outputs-hidden|článku o Analogových výstupech.]]
=== Nastavení režimu analogových výstupů ===
Nastavení režimu AO (pouze sekce 1, s výjimkou některých jednotek např. S5xx):
**Soubor umožňuje čtení i zápis** a v závislosti na obsažené hodnotě je nastaven režim výstupu.
/run/unipi/io_group1/ao_1_1/mode_ao_voltage_current_resistance
Výstup je možné nastavit do tří režimů dle následující tabulky:
|< 100% 30% 70%>|
^ Hodnota ^ Režim AOR ^
| 0 | Napětí 0–10 V |
| 1 | Proud 0–20 mA |
| 2 | Čtení odporu 0–2 kOhm |
=== Zápis na analogové výstupy ===
Napěťový režim je dostupný na libovolném analogovém výstupu, ale proudový režim pouze na výstupu AOR (pouze sekce 1, s výjimkou některých jednotek např. S5xx).
{{ :files:img_warning-line_b.png?nolink |}}
{{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
**Poznámka:** \\
Vždy lze zapisovat pouze do jednoho souboru, dle [[#nastaveni_rezimu_analogovych_vystupu|nastaveného režimu]] vstupu.
----
Zápis hodnoty napětí na AO/AOR:
**Soubor umožňuje pouze zápis** a požadovaná hodnota napětí se do něj zadává v mV.
/run/unipi/io_group[1-3]/ao_[1-3]_[1-9]/out_voltage0_raw
----
Zápis hodnoty proudu na AOR:
**Soubor umožňuje pouze zápis** a požadovaná hodnota proudu se do něj zadává v mA.
/run/unipi/io_group1/ao_1_1/out_current1_raw
{{ :files:img_breakline.png?nolink |}}
=== Čtení z analogového výstupu ===
Na speciálním analogovém výstupu AOR (pouze sekce 1, s výjimkou některých jednotek např. S5xx) je také možné čtení hodnoty odporu.
Čtení hodnoty odporu na výstupu AOR:
**Soubor umožňuje pouze čtení** a obsahuje měřenou hodnotu odporu v ohmech.
/run/unipi/io_group1/ao_1_1/in_resistance2_raw
==== Uživatelské LED ====
Slouží ke čtení/nastavení stavu zvolené uživatelské LED dané sekce [1-3] jednotky.
**Soubor umožňuje čtení i zápis** a pokud obsahuje hodnotu ''0'', LED nesvítí. Obsahuje-li hodnotu větší nebo rovno ''1'', LED svítí. Zápis hodnoty do tohoto souboru změní stav (svítí/nesvítí) LED dle uvedeného pravidla.
/run/unipi/io_group[1-3]/leds/unipi:green:uled-x[0-9]/brightness
===== Speciální funkce I/O =====
==== Čítač ====
Funkce čítače je k dispozici pro každý digitální vstup jednotek Unipi. Více o této funkci naleznete [[cs:hw:007-patron:description-of-io:01-description-of-di#counter|v článku o digitálních vstupech]].
**Soubor umožňuje čtení i zápis** a obsahuje celkový počet impulsů v rozsahu ''0-4294967295'' detekovaných digitálním vstupem dané sekce [1-3] jednotky. Zápis hodnoty do souboru nastaví zvolený čítač na požadovanou hodnotu. Zapsáním hodnoty ''0'' lze čítač resetovat.
/run/unipi/io_group[1-3]/di_[1-3]_[0-9][0-9]/counter
==== Debounce ====
Funkce Debounce slouží k potlačení zákmitů na digitálním vstupu. Tento soubor obsahuje čas ve stovkách µs (je-li jeho hodnota 10, odpovídá to 1 ms). Po tutu nastavenou dobu je reakce na změnu hodnoty na vstupu ignorována, aby se zabránilo náhodným sepnutním vstupu v důsledku indukce na kabeláži atp. Nastavení je dostupné pro každý jednotlivý vstup zvolené sekce [1-3] jednotky.
**Soubor umožňuje čtení i zápis.** Z výroby obsahuje hodnotu ''50'', která odpovídá době 5 ms. Hodnota ''0'' znamená, že je funkce debounce vypnutá.
/run/unipi/io_group[1-3]/di_[1-3]_[0-9][0-9]/debounce
==== DirectSwitch ====
Funkce DirectSwitch se nastavuje na digitálních vstupech, ale jeho funkce je vázána i na digitální, či relé výstupy se shodným označením. Všechny parametry DirectSwitch lze nastavit jednotlivě pro každý digitální vstup zvolené sekce [1-3] jednotky. Více o této funkci naleznete [[cs:hw:007-patron:description-of-io:01-description-of-di#directswitch|v článku o digitálních vstupech]].
=== DirectSwitch enable ===
**Soubor umožňuje čtení i zápis** a pokud obsahuje hodnotu ''0'', je funkce DirectSwitch vypnuta. Obsahuje-li hodnotu ''1'', funkce je zapnuta. Zápis hodnoty do tohoto souboru změní stav (zapnuto/vypnuto) funkce DirectSwitch dle uvedeného pravidla.
/run/unipi/io_group[1-3]/di_[1-3]_[0-9][0-9]/direct_switch_enable
=== DirectSwitch polarity ===
**Soubor umožňuje čtení i zápis** a pokud obsahuje hodnotu ''1'', funkce DirectSwitch (je-li zapnuta) nastaví výstup do stavu odpovídajícího negované hodnotě vstupu. Obsahuje-li hodnotu ''0'', je stav výstupu shodný s hodnotou na vstupu. Zápis hodnoty do tohoto souboru nastaví polaritu (shoda/negace) funkce DirectSwitch dle uvedeného pravidla.
/run/unipi/io_group[1-3]/di_[1-3]_[0-9][0-9]/direct_switch_polarity
=== DirectSwitch toggle ===
**Soubor umožňuje čtení i zápis** a pokud obsahuje hodnotu ''1'', funkce DirectSwitch (je-li zapnuta) změní stav výstupu s každou náběžnou hranou na vstupu, zároveň je **ignorováno nastavení DirectSwitch polarity**. Obsahuje-li hodnotu ''0'', funkce toggle je vypnuta. Zápis hodnoty do tohoto souboru změní stav (zapnuto/vypnuto) funkce toggle dle uvedeného pravidla.
/run/unipi/io_group[1-3]/di_[1-3]_[0-9][0-9]/direct_switch_toggle
==== PWM - pulzně šířková modulace ====
PWM lze nastavit pouze pro digitální výstupy. Aby bylo možné funkci PWM použít, je nutné nastavit hodnotu digitálního výstupu na hodnotu ''0''. Více o této funkci naleznete [[cs:hw:007-patron:description-of-io:02-description-of-do#pwm|v článku o digitálních výstupech]].
----
Délka jednoho cyklu **Tc** se nastavuje pomocí hodnot [[#pwm_prescale|PWM Prescale]] a [[#pwm_cycle|PWM Cycle]]. Výpočet popisuje následující vzoreček:
{{ :cs:sw:02-apis:04-sysfs:pwm_formula.png?nolink&300 |}}
{{ :files:img_warning-line_b.png?nolink |}}
{{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
Hodnota **PWM cycle** má přímý vliv na **rozlišení střídy PWM** dle následujícího vzorce:
rozlišení = PWM_cycle + 2
Z toho vychází, že pokud je hodnota PWM cycle ''1'', je rozlišení rovno ''3''. Můžeme tedy nastavit tři hodnoty střídy - 0 %, 50 % a 100 %. V případě, kdy to výpočet umožňuje je tedy vhodné nastavit PWM cycle na co nejvyšší hodnotu.
{{ :files:img_warning-line_b.png?nolink |}}
{{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
Hodiny PWM standardně běží na 48 MHz, proto se přípustné frekvence PWM pohybují od 24 MHz do ~ 0,0111 Hz. Je třeba poznamenat, že v horní hladině tohoto rozsahu bude čtvercová vlna PWM poměrně nepravidelná, vzhledem k době po kterou tranzistory mění svůj stav.
=== Střída PWM ===
Nastavení střídy PWM (PWM duty-cycle) je dostupné jednotlivě pro každý digitální výstup zvolené sekce [1-3] jednotky.
**Soubor umožňuje čtení i zápis** a lze do něj zapsat hodnoty v rozsahu 0-65535. Korektní hodnoty střídy jsou však v rozsahu 0-100 [%], nastavení vyšší hodnoty bude vždy vyhodnoceno jako 100 [%].
/run/unipi/io_group[1-3]/do_[1-3]_[0-9][0-9]/pwm_duty_cycle
=== PWM cycle ===
Nastavení frekvence cyklu PWM je společné pro všechny digitální výstupy zvolené sekce [1-3] jednotky a změna nastavení jednoho výstupu ovlivní všechny soubory.
**Soubor umožňuje čtení i zápis** a může obsahovat hodnoty v rozsahu 0-65535.
/run/unipi/io_group[1-3]/do_[1-3]_[0-9][0-9]/pwm_frequency_cycle
=== PWM prescale ===
Nastavení **PWM prescale** je společné pro všechny digitální výstupy zvolené sekce [1-3] jednotky a změna nastavení jednoho výstupu ovlivní všechny soubory.
**Soubor umožňuje čtení i zápis** a může obsahovat hodnoty v rozsahu 0-65535.
/run/unipi/io_group[1-3]/do_[1-3]_[0-9][0-9]/pwm_prescale
===== Pokročilé nastavení desek I/O =====
==== Master Watchdog ====
Funkce Master Watchdog (MWD) nepřetržitě monitoruje příkazy z aplikace běžící na jednotce. Pokud během definovaného času **[[#watchdog_timeout|watchdog_timeout]]** nejsou detekovány žádné příkazy, procesor modulu se automaticky restartuje (pokud je povoleno) a použije uloženou [[#vychozi_konfigurace|výchozí konfiguraci]]. Tato funkce zajišťuje nastavení bezpečné konfigurace v případě mimořádných situací, např. při selhání řídící jednotky, přerušení komunikace, či problémech se softwarem tak, aby se zabránilo poškození ovládaných zařízení, či ohrožení osob.
=== Watchdog status ===
Hodnota souboru indikuje několik stavů MWD, které mohou nastat i současně. Každý stav je indikován jedním bitem, kde:
* ''bit 0'' indikuje, zda je MWD povolen (1 = povoleno)
* ''bit 1'' indikuje, zda byla sekce restartována funkcí MWD
* ''bit 2'' indikuje, zda od poslední komunikace uplynul **watchdog_timeout**
Kromě čtení stavů MWD je **umožněn i zápis do souboru** pro povolení/zakázání MWD. Povolení funkce se provádí zápisem ''1'' do tohoto souboru a zakázání zápisem ''0''.
/run/unipi/io_group[1-3]/watchdog_status
{{ :files:img_warning-line_b.png?nolink |}}
{{ :en:hw:09_safety-instructions_pseudo-ISO-7010-attention.png?nolink |(!)}}
**Pozor**: \\
Bezprostředně po povolení MWD (než uplyne **[[#watchdog_timeout|watchdog_timeout]]**) je nutné uložit výchozí konfiguraci, jinak MWD zareaguje a vyrestartuje sekci I/O, čímž se načte uložená výchozí konfigurace, kde je MWD stále zakázán.
=== Watchdog timeout ===
Výchozí hodnotou je ''2500'', maximální možná hodnota je ''65535'' a minimální hodnotu timeoutu důrazně doporučujeme volit vyšší než ''100''.
**Soubor umožňuje čtení i zápis** a obsahuje hodnotu v **ms**.
/run/unipi/io_group[1-3]/watchdog_timeout
==== Výchozí konfigurace ====
Po zapsání hodnoty ''1'' dojde k uložení aktuální konfigurace sekce do její trvalé paměti. Při odpojení a připojení zařízení k napájení či [[#restart_sekce_i_o|restartu]] sekce se načte a použije uložená konfigurace.
**Soubor umožňuje pouze zápis** a poté se vždy automaticky resetuje do hodnoty ''0''.
/run/unipi/io_group[1-3]/save_initial_state
==== Restart sekce I/O ====
Po zapsání hodnoty ''1'' dojde k restartu celé sekce, podobně jako při odpojení a připojení zařízení k napájení.
**Soubor umožňuje pouze zápis** a poté se vždy automaticky resetuje do hodnoty ''0''.
/run/unipi/io_group[1-3]/reboot_group
/* FIXME - všechno níže je neveřejná sekce, NEPŘEKLÁDAT */
{{page>cs:sw:02-apis:04-sysfs:documentation-advanced-hidden}}