주요 콘텐츠

수동 제어와 PID 제어 간 무충돌 제어 전환

이 예제에서는 수동 제어에서 PID(비례-적분-미분) 제어로 전환할 때 무충돌 제어 전환(bumpless control transfer)을 달성하는 방법을 보여줍니다. 이 모델은 Simulink®의 PID Controller 블록을 사용하여 불감 시간을 갖는 1차 공정을 제어합니다.

open_system('sldemo_bumpless');

이 PID Controller 블록은 Simulink® Control Design™에서 제공되는 PID 조정기로 포화를 무시하는 설정을 사용하여 조정되었습니다.

제어되는 플랜트는 불감 시간을 갖는 1차 공정이며, 다음 방정식으로 정의됩니다.

P(s)=42.5s+1e-s.

이 예제는 개루프 제어로 시작하며, 이는 포화되는 램프 신호 Manual signal로 지정됩니다. 개루프 제어 신호 Manual signal이 플랜트 블록 First Order Process에 대한 입력이 됩니다. 플랜트 블록 출력은 목표로 하는 정상 상태 값인 40입니다.

이 예제에서는 t = 150에 제어 전환을 구현합니다.

개루프 제어와 폐루프 제어 간의 이 천이에는 두 개의 제어 단계가 포함됩니다.

  • 수동 — 시작부터 t = 150(Control mode = 0)까지는 포화되는 램프 신호가 플랜트 블록에 입력됨.

  • 자동 — t = 150(Control mode = 1) 이후부터는 PID 제어가 수행되며, 플랜트 입력에 범프를 발생시키지 않고 공정을 이어받아야 합니다.

수동 제어에서 자동 제어로 전환할 때 이 천이로 인해 범프가 발생하지 않아야 합니다.

PID 제어기 구성하기

PID Controller 블록은 매끄러운 제어 천이를 지원하기 위해 두 가지 동작 모드인 추종(tracking) 모드와 제어(control) 모드를 지원합니다.

제어 모드에서는 PID Controller 블록이 일반 PID 제어기로 동작합니다. 추종 모드에서는 이 블록에 추가 입력이 제공되어, PID 블록이 적분기 출력을 변경함으로써 내부 상태를 조정할 수 있습니다. 이 변경을 통해 블록 출력이 다른 신호 입력을 추종할 수 있습니다.

무충돌 제어 전환을 달성하려면 PID Controller 블록의 모드는 다음과 같아야 합니다.

  • 플랜트가 수동 제어(개루프)일 때는 추종 모드

  • 플랜트가 자동 제어(폐루프 PID 제어)일 때는 제어 모드

신호 추종을 활성화하려면 블록 파라미터 대화 상자의 초기화 탭에서 추종 모드 활성화를 선택하고 추종 계수(Kt)를 지정합니다. 이 값이 이득입니다. 이 이득의 역이 추종 루프의 시정수입니다. 이 이득을 선택하는 방법에 대한 자세한 내용은 [1]을 참조하십시오.

추종 모드가 활성화되면 이 블록은 두 번째 입력 포트인 TR을 갖습니다.

Untitled.png

PID Controller 블록의 마스크 내부를 탐색하고 TR 포트의 작동 방법을 살펴보려면 다음 명령을 사용하십시오.

open_system('sldemo_bumpless/PID Controller','force');

전환 메커니즘 설정하기

이 모델은 PID Controller 블록의 추종 모드를 활성화하는 것 외에도 Switch 블록을 사용하여 제어 전환을 구현합니다. Switch 블록은 어느 신호를 플랜트와 PID Controller 블록 추종 포트 TR에 대한 입력으로 사용할지 결정합니다.

시간 t = 0에 Switch 블록이 수동 제어 신호를 플랜트 입력과 PID Controller 블록 추종 포트로 보냅니다. 이를 통해 수동 단계 동안 PID Controller 블록이 PID 제어기 적분을 조정하여 수동 제어 신호를 추종할 수 있습니다. 따라서 제어 전환이 발생하는 시점에 PID Controller의 출력이 수동 제어 신호와 거의 동일합니다.

시간 t = 150에 Switch 블록이 전환하여 PID Controller 블록 출력을 플랜트와 PID Controller 블록 추종 포트로 보냅니다. 이제 PID Controller 블록이 자신의 출력을 추종합니다.

Untitled.png

모델을 닫기 위해 다음 명령을 사용합니다.

close_system('sldemo_bumpless/PID Controller');
close_system('sldemo_bumpless');

추종 모드를 켠 상태에서 시뮬레이션하기

무충돌 제어 전환을 시뮬레이션합니다. 이 경우는 추종 모드가 켜져 있습니다.

open_system('sldemo_bumpless');
sim('sldemo_bumpless');

Setpoint 신호와 시스템 응답의 플롯을 보면, t=150에 제어가 수동에서 자동으로 전환될 때 Output 신호가 출력 범프 없이 Setpoint 프로파일을 추종하는 것을 확인할 수 있습니다.

clf;
plot(logsoutBumpless{1}.Values);
grid on;
hold on; %draw on top of previous plot
plot(logsoutBumpless{3}.Values);

title('Comparison of Setpoint vs Measured Output: Tracking Mode on'); %add title to plot
xticks(0:50:600); % set x-axis ticks
ylim([0 50]); % set min and max of y-axis values
legend('Output y(t) ','Setpoint r(t)'); %specify legend
xline( 150, ':','HandleVisibility','off'); %draw a vertical line at 150s

hold off;

Figure contains an axes object. The axes object with title Comparison of Setpoint vs Measured Output: Tracking Mode on, xlabel Time (seconds), ylabel y(t) contains 2 objects of type line. These objects represent Output y(t), Setpoint r(t).

추종 모드를 끈 상태에서 시뮬레이션하기

모델 sldemo_bumplessno에서는 추종 모드가 비활성화되어 있습니다. PID Controller 블록에 추종 입력 포트가 없습니다.

close_system('sldemo_bumpless');
open_system('sldemo_bumplessno');
sim('sldemo_bumplessno');

Setpoint 신호와 시스템 응답의 플롯을 보면, t=150에 제어가 수동에서 자동으로 전환될 때 Output 신호에 큰 과도 응답이 발생합니다.

%Plot Results
clf;
plot(logsoutBumplessNo{1}.Values);
grid on; 
hold on; 
plot(logsoutBumplessNo{3}.Values);

title('Comparison of Setpoint vs Measured Output: Tracking Mode off');
xticks(0:50:600);
ylim([0 600]);
legend('Output y(t) ','Setpoint r(t)');
xline( 150, ':','HandleVisibility','off' );
hold off;

Figure contains an axes object. The axes object with title Comparison of Setpoint vs Measured Output: Tracking Mode off, xlabel Time (seconds), ylabel y(t) contains 2 objects of type line. These objects represent Output y(t), Setpoint r(t).

추종 모드를 켠 상태와 끈 상태에서 측정된 출력 비교하기

아래 플롯은 추종 모드를 켰을 때 수동에서 자동으로의 제어 천이가 더 매끄럽다는 것을 보여줍니다.

clf;
plot(logsoutBumplessNo{3}.Values(1),'r');
grid on; 
hold on;
plot(logsoutBumplessNo{1}.Values(1),'b');
plot(logsoutBumpless{1}.Values(1),'g');

title('Comparison of Measured Outputs ');
xticks(0:50:600);
ylim([0 600]);
legend('Setpoint r(t)','Output y(t), Tracking Mode:off', 'Output y(t), Tracking Mode:on');
yl= ylim;
patch([125 125 200 200],[yl(1) yl(2) yl(2) yl(1)],'k',...
    'facecolor',[0.4660 0.6740 0.5880],'edgecolor','none', ...
    'facealpha',0.1, 'HandleVisibility','off') ; % draw transparent polygon to highlight a section of plot
hold off;

Figure contains an axes object. The axes object with title Comparison of Measured Outputs, xlabel Time (seconds), ylabel r(t) contains 3 objects of type line. These objects represent Setpoint r(t), Output y(t), Tracking Mode:off, Output y(t), Tracking Mode:on.

PID Controller 블록을 사용한 무충돌 제어를 위해서는 추종을 활성화하십시오.

참고 문헌

[1] Åström, Karl J., and Tore Hägglund. Advanced PID Control. Research Triangle Park, NC: International Society of Automation, 2006.

참고 항목

도움말 항목