CSCI1600: Embedded and Real Time Software Lecture 12: Modeling V: Control Systems and Feedback Steven Reiss, Fall 2015 Control Systems Desired output value: target value Actual output value: measured value Actuator input: controls the plant’s behavior Error: desired - actual Control Variables The actuator input can be binary or continuous Amount of heat, turn, gas, … Turn left/right, turn on heat, accelerate The outputs (and error) can be a vector or a scalar Optimize for a single factor (speed, temperature, …) Optimize for multiple factors (temp + humidity, …) On-Off Control Suppose we do the simple thing for a heater If actual temp < target then turn on heater, else off What is going to happen to the temperature Overshoot Time to heat up (undershoot) Oscillation Smarter On-Off Control A little more sophisticated temp < target – delta1 : HEAT ON temp >= target – delta2 : HEAT OFF temp > target + delta3 : COOL ON temp <= target + delta4 : COOL OFF What’s going to happen here What is it is very cold (hot) outside Proportional Control Suppose we have control over the actuator Can give it a range of values (low/high, continuous, …) Acceleration in a car, heater with low/high flame (emergency mode), variable speed fan What would we want to do in that case Proportional Control Make the actuator input proportional to the error Large error -> large input (accelerate fast) Small error -> small input (accelerate slow) No error -> do nothing Assume doing nothing drives system the other way Or that there is a corresponding input on the other side Actuator = Kp * Error Problem: What should Kp be Should be > 0 Actual value depends on the system How could you determine the value? Modeling Mathematics Experimentation Is This Sufficient Will it eliminate overshoot, oscillation, slow rise time Depends on the actual system If the system is not perfectly linear or the actuator is not immediate, then probably not We can do better Proportional-Derivative Control A and B are two situations leading to point T What should the output be for each? Proportional-Derivative Control Want to take the rate of change into account Fast rate – slow down the response Slow rate – speed up the response Actuator = Kp * error - Kd * deriv deriv = the derivative of the error deriv = change in error over time deriv = change in error from last time to this Choosing Kp and Kd Now we have two parameters to determine How could you do this Generally Kd is > Kp Note the Kd is subtracted, but stated as positive Is This Sufficient Steady state error How could this occur Determining Steady State Error Look at the sum of the error In the past Not necessarily full past Or constrain in bounds This is the integral of the error How might you compute this Computing Integral of Error Approximate with sum integ = integ + error; if (integ > MAX) integ = MAX; else if (integ < MIN) integ = MIN Actuator = Kp*error – Kd*deriv + Ki*integ Ki now needs to be chosen Typically much smaller than Kp Issues in Controllers Actual input might have a limit range/set of values Set the actuator to the nearest value Off/on based on threshold Sampling rate affects the computation Might want to average the derivative Computations are typically non-integer Understanding PID http://demonstrations.wolfram.com/PIDControlOfATankL evel http://sites.google.com/site/fpgaandco/pid PID Tuning Set Ki=0, Kd=0, Kp=1 Increase Kp until the actual oscillates with a constant amplitude Let U = this Kp Let P = oscillation period (in seconds) Set Kp = U/1.7, Ki = (Kp*2), Kd = (Kp*P)/8 PID Tuning In general requires a bit of sophistication Control theory Control system design Control engineers For More Information Wikipedia : PID http://www.embedded.com/design/embedded/4211211/ PID-without-a-PhD Homework Design a SIMON game https://www.youtube.com/watch?v=4YhVyt4q5HI What are the tasks What types of models are appropriate Develop appropriate models (of at least one task) Be prepared to show and explain models for the tasks Be prepared to hand in the models