The function block has the following input pins setPt, sensor, disable and an output pin OUTPUT. This function is an Adaptive Integral Action controller (AIA). It can be used in place of the PID. This control works better than PID when delays in the process being controlled cause integral windup resulting in undershoot or overshoot that leads to instability.
Err = Sensor - Set Point.
If Direct/Reverse is set to reverse, then Err term is set to -Err.
Tr (throttling range) is Error value that results in an Output change of the maximum value (MaxAOchange) from one step to the next. MaxAOchange is the maximum amount(%) that the Output changes for a single cycle of the control (1 sec). This is typically set to 100%/(actuator speed(sec/full stroke)). Deadband is the absolute value that Error must be greater than, before the output changes.
EffErr = Err - dead band
If Err > 0 , ErrSign = 1 else ErrSign = -1
If |Err| < dead band, then AbsErr = 0.
Otherwise( |Err |> dead band), AbsErr = |Err| - deadband
Output = output + ErrSign*[( maxAOchng - minAO)*(AbsErr/(ThrottlingRange-Deadband))**3 + MinAO)].
From iteration to iteration, the Function Block keeps track of the old proportional error. On power up/reset this is cleared.
Logic Inputs
| Input Name | Input Value | Logic Value | Description |
| disable | unconnected | 0 | AIA function runs. |
| VAL != 0.0 | 1 | Disable AIA function. Output set to 0. |
|
| 0 | 0 | AIA function runs. | |
| invalid | 0 | AIA function runs. |
Analog Inputs
| Range | ||||
| Input Name | Low | High | Input Value | Description |
| sensor | >=- infinity | <+ infinity | unconnected | AIA function disabled. Output set to 0. |
| invalid | Same as unconnected. | |||
| setPt | >=- infinity | <+ infinity | unconnected | AIA function disabled. Output set to 0. |
| invalid | Same as unconnected. | |||
| tr | 0 | <+ infinity | unconnected | AIA function disabled. Output set to 0. |
| invalid | Same as unconnected. | |||
| VAL <= 0 | Same as unconnected. | |||
| maxAOChange | 0< | 100 | unconnected | MaxAOChange = 1.1 %/sec |
| invalid | MaxAOChange = 1.1 %/sec | |||
| 0 | MaxAOChange = 1.1 %/sec | |||
| VAL < low | MaxAOChange = 1.1 %/sec | |||
| VAL > high | MaxAOChange = 1.1 %/sec | |||
| deadband | 0 | < tr | unconnected | disable Dead Band action |
| invalid | disable Dead Band action | |||
| VAL < low OR VAL >+ tr | DB = 0 | |||
| 0 | disable Dead Band action | |||
| derivGain | 0 | <+ infinity | unconnected | val = 0 |
| invalid | val = 0 | |||
| VAL < low | val = low | |||
| minAOChange | 0< | <= maxAOchange | unconnected | MinAOchange = 0 |
| invalid | MinAOchange = 0 | |||
| VAL < 0 | MinAOchange = 0 | |||
| VAL>=MaxAOchange | MinAOchange = 0 | |||
Output
| Output Name | Range | Description |
| OUTPUT | 0 to +100 % | Output = output + ErrSign*NonLin(AbsErr,ThrottlingRange,MaxAOchange,MinAOchange) |
Setpoint
| Name | Range | Description |
| revAct |
|
User specified revAct value |