본문 바로가기

Simulink/Cannon Ball

Simulink Cannon Ball example

Simulink Cannon Ball Simulation example


중력가속도에 의해 낙하할 때 시간과 속도, 시간과 거리의 관계를 모델링하고 그래프로 확인함

CannonBall_01.mdl


아래의 모델링은 포탄의 상하(수직)속도, 즉 Y축 방향의 속도와 이동거리를 시뮬레이션하기 위한 것이다


적용된 공식

공기저항 : −0.02 v |v|

F = ma



위의 모델링에서 첫번째 Integrator는 가속도를 적분하여 속도를 계산하는 기능을 하는데 초기 속도(수직상승속도)를 100으로 설정하고 시뮬레이션을 실행하면 결국 시간이 지난 후에 포탄이 다시 지면으로 떨어지기까지 몇초나 걸리는지 알 수 있다.

첫번째 Integrator 를 더블클릭하여 Initial Condition 항목에 100을 입력하고 시뮬레이션을 실행하면 다음과 같은 그래프를 얻을 수 있고 공중으로 100 속도로 발사된 포탄은 약 13초 후에 다시 지면에 떨어진다는 것을 확인할 수있다 




포탄이 발사될 때는 수직방향(Y 축방향) 뿐만이 아니라 X축방향의 성분도 포함되기 때문에 중력가속도와 속도는 벡터로 표시할 수 있어야 하며 Simulink에서는 다음과 같이 벡터로 초기값을 입력할 수 있다

-0.981 은 벡터로 표시할 때 [0 -0.981] 으로 입력하고

속도(v)는 [100 100] 와 같은 형식으로 입력하면 된다

위치(y) 는 Y축만 표현하는 것이 아니라 이제부터 X축도 함께 표시해야 하므로 초기 값을 [0 0]으로 입력한다

위와 같이 속도와 위치를 벡터로 입력한 후에 다시 시뮬레이션을 실행해보면 다음과 같은 그래프가 출력된다


속도와 위치를 벡터로 입력한 후에 실행한 결과 그래프 ( yellow -> x, magenta-> y )



XY Graph를 이용하여 XY 값의 변화를 출력하고 |u| 블럭을 수정하여 벡터의 크기를 계산하여 스칼라 값으로 출력하도록 한다

벡터에서의 절대값은 sqrt ( x^2 + y^2 ) 으로 구할 수 있기 때문에 Math Function(sqare), Add, Sqrt 블럭을 사용하게 되었다. 수정하지 않고 사용하면 벡터의 절대값은 [ |x| |y| ] 와 같은 방법으로 계산되어 스칼라 값이 아닌 벡터로 출력되는 오류가 발생한다.

연결선 중에서 벡터로 전달되는 부분이 굵게 표시되도록 하려면, Format > Port/Signal Displays > Wide Nonscalar Lines 항목을 선택하면 된다



CannonBall_01.mdl