17
38
1,438
130,966
  현재접속자 : 1 (회원 0)
내 공부 > 프로그래밍
 
작성일 : 19-04-30 17:53
PID 제어 샘플 코드
 글쓴이 : Minuk Y.
조회 : 2,606  
double Kp, Ki, Kd ;    // 게인 값 : 수정 하면서 진행
double dt;    // 샘플링 타임
double cmd_val, cur_val;    // 목표값, 현재값
double P_err, prev_err;    // 오차. 이전 오차
double I_err, D_err;    // 오차적분. 오차미분
double Kp_term, Ki_term, Kd_term;    // p항, i항, d항
double control;    // 제어 결과 값

////////////////////////////////////////////////////////////////////////////////
// 게인 설정
Kp = 0.05;
Ki = 0.1;
Kd = 0.01;
// 샘플링 타임
dt = 0.01;

while(1)
{

  P_err = cmd_val - cur_val;  // 오차 = 목표치-현재값
  // P_err 최대 최소 정의 및 필터링 필요...
  Kp_term = Kp * P_err;        // p항 = Kp*오차

  I_err += P_err * dt;            // 오차적분 += 오차*dt
  // I_err 최대 최소 정의 및 필터링 필요...
  Ki_term = Ki * I_err;        // i항 = Ki*오차적분

  D_err = (err-prev_P_err)/dt  // 오차미분 = (현재오차-이전오차)/dt
  // D_err 최대 최소 정의 및 필터링 필요...
  Kd_term = Kd * D_err;    // d항 = Kd*오차미분

  prev_err = P_err;  // 현재오차를 이전오차로

  control = Kp_term + Ki_term + Kd_term;  // 제어량 = p항+i항+d항
  // control 최대 최소 정의 및 필터링 필요...
}

 
   
 

Copyright ⓒ Minuk Y. All rights reserved. . .