operator01.jpg



(이번 강좌는 Control Theory에 대한 배경지식이 필요하므로 강좌의 내용이 이해가 가지 않으신다면 Control Theory 강좌를 읽고 오시기 바랍니다.)

안녕하세요? 교주 LGS입니다. ^^

이번 시간은 Simulink 상에서 수행할 수 있는 Response Optimization에 대해서 이야기 하겠습니다.

Response는 말 그대로 어떤 System에 Input을 주었을 때 System이 어떻게 반응(response)하는 지를 보는 것입니다.

Response는 크게 System이 한 상태에서 다른 상태로 넘어갈 때 보이는 Transient Response와 

System이 어느정도 안정되었을 때 보이는 Steady-state Response로 나눌 수 있구요


transient0101png.png


Simulink에서 Feedback Control을 적용하신 후 Response Optimization Tool을 이용하면 이 Response를 여러분이 원하는데로 조정할 수 있습니다.

즉 System을 여러분들이 마음대로 Control 할 수 있다는 거죠~ o(^o^)o


자~ System Identification이나 Parameter Estimation을 통해 최종적인 System의 Model을 얻었다고 합시다.


Response_Optimization01.png


Transfer Function 형태로 System을 표현해보니 9/(s^2 + s + 9) 였구요 

Unit Step Input에 대한 반응을 보니 아래처럼 나왔습니다.


Response_Optimization02.png


%Overshoot이 50%가 넘어가네요 ;; Settling Time도 꽤 길구요.. 냠;

 여러분이 원하는 설계조건은 아래와 같다고 합시다. 딱 봐도 System의 반응이 여러분이 원하는 설계조건에 부합하지 못합니다.


Response_Optimization03.png   


그래서 원하는 response 결과를 얻기 위해 Feedback Loop를 꾸몄습니다. 제어기로는 PID controller를 썼구요~


Response_Optimization04.png  


문제는 Design 요구조건을 만족하는 Output을 만들어 내기위한 PID Gain을 어떻게 찾는냐 하는 거죠

이럴때 요구조건을 만족하는 Gain을 찾기위해 Response Optimization을 수행해주시면 됩니다. ^ㅅ^

PID Controller 블럭을 더블 클릭해보시면


Response_Optimization05.png


각 Gain을 설정할 수 있는 창이 뜹니다.

사실 PID Controller Block의 경우 지금 우리가 하려고 하는 Response Optimization을 이용하지 않아도 바로 Gain을 찾아낼 수 있습니다 ^ㅅ^

위의 창에서 가운데 쯤에 Tune... 이라는 버튼이 보이시나요? Tune... 버튼을 누르시면


Response_Optimization06.png


Response time에 맞는 PID Gain을 바로 찾아줍니다. PID Controller 설계 끝~ o(^o^)o 참~ 쉽죠잉~

우측 상단에 있는 Show Parameters를 클릭해보시면 계산되어진 각 Gain들의 값을 확인할 수 있습니다.


Response_Optimization07.png


Response time 슬라이드바를 이리 저리 움직여보세요~ 조건에 맞는 Gain Parameter를 바로바로 계산해줘요~

SISO(Single Input Single Output) PID 같은 경우 아 정말 클릭 한방에 끝나는 군요!! 감동의 눈물 ㅜㅜ

(Design Requirement (Rise time< 0.5, Settling time < 5, Overshoot <15 )도 만족하고 있네요 )


그런데 위의 PID Tune 기능은 SISO 또는 기껏해야 2 Degree of Freedom의 PID Controller에 대해서만 Tuning을 할 수 있습니다.

MIMO(Multi-Input Multi-Output) System을 가지고 노시려면 위의 PID Tune 기능가지고는 모자라요..;; 

또 Controller가 PID가 아니라면??  이럴때 Response Optimization Tool을 사용하시면 됩니다.

물론 SISO PID의 경우 위처럼 그냥 Tune 기능 사용하시면 되구요~


Response Optimization은 System Response에 영향을 미칠 수 있는 모든 parameter를 tuning할 수 있습니다.

Multi-Output에 대해 주어진 Design Requirement를 동시에 만족하는 Gain을 찾아낼 수도 있구요

즉 Response Optimization이 PID Block에 있는 Tune기능보다 훨씬~ 강력하고 유연성, 자유도가 높다 이 말이죠~

그럼 본격적으로 Response Optimization의 사용방법을 알아보도록 하죠 o(^o^)o


우선 Tuning하고자 하는 Parameter를 변수로 지정해주셔야 합니다.

PID Controller Block을 더블 클릭해서 Proportional (P), Integral (I), Derivative (D) 항목을 각각 Kp, Ki,, Kd로 설정합니다.

(Simulink에서 parameter를 변수로 지정하면 MATLAB Workspace의 변수를 참조하게 됩니다요)

Response_Optimization08.png


MATLAB Command Window에서 Kp, Ki, Kd 변수를 workspace에 만들어 주세요

초기값은 마음대로 잡으셔도 됩니다.

Response_Optimization09.png


다시 Simulink로 돌아가셔서

Simulink Library Browser의 Simulink Design Optimization -> Signal Constrains -> Check Step Response Characteristics 블럭을


Response_Optimization10.png


아래와 같이 Output 쪽에 연결해주세요


Response_Optimization11.png


그리고 나서 Check Step Response Characteristics 블럭을 더블 클릭하여 창을 엽니다.


Response_Optimization12.png  


Design Requirement (Rise time< 0.5, Settling time < 5, Overshoot <15 )를 각 항목에 써주시구요~

왼쪽 아래에 있는 Response Optimization... 버튼을 클릭해주세요. 

(또는 Simulink Model View 의 메뉴에서 Tool -> Response Optimization을 클릴 하셔도 됩니다.)


Response_Optimization13.png

그러면 Design Optimization 다이알로그가 뜨구요

보아하니 오른편에 그려진 굵은 검은색 선이 우리가 지정했던 design requirement네요~ ^^

즉 System response가 저 검은선 안에 들어오면 되는 거죠~ 

상단의 Plot Current Response 버튼을 눌러 Parameter를 Optimization 하지 않았을 때의 그래프를 그려보면 


Response_Optimization14.png


현재는 Design Requirement를 전혀 만족 못하고 있네요;;

그럼 진짜 Response Optimization 해보도록 하죠.

우선 Tuning할 Parameter를 설정해주어야 합니다. 즉 어떤 Parameter를 조절하여 원하는 결과를 얻을 지 정해주어야 합니다.


Response_Optimization15.png  


Design Variables Set을 클릭한 후 New 항목을 선택합니다.

그러면 조정할 수 있는 변수의 목록이 오른쪽에 뜨게됩니다. 오른쪽의 목록에서 원하시는 Variable을 선택하히신 후 <= 화살표를 클릭하시면

Response Optimization에 사용할 변수(Parameter)들이 왼쪽에 등록이 되구요

지금 우리의 경우는 Kp Ki Kd 모두 Tuning할 것이므로 Kp Ki Kd 모두 선택 후 <= 화살표를 눌러 주세요

(Shift 키를 누르고 가장 아래쪽에 있는 Kp를 선택하시면 전체 선택이 됩니다.)


Response_Optimization16.png


왼쪽 매뉴에서 등록된 Variables의 초기값 최소/최대값 등을 정할 수 있습니다.

Response_Optimization17.png


Kp, Ki, Kd 모두 최소값 Minimum 항목을 0으로 변경하겠습니다. 

그리고 OK. 다시 Design Optimization 창으로 돌아와보면 


Response_Optimization19.png


Design Optimization Workspace에 방금전에 만들었던 Variables Set이 생성된 것을 확인할 수 있습니다.

각기 다른 Parameter를 가지고 Variables Set을 여려개 만들어 각 Variables Set을 가지고 Response Optimization을 수행할 수도 있다는 말이죠~

자~ 마지막으로 우측 상단의 녹색 화살표 Optimization 버튼을 Optimization이 진행됩니다.


Response_Optimization18.png



저의 경우 다섯번의 Iteration만에 Optimal Point에 도착했네요 ^^

Response_Optimization20.png


Time Plot1 탭으로 이동해보면...


Response_Optimization21.png


System Response가 깔끔하게 검은색 선 안에 들어온것이 보이네요 o(^o^)o

(회색선들은 Iteration 과정을 나타냅니다.)

MATLAB Workspace로 가보시면 Response Optimization을 통해 계산되어진 Kp, Ki, Kd의 Gain 값을 확인 할 수 있습니다.


Response_Optimization22.png



지금은 System Model이 SISO라서 PID Tune 버튼이랑 Response Optimization이랑 별 차이를 못느끼시겠지만 MIMO가 되면 

확실히 Response Optimization이 진가를 발휘합니다요~ ^^



자~ 이번시간은 여기까지 입니다.

막바지 무더위에 건강조심하시고 다음 시간에 뵈요~ =(=^ㅅ^=)=

이만 총총...



profile