SIMULINK S-funktiot. SIMULINK S-funktiot



Samankaltaiset tiedostot
Capacity Utilization

The CCR Model and Production Correspondence

SIMULINK 5.0 Harjoitus. Matti Lähteenmäki

Harjoitus 5: Simulink

16. Allocation Models

Operatioanalyysi 2011, Harjoitus 2, viikko 38

C++11 seminaari, kevät Johannes Koskinen

Efficiency change over time

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

Alternative DEA Models

812336A C++ -kielen perusteet,

4.1 Frekvenssijakauman muodostaminen tietokoneohjelmilla

Tilayhtälötekniikasta

Returns to Scale II. S ysteemianalyysin. Laboratorio. Esitelmä 8 Timo Salminen. Teknillinen korkeakoulu

anna minun kertoa let me tell you

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Lyhyt tutustumiskierros Simulink-ohjelman käyttöön hydrauliikan simuloinnissa

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ

Operatioanalyysi 2011, Harjoitus 4, viikko 40

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu

Virtuaalinen tarkastus. Katselmoinnit osa 3. Paritarkastus. N-kertainen tarkastus (n-fold inspection)

Ohjelmoinnin peruskurssien laaja oppimäärä

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Matlabin perusteita Grafiikka

I. Principles of Pointer Year Analysis

Choose Finland-Helsinki Valitse Finland-Helsinki

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

21~--~--~r--1~~--~--~~r--1~

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Other approaches to restrict multipliers

JY / METODIFESTIVAALI 2013 PRE-KURSSI: KYSELYTUTKIMUS DEMOT

2_1----~--~r--1.~--~--~--,.~~

Encapsulation. Imperative programming abstraction via subprograms Modular programming data abstraction. TTY Ohjelmistotekniikka

Salasanan vaihto uuteen / How to change password

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

Tietorakenteet ja algoritmit

Sisällysluettelo Table of contents

Capacity utilization

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

BLOCKCHAINS AND ODR: SMART CONTRACTS AS AN ALTERNATIVE TO ENFORCEMENT

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

Tilastolliset ohjelmistot A. Pinja Pikkuhookana

Ajettavat luokat: SM: S1 (25 aika-ajon nopeinta)

The Viking Battle - Part Version: Finnish

Flowcode 6 Omien komponenttien luonti 3D- tilassa Ledi

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

Operatioanalyysi 2011, Harjoitus 3, viikko 39

Statistical design. Tuomas Selander

Toimilohkojen turvallisuus tulevaisuudessa

Lämmitysjärjestelmät

BL40A0000 Säätötekniikan ja signaalinkäsittelyn

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Returns to Scale Chapters

LYTH-CONS CONSISTENCY TRANSMITTER

TEKNILLINEN KORKEAKOULU Systeemianalyysin laboratorio. Kimmo Berg. Mat Optimointioppi. 9. harjoitus - ratkaisut

TM ETRS-TM35FIN-ETRS89 WTG

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

EUROOPAN PARLAMENTTI

TM ETRS-TM35FIN-ETRS89 WTG

Results on the new polydrug use questions in the Finnish TDI data

EVALUATION FOR THE ERASMUS+-PROJECT, STUDENTSE

Mat-1.C Matemaattiset ohjelmistot

Small Number Counts to 100. Story transcript: English and Blackfoot

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

TM ETRS-TM35FIN-ETRS89 WTG

TM ETRS-TM35FIN-ETRS89 WTG

TM ETRS-TM35FIN-ETRS89 WTG

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Dynaamisten systeemien teoriaa. Systeemianalyysilaboratorio II

Ohjelmoinnin peruskurssien laaja oppimäärä

Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition)

AYYE 9/ HOUSING POLICY

Gap-filling methods for CH 4 data

Matlab- ja Maple- ohjelmointi

SIMULINK 5.0 Aloitusopas. Matti Lähteenmäki

RAKE-vastaanotinsimulaatio. 1. Työn tarkoitus. 2. Teoriaa. 3. Kytkentä. Tietoliikennelaboratorio Versio

ANALOGIAPIIRIT III/SUUNNITTELUHARJOITUS OSA 1

TM ETRS-TM35FIN-ETRS89 WTG

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

TM ETRS-TM35FIN-ETRS89 WTG

RE11LMBM. Tuotelehti Tuntomerkit. Pääasiallinen. Vastaavanlainen 1 / 6

National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007

make and make and make ThinkMath 2017

1. Liikkuvat määreet

Ohjelmoinnin peruskurssien laaja oppimäärä

LUONNOS RT EN AGREEMENT ON BUILDING WORKS 1 THE PARTIES. May (10)

,0 Yes ,0 120, ,8

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

Ohjelmoinnin peruskurssien laaja oppimäärä

Hotel Pikku-Syöte: accommodation options and booking

Security server v6 installation requirements

Dynaaminen muisti Rakenteiset tietotyypit

RINNAKKAINEN OHJELMOINTI A,

Kvanttilaskenta - 1. tehtävät

TÄYTTÖAUTOMAATIT TÄYTTÖAUTOMAATIT COMPUTER INFLATORS

Transkriptio:

S-funktio on ohjelmointikielellä (Matlab, C, Fortran) laadittu oma algoritmi tai dynaamisen järjestelmän kuvaus, jota voidaan käyttää Simulink-malleissa kuin mitä tahansa valmista lohkoa. S-funktion rakenne on hyvin yleinen ja funktio voi kuvata niin jatkuva- kuin diskreettiaikaisia systeemejä sekä näiden yhdistelmiä eli hybridisysteemejä. liitetään Simulink-malliin käyttäen S-function lohkoa, joka löytyy hakemistosta User-Defined Functions. BL40A0000 SSKMO KH 1 function[sys,x0, % omafunktio M-file % switch(flag) S-funktiolohko, sen parametri-ikkuna ja lähdekoodia sisältävä tiedosto. BL40A0000 SSKMO KH 2

Yleisin syy S-funktioiden käyttämiseen on tarve standardi Simulink-lohkoja erikoisemmille lohkoille. S-funktioita voidaan käyttää mm. Uuden yleiskäyttöisen lohkon lisääminen Simulinkkiin Olemassa olevan C-koodatun osion sisällyttäminen simulointimalliin Systeemin kuvaaminen suoraan matemaattisilla yhtälöillä Kuvaamaan todellista toteutusrakennetta (esim. säätöalgoritmi sulautetussa järjestelmässä) Animaation käyttäminen BL40A0000 SSKMO KH 3 Kaikkien Simulink-lohkojen, myös S-funktiolohkon, rakennetta voidaan kuvata oheisella kaaviolla u (tulot) x (tilat) y (lähdöt) Tilavektori voi muodostua jatkuva-aikaisista tai diskreettiaikaisista tiloista tai molempien yhdistelmänä. Tilat ovat s-funktion sisäisiä muuttujia jotka eivät välttämättä näy suoraan ulospäin. Tiloja ei tarvitse välttämättä käyttää. BL40A0000 SSKMO KH 4

Tulojen, lähtöjen ja tilojen väliset matemaattiset riippuvuussuhteet voidaan esittää yleisesti muodossa y = x& x = f c ( t, x, u) d ( t, x, u) f ( t, x, u) c d = k+ 1 u ("differenssiyhtälöt") x = x 0 f + x d (lähtö) Tärkein! (tilojen derivaatat) BL40A0000 SSKMO KH 5 Simulink suorittaa a vaiheittain tietyn syklin mukaisesti: 1. Funktion alustus 2. Seuraavan aika-askeleen laskenta (jos käytössä muuttuvan askelpituuden integrointimenetelmä) 3. Lähtöjen laskenta (simuloinnin aika-askel) 4. Diskreettien tilojen päivitys (simuloinnin aika-askel) 5. Integrointi (funktion sisäinen aika-askel) Simulink ohjaa S-funktion suoritusta lippujen (flag) avulla. Käyttäjän tehtäväksi jää vain kullakin lipun arvolla suoritettavien funktioiden laatiminen. BL40A0000 SSKMO KH 6

S-funktion simulointivaiheet Simulointivaihe Suoritettava S-funktion rutiini Lippu (Flag) Alutus (Initialization) mdlinitializesizes flag = 0 Seuraavan suoritushetken laskenta mdlgettimeofnextvarhit flag = 4 (Next Sample Hit) Lähtöjen (outputs) laskenta mdloutputs flag = 3 Diskreettien tilojen päivitys mdlupdate flag = 2 Derivaattojen laskenta mdlderivatives flag = 1 Simuloinnin lopetus mdlterminate flag = 9 Koska S-funktion rutiineiden tulee olla nimeltään täsmälleen yo. taulukon mukaisia, on suositeltavinta käyttää valmista S-funktiopohjaa sfuntmpl.m, joka löytyy hakemistosta matlabhakemisto/toolbox/simulink/blocks BL40A0000 SSKMO KH 7 Toinen helppo tapa on käyttää pohjana valmiita Simulinkin S-funktioesimerkkejä. Näistä saa listan komennolla help blocks. Esimerkkien lähdekoodit löytyvät samasta hakemistosta kuin alkuperäinen S-funktiopohja. Käydään lopuksi läpi esimerkki simple_esim, jossa esitetään mm. vaihtoehto tilojen käyttämiselle. Mieti kuitenkin, miten esimerkissä voitaisiin hyödyntää tiloja x. BL40A0000 SSKMO KH 8

Esimerkissä lähtösignaalin uusi arvo saadaan lisäämällä edellisen suorituskerran lähtösignaalin arvoon tulosignaalin ja edellisen lähtösignaalin erotus kertoimella a =0 1 skaalattuna eli y(k) = y(k-1) + a*(u(k)-y(k-1)) simple _e sim Sine Wave S-Function Scope Random Num be r S-funktion Matlab-koodi simple_esim.m on seuraava: BL40A0000 SSKMO KH 9 function [sys,x0,str,ts] = simple_esim(t,x,u,flag,kerroin) %SIMPLE_ESIM S-function whose output is its old output added with the % scaled difference between the new input and previous output value. % This M-file illustrates how to construct an M-file S-function that % computes an output value based upon its input and old output value. % The output of this S-function can be expressed: % % y = y(k-1)+kerroin*(u(k)-y(k-1)) % % See sfuntmpl.m for a general S-function template. % % Sa2730000 Säätötekniikan ja sign. käs. matem. ohj. % Riku Pöllänen 17.10.2005 BL40A0000 SSKMO KH 10

% Dispatch the flag. The switch function controls the calls to % S-function routines at each simulation stage of the S-function. switch flag, case 0 [sys,x0,str,ts]=mdlinitializesizes; case 3 sys=mdloutputs(t,x,u,kerroin); case { 1, 2, 4, 9 } sys=[]; % Unhandled flags otherwise % Unexpected flags (error handling) error(['unhandled flag = ',num2str(flag)]); end % End of function simple_esim. BL40A0000 SSKMO KH 11 %=================================================================== % mdlinitializesizes: Return the sizes, initial conditions, and % sample times for the S-function. %=================================================================== function [sys,x0,str,ts] = mdlinitializesizes() sizes = simsizes; sizes.numcontstates = 0; sizes.numdiscstates = 0; sizes.numoutputs = -1; % -1 = dynamically sized, (1 ok too) sizes.numinputs = -1; % -1 =dynamically sized, (1 ok too) sizes.dirfeedthrough = 1; % Has direct feedthrough i.e. y=f(u) sizes.numsampletimes = 1; BL40A0000 SSKMO KH 12

sys = simsizes(sizes); str = []; x0 = []; ts = [-1 0]; % End of mdlinitializesizes. % Inherited sample time. If discrete system set ts % for sample time %=================================================================== % mdloutputs % Return the output vector for the S-function %=================================================================== function sys = mdloutputs(t,x,u,kerroin) persistent yprev % Definition of variables which values will be % stored in memory between s-function calls % Initialization of persistent variables so that they have values % also when s-function is execute first time. if(t==0) yprev=0; end BL40A0000 SSKMO KH 13 % Calculation of block output and place it into variable sys sys = yprev + kerroin*(u-yprev); % Save new value of yprev for the next call yprev=sys; % end mdloutputs BL40A0000 SSKMO KH 14

Huomioita sizes.numoutputs sizes.numinputs sizes.dirfeedthrough määrittelee lähtövektorin dimension määrittelee tulovektorin dimension lipulla ilmoitetaan onko funktion lähtö eksplisiittisesti tulosignaalin funktio esim. y = k u(1) ts = [-1 0]; S-funktion suoritusvälin määrittely: -1 (ei määritelty), 0 (jatkuva-aikainen), >0 diskreettiaikainen, Voi olla myös vektori, ei tarvitse olla tasavälinen BL40A0000 SSKMO KH 15 Huomioita persistent yprev1 määrittelee funktion sisäisen (lokaalin) muuttujan yprev1 jonka arvon Simulink tallettaa muistiin joka suorituskerran jälkeen. Tämän avulla on helppo operoida mdloutputs(t,x,u) rutiinissa ilman S-funktion tilojen käyttöä. persistent määritellyt lokaalit muuttujat on kuitenkin alustettava esim. if(t==0) yprev1=0; end Muutoin muutujien suhteen voidaan toimia kuten missä tahansa Matlabfunktiossa eli määrittelyjä ei tarvita. BL40A0000 SSKMO KH 16

Huomioita Funktiomäärittelyyn voidaan lisätä syöteparametrejä, joiden arvo annetaan sitten s-funktiolohkon Parameters ikkunaan. function [sys,x0,str,ts] = simple_esim(t,x,u,flag,kerroin) BL40A0000 SSKMO KH 17