사실 PID제어기 설계법을 배워도 치밀한 계산에 의해 적용하기는 참 힘들때가 있습니다. MATLAB에서는 PID 제어기 블럭이 강력한 튜닝(Tunning)기능을 가지고 있는데요. 이것을 이용하면 제어기 튜닝이 정말 간편합니다.


위의 블럭을 Simulink에서 꾸며보죠. 분모의 근이 1,5라서 불안정한 시스템입니다. 실행해서 결과를 보면


이렇게 발산해버리시거든요^^


시뮬링크 라이브러리에 Continuous 폴더에 보시면 PID Controller가 있습니다. 이걸 가져다가


이렇게 붙여보도록 하죠.






그 PID 블럭을 더블클릭해서 보면, PID, PI, PD, P, D, I 제어기중 하나를 선택할 수 있는곳과 연속시간인지 이산시간인지 선택할 수 있도록 되어있습니다. 또한


PID Advanced탭에서는 출력 제한을 걸수 있도록 지원하며 Anti-windup까지 지원하고 있습니다.


Look under mask 기능으로 PID 블럭 내부를 보면, 위와 같이 전형적인 PID 제어기의 모습을 하고 있네요. Help에 등록되어있는 수식은


입니다.








오늘 할려고 하는 본론인 Tune... 버튼 보이시죠???


그럼 저런 창이 하나 뜹니다. 그 창 위쪽 오른편에 있는 Show Parameters 까지 누르면


현설정에 따른 PIDN 수치가 나타납니다. 아래 표시된 응답시간을 조절해서 응답형태를 눈으로 바로바로 확인하면서 게인을 맞춰볼 수 있습니다.



또 젤 위쪽에 Basic을 누르시면


확장메뉴를 지원하는데요. Bandwidth와 Phase Margin을 슬라이드바로 조절할 수도 있습니다.


혹은 위에 표시된 곳을 눌러서 Open-loop bode plot, 혹은 니콜스챠트를 눈으로 보면서 튜닝이 가능합니다.


적절한 곳에서 OK를 하시면, 저렇게 PID 게인을 입력하는 곳에 튜닝된 게인으로 업데이트되어있음을 확인할 수 있습니다.






뭐 당연하겠지만, 시뮬레이션 결과입니다.^^

http://pinkwink.kr/trackback/313 관련글 쓰기
  • 모피우스 2010/05/23 08:18

    어떤 것인지이해할 수 없지만 재미있고 놀라운 것 같습니다.

    • PinkWink 2010/05/23 13:00

      사실 뭐 저도 잘 안다고 보긴 어렵습니다..
      그냥 흉내만...^^

  • 핑구야 날자 2010/05/23 09:36

    여러번의 실험변경으로 좋은 튜닝결과를 얻은 것 같아요

    • PinkWink 2010/05/23 13:01

      필요한 사람에게만 필요한 글이긴하지만,
      PID 튜닝을 실험치에서 자주 수행해야하는 경우 상당히 유용한 툴입니다.^^

  • 엘리 2010/05/25 01:22

    정말 대박 정보 ㄳ 드립니다
    저도 simulink통해서 사용해 보앗는데 몰랏던 기능이 많네요^^
    항상 좋은 정보 알려주시고 진심으로 감사드립니다 ^^(싸부이십니다)
    저도 벨런스 로봇 작업중인데 잘만들어서 자랑할게요 ^^ㅋㅋㅋㅋ

    • PinkWink 2010/05/25 03:54

      네.. 화이팅입니다... MATLAB의 기능을 단지 소개하는 글이라 내용은 엄밀히 말하면 help의 수준에도 미치지 못하는 글입니다. 그래도 도움이 되었다니 저도 기쁩니다.

  • 씨몽이 2010/06/08 01:54

    PID 튜너 클릭시 The value of the inputname. property must be a string vector with as many entries as inputs. Type ~ 이런 오류창이 뜨면서 PID튜너가 재생이 안되는데 무슨 오류일까요?ㅠ

    • PinkWink 2010/06/08 14:15

      제가 저 PID 튜닝 기능을 처음 익힐 때 한번 본듯한데... 기억이 잘 나질 않네요... ㅠㅠ
      (이 몹쓸 기억력....ㅠㅠ)
      지금 MATLAB이 깔려있는 PC가 없어 확인해보질 못하고 있는데 말이죠...ㅠㅠ

  • 씨몽이 2010/06/08 14:58

    혹시 조금이 걸리더라도 저 오류가 어떤사항에서 발생되는건지 알수없을까요?........ 부족한 영어 실력탓도 실력탓이지만ㅠ 매트랩에 입문하게 된것도 이틀도 안되서 말이죠;;;^^

    • PinkWink 2010/06/08 15:16

      Tune 기능을 사용하지 않고, PID블럭만 연결한 상태에서 시뮬레이션이 에러 없이 구동되는지를 먼저 확인해 보세요. 일단 생각나거나 만나게 되면 말씀드리겠습니다.^^

  • 씨몽이 2010/06/11 11:46

    튠기능 없이 시뮬레이션은 구동되서,, 적절한 값을 찾기는 하였는데;;
    Tune기능은 아직도 말성이네요 ㅠ ㅠ

  • donc 2010/06/28 10:41

    뜬금없이 물어봐서 죄송합니다만; 버전이 몇에서 되는건가요?? 전 R2009a쓰는데 PID블럭을 더블클릭해도 쥔장님같은 창이 안뜨고 PID파라미터 3개 조정하는거 달랑 3개 뜨네요 ㄷㄷ

    • PinkWink 2010/06/28 11:32

      제가 알기론.. 이 포스팅에서처럼 PID 블럭에 튜닝기능이 탑재된것은 R2009b 버젼부터로 알고 있습니다.^^

    • donc 2010/06/28 13:31

      앗~ 감사합니다 ㅎㅎ

    • PinkWink 2010/06/28 13:52

      네... 기분좋은 일주일 시작하세요^^

  • 파산 2010/07/07 19:48

    안녕하세요^^ 포스팅 보다가 궁금한게 생겨서 질문남깁니다. PID 제어기에 입력을 두개로 받고 싶은데 look under mask 내부의 PID 제어기를 수정해도 괜찮은것인지요?

    • PinkWink 2010/07/08 03:20

      혹..?? 그렇게는 사용할려고 안해봤는데요..^^
      그러나 상관없을겁니다.
      수정했다고 해서 기존의 라이브러리에 영향을 미치는 것도 아닐테니 말이죠^^

  • 제어 2010/07/21 19:38

    저는 매트랩 7.6.0 사용중인데요

    왜 게인값 조정만 나오죠 ㅠㅠ 안티 와이드업 써야하는데 쩝

    • PinkWink 2010/07/21 19:47

      글쎄요. 잘 모르겠습니다. 전 2009b 버젼을 사용중이라서요...

  • 제어 2011/03/16 20:22

    매트랩 아무것도 모르는데요 ㅡ,,ㅜ
    PID제어에 대해 시뮬레이션해서 설명하려고 하다가 이곳 까지 왔습니다.
    님 하신데로 시뮬레이션 가능하다면... 프로그램주실수 있는지요?
    부탁드립니다. (kissme1064@naver.com)

    • PinkWink 2011/03/17 08:50

      프로그램을 달라는건 무슨말씀이신지요?

  • 알고싶어요!ㅜ ㅜ 2011/05/20 20:19

    tuner 설정에서 phase랑 b/w 값을 조절하는 부분이
    시스템 전체(plant, control, k...) 컨트롤 조건을 대변하는 것인가요
    아니면 PID 컨트롤 자체 조건을 대변하는 것인가요...

    • PinkWink 2011/05/21 14:10

      먼저 무척 죄송합니다. 질문하신 내용중에서

      시스템 전체의 컨트롤 조건을 대변한다..는 말과
      PID 컨트롤 자체 조건을 대변한다...는 말의 뜻이 무엇인가요...??

      (사실.. 제가 막 배운 사람이라.. 고급 용어에 좀 약하거든요...^^)

      뭐 당연히 PID 제어기 블럭일 뿐입니다. PID 제어기가 작동할 시스템은 제어기 근처에 붙어있겠죠...

      그러나 PID제어기가 붙어버리고, 그로부터 본 시스템에서 궤환되어 PID제어기에 들어갈테니 PID 제어기의 제어기 설정값을 바꾼다는 것은

      이 경우에는 시스템과 제어기를 포함 전체 시스템의 응답 특성을 조절하게 되는 것입니다.

      (이걸 질문하신 것 맞나요???)

    • 알고싶어요!ㅜ ㅜ 2011/05/23 00:44

      감사합니다^- ^

    • PinkWink 2011/05/23 07:56

      도움이 된건 맞나요??

  • 왕초보군 2011/06/07 17:53

    좋은정보 감사드립니다.

    질문 하나만 드리겠습니다.
    만약에 전달함수가 z transform 형태로 discrete 된것이라도
    상관없이 작동하나요?

    • PinkWink 2011/06/07 18:25

      (절대.. 정확하지 않습니다. 안해봐서요..ㅠㅠ)
      가능한것으로 알고 있습니다. 블럭 세팅에서 이산시간영역에 대한 설정을 본 것 같습니다만...

  • 바람 2011/11/17 19:30

    매번 여러가지 콘텐츠에 대한 정보를 여기서 참조하고 있습니다. 항상 좋은 정보 감사드립니다

  • 구구이 2011/11/22 14:34

    궁금한 점이 있어서 질문을 합니다^^
    위에서 미분기에 왜 필터가 있는지 궁금합니다. 그리고 만약 PID블록을 사용하지 않고 그냥 미분기와 적분기로 구성을 했을 경우 위와 같이 미분기 부분에 필터를 달아주어야하는것인가요?? 그냥 du/dt 블럭을 달아주면 위의 구성이랑 다른 결과가나오나요???

    • PinkWink 2011/11/22 15:42

      미분기에 달려있는 것은
      미분 결과가 어떤 노이즈같은 성분에 의해
      급작스런.. 예를들면 무한대처럼 아주 큰 값 같은 것을 방어하기 위한 것입니다.

  • 2011/12/02 01:11

    비밀댓글입니다

    • PinkWink 2011/12/02 07:13

      제 블로그에서는 블로그를 통한 대화를 제외하고는 다른 것은 사용하지 않습니다

  • ㅇㅇ 2012/03/23 21:30

    아 하느님이시네요 하느님

    • PinkWink 2012/03/24 17:39

      그럴리가요.. 조금씩 따라해보시면 아주 쉽다는 것을 아실 수 있습니다.

  • TAHOT 2012/05/22 20:58

    아아아 ㅠㅠ 찾던것 ㅠㅠ 감사해요 아아 ㅜㅜ

  • ㅇㅇ 2012/06/06 03:49

    하느님 안녕하셨어요 ㅋㅋㅋ
    질문이 있는데 PID 게인 옆에 있는 filter coefficient (N) 가 어떤 값인가요? @_@@

    • PinkWink 2012/06/07 09:31

      그것은 위쪽 그림들 중에 PID블럭의 내부블럭도를 보여주는 그림에 보면 미분기쪽에 붙어있습니다. 사실상 미분기를 사용하는 경우 그 결과가 갑자기 어마어마하게 튀는 경우가 있습니다. 이를 막기위해 미분기 뒤에 다시 필터하나가 붙는데요. 그것에 사용되는 계수값입니다.

    • ㅇㅇ 2012/06/21 20:46

      아하ㅏㅏㅏ

      역시


      감사합니다 ~ 많은 도움을 얻고 있습니다 ㅎㅎ

    • PinkWink 2012/06/22 11:15

      네.. 다행입니다.^^

  • okok 2013/04/28 15:23

    매트랩을 처음 시작해서 그러는데 시뮬링크 들어가는 경로 알수있을까요?
    그리고 알고리즘구현에 참고되는 책이 있으시면 알려주시면 정말감사드려요~ㅜ

    • PinkWink 2013/04/30 19:52

      아이콘을 누르셔도 되고 command window에서 simulink라고 입력하셔도 됩니다.

  • dark 2013/05/08 00:06

    매트랩 버전에 따라 PID controller가 없을 수도 있나여? 들어가라는데로 따라 들어갓는데 없네여ㅠㅠ

    • PinkWink 2013/05/08 09:00

      앗 글쎄요.. 그건 저도 잘 모르겠네요.. ㅎㅎ

  • GHIGI 2013/05/20 13:55

    안녕하십니까 ? 자료 감사히 봤습니다. 이걸 통해서 PID제어를 하는데 밸런싱로봇 만들때 이 제어한 것을 어떻게 적용을 시켜야 하는걸까요 ?. PIC를 사용하고 있는데 거기서 받은 값을 매트랩으로 값을 받아 PID 튜닝 한후에 그 튜닝 한걸 다시 로봇에 적용해야되는데 그걸 어떻게 해야되느지 모르겠네요. PID회로를 아날로그로 만들어서 저기서 얻은 P,I,D의 값을 적용 해야되는건가요 ? PIC에 매트랩에서 돌린 PID제어기를 넣을 수 있나요 ?

    • PinkWink 2013/05/21 19:53

      PID 튜닝은 동역학을 바탕으로 시뮬레이션 상에서 수행하시고, 그 결과인 PID Gain값을 실제 제품에 적용해보는 것으로 순서를 잡으시는게 정상적이지 않을까합니다.

  • rrnsk 2013/06/17 16:38

    안녕하세요 좋은글 감사합니다..
    그런데 제가 질문이 하나 있는데 제가 학교에서 ㅂ배울때는 PID 컨트롤에 filter coefficient N값은 없었거든요... N의 역할이 무엇인가요? 그냥 무시할수 있는것인지 궁금합니다,.,ㅜㅜㅜ

    • PinkWink 2013/06/17 16:54

      네~ 아주 간단한 저역통과필터로 보시면 됩니다.
      미분기 같은 경우 시스템에 노이즈가 많으면,
      노이즈를 증폭하는 나쁜 습관이 있거든요.
      (당연한 이야기지만^^)
      그래서 그런 노이즈 성분을 살짝 걸러주는 역할을 하게 됩니다.

1 ... 20 21 22 23 24 25 26 27 28 ... 59