관리 메뉴

Data Analysis for Investment & Control

스미스 예측기(Smith Predictor)를 이용한 시간 지연 제어 본문

Robotics/Control

스미스 예측기(Smith Predictor)를 이용한 시간 지연 제어

synaptic 2015. 4. 13. 22:23

 

 

소개 및 수식 유도

 

스미스 예측기는 시간 지연을 가지는 시스템을 제어하기 위한 예측 제어기로 Otto J. M. Smith라는 사람이 1957년에 발명하였다.

 

시간 지연을 가지는 Closed-Loop 제어 시스템에서 스미스 예측기를 추가하게 되면 아래와 같은 블록도로 표현할 수 있다.

 

여기서 C는 제어기의 전달함수이며, G는 플랜트의 전달함수이다. 스미스 예측기는 플랜트 전달함수 G의 추정 식을, 그리고 시간 지연량을 조합하여 피드백하는 방식으로 시간 지연 요소로 기인하는 불안정성을 보상한다.

 

위의 블록도를 수식화 하면 다음과 같다.

 

 

 

 

여기서 W에 대해 정리하면,

 

정리한 W를 위의 식에 대입하면,

 

 

즉, 스미스 예측기로 인해 제어의 불확실성 요소는 상쇄되고 시간지연 성분만 남게 된다.

 

따라서 제어 시스템이 시간 지연으로 인해 생기는 불안정성을 보상하는 효과를 가진다.

 

 

Matlab 시뮬레이션

 

그럼 Matlab 시뮬레이션을 통해 스미스 예측기의 효과를 알아보도록 하자.

 

Matlab의 Simulink를 사용하여 다음과 같이 제어 블록도를 작성하자.

 

 

 

Plant의 전달함수는 온도 제어의 경우를 가정하여 1차 모델로 설정하였다. 이 때 제어기는 PI 제어기를 설계하여 게인 값을 튜닝하여 사용하도록 해보자.

아래는 pidtune이라는 matlab 함수를 사용하여 Plant 전달함수에 대한 튜닝된 PI 게인 값을 찾도록 했다.

 

 

튜닝된 게인 값은 Kp = 0.52, Ki = 5.25로 산출되었다. 이제 이 값을 제어기에 설정하여 시뮬레이션을 수행하면 아래와 같은 그래프를 얻을 수 있다.

 

 

 

시뮬레이션 결과를 보면 적당한 수준의 오버슈트와 Settling Time을 가지고 타겟 값인 200에 수렴하는 것을 볼 수 있다.

 

이제 제어 블록도에 일정 시간 만큼의 지연이 있다고 생각해 보자. 임의로 제어 반응 시간 지연과 응답 지연을 각각 0.124초 만큼 주었다.

 

 

 

 

이에 대한 시뮬레이션 결과는 아래와 같다.

 

 

 

상태가 불안정하여 수렴하기는 하나, 오실레이션이 심하게 나타나는 것을 확인할 수 있다. 모델이 변했으므로 pidtune을 사용하여 시간 지연이 적용된 모델에 대한 게인 값을 다시 튜닝해 보자.

 

 

 

위에서 얻어진 새로운 게인 값을 적용하여 다시 시뮬레이션을 하면 아래와 같이 나타난다.

 

 

 

휠씬 안정된 상태로 수렴하는 것을 알 수 있다. 하지만, 시간 지연의 영향 때문에 안정화되는 시간이 대략 3초 부근으로 지연되는 것으로 나타난다.

 

 

이제 제어 블록도에 스미스 예측기를 추가해 보도록 하자.

 

 

 

스미스 예측기의 구성 요소인 추정 모델과 추정 시간 지연 블록이 추가되었다. 추정 모델은 Plant의 전달 함수를 그대로 복사하고 추정 시간 지연도 0.248초로 설정하였다. 이론대로라면 시간 지연 요소가 스미스 예측기에 의해 상쇄되었으니 기존의 시간 지연이 없던 모델에서 사용한 PI 게인 값을 사용해도 무방할 것이다.

 

 

 

PI 게인 값을 다시 Kp = 0.52, Ki = 5.25로 설정한 후, 시뮬레이션을 진행하였다. 위의 시뮬레이션 결과에서 보듯 시스템의 반응에 시간 지연이 있음이 확인 되나, 수렴 하는 시간이 2초 전후로 시간 지연이 없을 때와 비슷한 결과로 나타난다.

 

위에서 처럼 모델 추정과 지연 시간 추정이 정확하다면 인상적인 제어 결과를 얻을 수 있지만, 만약 추정 오차가 발생한다면 어떤 결과를 나타낼까? 이에 대한 확인을 위해 Estimated Transfer Function 블록과 Estimated Delay 블록을 수정하여 Pole 값과 Delay 값을 각각 1/0.4356과 0.208초로 설정하여 시뮬레이션을 진행하도록 하자,

 

 

 

위의 결과에서처럼 추정이 정확하지 않을 때에는 오버슈트가 크거나 Settling Time이 길어지는 것으로 나타나기도 한다. 추정을 더욱 더 잘못할 경우 아예 제어가 안될 수도 있을 것이다.

 

 

더 생각해 봐야 할 것들

 

간단한 모델의 경우에는 추정이 어렵지 않을 수도 있는데, 실제 우리가 제어하려고 하는 대상은 그리 간단하지 않은 경우가 많다. 이럴 경우에는 모델 추정을 어떻게 하는지도 고민을 해봐야 할 문제다.

 

한가지 방법은 System Identification이라는 방법을 통해 실제 모델에 대한 입력과 출력 데이터를 가지고 최대한 모델을 근사화 시키는 방법이 있다. 이 분야의 권위자는 스웨덴의 Lennart Ljung 교수로 Matlab의 System Identification Toolbox를 만드는데 그의 논문이 참조가 되었다. System Identification에 대한 내용은 다른 포스트를 통해 다루기로 한다.

 

다른 한가지 방법은 신경망과 같은 Learning 기법을 통해 모델을 학습 시키는 것이다. 아래에 관련 논문을 링크한다. 구글링을 통해 '스미스 예측기'로 검색을 해도 찾을 수가 있다.

 

원격 제어 시스템에서의 신경망을 이용한 시간 지연 보상 제어기 설계.pdf

 

 

 

 

0 Comments
댓글쓰기 폼