【제어공학】PID 제어와 스텝 응답의 가시화·분석

1 소개



전회 기사( htps : // 이 m/사토 235/있어 ms/5에006엣 bf2949cf59463 ) 속에서, 제어기를 넣은 회로에서, 스텝 입력과 스텝 응답의 가시화를 추천되었으므로, 이번 기사를 작성했다.
유쿠유쿠는 로봇의 제어계 설계에 도움이 되고 싶다.

2 참고 문헌



2.1 서적



[1] 미나미 유키의 저, 옴사, 「Python에 의한 제어 공학 입문」

2.2 웹 페이지



[a] 제어 블록 다이어그램 : htps : // 타지마로보치 cs. 코 m / 피 d b ぉ ck ぢ 아 g 라 m t ran s fu r fu c chion /
[b] [제어 엔지니어링] Python에 의한 전달 함수 그래프 : htps : // 이 m/사토 235/있어 ms/5에006엣 bf2949cf59463
[c] [제어 엔지니어링] 파이썬으로 전달 함수 및 상태 공간 모델 계산 : htps : // 이 m/사토 235/있어 ms/f991411074c578d1640c

3 실시 내용



3.1 PID 제어의 블록 다이어그램




출처: [a]

상기 "C"는 제어기에 대응한다.
전술 한 피드백 제어 회로는 전달 함수로 설정되어 스텝 입력 및 응답을 시각화한다.

3.2 전달 함수



초기값
K=1
Kd=1
Wn=1
Ki=1
ita=1
Kp=1

전달 함수 만들기
C=matlab.tf([Kd, Kp, Ki],[1,0])
G=matlab.tf([K*Wn**2],[1,2*ita*Wn, Wn**2])
H=1
print("H")
print(H)
print("------------")
print("C")
print(C)
print("------------")

print("G")
print(G)
print("------------")


CG=matlab.series(C,G)
print("C*G")
print(CG)
print("------------")

CGH= matlab.feedback(CG,H,-1)
print("C*G/(1+C*G*H)")
print(CGH)
print("------------")

출력은 다음과 같다.
H
1
------------
C

s^2 + s + 1
-----------
     s

------------
G

      1
-------------
s^2 + 2 s + 1

------------
C*G

  s^2 + s + 1
---------------
s^3 + 2 s^2 + s

------------
C*G/(1+C*G*H)

     s^2 + s + 1
---------------------
s^3 + 3 s^2 + 2 s + 1

------------

3.3 스텝 입력·응답



위에서 만든 전달 함수를 사용하여 단계 입력과 응답을 시각화합니다.
t = np.linspace(0, 3, 1000)
yout, T = matlab.step(P, t)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(T,yout, label="step response")
ax.plot(T,[1]*1000, linestyle="--", label="step input")
ax.set_xlabel("time[s]")
plt.legend(bbox_to_anchor=(1, 0.25), loc='upper right', borderaxespad=0, fontsize=11)

그림에 정리하면 다음과 같다.



4 요약



・제어기를 넣은 피드백 회로에서의 스텝 응답까지 가시화할 수 있었다.
·다음은 안정성의 고찰이나 C, G, H의 함수의 계수를 바꾼 경우의 거동의 비교 등을 실시하고 싶다.

좋은 웹페이지 즐겨찾기