주요 콘텐츠

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

차트에서 데이터 저장소 메모리에 액세스하기

Simulink® 모델은 전역 변수를 데이터 저장소로 즉, Data Store Memory (Simulink) 블록 또는 Simulink.Signal (Simulink) 객체의 인스턴스로 구현합니다. 데이터 저장소를 사용하여 여러 Simulink 블록 간에 데이터를 공유하여 한 블록에서 다른 블록으로 데이터를 전달할 수 있습니다. Stateflow® 차트는 데이터 저장소 메모리를 기호적으로 읽고 쓰는 방식으로 Simulink 모델과 전역 데이터를 공유합니다.

차트에서 전역 데이터에 액세스하려면 Stateflow 데이터 객체를 Simulink 데이터 저장소에 바인딩합니다. 이 바인딩을 만들고 나면, Stateflow 데이터 객체는 Simulink 데이터 저장소 메모리의 기호 표현이 됩니다. 이제 이 기호 객체를 사용하여 전역 데이터를 저장하고 가져올 수 있습니다. Stateflow는 비유계 차원을 갖는, Simulink의 데이터 저장소에 액세스할 수 있습니다.

로컬 및 전역 데이터 저장소 메모리

Stateflow 차트는 로컬 및 전역 데이터 저장소와 상호 작용할 수 있습니다.

  • 로컬 데이터 저장소는 모델 내의 모든 블록에서 볼 수 있습니다. 로컬 데이터 저장소와 상호 작용하려면 로컬 데이터 저장소를 정의한 모델 내에 차트가 있어야 합니다. Data Store Memory 블록을 모델에 추가하거나 Simulink 신호 객체를 만들어 로컬 데이터 저장소를 정의할 수 있습니다.

  • 전역 데이터 저장소는 모델 참조 경계를 넘는 더 넓은 범위를 갖습니다. 전역 데이터 저장소와 상호 작용하려면 전역 데이터 저장소를 정의한 최상위 모델 내에 차트가 있거나 최상위 모델이 참조하는 모델 내에 차트가 있어야 합니다. 전역 데이터 저장소를 Simulink 신호 객체로 구현하십시오.

자세한 내용은 Local and Global Data Stores (Simulink) 항목을 참조하십시오.

Stateflow 데이터를 데이터 저장소에 바인딩하기

  1. Simulink 데이터 저장소 메모리를 정의하기 위해 Data Store Memory 블록을 모델에 추가하거나 Simulink 신호 객체를 만듭니다. 자세한 내용은 Data Stores with Data Store Memory Blocks (Simulink) 항목과 Data Stores with Signal Objects (Simulink) 항목을 참조하십시오.

  2. Stateflow 데이터 추가하기 항목에 설명된 대로, Stateflow 차트에 데이터 객체를 추가합니다.

  3. 이름 속성을 Stateflow 데이터 객체를 바인딩하려는 Simulink 데이터 저장소 메모리의 이름으로 설정합니다.

  4. 범위 속성을 데이터 저장소 메모리로 설정합니다.

Stateflow 데이터 객체는 객체를 바인딩하는 데이터 저장소 메모리에서 모든 추가 속성을 상속합니다.

한 모델 계층 구조 내에 이름이 동일한 로컬 및 전역 데이터 저장소가 여러 개 존재할 수 있습니다. 이 경우 Stateflow 데이터 객체는 가장 가까운 선조인 데이터 저장소에 바인딩됩니다.

전역 데이터를 저장하고 가져오기

Stateflow 데이터 객체를 Simulink 데이터 저장소에 바인딩한 후, 상태 동작과 천이 동작에서 전역 데이터를 저장하고 가져올 수 있습니다. 이 데이터 객체는 기호 이름으로 참조되는 전역 변수 역할을 합니다. 이 변수에 숫자형 값을 저장하면 Simulink 데이터 저장소 메모리에 쓰게 됩니다. 이 변수로부터 숫자형 값을 가져오면 Simulink 데이터 저장소 메모리에서 읽어오게 됩니다.

예를 들어 다음 차트에서 상태 동작은 myglobal이라는 Data Store Memory 블록에서 읽어오고 그 블록에 씁니다.

데이터 저장소를 사용하는 모범 사례

데이터 저장소 속성 지정하기

Stateflow 데이터 객체를 데이터 저장소에 바인딩하면 Stateflow 객체는 데이터 저장소에서 모든 속성을 상속합니다. Simulink 데이터 저장소를 만들 때 속성을 올바르게 전파하려면 다음을 수행하십시오.

  • auto가 아닌 데이터형을 지정합니다.

  • 자동 모드 속성의 사용을 최소화합니다.

여러 모델에 걸쳐 데이터 저장소 메모리 공유하기

여러 모델에서 전역 데이터 저장소에 액세스하려면 다음을 수행하십시오.

  • 모델이 Data Store Memory 블록을 포함하지 않는지 확인합니다. Data Store Read (Simulink) 블록과 Data Store Write (Simulink) 블록은 포함할 수 있습니다.

  • MATLAB® 기본 작업 공간에서 다음과 같은 특성을 갖는 Simulink.Signal 객체를 만듭니다.

    • 데이터형을 명시적 데이터형으로 설정하십시오. 데이터형이 자동이면 안 됩니다.

    • 차원을 완전히 지정하십시오. 신호 차원이 –1 또는 상속됨이면 안 됩니다.

    • 실수/복소수 여부를 완전히 지정하십시오. 실수/복소수 여부가 자동이면 안 됩니다.

    • 스토리지 클래스ExportedGlobal로 설정하십시오.

  • 데이터를 공유하는 각 차트에서 Stateflow 데이터 객체를 Simulink 데이터 저장소에 바인딩합니다.

읽어오기 전에 데이터 저장소 메모리에 쓰기

알고리즘 대기 시간을 피하려면 읽어오기 전에 데이터 저장소 메모리에 써야 합니다. 그러지 않으면 읽기 동작 시, 현재 시간 스텝에서 계산하여 저장한 값이 아니라 이전 시간 스텝에서 저장한 값을 가져옵니다. 연결되지 않은 블록이 서로 다른 속도로 실행되면서 전역 데이터를 공유하는 경우 다음을 수행하십시오.

  • 읽기 동작을 쓰기 동작과 별개의 블록으로 구분합니다.

  • 모델이 읽기 블록보다 쓰기 블록을 먼저 호출하도록 블록에 우선순위를 할당합니다. 자세한 내용은 Control and Display Execution Order (Simulink) 항목을 참조하십시오.

동일한 시간 스텝에서 의도치 않게 여러 번 읽기와 쓰기가 발생하는 상황을 방지하려면, 다음을 수행하도록 Data Store Memory 블록 진단을 활성화하십시오.

  • 쓰기 전 읽기 감지

  • 읽기 후 쓰기 감지

  • 쓰기 후 쓰기 감지

Data Store Memory 블록을 시간 스텝 간 값을 누적하는 영속 전역 저장 영역으로 사용하는 경우, 불필요한 경고를 피하려면 Data Store Memory 블록 진단을 비활성화하십시오. 자세한 내용은 Data Store Diagnostics (Simulink) 항목을 참조하십시오.

Block parameters dialog box for a Data Store Memory block.

데이터 저장소 하위 요소를 아토믹 서브차트와 아토믹 상자에 매핑하지 않기

Data Store Memory 블록은 자명하지 않은 표현식을 아토믹 서브차트와 아토믹 상자에 매핑하는 것을 지원하지 않습니다. 예를 들어, 데이터 저장소에 버스가 포함된 경우, 버스는 매핑할 수 있지만 버스의 특정 필드는 매핑할 수 없습니다. 매핑에 대한 자세한 내용은 Map Variables for Atomic Subcharts and Boxes 항목을 참조하십시오.

참고 항목

(Simulink) | (Simulink) | (Simulink) | (Simulink)

도움말 항목