# [time-nuts] PI Math question

WarrenS warrensjmail-one at yahoo.com
Thu Apr 17 05:54:05 EDT 2014

```Ulrich

That is correct, none of these simple code blocks form a controller.
This is just a block of code that could be used for the PI gain function of
a controller.
In a complete controller the input to this gain block would typically come
from a pre-filter,
and the prefilter's input from the error difference between the setpoint and
the feedback, etc.
I wanted to keep the math as simple as possible by only including this
section of code.

My question was does the math in these four blocks of code all provide the
same exact input to output function.
What the code is being used for is not really relevant to the answer.

simple example:
Does the code X = 3Y  have the same input to output function as X = 4 + 2 +
(1+2) *Y - 6?
Just because they look different does not mean they are different.
The question was meant to be a simple math exercise like does 3y = (1+2)y?
The answer does not need any high level math or depend on the value of y or
what the code is being used for.

ws

*******************
----- Original Message -----
From: "Ulrich Bangert" <df6jb at ulrich-bangert.de>
To: "'Discussion of precise time and frequency measurement'"
<time-nuts at febo.com>
Sent: Thursday, April 17, 2014 1:14 AM
Subject: Re: [time-nuts] PI Math question

> Warren,
>
> the job of a controller, regardless of P, PI od PID, is to minimize the
> error between a process value and its setpoint. Since I see no setpoint
> value in any of your versions my 50 ct is that none of them really
> incorporates a controller at all and that for this reason the question
> whether they produce the same output is close to being irrelevant.
>
> Best regards
>
> Ulrich
>
>> -----Ursprungliche Nachricht-----
>> Von: time-nuts-bounces at febo.com
>> [mailto:time-nuts-bounces at febo.com] Im Auftrag von WarrenS
>> Gesendet: Mittwoch, 16. April 2014 18:50
>> An: Discussion of precise time and frequency measurement
>> Betreff: [time-nuts] PI Math question
>>
>> A question to the math time-nuts
>>
>> With the values of K1, K2 & K3 constant,
>> and the initial state of I#1, I#2 and Last_Input all zero
>> assuming there is no rounding, clipping or overflow in the
>> math and that if I've made any obvious dumb typo errors, that
>> they are corrected,
>>
>> Given this PID type of controller;
>> D = (Input - Last_Input))
>> Last_Input = Input
>> I#1 = I#1 + (K1 * Input)
>> I#2 = I#2 + (K2 * D)
>> Output = I#1 + I#2 + (K3 * Input)
>>
>> Is the above Input to Output's transfer function any
>> different than any of
>> the following more simplified versions of PI controllers?
>> Or asked another way, if each of the four codes are given the
>> exact same
>> input string and same K Gains, will the difference between
>> any of their  outputs ever be non zero?
>>
>>
>> a)
>> D = Input - Last_Input
>> Last_Input = Input
>> I#1 = I#1 +  (K1 * Input) + (K2 * D)
>> Output = (K3 * Input) + I#1
>>
>> b)
>> D = (Input - Last_Input)
>> Last_Input = Input
>> Output  = Output + (K1 * Input) + (K2 + K3) * D
>>
>> a)
>> I#1 = I#1 + (K1 * Input)
>> Output = I#1 + ((K2 + K3) * Input)
>>
>> ws
>>

```