Three-point-step controller

This block implements a PID-type controller with binary control output (three-point control) of a positioning drive without position feedback. It computes the switching points accounting for the program cycle time quantization.

When input X is open-ended or Tv is set to 0.0, the block works as a discontinuous PI controller. The X signal input is used in the derivation of the internal D-term; this avoids overdrive conditions at the control outputs caused by surges in the error signal at Xw via the D-term.

Sign reversal may be effected by choosing a negative gain at Kr.

The bit 3 of the Status byte HA is used to switch the controller into manual operation. If a manual fine-positioning forward-reverse capability is required, the corresponding forward and reverse signals should be fed into bit 1 and bit 0 of the same byte.

Signals

Name I/O Type(s) Function
X I FLOAT process variable value
Xw I FLOAT Error signal
HA I BYTE Manual/Auto control byte
Kr I FLOAT Proportional gain
Tn I FLOAT Integral time in [s]
Tv I FLOAT Derivative time in [s]
TS I FLOAT Full travel time in [s]
Tmin I FLOAT Minimal impulse length in [s]
TVR I FLOAT Commutation pause in [s]
FNa I FLOAT Stop error in [%]
dY O FLOAT Current internal position error
Qauf O BIT Forward direction drive signal
Qzu O BIT Reverse direction drive signal

Parametrization

TS, Full travel time:

Time in [s] needed by the drive to travel from one extreme position to the other.

Tmin, Minimal impulse length:

The minimal duration of an impulse at Qauf or Qzu required to effect any drive movement, expressed in [s].

TVR, Commutation pause:

The pause time in [s] to allow a direction reversal between e.g. turning Qauf off and turning Qzu on.

FNa, Stop allowance:

To compute the internal turn-off points, this percentage is taken into account. Its use prevents low-frequency oscillations of the feedback control loop.

Comments

When using this function block, the quantization of the control signal will always result in a steady-state error. This should be "ironed out" with the aid of a dead band function block.