Power Electronics Hub Logo

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;
}

블록도

블록도 영역 (여기에 블록도를 그려주세요)