https://github.com/baggepinnen/activedisturbancerejectioncontrol.jl

Proof that linear ADRC is equivalent to PI(D) control with set-point weighting

https://github.com/baggepinnen/activedisturbancerejectioncontrol.jl

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.3%) to scientific vocabulary

Keywords

adrc-controller control-systems control-theory pid-control
Last synced: 5 months ago · JSON representation

Repository

Proof that linear ADRC is equivalent to PI(D) control with set-point weighting

Basic Info
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
adrc-controller control-systems control-theory pid-control
Created about 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme

readme.md

Active Disturbance Rejection Control (ADRC)

arxiv paper: Linear ADRC is equivalent to PID with set-point weighting and measurement filter.

ADRC is a recent trend (fad?) in the control-systems community. A recent paper, referenced below, demonstrated that linear ADRC is a rebranding of a well established concept, state feedback with state provided by a disturbance observer with the disturbance model is $1/s$. This kind approach is a common way of providing integral action in a state-feedback controller.

This repo demonstrates that linear first-order ADRC is in fact equivalent also to a filtered 2DOF PID controller, and very close to equivalent to a PI controller with set-point weighting and first-order low-pass filtering of the measurement.

The proof makes use of the formulation of ADRC provided in

"A Simulative Study on Active Disturbance Rejection Control (ADRC) as a Control Tool for Practitioners", Gernot Herbst

that is, with the "bandwidth parametrization" of the disturbance observer. The paper suggests tuning the PI controller to meet a certain reference step response, which is oftentimes a practice recommended against:

It may be strongly misleading to only show properties of a few systems for example the response of the output to command signals. A common omission in many papers and books. "Feedback Fundamentals", Karl Johan Åström

“The user should not test the loop using set-point changes if the set point is to remain constant most of the time. To tune for fast recovery from load changes, a load disturbance should be simulated by stepping the controller output in manual, and then transferring to auto. For lag-dominant processes, the two responses are markedly different.”, - Shinskey 1993

This is also why the paper makes it look like the PID controller is much worse than the ADRC controller. If the PI(D) controller is instead tuned to perform well for disturbance rejection, one can later tune the reference response by adjusting the set-point weight (or performing more elaborate reference prefiltering). This little analysis demonstrates that the linear first-order ADRC controller is in fact completely equivalent to a 2DOF PID controller, and with only very minor approximation error, equivalent also to a PI controller with set-point weighting and first-order low-pass filtering of the measurement.

For second-order linear ADRC, the conclusions are similar. The controller transfer function from the measurement to the control signal is a second-order-filtered PID controller, and the response from reference to control signal is approximately a PI controller (that is, set-point weighting in the proportional term, and zero set-point weighting in the derivative). The expressions for the parameters are much more complex, but the conclusion that a 2DOF PID controller can do the job equally well remains.

Julia package

This repo contains a simple Julia package that can be installed by running julia using Pkg Pkg.add(url="https://github.com/baggepinnen/ActiveDisturbanceRejectionControl.jl")

The package exports the two functions adrc and equivalent_pid that can be used to design an ADRC controller and a 2DOF PID controller with the same properties.

Scripts

The two scripts - adrc.jl - adrc_second_order.jl

performs the numerical experiments presented in the paper, as well as the symbolic computations used to derive the PID+filter parameters.

Owner

  • Name: Fredrik Bagge Carlson
  • Login: baggepinnen
  • Kind: user
  • Location: Lund, Sweden

Control systems, system identification, signal processing and machine learning

GitHub Events

Total
  • Watch event: 5
  • Delete event: 1
  • Public event: 1
  • Push event: 20
  • Pull request event: 1
  • Fork event: 1
  • Create event: 1
Last Year
  • Watch event: 5
  • Delete event: 1
  • Public event: 1
  • Push event: 20
  • Pull request event: 1
  • Fork event: 1
  • Create event: 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 minute
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 minute
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • baggepinnen (2)
Top Labels
Issue Labels
Pull Request Labels