Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
shared/PID_Control/VPID/VPID.cpp@0:ee7e9405e1c7, 2021-04-14 (annotated)
- Committer:
- e2011220
- Date:
- Wed Apr 14 07:26:19 2021 +0000
- Revision:
- 0:ee7e9405e1c7
first
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| e2011220 | 0:ee7e9405e1c7 | 1 | #include "VPID.h" |
| e2011220 | 0:ee7e9405e1c7 | 2 | |
| e2011220 | 0:ee7e9405e1c7 | 3 | double VPID::_get_control() |
| e2011220 | 0:ee7e9405e1c7 | 4 | { |
| e2011220 | 0:ee7e9405e1c7 | 5 | return _ctrl; |
| e2011220 | 0:ee7e9405e1c7 | 6 | } |
| e2011220 | 0:ee7e9405e1c7 | 7 | void VPID::_calc_p() |
| e2011220 | 0:ee7e9405e1c7 | 8 | { |
| e2011220 | 0:ee7e9405e1c7 | 9 | _update(_diff, PID::_pid_state.target - PID::_pid_state.current); |
| e2011220 | 0:ee7e9405e1c7 | 10 | _p = _diff[1]; |
| e2011220 | 0:ee7e9405e1c7 | 11 | _update(_dctrl, PID::_pid_state.k * (_p + _i + _d)); |
| e2011220 | 0:ee7e9405e1c7 | 12 | _ctrl += (_dctrl[1] - _dctrl[0]) / _tim.read(); |
| e2011220 | 0:ee7e9405e1c7 | 13 | _tim.reset(); |
| e2011220 | 0:ee7e9405e1c7 | 14 | } |
| e2011220 | 0:ee7e9405e1c7 | 15 | void VPID::_calc_i() |
| e2011220 | 0:ee7e9405e1c7 | 16 | { |
| e2011220 | 0:ee7e9405e1c7 | 17 | _integral += (_diff[0] + _diff[1]) / 2; |
| e2011220 | 0:ee7e9405e1c7 | 18 | _i = _integral; |
| e2011220 | 0:ee7e9405e1c7 | 19 | } |
| e2011220 | 0:ee7e9405e1c7 | 20 | void VPID::_calc_d() |
| e2011220 | 0:ee7e9405e1c7 | 21 | { |
| e2011220 | 0:ee7e9405e1c7 | 22 | _d = _diff[1] - _diff[0]; |
| e2011220 | 0:ee7e9405e1c7 | 23 | } |
| e2011220 | 0:ee7e9405e1c7 | 24 | void VPID::_reset() |
| e2011220 | 0:ee7e9405e1c7 | 25 | { |
| e2011220 | 0:ee7e9405e1c7 | 26 | _p = _i = _d = 0; |
| e2011220 | 0:ee7e9405e1c7 | 27 | _diff[0] = _diff[1] = 0; |
| e2011220 | 0:ee7e9405e1c7 | 28 | _integral = 0; |
| e2011220 | 0:ee7e9405e1c7 | 29 | _ctrl = _dctrl[0] = _dctrl[1] = 0; |
| e2011220 | 0:ee7e9405e1c7 | 30 | } |