1 minute read



8.1.1 Plant

Feedback control은 목적 output에 도달하기 위해 사용된다. 예를 들어 Ch. 7의 수력발전기의 경우, 발전기 속도를 제어하기 위해 현재 속도를 측정하고, 요구 속도와 비교하여 오차에 따라 물레방아에 얼마나 많은 물을 보내야 할 지 결정한다.



Physical system의 input/output 관계를 제어하는 곳을 plant라고 한다. Simscape는 plant modeling을 위한 강력한 tool이 제공되어 있다. 반면 simulink에는 feedback control을 위한 tool이 있다.

따라서 simscape의 plant model과 simulink의 control system을 결합하면?


Plant Output

다시 hydroelectric generator model로 돌아온다. Plant에는 input과 output이 필요. Output은 제어 목표로, 발전기의 rotation rate이다.



이 모델에서, Gear Box는 회전 방향을 반대로 뒤집으므로, InertiaRotational Electromechanical Converter의 값이 반대 부호로 되어 있다. Rotational Electromechanical Converter의 rotation rate를 positive로 측정하기 위해 센서의 방향을 반대로 해야 한다. 물리적 신호를 simulink 신호로 연결할 컨버터도 필요.



Plant Input

Plant input은 제어 신호. 물레방아를 돌리기 위한 물의 흐름을 제어할 수 있는 밸브가 필요하다.

Isothermal Liquid > Elements > Local Restriction(IL)

Local Restriction(IL) 블록은 변동하는 영역을 제한하는 역할을 한다. 열린 영역은 physical signal input을 제어한다. 이 블록으로 valve 또는 orifice를 모델링할 수 있다.

Rotational Mechanical Converter에 연결된 파이프를 Local Restriction(IL) 블록으로 대체한다.

Minimum Restriction Area $\textrm{0.05 m}^{2}$
Maximum Restriction Area $\textrm{1 m}^{2}$

Input은 simulink 제어 신호이므로 컨버터가 필요.




8.1.2 Feedback Control

Control System Component

제어 시스템을 만들기 위해 reference signal(목표 속도), error calculation, controller가 칠요하다. 다음 블록들이 맡는다.

Component Block
Reference Constant
Error calculation Sum
Controller Discrete PID Controller

Constant는 500, Sum의 부호는 |+-로 정한다. | 기호는 포트의 정렬을 도와준다.

Constant 블록과 Discrete PID Controller 블록을 각각 Sum에 연결한다.



PI 제어를 사용할 것이다. Discrete PID Controller의 파라미터를 수정.

Controller PI
Sample time 0.05
Proportional (P) 1e-6
Controller 5e-3

Control loop를 완성하기 위해 controller의 output과 plant의 input을, plant의 output과 error calcuation을 연결한다.





8.1.3 Algebraic Loop

어라. 결과는 잘 나왔는데 경고 메세지가 떴다.


블록 다이어그램 ‘SimscapeOnramp’에 1개의 대수 루프가 있습니다. 루프에 대한 자세한 내용을 보려면 명령 Simulink.BlockDiagram.getAlgebraicLoops(‘SimscapeOnramp’)을(를) 사용하거나 MATLAB 명령 창에 sldebug(‘SimscapeOnramp’)을(를) 입력하여 명령줄 Simulink 디버거를 사용하십시오. 이 메시지를 제거하려면 대수 루프를 “안 함”으로 설정하십시오.

구성요소:Simulink | 범주:Block diagram 경고

대수 루프 내에서 불연속이 감지되었습니다. 해를 구하는 데 어려움이 있을 수 있습니다.

구성요소:Simulink | 범주:Model 경고


이 오류의 원인은 algebraic loop. Algebraic loop이란 주어진 time step 안에서 블록의 output을 계산하기 위해 input이 필요하다는 circular dependency이다.

이런 상황에서는 모델은 멀쩡히 돌아가지만 항상 참은 아닐 수 있다. Algebraic loop를 없애보자. 가장 간단한 해결책은 delay를 주는 것.


Simulink > Discrete > Unit delay

Unit Delay 블록을 추가하여 각속도 측정과 Sum 블록의 (-) 포트 사이에 집어넣자.



경고 메세지가 사라지는 것을 볼 수 있다.