Simulace systemu
Transkript
VUT FSI v Brně SIMULACE SYSTÉMŮ RNDr.Ing. Jiří Šťastný, CSc. Doplňkový učební text Předmluva Tento učební text je určen zejména pro posluchače studijního oboru Aplikovaná informatika a řízení v kombinovaném bakalářském typu studia na Fakultě strojního inženýrství VUT v Brně. Text by měl poskytnout základní učební pomůcku pro přednášky i cvičení z předmětu Simulace systémů v 5. semestru studia výše uvedeného oboru. Předmět Simulace systémů navazuje na znalosti, získané především v předmětech Matematika a Informatika v předchozích semestrech studia na uvedené fakultě. Autor děkuje za podporu z projektu rozvoje bakalářských programů na Fakultě strojního inženýrství VUT v Brně a za možnost začlenit do textu odborné poznatky získané při řešení výzkumného záměru CEZ: J22/98: 261100009 "Netradiční metody studia komplexních a neurčitých systémů". Všem čtenářům budu vděčen za veškeré připomínky k formálním i věcným nedostatkům v textu. Brno, listopad 2002 Autor Obsah Str. Úvod do simulace systémů 1 Základy teorie systémů 6 Základy MATLABu 23 Modul Simulink 28 Tvorba modelu 53 Obrazový přenos 58 Graf frekvenční charakteristiky v komplexní rovině 68 Přechodová funkce 69 Odezva systému na budicí signál 72 Zobrazení přenosu 75 Návrh zpětné vazby s kompenzátorem 81 Bloková algebra 83 Převod spojitého přenosu na diskrétní 87 Převod diskrétního přenosu na spojitý 88 Zadání náhodných hodnot 91 Diskrétní identifikace 95 Úvod do problematiky simulace systémů Vznik discipliny simulace systémů na počítačích vyvolaly praktické potřeby aplikované kybernetiky. Již řadu let se kromě běžných požadavků na výpočty různých úloh objevují zadání úloh typu: zadavatel chce studovat soustavu, pro kterou má její matematický popis. Chce zjistit, zda je matematický popis originálu dostatečně věrný, jak jej má upravit a doplnit, jaké má provést zásahy do systému, jestliže chce, aby se systém chovat tak, jak požaduje. Dalšími běžnými otázkami jsou např. otázky, nakolik je možno věřit výsledkům, které dostaneme při řešení matematického zápisu systému, je-li matematický zápis vůbec dostatečný, jak daleko je chování systému od optimálního chování atd. Tyto kvalitativně nové požadavky mění úlohu programátora i počítače. Programátor se stává spoluřešitelem úlohy a počítač už není výpočetním prostředkem ve smyslu logaritmického pravítka nebo kalkulačky, ale stává se modelem originálu vybudovaným na základě matematického popisu systému. Práce spojená s vytvořením matematického popisu a s jeho realizací na počítači, dostala název modelování, matematické modelování, kybernetické modelování, simulace systémů apod. Podstatným rysem simulace je spojení výpočetní činnosti se studiem systému. Programátor se stává spolutvůrcem matematického popisu systému, sleduje a účastní se všech rozborů, které by formálně patřily pouze k úkolům zadavatele. Z uvedeného je zřejmé, že programátor by měl mít znalosti z fyziky, teorie počítačů, aplikované matematiky. Pro složité úlohy z modelování je optimální tým pracovníků - programátorů - inženýrů a matematiků. Pro menší úlohy je optimální, je-li zadavatel úlohy sám programátorem. Během let se při modelování systémů hromadila řada poznatků a jejich postupné zobecňování dalo základ vzniku simulace jako samostatné discipliny v rámci technické kybernetiky. Teoretické základy simulace vycházejí z teorie počítačů a jejich programování, z teorie automatické regulace, pravděpodobnosti a statistiky, numerické matematiky, z teorie stability diferenciálních rovnic, teorie her, teorie hromadné obsluhy a z dalších teoretických disciplin. Proto čerpám názvosloví simulace systémů především z těchto oborů a pouze je přizpůsobuji potřebám simulace. Výpočetní prostředky pro simulaci systémů Dlouhou dobu bylo modelování systémů doménou analogového počítače. Bylo tomu tak proto, že tento výpočetní prostředek zajišťoval potřebnou variabilnost při modelování, dovoloval imitaci různých mezních podmínek, havarijních stavů a hypotetických situací a umožňoval snadné budování a zdokonalování matematických modelů. Přitom všem bylo programování analogového počítače snadné a přehledné. Metody analogového programování vytvořili inženýři a celým jeho pojetím vybudovali optimální způsob komunikace mezi výpočetním prostředkem a uživatelem. 1 Toto monopolní postavení analogových počítačů pro potřeby modelování zpočátku neohrozil ani první nástup masové exploatace číslicových počítačů, poněvadž tento druh výpočetní techniky byl přes řadu výhod pro potřeby modelování těžkopádný. Programové vybavení číslicových počítačů budovali především matematikové a jeho pojetí bylo vzdálené běžnému inženýrskému uživateli. Ani přechod od programování ve strojových kódech k programovacím jazykům se v oblasti modelování markantně neodrazil a stěžejními výpočetními prostředky pro modelování systémů zůstaly zpočátku nadále analogové počítače. Rostoucí rozsah modelovaných soustav a jejich stále dokonalejší identifikace vyžadovaly stále rozsáhlejší a kvalitnější analogovou techniku. Vznikly však potíže spojené s programováním na rozsáhlých počítačích jako např. vhodná formalizace programování, operace s měřítky, ladění (oživování) programů, kompenzace chyb, statické testy atd. Řada potíží byla brzy vyřešena pomocí moderních metod programování a využitím číslicových počítačů pro přípravu úlohy (statické testy, nastavování měničů ap.). Při řešení rozsáhlých úloh se často ukazovala potřeba opakovaného výpočtu, desítky a stovky alternativních řešení nebyly vzácností. Bylo zjevné, že je nutno zvýšit rychlost repetičních výpočtů. V řadě úloh se některé proměnné pohybovaly ve značném rozsahu a byly omezenou rozlišovací schopností analogových počítačů.silně limitovány na úkor celkové přesnosti výpočtu. Tak začaly vznikat jednotky pracující v tzv. hybridním kódu. Řešení výše uvedených potíží však mělo za následek růst ceny modernizovaného analogového počítače a s ní i ceny strojového času, který je pro potřeby modelování vždy neúměrně delší než pro ostatní úlohy. Řada úloh jako parciální diferenciální rovnice, algebraické rovnice, statistické úlohy, integrální rovnice ap. nebyly pro potřeby modelování uspokojivě na analogovém počítači zvládnuty. Nasnadě byla otázka spojení výhod číslicového a analogového počítače. Spojením analogového pojetí standardních bloků a numerického provádění operací v bloku vznikly číslicové diferenciální analyzátory. Jejich přesnost byla sice vyšší než u klasického analogového počítače, byly však pomalejší a dražší a tak nenašly širšího uplatnění jako univerzální výpočetní prostředky. Očekávaného efektu bylo dosaženo až spojením rychlého analogového počítače (iteračního diferenciálního analyzátoru) s rychlým číslicovým počítačem. Tak vznikla hybridní výpočetní soustava - hybridní počítač. Z hlediska přístrojového se objevily nové problémy s rychlým přenosem operačních i řídicích signálů mezi oběma částmi hybridní soustavy, ale díky existenci rychlých převodníků a multiplexerů byl tento problém vyřešen. Z hlediska hardware hybridní počítač pokryl beze zbytku všechny požadavky modelování. Na jeho rychlém vývoji měly hlavní podíl nejlépe financované úseky vědy, kosmický a raketový výzkum. Záhy se však hybridní počítače uplatnily i v nukleární fyzice, biologii, lékařství ap. Otevřenou otázkou zůstala cena hybridní soustavy. Paralelně s modelováním na hybridním počítači se vyvíjelo modelování na číslicovém počítači. Uživatelé číslicových počítačů brzy zjistili, že forma zadávání ú1lohy a interpretace výsledků musí být pro potřeby modelování stejné, jako u analogového počítače - jednoduchá, inženýrská. 2 Přes třicet let již vznikají speciální simulační jazyky, které zajišťují modelování dynamických systémů spojitých (diferenciálních, diferenčních, smíšených) i diskrétních (soustavy s frontami a omezenou kapacitou propustnosti - hromadná obsluha). V minulosti mohly být tedy problémy modelování řešeny na modernizovaném rychlém analogovém počítači nebo na hybridním počítači. V současné době je tato problematika řešena pomocí simulačních jazyků na rychlém číslicovém počítači. Simulační jazyky Cestou. která zabezpečuje vhodný výpočetní prostředek pro simulaci systému. byla výstavba specializovaných programovacích prostředků pro simulaci na číslicových počítačích. Tyto programovací prostředky dnes známe pod názvem simulační jazyky. Koncepce simulačních jazyků vycházejí z uživatelských hledisek a snaží se zabezpečit především tyto vlastnosti jazyka: ! Umožnit zadávání úlohy pomocí blokových schémat nebo ve tvaru standardně upravených rovnic popisujících systém a nebo ve formě smíšené (bloky i rovnice). ! Poskytovat dostatek vhodně agregovaných bloků (příkazů). využívajících širokého výběru numerických metod. ! Dovolovat zásahy do programu v průběhu řešení. tj. i uvnitř jednoho simulačního běhu. Všechny tyto modifikace musí být snadno kontrolovatelné a registrovatelné. ! Zajistit alespoň minimální automatické zlepšování modelu (iterace) podle zadaných kritérií a strategií. ! Zabezpečit snadnou a jednoznačnou komunikaci mezi uživatelem a počítačem (nové vstupní a výstupní prostředky jako světelná pera, klávesnicové vstupy. grafické zobrazovací jednotky atd. jsou pro zvýšené nároky na komunikaci zvláště přínosnými). Mít dokonale vybudovanou diagnostiku. která předpokládá "nekvalifikovaného" uživatele. ! Simulační jazyky jak pro spojité tak pro diskrétní systémy se postupně standardizovaly. Ty, které vznikly ve druhé polovině šedesátých let. byly již poměrně dokonalé a měly téměř všechny vyjmenované vlastnosti. Řada jazyků se vyskytuje v několika modifikacích, které většinou respektují vývoj hardware počítače, pro který byly původně navrženy. Verze vyvinuté v posledních letech již předpokládají dostupnost moderních vstupních a výstupních zařízení číslicového počítače. Využití simulačních jazyků pro výstavbu modelů pracujících v reálném čase bylo však velmi problematické. Teprve ve spojení se speciálním hardware mají simulační jazyky v "real time" modelování své místo. Jde však o velmi jednoduché, maximálně časově efektivní programové prostředky. V těchto jazycích jsou použity nejjednodušší integrační formule a formálně jsou blokově orientovány. 3 Simulační výpočet spojité soustavy představuje především opakované řešení soustavy diferenciálních rovnic, kdy jedno řešení od druhého se liší nějakou modifikací programu. Jde o přestavení rovnic a parametrů. Program musí zajistit snadnost těchto změn. Pokud přicházíme na počítač s hotovým, definitivním matematickým zápisem a budeme řešit konkrétní zadanou variantu úlohy, nepotřebujeme simulační jazyk, výhodně použijeme obecný programovací jazyk. Vlastní název simulační jazyk bývá chápán nepřesně, lépe by bylo hovořit o simulačním systému. Vlastní simulační jazyk představuje množinu příkazů pro popis simulovaného systému a řídicí příkazy pro práci se simulačním modelem. Výkonné jádro programovacího systému tvoří procesor, který zabezpečuje posloupnost zpracování úlohy, vstupy a výstupy dat. Všimněme si role procesoru podrobněji. Výpočet funkcí, které musí zabezpečit: ♦ Načtení popisu modelu ♦ Analýza a překlad ♦ Výpis programu a výpis chyb ♦ Třídění a nalezení implicitní smyčky ♦ Načtení parametrů a počátečních podmínek ♦ Výpočet funkcí a stavových proměnných, včetně iteračního výpočtu implicitních smyček ♦ Zkouška konvergence implikátorů ♦ Obsluha kroku výpočtu a výstupů ♦ Výstup ve formě tabulky, grafu, obrazu ♦ Výpočet nových proměnných (použití numerické integrační metody) ♦ Závěr výpočtu. Vlastní závěr výpočtu jakož i načtení parametrů může představovat "samostatné" rozsáhlé výpočty související např. s nadřazenou strategií přestavování modelu (optimalizace, identifikace, náhodné pokusy atd.). Je vidět, že numerické řešení diferenciálních rovnic je jedním z mnoha úkolů procesoru simulačního systému. Funkční zásoba reprezentuje vybavení systému standardizovanými "funkčními bloky". Jsou to výše zmíněné integrátory diferenciálních rovnic, funkční měniče (y = f(x)) a funkční generátory (y = f(t)). V této části programového vybavení se nejlépe odráží rozdíl mezi blokově a "rovnicově" orientovaným simulačním jazykem. Od 60. let vznikla velká řada simulačních jazyků. Nejznámější a nejvíce provozované byly jazyky CSMP 1130 (pro malý počítač) a CSMP S 360 (pro tehdy velký systém). V důsledku normalizačních snah vznikl jazyk CSSL a dodnes existuje řada jeho variant a mutací. Lze říci, že všechny spojité simulační jazyky, které vznikly v posledních dvaceti letech, jsou dokonalé a vyhoví uživatelským požadavkům. Řada z nich dovoluje výběr deseti i více integračních formulí, včetně specializovaných a má bohatou funkční zásobu nejrůznějších nelinearit. 4 Vymezení pojmu "simulace systémů" Obsah pojmů vědeckého jazyka a jejich termínová fixace je vždy záležitostí dohody, i když ta má většinou "tichý" charakter. Zvláště v souvislosti s bouřlivým rozvojem vědy a techniky v posledních desetiletích se však stále častěji opakuje historie, kdy stejnými termíny jsou různými autory fixovány různé pojmy, či naopak stejné pojmy jsou slovně označovány jednotlivými autory zcela odlišně. Jediným řešením je v takovém případě pokus o přijetí dohody na základě otevřené diskuse k základnímu návrhu. Důkazem, že takové řešení je možné, je Dohoda o chápání pojmu "simulace systémů", která byla přijata na půdě Komitétu aplikované kybernetiky v roce 1985. Dohoda má následující znění: 1. Simu1ace systémů je specifická forma procesu poznání Simulaci systémů lze použít při zkoumání objektů i při projektování objektů, ale také při výuce, výcviku a v dalších případech sdělování poznatků a hypotéz. 2. Předmětem simulace systémů jsou systémy vymezené na objektech poznání a jejich pohyb (ve smyslu jakékoliv změny v čase) Předmětem simulace systémů mohou být systémy vymezené na objektech jak existujících, tak projektovaných, i systémy, které nemají bezprostřední vztah k objektivní realitě. 3. Základním principem simulace systémů je vyvozování soudů o simulovaném systému pomocí experimentů s jeho simulačním modelem Metoda experimentů se simulačním modelem odlišuje simulaci systémů od jiných forem procesu poznání, a proto považujeme tuto metodu za simulaci systémů v užším slova smyslu. Soudy vyvozené na základě jejího použití se uplatňují ve všech fázích iterativně probíhajícího procesu simulace systémů. Těmito fázemi jsou: ! vymezení objektu poznání (vydělením zkoumaného objektu z ostatního světa, resp. stanovením požadavků na projektovaný objekt a určením použitelných. dílčích objektů) ! vymezení simulovaného systému na objektu poznání (volbou hlediska, ze kterého je objekt nazírán, a rozlišovací úrovně) ! vytvoření aktuální představy o simulovaném systému a jeho pohybu (tj. formulace hypotézy o zkoumaném systému, resp. zpracování projektu systému a identifikace použitých subsystémů) ! vytvoření simulačního modelu (tj. jeho návrh a realizace) ! ověření správnosti simulačního modelu (tj. ověření, zda model odpovídá aktuální představě o simulovaném systému a jeho pohybu) ! ověření pravdivosti simulačního modelu (tj. verifikace hypotézy o zkoumaném systému, resp. ověření, zda vyprojektovaný systém splňuje stanovené požadavky a dá se prakticky realizovat) 5 ! další použití ověřeného simulačního modelu v procesu poznání místo simulovaného systému (např. k prognózování, vědecké predikci, optimalizaci projektu, výuce, výcviku apod.). 4. Simulační model je systém, který napodobuje aktuální představu o simulovaném systému a jeho pohybu a je vymezen na umělém hmotném objektu vytvořeném nebo přizpůsobeném k tomuto účelu Návrh simulačního modelu může, ale nemusí vycházet z matematického popisu (modelu) aktuální představy o simulovaném systému a jeho pohybu. Za simulační považujeme pouze takový model, který při napodobování pohybu simulovaného systému zachovává stejné uspořádání změn v čase. Do třídy simulačních modelů zahrnujeme i jiné modely než modely na počítačích, s výjimkou modelů založených na geometrické podobnosti. Základy teorie systémů Vznik moderní teorie systémů byl vyvolán zejména růstem složitosti technických a ekonomických objektů a jejich řídicích soustav. Roste obtížnost řešení problémů z oblasti projektování technických systémů řízení hospodářských soustav. Teorie systémů je pomezní vědní disciplína z oblasti systémové vědy. Systémová věda je poměrně nová vědní oblast, která se zformovala v období vědeckotechnické revoluce. Zahrnuje kromě teorie systémů také kybernetiku, systémovou analýzu a syntézu, systémové inženýrství, operační výzkum a některé další systémové disciplíny. Teorie systémů je v podstatě určitá zobecněná teorie modelování systémových vlastností hmoty. V současné době se užívá jako základní metodologický nástroj ve všech ostatních disciplínách systémové vědy. Systémová věda má široký okruh aplikací jak v technice, tak v oblasti řízení ekonomiky. Přesné vymezení předmětu teorie systémů je dosti obtížné. V současné době jde o celkem rozsáhlou vědní disciplinu. Existuje řada různých názorů na koncepci této teorie, které jsou často odlišné. Různí autoři mají na předmět teorie systémů různé názory. Nesporně však jde o teorii, která má do značné míry formální, logicko-matematickou a metodologickou povahu. Předmětem teorie systémů je studium abstraktních systémů, které mají význam pro analýzu systémových vlastností hmoty. Analýza systémových vlastností hmoty se zaměřuje obvykle jednak na vyšetřování statických strukturních vlastností a dále na vyšetřování dynamických vlastností (chování) a složitých kauzálních vztahů, které se projevují v jejím pohybu. Teorie systémů nám usnadňuje zejména studium množin různorodých spojení příčin a následků, které se vyskytují v množinách rozmanitých jevů (prvků), jež na sebe vzájemně působí. Tato teorie vznikla prakticky z pokusů o sjednocení vědeckých pojmů, principů a modelů, které by mohly posloužit úsilí o zvládnutí dynamických soustav s těsnými a bohatými vzájemnými vazbami mezi jejich částmi. Teorie systémů nám značně usnadňuje řešení složitých technických a ekonomických problémů. Musíme si však uvědomovat, že jde pouze o nástroj, který může zobrazovat reálné objekty pouze zjednodušeně. Každý reálný objekt má velmi mnoho vlastností a při komplexním řešení daného problému lze uvažovat velmi mnoho projevů objektu. 6 Každý systémový model může zobrazovat jen poměrně malou část těchto projevů. Proto obvykle předpokládáme, že faktory, které jsme do systémového modelu nezahrnuli, neovlivňují vývoj modelovaného procesu do té míry, že naše závěry se stanou nepoužitelnými. Splnění tohoto předpokladu musíme vždy prověřovat. Obecné systémové modely nejsou proto samy o sobě dostatečnými nástroji, které by umožňovaly práci s objektivní realitou a vedly k úplnému pochopení vlastností reálných objektů. V našich úvahách budeme vycházet z pojetí obecného kybernetického systému, které vede k dekompozici zkoumaného systému na prvky a vazby mezi nimi. Toto pojetí je velmi rozšířené v mnoha vědních oborech a je rovněž blízké technickému pohledu na zkoumané objekty. Pro vymezení základních pojmů použijeme jednoduchého matematického aparátu (množin, relací, funkcí), jenž je funkční nejen z hlediska výstavby abstraktních modelů, ale má rovněž význam pro vlastní programování simulačních modelů, které jsou v podstatě přísně formalizovaným zápisem daným syntaxí a sémantikou příslušného programovacího jazyka. Prvek systému Prvky systému jsou obecně elementární, dále nedě1itelné části systému, které představují jeho rozkladové (dekompoziční) složky. Prostřednictvím prvků popisujeme strukturální vlastnosti systému. Chování prvků ve vzájemných interakcích, které vyplývají ze struktury systému, určuje chování celého systému. Systém S je tvořen konečnou množinou prvků: U = { u1, u2, . . . , un} kterou nazýváme universum systému S. Libovolný prvek systému ui ∈ U je vymezen následujícími atributy: a) množina X( ui ) = { xi1, xi2, . . . , xiki } vstupních proměnných prvku ui b) množina S( ui ) = { si1, si2, . . . , sili } stavových proměnných prvku ui c) množina Y( ui ) = { yi1, yi2, . . . , yimi } výstupních proměnných prvku ui d) množiny určující obory hodnot vstupních, stavových a výstupních proměnných - tzv. abecedy vstupních, stavových a výstupních proměnných. e) množiny kombinací hodnot vstupních, stavových a výstupních proměnných - tzv. vstupní, stavové a výstupní prostory prvku ui : Ω I ( ui ) = { ( xi1, xi2, . . . , xiki ) } vstupní prostor prvku ui Ω S ( ui ) = { ( si1, si2, . . . , sili ) } stavový prostor prvku ui Ω O ( ui ) = { ( yi1, yi2, . . . , yimi ) } výstupní prostor prvku ui 7 Prvky těchto prostorů nazýváme vstupní, stavové a výstupní vektory prvku ui , které jsou reprezentovány uspořádanými q-ticemi (q = ki , resp. li , resp. mi) prvků abeced vstupních, stavových a výstupních proměnných prvku ui . f) Časová množina Ti . Prvky této množiny t ∈ Ti reprezentují časové okamžiky, ve kterých se mění hodnoty vstupních, stavových a výstupních proměnných prvku ui . g) Dvojice zobrazení, která popisuje změny stavových a výstupních vektorů prvku ui v čase (obecně hodnoty stavových a výstupních proměnných prvku ui čase t2 závisejí na hodnotách vstupních a stavových proměnných v čase t1 , přičemž t2 ≥ t1 ) : Ω I ( ui ) × Ω S ( ui ) × Ti → Ω O ( ui ) × Ti Ω I ( ui ) × Ω S ( ui ) × Ti → Ω S ( ui ) × Ti Dvojici zobrazení, popisujících změny stavových a výstupních vektorů prvku ui označíme symbolem zi a nazveme chováním prvku ui . Zobrazení zi specifikují funkční obsah prvku ui a proto je můžeme chápat jako sémantiku prvku ui . Prvky se stejným chováním Nyní stanovíme podmínky, za kterých můžeme pokládat chování zi prvku ui a chování zj prvku uj za stejné. Vyjdeme-li z definice chování prvku, pak je podmínkou pro shodnost chování dvou prvků ui a uj shodnost zobrazení zi a zj . Tato podmínka však implikuje shodnost definičních oborů a oborů hodnot zobrazení zi a zj. Z hlediska modelování, kdy je volba konkrétních kódování podnětů, stavů, či reakcí prvků závislá na prostředí, v němž model vytváříme, je tato implikace příliš omezující. Abychom toto omezení odstranili, musíme nejdříve transformovat vstupní, výstupní a stavový prostor prvku ui tak, aby byl shodný s příslušným prostorem prvku ui a teprve pak můžeme srovnávat jejich chování. Označme symbolem A počet prvků množiny A a uvažujme dva prvky ui a uj systému S, o nichž předpokládáme, že X( ui ) = X( uj ) , S( ui ) = S( uj ) a Y( ui ) = Y( uj ) , tj., že vstupní, stavové a výstupní vektory prvku ui mají stejný počet složek jako vstupní, stavové a výstupní vektory prvku ui . Dále předpokládejme existenci bijektivních zobrazení ϕij , δij , ψij , τij (bijekce znamená „vzájemně jednoznačné zobrazení na“): ϕij : Ω I ( ui ) → Ω I ( uj ) δij : Ω S ( ui ) → Ω S ( uj ) ψij : Ω O ( ui ) → Ω O ( uj ) τij : Ti → Tj Zobrazení ϕij , δij , ψij lze vytvářet na základě korespondence abeced vstupních, stavových a výstupních proměnných prvků ui a ui jejichž prostřednictvím jsou kódovány vstupy, stavy a výstupy prvků systému. 8 Zobrazení τij zachovává uspořádání, tzn., že pro libovolné t1, t2 ∈ Ti pro které platí t2 ≥ t1 , je τij (t2 ) ≥ τij (t1 ) . Nechť zi je chování prvku ui, zj je chování prvku uj a nechť zobrazení ϕij , δij , ψij jsou bijektivní zobrazení definovaná mezi vstupním, stavovým a výstupním prostorem prvku ui a prvku uj a τij je prosté zobrazení definované mezi časovými množinami Ti a Tj . Prvky ui a uj mají stejné chování, což se značí zi ≡ zj , jestliže pro každý prvek [x, s, t] definičního oboru zobrazení zi a jeho obraz [y, t1], resp. [s, t2] v zobrazení zj platí: [ ϕij (x ), δij (s ), τij (t ) ] → [ ψij (x ), τij (t1 ) ] [ ϕij (x ), δij (s ), τij (t ) ] → [ δij (s ), τij (t2 ) ] Charakteristika systému Mějme systém S obsahující prvky u1, u2, . . . , un , které tvoří univerzum U systému S. Jsou-li ui a uj dva libovolné prvky systému S, zajímá nás, zda je chování prvku ui závislé na chování prvku uj . Nejdříve zodpovíme otázku „přímé závislosti“ definováním vazeb mezi prvky systému realizovaných propojením některých vstupních proměnných prvku ui s některými výstupními proměnnými prvku uj . Nechť X(ui) je množina vstupních proměnných prvku ui a Y(uj) je množina výstupních proměnných prvku uj . Propojení prvku ui s prvkem uj lze popsat jako binární relaci Rij která je definovaná takto: Rij = { (xik , yjl) ; vstupní proměnná xik prvku ui je propojena s výstupní proměnnou yjl prvku uj } Příklad binární relace Rij pro prvky ui a uj je na následujícím obrázku. Rij = { (xi1 , yj2), (xi2 , yj3), (xi3 , yj4), (xi4 , yj5) } 9 Rii = ∅ Rjj = { (xj1 , yj5) } Dále budeme předpokládat, že libovolná vstupní proměnná může být propojena nanejvýš s jedinou výstupní proměnnou. Tento předpoklad vylučuje možnost vzniku konfliktních situací při interakci prvků. Relace Rij potom implikuje existenci funkce fij: X j ( ui ) → Y i ( uj ) , kde: X j ( ui ) ⊆ X ( ui ) ; X j ( ui ) = { xik ; (xik , yjl) ∈ Rij pro všechna yjl } Y i ( uj ) ⊆ Y ( uj ) ; Y i ( uj ) = { yjl ; (xik , yjl) ∈ Rij pro všechna xik } fij (xik ) = { yjl ; (xik , yjl) ∈ Rij } Funkce fij představuje zobrazení na množinu Y i ( uj ). Množina X j ( ui ) reprezentuje ty vstupní proměnné prvku ui jejichž prostřednictvím chování prvku ui přímo závisí na chování prvku uj. Množina Y i ( uj ) reprezentuje ty výstupní proměnné prvku uj které přímo ovlivňují chování prvku ui. Pro počet prvků množiny X j ( ui ) a Y i ( uj ) plati: X j ( ui ) ≥ Y i ( uj ) Je-li Y i ( uj.) = ∅ , pak také Xj ( ui.) = ∅ , což znamená, že prvek ui není propojen (není přímo závislý) s prvkem uj . Je-li i = j , pak Y i ( uj.) ≠ ∅ implikuje propojení prvku ui se sebou samým. Tento specifický typ propojení prvku ui se nazývá jednoduchá zpětná vazba prvku ui . Propojení dvou prvků se dá snadno rozšířit na propojení všech prvků systému: X = ∪ X(ui) pro i ∈ < 1; n > množina všech vstupních proměnných prvků systému. Y = ∪ Y(ui) pro i ∈ < 1; n > množina všech výstupních proměnných prvků systému. Relace R, která definuje propojení vstupů a výstupů všech prvků univerza U, se nazývá charakteristika systému a je definována takto: R = { (xik , yjl) ; xik ∈ X(ui) , yjl ∈ Y(uj) pro i, j ∈ <1; n>, 1≤ k ≤ ki , 1≤ l ≤ lj a (xik , yjl) ∈ Rij } Charakteristiku systému R lze vyjádřit pomocí binární relace Rij takto: R = ∪ Rij pro i, j ∈ < 1; n > Charakteristika systému popisuje strukturu systému na nejnižší úrovni jeho dekompozice. Často se charakteristika systému udává ve tvaru tzv. incidenční matice, která představuje maticovou reprezentaci binární relace. 10 Přiklad: Mějme systém, znázorněný na následujícím obrázku. Budeme předpokládat, že vstupní a výstupní proměnné jednotlivých prvků systému jsou indexovány zleva doprava. Univerzum systému : U = { u1, u2, u3, u4, u5} Množiny vstupních a výstupních proměnných prvků systému : X( u1 ) = { x11, x12, x13, x14 } Y( u1 ) = { y11} X( u2 ) = { x21, x22 } Y( u2 ) = { y21, y22 } X( u3 ) = { x31, x32 } Y( u3 ) = { y31, y32, y33 } X( u4 ) = { x41} Y( u4 ) = { y41, y42 } X( u5 ) = { x51} Y( u5 ) = { y51, y52 } Charakteristika systému : R = { (x11 , y21), (x13 , y42), (x14 , y33), (x21 , y51), (x31 , y52), (x22 , y22), (x32 , y11), (x41 , y32), (x51 , y31) } Důležité jsou rovněž otázky strukturální podobnosti systémů. Tato problematika vede někdy pouze k vyšetřování existence, resp. neexistence strukturální vazby mezi prvky daného systému. Z toho důvodu se zavádí abstraktnější vymezení pojmu propojení prvků systému, popsané relací R ⊆ U2, která je definována takto: R = { (ui , uj) ; ui , uj ∈ U a existuje prvek r ∈ R tak, že r = (xik , yjl) , kde xik ∈ X(ui) , yjl ∈ Y(uj) } 11 Relace R určuje takové dvojice prvků systému, mezi nimiž existuje vazba. Pro předchozí příklad systému má relace R následující podobu: R = { (u1 , u2), (u1 , u4), (u1 , u3), (u2 , u5), (u3 , u5), (u2 , u2), (u3 , u1), (u4 , u3), (u5 , u3) } Pojem systém Systémem S rozumíme dvojici: . S = ( U, R ) kde U je univerzum systému S a R je charakteristika systému S . Atributy jednotlivých prvků systému určují atributy celého systému S následujícím způsobem: X = ∪ X(ui) pro i ∈ < 1; n > množina vstupních proměnných všech prvků systému. Y = ∪ Y(ui) pro i ∈ < 1; n > množina výstupních proměnných všech prvků systému. S = ∪ S(ui) pro i ∈ < 1; n > množina stavových proměnných všech prvků systému. Z = ∪ Zi pro i ∈ < 1; n > chování všech prvků systému S . T = ∪ Ti pro i ∈ < 1; n > časová množina systému S . Okolí systému Pod pojmem okolí systému budeme rozumět takovou entitu, která je zdrojem podnětů na systém a která přijímá reakce systému na tyto podněty. Okolí systému S značíme symbolem u0 a v některých případech je považujeme za prvek univerza systému S , tj. u0 ∈ U . Okolí systému je charakterizováno následujícími atributy: a) množina V = { v1, v2, . . . , vp } b) množina W = { w1, w2, . . . , wq } vstupních proměnných celého systému S výstupních proměnných celého systému S c) prvky množiny V nabývají hodnot z množiny I , která se nazývá vstupní abeceda systému d) prvky množiny W nabývají hodnot z množiny O, která se nazývá výstupní abeceda systému e) vektor (v1, v2, . . . , vp ) hodnot ze vstupní abecedy I , tj. podnět z okolí na systém 12 f) vektor (w1, w2, . . . , wq ) hodnot z výstupní abecedy O , tj. reakce systému na podnět g) Ω I ( u0 ) = { ( v1, v2, . . . , vp ) } prostor podnětů h) Ω O ( u0 ) = { ( w1, w2, . . . , wq ) } prostor reakcí . Strukturu propojení okolí u0 a systému S zachycuje následující obrázek. Mějme množinu vstupních proměnných všech prvků systému X a množinu výstupních proměnných všech prvků systému Y. Pak relace QI ⊆ X × V popisuje strukturu vstupní vazby mezi okolím a systémem následujícím způsobem: r ∈ QI , r = (xik , vj) , i vstupní proměnná x k ∈ X(ui) prvku ui je ztotožněna se vstupní proměnnou vj ∈ V systému S. Obdobně relace: Q0 ⊆ W × Y popisuje strukturu výstupní vazby mezi systémem a okolím tímto způsobem: r ∈ QO , r = (wi , yjl) , j výstupní proměnná wi ∈ W systému S je ztotožněna s výstupní proměnnou y l ∈ Y(uj) prvku uj. Strukturu vzájemné vazby systému S a okolí u0 popisuje binární relace: Q = QI ∪ Q0 Analogicky s definicí relace R můžeme definovat abstraktnější relaci Q ⊆ (U ∪ {u0}) následujícím způsobem: Q = { (ui , uj) ; ui , uj ∈ (U ∪ { u0 }) a existuje prvek r ∈ Q tak, že r = (xik , vj) , i j kde x k ∈ X(ui) , vj ∈ V pro uj = u0 a r = (wi , y l) , kde wi ∈ W , yjl ∈ Y(uj) pro ui = u0 } 13 Pojem událost Pod pojmem událost budeme rozumět nejen změnu stavu prvku (hodnoty některé stavové proměnné prvku), ale také změnu hodnoty vstupní nebo výstupní proměnné prvku v určitém časovém okamžiku. Nechť U je univerzum systému a pro každý prvek ui ∈ U je ΩI ( ui ) , resp. ΩS ( ui ), resp. ΩO ( ui ) vstupní,.resp. stavový, resp. výstupní prostor a nechť Ti ⊆ < 0; ∞) je časová množina prvku ui . Označíme: e I ( ui ) ⊆ Ω I ( ui ) × Ti množinu vstupních událostí prvku ui e S ( ui ) ⊆ Ω S ( ui ) × Ti množinu výstupních událostí prvku ui e O ( ui ) ⊆ Ω O ( ui ) × Ti množinu stavových událostí prvku ui Pak lze chování prvku ui které je popsané dvojicí zobrazení: Ω I ( ui ) × Ω S ( ui ) × Ti → Ω O ( ui ) × Ti Ω I ( ui ) × Ω S ( ui ) × Ti → Ω S ( ui ) × Ti interpretovat následujícím způsobem: • vstupní a (nebo) stavová událost prvku ui v čase t1 generuje stavovou událost prvku ui v čase t2 • vstupní a (nebo) stavová událost prvku ui v čase t1 generuje výstupní událost prvku ui v čase t2 . Přitom platí: t1, t2 ∈ Ti a t2 ≥ t1 . Pojem interakce mezi prvky systému Uvědomíme-li si, že existence určitých strukturálních vazeb, které jsou realizovány ztotožněním vstupních proměnných prvku ui s výstupními proměnnými prvku uj má za následek ztotožnění vstupních událostí prvku ui s výstupními událostmi prvku uj, pak chování prvku ui v určitém časovém okamžiku je určeno dvěma následujícími faktory: • historií chování prvku, reprezentovanou stavovými proměnnými (hodnotami těchto stavových proměnných) daného prvku • interakcemi s jinými prvky systému, resp. s okolím systému u0 realizovanými skládáním vstupních událostí daného prvku z výstupních událostí těch prvků systému, se kterými má tento prvek strukturální vazby. Dále upřesníme pojem skládání vstupní události prvku ui z výstupních událostí těch prvků, které jsou zdrojem interakcí určujících chování prvku ui. V zobecněném pohledu pojem skládání událostí umožní vyjádřit povahu závislosti chování systému na struktuře systému. 14 Nechť R je relace popisující strukturální vazby mezi prvky systému a nechť pro ui , uj ∈ U je (ui , uj) ∈ R . Dále nechť Y i ( uj ) = ∅ , resp. Xj ( ui ) = ∅ je podmnožinou vstupních proměnných prvku ui , resp. výstupních proměnných prvku uj , nad nimiž jsou realizovány strukturální vazby mezi prvkem ui a uj . Tyto vazby popisuje zobrazení: ƒij : Dále uvažujeme: Xj ( ui ) → Y i ( uj ) . Tij ⊆ Ti ∩ Tj , kde Ti , resp. Tj je časová množina prvku ui resp. uj a předpokládejme, že Tij ≠ ∅ . Množina Tij obsahuje časové okamžiky, ve kterých dochází k interakcím mezi prvkem ui a prvkem uj ztotožněním vstupních proměnných x ∈ Xj ( ui ) prvku ui s výstupními proměnnými y ∈ Y i ( uj ) . Označme dále: Ω Ij ( ui ) = { ( xi1, xi2, . . . , xim ); xik ∈ Xj ( ui ), k ∈ < 1; m >} - stavový prostor vstupních proměnných prvku ui , Ω Oi ( uj ) = { ( yj1, yj2, . . . , yjn ); yjk ∈ Yi ( uj ), k ∈ < 1; n >} - stavový prostor výstupních proměnných prvku uj . Nad těmito prostory můžeme definovat vstupní a výstupní události tvořící takové složky vstupních a výstupních událostí prvku ui a uj které jsou určeny propojením ƒij prvku ui a uj Množinu vstupních událostí prvku ui lze zapsat: e Ij ( ui ) ⊆ Ω Ij ( ui ) × Tij a množinu výstupních událostí prvku uj lze zapsat: e Oi ( uj ) ⊆ Ω Oi ( uj ) × Tij Pomocí množin událostí eIj ( ui ) a eOi ( uj ) se dá přesně vymezit význam pojmu interakce mezi dvěma prvky systému následujícím způsobem: Množiny událostí eIj ( ui ) a eOi ( uj ) jsou tvořeny těmi složkami vstupních událostí prvku ui a výstupních událostí prvku uj , které jsou ztotožněny zobrazením ƒij . Pro každé t ∈ Tij , pro něž nastane vstupní událost α ∈ eIj ( ui ) , kde α = (s, t) , existuje výstupní událost β ∈ eOi ( uj ) , kde β = (s', t) taková, že každá složka xik ∈ Xj ( ui ) vstupního vektoru s ∈ ΩIj ( ui ) je totožná s odpovídající složkou yjk ∈ Yi ( uj ) výstupního vektoru s' ∈ ΩOi ( uj ) , pro kterou platí: yjk. = ƒij ( xik ) . Uspořádaná trojice prvků ( s , s', t ), kde s ∈ ΩIj ( ui ) , s' ∈ ΩOi ( uj ) , t ∈ Tij se nazývá interakcí prvku ui s prvkem uj v čase t. Je-li tedy v čase t ∈ Tij vstupním vektorem prvku ui vektor x = ( x1, x2, . . . , xpi ) a výstupním vektorem prvku uj vektor y = ( y1, y2, . . . , yqj ) , pak všechny složky xik vektoru x, pro něž platí xik ∈ Xj ( ui ) , mají stejnou hodnotu jako ty složky yjk ∈ Yi ( uj ) vektoru y , které jsou obrazem proměnných xik v zobrazení ƒij . Lze tedy říci, že hodnoty všech složek vstupního a výstupního vektoru, které jsou ztotožněny prostřednictvím zobrazení ƒij , popisují interakci prvku ui s prvkem uj v čase t . 15 Aplikujme tento postup na všechny prvky ujk univerza systému včetně okolí u0 , se kterými má prvek ui definované strukturální vazby, tj. pro něž platí: ( ui , ujk ) ∈ R ∪ Q . Pak vstupní událost prvku ui v čase t je kompozicí interakcí prvků ujk systému S a okolí u0 v čase t . Označíme: e I ( u0 ) ⊆ Ω I ( u0 ) × T množinu vstupních událostí systému e O ( u0 ) ⊆ Ω O ( u0 ) × T množinu výstupních událostí systému , kde T je časová množina systému S . Zobrazení: ζ: e I ( u0 ) → e O ( u0 ) popisuje závislost výstupních událostí (reakcí systému) na vstupních událostech (podnětech okolí). Na rozdíl od vstupních událostí prvku nelze obecně považovat vstupní události systému za závislé na výstupních událostech systému, tedy na výstupních událostech jeho jednotlivých prvků. Vstupní událost systému nelze chápat jako kompozici interakcí systému s okolím, ani okolí se sebou samým. Tato skutečnost odlišuje okolí od libovolného prvku univerza systému. To však znamená, že pro okolí nelze definovat chování, tj. závislost reakcí okolí na reakcích systému. Tímto způsobem pojatá vlastnost okolí systému by se mohla jevit jako omezující v případě, kdy okolí systému je v interakci se systémem i ve směru systém - okolí, tj. kdyby podněty na systém závisely na reakcích systému. Specifikace okolí by pak nutně vyžadovala kromě vstupních proměnných systému a výstupních proměnných systému rovněž stavové proměnné systému (paměť okolí) a dále popis závislosti podnětů na reakcích systému. To by však znamenalo, že okolí má stejné atributy jako libovolný prvek systému. V tomto případě je výhodnější uvažovat okolí jako prvek univerza systému, tedy u0 ∈ U. Takové systémy se nazývají systémy uzavřené (vzhledem k okolí). Systémy z předchozího odstavce se nazývají otevřené, tj. systémy, u nichž u0 ∉ U. Chování systému Mějme systém S = (U, R) a jeho okolí u0 , které má se systémem S definované strukturální vazby prostřednictvím relace Q. Chováním systému se rozumí závislost reakcí systému S na podněty z okolí u0 přičemž je tato závislost uvažována v čase t . V souladu s předchozím označme ΩI ( u0 ) prostor podnětů na systém S a ΩO ( u0 ) prostor reakcí systému S. Prvky těchto prostorů jsou podněty na systém a reakce systému, které jsou reprezentovány vektory hodnot vstupních a výstupních proměnných systému S. Časová :množina systému je T ⊆ < 0; ∞) . Prvky časové množiny T jsou časové okamžiky, ve kterých přicházejí z okolí u0 systému S podněty a ve kterých vznikají reakce systému S na tyto podněty. 16 Chování systému S definuje zobrazení: ζ: Ω I ( u0 ) × T → Ω O ( u0 ) × T , které lze ekvivalentně zapsat ve tvaru: ζ: e I ( u0 ) → e O ( u0 ) . Chování pak můžeme interpretovat takto: podnětu s ∈ ΩI ( u0 ) v čase t ∈ T přísluší reakce . s' ∈ ΩO ( u0 ) v čase ť ∈ T, přičemž předpokládáme, že t ≤ ť, tj. že podnět předchází reakci. Systémy se stejným chováním Mějme dán systém S1 = ( U1 , R1 ) s časovou množinou T1 a chováním ζ1 a dále systém S2 = ( U2 , R2 ) s časovou množinou T2 a chováním ζ2 . Nechť I1 je vstupní abeceda a O1 výstupní abeceda systému S1 , I2 vstupní abeceda a O2 výstupní abeceda systému S2 a dále nechť existují bijektivní zobrazení: γ: σ: I1 → I2 O1 → O2 Tato zobrazení přiřazují podnětům systému S1 podněty systému S2 a reakcím systému S1 reakce systému S2 následujícím způsobem: Je-li v = (v1, v2, . . . , vp ) podnětem systému S1 , tj. v ∈ ΩI ( u0 ) / S1 (symbolem / S1 rozumíme prostor příslušející k systému S1), pak v' = (γ(v1), γ(v2), . . . , γ(vp)) je podnětem systému S2, tj. v' ∈ ΩI ( u0 ) / S2 . Zobrazení γ nazýváme vstupním zobrazením. Korespondenci vektorů v a v' lze zapsat ve tvaru v' = γ(v). Analogicky, je-li w = (w1, w2, . . . , wq ) reakcí systému S1 , tj. w ∈ ΩO ( u0 ) / S1 , pak w' = (σ(w1), σ(w2), . . . , σ(wq )) je reakcí systému S2 , tj. w' ∈ ΩO ( u0 ) / S2. Zobrazení σ se nazývá výstupní zobrazení. Korespondenci vektorů w a w' můžeme zapsat ve tvaru w' = σ(w) . Dále předpokládejme existenci bijektivního zobrazení: ω: T1 → T2 s touto vlastností: pro každé t, ť ∈ T1 , pro které Zobrazení ω je tedy homomorfismem. t ≤ ť , platí ω ( t) ≤ ω ( ť) . Chování systémů S1 a S2 lze definovat jako zobrazení vstupních událostí systému na výstupní události příslušných systémů: ζ1 : e I ( u0 ) / S1 → e O ( u0 ) / S1 ζ2 : e I ( u0 ) / S2 → e O ( u0 ) / S2 . Řekneme, že systémy S1 a S2 mají stejné chování , právě když platí: ke každé dvojici vstupní a výstupní události (eI , eO) systému S1 , pro niž platí eO = ζ1(eI) existuje jediná dvojice vstupní a výstupní události (éI , éO) systému S2 , pro niž platí éO = ζ2(éI). 17 Systémy S1 a S2 mají tedy stejné chování, jsou-li reakce systému S1 na podněty z okolí stejné jako reakce systému S2. To však platí pouze za předpokladu existence vstupního a výstupního zobrazení, které převádí vstupní a výstupní vektory systému S1 na vstupní a výstupní vektory systému S2. Klasifikace prvků systému Spojité prvky Mějme prvek systému ui , jeho časovou množinu Ti a chování prvku popsané dvojicí zobrazení : Ω I ( ui ) × Ω S ( ui ) × Ti → Ω O ( ui ) × Ti Ω I ( ui ) × Ω S ( ui ) × Ti → Ω S ( ui ) × Ti Prvek ui je spojitý prvek (prvek se spojitým chováním), jestliže jeho časová množina Ti = J - R, kde J ⊆ < 0; ∞) je interval, R je konečná nebo spočetná množina reálných čísel a jestliže dvojici zobrazení lze zapsat ve tvaru: y(t) = µ1 ( x( t ), s( t ), t ) s ( t ) = µ2 ( x( t ), s( t ), t ) kde t ∈ Ti a µ1 , µ2 jsou spojité funkce definované na množině Ω I ( ui ) × Ω S ( ui ) × Ti . Příklady spojitých prvků: • Implicitní funkce: Schematické znázornění spojitého prvku - implicitní funkce je na uvedeném obrázku. Vektor vstupních proměnných prvku: x = ( x1, x2, . . . , xn, xn+1 ) Vektor výstupních proměnných prvku: y = ( y1 ) Časová množina prvku: T = < a, b > Chování tohoto prvku je dáno zobrazením f1, které přiřazuje n-tici spojitých funkcí x1(t), x2(t), . . . , xn(t) spojitou funkci y(t) tak, že pro každé t ∈ < a, b > platí: y(t) = f1 ( x1(t), x2(t), . . . , xn(t) , y(t) ) . 18 • Funkční měnič Schematické znázornění spojitého prvku funkční měnič je na uvedeném obrázku. Vektor vstupních proměnných prvku: x = ( x 1 , x 2 , . . . , xn ) Vektor výstupních proměnných prvku: y = ( y1 ) Časová množina prvku T je interval neobsahující body, ve kterých není funkce F definována. Funkce F je spojitá. Chování prvku je jednoznačně určeno rovnicí y = F (x). Diskrétní prvky Prvek ui nazveme diskrétním prvkem (prvkem s diskrétním chováním), je-li časová množina Ti prvku ui dána konečným nebo spočetným souborem časových okamžiků a jestliže pro dvojici zobrazení která popisuje chování prvku ui platí: y ( t1 ) = µ1 ( x( t ), s( t ), t ) s ( t2 ) = µ2 ( x( t ), s( t ), t ) kde x(t) ∈ Ω I ( ui ) , y(t) ∈ Ω O ( ui ) a s(t) ∈ Ω S ( ui ) je po řadě vstupní, výstupní a stavový vektor proměnných prvku ui v čase t . Dále pro časové okamžiky t1, t2 ∈ Ti platí : t ≤ t1, t2 a µ1 , µ2 jsou diskrétní funkce definované na množině Ω I ( ui ) × Ω S ( ui ) × Ti . Příklady diskrétních prvků: • Diskrétní integrátor: Schematické znázornění prvku diskrétní integrátor je na uvedeném obrázku. Vektor vstupních proměnných prvku: x = ( x1 ) Vektor výstupních proměnných prvku: y = ( y1 ) Vektor stavových proměnných prvku: s = ( s1 ) Počáteční podmínka: p = konst. Časovou množinou Ti prvku bude ekvidistantní dělení intervalu < a, b > s krokem h. Chování tohoto prvku při použití Eulerovy formule pro aproximaci výstupu lze popsat dvojicí zobrazení: y ( t1 ) = µ1 ( x( t ), s( t ) ) , s ( t1 ) = µ2 ( x( t ), s( t ) ) , kde zobrazení µ1 = µ2 = s1(t) + h∗x1(t), přičemž s1(a) = p. Stavová proměnná s, slouží k uchování výstupu z předchozího kroku. Dále pro časové okamžiky t, t1 ∈ T platí: t1 = t + h . 19 • Logický prvek NAND Schematické znázornění diskrétního prvku - NAND je na uvedeném obrázku. Vektor vstupních proměnných prvku: x = ∼ ( x 1, x 2 ) Vektor výstupních proměnných prvku: y = ( y1 ) Vstupní a výstupní abecedou tohoto prvku je binární abeceda {0, 1} . Časová množina prvku Ti je tvořena diskrétními časovými okamžiky. Tento prvek nemá stavové proměnné. Chování tohoto prvku je reprezentováno zobrazením zi, které je redukováno pouze na zobrazení µ1 : y ( ti ) = µ1 ( x(ti ), ti ) kde x je vektor vstupních proměnných prvku, y je vektor výstupních proměnných prvku a µ1 je zobrazení dané uvedenou tabulkou. Deterministické a nedeterministické prvky Mějme prvek ui, vektor jeho vstupních proměnných x(t) ∈ ΩI ( ui ) , vektor výstupních proměnných y(t) ∈ ΩO ( ui ), vektor stavových proměnných s(t) ∈ ΩS ( ui ) a časové okamžiky t1, t2 ∈ Ti , přičemž platí : t1 ≤ t2 . Chování prvku ui lze zapsat ve tvaru: y ( t2 ) = µ1 ( x(t1 ), s(t1 ), t1 ) s ( t2 ) = µ2 ( x(t1 ), s(t1 ), t1 ) Jestliže chování prvku ui je určeno jednoznačnými zobrazeními µ1 a µ2, pak prvek ui nazveme deterministickým prvkem (prvkem s deterministickým chováním). Jestliže chování prvku ui je určeno obecně víceznačným zobrazením µ1, nebo µ2, pak se prvek ui nazývá nedeterministickým prvkem (prvkem s nedeterministickým chováním). To znamená, že obrazem některého bodu (x, s, t1) definičního oboru zobrazení µ1, nebo µ2 není jediný bod (y, t2) v zobrazení µ1 a jediný bod (s, t2) v zobrazení µ2, ale množina všech možných bodů (y, t2) v zobrazení µ1 a množina všech možných bodů (s, t2) v zobrazení µ2. 20 Stochastické prvky Prvek ui nazveme stochastickým prvkem (prvkem se stochastickým chováním), jestliže lze jeho chování popsat stochastickými závislostmi. Vstupní prostor , výstupní prostor a stavový prostor stochastického prvku ui jsou dány náhodnými vektory, neboli tzv. vícerozměrnými náhodnými veličinami. Zobrazení µ1 a µ2 , která popisují chování prvku ui se nazývají náhodné funkce nebo také stochastické procesy. Podle tvaru časové množiny se rozlišují diskrétní nebo spojité stochastické prvky. Jestliže časová množina je tvořena konečným nebo spočetným souborem časových okamžiků, mluvíme o diskrétních stochastických prvcích. Je-li časová množina tvořena intervalem, mluvíme o spojitých stochastických prvcích. Přechod z jednoho stavu prvku do druhého, případně výstup příslušející k danému stavu, je ohodnocen určitou pravděpodobností. Stochastické prvky jsou zvláštním případem prvků nedeterministických. Klasifikace systémů Spojité systémy Systém se nazývá spojitým systémem (systémem se spojitým chováním), jestliže všechny jeho prvky jsou spojité (mají spojité chování). U těchto systémů budou atributy vyjádřeny pomocí vektorů hodnot (vstupních, výstupních nebo stavových), přičemž zde může existovat i jejich nespojitost, která je podmíněna událostmi spojitými i nespojitými (dopředu známými i neznámými). Z matematického hlediska jsou spojité systémy popsané v kombinaci s diferenciálními rovnicemi obyčejnými i parciálními, diferenčními rovnicemi, algebraickými rovnicemi, apod. Jako příklady lze uvést mechanické systémy, elektronické systémy, ale také třeba krevní oběh člověka. Logické systémy Logické systémy mohou být spojité, diskrétní nebo kombinované. Charakteristickým znakem těchto systémů je konečný počet složek vektorů hodnot v ustáleném stavu (obvykle dvě). Tyto systémy realizují funkce matematické logiky, respektive zpracovávají informace v číslicové formě. Příkladem těchto systémů jsou různé kombinační nebo sekvenční automatiky a číslicové počítače. Z hlediska modelování rozlišujeme u logických systémů čtyři úrovně: 1) fyzikální úroveň. Předmětem zkoumání v této úrovni je systém, v němž uvažujeme základní prvky, například rezistory a tranzistory. Vlastnosti těchto prvků jsou dány fyzikálními veličinami, které charakterizují jejich funkci. Veličiny mají fyzikální rozměry. Systémy v této úrovni jsou popsány například diferenciálními rovnicemi a spadají tedy do problematiky spojitých systémů. 2) úroveň logických členů. Zkoumání systémů v této úrovni vychází již z určitých abstrakcí. Vektory hodnot mají již pouze logickou hodnotu a elementárními prvky jsou zde jednotlivé členy realizující základní logické funkce, například logický součin a součet. Změny vektorů hodnot se předpokládají obvykle skokové a dynamika se postihuje časovým zpožděním výstupů logických členil v závislosti na vstupech. 21 3) Úroveň meziregistrových přenosů Tato úroveň předpokládá složitější celky, které jsou v podstatě sestavené z logických členů, například paměť, dekodér a registr. Je zde možné vyčlenit skupinu řídicích vektorů hodnot a jinou skupinu vektorů hodnot, kterou tvoří zobrazené informace. 4) Úroveň systémová. Tato úroveň se nejčastěji rozlišuje v souvislosti s výpočetními systémy. Na zařízení nebo na jeho část je možné se dívat jako na obslužný systém, který splňuje požadavky ve smyslu zpracování informací. Tato problematika spadá do oblasti systémů nespojitých (diskrétních). Diskrétní systémy O těchto systémech se hovoří také jako o systémech nespojitých nebo o systémech hromadné obsluhy. Systémy tohoto druhu obsahují v nejjednodušším případě zařízení - uzel obsluhy, který zpracovává jednotlivé položky - transakce. Transakce vznikají ve zvláštních prvcích, kterým říkáme zdroje požadavků - generátory transakcí. Jestliže vznikne požadavek na další zpracování ve formě příchodu další transakce a uzel obsluhy je obsazený, transakce musí čekat na zpracování v dalším prvku systému, který se nazývá fronta. Kromě uvedených základních prvků systémů zde mohou existovat ještě další prvky, které mohou navzájem vytvářet značně složité systémy. Příklady takových systémů jsou řídící číslicový počítač napojený na technologický proces, pokladna kina nebo dílna výrobního závodu. Systém S se nazývá diskrétním systémem (systémem s diskrétním chováním), jestliže všechny jeho prvky jsou diskrétní (mají diskrétní chování). Kombinované systémy Diskrétní a spojité systémy představují disjunktní třídy obecných systémů. V praxi se často vyskytují systémy, které jsou složeny současně z prvků diskrétních i spojitých. Systémy tohoto druhu se nazývají systémy kombinované (systémy s kombinovaným chováním). Deterministické, nedeterministické a stochastické systémy Systém S nazveme.deterministickým systémem (systémem s deterministickým chováním), jestliže všechny jeho prvky jsou deterministické (mají deterministické chování). Systém, který obsahuje jeden nebo více nedeterministických prvků (prvků s nedeterministickým chováním), nazveme nedeterministickým systémem (systémem s nedeterministickým chováním). Systém, jehož všechny nedeterministické prvky jsou stochastické (mají stochastické chování), nazveme stochastickým systémem (systémem se stochastickým chováním). Systémy s diskrétním i spojitým chováním mohou být současně deterministické, nedeterministické nebo stochastické. 22 Základy MATLABu Formát čísel: Matlab má několik možných formátů zobrazování čísel. Pro všechny formáty napíšeme HELP FORMAT. Zde jsou nejpoužívanější: FORMAT základní nastavení, stejné jako short FORMAT SHORT číslo s pěti místy za desetinnou čárkou FORMAT LONG číslo s patnácti místy za desetinnou čárkou FORMAT SHORT E číslo s pohyblivou des. čárkou a exponentem, 5 míst za des. čárkou FORMAT LONG E číslo s pohyblivou des. čárkou a exponentem, 15 místy za des. čárkou Pro případ, že se nám příkaz, který chceme zadat, nevejde na řádek, můžeme ho zapsat na dva řádky, přičemž za část příkazu na prvním řádku napíšeme tři tečky, stiskneme ENTER a na další řádek dopíšeme zbytek příkazu. Př: x = [1 5 6 7 1 3 … 5 1 6] Dvojtečka: Vytvoření dlouhých polí lze usnadnit použitím dvojtečky ":". Standardní přírůstek je 1. Pokud chceme jiný přírůstek napíšeme X = 0.1: 0.15: 1.5, což znamená od 0.1 do 1.5 s přírůstkem 0.15 Př.: Chceme vytvořit posloupnost čísel, která bude vypadat stejně jako na obrázku, a to ve vzdálenosti 1. X (1:1:5) = 0; X (6:1:15) = 1; X (16:1:25) = 2; Z = (0.1:0.1:2); pro klesání si vytvoříme rostoucí posloupnost čísel X (26:1:45) = (2 – Z); posloupnost odečteme od maxima. STEM (X) Pro vykreslení posloupnosti X použijeme příkaz STEM Výsledek: Středník: Středník ";" použitý za příkazem způsobí, že se potlačí výpis hodnot. Čárka: Na jeden řádek můžeme umístit více příkazů. Musí být však odděleny čárkou, popřípadě středníkem. Středník nám potlačí výpis, zatímco čárka ne. Proměnné a matice: Každá proměnná v Matlabu je brána jako matice, přestože má rozměr 1x1. Dimenzování ani deklarování typu se v Matlabu nepoužívá, protože Matlab to dělá automaticky. Index v Matlabu u matic začíná vždy od jedničky, ne od nuly. Jednotlivé prvky se zapisují řádkovým a sloupcovým indexem. Např. A(1,2) je prvek na prvním řádku a ve druhém sloupci. Dvojtečka je také používána pro označení celého rozsahu hodnot. Proto když napíšeme A(2,:) Matlab vypíše celý druhý řádek. Komplexní čísla: Proměnné v Matlabu nemusí být pouze reálné, ale mohou být také komplexní. Pro imaginární část se používají symboly i a j. Zadávají se pak ve formátu např.: c = 2 + 6i. Vypsání jednotlivých částí takovéhoto čísla se provádí: C_re = real(c), C_im = imag(c) Pro absolutní hodnotu a úhel použijeme příkazy: C_abs = abs(c), C_uhel_rad = angle(c) Pozn.: Úhel je udáván v radiánech. Převod na stupně umožní výpočet C_uhel_deg = C_uhel_rad*180/pi. Zaokrouhlování čísel: Příkaz ROUND (X) zaokrouhlí X směrem k nejbližšímu celému číslu (klasické zaokrouhlování). Příkaz FIX (X) odřízne desetinnou část. Příkaz FLOOR (X) „zaokrouhlí“ X směrem k nižšímu celému číslu Příkaz CEIL (X) „zaokrouhlí“ X směrem k vyššímu celému číslu Zjištění Minima a Maxima sloupce: Příkazy MIN (X), MAX(X) vrací hodnotu minima resp. maxima z každého sloupce matice X Základní příkazy MATLABu close name close all - uzavře námi požadovanou aktivní „figuru“ - graf - uzavře všechna okna kromě „MATLAB Editor/Dubugger“ dir - vypíše obsah aktuálního adresáře – obdobně jako DOS path - vypíše všechny přístupné adresáře what - vypíše jednotlivé soubory Matlabu podle typu (resp. přípony) z aktuálního adresáře M-files in the current directory D:\Projekt MAT-files in the current directory D:\Projekt MDL-files in the current directory D:\Projekt type - vypíše obsah souboru s příponou M, bez otevření MATLAB Editor /Debugger who whos - vypíše na obrazovky veškeré proměnné, které jsou momentálně zadány do Matlabu - stejný výpis jako who, jen s tím rozdílem, že Matlab vypíše nejen názvy proměnných, ale také jejich velikost (Size), počet bytů alokovaných pro dané pole dané proměnné (Bytes) a jejich typ (Class) - otevře Workspace Browser, který podává stejné informace jako whos. Rozdíl je v tom, že umožňuje jednotlivé proměnné jednoduše vymazat, nebo si tyto proměnné otevřít v MATLAB Editor/Debuggeru, který zobrazí jejich hodnoty a kde můžeme tyto hodnoty velmi jednoduše přepisovat a měnit samotnou velikost proměnné (prodloužit, zkrátit, přidat sloupce,…). Pokud v Workspace Browseru dvakrát klikneme pomalu na nějakou proměnnou, můžeme změnit také její název. workspace edit - tento příkaz nám otevře MATLAB Editor /Debugger edit name - nám otevře MATLAB Editor /Debugger se zadaným souborem Pokud chceme smazat nějakou proměnou nebo pokud chceme smazat všechny proměnné, použijeme příkaz CLEAR clear name - kde name představuje název proměnné clear all - smaže všechny proměnné clc - vymaže obrazovku v Matlabu (Clear Command Window) clf - pokud máme otevřený nějaký graf a chceme ho vymazat, použijeme příkazu clf (Clear current figure window) vymaže aktuální „figuru“ echo on/off Pokud nechceme vypisovat při spouštění M-souboru, co který řádek provádí, napíšeme na konec středník. Pokud později chceme vypisovat veškeré řádky včetně jejich příkazů, použijeme příkaz echo on. Tento příkaz začne vypisovat nejen řádky se středníkem na konci, ale také informační řádky (před ty se na začátek řádku dává znak %). Pro vypnutí tohoto zobrazování máme funkci echo off. size - tento příkaz nám slouží ke zjištění velikosti, kde první číslo z výsledku znamená počet řádků a druhé číslo počet sloupců. length - příkaz LENGTH nám vrací délku proměnné a to délku která je „větší“, což znamená, že pokud máme matici M x N, kde M > N, tak nám vrací hodnotu M. Jinak se dá říci, že příkaz LENGTH nám vrací „větší“ hodnotu z příkazu SIZE. input - při programování v M-souborech se používá INPUT pro načtení proměnné z klávesnice. - použití: A = input (‘zde napis hodnotu promenne A: ’) disp - při programování v M-souborech se tento příkaz používá, pokud chceme vypsat nějakou hlášku uživateli na obrazovku. - použití: disp(‘Toto je text, ktery vam chci sdelit.’) pause (n) - příkaz pro pozdržení dalších výpočtů, kde n představuje čas v sekundách, na který se výpočet zastaví. Pokud napíšeme PAUSE – bez udání času, Matlab bude čekat na stisk libovolné klávesy. Zadání aktuálních cest Pro práci se soubory je nutno se naučit používat nastavování cest. K tomu nám slouží buďto zadání cesty stejně jako v DOSu (příkaz CD), nebo můžeme použít v menu Matlabu „File“ - „Set Path…“, kde se můžeme podívat jak na aktuální adresář, tak na všechny adresáře, do kterých máme přímý přístup. Do tohoto seznamu si můžeme přidat také svoje cesty (ikona Add to path). Current Directory nám ukazuje aktuální adresář, jenž můžeme změnit pomocí ikony Browse… Pro vypsání aktuální cesty přímo z Matlabu použijeme funkci PWD. Uložení souboru Pro uložení souboru nám slouží funkce save ve tvarech: 1) save 2) save filename 3) save filename variables 4) save filename options 5) save filename variables options 1) Při použití tohoto výrazu nám Matlab uloží veškeré proměnné, které jsme použili od chvíle, kdy jsme naposled použili příkaz CLEAR ALL do souboru „matlab.mat“ v aktuálním adresáři. 2) dtto bod 1) jen s tím rozdílem, že proměnné uloží do námi zvoleného souboru v aktuálním adresáři. 3) Uloží do námi zvoleného souboru v aktuálním adresáři zvolené proměnné (ty musí být ovšem definovány) 4) dtto bod 2) pouze můžeme zvolit, v jakém tvaru se bude soubor ukládat 5) dtto bod 3) pouze můžeme zvolit, v jakém tvaru se bude soubor ukládat v bodě 1) až 3) se bude soubor ukládat ve tvaru –mat options: Př: -ascii -ascii –double -ascii –tabs -ascii -double –tabs -V4 -append uloží v 8-číselném ASCII formátu uloží v 16-číselném ASCII formátu uloží v 8-číselném ASCII formátu, tabelátorem oddělené uloží v 16-číselném ASCII formátu, tabelátorem oddělené uloží ve formátu Matlabu verze 4.0 uloží na konec souboru (pouze pro soubory typu –mat) c = [0 0 0 0 1 5 6 7 4 1 6 5 4 6 9 7 1 3 2 5 4 6 8 4 4 6 5 6 7 5 6 9 1 3 5]; d = [0; 0; 0; 0; 1; 5; 6; 7; 4; 1; 6; 5; 4; 6; 9; 7; 1; 3; 2; 5; 4; 6; 8; 4; 4; 6; 5; 6; 7; 5; 6; 9; 1; 3; 5]; e = [0 0; 0 0; 1 5; 6 7; 4 1; 6 4; 6 9; 5 7; 1 3; 2 5; 4 6]; save promenne.mat c d save promenne.mat e –append nebo save promenne.txt c d e –ascii –tabs … pozor - takto uložený soubor nepůjde již v Matlabu otevřít save promenne.txt c d e –ascii –tabs –double … pozor - takto uložený soubor nepůjde již v Matlabu otevřít nebo Otevření souboru Pro otevření souboru nám slouží funkce load ve tvarech: 1) load 2) load filename 3) load ('filename') 4) load filename -ascii 5) load filename –mat 1) Při použití tohoto výrazu Matlab otevře soubor „matlab.mat“ v aktuálním adresáři, pokud existuje. 2) Matlab nám otevře zadaný soubor za předpokladu, že byl vytvořen a uložen z Matlabu, s příponou *.mat 3) Řeší nám tentýž problém, pouze se zde dá zadat kompletní cesta k souboru, opět se musí jednat o soubor vytvořený v Matlabu, s příponou *.mat 4) Otevře soubor typu ascii. Pokud již máme zadán soubor pouze s vytvořenými čísly, musíme tento soubor otevřít ve tvaru ASCII. To znamená, že tento soubor nebude vytvářen v Matlabu. Název proměnné, do které se nám soubor otevře, je shodný s názvem souboru. 5) Otevře soubor typu .mat, což označuje soubory vytvořené a uložené v Matlabu. Př: nebo load promene –mat load (’d:\Work\Matlab\promene.mat’) Operace s maticemi Některé důležité matice v MATLABu: Z = zeros (5,3) je matice 5x3, kde všechny prvky jsou rovny nule O = ones (3,3) je matice 3x3, kde všechny prvky jsou rovny jedné E = eye (3) je jednotková matice 3x3. Operace s maticemi jsou v Matlabu dobře propracovány, ale při jejich používání může vzniknout řada chyb, a proto je třeba při jejich používání dávat velký pozor! Pro lepší pochopení si vysvětlíme jejich použití na dvou maticích A a B. A = [1 2; 5 6] B = [3 4; 2 1] Transpozice matice: Pro transpozici se používá znak apostrofu ('). Pozn.: U matic s komplexními čísly použití symbolu ' vytvoří matici transponovanou s prvky komplexně sdruženými. Př.: C = [2+i -1+5i; 6 4+3i] D = C’ povšimněte si znamének u imaginární části Pokud bychom chtěli provést pouze transpozici bez sdružení, musíme použít symbol .' (tečka apostrof) Sčítání a odčítání: Tyto operace jsou vykonávány běžným způsobem, tzn. prvek po prvku. Př: A + B Pokud chceme ke každému prvku matice přičíst (resp. odečíst) stejné číslo, můžeme tuto operaci zapsat takto: A+6 Podmínkou sčítání a odčítání matic je, že matice musí mít stejný rozměr, jinak Matlab hlásí chybu. Násobení: Operace A .* B (tečka hvězdička) představuje násobení příslušných prvků matic. Matice A, B musí mít stejný rozměr, nebo jedna z nich musí být skalár. Skutečný maticový součin se zapíše jako A * B, musí ovšem platit, že počet sloupců matice A musí souhlasit s počtem řádků matice B. Dělení: Dělení jednotlivých prvků matic se označuje A ./ B (tečka lomítko) Operace A / B není již tak úplně zřejmá na pochopení. Navíc existuje tzv. levé dělení ( \ ) a pravé dělení ( /). Levé dělení A \ B. Jestliže A je čtvercová matice, je A \ B ve výsledku totéž jako inv(A) * B. Pravé dělení A / B = B * inv(A) Exponenciální operace: Opět existuje prvková ( .^ ) a maticová ( ^ ). Dále máme možnost použít funkce SQRT a EXP, které pracují běžným způsobem s prvky matic. Simulink To start Simulink, you must first start MATLAB. Consult your MATLAB documentation for more information. You can then start Simulink in two ways: • Click on the Simulink icon on the MATLAB toolbar. • Enter the simulink command at the MATLAB prompt. On Microsoft Windows platforms, starting Simulink displays the Simulink Library Browser. The Library Browser displays a tree-structured view of the Simulink block libraries installed on your system. You can build models by copying blocks from the Library Browser into a model window (this procedure is described later in this chapter). On UNIX platforms, starting Simulink displays the Simulink block library window. The Simulink library window displays icons representing the block libraries that come with Simulink. You can create models by copying blocks from the library into a model window. On Windows, you can display the Simulink library window by right-clicking the Simulink node in the Library Browser window. Creating a New Model To create a new model, click the New button on the Library Browser’s toolbar (Windows only) or choose New from the library window’s File menu and select Model. You can move the window as you do other windows. Editing an Existing Model To edit an existing model diagram, either: • Click the Open button on the Library Browser’s toolbar (Windows only) or select Open from the Simulink library window’s File menu and then choose or enter the model filename for the model to edit. • Enter the name of the model (without the .mdl extension) in the MATLAB command window. The model must be in the current directory or on the path. Entering Simulink Commands You run Simulink and work with your model by entering commands. You can enter commands by: • Selecting items from the Simulink menu bar • Selecting items from a context-sensitive Simulink menu (Windows only) • Clicking buttons on the Simulink toolbar (Windows only) • Entering commands in the MATLAB command window Using the Simulink Menu Bar to Enter Commands The Simulink menu bar appears near the top of each model window. The menu commands apply to the contents of that window. Using Context-Sensitive Menus to Enter Commands Simulink displays a context-sensitive menu when you click the right mouse button over a model or block library window. The contents of the menu depend on whether a block is selected. If a block is selected, the menu displays commands that apply only to the selected block. If no block is selected, the menu displays commands that apply to a model or library as a whole. Using the Simulink Toolbar to Enter Commands Model windows in the Windows version of Simulink optionally display a toolbar beneath the Simulink menu bar. To display the toolbar, check the Toolbar option on the Simulink View menu. Toolbar The toolbar contains buttons corresponding to frequently used Simulink commands, such as those for opening, running, and closing models. You can run such commands by clicking on the corresponding button. For example, to open a Simulink model, click on the button containing the open folder icon. You can determine which command a button executes by moving the mouse pointer over the button. A small window appears containing text that describes the button. The window is called a tooltip. Each button on the toolbar displays a tooltip when the mouse pointer hovers over it. You can hide the toolbar by unchecking the Toolbar option on the Simulink View menu. Using the MATLAB Window to Enter Commands When you run a simulation and analyze its results, you can enter MATLAB commands in the MATLAB command window. Undoing a Command You can cancel the effects of up to 101 consecutive operations by choosing Undo from the Edit menu. You can undo these operations: • Adding, deleting, or moving a block • Adding, deleting, or moving a line • Adding, deleting, or moving a model annotation • Editing a block name • Creating a subsystem You can reverse the effects of an Undo command by choosing Redo from the Edit menu. Simulink Windows Simulink uses separate windows to display a block library browser, a block library, a model, and graphical (scope) simulation output. These windows are not MATLAB figure windows and cannot be manipulated using Handle Graphics® commands. Simulink windows are sized to accommodate the most common screen resolutions available. If you have a monitor with exceptionally high or low resolution, you may find the window sizes too small or too large. If this is the case, resize the window and save the model to preserve the new window dimensions. Status Bar The Windows version of Simulink displays a status bar at the bottom of each model and library window. Status Bar When a simulation is running, the status bar displays the status of the simulation, including the current simulation time and the name of the current solver. You can display or hide the status bar by checking or unchecking the Status Bar option on the Simulink View menu. Zooming Block Diagrams Simulink allows you to enlarge or shrink the view of the block diagram in the current Simulink window. To zoom a view: • Select Zoom In from the View menu (or type r) to enlarge the view. • Select Zoom Out from the View menu (or type v) to shrink the view. • Select Fit System to View from the View menu (or press the space bar) to fit the diagram to the view. • Select Normal from the View menu to view the diagram at actual size. By default, Simulink fits a block diagram to view when you open the diagram either in the model browser’s content pane or in a separate window. If you change a diagram’s zoom setting, Simulink saves the setting when you close the diagram and restores the setting the next time you open the diagram. Selecting Objects Many model building actions, such as copying a block or deleting a line, require that you first select one or more blocks and lines (objects). Selecting One Object To select an object, click on it. Small black square “handles” appear at the corners of a selected block and near the end points of a selected line. For example, the figure below shows a selected Sine Wave block and a selected line. When you select an object by clicking on it, any other selected objects become deselected. Selecting More than One Object You can select more than one object either by selecting objects one at a time, by selecting objects located near each other using a bounding box, or by selecting the entire model. Selecting Multiple Objects One at a Time To select more than one object by selecting each object individually, hold down the Shift key and click on each object to be selected. To deselect a selected object, click on the object again while holding down the Shift key. Selecting Multiple Objects Using a Bounding Box An easy way to select more than one object in the same area of the window is to draw a bounding box around the objects: 1 Define the starting corner of a bounding box by positioning the pointer at one corner of the box, then pressing and holding down the mouse button. Notice the shape of the cursor. 2 Drag the pointer to the opposite corner of the box. A dotted rectangle encloses the selected blocks and lines. 3 Release the mouse button. All blocks and lines at least partially enclosed by the bounding box are selected. Selecting the Entire Model To select all objects in the active window, choose Select All from the Edit menu. You cannot create a subsystem by selecting blocks and lines in this way. Blocks Blocks are the elements from which Simulink models are built. You can model virtually any dynamic system by creating and interconnecting blocks in appropriate ways. This section discusses how to use blocks to build models of dynamic systems. Block Data Tips On Microsoft Windows, Simulink displays information about a block in a pop-up window when you allow the pointer to hover over the block in the diagram view. To disable this feature or control what information a data tip includes, select Block data tips options from the Simulink View menu. Virtual Blocks When creating models, you need to be aware that Simulink blocks fall into two basic categories: nonvirtual and virtual blocks. Nonvirtual blocks play an active role in the simulation of a system. If you add or remove a nonvirtual block, you change the model’s behavior. Virtual blocks, by contrast, play no active role in the simulation; they help organize a model graphically. Some Simulink blocks are virtual in some circumstances and nonvirtual in others. Such blocks are called conditionally virtual blocks. The following table lists Simulink virtual and conditionally virtual blocks. Table : Virtual and Conditionally Virtual Blocks Block Name Condition Under Which Block Will Be Virtual Bus Selector Always virtual. Data Store Memory Always virtual. Demux Always virtual. Enable Port Always virtual. From Always virtual. Goto Always virtual. Goto Tag Visibility Always virtual. Table : Virtual and Conditionally Virtual Blocks (Continued) Block Name Condition Under Which Block Will Be Virtual Ground Always virtual. Inport Virtual unless the block resides in a conditionally executed subsystem and has a direct connection to an outport block. Mux Always virtual. Outport Virtual when the block resides within any subsystem block (conditional or not), and does not reside in the root (top-level) Simulink window. Selector Virtual except in matrix mode. Subsystem Virtual except if the block is conditionally executed and/or the block’s Treat as Atomic Unit option is selected. Terminator Always virtual. Trigger Port Virtual when the outport port is not present. Copying and Moving Blocks from One Window to Another As you build your model, you often copy blocks from Simulink block libraries or other libraries or models into your model window. To do this, follow these steps: 1 Open the appropriate block library or model window. 2 Drag the block to copy into the target model window. To drag a block, position the cursor over the block icon, then press and hold down the mouse button. Move the cursor into the target window, then release the mouse button. You can also drag blocks from the Simulink Library Browser into a model window. Simulink hides the names of Sum, Mux, Demux, Bus Creator, and Bus Selector blocks when you copy them from the Simulink block library to a model. This is done to avoid unnecessarily cluttering the model diagram. (The shapes of these blocks clearly indicate their respective functions.) You can also copy blocks by using the Copy and Paste commands from the Edit menu: 1 Select the block you want to copy. 2 Choose Copy from the Edit menu. 3 Make the target model window the active window. 4 Choose Paste from the Edit menu. Simulink assigns a name to each copied block. If it is the first block of its type in the model, its name is the same as its name in the source window. For example, if you copy the Gain block from the Math library into your model window, the name of the new block is Gain. If your model already contains a block named Gain, Simulink adds a sequence number to the block name (for example, Gain1, Gain2). You can rename blocks When you copy a block, the new block inherits all the original block’s parameter values. Simulink uses an invisible five-pixel grid to simplify the alignment of blocks. All blocks within a model snap to a line on the grid. You can move a block slightly up, down, left, or right by selecting the block and pressing the arrow keys. You can display the grid in the model window by typing the following command in the MATLAB window. set_param('<model name>','showgrid','on') To change the grid spacing, type set_param('<model name>','gridspacing',<number of pixels>) For example, to change the grid spacing to 20 pixels, type set_param('<model name>','gridspacing',20) For either of the above commands, you can also select the model, and then type gcs instead of <model name>. You can copy or move blocks to compatible applications (such as word processing programs) using the Copy, Cut, and Paste commands. These commands copy only the graphic representation of the blocks, not their parameters. Moving blocks from one window to another is similar to copying blocks, except that you hold down the Shift key while you select the blocks. You can use the Undo command from the Edit menu to remove an added block. Moving Blocks in a Model To move a single block from one place to another in a model window, drag the block to a new location. Simulink automatically repositions lines connected to the moved block. To move more than one block, including connecting lines: 1 Select the blocks and lines. If you need information about how to select more than one block. 2 Drag the objects to their new location and release the mouse button. Copying Blocks in a Model You can copy blocks in a model as follows. While holding down the Ctrl key, select the block with the left mouse button, then drag it to a new location. You can also do this by dragging the block using the right mouse button. Duplicated blocks have the same parameter values as the original blocks. Sequence numbers are added to the new block names. Block Parameters All Simulink blocks have a common set of parameters, called block properties, that you can set. properties. In addition, many blocks have one or more block-specific parameters that you can set . By setting these parameters, you can customize the behavior of the block to meet the specific requirements of your model. Setting Block-Specific Parameters Every block that has block-specific parameters has a dialog box that you can use to view and set the parameters. You can display this dialog by selecting the block in the model window and choosing BLOCK Parameters from the model window’s Edit menu or from the model window’s context (right-click) menu, where BLOCK is the name of the block you selected, e.g., Constant Parameters. You can also display a block’s parameter dialog box by double-clicking its icon in the model or library window. This holds true for all blocks with parameter dialog boxes except for the Subsystem block. You must use the model window’s Edit menu or context menu to display a Subsystem block’s parameter dialog. For information on the parameter dialog of a specific block You can set any block parameter, using the Simulink set_param command. You can use any MATLAB constant, variable, or expression that evaluates to an acceptable result when specifying the value of a parameter in a block parameter dialog or a set_param command. You can also use variables or expressions that evaluate to Simulink data objects as parameters Block Properties Dialog Box This dialog box lets you set a block’s properties. To display this dialog, select the block in the model window and then select BLOCK Properties from the Edit menu, where BLOCK is the name of the block you selected, e.g., Constant. The dialog box contains the following fields. Description Brief description of the block’s purpose. Priority Execution priority of this block relative to other blocks in the model. Tag A general text field that is saved with the block. Open function MATLAB (M-) function to be called when a user opens this block. Attributes format string Current value of the block’s AttributesFormatString parameter. This parameter specifies which parameters to display beneath a block’s icon. Appendix describes the parameters that a block can have. You can use the AttributesFormatString parameter to display the values of specified parameters beneath the block’s icon. The attributes format string can be any text string that has embedded parameter names. An embedded parameter name is a parameter name preceded by %< and followed by >, for example, %<priority>. Simulink displays the attributes format string beneath the block’s icon, replacing each parameter name with the corresponding parameter value. You can use line-feed characters (\n) to display each parameter on a separate line. For example, specifying the attributes format string pri=%<priority>\ngain=%<Gain> for a Gain block displays If a parameter’s value is not a string or an integer, Simulink displays N/S (not supported) for the parameter’s value. If the parameter name is invalid, Simulink displays “???” as the parameter value. Deleting Blocks To delete one or more blocks, select the blocks to be deleted and press the Delete or Backspace key. You can also choose Clear or Cut from the Edit menu. The Cut command writes the blocks into the clipboard, which enables you to paste them into a model. Using the Delete or Backspace key or the Clear command does not enable you to paste the block later. You can use the Undo command from the Edit menu to replace a deleted block. Displaying Block Execution Order To display the execution order of blocks during simulation, select Execution order from the Simulink Format menu. Selecting this option causes Simulink to display a number in the top right corner of each block in a block diagram. The number indicates the execution order of the block relative to other blocks in the diagram. For example, 1 indicates that the block is the first block executed on every time step, 2 indicates that the block is the second block executed on every time step, and so on. Using Drop Shadows You can add a drop shadow to a block by selecting the block, then choosing Show Drop Shadow from the Format menu. When you select a block with a drop shadow, the menu item changes to Hide Drop Shadow. The figure below shows a Subsystem block with a drop shadow. Specifying Block Diagram Colors Simulink allows you to specify the foreground and background colors of any block or annotation in a diagram, as well as the diagram’s background color. To set the background color of a block diagram, select Screen color from the Simulink Format menu. To set the background color of a block or annotation or group of such items, first select the item or items. Then select Background color from the Simulink Format menu. To set the foreground color of a block or annotation, first select the item. Then select Foreground color from the Simulink Format menu. Specifying Colors Programmatically You can use the set_param command at the MATLAB command line or in an M-file program to set parameters that determine the background color of a diagram and the background color and foreground color of diagram elements. The following table summarizes the parameters that control block diagram colors. Parameter Determines ScreenColor Background color of block diagram BackgroundColor Background color of blocks and annotations ForegroundColor Foreground color of blocks and annotations You may set these parameters to any of the following values: 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'gray', 'lightBlue', 'orange', 'darkGreen'. Sample Time Colors Simulink can color-code the blocks and lines in your model to indicate the sample rates at which the blocks operate. Table : Sample Time Colors Color Use Black Continuous blocks Magenta Constant blocks Yellow Hybrid (subsystems grouping blocks, or Mux or Demux blocks grouping signals with varying sample times) Red Fastest discrete sample time Green Second fastest discrete sample time Blue Third fastest discrete sample time Light Blue Fourth fastest discrete sample time Dark Green Fifth fastest discrete sample time Orange Sixth fastest discrete sample time Cyan Blocks in triggered subsystems Gray Fixed in minor step To enable the sample time colors feature, select Sample Time Colors from the Format menu. Simulink does not automatically recolor the model with each change you make to it, so you must select Update Diagram from the Edit menu to explicitly update the model coloration. To return to your original coloring, disable sample time coloration by again choosing Sample Time Colors. When using sample time colors, the color assigned to each block depends on its sample time with respect to other sample times in the model. It is important to note that Mux and Demux blocks are simply grouping operators – signals passing through them retain their timing information. For this reason, the lines emanating from a Demux block may have different colors if they are driven by sources having different sample times. In this case, the Mux and Demux blocks are color coded as hybrids (yellow) to indicate that they handle signals with multiple rates. Similarly, Subsystem blocks that contain blocks with differing sample times are also colored as hybrids, because there is no single rate associated with them. If all of the blocks within a subsystem run at a single rate, then the Subsystem block is colored according to that rate. Associating User Data with Blocks You can use Simulink’s set_param command to associate your own data with a block. For example, the following command associates the value of the variable mydata with the currently selected block. set_param(gcb, 'UserData', mydata) The value of mydata can be any MATLAB data type, including arrays, structures, objects, and Simulink data objects.. Use get_param to retrieve the user data associated with a block. get_param(gcb, 'UserData') The following command causes Simulink to save the user data associated with a block in the model file of the model containing the block. set_param(gcb, 'UserDataPersistent', 'on'); State Properties Dialog Box The State Properties dialog box allows you to specify code generation options for certain blocks with discrete states. To get help on using this dialog box, you must install the Real-Time Workshop documentation and refer to the section entitled "Block States: Storing and Interfacing." Connecting Blocks Simulink block diagrams use lines to represent pathways for signals among blocks in a model Simulink can connect blocks for you or you can connect the blocks yourself by drawing lines from their output ports to their input ports. Autoconnecting Blocks You can command Simulink to connect blocks automatically. This eliminates the need for you to draw the connecting lines yourself. When connecting blocks, Simulink routes lines around intervening blocks to avoid cluttering the diagram. Connecting Two Blocks To autoconnect two blocks: 1 Select the source block. 2 Hold down Ctrl and left-click the destination block. Simulink connects the source block to the destination block, routing the line around intervening blocks if necessary. When connecting two blocks, Simulink draws as many connections as possible between the two blocks as illustrated in the following example. Before autoconnect After autoconnect Connecting Groups of Blocks Simulink can connect a group of source blocks to a destination block or a source block to a group of destination blocks. To connect a group of source blocks to a destination block: 1 Select the source blocks. 2 Hold down Ctrl and left-click the destination block. To connect a source block to a group of destination blocks: 1 Select the destination blocks. 2 Hold down Ctrl and left-click the source block. Connecting Blocks Manually Simulink allows you to draw lines manually between blocks or between lines and blocks. You may want to do this if you need to control the path of the line or to create a branch line. Drawing a Line Between Blocks To connect the output port of one block to the input port of another block: 1 Position the cursor over the first block’s output port. It is not necessary to position the cursor precisely on the port. The cursor shape changes to a cross hair. 2 Press and hold down the mouse button. 3 Drag the pointer to the second block’s input port. You can position the cursor on or near the port, or in the block. If you position the cursor in the block, the line is connected to the closest input port. The cursor shape changes to a double cross hair. 4 Release the mouse button. Simulink replaces the port symbols by a connecting line with an arrow showing the direction of the signal flow. You can create lines either from output to input, or from input to output. The arrow is drawn at the appropriate input port, and the signal is the same. Simulink draws connecting lines using horizontal and vertical line segments. To draw a diagonal line, hold down the Shift key while drawing the line. Drawing a Branch Line A branch line is a line that starts from an existing line and carries its signal to the input port of a block. Both the existing line and the branch line carry the same signal. Using branch lines enables you to cause one signal to be carried to more than one block. In this example, the output of the Product block goes to both the Scope block and the To Workspace block. To add a branch line, follow these steps: 1 Position the pointer on the line where you want the branch line to start. 2 While holding down the Ctrl key, press and hold down the left mouse button. 3 Drag the pointer to the input port of the target block, then release the mouse button and the Ctrl key. You can also use the right mouse button instead of holding down the left mouse button and the Ctrl key. Drawing a Line Segment You may want to draw a line with segments exactly where you want them instead of where Simulink draws them. Or, you might want to draw a line before you copy the block to which the line is connected. You can do either by drawing line segments. To draw a line segment, you draw a line that ends in an unoccupied area of the diagram. An arrow appears on the unconnected end of the line. To add another line segment, position the cursor over the end of the segment and draw another segment. Simulink draws the segments as horizontal and vertical lines. To draw diagonal line segments, hold down the Shift key while you draw the lines. Moving a Line Segment To move a line segment, follow these steps: 1 Position the pointer on the segment you want to move. 2 Press and hold down the left mouse button. 3 Drag the pointer to the desired location. 4 Release the mouse button. To move the segment connected to an input port, position the pointer over the port and drag the end of the segment to the new location. You cannot move the segment connected to an output port. Moving a Line Vertex To move a vertex of a line, follow these steps: 1 Position the pointer on the vertex, then press and hold down the mouse button. The cursor changes to a circle that encloses the vertex. 2 Drag the pointer to the desired location. 3 Release the mouse button. Inserting Blocks in a Line You can insert a block in a line by dropping the block on the line. Simulink inserts the block for you at the point where you drop the block. The block that you insert can have only one input and one output. To insert a block in a line: 1 Position the pointer over the block and press the left mouse button. 2 Drag the block over the line in which you want to insert the block. 3 Release the mouse button to drop the block on the line. Simulink inserts the block where you dropped it. Building Models Here are some model-building hints you might find useful: • Memory issues In general, the more memory, the better Simulink performs. • Using hierarchy More complex models often benefit from adding the hierarchy of subsystems to the model. Grouping blocks simplifies the top level of the model and can make it easier to read and understand the model. • Cleaning up models Well organized and documented models are easier to read and understand. Signal labels and model annotations can help describe what is happening in a model. • Modeling strategies If several of your models tend to use the same blocks, you might find it easier to save these blocks in a model. Then, when you build new models, just open this model and copy the commonly used blocks from it. You can create a block library by placing a collection of blocks into a system and saving the system. You can then access the system by typing its name in the MATLAB command window. Generally, when building a model, design it first on paper, then build it using the computer. Then, when you start putting the blocks together into a model, add the blocks to the model window before adding the lines that connect them. This way, you can reduce how often you need to open block libraries. Modeling Equations One of the most confusing issues for new Simulink users is how to model equations. Here are some examples that may improve your understanding of how to model equations. Converting Celsius to Fahrenheit To model the equation that converts Celsius temperature to Fahrenheit TF = 9/5(TC) + 32 First, consider the blocks needed to build the model: • A Ramp block to input the temperature signal, from the Sources library • A Constant block to define a constant of 32, also from the Sources library • A Gain block to multiply the input signal by 9/5, from the Math library • A Sum block to add the two quantities, also from the Math library • A Scope block to display the output, from the Sinks library Next, gather the blocks into your model window. Assign parameter values to the Gain and Constant blocks by opening (double-clicking on) each block and entering the appropriate value. Then, click on the Close button to apply the value and close the dialog box. Now, connect the blocks. The Ramp block inputs Celsius temperature. Open that block and change the Initial output parameter to 0. The Gain block multiplies that temperature by the constant 9/5. The Sum block adds the value 32 to the result and outputs the Fahrenheit temperature. Open the Scope block to view the output. Now, choose Start from the Simulation menu to run the simulation. The simulation will run for 10 seconds. Modeling a Simple Continuous System To model the differential equation, x′ ( t ) = – 2x ( t ) + u ( t ) where u(t) is a square wave with an amplitude of 1 and a frequency of 1 rad/sec. The Integrator block integrates its input, x′, to produce x. Other blocks needed in this model include a Gain block and a Sum block. To generate a square wave, use a Signal Generator block and select the Square Wave form but change the default units to radians/sec. Again, view the output using a Scope block. Gather the blocks and define the gain. In this model, to reverse the direction of the Gain block, select the block, then use the Flip Block command from the Format menu. Also, to create the branch line from the output of the Integrator block to the Gain block, hold down the Ctrl key while drawing the line. Now you can connect all the blocks. An important concept in this model is the loop that includes the Sum block, the Integrator block, and the Gain block. In this equation, x is the output of the Integrator block. It is also the input to the blocks that compute x′, on which it is based. This relationship is implemented using a loop. The Scope displays x at each time step. For a simulation lasting 10 seconds, the output looks like this. The equation you modeled in this example can also be expressed as a transfer function. The model uses the Transfer Fcn block, which accepts u as input and outputs x. So, the block implements x/u. If you substitute sx for x′ in the above equation, you get sx = – 2x + u Solving for x gives x = u ⁄ (s + 2) or, x ⁄ u = 1 ⁄ (s + 2) The Transfer Fcn block uses parameters to specify the numerator and denominator coefficients. In this case, the numerator is 1 and the denominator is s+2. Specify both terms as vectors of coefficients of successively decreasing powers of s. In this case the numerator is [1] (or just 1) and the denominator is [1 2]. The model now becomes quite simple. The results of this simulation are identical to those of the previous model. Obrazový přenos Definice: kde: Laplaceův obraz výstupní veličiny podle Laplaceova obrazu vstupní veličiny při nulových počátečních podmínkách zleva. bm .s m + ... + b1 .s + b0 B(s) = F ( s) = A( s ) s r . a n .s n + ... + a1 .s + a 0 r je řád astatismu n + r je řád soustavy ( ) V Matlabu se pro vypsání Obrazového přenosu používá funkce TF (transfer function). Zadává se pomocí čitatele B(s) a jmenovatele A(s). Musí se zadat zvlášť čitatel do určité proměnné, například do B, a to ve tvaru B = b , bn−1 ,...., b1 , b0 a zvlášť jmenovatel do jiné proměnné, např. A, a to ve tvaru A = [a m , a m −1 ,...., a1 , a 0 ] Zadání: SYS = TF (Bs, As) [ Př: ] Bs = [1, 2]; As = [1, 2, 1]; SYS = TF (Bs, As) Výsledek: Transfer function: s+2 s^2 + 2s + 1 Převod obrazového přenosu Definice: Polynom ve jmenovateli obrazového přenosu se nazývá charakteristický polynom a jeho kořeny se nazývají póly - P systému. Kořeny v čitateli se nazývají jako nuly - N dynamického systému. Časová konstanta - K je podíl vyjádřených hodnot bm, an F ( s) = B( s ) bm .(s − s1b )( . s − s2b ).....(s − smb ) = r ; A( s ) s .an (s − s1 )( . s − s2 )......(s − sn ) K= bm an V Matlabu se k vypsání pólů (P), nul (N) a časové konstanty (K) se používá funkce TF2ZP - převod "transfer function to zero-pole". Zadání : [N, P, K] = TF2ZP(Bs, As) Pokud chceme vypsat pouze nuly, póly nebo zesílení, použijeme funkce: POLE, ZERO, DCGAIN Zadání: P = POLE (SYS) N = ZERO (SYS) K = DCGAIN (SYS) Př: Bs = [1, 2]; As = [1, 2, 1]; [N, P, K] = TF2ZP(Bs, As) Výsledek: N = -2 P = -1 -1 K = 1 Stavový popis Stavový popis je definován ve tvaru: • dx = Ax + Bu x= dt y = Cx + Du Pro tuto operaci se v Matlabu používá funkce TF2SS "transfer function to state-space". Zadání: [A,B,C,D] = TF2SS (B,A) Př: Bs = [1, 2]; As= [1, 2, 1]; [A,B,C,D] = TF2SS (Bs, As) nebo: [A,B,C,D] = TF2SS ([1, 2], [1, 2, 1]) Výsledek: A = -2 1 -1 0 B = 1 0 C = 1 2 D = 0 Identifikace dat b .s m + ... + b1 .s + b0 B(s) = r m n A( s ) s . a n .s + ... + a1 .s + a0 Pokud máme již zadán obrazový přenos nebo převedeme jiný způsob na obrazový přenos a potřebujeme zjistit, jaké jsou v Obrazovém přenosu zadané hodnoty, můžeme použít funkci TFDATA. Zadání: [Bs, As] = TFDATA (sys, ‘v’) nebo [Bs, As] = TFDATA (sys) F ( s) = Př: ( SYS = TF([1 2],[1 2 1]) [Bs, As] = TFDATA (SYS, ’v’) [Bs, As] = TFDATA (SYS) Výsledek: Transfer function: s+2 s^2 + 2s + 1 ) Bs = 0 1 2 As = 1 2 1 Bs = [1x3 double] As = [1x3 double] => matice o jednom řádku a třech sloupcích Zadávání pomocí pólů a nul Definice: Polynom ve jmenovateli obrazového přenosu se nazývá charakteristický polynom a jeho kořeny se nazývají póly - P systému. Kořeny v čitateli se nazývají jako nuly - N dynamického systému. Časová konstanta - K je podíl vyjádřených hodnot bm, an F ( s) = B( s ) bm .(s − s1b )( . s − s2b ).....(s − smb ) = r ; A( s ) s .an (s − s1 )( . s − s2 )......(s − sn ) K= bm an Zadání: SYS = ZPK (N, P, K) Př: N = [-2]; P = [-1; -1]; K = [1]; SYS = ZPK (N, P, K) Výsledek: Zero/pole/gain: (s + 2) (s + 1)^ 2 Převod nul a pólů na stavový popis Stavový popis je definován ve tvaru: • dx = Ax + Bu x= dt y = Cx + Du Pro tuto operaci se v Matlabu používá funkce ZP2SS „Zero-pole to state-space“. Zadání: [A,B,C,D] = ZP2SS (N, P, K) Př: N = [-2]; P = [-1; -1]; K = [1]; [A,B,C,D] = ZP2SS (N, P, K) nebo: [A,B,C,D] = ZP2SS ([-2], [-1; -1],[1]) Převod nul a pólů na obrazový přenos Obrazový přenos se definuje jako Laplaceův obraz výstupní veličiny ku Laplaceově obrazu vstupní veličiny při nulových počátečních podmínkách zleva. b .s m + ... + b1 .s + b0 B(s) = r m n F ( s) = A( s ) s . a n .s + ... + a1 .s + a0 kde: r je řád astatismu n + r je řád soustavy ( ) Pro tuto operaci se v Matlabu používá funkce ZP2TF „Zero-pole to transfer function“. Zadání: [NUM, DEN] = ZP2TF (N, P, K) Př: N = [-2]; P = [-1; -1]; K = [1]; [NUM, DEN] = ZP2TF (N, P, K) nebo: [NUM, DEN] = ZP2TF ([-2], [-1; -1],[1]) Zadávání pomocí stavového popisu Stavový popis je definován ve tvaru: • dx = Ax + Bu x= dt y = Cx + Du Zadání: SYS = SS (A, B, C, D) Př: A= [-2, –1; 1, 0]; B = [1; 0]; C = [1, 2]; D = [0]; SYS = SS (A, B, C, D) Výsledek: a = x1 x2 x1 -2 1 x1 x2 u1 1 0 b = x2 -1 0 c = y1 x1 1 y1 u1 0 x2 2 d = Continuous-time system. Převod stavového popisu na nuly a póly Definice: Polynom ve jmenovateli obrazového přenosu se nazývá charakteristický polynom a jeho kořeny se nazývají póly - P systému. Kořeny v čitateli se nazývají jako nuly - N dynamického systému. Časová konstanta - K je podíl vyjádřených hodnot bm, an F ( s) = B( s ) bm .(s − s1b )( . s − s2b ).....(s − smb ) = r ; A( s ) s .an (s − s1 )( . s − s2 )......(s − sn ) K= bm an Pro tuto operaci se v Matlabu používá funkce SS2ZP „State-space to Zero-pole“. Zadání: [N, P, K] = SS2ZP (A, B, C, D) Př: A= [-2, –1; 1, 0]; B = [1; 0]; C = [1, 2]; D = [0]; [N, P, K] = SS2ZP (A, B, C, D) Převod stavového popisu na obrazový přenos Obrazový přenos se definuje jako Laplaceův obraz výstupní veličiny ku Laplaceově obrazu vstupní veličiny při nulových počátečních podmínkách zleva. b .s m + ... + b1 .s + b0 B(s) = r m n F ( s) = A( s ) s . a n .s + ... + a1 .s + a0 kde: r je řád astatismu n + r je řád soustavy ( ) Pro tuto operaci se v Matlabu používá funkce SS2TF „Zero-pole to transfer function“. Zadání: [NUM, DEN] = SS2TF (A, B, C, D) Př: A= [-2, –1; 1, 0]; B = [1; 0]; C = [1, 2]; D = [0]; [NUM, DEN] = SS2TF (A, B, C, D) nebo: [NUM, DEN] = SS2TF ([-2, -1; 1, 0], [1; 0],[1, 2],[0]) Nastavení parametrů obrazového přenosu Matlab nám umožňuje též měnit nejen nastavení základních parametrů, ale také mnoho dalších (např. vstupní zpoždění, výstupní zpoždění, název vstupní proměnné, název výstupní proměnné, … atd.). K těmto hodnotám nám umožní nejjednodušší přístup funkce GET a SET, kde pomocí funkce GET zjišťujeme již zadané informace. Pomocí funkce SET tyto hodnoty měníme. Zadání: get (TF) get (SS) get (ZPK) Výsledek: num: den: Variable: Ts: InputDelay: OutputDelay: ioDelayMatrix: InputName: OutputName: InputGroup: OutputGroup: Notes: UserData: {} {} 's' 0 [0x1 [0x1 [] {0x1 {0x1 {0x2 {0x2 {} [] double] double] cell} cell} cell} cell} Polynom As Polynom Bs Proměnná (s, p, z, z^-1, q) Vzorkovací čas Vstupní zpoždění Výstupní zpoždění Vstupní/Výstupní matice zpoždění Jméno vstupní veličiny Jméno výstupní veličiny Vstupní skupina Výstupní skupina Popis, poznámky Uživatelská data, která mohou být libovolná a: [] b: [] c: [] d: [] e: [] StateName: {0x1 cell} Ts: 0 InputDelay: [0x1 double] OutputDelay: [0x1 double] ioDelayMatrix: [] InputName: {0x1 cell} OutputName: {0x1 cell} InputGroup: {0x2 cell} OutputGroup: {0x2 cell} Notes: {} UserData: [] Matice A Matice B Matice C Matice D Matice E Jméno Stavového popisu Vzorkovací čas Vstupní zpoždění Výstupní zpoždění Vstupní/Výstupní matice zpoždění Jméno vstupní veličiny Jméno výstupní veličiny Vstupní skupina Výstupní skupina Popis, poznámky Uživatelská data, která mohou být libovolná z: p: k: Variable: Ts: InputDelay: OutputDelay: ioDelayMatrix: InputName: OutputName: InputGroup: OutputGroup: Notes: UserData: Hodnoty nul Hodnoty pólů Hodnota konstanty zesílení Proměnná (s, p, z, z^-1, q) Vzorkovací čas Vstupní zpoždění Výstupní zpoždění Vstupní/Výstupní matice zpoždění Jméno vstupní veličiny Jméno výstupní veličiny Vstupní skupina Výstupní skupina Popis, poznámky Uživatelská data, která mohou být libovolná {} {} [] 's' 0 [0x1 [0x1 [] {0x1 {0x1 {0x2 {0x2 {} [] double] double] cell} cell} cell} cell} Pro změnu některé z uvedených položek se použije funkce SET. Musíme si však nejprve zavést SYS1, SYS2, SYS3, postupně Obrazový přenos, Stavový popis, Nuly, póly a konstantu zesílení. Zadání: set (SYS1, ‘Properties’, Value) set (SYS2, ‘Properties’, Value) set (SYS3, ‘Properties’, Value) Př: kde Properties je hodnota, kterou chceme měnit Bs = [1, 2]; As = [1, 2, 1]; SYS1 = TF (Bs, As) set (SYS1, ‘Variable’, ‘p’); SYS1 A= [-2, –1; 1, 0]; B = [1; 0]; C = [1, 2]; D = [0]; SYS2 = SS (A, B, C, D); set (SYS2, ‘InputDelay’, 1.5) set (SYS2, ‘OutputDelay’, 2) SYS2 N = [-2]; P = [-1; -1]; K = [1]; SYS3 = ZPK (N, P, K) set (SYS3, ‘InputName’, ‘u(t)’) set (SYS3, ‘OutputName’, ‘y(t)’) SYS3 Výsledek: Transfer function: s+2 s^2 + 2s + 1 Transfer function: p+2 p^2 + 2 p + 1 a = x1 x2 x1 -2 1 x1 x2 u1 1 0 y1 x1 1 y1 u1 0 x2 -1 0 b = c = x2 2 d = Input delays (listed by channel): 1.5 Output delays (listed by channel): 2 Continuous-time model. Zero/pole/gain: (s + 2) (s + 1)^ 2 Zero/pole/gain from input "u(t)" to output "y(t)": ( s + 2) ( s + 1) ^ 2 Dopravní zpoždění Pokud máme zavedený určitý přenos a v něm zadáno vstupní dopravní zpoždění nebo výstupní dopravní zpoždění či oboje a potřebujeme zjistit celkové dopravní zpoždění, použijeme příkaz TOTALDELAY. K nastavení zpoždění je nejlepší použít funkci SET (popsanou dříve). Zadání: Př: TOTALDELAY (SYS) Bs = [1, 2]; As = [1, 2, 1]; SYS = TF (Bs, As); set (SYS, ‘InputDelay’, 1.5) set (SYS, ‘OutputDelay’, 2) SYS TOTALDELAY (SYS) Výsledek: Transfer function: exp(− 3.5 * s )* s+2 s^2 + 2s + 1 ans = 3.5000 Generování spojitého systému Pro generování spojitého systému nám jako základ slouží rovnice: 1 1 h( s ) = 2 kde ω n = … přirozená úhlová frekvence (wn) 2 Tn s + 2ζω n s + ω n ζ … poměrné tlumení 0,1 (z) Pro získání obrazového přenosu nebo stavového popisu z konstant ζ a ω n nám slouží funkce ORD2 Zadání: [Bs, As] = ORD2(wn,z) [A,B,C,D] = ORD2(wn,z) Př: [Bs, As] = ORD2 (0.4, 2.4) [A,B,C,D] = ORD2 (0.4, 2.4) Výsledek: Z toho vyplývá ω n = 2,4 rad / sec; ζ = 0,4 Bs = 1 As = 1.0000 1.9200 0.1600 A = 0 -0.1600 1.0000 -1.9200 B = 0 1 C = 1 0 D = 0 Rozklad na parciální zlomky Rozklad polynomu na parciální zlomky se provádí pomocí limitních vztahů. A je definován takto: b .s m + ... + b1 .s + b0 B(s) F ( s) = = r m n A( s ) s . a n .s + ... + a1 .s + a0 r r r B(s ) F ( s) = = 1 + 2 + ... + n + k ( s ) A( s ) s − p1 s − p 2 s − pn Pro tuto operaci se v Matlabu používá funkce RESIDUE. Musíme však znát některé podmínky rozkladu na parciální zlomky, a to ty, že pokud máme n-násobné kořeny, tak se v rozkladu zobrazí nejen samotný kořen, ale též kořen na druhou až na n-násobnost kořene. Zadání: [R, P, K] = RESIDUE (Bs, As) ( Př: ) Bs = [1, 2]; As= [1, 2, 1]; [R, P, K] = RESIDUE (Bs, As) Výsledek: R = 1 1 P = -1 -1 K = [] Z čehož vyplývá, že K = 0. Pro tento příklad (jehož polynom je vícenásobný) je výsledek ve tvaru: B(s ) 1 1 F ( s) = = + +0 A( s ) s + 1 (s + 1)2 Výpočet kořenů polynomu Jestliže máme přechodovou funkci a vyjádříme z ní charakteristickou rovnici, můžeme pomocí funkce ROOTS zjistit její kořeny. b .s m + ... + b1 .s + b0 B(s) F ( s) = = r m n A( s ) s . a n .s + ... + a1 .s + a0 ( ( Ch.r. s r . a n .s n + ... + a1 .s + a 0 ) ) Zadání: K = ROOTS (As) Př: As = [1, 2, 1]; K = ROOTS (As) Výsledek: K = -1 -1 Z čehož vyplývá, že kořeny jsou s1 = −1; s 2 = −1 . ⇒ (s + 1)(s + 1) Zobrazení pólů a nul v komplexní rovině Zobrazení pólů a nul se dá také vyjádřit v komplexní rovině, na imaginární a reálné ose. Pro tuto operaci existuje v Matlabu funkce PZMAP (PoleZeroMap). K jejímu vyjádření použijeme již dříve získanou proměnnou SYS. Zadání: PZMAP = (SYS) Př: Bs = [1, 2]; As = [1, 2, 1]; SYS = TF (Bs, As); PZMAP(SYS) Výsledek: Nuly se zobrazí jako kolečka a póly jako křížky. Graf frekvenční charakteristiky v komplexní rovině Definice: Frekvenční charakteristiku dostaneme, jestliže dosadíme v přenosové funkci F ( s ) = F (iω ) . Y (iω ) F (iω ) = = F ( s ) s −iω U (iω ) F (iω ) = Re{F (iω )}+ i Im{F (iω )} Matlab neumí převést Obrazový přenos teoreticky, pouze nám ho umožňuje zobrazit graficky pomocí funkce NYQUIST. Zadání se provádí: NYQUIST (SYS) Př: Bs = [1, 2]; As= [1, 2, 1]; SYS = TF (Bs, As); NYQUIST (SYS) Výsledek: Logaritmická amplitudová a fázová charakteristika F (iω ) = F ( s ) s =( iω ) = F (iω ) . exp iϕ (ω ) F (iω ) dB = 20. log F (iω ) K této operaci nám v Matlabu slouží funkce BODE, která nám opět pouze vykreslí Logaritmicko amplitudovou a fázovou charakteristiku. Zadání: BODE (SYS) Př: Bs = [1, 2]; As= [1, 2, 1]; SYS = TF (Bs, As); BODE (SYS) Výsledek: V otevřeném okně se nahore vykreslí Logaritmicko amplitudová charakteristika a dole je Logaritmicko fázová charakteristika. Přechodová funkce Přechodová funkce h(t) je reakce dynamického systému na budící funkci ve tvaru jednotkového skoku při nulových počátečních podmínkách zleva. • 1 H ( s ) = F ( s ). ; h(t ) = H ( s ) • s Pro získání klasické přechodové funkce h(t) použijeme funkci ILAPLACE “Inverzní Laplaceova funkce“ z funkce H(s). Pro vykreslení přechodové fce použijeme funkci STEP - čili odezvu obrazového přenosu na jednotkový skok s počátečními podmínkami rovnými nule (p.p.=0) zleva. Pokud chceme znát konkrétní hodnoty v závislosti na čase, použijeme přiřazení dle příkladu. Zadání: ILAPLACE ( „Přenosová funkce“*1/s ) STEP (SYS) [x, t] = STEP (SYS) Numerické_Vyjádření = [x, t] Při zadávání můžeme napsat za SYS dobu simulace, po kterou se budou vypočítávat hodnoty. Zadání: STEP (SYS, T) kde T je čas simulace [x, t]= STEP (SYS, T) Př: Bs = [1, 2]; As= [1, 2, 1]; SYS = TF (Bs, As); SYMS s t; ILAPLACE ((s + 2)/(s^2 + 2*s + 1)*1/s) STEP (SYS) [x, t]= STEP (SYS); Numericke_Vyjadreni = [x, t] Výsledek: ans = -t*exp(-t)-2*exp(-t)+2 Numerické_Vyjádření = 0 0.1277 0.2535 0.3153 0.5519 0.6079 0.8179 0.9139 1.1663 0 0.1280 0.2560 0.3200 0.5760 0.6400 0.8960 1.0240 1.4080 Tato funkce nám udává, že budeme pracovat s neurčitými proměnnými Toto jsou čísla, která získáme z přenosové funkce TF Impulzní přechodová funkce Definice: Derivace Přechodové funkce. Je reakce dynamického systému na budící funkci ve tvaru Dirackova pulsu U ( A) = δ ( A) při nulových počátečních podmínkách zleva. g (t ) = h(t ) ; dt • g (t ) = G ( s ) ; • G ( s ) = F ( s ).1 Pro získání Impulzní (váhové) přechodové funkce g(t) použijeme funkci ILAPLACE “Inverzní Laplaceova funkce“ z funkce F(s). Pro vykreslení Impulzní (váhové) přechodové fce použijeme funkci IMPULSE - čili odezvu obrazového přenosu na Dirackův puls s počátečními podmínkami rovnými nule (p.p.=0) zleva. Pokud chceme znát konkrétní hodnoty v závislosti na čase, použijeme přiřazení dle příkladu. Zadání: ILAPLACE („Přenosová funkce“ ) IMPULSE (SYS) [x, t]= STEP (SYS) Numerické_Vyjádření = [x, t] Př: Bs = [1, 2]; As= [1, 2, 1]; SYS = TF (Bs, As); SYMS s t; ILAPLACE ((s + 2)/(s^2 + 2*s + 1)) IMPULSE (SYS) [x, t]= IMPULSE (SYS); Numericke_Vyjadreni = [x, t] Výsledek: ans =t*exp(-t)+exp(-t) Numericke_Vyjadreni = 1.0000 0 0.9723 0.2560 0.8202 0.7680 0.4281 1.9200 0.3932 2.0480 0.2077 2.9440 0.0940 3.9680 0.0407 4.9920 0.0191 5.8880 0.0079 6.9120 0.0032 7.9360 0.0013 8.9600 0.0005 9.9840 0.0001 11.9040 Tato funkce nám udává, že budeme pracovat s neurčitými proměnnými Toto jsou čísla, která získáme z přenosové funkce TF Odezva systému na budící signál Pokud chceme zjistit, jakou bude mít systém odezvu na zvolený budící signál, musíme jej nejprve definovat. A to buď sami tím, že napíšeme do Matlabu u a t, což budou matice o jednom řádku a n prvcích. Obě matice musí být stejně dlouhé. Anebo při přípravě budícího signálu můžeme použít funkci [u, t] = GENSIG(type, Tau, Tf, Ts), kde type je buď ‘sine’ - sinusový signál, ‘square’ – schodová funkce nebo ‘pulse’ – signál složený z jednotlivých pulsů (pro všechny tři je umax rovno jedné). Tau je perioda vzorkování, Tf – celková doba simulace, Ts – vzorkovací čas. Pokud se chceme podívat na námi vytvořenou budící fci, použijeme příkaz plot. Nyní, když si připravíme budící signál, můžeme začít simulovat, k čemuž nám dopomůže funkce LSIM. Zadání se provádí: [u,t] = GENSIG (type, Tau, Tf, Ts) plot (u,t) LSIM (SYS, u, t) Př: Bs = [1, 2]; As= [1, 2, 1]; SYS = TF (Bs, As); [u, t] = GENSIG (‘square’, 5, 30, 0.1); plot (t, u) LSIM (SYS, u, t) [y,t] = LSIM (SYS, u, t); Num_vyjadreni = [y,u] plot (t,Num_vyjadreni) kde type j-‘sine’; ‘square’; ‘pulse’ => perioda = 5, celkový čas simulace = 30, vzorkovací čas je 0.1 Výsledek: Toto bude výsledek funkce Plot, kde jsme pomocí příkazu GENSIG nadefinovali jednotlivé skoky. Podívejme se na zadání: Tau = 5 Tf = 30 Ts = 0.1 … toto se projeví pouze na lehkém zešikmení skoků. Takto bude reagovat soustava na definovaný budící signál. Je vidět, že by chtěla zvětšit doba periody, protože nedáváme dostatek času soustavě na ustálení. Ze zadání víme, že hodnota ustálení je 2, ale zde se dostáváme pouze k hodnotě 1,6. Num_vyjadreni = 0 0 0 1.0000 1.1006 1.0000 1.6008 1.0000 1.6306 0 0.3478 0 0.3222 1.0000 1.6465 1.0000 1.6725 0 0.3529 0 0.3269 1.0000 1.6470 1.0000 1.6730 0 0.3530 0 0.3270 1.0000 1.6470 1.0000 1.6730 0 0.3530 0 0.3270 1.0000 1.6470 1.0000 1.6730 0 0.3530 0 0.3270 1.0000 1.6470 1.0000 1.6730 0 Zobrazení přenosů do společného grafu V případě, že máme zadány dva nebo více přenosů (libovolně zadány) a potřebujeme je mezi sebou porovnat, můžeme si je zobrazit do jednoho grafu pomocí funkce LTIVIEW. Zadání: Kde plottype jsou: Př: LTIVIEW (plottype, SYS1, SYS2, … , SYSn) ‘step’ - odezva na jednotkový skok ‘impulse’ - impulsní (váhová) přechodová fce ‘bode’ - logaritmicko amplitudová a fázová charakteristika ‘nyquist’ - frekvenční charakteristiky v komplexní rovině ‘lsim’ - odezva na libovolně zvolenou budící fci a další, které nepoužíváme. Bs = [1, 2]; As = [1, 2, 1]; N = [-3]; P = [-3; -2]; K = [1]; SYS1 = TF (Bs, As) SYS2 = ZPK (N, P, K) LTIVIEW ( 'step', SYS1, SYS2) … SYS1 je znázorněn tečkovaně Výsledek: Transfer function: s+2 s^2 + 2s + 1 Zero/pole/gain: (s + 3) (s + 3)(s + 2) Tento způsob zobrazování není špatný, ale neumožňuje nám vypsat numerické vyjádření přechodových funkcí. Proto LTIVIEW budeme používat pouze pro porovnání jednotlivých přenosů, ať už přechodové funkce, impulzní (váhové) přechodové funkce a dalších (výše jsou popsány). Způsoby zobrazení hodnot Pokud ale potřebujeme znát numerické vyjádření, použijeme pro ně samostatné příkazy a funkce (STEP, IMPULSE, LSIM) a vypíšeme si jejich hodnoty v kombinaci s PLOT. Při použití příkazu PLOT máme možnost zobrazovat pouze prvních X hodnot, a to ve tvaru (1:10), čímž říkáme, že chceme zobrazit pouze prvních 10 hodnot. Nebo můžeme jeden graf rozdělit na N možných grafů pomocí příkazu SUBPLOT. Pokud potřebujeme k práci mřížku, můžeme použít funkce GRID ON – mřížka zapnuta, nebo GRID OFF – mřížka vypnuta. Dále si můžeme definovat velikost os (příkaz AXIS) nebo počet zobrazovaných hodnot. Pro popis slouží příkaz TITLE – titulek. Pro popis jednotlivých os nám slouží příkazy XLABEL a YLABEL pro osu x a y. Pokud jsme již použili příkaz SUBPLOT a později chceme použít pouze PLOT, musíme nejprve zadat SUBPLOT (1,1,1). Jinak by nám příkaz PLOT vykreslil graf do posledního okna u příkazu SUBPLOT. Chceme-li vytvořit několik nezávislých obrázkových oken, použijeme příkaz FIGURE (N), kde N je číslo okna, které chceme aktivovat. Pokud chceme smazat aktuální okno, použijeme příkaz CLF. Zavřít požadované okno se dá příkazem CLOSE (N). Zadání: plot (x) plot (t,x,‘b‘) SUBPLOT (m,n,N) AXIS ([xmin xmax ymin ymax zmin zmax]) plot (x(1:100)) TITLE (‘zde je mozno napsat titulek’) figure (2) plot (x(1:50)) CLF XLABEL ('Toto je osa x') YLABEL ('Toto je osa y') CLOSE (2) Př: SYS1 = TF ([1 2], [1 2 1]); SYS2 = TF ([3 2], [1 5 6]); SYS3 = TF ([1], [1 1.92 0.16]); [x1,t1] = STEP (SYS1,50); [x2,t2] = STEP (SYS2,50); [x3,t3] = STEP (SYS3,50); figure (2); plot (t1,x1,t2,x2,t3,x3); XLABEL (‘čas t’); YLABEL (‘hodnota y’) nebo SUBPLOT (3,1,1) plot (t1,x1,’b’); AXIS ([0 10 0 2]); grid on; TITLE (‘Přechodová fce č.1’) SUBPLOT (3,1,2) b ..je typ barvy m … počet řádků n … počet sloupců N … pořadové číslo grafu osa z je pouze pro 3D grafy zobrazí prvních 100 hodnot proměnné x kde kde zobrazí prvních 50 hodnot proměnné x plot (t2,x2,’g’); AXIS ([0 6 0 0.6]); grid on; TITLE (‘Přechodová fce č.3’) SUBPLOT (3,1,3) plot (t3,x3,‘r‘); grid off; TITLE (‘Přechodová fce č.3’) Výsledek: Pro příkaz PLOT. Pro příkaz SUBPLOT. Zobrazení pomocí spektra Pokud chceme zobrazit pouze číselné hodnoty místo spojitého obrazu, použijeme příkaz STEM. Př: X(1:5) = 0; X(6:15) = 1; X(16:25) = 2; STEM (X); Výsledek: Porovnejte tento výsledek s výsledkem, který by dal příkaz PLOT (X). Zobrazení podle lichoběžníkového pravidla Podle lichoběžníkového pravidla platí, že pokud máme diskrétní hodnoty, tak dokud nepřijde další hodnota, výstup nám drží hodnotu příchozí. Pro zobrazování podle tohoto pravidla použijeme příkaz STAIRS (schody). Př: X(1:5) = 0; X(6:15) = 1; X(16:25) = 2; STAIRS (X); Výsledek: Porovnejte tento výsledek s výsledky, které by daly příkazy PLOT (X) a STEM (X). Návrh zpětné vazby s kompenzátorem Soustava s jedním vstupem a jedním výstupem (SISO). V Matlabu se funkce nazývá RLTOOL. Pokud napíšeme pouze tento příkaz, objeví se : Zadání je ve tvaru: RLTOOL (SYS) nebo RLTOOL (SYS, COMP) – kde SYS je zadaný přenos (pomocí SS, TF nebo ZPK) – kde COMP je hodnota kompenzátoru (pomocí SS, TF nebo ZPK). Pozor, nestačí pouze hodnota zesílení. Zadaný přenos SYS se nahradí za P (zadání H, F je vysvětleno dále). Jsou dvě možnosti zapojení kompenzátoru, a to buď do přímé větve nebo do zpětné vazby (viz obr.) Pro zadávání jedné z těchto dvou možností je: LocationFlag = 1 Poloha kompenzátoru v přímé větvi (nastaveno jako default) LocationFlag = 2 Poloha kompenzátoru ve zpětné vazbě V tomto případě se zadání provádí: RLTOOL (SYS, COMP, LocationFlag) Lze také definovat, zda se jedná o kladnou nebo zápornou zpětnou vazbu - nastaví se pomocí parametru FeedbackSign. Pokud nastavíme do této proměnné hodnotu –1, máme zápornou zpětnou vazbu (která je nastavena default), v případě hodnoty +1 dostáváme kladnou zpětnou vazbu. V tomto případě se zadání provádí: RLTOOL (SYS, COMP, LocationFlag, FeedbackSign) Jedna z možností je otevřít pouze RLTOOL bez jakýchkoliv parametrů, kde parametry můžeme nastavit až přes menu. Proto si nejprve navolíme přenosy (pomocí SS, TF nebo ZPK). Otevřeme RLTOOL a v menu File – Import model… (Ctrl + I) můžeme dosadit za P, H nebo F námi zadané přenosy. Můžeme zde též nastavit kompenzátor v menu Tolls – Edit Compensator…, kde zadáme nuly (zero) a póly (pole). Hodnotu zesílení můžeme zadat přímo v okně Root Locus Design, stejně jako nastavení kladné nebo záporné zpětné vazby. Můžeme si zde také nechat vykreslit přechodovou funkci (‘step’), přechodovou (váhovou) funkci (‘impulse’), logaritmicko amplitudovou a fázovou charakteristiku (‘bode’) nebo frekvenční charakteristiku v komplexní rovině (‘nyquist’) a další, které nepoužijeme. Př: Bs = [1, 2]; As = [1, 2, 1]; SYS = TF (Bs, As); COMP = TF(2, 1); LocationFlag = 2; FeedbackSign = -1; RLTOOL (SYS, COMP, LocationFlag, FeedbackSign) Výsledek: Bloková algebra Blokovými schématy vyjadřujeme vazby mezi dílčími – samostatnými systémy, které se vzájemně ovlivňují a vytvářejí složitý dynamický celek. Systém úprav vedoucí k vyjádření dynamických vlastností těchto celků označujeme jako blokovou algebru. Máme několik základních schémat, která umí Matlab velice jednoduše vyřešit, avšak rozklad na tyto základní prvky musíme učinit sami. Zpětná vazba obr 1. Vyjádření záporné zpětné vazby v Matlabu se provede pomocí příkazu FEEDBACK. obr 2. Zadání: a) pro obr 1. b) pro obr 2. levý: c) pro obr 2. pravý: SYS = FEEDBACK (SYS1, SYS2) SYS = FEEDBACK (G, 1) SYS = FEEDBACK (1, G) obr 3. Vyjádření kladné zpětné vazby v Matlabu se provede pomocí příkazu FEEDBACK. Zadání: d) pro obr 3. SYS = FEEDBACK (SYS1, -SYS2) e) obdobně též pro kladnou zpětnou vazbu na obr 2. SYS = FEEDBACK (G, -1) SYS = FEEDBACK (1, -G) Sériové zapojení Zadání: SYS = SERIES (SYS1, SYS2) Paralelní zapojení Zadání: SYS = PARALLEL (SYS1, SYS2) V případě sčítacího místa s mínusy se zadání provádí pomocí –SYS1 (případně –SYS2) Př: SYS1 = TF([2 1],[1 2 1]); SYS2 = TF([5],[1 5 6]); SYS_ZV = FEEDBACK (SYS1, SYS2) SYS_ZV_1 = FEEDBACK (SYS1, 1) SYS_ZV_2 = FEEDBACK (1, SYS2) SYS_SER = SERIES (SYS1, SYS2) SYS_PAR = PARALLEL (SYS1, SYS2) Výsledek: Transfer function: SYS_ZV 2 s ^3 + 11s ^ 2 + 17 s + 6 s ^ 4 + 7 s ^3 + 17 s ^ 2 + 27 s + 11 Transfer function: 2s + 1 s^2 + 4s + 2 SYS_ZV_1 Transfer function: s ^ 2 + 5s + 6 s ^ 2 + 5s + 11 SYS_ZV_2 Transfer function: SYS_SER 10 s + 5 s ^ 4 + 7 s ^3 + 17 s ^ 2 + 17 s + 6 Transfer function: SYS_PAR 2 s ^3 + 16 s ^ 2 + 27 s + 11 s ^ 4 + 7 s ^3 + 17 s ^ 2 + 17 s + 6 Př: S1 = s+2 2 s + 2s + 1 S2 = 3 s+2 S3 = 2 s S4 = s +1 s S5 = 4s 2 + 2s + 1 s2 + s 1 s + 1,92 s + 0,16 s +1 S7 = 2 s + 5s + 6 S6 = 2 Úpravou dle obrázků dostaneme: A= S3 1 + S 3.S 5 S12 = S1.S 2 B = S 4 + S12 C = A.B D = S1.S 6 1 E= 1+ S6 F = S 7 .E G=C−D H = G .F I= 1 1− H J = I .C Zadání do Matlabu: S1 = TF ([1 2],[1 2 1]); S2 = TF ([3],[1 2]); S3 = TF ([2],[1 0]); S4 = TF ([1 1],[1 0]); S5 = TF ([4 2 1],[1 1 0]); S6 = TF ([1],[1 1.92 0.16]); S7 = TF ([1 1],[1 5 6]); A = FEEDBACK (S3,S5); S12 = SERIES (S1,S2); B = PARALLEL (S12,S4); C = SERIES (A,B); D = SERIES (S1,S6); E = FEEDBACK (1,S6); F = SERIES (S7,E); G = PARALLEL (C,-D); H = SERIES (G,F); I = FEEDBACK (1,-H); J = SERIES (I,C); Zde je popsán jeden konkrétní příklad řešení Blokové Algebry. Pro lepší orientaci je vhodné vyzkoušet příklad v Matlabu i v Simulinku. Tak se nejlépe pozná, že výsledný přenos je ve všech bodech řešení příkladu stejný. Výsledná funkce J bude relativně nepřehledná (v čitateli s21 a ve jmenovateli s22). Pokud zapojíte první a poslední obrázek s příslušnými přenosy, bude se přechodová funkce ve vyšších časech lišit. To je způsobeno zaokrouhlováním Matlabu ve výsledném přenosu J. Převod spojitého přenosu na diskrétní V praxi se většinou nevyskytují Spojité systémy, ale většinou se jedná o Diskrétní systémy. Zde je tento systém vzorkován v určitých časových intervalech (toto se v systému projeví jako vzorkovací čas Ts). Matlab nám dává možnost volby několika metod přenosu: ‘zoh’ Metody: zero-order hold - přidržení nulového řádu ‘foh’ first-order hold - trojúhelníková aproximace ‘tustin’ vícelineární Tustinova aproximace ‘prewarp’ Tustinova aproximace s frekvenční překroucením ‘matched’ metoda párování póly-nuly V Matlabu se používá funkce C2D “Continuous to Diskret system” Zadání: SYS = C2D (SYS1, Ts) Ts….vzorkovací čas SYS = C2D (SYS, Ts, method) method - zvolená metoda nebo Př: SYS1 = TF([1 2],[1 2 1]); SYS = C2D (SYS1, 0.1) Výsledek: Transfer function: 0.09984 z − 0.08173 z ^ 2 − 1.81z + 0.8187 Sampling time: 0.1 Změna vzorkovacího času u diskrétního přenosu Pokud již máme zadaný Diskrétní přenos a chceme změnit vzorkovací čas, použijeme funkci D2D „Discret to Descret“. Zadání: SYS1 = D2D (SYS, Ts) Př: SYS1 = TF([1 2],[1 5 6]); SYS = C2D (SYS1, 0.1) SYS = D2D (SYS, 0.05) Výsledek: Transfer function: 0.08639 z − 0.07073 z ^ 2 − 1.56 z + 0.6065 Sampling time: 0.1 Transfer function: 0.08639 z − 0.07073 z ^ 2 − 1.56 z + 0.6065 Sampling time: 0.05 Tato funkce nelze použít u vícenásobných kořenů. Převod diskrétního přenosu na spojitý Pokud máme zadaný nějaký Diskrétní přenos a potřebujeme z něj zjistit Spojitý přenos, použijeme funkci D2C „Discret to Continuous system“ Matlab nám dává možnost volby několika metod přenosu: ‘zoh’ Metody: zero-order hold - přidržení nulového řádu ‘tustin’ vícelineární Tustinova aproximace ‘prewarp’ Tustinova aproximace s frekvenční překroucením ‘matched’ metoda párování póly-nuly (pouze pro systémy SISO) Zadání: SYS = D2C (SYS1) nebo SYS = D2C (SYS1, method) Př: kde method je zvolená metoda SYS1 = TF ([1 0.2],[1 0.1 0.5], 0.1) SYS = D2C (SYS1) Výsledek: Transfer function: z + 0.2 z ^ 2 + 0.1z + 0.5 Sampling time: 0.1 Transfer function: 75.45s + 2.111e004 s ^ 2 + 69.31 + 2.815e004 Specifikace diskrétního přenosu v DSP formátu B( z ) b1 + b2 .z −1 + ... + bn +1 .z − n = A( z ) 1 + a 2 .z −1 + ... + a n +1 .z − n DSP – zpracování digitálního signálu. K tomu se používá funkce FILT. Tato funkce umožňuje zadat Diskrétní přenos v zadávání pomocí z-1 (přičemž z-1 = q). H ( z) = Zadání: SYS = FILT (Bz, Az, Ts) Př: Bz = [1 0.5]; Az = [1 0.2 0.1]; SYS = FILT (Bz, Az, 0.1) Výsledek: Transfer function: 1 + 0.5 z ^ −1 1 + 0.2 z ^ −1 + 0.1z ^ −2 Sampling time: 0.1 kde Ts… vzorkovací čas Az…polynom jmenovatele Bz…polynom čitatele Zadání diskrétního přenosu pomocí funkce TF b .z m + ... + b1 .z + b0 B( z ) = r m n A( z ) z . a n .z + ... + a1 .z + a 0 Pro zadání Diskrétního přenosu můžeme použít funkci TF, kterou jsme již používali dříve, zde ovšem přidáme jeden parametr navíc, kterým je vzorkovací čas Ts. F ( z) = ( ) Zadání: SYS = TF(Bz, Az, Ts) Př: Bz = [1 0.2] Az = [1 0.2 0.1] SYS = TF (Bz, Az, 0.1) Výsledek: Transfer function: z + 0.2 z ^ 2 + 0.2 z + 0.1 Sampling time: 0.1 Zadání diskrétního přenosu pomocí funkce SS x[n + 1] = Ax[n] + Bu[n] y[n] = Cx[n] + Du[n] Pro zadání Diskrétního stavového popisu můžeme použít funkci SS, kde zadáme navíc vzorkovací čas Ts. Zadání: SYS = SS(A, B, C, D, Ts) Př: A = [0.8 –0.09; 0.09 0.99]; B = [0.09; 0.005]; C = [1 2]; D = [0]; SYS = SS(A, B, C, D, 0.1) Výsledek: a = x1 x2 x1 0.8 0.09 x1 x2 u1 0.09 0.005 y1 x1 1 x2 -0.09 0.99 b = c = d = y1 Sampling time: 0.1 Discrete-time model. u1 0 x2 2 Zadání diskrétního přenosu pomocí funkce ZPK ( z − n1 ).( z − n2 ).....( z − nn ) N ( z) = K. P( z ) ( z − p1 ).( z − p 2 ).....( z − p n ) Pro zadání Diskrétní přechodové funkce můžeme použít funkci ZPK, kde zadáme navíc vzorkovací čas Ts. H ( z) = Zad: SYS = ZPK (N, P, K ,Ts) Př: N = [0.8]; P = [0.94; 0.94]; K = 0.1; Ts = 0.1; SYS = ZPK (N, P, K ,Ts) Výsledek: Zero/pole/gain: 0.1( z − 0.8) ( z − 0.94)^ 2 Sampling time: 0.1 Zadání náhodných hodnot Pokud mluvíme o náhodných procesech a o šumu, který je s tímto procesem spojen, musíme nejprve definovat tento náhodný proces (resp. šum). V Matlabu k tomu slouží funkce randn. Zadání: Y = randn (m,n) Př: kde m,n je počet řádků (resp. sloupců) v proměnné Y Y = randn (100,1) Matlab vypíše matici hodnot o 100 řádcích a jednom sloupci. Pokud se chceme podívat jak tento signál vypadá, použijeme funkci PLOT (Y). Výpočet střední hodnoty 1 N ∑ xi N i =1 Pokud chceme spočítat střední hodnotu, použijeme funkci MEAN. Tato funkce spočítá střední hodnotu ve všech sloupcích matice. x= Zadání: STH = MEAN (Y) Př: Y = [5 25 12; 6 64 19; 8 54 15; 1 23 17; 2 35 15] STH = MEAN (Y) Výsledek: Y = 5 6 8 1 2 STH = 4.4000 25 64 54 23 35 12 19 15 17 15 40.2000 15.6000 Směrodatná odchylka, rozptyl ( ) 1/ 2 ( ) 1/ 2 2 2 1 N 1 N (1) s= xi − x i (2) s = ∑ xi − x i ∑ N − 1 i =1 N i =1 Pokud chceme spočítat hodnotu rozptylu σ , použijeme funkci STD, a to buď dle vzorce (1) nebo (2). Zadání: S = STD (X,Flag) Př: kde Flag je typ 0 pro vzorec (1), typ 1 pro vzorec (2) Y = [5 25 12; 6 64 19; 8 54 15; 1 23 17; 2 35 15]; S = STD (Y) Výsledek: S = 2.8810 18.1025 2.6077 Rozptyl je směrodatná odchylka na druhou, proto pro jeho výpočet použijeme pouze jednoduché vyjádření. Př: Rozptyl1 = S(1,1)^2 Rozptyl2 = S(1,2)^2 Rozptyl3 = S(1,3)^2 Výsledek: V závorce je zadán první řádek a první sloupec matice V závorce je zadán první řádek a druhý sloupec matice V závorce je zadán první řádek a třetí sloupec matice Rozptyl1 = 8.3000 Rozptyl2 = 327.7000 Rozptyl3 = 6.8000 Vzájemná kovariance c xy (l ) = [( ) 1 N −l ∑ x(k ) − x .(y (k + l ) − y N − l k =1 ] l = 0,1,2.....N − 1 ; τ = K.TV V Matlabu můžeme použít pro výpočet vzájemné kovariance funkci XCOV, tento příkaz se dá použít i pro výpočet autokovarianční funkce. Při použití funkce XCOV má vektor X velikost Nx, a vektor Y velikost Ny (kde Nx > Ny). Potom výsledný vektor bude mít rozměr 2*Nx – 1. Autokovarianční funkce ukazuje pravděpodobnost toho, že stochastický signál x(k) vztažený ke střední hodnotě, který má v t1 hodnotu x1, bude mít v t1 + τ hodnotu x1. Zadání: C = XCOV (X,Y, ‘coeff’) nebo C = XCOV (X,X, ‘coeff’) Př: … pro autokovarianční fci Y = randn (30,1); X = randn (30,1); C = XCOV (X, Y, ‘coeff’); Vzájemná korelace R xy (τ ) = 1 N N −l ∑ x(k ). y(k + l ) l = 0,1,2.....N − 1 ; k =1 τ = K.TV V Matlabu můžeme použít pro výpočet vzájemné korelace funkci XCORR, tento příkaz se dá použít i pro výpočet autokorelační funkce. Při použití funkce XCORR má vektor X velikost Nx, a vektor Y velikost Ny (kde Nx > Ny). Potom výsledný vektor bude mít rozměr 2*Nx – 1. Autokorelační funkce ukazuje pravděpodobnost toho, že stochastický signál x(k), který má v t1 hodnotu x1, bude mít v t1 + τ hodnotu x1. Zadání: R = XCORR (X, Y, ‘coeff’) nebo R = XCORR (X, X, ‘coeff’) … pro autokorelační fci Př: Y = randn (30,1); X = randn (30,1); R = XCORR (X, Y, ‘coeff’); Dvojrozměrná vzájemná korelace V Matlabu se použije funkce XCORR2, která vrátí křížovou korelaci matice X a Y beze změny měřítka. Tzn. vektor X má velikost Nx, a vektor Y velikost Ny. Potom výsledný vektor bude mít rozměr Nx + Ny – 1. XCORR2 je dvojrozměrná verze XCORR. Zadání: R = XCORR2 (X,Y); nebo R = XCORR2 (X,X); Př: … pro autokorelační fci Y = randn (30,1); X = randn (30,1); R = XCORR2 (X, Y); Výpočet kovarianční matice Kovarianční matice má podobu: 2 1 N xi − x ∑ N i =1 1 N ∑ y i − y . xi − x N i =1 M 1 N ∑ z i − z . xi − x N i =1 ( ) ( )( ) ( )( ) 1 N ∑ (x N i =1 1 N 1 N i ∑ (y N i =1 ∑ (z N i =1 )( − x . yi − y i M i −y )( ) ) 2 − z . yi − y K K ) O K ( ( )( )( 1 N ∑ xi − x . z i − z N i =1 1 N ∑ yi − y . z i − z N i =1 M 1 N ∑ zi − z N i =1 ( ) ) ) Kovarianční matice spočítá hodnoty stochastických signálů vztažených ke střední hodnotě. K tomu slouží v Matlabu funkce COV. Při zadávání můžeme posuzovat pouze dvě proměnné, proto pokud potřebujeme porovnat více signálů, musíme tyto signály vložit do jedné proměnné. Funkce COV tyto signály v jedné proměnné porovná mezi sebou. Zadání: C = COV (X) Matice korelačních koeficientů Funkce CORRCOEF vrací matici korelačních koeficientů propočítaných z vstupní matice, jejíž řádky jsou zkoumány a jejíž sloupce jsou proměnné. Pokud C = COV(X), pak CORRCOEF (X) je matice, jejíž elementy (i,j) jsou CORRCOEF (i, j ) = C (i, j ) C (i, i ) ∗ C ( j , j ) Zadání se provádí: C = CORRCOEF (X) Výstupní a stavová kovariance systému s bílým šumem Popis: COVAR spočítá stacionární Kovarianci výstupu y u modelu LTI SYS řízeného Gaussovým bílým šumem vstupu w. Tato funkce pracuje zároveň se spojitým a diskrétním časem. P = covar(sys,W) vrací ustálenou hodnotu Kovariance výstupu. Zadání: [P,Q] = COVAR(SYS,W) Př: SYS = TF([2 1],[1 0.2 0.5],0.1) P = COVAR(SYS,5) Výsledek: Transfer function: 2z + 1 z ^ 2 + 0.2 z + 0.5 Sampling time: 0.1 P = 30.3167 kde … W je intenzita bílého šumu SYS je zadaný diskrétní přenos Diskrétní identifikace pomocí modelu ARX ARX (AutoRegresive eXogenous) - odhaduje parametry modelu ARX nebo AR. Parametry ARX modelu mají strukturu: A(q ). y (t ) = B(q ).u (t − nk ) + e(t ) Při zadávání do Matlabu použijeme th = arx(z,nn), kde th (theta) vrátí hodnoty odhadu modelu ARX, z = [y,u], kde y je výstupní vektor a u je vstupní vektor, nn = [na nb nk], kde na je stupeň polynomu A, nb je stupeň polynomu B a nk je vždy rovno jedné. Zadání: Z = [Y, U] NN = [na, nb, 1] TH = ARX (Z, NN) Jestliže vypočteme matici th musíme jí převést na obrazový přenos s určitým vzorkovacím časem. Pro tuto operaci použijeme funkci th2arx („theta to arx“). Zadání: [A, B] = th2arx (TH) SYS = TF (B, A, Ts) kde T je vzorkovací čas Diskrétní identifikace pomocí modelu ARMAX ARMAX (AutoRegresive Moving Average eXogenous) - odhaduje parametry modelu ARMAX nebo ARMA. Parametry ARMAX modelu mají strukturu: A(q ). y (t ) = B(q ).u (t − nk ) + C (q ).e(t ) Při zadávání do Matlabu použijeme th = armax(z,nn), kde th (theta) vrátí hodnoty odhadu modelu ARMAX, z = [y,u], kde y je výstupní vektor a u je vstupní vektor, nn = [na nb nc nk], kde na je stupeň polynomu A, nb je stupeň polynomu B, nc je stupeň polynomu C a nk je vždy rovno jedné. Zadání: Z = [Y, U] NN = [na, nb, nc, 1] TH = ARMAX (Z, NN) Jestliže vypočteme matici th musíme jí převést na obrazový přenos s určitým vzorkovacím časem. Pro tuto operaci použijeme funkci th2arx („theta to arx“). Zadání: [A, B, C] = th2arx (TH) SYS1 = TF (B, A, Ts) SYS2 = TF (C, A, Ts) kde T je vzorkovací čas
Podobné dokumenty
Základní pravidla MATLABu
Proměnné a matice:
Každá proměnná v Matlabu je brána jako matice, přestože má rozměr 1x1. Dimenzování ani deklarování typu
se u Matlabu nepoužívá, protože sám Matlab si toto dělá automaticky. Inde...
Hypertextová podpora výuky v oblasti automatického řízení
násobení konstantou a další elementární operace. V knihovně nelineárních bloků jsou
předdefinovány paměťové bloky, přepínače, releové charakteristiky, násobení a dělení
signálů, zdroje hodinových i...
7.1. Číslicové filtry IIR
Podmínka (7.11) může být splněna pro reálný filtr pouze přibližně. Podmínka (7.12)
bude splněna, pokud řád jmenovatele analogové přenosové funkce Ha (p) je alespoň
o dva vyšší než řád čitatele.
Popi...
ř ř System interconnections (systémové vzájemné propojení)..
1.2.12 State-space models (stavové modely)
rss, drss - random stable state-space models
Detailní popis ve formátu pdf.
Je integrální součástí konstrukce nové řady LSiM. Všechny ozvučnice LSiM mají boční steny
z 1“ MDF, 0,75“ na zadní straně a 1,25“ na přední straně. Každý reproduktor navíc pracuje ve
vlastní samost...