Zero-order hold equivalence
Conversion using c2dm
Stability and transient response
The continuous controller, enclosed in the dashed square, can be replaced by a digital controller, shown below, that performs same control task as the continuous controller. The basic difference between these controllers is that the digital system operates on discrete signals (or samples of the sensed signal) rather than on continuous signals.
Different types of signals in the above digital schematic can be represented by the following plots.
The purpose of this Digital Control Tutorial is to show you how to use MATLAB to work with discrete functions either in transfer function or state-space form to design digital control systems.
For this technique, we will consider the following portion of the digital control system and rearrange as follows.
The clock connected to the D/A and A/D converters supplies a pulse every T seconds and each D/A and A/D sends a signal only when the pulse arrives. The purpose of having this pulse is to require that Hzoh(z) have only samples u(k) to work on and produce only samples of output y(k); thus, Hzoh(z) can be realized as a discrete function.
The philosophy of the design is the following. We want to find a discrete function Hzoh(z) so that for a piecewise constant input to the continuous system H(s), the sampled output of the continuous system equals the discrete output. Suppose the signal u(k) represents a sample of the input signal. There are techniques for taking this sample u(k) and holding it to produce a continuous signal uhat(t). The sketch below shows that the uhat(t) is held constant at u(k) over the interval kT to (k+1)T. This operation of holding uhat(t) constant over the sampling time is called zero-order hold.
The zero-order held signal uhat(t) goes through H2(s) and A/D to produce the output y(k) that will be the piecewise same signal as if the discrete signal u(k) goes through Hzoh(z) to produce the discrete output y(k).
Now we will redraw the schematic, placing Hzoh(z) in place of the continuous portion.
By placing Hzoh(z), we can design digital control systems dealing with only discrete functions.
There is a MATLAB function called c2d that converts a given continuous system (either in transfer function or state-space form) to a discrete system using the zero-order hold operation explained above. The basic command for this c2d is one of the following.
sys_d = c2d(sys,Ts,'zoh')
The sampling time (Ts in sec/sample) should be smaller than 1/(30*BW), where BW is the closed-loop bandwidth frequency.
Suppose you have the following continuous transfer function
Assuming the closed-loop bandwidth frequency is greater than 1 rad/sec, we will choose the sampling time (Ts) equal to 1/100 sec. Now, create an new m-file and enter the following commands.
M = 1; b = 10; k = 20; num = 1; den = [M b k]; sys = tf(num,den); Ts = 1/100; sys_d = c2d(sys,Ts,'zoh')
Running this m-file in the command window should give you the following result.
4.837e-05 z + 4.678e-05
z^2 - 1.903 z + 0.9048
Sampling time: 0.01
Now you have the transfer function in discrete form.
Suppose you have the following continuous state-space model
All constants are same as before
The following m-file converts the above continuous state-space to discrete state-space.
M = 1; b = 10; k = 20; A = [0 1; -k/M -b/M]; B = [ 0; 1/M]; C = [1 0]; D = ; Ts = 1/100; sys = ss(A,B,C,D); sys_d = c2d(sys,Ts,'zoh')
Create an new m-file and copy the above commands. Running this m-file in the MATLAB command window should give you the
x1 0.99903 0.0095131
x2 -0.19026 0.9039
y1 1 0
Sampling time: 0.01
From these matrices, the discrete state-space can be written as
Now you have the discrete time state-space model.
The figure below shows the mapping of lines of constant damping ratio (zeta) and natural frequency (Wn) from the s-plane to the z-plane using the expression shown above.
If you noticed in the z-plane, the stability boundary is no longer imaginary axis, but is the unit circle |z|=1. The system is stable when all poles are located inside the unit circle and unstable when any pole is located outside.
For analyzing the transient response from pole locations in the z-plane, the following three equations used in continuous system designs are still applicable.
Suppose we have the following discrete transfer function
Create an new m-file and enter the following commands. Running this m-file in the command window gives you the following plot with the lines of constant damping ratio and natural frequency.
numDz = 1; denDz = [1 -0.3 0.5]; sys = tf(numDz,denDz,-1); % the -1 indicates that the sample time is undetermined pzmap(sys) axis([-1 1 -1 1]) zgrid
From this plot, we see poles are located approximately at the natural frequency of 9pi/20T (rad/sample) and the damping ratio of 0.25. Assuming that we have a sampling time of 1/20 sec (which leads to Wn = 28.2 rad/sec) and using three equations shown above, we can determine that this system should have the rise time of 0.06 sec, a settling time of 0.65 sec and a maximum overshoot of 45% (0.45 more than the steady-state value). Let's obtain the step response and see if these are correct. Add the following commands to the above m-file and rerun it in the command window. You should get the following step response.
sys = tf(numDz,denDz,1/20); step(sys,2.5);
As you can see from the plot, the rise time, settling time and overshoot came out to be what we expected. This shows how you can use the locations of poles and the above three equations to analyze the transient response of the system.
For more analysis on the pole locations and transient response, see Transient Response.
The root-locus is the locus of points where roots of characteristic equation can be found as a single gain is varied from zero to infinity. The characteristic equation of an unity feedback system is
where G(z) is the compensator implemented in the digital controller and Hzoh(z) is the plant transfer function in z.
The mechanics of drawing the root-loci are exactly the same in the z-plane as in the s-plane. Recall from the continuous Root-Locus Tutorial, we used the MATLAB function called sgrid to find the root-locus region that gives an acceptable gain (K). For the discrete root-locus analysis, we will use the function zgrid that has the same characteristics as sgrid. The command zgrid(zeta, Wn) draws lines of constant damping ratio (zeta) and natural frequency (Wn).
Suppose we have the following discrete transfer function
and the requirements are a damping ratio greater than 0.6 and a natural frequency greater than 0.4 rad/sample (these can be found from design requirements, sampling time (sec/sample) and three equations shown in the previous section). The following commands draw the root-locus with the lines of constant damping ratio and natural frequency. Create an new m-file and enter the following commands. Running this m-file should give you the following root-locus plot.
numDz = [1 -0.3]; denDz = [1 -1.6 0.7]; sys = tf(numDz,denDz,-1); rlocus(sys) axis([-1 1 -1 1]) zeta = 0.4; Wn = 0.3; zgrid(zeta,Wn)
From this plot, you should realize that the system is stable because all poles are located inside the unit circle. Also, you see two dotted lines of constant damping ratio and natural frequency. The natural frequency is greater than 0.3 outside the constant-Wn line, and the damping ratio is greater than 0.4 inside the constant-zeta line. In this example, we do have the root-locus drawn in the desired region. Therefore, a gain (K) chosen from one of the loci in the desired region should give you the response that satisfies design requirements.