Simulink - co to jest?
„SIMULINK jest aktywnym pakietem
przeznaczonym do modelowania, symulacji i
analizy, dynamicznych układów ciągłych,
układów dyskretnych w czasie oraz mieszanych
tzn. dyskretno-ciągłych”
[B. Mrozek, Z. Mrozek]
Simulink jest zintegrowany z Matlabem.
Nie jest możliwe
używanie Simulinka bez zainstalowania pakietu Matlab
Simulink a Matlab.
Stateflow
Stateflow
Stateflow
Blocksets
Code Generation,
RTW, SF Coder
Toolboxes
Desktop Applications
Automated Reports
DAQ cards
Instruments
Simulink a Matlab - cd.
Implementacja
Narzędzia
Embedded
Software/DSP
Narzędzia EDA
Rozwiązania
sprzętowe
Rozwiązania
programowe,
DSP
RTW, platformy docelowe
Narzędzia firm trzecich
Projektowanie systemu
M
ATLAB
Projektowanie algorytmów
i analiza systemu
S
IMULINK
• Projektowanie zstępujące
• Testowanie działania
systemu we wczesnej fazie
procesu projektowania
• Obniżenie kosztów i ryzyka
• Skrócenie czasu
projektowania nowego
produktu
Składniki pakietu Simulink
• Biblioteka bloków
• Algorytmy numeryczne do rozwiązywania układów
równań różniczkowych zwyczajnych
• Funkcje do symulacji modeli Simulinka z okna poleceń
Matlaba
• Funkcje do konstruowania modeli i maskowania
• Interfejsy graficzne użytkownika (Tools)
• Dodatkowe pakiety bloków i narzędzi pochodzące z
toolboxów i dodatkowych bibliotek (blocksets)
Jak rozpocząć pracę z Simulinkiem?
>> simintro
Podstawowa biblioteka bloków
Podstawowa biblioteka bloków - przykłady
Podstawowa biblioteka bloków - przykłady cd
Budowanie schematów
Ustawianie parametrów i uruchamianie symulacji
Jak działa Simulink? - Inicjalizacja
• Przypisanie parametrom wartości numerycznych
• Spłaszczenie modeli hierarchicznych (z wyj.
podsystemów wykonywanych warunkowo)
• Sortowanie bloków
• Sprawdzanie połączeń między blokami (typ,
wymiar)
Jak działa Simulink? - Symulacja
• Wyznaczanie wyjścia każdego bloku w kolejności
sortowania
• Obliczanie pochodnych stanu dla poszczególnych
bloków
• Całkowanie numeryczne (nowe wartości wektora
stanu)
• Aktualizacja bloków wizualizacji i próbkujących
Dodatkowe biblioteki bloków
• Aerospace Blockset
• CDMA Reference Blockset
• Communications Blockset
• DSP Blockset
• Dials & Gauges Blockset
• Fixed-Point Blockset
• Nonlinear Control Design
Blockset
• Sim Mechanics
• Sim Power Systems
• Virtual Reality Toolbox
Bloki dołączone do
Toolboxów Matlaba
• Control System
• Fuzzy Logic
• Neural Network
• System Identification
Przykład - Silnik elektryczny
J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
printsys(num,den)
Przykład - Silnik elektryczny cd.
» printsys(num,den)
num/den =
0.01
---------------------------
0.005 s^2 + 0.06 s + 0.1001
Przykład - Silnik elektryczny cd.
Przykład - Silnik elektryczny cd.
Przykład - Silnik elektryczny cd.
Tworzenie podsystemów
Maskowanie podsystemów
Co to jest S - Funkcja?
S-Funkcja pozwala na definiowanie własnych bloków
Simulinka (o niemal dowolnej funkcjonalności)
• S-Funkcję dołącza się do schematu Simulinka za
pomocą bloku „S-Function” z biblioteki „User-
Defined Functions” (w starszych wersjach:
„Nonlinear”)
• Może mieć postać:
– m-pliku funkcyjnego o zdefiniowanej strukturze
– mex-pliku o zdefiniowanej strukturze napisanego w
jednym z języków programowania: C, C++, Ada,
Fortran
S - Funkcja - Budowa
function [sys,x0,str,ts] = timestwo(t,x,u,flag)
%
% Dispatch the flag. The switch function controls the calls to
% S-function routines at each simulation stage of the S-function.
%
switch flag,
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
% Initialize the states, sample times, and state ordering strings.
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
% Return the outputs of the S-function block.
case 3
sys=mdlOutputs(t,x,u);
%%%%%%%%%%%%%%%%%%%
% Unhandled flags %
%%%%%%%%%%%%%%%%%%%
% There are no termination tasks (flag=9) to be handled.
% Also, there are no continuous or discrete states,
% so flags 1,2, and 4 are not used, so return an emptyu
% matrix
case { 1, 2, 4, 9 }
sys=[];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% % Unexpected flags (error handling)% %%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%
% Return an error message for unhandled flag values.
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
% end timestwo
%=========================================================
% 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; % dynamically sized
sizes.NumInputs = -1; % dynamically sized
sizes.DirFeedthrough = 1; % has direct feedthrough
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
str = [];
x0 = [];
ts = [-1 0]; % inherited sample time
% end mdlInitializeSizes
%=========================================================
% mdlOutputs
% Return the output vector for the S-function
%=========================================================
function sys = mdlOutputs(t,x,u)
sys = u * 2;
% end mdlOutputs
S - Funkcja - Budowa cd.
Narzędzia Simulinka - Edytor
Narzędzia Simulinka - Debugger
Narzędzia Simulinka - Profiler
Rozszerzenia Simulinka - Real Time Workshop
• Automatycznie generuje ANSI C
• Pozwala ingerować w
generowany kod
• Przyspiesza symulację (po
kompilacji)
• Platformy docelowe
– PC
– DSP
– Mikrokontroler
– Dedykowana - użytkownika
Rozszerzenia Simulinka - Stateflow
• Projektowanie układów
sterowanych
zdarzeniami
• Graficzne
programowanie
układów z
wykorzystaniem teorii
automatów
skończonych
• Integracja z
Simulinkiem i Matlabem