Transfer Function과 블록을 연결하기

제어공학1 · 4주차

이번 주 목표 · 같은 입력·출력 관계를 식과 Simulink 블록으로 표현합니다.

실행: MathWorks 로그인 후 내 작업 공간의 .mlx를 엽니다. 코드 안 클릭 → Live Editor → Run Section으로 한 Section씩 실행하세요. Run은 전체 실행입니다. 값 수정 후에는 관련 Section을 다시 실행해야 합니다. ⟦직접 입력⟧ 작성란은 설명을 직접 수정하며 실행하지 않습니다. Windows/Linux는 Ctrl+Enter, Mac은 ⌘+Enter를 사용할 수 있습니다.

모델에 무엇을 포함할지 정하기

개념 설명용 예시 · 일정 속도의 이동과 스프링 운동을 비교해 모델을 선택하는 기준을 설명합니다. 이번 실습에서 구현할 대상은 아래의 질량–스프링–댐퍼 모델입니다.

등속 운동은 속도의 변화를 생략하고, 등가속 운동은 가속도가 일정하다고 둡니다. 둘 다 목적에 맞는 조건에서 유용한 모델입니다. 2주차의 운동 가정처럼, 먼저 어떤 변화를 설명하려는지 정해야 합니다.

잠깐 동안 이동한 거리를 추정한다면 일정 속도 모델로 충분할 수 있습니다. 스프링에 연결된 물체가 힘을 받은 뒤 흔들리고 멈추는 과정을 알고 싶다면 위치와 속도에 따라 힘이 달라지는 관계까지 필요합니다. 반면 그 현상을 설명하는 데 영향이 작은 부품의 세부 구조는 생략할 수 있습니다.

이번 실습은 이미 세운 질량–스프링–댐퍼 모델을 Transfer Function과 Simulink 블록으로 표현합니다. 표현 방법을 바꾸는 것과 물리 현상을 추가하는 것은 다릅니다. 같은 모델에 같은 Input과 Initial Condition을 주었다면 같은 응답을 얻어야 합니다.

모델을 더 자세히 만들어야 하는 때

예측과 측정의 차이가 목적상 허용할 범위를 넘고, 그 원인이 생략한 현상에 있다면 모델을 보완합니다. 예를 들어 빠른 동작에서 구동기의 지연이 중요해질 수 있습니다. 항을 많이 넣는 것 자체가 목표는 아닙니다. 먼저 단위·계수·Input·Initial Condition이 맞는지도 확인해야 합니다.

1. Transfer Function에는 조건이 있다

질량–스프링–댐퍼의 Mÿ+bẏ+ky=uM\ddot y+b\dot y+ky=u를 Initial Condition이 모두 0인 상태에서 변환하면 G(s)=YU=1Ms2+bs+kG(s)=\frac YU=\frac1{Ms^2+bs+k}입니다. 입력 힘과 출력 변위를 바꾸면 다른 Transfer Function이 됩니다.

Transfer Function에는 조건이 있다

Transfer Function은 Initial Condition이 모두 0일 때 입력에 따라 출력이 어떻게 변하는지 나타냅니다. 예를 들어 물체가 평형점에서 정지해 있을 때 힘을 가하는 경우입니다. 시작부터 물체가 다른 위치에 있거나 움직이고 있다면, 그 영향은 G(s)U(s)에 더해 따로 계산해야 합니다.

2. 계수 배열을 읽는 방향

tf([1],[1 2 5])의 분모는 s²+2s+5입니다. 계수는 높은 차수부터 쓰며 중간 차수가 없으면 0을 넣어 자리를 유지합니다. 계수가 세 개이면 s², s, 상수항 순서입니다. 예를 들어 s²+5는 [1 0 5]로 적어야 합니다.

계수 배열을 읽는 방향

MATLAB의 *와 .*는 다릅니다. 배열끼리 같은 위치를 계산할 때는 .*, .^, ./를 사용하고 행렬 관계는 *로 표현합니다.

3. Feedback의 부호 확인

Negative Feedback(음의 Feedback)에서 y=G(r−Hyr-Hy)이므로 T=G1+GHT=\frac G{1+GH}입니다. feedback(G,H)는 기본적으로 이 관계를 구성합니다. H=1이면 분모의 상수항이 5에서 6으로 바뀌는지 확인하세요.

Feedback의 부호 확인

출력 단위와 비교 신호의 단위가 맞아야 물리적인 Feedback입니다. H=1인 예제는 측정값이 출력과 같다고 둡니다. 실제 센서가 속도를 전압으로 바꾼다면 목표값도 같은 전압 단위로 바꿔 비교해야 합니다.

4. Simulink에서도 같은 모델

Step → Transfer Fcn → Scope를 연결하고 분자 [1], 분모 [1 2 5]를 설정합니다. 입력 시점·크기·시뮬레이션 시간을 MATLAB 코드와 같게 맞춘 뒤 응답을 비교하세요.

Simulink에서도 같은 모델

함께 제공하는 .slx 파일을 열어 모델을 실행해 보세요. 과제에서는 블록의 역할과 계수를 확인하고 본인 사본을 수정합니다. Scope에 신호가 없다면 선 연결과 Step time부터 확인합니다.

학습 내용 확인

  1. 코드에 넣을 값은 무엇이며, 결과 배열의 각 행·열은 무엇을 뜻하나요? 물리량을 계산한다면 단위도 확인했나요?
  2. 조건을 하나 바꿨을 때 다시 실행해야 하는 부분을 찾을 수 있나요?
  3. 실행 결과가 예상과 맞나요? 다르다면 출력값이나 그래프를 보고 이유를 설명할 수 있나요?

MATLAB 공식 문서 · Control System Toolbox

실습 자료