39
MATLAB Examples Hans-Petter Halvorsen, M.Sc. Simulink

MATLAB Examples - Simulink€¦ · Combining MATLAB and Simulink • You may use Simulink together with MATLAB in order to specify data and parameters to your Simulink model. •

  • Upload
    others

  • View
    172

  • Download
    17

Embed Size (px)

Citation preview

MATLABExamples

Hans-PetterHalvorsen,M.Sc.

Simulink

WhatisSimulink?

• Simulinkisan“add-on”toMATLAB.• YouneedtohaveMATLABinordertouseSimulink• SimulinkisusedforSimulationofdynamicmodels• InSimulinkwecreateaGraphicalBlockDiagramforthesystem(basedonthedifferentialequations(s))

SimulinkModel

InSimulinkwecreateandconfiguregraphicalblocksandwirethemtogether(basedonthedifferentialequations)

StartSimulinkfromMATLAB

Clickthe“Simulink”buttonintheToolbar- ortype“simulink”intheCommandWindow

SimulinkStartPage

SimulinkModelEditor

LibraryBrowser

StartcreatingyourSimulinkModelherewithblocksfromthe“SimulinkLibraryBrowser”(just“DragandDrop”)

SimulinkLibraryBrowser

SimulinkExample

SimulinkExampleII

MyFirstSimulinkModelExample

Wewillusethefollowing:

WewillcreateandsimulatethisblockdiagramwithSimulink

Where

𝑇 istheTimeconstant

WestartbydrawingasimpleBlockDiagramforthemodellikethis(“Pen&paper”):

Model:

�̇� = 𝑎𝑥

UsingODESolversinMATLAB

Step1:DefinethedifferentialequationasaMATLABfunction(mydiff.m):

Step2:Useoneofthebuilt-inODEsolver(ode23,ode45,...)inaScript.

function dx = mydiff(t,x) T = 5;a = -1/T;dx = a*x;

clearclc

tspan = [0 25];x0 = 1;

[t,x] = ode23(@mydiff,tspan,x0);plot(t,x)

tspan

x0

MyFirstSimulinkModel

MyFirstSimulinkModelSolution

StarttheSimulationbyclickingthisicon

SimulationTime

SeetheSimulationResults

Double-ClickonthedifferentBlockstoentervalues

SetInitialValue

BacteriaPopulationHerewewillsimulateasimplemodelofabacteriapopulationinajar.Themodelisasfollows:

birthrate=𝑏𝑥deathrate=𝑝𝑥2

Thenthetotalrateofchangeofbacteriapopulationis:�̇� = 𝑏𝑥 − 𝑝𝑥*

Setb=1/hourandp=0.5 bacteria-hour→Wewillsimulatethenumberofbacteriainthejarafter1hour,assumingthatinitiallythereare100bacteriapresent.

function dx = bacteriadiff(t,x)% My Simple Differential Equation

b=1;p=0.5;

dx = b*x - p*x^2;

clearclc

tspan=[0 1];x0=100;

[t,y]=ode45(@bacteriadiff, tspan,x0);plot(t,y)

[t,y]

InMATLABWewoulddolikethis

BlockDiagramfortheModel(“PenandPaper”)

SimulinkBlockDiagramfortheModel

Data-drivenModelling

CombiningMATLABandSimulink

• YoumayuseSimulinktogetherwithMATLABinordertospecifydataandparameterstoyourSimulinkmodel.• YoumayspecifycommandsintheMATLABCommandWindoworascommandsinanm-file(Script).• Thisiscalleddata-drivenmodeling• Insteadofusingvaluesdirectlyweusevariablesinstead- ThisismoreflexiblebecausewecaneasilychangeSimulationParameterswithouttouchingtheSimulinkModel

Example Insteadofusingvaluesdirectlyweusevariablesinstead– ThisismoreflexiblebecausewecaneasilychangeSimulationParameterswithoutchangingtheSimulinkModel�̇� = 𝑎𝑥

Data-drivenModelling

clearclc

%Set Simulator Settingsx0=1;T=5;a=-1/T;t_stop=25; %[s]T_s=t_stop/1000; %[s]options=simset('solver', 'ode5', 'fixedstep', T_s);

%Starting Simulationsim('simulink_ex2', t_stop, options);

MATLABScriptforrunningtheSimulinkSimulation:

ThisistheNameforourSimulinkModelWegetthesameresults:

Mass-Spring-DamperSystemInthisexamplewewillcreateamass-spring-dampermodelinSimulinkandconfigureandrunthesimulationfromaMATLABm-file.

Thedifferentialequation forthesystemisasfollows:�̈� = ,

- (𝐹 − 𝑐�̇� − 𝑘𝑥)

Where:𝑥 - position�̇� - speed�̈� - acceleration

Insteadofhard-codingthemodelparametersintheblocksyoushouldrefertothemasvariablessetinanm-file.

x_init = 4; %[m]. Initial position.dxdt_init = 0; %[m/s]. Initial Speed.m = 20; %[kg]c = 4; %[N/(m/s)]k = 2; %[N/m]t_step_F = 50; %[s]F_O = 0; %[N]F_1 = 4; %[N]

Thefollowingvariablesshouldthenbesetinthem-file:

Position𝑥 andspeed�̇�:

ForceF:

Hans-PetterHalvorsen,M.Sc.

UniversityCollegeofSoutheastNorwaywww.usn.no

E-mail:[email protected]:http://home.hit.no/~hansha/