Ovladač systému REXYGEN pro GPIO piny
(modul GPIODrv)
Uživatelská příručka
27.3.2025
Plzeň
Obsah
1.1 Úvod
1.2 Instalace
1.2.1 Povolení PWM v operačním systému
2 Zařazení ovladače do projektu
2.1 Přidání ovladače GPIODrv
2.2 Připojení vstupů a výstupů v řídicím algoritmu
2.2.1 Příklad obecného použití GPIO pinů
2.2.2 Příklad použití GPIO pinů pro PWM
3 Konfigurace ovladače GPIODrv
3.1 Konfigurace pro GpioDrv
3.2 Konfigurace pro PwmDrv
4 Co dělat při problémech
Kapitola 1
Ovladač GPIODrv a systém REXYGEN
1.1 Úvod
V této příručce je popsáno používání ovladače GPIODrv pro zpřístupnění GPIO pinů obecného zařízení v řídicím systému REXYGEN. Ovladač umožňuje jak vstupní, tak výstupní režimy pinů a je kompatibilní se zařízeními s Linux kernel 5.10 a vyšším. Ovladač byl vyvinut firmou REX Controls.
Pokud začínáte s REXYGEN, doporučujeme nejdříve projít tutoriály Začínáme a návody krok za krokem, které:
- Vás seznámí se základními principy systému REXYGEN a jeho vývojovými nástroji [1],
- Vám pomohou s instalací a konfigurací systému REXYGEN na cílové zařízení [2],
- Vám ukážou, jak vytvořit jednoduchý projekt včetně základního uživatelského rozhraní [3],
- ukáží, jak nakonfigurovat vstupy a výstupy daného zařízení [4],
- Vám umožní vytvořit vlastní grafické uživatelské rozhraní [5].
1.2 Instalace
Pro možnost konfigurace ovladače GPIODrv ve vývojovém prostředí REXYGEN Studio je nutné během instalace REXYGEN Studio mít zaškrtnutu možnost Linux General Purpose I/O driver v kroku Select Components. Nejjednodušší je vybrat možnost Full installation.
Ovladač GPIODrv je součástí standardní instalace RexCore na cílovém zařízení a měl by být nainstalován, ať už jste zvolili jakýkoliv způsob instalace popsaný v [2].
Pokud z nějakého důvodu musíte instalovat GPIODrv samostatně, můžete tak
učinit z příkazové řádky zařízení pomocí příkazu:
sudo apt-get install rex-gpiodrvt
1.2.1 Povolení PWM v operačním systému
Aby bylo možné využívat GPIO piny v režimu PWM, je nutné tento režim v systému aktivovat. Toho docílíte přidáním pwm-2chan dtoverlay do konfiguračním souboru systému. V případě Raspberry Pi 5 například přidejte následující řádek do souboru /boot/firmware/config.txt:
dtoverlay=pwm2chan
Po provedení úpravy souboru je nutné zařízení restartovat příkazem:
sudo reboot
Tato konfigurace zpřístupní dva PWM kanály, které lze ovládat prostřednictvím GPIO pinů.
Kapitola 2
Zařazení ovladače do projektu
Zařazení ovladače do projektu spočívá v přidání ovladače do hlavního souboru projektu a v připojení vstupů a výstupů ovladače v řídicích algoritmech.
2.1 Přidání ovladače GPIODrv
Přidání ovladače GPIODrv do hlavního souboru projektu je znázorněno na obr. 2.1.
Pro zařazení ovladače do projektu slouží blok typu IODRV připojený k výstupu Drivers hlavního bloku EXEC. Po otevření Block properties - vlastností bloku (pomocí dvojkliku na blok) můžete upravovat nastavení parametrů. Čtyři nejdůležitější parametry bloku IODRV jsou:
- module – název modulu připojeného k tomuto ovladači, v tomto případě GPIODrv
- classname – třída ovladače
- GpioDrv – Třída pro obecné použití GPIO pinů. Umožňuje konfigurovat piny jako standardní digitální vstupy nebo výstupy a pracovat s jejich stavy v reálném čase.
- PwmDrv – Třída pro řízení GPIO pinů v režimu PWM (Pulse Width Modulation). Tento režim je vhodný pro aplikace, kde je třeba řídit intenzitu signálu, jako je například stmívání LED nebo ovládání rychlosti motoru.
- GpioSysDrv – Nepoužívat! - Tato třída je zachována pro starší verze linuxového jádra.
- cfgname – název konfiguračního souboru ovladače, např. gpio.rio
- factor – násobek parametru tick bloku EXEC definující periodu vykonávání úloh ovladačem.
Tlačítko Configure otvírá konfigurační dialog ovladače GPIODrv, který je popsán v Kapitole 3.
Jménem bloku IODRV (viz Obr. 2.1) začínají všechny vstupní a výstupní signály tohoto ovladače. Doporučené pojmenování bloku IODRV je podle použité třídy, tedy GPIO nebo PWM.
2.2 Připojení vstupů a výstupů v řídicím algoritmu
Vstupy a výstupy z ovladačů je možné do algoritmu v jednotlivých úlohách připojit několika funkčními bloky:
- Pro čtení jedné hodnoty je výhodné použít blok From.
- Pro zápis jedné hodnoty se používá blok Goto.
- Protože ovladač umožňuje pod jedním symbolickým jménem získávat několik vstupů či nastavovat několik výstupů, lze s výhodou používat bloky čtyřnásobných, osminásobných a šestnáctinásobných vstupů a výstupů (INQUAD, OUTQUAD, INOCT, OUTOCT a INHEXD, OUTHEXD). Výhodou takového užití je zvýšení rychlosti a částečně i přehlednosti algoritmů.
Příslušnost bloků From a Goto k danému ovladači je dána jejich parametrem Goto tag, který začíná názvem bloku IODRV (viz Obr. 2.1), pokračuje oddělovačem __ (za sebou dva znaky ’_’) a končí jménem signálu. Pro bloky INQUAD, OUTQUAD, INOCT, OUTOCT, INHEXD a OUTHEXD je tento identifikační řetězec zadáván přímo do jejich názvu. Podrobný popis bloků lze nalézt v příručce [6].
Úlohy jsou poté zapojovány v hlavním souboru projektu na výstupy QTask, Level0, Level1, Level2 a Level3 bloku EXEC. Výstupy QTask a Level0 jsou vyhrazeny pro úlohy s nejvyšší prioritou, výstup Level3 pro úlohy s nejnižší prioritou.
Níže jsou uvedeny příklady pro jednotlivé platformy podporované ovladačem GPIODrv. Pro čtení se v příkladech využívá funkční blok From, pro zápis signálu funkční blok Goto. Oba tyto bloky mají parametr Goto tag, který je nastaven na název signálu.
2.2.1 Příklad obecného použití GPIO pinů
GPIO piny jsou variabilnější než klasické vstupy a výstupy, a proto je výše popsaný způsob nastavování Goto tag rozšířen o nepovinné příznaky reprezentované jednotlivými písmeny. Tyto příznaky umožňují specifikovat následující vlastnosti:
- U – aktivace pull-up rezistoru na vstupu,
- D – aktivace pull-down rezistoru na vstupu nebo nastavení open drain na výstupu,
- I – invertování hodnoty na vstupu nebo výstupu,
- S – nastavení open source na výstupu,
- H – nastavení počátečního stavu výstupu na logickou 1 (on),
- L – nastavení počátečního stavu výstupu na logickou 0 (off),
- B – nastavení deBounce času na vstupu.
Tyto vlastnosti lze kombinovat. Například příznak GPIO__0UI aktivuje pull-up rezistor a zároveň invertuje hodnotu na vstupu.
Příklad použití je vidět na Obr. 2.3.
Jeden blok From sloužící pro připojení jednoho vstupu má parametr Goto tag nastaven na GPIO__23UI, druhý na GPIO__24UI. Název za podtržítky ve vlajce odpovídá názvu použitého GPIO pinu (označení pinů závisí na konkrétním zařízení). Blok typu Goto používaný pro připojení jednoho výstupu má hodnotu parametru Goto tag nastavenou na GPIO__25.
Podobně můžeme využít například tyto vlajky:
- Goto, GPIO__22 – digitální výstup 22
- Goto, GPIO__23H – digitální výstup 23, který je okamžitě při inicializaci nastaven na logickou 1 (on)
- From, GPIO__7U – digitální vstup 7 s interním pull-up rezistorem
- From, GPIO__8D – digitální vstup 8 s interním pull-down rezistorem
- From, GPIO__21 – digitální vstup 21 bez pull up/down rezistoru
Instalace systému REXYGEN obsahuje knihovnu příkladů, kde je mimo jiné sekce 0410_GPIO věnována použití GPIODrv. Příklad 0410-00_IO_Flags obsahuje knihovnu použitelných nastavení GPIO.
2.2.2 Příklad použití GPIO pinů pro PWM
Pro třídu PwmDrv mají význam pouze zápisové vlajky. Standardně (bez použití příznaků v Goto tag) hodnota přivedená na vlajku vyjadřuje požadovanou střídu jako reálné číslo v intervalu <0;1>. Podobně jako u obecného použití GPIO lze i při nastavování PWM použít rozšířené pojmenování Goto tag s nepovinnými příznaky reprezentovanými jednotlivými písmeny. Tyto příznaky umožňují definovat následující vlastnosti:
- I – invertování hodnoty střídy,
- D – zapisovaná hodnota nevyjadřuje střídu, ale délku pulzu v nanosekundách ve formě celého čísla,
- P – délka periody v nanosekundách, která musí být v rozmezí <0;0xFFFF>.
Tyto vlastnosti lze kombinovat. Například označení PWM__0ID invertuje hodnotu střídy a zároveň nastavuje délku pulzu v nanosekundách.
Číslo PWM kanálu závisí na konkrétním cílovém zařízení. Pro Raspberry Pi 1-4 je GPIO 18 přiřazeno kanálu PWM__0 a GPIO 19 kanálu PWM__1. U Raspberry Pi 5 je GPIO 18 defaultně dostupné na kanálu PWM__2 a GPIO 19 na kanálu PWM__3.
Příklad použití na Raspberry Pi 5 je uveden na Obr. 2.3.
Blok typu Goto používaný pro připojení jednoho výstupu má hodnotu parametru Goto tag nastavenou na PWM__2 pro Raspberry Pi 5 zapisuje hodnotu požadované střídy na GPIO 18. Další Goto blok s parametrem Goto tag nastaveným na PWM__3D zapisuje požadovanou délku pulzu [ns] na GPIO 19 ve formě celého čísla. Zároveň je pro GPIO 19 nutné nastavit délku periody v nanosekundách pomocí posledního Goto bloku s parametrem Goto tag nastaveným na PWM__3P.
Instalace systému REXYGEN obsahuje knihovnu příkladů, kde je mimo jiné sekce 0411_PWM věnována použití GPIODrv. Příklad 0411-00_IO_Flags obsahuje knihovnu použitelných nastavení GPIO.
Kapitola 3
Konfigurace ovladače GPIODrv
Konfigurační dialog může být aktivován tlačítkem Configure v parametrickém dialogu bloku IODRV (viz Kapitola 2.1).
3.1 Konfigurace pro GpioDrv
Pro konfiguraci třídy GpioDrv je nutné nastavit parametr GPIO Chip na označení GPIO čipu, který bude ovládán. Např. gpiochip4 pro Raspberry Pi 5. Hodnotu pro konkrétní cílové zařízení lze zjistit v terminálu pomocí příkazu:
gpioinfo
3.2 Konfigurace pro PwmDrv
Pro konfiguraci třídy PwmDrv je nutné nastavit následující parametry:
- PWM Chip – označení PWM čipu, který bude ovládán. Např. pwmchip2 pro
Raspberry Pi 5. Hodnotu pro konkrétní cílové zařízení lze zjistit v terminálu
pomocí příkazu:
ls /sys/class/pwm
- Default period [ns] – výchozí délka periody PWM signálu v nanosekundách.
- Default duty cycle [ns] – výchozí délka pulzu PWM signálu v nanosekundách.
Důležité: Před použitím třídy PwmDrv je nutné zajistit, že PWM rozhraní bylo aktivováno v systému úpravou konfiguračního souboru a následným restartem zařízení (viz Kapitola 1.2).
Kapitola 4
Co dělat při problémech
Ze všeho nejdříve je vhodné prozkoumat knihovny příkladů týkající se použití GPIODrv s konkrétním zařízením.
V případě, že v diagnostických prostředcích systému REXYGEN jsou neočekávané nebo nesprávné hodnoty vstupů nebo výstupů, je vhodné nejdříve ověřit jejich funkci nezávisle na systému REXYGEN. Dále je nutné překontrolovat konfiguraci. Nejčastější chyby jsou:
- Chyba v konfiguraci – špatně zvolené označení čipu, pinu nebo špatně zvolený režim pinu.
- Chyba v hardware – špatné zapojení.
- Chyba v přístupu k pinům – pin je používán jiným zařízením (SPI sběrnice, I2C sběrnice, sériová linka) nebo programem.
V případě, že daný vstup či výstup funguje pomocí jiných softwarových nástrojů správně a při shodném zapojení v systému REXYGEN nefunguje, prosíme o zaslání informace o problému emailem na adresu podpora@rexcontrols.cz. Pro co nejrychlejší vyřešení problému by informace by měla obsahovat:
- Identifikační údaje Vaší instalace vyexportované pomocí programu REXYGEN Studio (Target Licensing Export).
- Stručný a výstižný popis problému.
- Co možná nejvíce zjednodušenou konfiguraci řídicího systému REXYGEN, ve které se problém vyskytuje (obsahující soubory s příponou .mdl).
Literatura
[1] REX Controls s.r.o.. Začínáme s řídicím systémem REXYGEN, 2024. .
[2] REX Controls s.r.o.. Instalace RexCore (REXYGEN runtime core), 2024. .
[3] REX Controls s.r.o.. První projekt, 2024. .
[4] REX Controls s.r.o.. Konfigurace vstupů a výstupů na cílových platformách, 2024. .
[5] REX Controls s.r.o.. Tvorba HMI v REXYGEN HMI Designer, 2024. .
[6] REX Controls s.r.o.. Funkční bloky systému REXYGEN – Referenční příručka, 2024. .
Referenční číslo dokumentace: 17159
2025 © REX Controls s.r.o., www.rexygen.com