%% FONDAMENTI DI AUTOMATICA
% Esercitazione Matlab n. 2: Sistema Massa-Molla, Dee e Simulink
% ======================================================================
clear all
close all


M = 1.0;        % kg
k = 0.25;       % N/m
h = 0.75;       % N*s/m

% DEFINIZIONE SISTEMA LINEARE TEMPO INVARIANTE
% ======================================================================
A = [0 1; -k/M -h/M];
B = [0; 1/M];
C = [1 0];
D = 0;
sys = ss(A,B,C,D);
x0 = [0 0]';    %l'apostrofo fa la trasposta del vettore/matrice a cui è applicato 


% SIMULINK
% ======================================================================
% Riprodurre con Simulink la stessa simulazione, utilizzando i blocchi
% step (libreria 'sources') state space (libreria 'continuous')
% e scope (libreria 'sinks' - visualizzazione grafica).
% E' importante osservare come si possono utilizzare variabili presenti nel
% Workspace di matlab all'interno dei blocchi simulink.
% Il tempo delle simulazioni e' in millisecondi
K = 2;
x0 = [0 0];
open('mm_lin')      % Apre un file .mdl, cioe' un file simulink

sim('mm_lin')       % Lancia una simulazione del file .mdl
pause




% SISTEMI NON LINEARI
% ======================================================================
% Per i sistemi non lineari non possiamo utilizzare la definizione del
% sistema in forma matriciale. Dobbiamo utilizzare le funzioni che
% descrivono la trasformazione di stato e di uscita.
% Utilizziamo dunque il blocco DEE (Differential Equation Editor) per 
% descrivere un sistema nella forma non-lineare.

% DEFINIZIONE DEL SISTEMA NON LINEARE
% Sul prompt di Matlab digitare dee.
% Aprire un nuovo file
% Portare nel nuovo file il blocco dee
% I vettori all'interno del blocco dee sono x,u,y e per indicare un
%   elemento i-esimo, si utilizza il suo indice all'interno del vettore
% Abbiamo quindi un input ed un output, che si riconoscono dalla
%   possibilita' di collegare un blocco
% Apriamo da "view", "library browser" e selezioniamo e importiamo i 
%   blocchi "step" e "scope".
% Colleghiamo i due blocchi al blocco "dee".
% Salviamo ed in questo modo abbiamo creato un modello matematico per il
%   sistema non-lineare, con un input ed un output. Abbiamo un modello del
%   tutto generale che non dipende da precisi valori dei parametri del
%   sistemi.
K1 = 0.0870;
x0 = [0 0]';
open('mm_nonlineare')      % Apre un file .mdl, cioe' un file simulink
sim('mm_nonlineare')       % Lancia una simulazione del file .mdl
% Provare a cambiare K
pause








% SOVRAPPOSIZIONE DEGLI EFFETTI
% ======================================================================
K1 = 0.087;
K2 = 0.093;
open('sovrapposizione_effetti')
sim('sovrapposizione_effetti')