이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
전역적으로 데이터 공유하기
전역 데이터를 사용해야 하는 경우
다음과 같은 경우 MATLAB Function 블록에 전역 데이터를 사용해야 할 수 있습니다.
전역 변수를 사용하는 여러 개의 MATLAB® 함수가 있고 MATLAB Function 블록에서 이러한 함수를 호출하려는 경우.
대규모 전역 데이터를 사용하는 기존 모델이 있고 이 모델에 MATLAB Function 블록을 추가하려고 하며, 이때 모델에 추가 입력과 출력이 추가되는 것을 방지하려는 경우.
데이터의 가시성 범위를 모델의 일부로 지정하려는 경우.
MATLAB Function 블록에서 전역 데이터 사용하기
Simulink®에서는 데이터 저장소 메모리를 사용하여 전역 데이터를 저장합니다. 데이터 저장소 메모리는 Data Store Memory 블록 또는 Simulink.Signal
객체를 사용하여 구현합니다. 전역 데이터를 저장하는 방식은 전역 변수의 개수와 범위에 따라 다릅니다. 자세한 내용은 Local and Global Data Stores 항목과 전역 데이터를 저장하는 방식 선택하기 항목을 참조하십시오.
MATLAB 전역 데이터가 데이터 저장소 메모리에 연결되는 방식
Simulink의 MATLAB 함수에서 global 선언은 MATLAB 전역 작업 공간에 매핑되지 않습니다. 대신, 사용자가 전역 데이터를 MATLAB Function 블록에 등록하여 데이터를 데이터 저장소 메모리에 매핑합니다. 이러한 차이점은 MATLAB 함수의 전역 데이터가 Simulink 솔버와 상호 운용하고, 잘못 사용될 경우 진단을 제공할 수 있도록 합니다.
전역 변수는 모델에서 같은 이름을 갖는 가장 가까운 데이터 저장소 메모리로 계층적으로 연결이 맺어집니다. 두 개의 다른 MATLAB Function 블록에서 발생하는 동일한 전역 변수는 모델의 계층에 따라 다른 데이터 저장소 메모리로 연결이 맺어질 수도 있습니다. 이 기능을 사용하여 데이터의 가시성 범위를 서브시스템으로 지정할 수 있습니다.
MATLAB Function 블록에서 전역 데이터를 사용하는 방식
MATLAB Function 블록이나 이 블록이 호출하는 임의의 코드에서 전역 데이터를 사용하려면 다음을 수행해야 합니다.
MATLAB Function 블록이나 MATLAB Function 블록이 호출한 임의의 코드에서 전역 변수를 선언합니다.
전역 변수와 동일한 이름을 갖는 Data Store Memory 블록 또는
Simulink.Signal
객체를 MATLAB Function 블록에 등록합니다.
자세한 내용은 Data Store Memory 블록을 사용하여 데이터 저장하기 항목과 Simulink.Signal 객체를 사용하여 데이터 저장하기 항목을 참조하십시오.
전역 데이터를 저장하는 방식 선택하기
다음 표에는 Data Store Memory 블록 또는 Simulink.Signal
객체를 사용할지 여부가 요약되어 있습니다.
원하는 작업 | 사용할 블록 또는 객체 | 참조할 항목 |
---|---|---|
모델 참조를 사용하지 않는 단일 모델에서 적은 수의 전역 변수 사용. | Data Store Memory 블록. 참고 Data Store Memory 블록을 사용하면 데이터 범위가 모델로 지정됩니다.
| Data Store Memory 블록을 사용하여 데이터 저장하기 |
모델 참조를 사용하지 않는 단일 모델에서 많은 수의 전역 변수 사용. | 모델 작업 공간에 정의된
| Simulink.Signal 객체를 사용하여 데이터 저장하기 |
참조된 모델을 포함하여 여러 모델 간에 데이터 공유. | 기본 작업 공간에 정의된 참고
| Simulink.Signal 객체를 사용하여 데이터 저장하기 |
Data Store Memory 블록을 사용하여 데이터 저장하기
이 모델은 MATLAB Function 블록이 Data Store Memory 블록 A
에 저장된 전역 데이터를 사용하는 방식을 보여줍니다.
dsm_demo.mdl 모델을 엽니다.
MATLAB Function 블록을 더블 클릭하여 MATLAB Function 블록 편집기를 엽니다.
MATLAB Function 블록 코드가 전역 변수
A
를 선언합니다. 블록은 각 실행마다A
의 값을 수정합니다.function y = fcn %#codegen global A; A = A+1; y = A;
전역 변수가 MATLAB Function 블록에 등록되어 있는지 확인합니다. Create and Define MATLAB Function Block Variables 항목을 참조하십시오.
모델링 탭의 설계 섹션에서 기호 창을 클릭합니다.
기호 창에서 데이터 A를 선택합니다. 이 데이터는 전역 변수와 동일한 이름을 사용합니다. 마우스 오른쪽 버튼을 클릭하고
검사...
를 선택하여 속성 인스펙터를 엽니다.속성 인스펙터에서 데이터의 범위가
Data Store Memory
로 설정되어 있습니다.
Data Store Memory 블록
A
를 더블 클릭합니다. 블록 파라미터 대화 상자에서 데이터 저장소 이름A
가 전역 변수 이름과 일치하는 것을 확인할 수 있습니다. 블록의 초기값은25
입니다.모델에 Data Store Memory를 추가할 경우 다음을 수행합니다.
데이터 저장소 이름을 MATLAB Function 블록 코드에 있는 전역 변수의 이름과 일치하게 설정합니다.
데이터형을 명시적 데이터형으로 설정합니다. 데이터형은
auto
일 수 없습니다.신호 유형을 설정하고 초기값을 지정합니다.
모델을 시뮬레이션합니다.
MATLAB Function 블록은
A
에 저장된 전역 데이터의 초기값을 읽어온 다음 블록이 실행될 때마다A
의 값을 업데이트합니다.
Simulink.Signal
객체를 사용하여 데이터 저장하기
이 모델은 MATLAB Function 블록이 Simulink.Signal
객체 A
에 저장된 전역 데이터를 사용하는 방식을 보여줍니다.
simulink_signal_local 모델을 엽니다.
이 모델은 모델 작업 공간에서
Simulink.Signal
객체를 사용합니다.참고
전역 데이터를 여러 모델에서 사용하려면 기본 작업 공간에
Simulink.Signal
객체를 만드십시오.Simulink.Signal
객체가 모델 탐색기에 추가되었는지 확인합니다.모델링 탭에서 모델 탐색기를 클릭합니다.
모델 탐색기의 왼쪽 창에서
simulink_signal_local
모델의 모델 작업 공간을 선택합니다.내용 창에 모델 작업 공간의 데이터가 표시됩니다.
Simulink.Signal
객체A
를 클릭합니다.오른쪽 창에서 모델 탐색기에
A
에 대한 다음 특성이 표시되는지 확인합니다.특성 값 데이터형 double
실수/복소수 여부 real
차원 1
초기값 5
모델 탐색기도 참조하십시오.
MATLAB Function 블록을 더블 클릭하여 편집기를 엽니다.
MATLAB Function 블록은 실행될 때마다 전역 데이터
A
의 값을 수정합니다.function y = fcn %#codegen global A; A = A+1; y = A;
Simulink.Signal
객체가 MATLAB Function 블록에 등록되어 있는지 확인합니다.모델링 탭의 설계 섹션에서 기호 창을 클릭합니다.
기호 창에서 데이터 A를 선택합니다. 이 데이터는 전역 변수와 동일한 이름을 사용합니다. 마우스 오른쪽 버튼을 클릭하고
검사...
를 선택하여 속성 인스펙터를 엽니다.속성 인스펙터에서 데이터의 범위를
Data Store Memory
로 설정합니다.
모델을 시뮬레이션합니다.
MATLAB Function 블록은
A
에 저장된 전역 데이터의 초기값을 읽어온 다음 블록이 실행될 때마다A
의 값을 업데이트합니다.
데이터 저장소 진단을 사용하여 메모리 액세스 문제 감지하기
데이터 저장소의 문제를 방지하기 위해 런타임 및 컴파일타임 진단을 제공하도록 모델을 구성할 수 있습니다. 진단은 구성 파라미터 대화 상자와 Data Store Memory 블록의 파라미터 대화 상자에서 사용할 수 있습니다. 이러한 진단은 Data Store Memory 블록에만 사용 가능하며, Simulink.Signal
객체에는 사용할 수 없습니다. 데이터 저장소 진단을 사용하는 방법에 대한 자세한 내용은 Data Store Diagnostics 항목을 참조하십시오.
참고
데이터 저장소 메모리 배열을 함수에 전달하는 경우 A=foo(A)
와 같은 최적화로 인해, 코드 생성 소프트웨어가 배열의 일부 요소에만 액세스했더라도 배열의 전체 내용을 읽었거나 쓴 것으로 표시할 수 있습니다.
MATLAB Function 블록에서 공유 데이터 사용 시 제한 사항
다음에 대해 Data Store Memory 블록 지원은 없습니다.
MATLAB 값 클래스
가변 크기 데이터