시스템 시뮬레이션 연재 목차

1. 라그랑지 방법을 이용한 동역학 모델 구축하기 [바로가기]
2. DC 모터의 동역학 포함시키기 [바로가기]
3. MATLAB을 이용하여 시뮬레이션 구축하기 [바로가기]
4. 시스템의 선형화 [바로가기]
5. LQR 기법을 이요한 선형제어기 설계하기 [바로가기]
6. 경로추적 [바로가기]

사실 이 글을 연재중에 따로 넣을까 말까 고민을 좀 하긴 했는데요. 내용상 구분되는 내용이라 짧지만 그냥 올리겠습니다.




지난번에 라그랑지 방정식에 DC 모터의 방정식까지 넣어서 구축한 비선형 모델입니다.


흔히 MATLAB/Simulink를 이용해서 많이 시뮬레이션을 하죠. 그것에 따라 시뮬레이션을 해보면


위와 같이 꾸며집니다.



 Intergrator1번에 초기치를  1 라디안으로 설정하고, 제어입력을 '0'으로 만들면


위와 같이 자유운동하는 그래프를 얻을 수 있습니다.



Simulink를 구성하는 방법과 미분방정식을 구성하는것은

의 글들을 확인해야합니다.



http://pinkwink.kr/trackback/358 관련글 쓰기
  • 핑구야 날자 2010/08/11 13:13

    자유운동 오랜만에 들어보는군요,.,.

    • PinkWink 2010/08/11 14:22

      네... 아마 어제 제가 세미나했던 친구들도 오랜만에 들어본 내용이었을겁니다. ㅎㅎㅎ^^

  • 선우대현 2010/08/17 23:16

    이번에 inverted pendulum 공부하면서 많은 도움을 얻어갑니다.

    감사의 말씀을 드리며 한가지 여쭤보고 싶은게 있어 이렇게 글을 남깁니다.


    function 안에 변수 값을 a , b ,c 등으로 주셨는데 그림을 보면 다이어그램 아래에 파란 글씨로 변수값을 지정하셨는데 이것은 어떻게 하는 것입니까?


    무식하게 계산하려니 자꾸만 틀려서 PID 게인을 구하지 못해 이렇게 도움을 요청합니다

    감사합니다 ^^

    • PinkWink 2010/08/18 00:47

      네.. Annotation이라고 하는 기능인데요. http://pinkwink.kr/21 에 설명해 놓았습니다. 아.. 그리고, 보통은 Annotation으로 하지 않고, m-file로 작성해서 m-file 수정하고 실행하고 시뮬링크를 실행하면서 여러가지 시뮬레이션을 많이 합니다.^^

  • 선우대현 2010/08/18 01:34

    앗 빠른 답변 감사합니다

    하지만 annotation 은 말 그대로 참고나 주석에 지나지 않는 군요..

    제가 fcn 에서 지정된 변수의 값을 annotation에서 불러 온 것이라 착각했나봅니다

    m-file로 만들어야 하는 군요 조언 감사드립니다

    • PinkWink 2010/08/18 04:21

      네.. 그렇긴 하지만, 설정을 특별히 걸면, 클릭하면 그 내용이 실행되게 됩니다. 그렇게 해서 저는 사용할때가 많습니다. 그냥 습관입니다...^^

  • 재오리 2010/08/18 16:29

    MATLAB으로 시뮬레이션과 함께 MATLAB으로 symbolic을 이용해서 동역학을 풀어가는 방법도 포스팅 부탁드립니다ㅎ 물론 핑크님 시간이 허락 하실때요

    • PinkWink 2010/08/18 17:47

      네.. 그걸 한번 포스팅할까 하고 생각했는데, 당시 그 프로그램을 만들때도 꽤 고민하면서 만들었어야했는데 대충 만들어서 공개하기가 좀 창피하다는 이유도 있구요. 또 완벽하지가 않고, 약간 중간에 사람이 손을 대야한다는 안타까움도 있어서... 음.. 생각중입니다.^^

  • 공대생 2010/10/21 14:33

    에구 모르고 위에글 삭제해버렷네요.. 수정하다는게 ..ㅜㅜ 다른 질문입니다
    시뮬레이션 궁금해서 문의드립니다.
    보시면 fcn안에 변수가 있는데요 a,b,c 이값은
    밑에 파란색 글씨 파라미터가 연산되어 들어가겟지요

    그런데 fcn안에 들어가도록 파라미터를 어떻게 설정하는지 잘 모르겟네요 m파일 작성해서 돌리면 그냥 들어가는줄 알앗더니 아닌거같고... 궁금합니다~

    • PinkWink 2010/10/23 00:51

      제가 위에 적은 글 그대로를 구현하실려면
      http://pinkwink.kr/21
      를 참조하시면 됩니다.

  • 일렉틱스 2011/03/29 10:20

    공부하다 질문이 있어서 질문드립니다.^^;
    constat = 0, integrator1 = 1을 넣으셨는데 이 값이 의미하는게 어떤 건지 잘 모르겠습니다...값을 좀 바꾸어서 넣어봤는데도 생각하는 것과 다르게 나와서요. 바쁘시겠지만 답변 주시면 감사드리겠습니다.!

    • PinkWink 2011/03/29 12:24

      이 글에서 constant는 어디로 따라가라는 의미를 가지고 있습니다.
      '0'을 주면 '0'으로 따라가고 '1'을 주면 '1'을 따라가는 것입니다.
      Intergrator1의 위치는 초기값을 의미합니다. 시작 위치죠.
      결국 Intergrator1dp '1'이 있고 constant가 '0'이면
      처음은 '1'의 위치였고, 거기서 '0'으로 따라가라는 의미를 가지고 있습니다.

    • 일렉틱스 2011/03/29 14:23

      네 저도 그렇게 이해하고 있었는데요. 예를들어 Integrator1의 초기값을 3으로 주고 constant를 1로 주면 3에서 1로 수렴해 나가야 할텐데 값은 6.5정도에 수렴하는 양상을 보이더라고요...
      참 질문 한가지만 덧붙이자면요 나중에 LQR제어기를 달때 게인 블록 안에 -K * u라고 입력하는게 맞는지요? 값이 나오지 않아서말이죠..ㅠ

    • PinkWink 2011/03/29 14:28

      아.. 제가 순간적으로 착각하고 잘못 말씀드렸네요..ㅠㅠ
      저 블럭에서 constant자리는 원래 동역학식에서 입력전압 v의 자리입니다. 즉, '0'를 가했다는 것은 아무 제어입력을 넣지 않았다는 것이고, '1'을 주었다는 것은 1의 입력을 계속 가한다는 뜻입니다. 아직 제어기가 설계되지 않았거든요...^^

  • 지쇼핑 2011/05/26 05:06

    위에 보고 그대로 따라했는데 문법에러가 나요 ㅠㅠ Fcn에 들어가는 식이 문제라고 나오네요 ㅠㅠ 왜이럴까요 ㅠㅠ

    • PinkWink 2011/05/26 08:01

      a,b,c등의 문자가 정의가 되었는지 확인하시고,
      괄호등을 빼먹진 않았는지 확인하셔야할듯합니다.

  • Victor Choi 2013/03/19 05:40

    따라하다보니 뭔가 좀,,,
    Fnc박스에

    -a*u(1)-b*sin(u(2))+c

    이렇게 넣어야 되지 않을까요.?

    • PinkWink 2013/03/19 11:24

      글쎄요...
      본식은
      -a*dot_theta - b*sin(theta) + C*v
      이죠...
      위 시뮬링크 블럭도에서
      u(1) = theta
      u(2) = dot_tehta
      v = 나중을 위해서 별도 블럭으로 '0'를 넣긴 했지만 하여간 u(3)

      입니다.

      그럼 당연히

      -a*u(2)-b*sin(u(1))+c*u(3)

      가 되어야할 듯 한데요.