Sysfs
Ovladač SysFS je součást kernelového modulu pro jednotky Unipi se vstupy a výstupy a poskytuje jednoduchý přístup ke všem vstupům a výstupům na úrovni souborů.
Poznámka:
Chcete-li na jednotce Unipi s Base OS používat 1-Wire, je nutné nainstalovat a konfigurovat OWFS. V případě OS s EVOKem, je OWFS již instalováno.
Pro Mervis OS OWFS neinstalujte! Využívá alternativní metodu pro práci s 1-Wire a mohlo by docházet ke kolizím.
Do začátku si můžete prohlédnout příklady čtení a zápisu I/O:
Stejným způsobem lze přistupovat ke všem souborům v rámci SysFS.
Vyčtení stavu DO:
cat /run/unipi-plc/by-sys/DO1.1/value
Nastavení DO do stavu sepnuto:
echo 1 > /run/unipi-plc/by-sys/DO1.1/value
Vyčtení stavu DI:
cat /run/unipi-plc/by-sys/DI1.1/value
Vyčtení stavu všech DI první sekce:
cat /run/unipi-plc/by-sys/DI1.*/value
Vyčtení stavu všech dostupných DI jednotky:
cat /run/unipi-plc/by-sys/DI[1-3].*/value
Popis sysfs rozhraní
Od verze Debianu 11 se sysfs dělí na dvě části:
- unipi_id - obsahuje všechny základní informace o hardwarové platformě
- I/O rozhraní - zpřístupňuje vstupy a výstupy Unipi hardwaru
Poznámka:
Unipi sysfs je podsystém fungující jako klasické soubory a je automaticky spravován Linuxovým kernel modulem a uživatelskými nástroji. Hlavním cílem je poskytnutí jednoduchého přístupu pro rychlé zpracování dat a tvorbu krátkých shell skriptů bez nutnosti instalace dalších nástrojů.
Pro produkční nasazení doporučujeme použití rozhraní ModBus TCP, který má více možností. Podobně jako sysfs je vestavěný jako standardní komponenta v předinstalovaném balíčku pro všechny Unipi zařízení.
Protože jsou soubory sysfs rozloženy na více místech je výrazně doporučeno přistupovat k nim přes adresář:
/run/unipi-plc
V tomto adresáři jsou obsaženy symbolické odkazy na jednotlivé komponenty.
unipi_id
verze API
Podobně jako jiná API, sysfs se může postupem času měnit. Je výrazně doporučeno porovnávat verzi rozhraní před použitím v rámci dalších aplikací.
/run/unipi-plc/unipi-id/api_version
Příklad obsahu:
1.1
Popis produktu
Souhrn informací o produktu (Unipi PLC) v jednom souboru v čitelném formátu.
/run/unipi-plc/unipi-id/product_description
Příklad obsahu:
Product model: L527 Product version: 1.0 Product serial: 00000016 SKU: 2020028 Options: 0x00 Platform family: Patron (7) Platform series: 0xFF RAW platform ID: 0xFF07
Pro získání jednotlivých údajů nemusíte zpracovávat celý soubor výše, lze místo toho použít samostatné soubory obsahující pouze hodnoty.
/run/unipi-plc/unipi-id/product_model
/run/unipi-plc/unipi-id/product_serial
/run/unipi-plc/unipi-id/platform_family
/run/unipi-plc/unipi-id/platform_id
Hlavní deska
Hlavní deska je klíčová část každého Unipi PLC. Deska má vlastní EEPROM paměť obsahující veškeré informace o samotné desce a celém zařízení.
/run/unipi-plc/unipi-id/mainboard_description
Příklad obsahu:
Model: Mainboard Version: 255.255 Serial: 4294967295 ID: 0xFFFF Nvmem: /sys/bus/nvmem/devices/2-00571/nvmem
Pro získání typu desky nemusíte zpracovávat celý soubor, ale lze využít jednodušší zkratky obsahující pouze hodnotu:
/run/unipi-plc/unipi-id/mainboard_id
I/O rozhraní
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.
/run/unipi-plc/by-sys/iogroup[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-plc/by-sys/iogroup[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.
/run/unipi-plc/by-sys/iogroup[1-3]/firmware_version
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 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-plc/by-sys/DI[1-3].[0-9][0-9]/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 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-plc/by-sys/DO[1-3].[0-9][0-9]/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 č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-plc/by-sys/AI[1-3].[1-9]/mode_voltage_current
Tento vstup je možné nastavit do dvou režimů dle následující tabulky:
| 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-plc/by-sys/AI[1-3].[1-9]/mode
Tento typ vstupu je možné nastavit do několika režimů dle následující tabulky:
| 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ů
Čtení hodnoty napětí na AI:
Soubor umožňuje pouze čtení a obsahuje měřenou hodnotu napětí v mV.
/run/unipi-plc/by-sys/AI[1-3].[1-9]/in_voltage_input
Čtení hodnoty proudu na AI:
Soubor umožňuje pouze čtení a obsahuje měřenou hodnotu proudu v mA.
/run/unipi-plc/by-sys/AI[1-3].[1-9]/in_current_input
Č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-plc/by-sys/AI[1-3].[1-9]/in_resistance_input
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 č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-plc/by-sys/AO[1-3].[1-9]/mode_voltage_current_resistance
Výstup je možné nastavit do tří režimů dle následující tabulky:
| 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).
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-plc/by-sys/AO[1-3].[1-9]/out_voltage_input
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-plc/by-sys/AO[1-3].[1-9]/out_current_input
Č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-plc/by-sys/AO[1-3].[1-9]/in_resistance_input
Relé výstupy
Slouží ke čtení/nastavení stavu zvoleného relé výstupu v dané sekci [1-3] jednotky. Více informací naleznete 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-plc/by-sys/RO[1-3].[0-9][0-9]/value
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-plc/by-sys/ULED[1-3].[1-9]/brightness
Speciální funkce I/O
Čítač (Counter)
Funkce čítače je k dispozici pro každý digitální vstup jednotek Unipi. Více o této funkci naleznete 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-plc/by-sys/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-plc/by-sys/DI[1-3].[0-9][0-9]/debounce
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 nejsou detekovány žádné příkazy, procesor modulu se automaticky restartuje (pokud je povoleno) a použije uloženou 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 0indikuje, zda je MWD povolen (1 = povoleno)bit 1indikuje, zda byla sekce restartována funkcí MWDbit 2indikuje, 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-plc/by-sys/iogroup[1-3]/master_watchdog_enable
Pozor:
Bezprostředně po povolení MWD (než uplyne 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-plc/by-sys/iogroup[1-3]/master_watchdog_timeout
Indikace Watchdog restartu
Hodnota tohoto souboru ukazuje, zda byl poslední start sekce způsoben pomocí MWD.
Soubor umožňuje čtení i zápis a po přečtení hodnoty se hodnota neresetuje do 0. Pro detekci více MWD restartů po sobě musí být po MWD resetu zapsána do tohoto souboru 0.
/run/unipi-plc/by-sys/iogroup[1-3]/was_watchdog
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 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-plc/by-sys/iogroup[1-3]/save_nvram
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-plc/by-sys/iogroup[1-3]/reboot
Vypnutí/zapnutí sběrnice 1-Wire
Upozornění:
Tento způsob ovládání napájení 1-Wire sběrnice již není možný pro systémy s Debian 13 a novější!
Pro ovládání napájení 1-Wire raději použijte odpovídající Modbus coil.
Alternativní způsob je bind a unbind sběrnice v systému
echo x-0018 | sudo tee /sys/bus/i2c/drivers/ds2482/unbind echo x-0018 | sudo tee /sys/bus/i2c/drivers/ds2482/bind Nahraďte x za číslo: 1 - Unipi Neuron 2 - Unipi Patron
Poznámka:
Soubor není nelze použít pro jednotky bez sběrnice 1-Wire, jednotky řady Unipi 1.1 a Patron S207.
Po zapsání hodnoty 1 je 1-Wire sběrnice na dané sekci odpojena od napájení.
Pro zapnutí 1-Wire sběrnice musí být hodnota nastavena na 0.
Ve výchozím nastavení po startu zařízení je 1-Wire sběrnice zapnuta, tedy hodnota je nastavena na 0.
Soubor umožňuje čtení i zápis a lze do něj zapsat hodnoty 0 a 1.
/run/unipi-plc/by-sys/iogroup[1-3]/ow_power_off