Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

MATLAB Function 블록에서 전역 데이터 사용하기

함수 코드에서 전역 변수를 정의하여 MATLAB Function 블록에서 전역적으로 정의된 데이터를 참조할 수 있습니다. 다음과 같은 경우 전역 변수를 사용하십시오.

  • 전역 변수를 사용하는 여러 개의 MATLAB® 함수가 있고 MATLAB Function 블록에서 이러한 함수를 호출하려는 경우.

  • 전역 데이터를 사용하는 기존 모델에 MATLAB Function 블록을 추가하고, 모델에 입력 및 출력이 추가되는 것을 방지하려는 경우.

  • 데이터의 가시성 범위를 모델의 일부로 지정하려는 경우.

Simulink®에서는 Data Store Memory 블록이나 Simulink.Signal 객체를 사용하여 전역 데이터를 저장합니다. 자세한 내용은 Local and Global Data Stores 항목을 참조하십시오.

Data Store Memory 블록의 전역 데이터 사용하기

Data Store Memory 블록을 사용하여 전역 데이터를 정의하고 그 데이터를 MATLAB Function 블록 또는 이 블록이 호출하는 코드에서 사용하려면 다음을 수행하십시오.

  1. MATLAB Function 블록 또는 MATLAB Function 블록이 호출하는 코드에서 전역 변수를 선언합니다.

  2. MATLAB Function 블록에서 전역 변수의 범위 속성을 Data Store Memory로 설정합니다. MATLAB Function 블록에서 변수를 정의하는 방법에 대한 자세한 내용은 Create and Define MATLAB Function Block Variables 항목을 참조하십시오.

  3. 모델에서 Data Store Memory 블록을 만듭니다. 데이터 저장소 이름 파라미터를 전역 변수와 동일한 이름에 할당합니다.

  4. Data Store Memory에서 초기값, 데이터형신호 유형 파라미터를 설정합니다. 데이터형은 상속될 수 없으며 신호 유형은 실수 또는 복소수여야 합니다.

Data Store Memory 블록은 데이터의 범위를 모델로 한정합니다. 각 전역 데이터마다 모델에 Data Store Memory 블록을 추가해야 합니다. Data Store Memory 블록은 MATLAB 값 클래스 또는 가변 크기 데이터를 지원하지 않습니다.

Simulink.Signal 객체의 전역 데이터 사용하기

Simulink.Signal 객체를 사용하여 전역 데이터를 정의하고 그 데이터를 MATLAB Function 블록 또는 이 블록이 호출하는 코드에서 데이터를 사용하려면 다음을 수행하십시오.

  1. MATLAB Function 블록 또는 MATLAB Function 블록이 호출하는 코드에서 전역 변수를 선언합니다.

  2. MATLAB Function 블록에서 전역 변수의 범위 속성을 Data Store Memory로 설정합니다. MATLAB Function 블록에서 변수를 정의하는 방법에 대한 자세한 내용은 Create and Define MATLAB Function Block Variables 항목을 참조하십시오.

  3. 모델 작업 공간 또는 기본 작업 공간에서 Simulink.Signal 객체를 만듭니다. 전역 변수와 동일한 이름을 갖는 변수에 Simulink.Signal 객체를 할당합니다.

  4. Simulink.Signal 객체의 DataType, InitialValueDimensions 속성을 설정합니다. 데이터형은 상속될 수 없으며 신호 유형은 실수 또는 복소수여야 합니다.

Simulink.Signal 객체의 범위를 모델 또는 기본 작업 공간으로 한정할 수 있습니다. 모델 탐색기에서 Simulink.Signal 객체를 정의하거나 MAT 파일에서 불러올 수 있습니다.

전역 데이터를 저장하는 방식 선택하기

전역 데이터를 저장하는 방식은 전역 변수의 개수와 범위에 따라 다릅니다. 다음 표는 Data Store Memory 블록 또는 Simulink.Signal 객체를 사용하는 경우에 대해 설명합니다.

전역 데이터 사용 방법해결 방법
참조된 모델을 사용하지 않는 단일 모델에서 적은 수의 전역 변수를 정의해야 하는 경우.

Data Store Memory 블록.

참조된 모델을 사용하지 않는 단일 모델에서 많은 수의 전역 변수를 정의해야 하는 경우.

모델 작업 공간에 정의된 Simulink.Signal 객체.

참조된 모델을 포함하여 여러 모델 간에 전역 데이터를 공유하는 경우.

기본 작업 공간에 정의된 Simulink.Signal 객체.

Data Store Memory 블록에서 데이터 가져오기

이 예제에서는 MATLAB Function 블록이 Data Store Memory 블록에 저장된 전역 데이터를 사용하는 방법을 보여줍니다.

Data Store Memory 블록 파라미터 보기

파라미터를 보려면 Data Store Memory 블록을 엽니다. 기본 탭에서 데이터 저장소 이름 파라미터는 A입니다. 신호 특성 탭을 엽니다. 이 예제에서 초기값 파라미터는 25, 데이터형 파라미터는 double, 신호 유형은 실수입니다.

MATLAB Function 블록에서 전역 데이터를 사용하려는 경우에는 이들 파라미터를 자동 또는 상속됨으로 설정할 수 없습니다.

MATLAB Function 블록 검사하기

MATLAB Function 블록을 엽니다. 함수 코드는 Data Store Memory 블록 데이터 저장소 이름 파라미터의 이름과 일치하는 전역 변수 A를 선언합니다. 블록은 다음 코드를 사용하여 매 실행마다 A1을 더합니다.

function y = fcn
    global A;
    A = A+1;
    y = A;

변수 A가 블록의 데이터 저장소 메모리를 사용하는지 확인합니다.

  1. 함수 탭의 준비 섹션에서 데이터 편집을 클릭합니다.

  2. 기호 창에서 변수 A를 선택합니다. 속성 인스펙터에 속성이 표시됩니다.

  3. 범위 속성이 Data Store Memory인지 확인합니다.

모델 시뮬레이션하기

모델을 실행합니다. 각 주 시간 스텝에서 블록이 실행됩니다. MATLAB Function 블록의 최종 출력은 76입니다.

Simulink.Signal 객체에서 데이터 가져오기 예제

이 예제에서는 MATLAB Function 블록이 Simulink.Signal 객체에 저장된 전역 데이터를 사용하는 방법을 보여줍니다.

Simulink.Signal 객체 속성 보기

다음과 같이 Simulink.Signal 객체의 속성을 확인할 수 있습니다.

  1. 모델 탐색기를 엽니다. 모델링 탭의 설계 섹션에서 모델 탐색기를 클릭합니다.

  2. 왼쪽 창에서 MLFB_slsignal_model을 확장하고 모델 작업 공간을 클릭합니다. 가운데 창에 모델 작업 공간의 데이터가 표시됩니다.

  3. Simulink.Signal 객체 A를 클릭합니다. 오른쪽 창에 A의 속성이 표시됩니다. 이 예제에서 데이터형double, 차원1, 초기값25, 실수/복소수 여부는 실수입니다.

MATLAB Function 블록에서 전역 데이터를 사용하려는 경우에는 이들 속성을 자동 또는 상속됨으로 설정할 수 없습니다.

MATLAB Function 블록 검사하기

MATLAB Function 블록을 엽니다. 함수 코드는 Data Store Memory 블록 데이터 저장소 이름 파라미터의 이름과 일치하는 전역 변수 A를 선언합니다. 블록은 다음 코드를 사용하여 매 실행마다 A1을 더합니다.

function y = fcn
    global A;
    A = A+1;
    y = A;

변수 A가 객체의 데이터 저장소 메모리를 사용하는지 확인합니다.

  1. 함수 탭의 준비 섹션에서 데이터 편집을 클릭합니다.

  2. 기호 창에서 변수 A를 선택합니다. 속성 인스펙터에 속성이 표시됩니다.

  3. 범위 속성이 Data Store Memory인지 확인합니다.

모델 시뮬레이션하기

모델을 실행합니다. 각 주 시간 스텝에서 블록이 실행됩니다. MATLAB Function 블록의 최종 출력은 76입니다.

데이터 저장소 진단을 사용하여 메모리 액세스 문제 감지하기

Data Store Memory 블록을 사용하는 경우 런타임 및 컴파일타임 진단을 제공하도록 모델을 구성하여 데이터 저장소의 문제를 방지할 수 있습니다. 구성 파라미터 창과 파라미터 창에 Data Store Memory 블록에 대한 진단 정보가 표시됩니다. 데이터 저장소 진단을 사용하는 방법에 대한 자세한 내용은 Data Store Diagnostics 항목을 참조하십시오.

참고

데이터 저장소 메모리 배열을 함수에 전달하는 경우 A = foo(A)와 같은 최적화로 인해, 코드 생성 소프트웨어가 배열의 일부 요소에만 액세스했더라도 배열의 전체 내용을 읽었거나 쓴 것으로 표시할 수 있습니다.

참고 항목

블록

객체

관련 항목