이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
간단한 모델 만들기
Simulink®를 사용하여 시스템을 모델링한 후 이 시스템의 역학적 동작을 시뮬레이션할 수 있습니다. 이 튜토리얼에서 간단한 모델을 만드는 데 사용하는 기본 기법은 보다 복잡한 모델에 사용하는 기법과 같습니다. 이 예제에서는 자동차의 단순화된 움직임을 시뮬레이션합니다. 자동차는 일반적으로 가속 페달을 누르고 있는 동안 움직입니다. 페달을 놓으면 자동차가 공회전 상태가 되고 정지하게 됩니다.
Simulink 블록은 입력과 출력 간의 수학적 관계를 정의하는 모델 요소입니다. 이러한 간단한 모델을 만들려면 4개의 Simulink 블록이 필요합니다.
블록 이름 | 블록 용도 | 모델 용도 |
---|---|---|
Pulse Generator | 모델의 입력 신호 생성 | 가속 페달을 표현 |
Gain | 입력 신호에 상수 값 곱하기 | 가속 페달을 누르는 것이 자동차 가속에 어떻게 영향을 미치는지를 계산 |
Second-Order Integrator | 입력 신호를 두 번 적분 | 가속으로 인한 위치 구하기 |
Outport | 신호를 모델의 출력으로 지정 | 구한 위치를 모델의 출력으로 지정 |
이 모델의 시뮬레이션에서는 짧은 펄스를 두 번 적분하여 램프를 구합니다. 결과는 스코프 창에 표시됩니다. 입력 펄스는 가속 페달의 누름 상태를 나타냅니다. 가속 페달을 누른 경우 1이고 누르지 않는 경우 0입니다. 출력 램프는 시작점에서 증가하는 거리입니다.
새 모델 열기
Simulink 편집기를 사용하여 모델을 구축합니다.
MATLAB®을 시작합니다. MATLAB 툴스트립에서 Simulink 를 클릭합니다.
빈 모델 템플릿을 클릭합니다.
Simulink 편집기가 열립니다.
가려짐을 방지하기 위해, Simulink 편집기는 불러온 모델과 경로상의 파일을 확인하고 다음으로 사용 가능한 이름
untitled
,untitled1
,untitled2
등으로 모델을 생성합니다.시뮬레이션 탭에서 저장 > 다른 이름으로 저장을 선택합니다. 파일 이름 텍스트 상자에서 모델의 이름을 입력합니다. 예를 들면
simple_model
을 지정합니다. 저장을 클릭합니다. 파일 확장자.slx
로 모델이 저장됩니다.
Simulink 라이브러리 브라우저 열기
Simulink는 라이브러리 브라우저에서 기능별로 구성된 블록 라이브러리 세트를 제공합니다. 대부분의 워크플로에 공통으로 사용되는 라이브러리는 다음과 같습니다.
Continuous — 연속 상태를 갖는 시스템을 위한 블록
Discrete — 이산 상태를 갖는 시스템을 위한 블록
Math Operations — 대수 방정식 및 논리 방정식을 구현하는 블록
Sinks — 자신에게 연결되는 신호를 저장하고 표시하는 블록
Sources — 모델을 구동하는 신호 값을 생성하는 블록
라이브러리 브라우저를 열려면 Simulink 툴스트립의 시뮬레이션 탭에서 라이브러리 브라우저를 클릭하십시오.
블록 라이브러리를 탐색하려면 라이브러리 트리에서 범주를 확장한 후 기능 영역을 확장하십시오.
사용 가능한 블록 라이브러리를 모두 검색하려면 검색어를 입력하십시오.
예를 들어, Pulse Generator 블록을 찾는다고 가정해 보겠습니다. 검색 상자에 pulse
를 입력한 후 Enter 키를 누릅니다. 라이브러리에서 이름 또는 설명에 pulse
가 있는 블록이 검색되며 라이브러리 브라우저의 검색 결과 탭에 블록이 표시됩니다.
팁
라이브러리 탭을 클릭하여 라이브러리 트리 탐색으로 돌아갈 수 있습니다.
블록에 대한 세부 정보를 가져옵니다. 검색 결과 탭에서 Pulse Generator 블록을 마우스 오른쪽 버튼으로 클릭한 후 Pulse Generator 블록 도움말을 선택합니다. 도움말 브라우저가 열리고 블록에 대한 도움말 페이지가 표시됩니다.
블록은 일반적으로 여러 개의 파라미터를 갖습니다. 블록을 더블 클릭하여 모든 블록 파라미터에 액세스할 수 있습니다.
블록을 모델에 추가하기
모델 구축를 시작하려면 라이브러리를 탐색한 후 블록을 추가하십시오.
Sources
라이브러리에서 Pulse Generator 블록을 Simulink 편집기로 끌어서 놓습니다. Pulse Generator 블록의 복사본이 진폭 파라미터의 값을 입력할 수 있는 텍스트 상자와 함께 모델에 표시됩니다.1
을 입력합니다.파라미터 값은 시뮬레이션이 진행되는 동안 유지됩니다.
동일한 접근 방식을 사용하여 다음 블록을 모델에 추가합니다.
블록 라이브러리 파라미터 Gain Simulink/Math Operations
이득:
2
Second-Order Integrator Simulink/Continuous
초기 조건:
0
Outport Simulink/Sinks
포트 번호:
1
기존 Outport 블록을 복사하고 바로 가기 키를 사용하여 다른 지점에 붙여 넣는 방식으로 두 번째 블록을 추가합니다.
이제 모델에 필요한 블록들이 준비되었습니다.
각 블록을 클릭하고 끌어서 놓는 방식으로 블록을 배치합니다. 블록의 크기를 변경하려면 코너를 끌어서 놓으십시오.
블록 연결하기
출력 포트와 입력 포트 간에 선을 만들어 블록을 연결합니다.
Pulse Generator 블록의 오른쪽에 있는 출력 포트를 클릭합니다.
이 출력 포트와 연결하기에 적합한 모든 입력 포트가 파란색 갈매기 모양 기호 로 표시됩니다.
을 가리켜 연결 큐를 확인합니다.
큐를 클릭하여 신호 흐름의 방향을 나타내는 선과 화살표로 블록을 연결합니다.
Gain block의 출력 포트를 Second-Order Integrator 블록의 입력 포트에 연결합니다.
Second-Order Integrator 블록의 두 출력을 Outport 블록 2개에 연결합니다.
모델을 저장합니다. 시뮬레이션 탭에서 저장을 클릭합니다.
신호 뷰어 추가하기
시뮬레이션 결과를 보려면 첫 번째 출력을 Signal Viewer에 연결하십시오.
신호를 클릭합니다. 시뮬레이션 탭의 준비 부분에서 뷰어 추가를 클릭합니다. Scope를 선택합니다. 신호에 뷰어 아이콘이 나타나고 스코프 창이 열립니다.
이 아이콘을 더블 클릭하여 언제든지 스코프를 열 수 있습니다.
시뮬레이션 실행하기
시뮬레이션 중지 시간을 지정합니다. 그런 다음 모델을 시뮬레이션합니다.
시뮬레이션 탭에서 시뮬레이션 중지 시간을 설정합니다. Simulink 툴스트립의 시뮬레이션 탭에서 중지 시간 필드에 값을 입력합니다.
디폴트 중지 시간
10.0
은 이 모델에 적합합니다. 이 시간 값에는 단위가 없습니다. Simulink에서 시간 단위는 방정식이 생성된 방식에 따라 달라집니다. 이 예제에서는 자동차의 단순화된 움직임을 10초 동안 시뮬레이션합니다. 다른 모델에서는 시간 단위가 밀리초 또는 연 단위일 수 있습니다.시뮬레이션을 실행하려면 실행 을 클릭하십시오.
시뮬레이션이 실행되고 Scope 뷰어에 출력이 생성됩니다.
모델 미세 조정하기
블록 파라미터 변경하기
이 예제에서는 기존 모델 moving_car.slx
를 가져와 이 움직임 모델을 기반으로 하여 근접 센서를 모델링합니다.
이 시나리오에서는 디지털 센서가 자동차와 초기에 10m(30ft) 떨어져 있는 장애물 간의 거리를 측정합니다. 모델은 다음 조건을 고려하여 센서 측정값과 자동차의 위치를 출력합니다.
자동차는 장애물에 도달하면 강제 정지(hard stop)한다.
실제 환경에서는 센서가 거리를 부정확하게 측정하여 수치적 랜덤 오차가 발생한다.
디지털 센서는 고정 시간 간격으로 작동한다.
먼저 moving_car
모델을 엽니다. MATLAB 명령줄에 다음을 입력하십시오.
open_system('moving_car.slx');
첫 번째로 자동차 위치가 10
에 도달하면 발생하는 강제 정지를 모델링해야 합니다. Integrator, Second-Order 블록에 이러한 용도의 파라미터가 있습니다.
Integrator, Second-Order 블록을 더블 클릭합니다. 블록 파라미터 대화 상자가 나타납니다.
x의 제한을 선택하고 x의 상한에
10
을 입력합니다. 파라미터의 배경색이 변경되어 모델에 적용되지 않은 수정 사항임을 나타냅니다. 확인을 클릭하여 변경 사항을 적용하고 대화 상자를 닫습니다.
새 블록 및 연결 추가하기
장애물로부터의 거리를 측정하는 센서를 추가합니다.
모델을 수정합니다. 필요한 경우 새 블록을 수용하도록 모델 창을 확장합니다.
실제 거리를 구합니다. 장애물 위치와 차량 위치 간의 거리를 구하려면
Math Operations
라이브러리에서 Subtract 블록을 추가하십시오. 또한Sources
라이브러리에서 Constant 블록을 추가하여 장애물의 위치로 상수 값10
을 설정합니다.실제 센서에 일반적으로 나타나는 불완전한 측정값을 모델링합니다.
Sources
라이브러리에 있는 Band-Limited White Noise 블록을 사용하여 잡음을 생성합니다. 잡음 전력 파라미터를0.001
로 설정합니다.Math Operations
라이브러리에 있는 Add 블록을 사용하여 측정값에 잡음을 더합니다.0.1초마다 실행되는 디지털 센서를 모델링합니다. Simulink에서 주어진 간격으로 신호를 샘플링하려면 샘플 앤 홀드를 수행해야 합니다.
이산
라이브러리에서 Zero-Order Hold 블록을 추가합니다. 블록을 모델에 추가한 후 샘플 시간 파라미터를0.1
로 변경합니다.센서 출력에 연결할 Outport를 하나 더 추가합니다. 포트 번호 파라미터의 디폴트 값을 유지합니다.
새 블록들을 연결합니다. Second-Order Integrator 블록의 출력이 이미 다른 포트에 연결되어 있습니다. 해당 신호의 분기를 만들려면 신호를 마우스 왼쪽 버튼으로 클릭하여 연결 가능한 포트가 강조 표시되도록 한 다음, 적절한 포트를 클릭하십시오.
신호에 주석 달기
신호 이름을 모델에 추가합니다.
신호를 더블 클릭하고 신호 이름을 입력합니다.
입력을 마치려면 텍스트 상자 외부를 클릭합니다.
이 단계를 반복하여 아래와 같이 이름을 추가합니다.
여러 개의 신호 비교하기
actual distance
신호를 measured distance
신호와 비교합니다.
Scope Viewer를 만들어
actual distance
신호에 연결합니다. 신호를 마우스 오른쪽 버튼으로 클릭하고 뷰어 만들기 및 연결 > Simulink > Scope를 선택합니다. 신호의 이름이 뷰어 제목에 표시됩니다.measured distance
신호를 동일한 뷰어에 추가합니다. 신호를 마우스 오른쪽 버튼으로 클릭하고 뷰어에 연결 > Scope1을 선택합니다. 이전 단계에서 만든 뷰어에 연결하고 있는지 확인합니다.모델을 시뮬레이션합니다. Scope 뷰어에
actual distance
(노란색)와measured distance
(파란색)라는 2개의 신호가 표시됩니다.그래프를 확대하여 잡음과 샘플링의 효과를 확인합니다. 확대/축소 를 클릭합니다. 마우스 왼쪽 버튼을 클릭하고 끌어서 더 자세히 보려는 영역 주위에 상자를 그립니다.
세부 정보를 확인하기 위해 필요에 따라 이 작업을 반복할 수 있습니다.
이 플롯은 측정값이 실제 값과 0.3m까지 차이가 날 수 있다는 점을 보여줍니다. 이 정보는 충돌 경고와 같은 안전 기능을 설계할 때 유용합니다.
참고 항목
블록
- Pulse Generator | Gain | Second-Order Integrator | Add | Constant | Zero-Order Hold | Band-Limited White Noise