The equations of motion for this system are fairly simple. The force on the stage is proportional to the drive command and nothing else, so the acceleration of the system is exactly proportional to the drive. The step response of this system by itself is a parabola, as shown in figure 6.
As we will see later this makes the control problem more challenging because of the sluggishness with which the stage starts moving, and its enthusiasm to keep moving once it gets going. The third example plant I'll use is a heater. A diagram of an example system is shown in figure 7. The vessel is heated by an electric heater, and the temperature of its contents is sensed by a temperature sensing device.
Applied Control Theory (): J.R. Leigh - BiblioVault
This example system is highly oversimplified. Thermal systems tend to have very complex responses, which can be difficult to characterize well. I'm going to ignore quite a bit of detail and give a very approximate model.
The equations I'm using are here. This model will be accurate enough for our purposes, and does not require advanced training in control systems to understand. The response tends to settle out to a constant temperature for a given drive but it can take a great deal of time doing it. In addition, this example, unlike the motor example and the speaker-coil example, takes a disturbance input into account. Here, the disturbance is the ambient temperature, which the system will respond to the same as it responds to changes in the drive level. Now that we have some example plants to play with, we can try controlling these plants with various variations of proportional, integral, and derivative control.
In this section, I will show you how to write various different controllers, and how these controllers will affect the behavior of the system in closed loop. The elements of a PID controller such as the one below can take their input either from the measured plant output or from the error signal which is the difference between the plant output and the system command.
In the controller that I develop below I will use both of these sources. All the example controller code uses floating point arithmetic to keep implementation details out of the discussion. For an actual system, however, it is quite possible that you would want to use some sort of fixed-point arithmetic to limit your required processor speed [ Wes06 ]. If you do end up using floating point for this task, you will almost certainly need to use double-precision floating pointtake this into consideration when you calculate the amount of processor loading your algorithm will introduce.
- The Radical Use of Chance in 20th Century Art!
- The Official Patients Sourcebook on Toxocariasis: A Revised and Updated Directory for the Internet Age!
- Food & Function, Vol 02, No 02, February 2011!
- Good Kings Bad Kings.
- DATA DRIVEN SCIENCE & ENGINEERING.
I'm going to assume a controller function call as shown below. The function UpdatePID takes the error and the actual plant output as inputs, it modifies the PID states in pid , and it returns a drive value to be applied to the plant. As the discussion evolves, you'll see how the data structure and internals of the function shape up. The reason I pass the error to the PID update routine instead passing the command is that sometimes you want to play tricks with the error. Leaving the error calculation out in the main code makes the application of the PID more universal.
This function will get used like this:. Proportional control is the easiest feedback control to implement, and simple proportional control is probably the most common kind of control loop. A proportional controller is just the error signal multiplied by a constant and fed out to the drive. The proportional term gets calculated with the following code within the function UpdatePID :. Figure 9 shows what happens when you add proportional feedback to the motor and gear system. In the end the system doesn't settle out any quicker than it would have with lower gain, but there is more overshoot.
If we were to keep increasing the gain we would eventually reach a point where the system just oscillated around the target and never settled out: the system would be unstable. The reason the motor and gear start to overshoot with high gains it because of the delay in the motor response. If you look back at Figure 4, you can see that the motor position doesn't start ramping up immediately. This delay, plus high feedback gain, is what causes the overshoot seen in Figure 9. Figure 10 shows the response of the precision actuator with proportional feedback only.
Here the situation is worse: proportional control alone obviously doesn't help this system. There is so much delay in the plant that no matter how low the gain is the system will oscillate. As the gain is increased the frequency of the output will increase, but the system just won't settle.
Proportional-only control is inadequate for this plant. Figure 11 shows what happens when you use pure proportional feedback with the temperature controller. Even without the disturbance you can see that proportional control doesn't get the temperature to the desired setting; with the disturbance you can see that the loop is susceptible to external effects. As the examples above show, a proportional controller alone can be useful for some plants, but for others it may not help, or it may not help enough. Plants that have too much delay, like the precision actuator, can't be stabilized with proportional control.
Some plants, like the temperature controller, cannot be brought to the desired set point. Plants like the motor and gear combination may work, but they may need to be driven faster than is possible with proportional control alone, and they may be subject to external disturbances that proportional control alone cannot compensate for. To solve these control problems you need to add integral or differential control or both. Integral control is used to add long-term precision to a control loop.
Join Our Mailing List
It is almost always used in conjunction with proportional control. The code to implement an integrator is shown below. The integrator state integratState is the sum of all the preceding inputs. The parameters integratMin and integratMax are the minimum and maximum allowable integrator state values. Integral control by itself usually decreases stability, or destroys it altogether.
This system simply doesn't settle, no matter how low you set the integral gain. Like the precision actuator with proportional control, the motor and gear system with integral control along will oscillate with bigger and bigger swings until something hits a limit hopefully the limit isn't breakable.
- Customers who viewed this item also viewed;
- Developments in Antibiotic Treatment of Respiratory Infections: Proceedings of the Round Table Conference on Developments in Antibiotic Treatment of Respiratory Infections in the Hospital and General Practice, held in the Kurhaus, Scheveningen, The Nether?
- PID Without a PhD;
- An Atlas of Parkinsons Disease and Related Disorders (Encyclopedia of Visual Medicine Series);
- Unrated Organization.
- Electron–Molecule Interactions and their Applications. Volume 2.
- Latent Variable Models and Factor Analysis: A Unified Approach.
- Medical and Surgical Treatment of Parathyroid Diseases: An Evidence-Based Approach.
- Navigation menu;
I'm not even showing the effect of using integrator control on the precision actuator system. Because the precision actuator system can't even be stabilized with a proportional controller. There is simply no integral gain that could be chosen that would make the system stable. We'll pick up on the precision actuator system later on, when we talk about derivative control.
Figure 13 shows the temperature control system with pure integral control.
Chances are this is too slow for you, but if your problem at hand didn't require fast settling, even this simple of a controller might be workable. Figure 13 shows why we use an integral term. The integrator state "remembers" all that has gone on before, which is what allows the controller to cancel out any long term errors in the output. What the two systems above need to stabilize them is a little bit of their present value, which you get from a proportional term.
We've seen that proportional control by itself has limited utility, and that while integral control by itself can vastly improve the steady-state behavior of a system, it often destroys stability. It would be nice, then, if there was a way to combine the steady-state improvements of integral control with the improvements of proportional control. Fortunately, there is. It is called proportional-integral control. Figure 14 shows the motor and gear with the proportional and integral PI control. The position takes longer to settle out than the system with pure proportional control, but unlike the motor with pure integral control it does settle out, and the system will not settle to the wrong spot.
For many systems this is exactly the right behavior: often it is far more important for a system to settle out to exactly the correct position than for it to settle quickly to the wrong position. Questions of which is better depend on the problem at hand, and selecting the correct design criteria is important for success. Figure 15 shows what happens when you use PI control on the heater system. The heater still settles out to the exact target temperature as with pure integral control Figure 13 , but with PI control it settles out 2 to 3 times faster.
This figure shows operation pretty close to the limit of the speed that you can attain with PI control of this plant. Before we leave the discussion of integrators, there are two more things I need to point out. First, since you are adding up the error over time, the sampling time that you are running becomes important.
Second, you need to pay attention to the range of your integrator to avoid windup.
The rate that the integrator state changes is equal to the average error times the integrator gain times the sampling rate. Because the integrator tends to smooth things out over the long term you can get away with a somewhat uneven sampling rate, but it needs to average out to a constant value. You can even get away with missing a few samples as long as your average sample rate stays within bounds. If you have a controller that needs to push the plant hard your controller output will spend significant amounts of time outside the bounds of what your drive can actually accept.
This condition is called saturation. If you use a PI controller, then all the time spent in saturation can cause the integrator state to grow wind up to very large values. When the plant reaches the target, the integrator value is still very large, so the plant drives beyond the target while the integrator unwinds and the process reverses. This situation can get so bad that the system never settles out, but just slowly oscillates around the target position. Figure 16 illustrates the effect of integrator windup.
Not only is controller output much greater than the drive available to the motor, but the motor shows severe overshoot. The motor actually reaches its target at around 5 seconds, but it doesn't reverse direction until 8 seconds, and doesn't settle out until 15 seconds have gone by. There are many good ways to deal with integrator windup windup, and anti-windup methods, are treated in more depth in [ Wes06 ]. Perhaps the easiest and most direct way to deal with integrator windup is to limit the magnitude of the integrator state to as I showed in my code example above.
Figure 17 shows what happens when you take the system in Figure 16 and limit the integrator term to the available drive output.
Related Applied control theory
Copyright 2019 - All Right Reserved