Documentation

# piddata

Access coefficients of parallel-form PID controller

## Syntax

[Kp,Ki,Kd,Tf] = piddata(sys)
[Kp,Ki,Kd,Tf,Ts] = piddata(sys)
[Kp,Ki,Kd,Tf,Ts] = piddata(sys,J1,...,JN)

## Description

[Kp,Ki,Kd,Tf] = piddata(sys) returns the PID gains Kp,Ki, Kd and the filter time constant Tf of the parallel-form controller represented by the dynamic system sys.

[Kp,Ki,Kd,Tf,Ts] = piddata(sys) also returns the sample time Ts.

[Kp,Ki,Kd,Tf,Ts] = piddata(sys,J1,...,JN) extracts the data for a subset of entries in sys, where sys is an N-dimensional array of dynamic systems. The indices J specify the array entry to extract.

## Input Arguments

 sys SISO dynamic system or array of SISO dynamic systems. If sys is not a pid object, it must represent a valid PID controller that can be written in parallel PID form. J Integer indices of N entries in the array sys of dynamic systems. For example, suppose sys is a 4-by-5 (two-dimensional) array of pid controllers or dynamic system models that represent PID controllers. The following command extracts the data for entry (2,3) in the array. [Kp,Ki,Kd,Tf,Ts] = piddata(sys,2,3);

## Output Arguments

 Kp Proportional gain of the parallel-form PID controller represented by dynamic system sys. If sys is a pid controller object, the output Kp is equal to the Kp value of sys. If sys is not a pid object, Kp is the proportional gain of a parallel PID controller equivalent to sys. If sys is an array of dynamic systems, Kp is an array of the same dimensions as sys. Ki Integral gain of the parallel-form PID controller represented by dynamic system sys. If sys is a pid controller object, then the output Ki is equal to the Ki value of sys. If sys is not a pid object, then Ki is the integral gain of a parallel PID controller equivalent to sys. If sys is an array of dynamic systems, then Ki is an array of the same dimensions as sys. Kd Derivative gain of the parallel-form PID controller represented by dynamic system sys. If sys is a pid controller object, then the output Kd is equal to the Kd value of sys. If sys is not a pid object, then Kd is the derivative gain of a parallel PID controller equivalent to sys. If sys is an array of dynamic systems, then Kd is an array of the same dimensions as sys. Tf Filter time constant of the parallel-form PID controller represented by dynamic system sys. If sys is a pid controller object, the output Tf is equal to the Tf value of sys. If sys is not a pid object, Tf is the filter time constant of a parallel PID controller equivalent to sys. If sys is an array of dynamic systems, Tf is an array of the same dimensions as sys. Ts Sample time of the dynamic system sys. Ts is always a scalar value.

## Examples

Extract the proportional, integral, and derivative gains and the filter time constant from a parallel-form pid controller.

For the following pid object:

sys = pid(1,4,0.3,10);

you can extract the parameter values from sys by entering:

[Kp Ki Kd Tf] = piddata(sys);

Extract the parallel form proportional and integral gains from an equivalent standard-form PI controller.

For a standard-form PI controller, such as:

sys = pidstd(2,3);

you can extract the gains of an equivalent parallel-form PI controller by entering:

[Kp Ki] = piddata(sys)

These commands return the result:

Kp =

2

Ki =

0.6667

Extract parameters from a dynamic system that represents a PID controller.

The dynamic system

$H\left(z\right)=\frac{\left(z-0.5\right)\left(z-0.6\right)}{\left(z-1\right)\left(z+0.8\right)}$

represents a discrete-time PID controller with a derivative filter. Use piddata to extract the parallel-form PID parameters.

H = zpk([0.5 0.6],[1,-0.8],1,0.1);  % sample time Ts = 0.1s
[Kp Ki Kd Tf Ts] = piddata(H);

the piddata function uses the default ForwardEuler discrete integrator formula for IFormula and DFormula to compute the parameter values.

Extract the gains from an array of PI controllers.

sys = pid(rand(2,3),rand(2,3)); % 2-by-3 array of PI controllers
[Kp Ki Kd Tf] = piddata(sys);

The parameters Kp, Ki, Kd, and Tf are also 2-by-3 arrays.

Use the index input J to extract the parameters of a subset of sys.

[Kp Ki Kd Tf] = piddata(sys,5);

## Tips

If sys is not a pid controller object, piddata returns the PID gains Kp, Ki, Kd and the filter time constant Tf of a parallel-form controller equivalent to sys.

For discrete-time sys, piddata returns the parameters of an equivalent parallel-form controller. This controller has discrete integrator formulas IFormula and DFormula set to ForwardEuler. See the pid reference page for more information about discrete integrator formulas.