Dynamics and simulation of engineering systems Simulink Exercise 3 - State-space equations and the role of initial conditions Dr. M. Turner (mct6@sun.engg.le.ac.uk) 1 State-space equations We have seen that high-order differential equations can be written in terms of a set of coupled first order differential equations, and that these can be solved easily within the Simulink evironment. In particular, when these equations are linear, they can be written in matrix-vector form which can be represented by one state-space block in Simulink. To be more specific, if we consider the (linear) state-space realisation, (1) (2) it transpires that the state equation (1) has a solution of a very similar form to a simple scalar first-order differential equation: !#"$ &% "('*),+ -/.01. (3) 2 Note that the right hand side of this equation consists of two distinct parts: the first term which represents the free response of the system and is a function of the initial state of the system, x ; the second term is the forced response of the system and is dependent on all inputs to the system applied over the interval from to to . A similar, although less uniform, partition can be made for systems described in nonlinear state-space form. Thus far we have made the assumption that the initial conditions of the system have been zero, that is the state evolves over time purely as a function of its inputs. To some extent there is some justification to this assumption: often when measurements are taken, we refer them to a situation corresponding to the system at rest (i.e. zero initial conditions); also, it is often easy to redefine the co-ordinates of a system so that, in the new set of co-ordinates, the initial conditions are zero. However, in other cases, particularly cases where we are required to have an absolute value for the states/outputs of the system, this justification disappears. For example consider starting a particle moving from a nonzero initial position, say . Then the subsequent motion of the particle will depend from where it was started i.e. . The same is true in many situations: assuming zero initial conditions only gives part of the solution to our state, and hence output, equations. 3 4265 3 2785 It is also important to point out that when nonlinear systems are considered, the value of the initial condition not only adjusts the “off-set” correctly, it plays an important role of determining the subsequent behaviour of the system - the initial condition determines the initial dynamic behaviour of the system. 2 Simulink As well as being able to caluculate the forced response of a system, Simulink is able to calculate the free response of a system, and more importantly can combine these responses to obtain the complete response of a system. There are two main ways the effect of initial conditions are accounted for in the Simulink environment. State-space block. Entering initial conditions requires one to have a vector of initial conditions (obviously of the same dimension as the state vector) and then to enter this vector in the block diagram by double-clicking on the block and inserting the vector in the appropriate place. This is relatively easy, but one must be careful about the order in which the initial conditions are entered in this vector - it must be coincide with the order of states. Integrator. This can be useful for initialising nonlinear equations, which cannot be built out of statespace blocks. In a similar manner to the state-space block, one can double-click on the integrator block and enter its initial condition in the appropriate place. The procedure for simulating systems with non-zero initial conditions is otherwise excactly the same as for the standard simulation procedure. It is frequently convenient, particularly when considering large systems, to enter the initial conditions using a Matlab script. 3 Introduction to stability The subject of stability is, by and large, beyond the scope of this course, although some basic ideas of stability can be help to understand the dynamics of systems. Roughly speaking a system is termed stable if it settles down to some equilibrium condition after a certain period of time, assuming zero or constant input is applied. Converesly, it is described as unstable if its time history “explodes” or diverges. Obviously there are cases which fall somewhere between these two extremes as well. In detail: A system is stable if all of the eigenvalues of “settling down”). have negative real parts (corresponds to a system A system is unstable if one or more of the eigenvalues of have positive real parts (there will be exponential divergence of one or more of the system’s states). A system is marginally stable if all the eigenvalues of have negative real parts excepts at least one which has zero real part (this situation can correspond to oscillators where all eigenvalues have purely imaginary parts). 4 Example Consider the Wien Bridge oscillator circuit shown below. Using the voltages across the capacitors as states and the voltage state-space matrices for this system can be obtained as: ' $ as the output, it can be shown that (4) (5) Note that the system is not driven by any input signal. Not surprisingly, the Wien Bridge oscillator is a circuit designed to produce oscillations, the frequency of which are determined by the value of the resistors and the capacitors . In order for this to happen ! !" must be set at - in stability terms this means we (prove this!) the ratio of the resistors have set the eigenvalues of # to be purely imaginary, resulting in an oscillation. In Matlab construct a Simulink diagram for the above system using State-space and To Workspace blocks. Attatch the input of the state-space block to a Constant Write a Matlab script to ini block. $&% and the state-space tialise the model with the following values: matrices which correspond to these values. Enter the state-space matrices into the state-space block ' . and also enter the initial condition 3 Simulate the system for ten seconds and see what happens. When you plot the output response you should find that there is no output from the system. This is because, we have used zero initial conditions and furthermore, as both the ( and ) matrices of the system have all elements being zero, the statevector and output variable remain zero for all time. ' and simulate the system. You should now find that the system Next enter the intial condition has become oscillatory. This is because the free-response of the system is now non-zero (although the forced response is still zero) and these initial conditions are enough to “start off” the oscillations. Note in practice, even if we had zero initial conditions, these oscillations would start naturally from the noise present in the system - the key point to take from this example is that the presence of non-zero initial conditions can have a dramatic effect on the behaviour of a system. 4.1 Changing the simulation parameters It can be shown that the frequency of the oscillation in the Wien Bridge circuit is inversely proportional to , that is for smaller value of , the frequency of oscillations increases. Try changing the frequency of oscillation by reducing the value of to one tenth of its previous value. Your simulation results should show you that the frequency of oscillations has indeed increased but that the output graph is difficult to view. To rectify this try reducing the length of the simulation time in the Simulation/Parameters/Solver tab. However, also notice that we are solving our differential equations using the standard “variable step” solver which can sometimes be unreliable, particularly for systems with fast time constants. Try changing the solver properties to Dormand-Price and make sure that the $ solver deals with continuous variables. For the time step, choose something relatively small like . There is a trade-off with the value of this time step: small time steps can ensure that the system is simulated as accurately as possible - minimising the interpolation errors. However, the smaller the time step, the longer it will take to simulate the system. To simulate a system for one second using a $ time-step of requires 10 “loops” of the solver algorithm; to simulate the same length of time using $ a time step of requires 1000 “loops” - an increase of a factor of 100. For small systems, such as our Wien Bridge oscillator, this is not noticeable, but for larger, more realistic systems, the choice of this time step can be important. As a general rule, the choice of the time step is determined by the system’s smallest time constant - the smaller the time constant the smaller the time step. 4.2 A further exercise We have mainly been considering linear systems so far and the dynamics of these systems are not dependent on the initial condition - the initial condition gives a reference point from which motion can be measured and contributes to the complete response of the system, but it does not determine the initial dynamics of the system. For nonlinear systems the initial dynamics of the system are set by the initial condition. In the last exercise we considered a pendulum and found that for small angular displacements the linear and nonlinear models were similar - but this assumed an initial angular displacement of zero. Compare the responses of the linear and nonlinear models now assuming an initial angular displacement of radians.