# Simulink Difference Equation Implementation

38 views (last 30 days)

Show older comments

##### 4 Comments

Walter Roberson
on 20 Dec 2020

If you are using a discrete system then use https://www.mathworks.com/help/simulink/slref/memory.html memory block.

If you are using a continuous system, then you would have difficulty implementing something like the trapazoid rule.

Paul
on 20 Dec 2020

Hard to say how to make the two equivalent without knowing exactly what's inside the block C(s)1.

### Accepted Answer

Paul
on 20 Dec 2020

Maybe this example will help, which essentially illustrates the comment made by Alvery.

Consider a plant P(s) = 1/(s + 5) that is controlled via PI compensation with Ki = Kp = 1. The sample time of the discrete control is Ts = 0.01, with Ts defined as such in the base workspace. This system is modeled in the top half of this diagram, where the sample time parameter for the Zero Order Hold and Discrete Time Integrator blocks is set to Ts.

Now we wish to implement the PI control in a Matlab Function block as in the boltom half of the diagram. We have the following equation for the control input:

u[k] = x[k] + Kp*e[k] % Kp = 1

The difference equation for x[k] is determined from the z-transform of the integrator:

X(z)/E(z) = Ki*Ts/(z-1) % Ki = 1

(z-1)*X(z) = Ki*Ts*E(z)

x[k+1] - x[k] = Ki*Ts*e[k]

x[k+1] = Ki*Ts*e[k] + x[k]

so the PI function needs to impement the equations for u[k] and x[k]. Here's the function

function u = PI(e)

persistent x

% initialize the integrator output

if isempty(x)

x = 0;

end

Kp = 1;

Ki = 1;

Ts = 0.01; % needs to be same value as Ts defined in the workspace

% control at the current time step

u = Kp*e + x;

% update the integrator for the next time step

x = Ki*Ts*e + x;

end

And here is the scope from the model showing that the implementation works as expected:

##### 3 Comments

Tomàs
on 30 May 2024

What if you put a ZOH inbetween the Controller and the plant and replace the original ZOH by a "Rate Transition" black ?

From my understanding it looks more "academic" in this way. What do you think , Paul?

Paul
on 30 May 2024

Edited: Paul
on 30 May 2024

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!