Main Content

부스트 컨버터에 대한 전달 함수 모델 추정하기

이 예제에서는 주파수 응답 데이터에서 전달 함수를 추정하는 방법을 보여줍니다. Simulink® Control Design™을 사용하여 Simulink 모델에서 주파수 응답 데이터를 수집하고 tfest 명령을 사용하여 측정된 데이터에서 전달 함수를 추정합니다. 이전에 저장한 주파수 응답 데이터를 사용하여 예제를 실행하려면 전달 함수 추정하기 섹션부터 시작하십시오.

부스트 컨버터

Simulink 모델을 엽니다.

mdl = 'iddemo_boost_converter';
open_system(mdl);

모델은 전원 전압의 초핑 또는 스위칭을 제어하여 DC 전압을 또 다른 DC 전압(일반적으로 더 높은 전압)으로 변환하는 부스트 컨버터 회로입니다. 이 모델에서는 PWM 신호에 의해 구동되는 IGBT가 스위칭에 사용됩니다.

이 예제에서 관심 있는 부분은 PWM 듀티 사이클 설정점부터 부하 전압 Uout까지의 전달 함수입니다.

주파수 응답 데이터 수집하기

frestimate 명령을 사용하면 서로 다른 주파수의 정현파를 사용하여 듀티 사이클 설정점에서 섭동을 일으키고 결과로 생성된 부하 전압을 기록할 수 있습니다. 이로부터 우리에게 주파수 응답에서의 이산점을 제공해 주는 주입된 정현파의 크기와 위상을 시스템이 어떻게 수정하는지 파악할 수 있습니다.

frestimate를 사용하려면 두 가지 예비 단계가 필요합니다.

  • 주파수 응답 입력 점과 출력 점 지정

  • 입력 점에서 주입할 정현파 정의

주파수 응답 입력 점과 출력 점은 linio 명령을 사용하여 생성되며 이 예제의 경우 DutyCycleVoltage Measurement 블록의 출력입니다.

ios = [...
    linio([mdl,'/DutyCycle'],1,'input'); ...
    linio([mdl,'/PS-Simulink Converter'],1,'output')];

frest.Sinestream 명령을 사용하여 입력 점에서 주입할 정현파를 정의합니다. 주파수 범위 200~20k rad/s가 관심 대상이며, 0.03만큼 듀티 사이클에 섭동을 일으키려고 합니다.

f = logspace(log10(200),log10(20000),10);
in = frest.Sinestream('Frequency',f,'Amplitude',0.03);

이 사인스트림 신호로 모델을 시뮬레이션하는 데 필요한 시뮬레이션 시간은 getSimulationTime 명령을 사용하여 확인되며, 모델에서 사용되는 시뮬레이션 종료 시간을 알고 있으므로 모델을 단순하게 실행할 때와 비교해 이 사인스트림 시뮬레이션 실행에 시간이 얼마나 더 걸리는지 알 수 있습니다.

getSimulationTime(in)/0.02
ans =

   15.5933

정의된 입력과 사인스트림을 frestimate에 사용하여 주파수 응답에서의 이산점을 계산합니다.

[sysData,simlog] = frestimate(mdl,ios,in);
bopt               = bodeoptions;
bopt.Grid          = 'on';
bopt.PhaseMatching = 'on';
figure, bode(sysData,'*r',bopt)

보드 응답은 56db 이득, 약 2500rad/s의 미세한 공진, 그리고 이 회로에서 기대하는 것과 일치하는 약 20db/decade의 고주파 롤오프를 갖는 시스템을 표시합니다.

frest.simView 명령을 사용하면 주입된 신호, 측정된 출력값 및 주파수 응답을 하나의 그래픽 인터페이스에서 보여주는 frestimate 프로세스를 검사할 수 있습니다.

frest.simView(simlog,in,sysData);

위 그림은 주입된 정현파에 대한 모델 응답 및 모델 응답의 FFT를 보여줍니다. 주입된 정현파는 우세 주파수와 제한적 고조파를 갖는 신호를 발생시키며, 이는 선형 모델을 얻고 주파수 응답 데이터를 성공적으로 수집했음을 나타냅니다.

전달 함수 추정하기

이전 단계에서는 주파수 응답 데이터를 수집했습니다. 이 데이터는 시스템을 이산 주파수 점으로 설명하며, 이제 전달 함수를 데이터에 피팅할 수 있습니다.

Simulink Control Design을 사용하여 주파수 응답 데이터를 생성했으며, Simulink Control Design이 설치되지 않은 경우에는 다음 명령을 사용하여 저장된 주파수 응답 데이터를 불러오십시오.

load iddemo_boostconverter_data

주파수 응답 데이터를 검사해 보면, 이 시스템은 2차 시스템으로 설명될 것으로 기대됩니다.

sysA = tfest(sysData,2)
figure, bode(sysData,'r*',sysA,bopt)
sysA =
 
  From input "DutyCycle" to output "PS-Simulink Converter":
  -4.456e06 s + 6.175e09
  -----------------------
  s^2 + 6995 s + 9.834e06
 
Continuous-time identified transfer function.

Parameterization:
   Number of poles: 2   Number of zeros: 1
   Number of free coefficients: 4
   Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                    
Estimated using TFEST on frequency response data "sysData".
Fit to estimation data: 98.04%                             
FPE: 281.4, MSE: 120.6                                     

추정된 전달 함수는 제공된 주파수 범위에서 정확합니다.

bdclose(mdl)