Project/#3 PI-IP controller

#1 직류전동기 기계 시스템 Simulink 구현 (PI controller)

얼죽아여뜨샤 2023. 2. 23. 13:27

2023.02.22 - [Project/#2 Motor Lab] - #1.5 23/2/21 세미나

2022.08.02 - [Study/Feedback System] - PID control

 

PID control

*PID control 1.PID 제어란? P만 사용하면 steady state의 에러가 생긴다. 정상 상태 오차를 없애려면 적분기(과거항)를 비례기와 나란하게 설치해야 한다. 적분기는 누적 합계를 유지하면서도 시간 경과

jgewjsrhdms.tistory.com

0. 영구자석 직류 전동기 구동시스템 (전체적인 구성)

영구자석 직류 전동기 구동시스템

위 사진은 영구자석 직류 전동기 구동시스템의 블록도이며 구동 시스템은 크게 직류 전동기와 구동 대상인 기계적 부하 시스템, 또한 직류 전동기를 제어하는 제어기와 이 제어기로부터 지령 받은 전압을 발생시켜주는 전력 변환 장치로 구분된다.

 

현재 사용하는 Motor은 BLDC이지만 3상을 받아들여 전압기 형성이 아직은 어렵기에 PMSM형태의 직류 전동기 형태로 만들어 시뮬레이션 돌려본다.

 

[시뮬레이션 절차]

1. 직류 전동기 모델링
2. 기계(부하)시스템 모델링

영구자석 직류 전동기와 기계 시스템의 연결 블록도

3. 전류 제어기 연결
4. 속도 제어기 연결
5. PWM 인가 전압에 대한 구동 특성 [추후 필요하면]

 

1. 직류 전동기 모델링

영구자석 직류 전동기와 기계 시스템의 연결 블록도
전압 방정식

직류 전동기는 전압 방정식으로 표현되며 입력은 전기자 전압이고 출력은 전기자 전류이다.

 

직류 전동기의 simulink model

처음에 전기자 전압 Va와 역기전력 Ea의 값을 상수값으로 넣어 만들었다.

전기자 전압은 별도로 입력해 주지만 역기전력은 다음의 나오는 기계 시스템 모델에서 구한 속도 Wm에 역기전력 상수 K(=ke*phi)를 곱해주어 얻게 된다.

 

[실제구현]

직류 전동기 블록도 - simulink model

Va를 step 값을 주었다.

 

2. 기계(부하) 시스템 모델링

운동 방정식

부하의 동특성은 기계 시스템의 운동 방정식으로 표현되며 입력은 전동기의 발생 토크이고 출력은 부하의 속도이다.

회전자 속도 Wm에 대해 나타낸 후 이 수식을 모델링 하였다.

 

기계 시스템의 Simulink model

 

연산에 필요한 입력은 전동기 토크 Te와 부하 토크 TL이다. 

부하 토크 TL은 별도로 입력해 주지만 전동기 토크 Te는 앞서 직류 전동기의 모델에서 구한 전기자 전류 Ia에 토크 상수 K(=kt*phi)를 곱해주어 얻게 된다. 

 

[실제구현]

 

기계 시스템 블록도 - simulink model

 

[직류 전동기 모델 + 기계 시스템 모델]

직류 전동기 모델과 기계 시스템 모델의 결합

직류 전동기와 기계 시스템 모델에 토크 식과 유기 기전력 식이 결합된 전체 모델이 위 그림이다.

전기자 전압 Va를 단위 계단 형태로 얻기 위해 'Step' block을 사용하였다.

시간과 속도 정보를 얻기 위해 'To Workspace' Block을 사용해 각각 t와 Wrpm이란 이름으로 저장하도록 했다.

Wrpm은 전동기의 속도 Wm[rad/s] 을 r/min으로 표시한 속도이다.

 

[실제구현]

Parameter
직류 전동기 모델과 기계 시스템 모델의 결합 - Simulink model

중간에 K를 곱해주어 기 시스템으로 넣어주는 이유는, 직류 전동기의 output은 Current의 값이고 기계 전동기의 Input은 Torque값이기 때문에 K라는 상수를 넣어서 변환해준 것이다.

 

[Simulation]

Lab

24V의 정격전압을 0.05s에 step으로 집어 넣고 0.5s동안의 Wrpm값을 보았을 때 4000-5000rpm 사이에서 Overshoot이 일어남을 확인하였다.

아직 전체 시스템을 돌린 것이 아니기 때문에 결과 값을 낸 것으로 구동 확인.

 

+ 오류내용

오류 속도(주황색) 맞는 속도(파랑색) 비교

처음에 Jeq의 Jn값을 mH단위로 생각하지 않고 H단위로만 생각하여 0.0086(H)으로 값을 넣어서 뽑아 냈더니 주황색의 곡선이 나왔다.

Overshooting이 없는 곡선이 나와서 결과 값이 잘 못 나왔다고 생각하여 오류를 찾아내려고 삽질했더니...

[해결] 오류는 Jeq의 값을 0.086e-4(H)으로 넣었더니 파랑색 Overshooting이 있는 곡선이 나왔다.

 

3. 전류 제어기 연결

비례적분 전류 제어기가 포함된 전체 구동시스템의 모델

위에서 만든 전체 모델 블록은 직류 전동기 (PMDC)로 놓고 비례적분 전류 제어기, 누적 방지 제어기, 역기전력 전향 보상 부분, Limiter를 넣어 회로도를 구상한다.

 

Voltage feedback

비례적분 제어기의 출력인 전압 지령 Va_fb는 전류 오차에 대해 위처럼  표현된다.

 

위 그림과 같은 모델로 전류 제어기를 구상하려고 하였다.

 

[실제구현]

 

Current Parameter
전류 제어기 + System

전류 제어기의 출렵 전압 지령 Vqs_feedback에 역기전력 Ea에 대한 Vq_feedfoward이 더해져  전기자 전압 지령 Va가 출력된다.

하지만 전동기의 인가전압은 정격 전압이하가 되어야 하므로 최종적인 전기자 전압 지령 Va_refdpsms 'Saturation' Block 'Limiter'에서 정격 전압이하로 제한되도록 하고 있다. 

+ 이 전기자 전압 지령은 초퍼와 같은 전력변환장치에서 구현되어 직류 전동기에 인가되어야 한다.

 

[Simulation]

(좌) 전류지령 0.6A (우) 전류지령 1A

0.05s에서 전류 Step으로 주었고, 0.5s까지 보았을 때

둘 다 동일 조건에서 전류만 바꾸어주면서 실험했다.

둘 다 결국엔 지령 전류에 도달하긴 했으나 Overshoot이 일어났다.

=> 둘의 시간을 비교해서 보았으면 좋았을 것 같다.

=> 주파수(Hz)를 같은 전류에서 비교해 보면 좋을 듯.

 

Q1. 전압이 정격 전압에 도달하였을 때 전류가 밑으로 급하게 떨어지며 밑의 방향으로 Overshoot이 일어난다?

정격 전압에 도달하면 전류가 떨어지는 이유는?

 

Q2. 전압이 초반에 조금 튀는 부분이 있는데 그 부분 때문에 전류에 Overshoot이 생기는 것인가?

혹은 Parameter로 지정된 backEMP의 값이 2500rpm일 때 측정된 것이라서 그런 튐 현상이 생기는 것?

 

4. 속도 제어기 연결

전류 제어 시스템에 주어지는 전류 지령 Ia_ref는 전동기 구동에 필요한 토크 값에 의해 결정된다.

속도 제어를 하는 경우 속도 제어기의 출력이 토크 지령이 되며 이 값을 토크 상수 K로 나누면 전류 지령이 결정된다.

 

비례적분 속도 제어 시스템 모델

위에서 만든 블록을 하나의 Subsystem 'BLDC(PMDC) with CC로 구성하고 속도 제어기 역시 PI 제어기이므로 누적 방지 제어가 필요하다.

속도 제어기의 비례와 적분 이득, 누적 방지 제어기 이득은 앞 과 동일하게 구현한다.

 

위 그림과 같은 모델로 속도 제어기를 구상하려고 하였다.

 

[실제구현]

Speed Parameter
속도 제어기 + 전류제어기 + System

'Saturation' Block 'Te_limiter'에서는 속도 제어기에서 출력된 지령 토크 Te_rated까지로 제한하고 있다.

이에 따라 지령 전류 Ia_ref의 크기도 정격 전류로 제한된다.

 

[Simulation]

200rpm
1000rpm
2500rpm

1. 속도

200rpm일 때 Wrpm_ref에 도달하기 위해 0.05180s의 시간,

1000rpm일 때 Wrpm_ref에 도달하기 위해 0.0581s의 시간,

2500rpm일 때 Wrpm_ref에 도달하기 위해 0.0698s의 시간이 걸렸다.

=> 속도가 올라갈수록 지령 속도에 도달하기까지 더 오랜 시간이 걸림을 확인하였다.

=> Overshoot 현상을 확안하였다.

 

2. 전류

전류는 속도와 관계 없이 Overshoot 현상으로 정격 속도에 도달하여도 튐 현상을 확인하였다.

 

3. 토크

정격 속도에 도달하였을 때 예상과 같이 토크는 거의 0에 수렴한 값에 도달하고 있음을 확인하였다.

=> 토크는 전류의Overshoot현상으로 진동이 있을 때와 같이 위 아래로 요동치고 있는 것 같다.

 

[결론]

이 실험이 맞다면 전체적으로 Overshoot현상이 일어난다.

gain 튜닝을 재조정 해야한다.

 

[주의할 것] 

속도와 전류 지령을 확인하면서 그래프 기록하면서

[추가실험]

1. PI 에서 simulation해본다.

2023.02.23 - [Project/#3 PI-IP controller] - #2 BLDC(PMSM) [PI controller] Lab

2. PI-IP 제어기로 만들어 보고 알파값에 따라 simulation 해 본다. (code 수정)

2023.02.24 - [Project/#3 PI-IP controller] - #3 BLDC(PMSM) [PI-IP controller] Lab

3. 전체적으로 PI제어기의 gain값 들을 튜닝해서 Overshoot을 줄여봐야 한다. (code 수정)

2023.02.25 - [Project/#3 PI-IP controller] - #4 BLDC(PMSM) [PI-IP controller] Gain 값 Tuning

4. 실험값을 토대로 실제 M-G세트로 직접 실험해서 확인 (실제 구동)

2023.03.02 - [Project/#3 PI-IP controller] - #5 BLDC(PMSM) [PI-IP controller] Gain 변경 실험

5. M-G세트에서 부하를 모터값으로 조정하여 simulink 수정해 최종 만들어보기

 

[전체코드]

전체 시스템
속도 제어기
q축 전류 제어기
구동 시스템