Professional Documents
Culture Documents
Structure A
Initialization
Structure B
Initialization
Structure C
Initialization
mdlOutputs
mdlOutputs
mdlOutputs
mdlUpdate
mdlDerivatives
Termination
Termination
Termination
Contoh :
timestwo.c
Contoh :
SPD_CTL.c
Contoh :
DC.c
Initialization:
To configure or set:
I/O port width number, sample time, number of states,
and initial state values.
mdlOutput:
To formulate output expressions
Usually by simple math equations
mdlUpdate:
To express the algorithms
Discrete calculation updating the discrete states
mdlDerivatives:
To express the model as continuous system
Continuous calculation updating the continuous states
using one chosen integration method
Termination:
Necessary action at the termination of a simulation if any
such as for free the allocated memory
Structure A:
Has no any state
Sample time can be discrete or continuous
Structure C:
Has continuous states
HEADER
#define S_FUNCTION_LEVEL 2
Disamakan
dengan
nama file .c
#include <math.h>
CONTOH
INPUT PORT
PORT 0
PORT 1
PORT 2
Maka :
Untuk sinyal masukan port 0 ,
dipanggil dengan perintah A()
dst
ssSetNumContStates(S, 8);
ssSetInputPortWidth(S, 0, 1);
ssSetInputPortDirectFeedThrough(S, 0, 1);
ssSetInputPortOverWritable(S, 0, 1);
ssSetInputPortWidth(S, 1, 1);
ssSetInputPortDirectFeedThrough(S, 1, 1);
ssSetInputPortOverWritable(S, 1, 1);
ssSetInputPortWidth(S, 2, 1);
ssSetInputPortDirectFeedThrough(S, 2, 1);
ssSetInputPortOverWritable(S, 2, 1);
ssSetOutputPortWidth(S, 0, 6);
ssSetNumSampleTimes(S, 1);
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
U(0)
U(1)
U(3)
U(4)
ssSetNumContStates(S, 8);
if (!ssSetNumInputPorts(S, 3)) return;
ssSetInputPortWidth(S, 0, 1);
ssSetInputPortDirectFeedThrough(S, 0, 1);
ssSetInputPortOverWritable(S, 0, 1);
ssSetInputPortWidth(S, 1, 1);
ssSetInputPortDirectFeedThrough(S, 1, 1);
ssSetInputPortOverWritable(S, 1, 1);
ssSetInputPortWidth(S, 2, 1);
ssSetInputPortDirectFeedThrough(S, 2, 1);
ssSetInputPortOverWritable(S, 2, 1);
10
STUDI KASUS
SIMULASI PENGENDALI KECEPATAN
MOTOR DC DENGAN PID
11
DC MOTOR
Ra
La
B
ia
ea
eb
dia
ea Raia La
eb
dt
T J B
DC Motor
T Kt ia
eb Kb
J B-Kt ia 0
dia
La
Raia Kb ea
dt
PART I
#define S_FUNCTION_LEVEL 2
#define S_FUNCTION_NAME dc
#include <math.h>
#include "simstruc.h"
14
PART II
ssSetNumContStates(S, 3);
ssSetInputPortWidth(S, 0, 2);
ssSetInputPortDirectFeedThrough(S, 0, 1);
ssSetInputPortOverWritable(S, 0, 1);
ssSetOutputPortWidth(S, 0, 3);
ssSetNumSampleTimes(S, 1);
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
15
PART III
#define MDL_INITIALIZE_CONDITIONS
real_T
InputRealPtrsType
x[0] = 0;
x[1] = 0;
*x
= ssGetContStates(S);
uPtrs
= ssGetInputPortRealSignalPtrs(S,0);
Diisi dengan
nilai awal
state/keadaan
16
PART IV
real_T *y
= ssGetOutputPortRealSignal(S,0);
real_T *x
= ssGetContStates(S);
y[0] = x[0];
y[1] = x[1];
y[2]= x[2];
17
#define MDL_DERIVATIVES
real_T *x = ssGetContStates(S);
real_T Ra = 0.5;
real_T La = 0.01;
real_T B = 0.001;
real_T J = 0.05;
real_T Kt = 0.5;
real_T Kb = 0.001;
dx[0] = x[1];
18
HASIL SIMULASI
19