Fork of PID by
PID_impl.hpp@5:82bc9c845760, 2016-03-03 (annotated)
- Committer:
- inst
- Date:
- Thu Mar 03 02:50:11 2016 +0000
- Revision:
- 5:82bc9c845760
- Parent:
- 4:ed6aea0299df
- Child:
- 6:4427687e6dbe
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
inst | 2:73618cad4762 | 1 | #ifndef INCLUDED_PID_IMPL_H |
inst | 2:73618cad4762 | 2 | #define INCLUDED_PID_IMPL_H |
inst | 2:73618cad4762 | 3 | |
inst | 2:73618cad4762 | 4 | #include "PID.hpp" |
inst | 2:73618cad4762 | 5 | |
inst | 4:ed6aea0299df | 6 | namespace mbed_stl { |
inst | 4:ed6aea0299df | 7 | |
inst | 2:73618cad4762 | 8 | template <typename T, typename K> |
inst | 2:73618cad4762 | 9 | PID<T, K>::PID(K kp, K ki, K kd) : |
inst | 2:73618cad4762 | 10 | kp_(kp), |
inst | 2:73618cad4762 | 11 | ki_(ki), |
inst | 2:73618cad4762 | 12 | kd_(kd), |
inst | 2:73618cad4762 | 13 | integral_(), |
inst | 2:73618cad4762 | 14 | prev_error_() {} |
inst | 2:73618cad4762 | 15 | |
inst | 2:73618cad4762 | 16 | template <typename T, typename K> |
inst | 2:73618cad4762 | 17 | inline T PID<T, K>::update(T error) { |
inst | 2:73618cad4762 | 18 | // P制御(比例) |
inst | 3:b28b34b89120 | 19 | T mv = kp_ * error; |
inst | 2:73618cad4762 | 20 | |
inst | 2:73618cad4762 | 21 | // I制御(積分) |
inst | 5:82bc9c845760 | 22 | mv += ki_ * integral_; |
inst | 2:73618cad4762 | 23 | integral_ += error; |
inst | 2:73618cad4762 | 24 | |
inst | 2:73618cad4762 | 25 | // D制御(微分) |
inst | 2:73618cad4762 | 26 | mv += kd_ * (error - prev_error_); |
inst | 2:73618cad4762 | 27 | prev_error_ = error; |
inst | 2:73618cad4762 | 28 | |
inst | 2:73618cad4762 | 29 | return mv; |
inst | 2:73618cad4762 | 30 | } |
inst | 2:73618cad4762 | 31 | |
inst | 4:ed6aea0299df | 32 | } /* namespace mbed_stl */ |
inst | 4:ed6aea0299df | 33 | |
inst | 2:73618cad4762 | 34 | #endif |