Sprehľadnenie modelov vytvorených v prostredí Simulink

Simulink je nadstavba prostredia MATLAB pre modelovanie dynamických systémov pomocou blokových schém. Zložitosť systému sa môže prejaviť počtom blokov a signálov potrebných na jeho vytvorenie. To môže viesť ku neprehľadnej a ťažko čitateľnej schéme. Môže to byť problém hlavne pri práci v tíme, kde na modeli systému pracuje viacero ľudí. V tomto blogu si ukážeme spôsoby, ako sprehľadniť model pomocou subsystémov, portov a zberníc.

Model systému

Na znázornenie postupov, ktoré vedú k zjednodušeniu schém využijeme model dvojitého kyvadla z dokumentácie Simscape Multibody. Z príkladu odstránime nepotrebné bloky a využijeme iba časť, ktorá sa venuje modelu v prostredí Simulink. Kroky v tomto blogu sú zhrnuté v modeloch, ktoré si môžete stiahnuť tu: double_pendulum­.zip.

Napriek tomu, že sa jedná o jednoduchší model, obsahuje už dosť blokov a signálov. Ďalšie rozširovanie by mohlo model skomplikovať.

Subsystémy

Najjednoduchším spôsobom, ako model sprehľadniť je rozdeliť časti modelu do logických celkov. Najčastejšie využívaným blokom na túto úlohu je subsystém. Blok subsystému nájdete v knižnici blokov Ports & Subsystems, alebo ho môžete vytvoriť priamo označením blokov v modeli. V našom príklade posunieme blok sčítania a označíme časť, ktorá reprezentuje prvý kĺb. Pravým klikom vyvoláme menu, z ktorého vyberieme Create Subsystem from Selection.

Podobne to spravíme aj pre druhý kĺb. Mali by sme dostať nasledujúcu schému.

Subsystém obsahuje náhľad jeho obsahu, ktorý môžeme skryť kliknutím na blok a pomocou záložky FORMAT zapnúť a vypnúť tlačidlom Content Preview. Pre názornosť je vhodné subsystém pomenovať. Meno subsystému môžeme tiež presunúť myšou nad blok.

Porty

Subsystémy schému zjednodušili, ale ako môžeme vidieť, signály v schéme stále nepridávajú na jednoduchosti. Od verzie R2020a môžeme zmeniť umiestnenie portov na bloku. Jednoducho stačí vstup alebo výstup bloku presunúť myšou na požadované miesto.

Signály teda usporiadame tak, aby bola schéma jednoduchšie čitateľná.

Z obrázka vidíme, že subsystém Joint2 má porty, ktoré sú označené číslom. Ďalšou možnosťou Simulinku od verzie R2020a je šírenie názvov portov. Pokiaľ privedieme signál z pomenovaného portu na štandardný port, tento port sa premenuje. Aby sme to dosiahli, zmažeme signál a nanovo ho potiahnutím vytvoríme.

Pre prehľadnosť usporiadame aj obsah subsystémov.

Ďalšou možnosťou Simulinku je pridanie bloku kliknutím do schémy a napísaním jeho mena. Týmto spôsobom pridáme blok Scope na zobrazenie grafu. Blok 2× otočíme pomocou skratky CTRL+R. Na bloky, ktoré môžu meniť počet svojich vstupom môžeme priviesť signál a vstupný port sa vytvorí automaticky. Dokonca môžeme meniť aj poradia portov. Toto platí napríklad pre základné bloky ako Scope, Sum, ale aj pokročilejšie bloky ako Subsystem alebo Stateflow Chart. Na vstup bloku Scope v našej schéme pripojíme signál theta1 a signál theta1+theta2.

Zbernice

V prostredí Simulink existuje niekoľko spôsobov, ako zlúčiť a rozdeliť súvisiace signály do jedného. Najrýchlejší spôsob je využitie blokov Mux a Demux. Oveľa väčšiu flexibilitu nám poskytujú zbernice, ktoré umožňujú využívať mená signálov a na základe nich aj požadovaný signál zo zbernice vybrať. V našej schéme spolu logicky súvisia prvé a druhé derivácie uhlov. Zbernicu vieme vytvoriť automaticky označením signálov a zvolením Create Bus.

Podobne môžeme vytvoriť zbernicu pre derivácie signálu theta2. Ak sa pozriete do subsystému si môžete všimnúť, že bloky vstupov a výstupov boli nahradené blokom In a Out Bus Element. Týmito blokmi môžeme vyberať a pridávať signály. Dvojklikom na blok upravujeme ich vlastnosti. Môžeme zmeniť mená zberníc.

Aby sme mali rovnaké mená signálov aj v druhom bloku, znova ich zmažeme a pripojíme ich nanovo (zabezpečíme tak ich šírenie názvov). Model uložíme a aktualizujeme ho napríklad zo záložky MODELING voľbou Update Model.

Záver

Prehľadnosť je jedno z dôležitých kritérií modelov, hlavne ak pracujete na zložitých projektoch a pracujete v tíme. Prispieva k ľahšej čitateľnosti a tým pádom minimalizuje tvorbu chýb. V tomto blogu sme si ukázali, ako môžete využiť subsystémy, porty a zbernice na zjednodušenie rozsiahlejšieho modelu na logické celky. Všetky novinky týkajúce sa posledných verzií Simulinku nájdete v jeho Release Notes.

Michal Blaho (HUMUSOFT), 13.5.2020