강의자료 · 제어공학2

System Modeling · 학습

실행 준비

Python 경로는 python-control을 사용합니다. 모듈이 없으면 Colab·Jupyter의 코드 셀에서 %pip install control==0.10.2를 실행하세요.

이번에 배울 내용

질량이나 저항을 바꿀 때 Transient Response와 Steady-State Value 중 무엇이 변하는지 모델로 판단합니다.

전체 흐름

물리식·단위 → State Space 모델 → 측정 응답 → 계수 추정·잔차

물리식에서 입력과 상태 정하기

Cruise 모델 mv̇+bv=Fm\dot v+bv=F에서 입력은 힘, 상태·출력은 속도입니다. A=−bmA=-\frac bm, B=1mB=\frac1m입니다. 일정한 힘의 최종 속도는 Fb\frac Fb, Time Constant는 mb\frac mb입니다.

질량을 늘려도 최종 속도는 같지만 속도가 변하는 데 더 오래 걸립니다.

모델이 측정과 맞는지 보기

Unit Step 응답 y(t)=K(1−e−t/τ)y(t)=K(1-e^{-t/\tau})에서 KK는 Steady State 값이고, τ\tau는 그 값의 약 63.2%에 도달하는 시간입니다. 측정한 응답에 이 식을 맞춰 두 매개변수를 추정합니다.

이 예제의 처음 3초 기록에는 응답이 계속 증가하는 부분만 담깁니다. 15초 기록을 함께 사용했을 때 추정한 최종값과 Time Constant가 얼마나 달라지는지 비교합니다.

풀이 예제

m=1000m=1000 kg, b=50b=50 N·s/m, 힘 500 N. State와 Output은 Velocity [m/s]입니다.

import numpy as np
import matplotlib.pyplot as plt
import control as ctl
s = ctl.tf('s')
m=1000.; b=50.; force=500.
G=ctl.ss([[-b/m]],[[1/m]],[[1]],[[0]])
t=np.linspace(0,150,1501)
t,v=ctl.step_response(force*G,t)
plt.plot(t,v); plt.xlabel('Time [s]'); plt.ylabel('Speed [m/s]'); plt.grid()
실행 결과

공식 문서·데이터

참고 예제

추가 예제 보기

참고 자료