# Is it necessary to use PID control in my use case?

I have a workflow of two functions. Both of them aggregate the items that are receiving and only the first is adjustable. I mean that I can decide how many items to aggregate on the first function F1 in order to not exceed the capacity (bandwidth) of the channel that connects to the second function F2. In other words, I control the throughput that the second function is receiving items. If I aggregate more at F1 I decrease the throughput. If I aggregate less at F1 I increase the throughput. My goal is to tune the system for its maximum throughput while the input workload varies and I have a limited channel between F1 and F2. This it the picture of my system:

The data stream of items (workload) that F1 receives varies along the time. I want to control the throughput output of F1` in order to not surpass the channel capacity.

I am planning to use PID control to decide how many items to aggregate on the first function before to emit the items to the second function. I am a newbie in control systems. As far as I understood I have to start with the Proportional controller (P) which is basically the current error. Then I have to decide if I will use the Integral controller (I) which is the historic cumulative value of the errors. And then I have to decide if I will use the Derivative controller (D) which is based on its current rate of change.

For me, it is not clear yet if I really need the Integral and Derivative controllers. I mean, if I find the error between the actual throughput and the desired throughput I just set the first aggregate function to aggregate items in order to have the desired throughput. In my mind this is enough, isn't it?

Something could influence is the time that I take to aggregate items on the first function. Suppose that I have a slow processor. But, in my use case what is the insight that I have to have in order to use the Integral or the Derivative controllers?

Thanks, Felipe

• Is this wholly digital? Are you trying to control data? Since this is what it looks like...how will you have an error in digital data transfer? Or do you expect there to be an error in the flow of data..like its speed or the volume of it..a controller will regulate around a given set point to keep error minimal... what is your set point and what are you trying to regulate exactly....bits per second? In general a PI controller is more than enough for most systems...but i dont understand what you’re actually trying to control, or rather why setting your speed it wouldnt work. – morbo Jan 2 '20 at 17:31
• I am trying to control the throughput on the output of F1 to not surpass the capacity of the channel. I added this explanation to my question. – Felipe Jan 3 '20 at 11:51
• What would be the actual error you feed into the controller and what would be its control action? A PI controller is usually used to deal with dynamic systems, that is, systems with some sort of inertia. Please explain in more detail what your system does. How I understand it, you could just "shave off" the data that exceeds the channel capacity and buffer it somewhere until there is capacity again. Why do you think you need a controller? – OpticalResonator Jan 3 '20 at 14:06
• @Felipe thank you, it is way clearer now :) – OpticalResonator Jan 3 '20 at 16:13
• Whether you can also use integral and derivative action is essentially a matter of control strategy. D-action is in reality used not so often because it can negatively influence the system stability. However, as anshul suri mentioned in his answer, you need the I-action to fully eliminate the error from the system. Search for steady state error to find out more about this. – OpticalResonator Jan 10 '20 at 15:05

Even if you can tune a function as per your needs, using proportional control(P) only you can never fully eliminate error from the system. Error is inherent in P control.

Using I control along with P, you can fully eliminate the error in the system, but now your system has a specific transient response. D control may be used if you want to control the transient response of the system, you want it faster or slower, how much overshoot you can manage to achieve a faster response, that depends on your system and need.

The amount of error in the system using only the P control depends on system parameters like the OpAmps you might be using. So if the error is tolerable, you need not add I and D. But if you need zero error at least I is needed, while D will let you vary the speed of the response

• First of all, thank you for your answer. But how will the Integral parameter suit in my use case? The proportional parameter says how many items I can pre-aggregate. Maybe the time of the pre-aggregation will be tuned with the Integral parameter? But how? Does the Integral parameter used only if there is inertia on the syatem? – Felipe Jan 4 '20 at 21:31