# What sort of regulator/controller is this?

Hello control community,
I have adopted some code (it is in LabView, but this shouldn't matter) that is regulating a voltage. I would like to know what kind of
controller this could be. It seems to be sort of PID controller, but I can't rewrite the equations for the algorithm to get a PID equation.
This is the algorithm:
Voltage Control (Chip heating):
K = (V_d - V_d_aim) / V_d_old
V = V_old+K*V_d-K*{1-[ T(A) / T(n) ]} * V_d_old
Interpretation:
The voltage of a chip heating (V) is controlled such that the diffusion voltage of a temperature diode (V_d) reaches the prescribed value (V_d_aim). (Actually the chip temperature should be controlled, but I can calculate V_d_aim from the chip temperature, so, that shouldn't matter).
I don't know, what K, T(A), and T(n) are supposed to mean, but T(A) and T(n) seem to be constants (i.e. they are hardcoded and probably found by trial and error). Obviously, K is *not* constant.
I know two forms of discretized PID algoritm:
form 1:
u[n] = K_c * e[n] + K_c * T_s / T_i * sum(i=0..n; e[i]) + K_c * T_d * ( e[n] - e[n-1] ) / T_s * u
and form 2:
u[n] = u[n-1] + K_c * (e[n] - e[n-1]) + K_c * T_s / T_i * e[n] + K_c * T_d / T_s * ( e[n]-2e[n-1]+e[n-2])
I can get from one form to the other so they are equivalent.
However, I can't get any PID form from my algorithm. e[n] is the error signal, this should be V_d - V_d_aim in my case. T_s, T_i, T_d, and K_c are the sampling rate and the PID constants, respectively.
When I try to come to form 2 with my algorithm, I just get:
V = V_old + e[n] * V_d / V_d_old - e[n] + T(A)/T(n) *e[n]
But probably this is an algorithm for another controller, no PID controller. I would like to use it (since it works in an old project) and to extend it to control the chip voltage according to a prescribed chip power.
Any ideas ?
Regards
Johannes
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
On Mon, 10 Nov 2003 09:04:45 +0100, Johannes Eble

This would be a PID if the calculation of K were
K = (V_d - V_d_aim) * B where B is some constant.
That is, K is some multiple of the loop error. But the calculation for K being as it is makes K a kind of non-linear error term. That is, it is the loop error where the gain is higher for lower values of V_d_old. For any steady-state condition we can think of V_d_old as kind of a constant. I don't know why someone would want the loop gain to be a function of the process variable value. But that's what this equation does. Perhaps there are factors in the way that the chip is heated that creates a non-linear relationship between applied voltage and chip temperature, and this non-linear scaling of the error term might be cancelling out that variation.
-Robert Scott Ypsilanti, Michigan (Reply through newsgroups, not by direct e-mail, as automatic reply address is fake.)
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
For a constant resistor, power is proportional to voltage squared. We definitely have a non-linear process here. If the quantity we want to control is heat transfer, we have a process gain proportional to voltage. To keep a constant loop gain we would need a controller gain inversely proportional to voltage. I.e. higher gain for lower values.
Walter.

<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Hello Robert and Walter,
Walter,
So, the algorithm makes sense to you. Is it a 'well-known' type of controller?
Also, I have to extend the system (well that's almost all software developing is about ;)) to control the chip heating voltage according to a prescribed chip power. It would be nice to use the same algorithm with other parameters. Then it would be:
Voltage Control (Chip heating):
K = (P - P_aim) / P_old
V = V_old+K*P-K*{1-[ T(A) / T(n) ]} * P_old
Any ideas about how to determine/tune T(A) and T(n) ?
Regards
Johannes
On Tue, 11 Nov 2003 03:59:19 GMT, "Walter Driedger"