DC 서보모터와 PC를 이용한 INDEXING 위치제어시스템의 구현 201910665 김수근 목차 1. 서론 1-1 배경 1-2 제어시스템의 구성 1-3 목적 2. 본론 2-1 수학적 모델링 2-2 제어기 설계 2-2.1 Ziegler – Nichols tuning rule 2-2.2 matlab 자체 tuning 기능 사용 case1) PID (기본값 설정) case2) PID Matlab 자체 tuning 기능 사용 case3) PID에서 D값의 변화 3. 결론 3-1 결과 3-2 느낀 점 4. 참고문헌 5. 부록 1. 서론 배경 현대에 들어서, 자동화 시스템의 가치는 더욱 높아지고 있고, 그에 따라 보다 정확하고 효 율적인 제어를 필요로 하고 있다. 따라서, 본 프로젝트는, DC 서브모터와 PC를 통하여 위치 제어시스템을 구현해 봄으로써, 그 동안 학습하였던 수학적 모델링, PID제어기 설계, Matlab 프로그래밍, Simulink 등을 활용하여 보다 정확하고 효울적인 제어를 설계해보고자 한다. 제어 시스템의 구성 (그림 1) 위 그림 (그림 1)과 같이 제어시스템을 구축한다고 하였다. DC서보모터에서 Indexing panel로 동력을 전달할 때, 기존 움직임 반대 방향으로 힘이 작용하는 backlash가 발생하여, 위치 정확도를 감소시킬 수 있기 때문에, Timing belt를 통하여 위 효과를 줄여준다. Indexing panel의 바늘위치와 바늘속도는 Counter를 통하여 측정하여 PC로 전달하고, PC는 이 정보를 토대로 PID제어기를 구성하여 출력신호를 만든다. 이 출력신호는, D/A Converter 로 전달 된 후, DC 서보머터 드라이브로 전달되어, DC서보모터는 이 신호에 따라 작동하게 된다. 목적 Indexing panel에는 0부터 7까지의 수가 45도 간격으로 배치되어 있으며, 본 프로젝트에서 는, Indexing panel의 바늘을 3초 간격으로 0에서 7까지 움직였다가, 다시 7에서 0으로 되돌 아가게 구동하고자 한다. 이 때, 바늘은 연속적으로 움직이는 것이 아닌, 계단함수처럼, 목표 값이 변하게 하고자 한다. 2. 본론 2-1 수학적 모델링 기본 가정으로부터 수학적모델링을 진행해보겠다. 2-2 제어기 설계 2-2.1 Ziegler – Nichols tuning rule 14주차 수업에서 배운대로, Z-N tuning 룰을 적용해보고자 한다. 이에 따라, 우선적으로 1방법을 통해 프랜트의 단위계단응답이 S자 형으로 일정한 값에 수렴 하는지 알아보고자 한다. 따라서, Matlab 코드는 아래와 같이 작성되며, 그 결과는 아래와 같 다. (그림 2) (그림 4) 그림 2에서 확인한 바와 같이, 일정한 값에 수렴하지 않으므로, 1방법은 사용하기 어렵다. 2 방법 또한, PID제어에서 P 이득만 고려한 후, 일정하게 진동하는 임계상태에서 사용이 가능한 데, 그 방법 또한 사용할 수 없으므로, Z-N 방법을 통하여 tuning하는 것은 어렵다. 2-2.2 matlab 자체 tuning 기능 사용 우선, matlab의 기능 중 하나인 simulink를 통하여, 원하는 제어 시스템을 설계해보았다. 그 결과는 아래와 같다. (그림 3) (그림 5) 다음과 같이 설계함을 통하여, 3초 후부터 3초 간격으로 값이 일정하게 증가하도록 하였으며, 값을 7번 증가시킨 후에는, 반대로 3초 간격으로 값이 일정하게 7번 감소하도록 입력값을 설 계하였다. 그 후, Simulink의 블록 중 하나인 PID 블록을 사용하여, 본 시스템의 출력과 ISE 오차를 알 아보고자 했다. PID 값은 기본값으로, 아래와 같이 설정하였다. (그림 4) (그림 6) case 1) PID (기본값 설정) (그림 7) (그림 8) 위 그림 5의 좌측은 output의 plot이고, 우측은 ISE Error이다. ISE Error를 수치화하여 보 다 알기 쉽게 Matlab으로 구현한 결과 (그림 6), 오차는 0.211로 확인 가능하다. 이는 정상적 으로 설계된 것처럼 보이나, output의 plot을 잘 살펴보면, 정착시간이 길다는 것을 확인할 수 있다. (그림 7) (그림 9) case 2) PID Matlab 자체 tuning 기능 사용 그림 4를 보면, Matlab 기능 내. PID값을 자동 조정하는 기능이 있다. 이를 통해 PID값을 자동 조정을 통하여, tuning해보고자 한다. (그림 4) 그 결과, 튜닝된 값은 아래와 같이 표현된다. (그림 8) (그림 8) 따라서, 이 값을 PID제어기에 넣고, Simulink를 작동하면, 아래와 같이 plot된다. (그림 9) (그림 9) (그림 10) 위 case 1과 비교해보면, output의 오버슛은 증가하였으나, 정착시간이 눈에 띄게 좋아진 것 을 확인할 수 있다. (그림 11) (그림 11) 또한, 그림 10을 통하여 확인해 본 결과 , ISE 오차 또한 기존 0.211에서 × 정도로 확연하게 줄어듬을 확인할 수 있었다 (그림 10). 오버슛이 증가하였다고 하긴 하였으나, Z-N tuning rule에서도 최대 오버슈트가 25%가 목표인 것을 감안하면, 약 10%의 오버슈트 는 성공적인 PID 튜닝이라고 평가할 수 있다. 하지만, 그럼에도 불구하고 오버슈트를 줄이기 위하여, D 제어의 값을 변화하여 오버슛을 감소시켜 보겠다. case 3) PID에서 D값의 변화 D 값을 증가시키는 것이, 오버슛을 줄일 수 있다고 판단되므로, D 값을 기존 0.045 값이라 는 것을 토대로, 0.05에서 0.05간격으로 0.5까지 출력해 보겠다. 한번에 1까지 출력하면, 그래 프가 많이 겹쳐서 알아보기 힘드므로, 0.05부터 0.25까지, 0.3부터 0.5까지 출력해보겠다. 그 에 따른 Matlab 코드는 아래와 같다.(첫번 째 구간에 대한 Matlab 코드이다. (그림 12) (그림 12) 각 구간에 따라 출력한 결과는 아래와 같다. (그림 13, 14) (그림 13) (그림 14) 위 두 그림을 통해 확인한 결과, D값이 0.1일 때, 가장 오버슈트가 작게 일어나는 것을 확인 할 수 있다. 이제 D 값에 따른 정착시간을 확인해보겠다. (그림 15) (그림 15)를 통해 확인해 본 결과, 오버슈트에 대한 정착시간에는 큰 차이가 없었다. 이제, D 값에 따른 ISE Error를 확인해 보겠다. Matlab 코드는 아래와 같다. (그림 16) (그림 16) (그림 17) 각 D값에 따른 ISE Error는 위와 같다 (그림 17). 따라서, ISE Error를 적정수준으로 유지하 면서, 오버슈트가 적정한 D값은 0.1이라고 판단된다. 따라서, 내가 설계한 적정한 PID 수치는 아래와 같다. (그림 18) (그림 18) 그에 따른 출력값을 Simulink로 표현하면 아래와 같다. (그림 19) (그림 19) 위 그림을 통하여, ISE Error를 적정 수준으로 유지하면서, 출력값이 초기에 비해 좋아진 것 을 확인 할 수 있다. 3. 결론 결과 이번 프로젝트의 목표는, PID 제어기를 이용하여 Indexing panel의 바늘을 일정 시간 간격 으로 움직이게 하는 것이였다. 이를 해결하기 위하여 처음으로 PID 제어 튜닝 방법중 Z-N tuning rule을 적용하였지만, 사용조건에 부합하지 않아 1,2 방법 모두 사용할 수 없었고, 결 국 Matlab simulink 내에 기능 중 하나인 자동 조정을 통하여 PID 제어를 진행하였다. 하지 만, 자동으로 제어한 값도 오버슈트가 일어나 원하는 결과를 도출하지 못하였으며, 따라서 D 값을 적정수준으로 조절하는 과정을 통하여 오버슈트도 적정수준으로 조절하였다. 느낀 점 이번 프로젝트를 통하여, 특정 Plant에 대하여 내가 원하는 오버슈트, Error , 정착시간 등 에 맞게 Matlab과 simulink를 통하여 PID 설계를 할 수 있고, 이를 어떻게 설계하면 좋을지 알았으며, PID 설계에서 각 P, I, D가 설계에 어떤 영향을 미치는지 Matlab을 통하여 직접 눈으로 볼 수 있었다. 이를 통하여, 기계과에서 중요하다고 알려진 제어를 어떻게 하면 내가 원하는 대로 설계할 수 있는지 알아보는 좋은 프로젝트였다고 생각한다. 4. 참고문헌 현대제어공학(제 5판)-Katsuhiko Ogata, 강철구 외 4인 옮김 5. 부록 5-1 Matlab 코딩 5-2 Simulink