Main Content

Memory

이전 시간 스텝의 입력을 출력

  • Memory block

라이브러리:
Simulink / Discrete
HDL Coder / Discrete

설명

Memory 블록은 하나의 주 적분 시간 스텝만큼 자신의 입력을 유지하고 지연합니다. Iterator Subsystem에 배치된 경우 이 블록은 한 번 반복하는 동안 자신의 입력을 유지하고 지연합니다. 이 블록은 연속 신호 및 이산 신호를 받습니다. 이 블록은 하나의 입력을 받아 하나의 출력을 생성합니다. 각 신호는 스칼라, 벡터, 행렬 또는 N차원 배열일 수 있습니다. 입력이 스칼라가 아닌 경우 블록은 입력의 모든 요소를 같은 시간 스텝만큼 유지하고 지연합니다.

초기 조건 파라미터를 사용하여 첫 번째 시간 스텝에 대한 블록 출력을 지정합니다. 이 파라미터를 신중하게 선택하면 원치 않는 출력 동작을 최소화할 수 있습니다. 그러나 샘플 시간은 지정할 수 없습니다. 이 블록의 샘플 시간은 사용된 솔버 유형에 따라 달라지며, 또는 샘플 시간을 상속하도록 지정할 수도 있습니다. 샘플 시간 상속 파라미터는 샘플 시간을 상속할지 또는 솔버를 기반으로 할지 결정합니다.

다음 조건이 둘 다 참이면 Memory 블록을 사용하지 마십시오.

  • 모델에서 가변 스텝 솔버 ode15s 또는 ode113를 사용합니다.

  • 시뮬레이션 중에 블록에 대한 입력이 변경됩니다.

Memory 블록이 이산 샘플 시간을 상속할 경우 블록은 Unit Delay 블록과 유사합니다. 그러나 Memory 블록은 상태 기록을 지원하지 않습니다. 최종 상태를 기록해야 하는 경우 대신 Unit Delay 블록을 사용하십시오.

유사한 블록 간의 비교

Memory, Unit Delay, Zero-Order Hold 블록은 비슷한 기능을 제공하지만 각각 다른 기능을 가지고 있습니다. 또한, 각 블록의 용도도 다릅니다.

이 표에는 각 블록에 권장되는 사용법이 나와 있습니다.

블록블록의 용도참조 예제
Unit Delay사용자가 지정한 이산 샘플 시간을 사용하여 지연을 구현합니다. 이 블록은 이산 샘플 시간을 사용하는 신호를 받고 출력합니다.
Memory하나의 주 적분 시간 스텝만큼 지연을 구현합니다. 블록이 연속(또는 보조 시간 스텝에서 고정) 신호를 받고 보조 시간 스텝에서 고정 신호를 출력하는 것이 이상적입니다.
Zero-Order Hold연속 샘플 시간을 갖는 입력 신호를 이산 샘플 시간을 갖는 출력 신호로 변환합니다.

각 블록에는 다음과 같은 기능이 있습니다.

기능MemoryUnit DelayZero-Order Hold
초기 조건 지정아니요. 시간 t = 0에서의 블록 출력이 입력값과 일치해야 함.
샘플 시간 지정아니요. 블록은 전체 모델에 사용되는 구동 블록 또는 솔버의 샘플 시간만 상속할 수 있음.
프레임 기반 신호 지원아니요
상태 기록 지원아니요아니요

버스 지원

Memory 블록은 버스를 지원하는 블록입니다. 입력은 다음 제한 사항에 따라 가상 또는 비가상 버스 신호일 수 있습니다.

  • 초기 조건은 0이거나, 0이 아닌 스칼라이거나, 유한한 숫자형 구조체여야 합니다.

  • 초기 조건이 0 또는 구조체이고 사용자가 상태 이름을 지정할 경우 입력은 가상 버스가 될 수 없습니다.

  • 초기 조건이 0이 아닌 스칼라이면 상태 이름을 지정할 수 없습니다.

초기 조건 구조체 지정에 대한 자세한 내용은 Specify Initial Conditions for Bus Elements 항목을 참조하십시오.

Memory 블록에 대한 비가상 버스 입력의 모든 신호는 연결된 bus 객체의 요소가 상속된 샘플 시간을 지정하더라도 동일한 샘플 시간을 가져야 합니다. Rate Transition 블록을 사용하여 개별 신호의 샘플 시간 또는 버스의 모든 신호의 샘플 시간을 변경할 수 있습니다. 자세한 내용은 비가상 버스의 샘플 시간 수정하기 항목과 Bus-Capable Blocks 항목을 참조하십시오.

버스로 구성된 배열을 Memory 블록에 대한 입력 신호로 사용할 수 있습니다. 다음 값으로 초기 조건 파라미터를 지정할 수 있습니다.

  • 0. 이 경우, 버스로 구성된 배열의 모든 개별 신호는 초기값 0을 사용합니다.

  • 버스로 구성된 배열의 각 개별 신호에 대한 초기 조건을 지정하는 구조체 배열.

  • 버스 유형이 정의하는 각 요소에 대한 초기 조건을 지정하는 스칼라 구조체. 배열의 각 버스에 대해 동일한 초기 조건을 지정하려면 이 기법을 사용하십시오.

버스로 구성된 배열의 정의와 사용에 대한 자세한 내용은 Group Nonvirtual Buses in Arrays of Buses 항목을 참조하십시오.

예제

모두 확장

이 예제에서는 Memory 블록과 Clock 블록을 사용하여 시뮬레이션의 스텝 크기를 계산하고 표시하는 방법을 보여줍니다. Sum 블록은 Memory 블록이 생성하는 이전 시간 스텝에서의 시간을 Clock 블록이 생성하는 현재 시간에서 뺍니다.

이 Memory 블록의 경우 샘플 시간 상속이 선택되어 있지 않기 때문에 모델을 시뮬레이션하는 데 있어 블록 샘플 시간은 솔버 유형에 따라 다릅니다. 이 경우, 모델은 고정 스텝 솔버를 사용합니다. 따라서 Memory 블록의 샘플 시간은 솔버 스텝 크기, 즉 1입니다.

Memory 블록을 Unit Delay 블록으로 교체하면 동일한 결과를 얻습니다. Unit Delay 블록은 이산 샘플 시간인 1을 상속합니다.

포트

입력

모두 확장

입력 신호로, 스칼라, 벡터 또는 N차원 배열로 지정됩니다. 입력은 Simulink®가 지원하는 모든 데이터형의 실수 또는 복소수 값을 포함하는 연속 또는 이산 신호일 수 있습니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

출력

모두 확장

출력은 이전 시간 스텝의 입력입니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

파라미터

모두 확장

기본

초기 적분 스텝에서의 출력을 지정합니다. 내장 입력 데이터형을 사용하지 않는 경우 이 값은 0이어야 합니다.

프로그래밍 방식의 사용법

블록 파라미터: InitialCondition
유형: 문자형 벡터
값: 스칼라 | 벡터
디폴트 값: '0'

구동 블록에서 샘플 시간 상속을 선택합니다.

  • 구동 블록에 이산 샘플 시간이 있는 경우 블록은 샘플 시간을 상속합니다.

  • 구동 블록에 연속 샘플 시간이 있는 경우 이 체크박스를 선택해도 효과가 없습니다. 샘플 시간은 모델을 시뮬레이션하는 데 사용된 솔버 유형에 따라 달라집니다.

이 체크박스를 해제하면 블록 샘플 시간은 모델 시뮬레이션에 사용되는 솔버 유형에 따라 달라집니다.

  • 솔버가 가변 스텝 솔버인 경우 블록 샘플 시간은 연속적이지만 보조 시간 스텝 [0, 1]로 고정됩니다.

  • 솔버가 고정 스텝 솔버인 경우 [0, 1] 샘플 시간은 샘플 시간 전파 후 솔버 스텝 크기로 변환됩니다.

프로그래밍 방식의 사용법

블록 파라미터: InheritSampleTime
유형: 문자형 벡터
값: 'off' | 'on'
디폴트 값: 'off'

선형화 및 트리밍 중에 입력을 출력하려면 선택합니다. 이 선택은 블록 모드를 직접 피드스루로 설정합니다.

이 체크박스를 선택하면 함수 linmod, dlinmod 또는 trim을 사용할 때 모델의 상태 순서가 변경될 수 있습니다. 이 새로운 상태 순서를 추출하려면 다음 명령을 사용하십시오.

먼저 다음 명령을 사용하여 모델을 컴파일합니다. 여기서 model은 Simulink 모델의 이름입니다.

    [sizes, x0, x_str] = model([],[],[],'lincompile'); 

그런 다음, 아래 명령을 사용하여 컴파일을 종료합니다.

  model([],[],[],'term'); 

Simulink 모델의 상태로 구성된 셀형 배열인 출력 인수 x_str에는 새로운 상태 순서가 포함됩니다. 상태로 구성된 벡터를 linmod, dlinmod 또는 trim 함수에 대한 입력으로 전달할 경우 상태 벡터는 이 새로운 상태 순서를 사용해야 합니다.

프로그래밍 방식의 사용법

블록 파라미터: LinearizeMemory
유형: 문자형 벡터
값: 'off' | 'on'
디폴트 값: 'off'

Memory 블록이 이산 샘플 시간의 신호로 구동될 경우 Memory 블록을 단위 지연으로 선형화하려면 선택합니다.

프로그래밍 방식의 사용법

블록 파라미터: LinearizeAsDelay
유형: 문자형 벡터
값: 'off' | 'on'
디폴트 값: 'off'

상태 특성

블록 상태에 고유한 이름을 할당하려면 이 파라미터를 사용하십시오. 디폴트 값은 ' '입니다. 이 필드가 공백이면 할당할 이름이 없는 것입니다. 이 파라미터를 사용할 때 다음 사항을 고려하십시오.

  • 유효한 식별자는 영문자 또는 밑줄 문자로 시작하며 그 뒤에 영숫자 또는 밑줄 문자가 이어집니다.

  • 상태 이름은 선택된 블록에만 적용됩니다.

사용자가 적용을 클릭하면 이 파라미터는 상태 이름과 Simulink의 Signal 객체 사이에 연결이 맺어져야 함을 활성화합니다.

자세한 내용은 C Data Code Interface Configuration for Model Interface Elements (Simulink Coder) 항목을 참조하십시오.

프로그래밍 방식의 사용법

블록 파라미터: StateName
유형: 문자형 벡터
값: 고유 이름
디폴트 값: ''

상태 이름이 Simulink signal 객체로 연결이 맺어지도록 하려면 이 체크박스를 선택합니다.

종속성

이 파라미터를 활성화하려면 상태 이름의 값을 지정하십시오. 이 파라미터는 모델 구성 파라미터 신호 연결 맺기안 함 이외의 값으로 설정한 경우에만 나타납니다.

프로그래밍 방식의 사용법

블록 파라미터: StateMustResolveToSignalObject
유형: 문자형 벡터
값: 'off' | 'on'
디폴트 값: 'off'

블록 특성

데이터형

Boolean | bus | double | enumerated | fixed point | integer | single

직접 피드스루

아니요a

다차원 신호

가변 크기 신호

아니요

영점교차 검출

아니요

a 이 블록의 포트는 각기 다른 직접 피드스루 특성을 갖습니다.

확장 기능

C/C++ 코드 생성
Simulink® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

PLC 코드 생성
Simulink® PLC Coder™를 사용하여 Structured Text 코드를 생성할 수 있습니다.

고정소수점 변환
Fixed-Point Designer™를 사용하여 고정소수점 시스템을 설계하고 시뮬레이션할 수 있습니다.

버전 내역

R2006a 이전에 개발됨