PID 제어기 코드 생성기
기본값: pid_err, pid_itg, pid_ref, pid_out 등
생성된 코드
#include <iostream>
class PIDController {
private:
double kp_;
double ki_;
double kd_;
double dt_;
double pid_itg_;
double pid_prev_err_;
public:
PIDController(double kp, double ki, double kd, double dt)
: kp_(kp), ki_(ki), kd_(kd), dt_(dt), pid_itg_(0.0), pid_prev_err_(0.0) {}
double compute(double pid_ref, double pid_in) {
double pid_err = pid_ref - pid_in;
// 비례 항
double pid_p = kp_ * pid_err;
// 적분 항
pid_itg_ += pid_err * dt_;
double pid_i = ki_ * pid_itg_;
// 미분 항
double pid_d = kd_ * (pid_err - pid_prev_err_) / dt_;
// 출력 계산
double pid_out = pid_p + pid_i + pid_d;
pid_prev_err_ = pid_err;
return pid_out;
}
void reset() {
pid_itg_ = 0.0;
pid_prev_err_ = 0.0;
}
};
int main() {
PIDController pid(1, 0, 0, 0.01);
double pid_in = 0.0;
// 예제 사용
// double pid_out = pid.compute(pid_ref, pid_in);
return 0;
}블록도
블록도 영역 (여기에 블록도를 그려주세요)