Main Content

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

샘플 시간의 유형

이산 샘플 시간

이산 샘플 시간을 갖는 블록이 제공된 경우 Simulink®는 다음과 같은 시간에 블록 출력 또는 업데이트 메서드를 실행합니다.

tn=nTs+|To|,

여기서 샘플 시간 주기 Ts는 항상 0보다 크고 시뮬레이션 시간 Tsim보다 작습니다. 주기 수(n)는 다음을 충족해야 하는 정수입니다.

0nTsimTs.

시뮬레이션이 진행될 때 소프트웨어는 각 고정 시간 간격 tn마다 블록 출력을 한 번만 계산합니다. 소프트웨어가 지정진 샘플 시간 동안 블록의 출력 메서드를 실행하는 이러한 시뮬레이션 시간을 샘플 시간 적중이라고 합니다. 이산 샘플 시간은 샘플 시간 적중이 선험적이라 알려진 유일한 유형입니다.

초기 샘플 적중 시간을 지연해야 하는 경우 오프셋 To을 정의할 수 있습니다.

Unit Delay 블록은 이산 샘플 시간을 갖는 블록의 한 예입니다.

제어 가능한 샘플 시간

분해능 Tbase로 제어 가능한 샘플 시간을 사용하도록 블록을 구성할 수 있습니다. Tbase는 블록 실행 사이에 허용되는 가장 작은 시간 간격입니다. C S-Function 블록에서 Tbase를 설정하려면 ssSetControllableSampleTime 함수를 사용하십시오.

블록이 제어 가능한 샘플 시간을 사용하는 경우 Tbase의 n 배수에서 실행되도록 블록을 동적으로 구성할 수 있습니다. 다음 블록 실행 시간은 아래와 같습니다.

Tnext = n Tbase + T(1)

ssSetNumTicksToNextHitForControllableSampleTime 함수를 사용하여 C S-Function 블록에서 n을 설정할 수 있습니다.

연속 샘플 시간

연속 샘플 시간

연속 샘플 시간 적중은 주 시간 스텝과 보조 시간 스텝으로 나누어집니다. 보조 시간 스텝은 주 시간 스텝을 세분화한 것입니다. 솔버는 각각의 주 시간 스텝에서 결과를 생성합니다. 솔버는 주 시간 스텝에서 생성되는 결과의 정확도를 높이기 위해 보조 시간 스텝의 결과를 사용합니다.

사용자가 선택한 ODE 솔버는 시뮬레이션 시작 시간부터 지정된 주 시간 스텝 또는 보조 시간 스텝까지의 모든 연속 상태를 적분합니다. 솔버는 보조 스텝의 시간을 결정하고 보조 시간 스텝의 결과를 사용하여 주 시간 스텝에서 생성되는 결과의 정확도를 개선합니다. 주 시간 스텝에서만 블록 출력이 표시됩니다.

블록(예: Derivative 블록)에 대한 연속 샘플 시간을 지정하려면 샘플 시간 파라미터에 대해 [0, 0] 또는 0을 입력하십시오.

보조 스텝에서 고정됨 샘플 시간

블록의 샘플 시간이 [0 1]인 경우 블록은 보조 스텝에서 고정됨 샘플 시간을 가집니다. 이 샘플 시간의 경우, 블록은 보조 시간 스텝에서 실행되지 않습니다. 블록은 주 시간 스텝에서만 실행됩니다. 보조 스텝에서 고정됨 샘플 시간은 주 스텝 사이에 변경할 수 없는 출력을 갖는 블록의 불필요한 계산을 제거합니다.

블록을 보조 스텝에서 고정됨 샘플 시간으로 명시적으로 설정할 수 있지만, 소프트웨어는 이 조건을 상속된 샘플 시간이나 연속 샘플 시간 지정의 변경된 값으로 더 자주 설정합니다. 보조 스텝에서 고정됨 샘플 시간은 고정 스텝 솔버를 사용하는 시스템에서 가장 빠른 이산 레이트와 동일합니다. 고정 스텝 솔버를 사용하면, 보조 스텝에서 고정됨 샘플 시간이 가장 빠른 이산 샘플 시간으로 변환됩니다.

가변 샘플 시간

가변 샘플 시간을 사용하는 블록은 블록이 지정하는 묵시적 샘플 시간 파라미터를 가집니다. 이 블록은 실행될 때 소프트웨어에 알립니다. 컴파일된 샘플 시간은 [–2 Tvo]입니다. 여기서 Tvo는 고유한 변수 오프셋입니다.

Hit Scheduler 블록과 Pulse Generator 블록은 모두 가변 샘플 시간을 가집니다. 가변 샘플 시간은 가변 스텝 솔버에 대해서만 지원됩니다. Hit Scheduler 블록은 고정 스텝 솔버에 대해 지원되지 않습니다. 고정 스텝 솔버를 사용하여 Pulse Generator 블록이 포함된 모델을 시뮬레이션할 경우 블록은 이산 샘플 시간을 지정합니다.

가변 샘플 시간을 사용하는 블록을 직접 작성하는 방법을 알아보려면 C MEX S-Function Examples 항목을 참조하십시오.

이벤트 및 비동기 샘플 시간

비동기 샘플 시간

비동기 샘플 시간은 트리거된 샘플 시간과 유사합니다. 두 경우 모두 Simulink 엔진이 블록을 규칙적으로 실행하지 않으므로, 상속된 샘플 시간을 지정해야 합니다. 대신, 런타임 조건에 따라 블록이 실행되는 시기가 결정됩니다. 비동기 샘플 시간의 경우, S-Function이 비동기 함수 호출을 수행합니다.

이러한 샘플 시간 유형 간의 차이점은 다음과 같습니다.

  • Function-Call Subsystem만 비동기 샘플 시간을 가질 수 있습니다. Function-Call Subsystem 사용하기 항목을 참조하십시오.

  • 함수 호출 신호의 소스는 SS_OPTION_ASYNCHRONOUS 옵션을 갖는 S-Function입니다.

  • 비동기 샘플 시간은 가상 블록이 비동기 S-Function 또는 비동기 Function-Call Subsystem에 연결된 경우에도 발생할 수 있습니다.

  • 비동기 샘플 시간은 일부 코드 생성 응용 사례에 중요합니다. Asynchronous Events (Simulink Coder) 항목을 참조하십시오.

  • 샘플 시간은 [-1,-n]입니다.

블록을 사용하여 비동기 이벤트 처리를 위한 코드를 모델링하고 생성하는 방법에 대한 설명은 Rate Transitions and Asynchronous Blocks (Simulink Coder) 항목을 참조하십시오.

비주기적 분할

모델의 비주기적 분할은 이러한 유형의 샘플 시간을 발생시킵니다. 비주기적 분할에는 제약 조건이 없으며 아무 때나 실행되도록 지정할 수 있습니다. 스케줄 편집기에서 적중 시간을 지정하여 비주기적 분할의 타임라인을 조절할 수 있습니다. 이 샘플 시간이 지정된 블록의 실행 시간은 이벤트에 의해 결정될 수 있습니다. 서브시스템 블록은 지정된 샘플 시간 파라미터로 비주기적 샘플 시간을 가질 수 있습니다.

기타 샘플 시간

상속된 샘플 시간

블록 샘플 시간이 [–1 0] 또는 –1로 설정된 경우 샘플 시간이 상속되며 소프트웨어는 모델 내에서 블록의 컨텍스트에 따라 블록에 최적의 샘플 시간을 결정합니다. 상속된 샘플 시간을 갖는 블록의 샘플 시간은 컴파일할 때 결정됩니다. 상속된 설정은 컴파일 시 덮어쓰여지므로, 샘플 시간 범례에는 컴파일된 모델의 상속된 샘플 시간 [-1 0]이 표시되지 않습니다. 자세한 내용은 View Sample Time Information 항목을 참조하십시오.

일부 블록은 기본적으로 샘플 시간을 상속합니다. 이러한 블록의 경우, 상속되지 않은 값을 지정하지 않는 한 파라미터가 표시되지 않습니다. 예를 들어, Gain 블록과 Rounding Function 블록은 표시되는 샘플 시간 파라미터가 없으며, 기본적으로 상속된 샘플 시간을 가집니다. 이러한 블록의 샘플 시간 파라미터는 변경하지 않는 것이 가장 좋습니다. 자세한 내용은 Blocks for Which Sample Time Is Not Recommended 항목을 참조하십시오.

상속된 모든 블록은 샘플 시간 전파 프로세스의 대상이 됩니다. 자세한 내용은 How Propagation Affects Inherited Sample Times 항목을 참조하십시오.

상수 샘플 시간

Simulink에서 상수는 알고리즘 외부나 감독 제어를 통해서만 값을 변경할 수 있는 기호 이름 또는 기호 표현식입니다. 모델의 표준 실행 중에는 출력이 변경되지 않는 블록(예: Constant 블록)은 항상 상수로 간주됩니다.

소프트웨어는 이러한 블록에 상수 샘플 시간을 할당합니다. 이러한 블록은 다음과 같은 경우 블록 출력 메서드를 실행합니다.

  • 시뮬레이션 시작 시

  • 환경에서 런타임 변경(예: 파라미터 조정)에 대한 응답으로

상수 샘플 시간의 경우, 블록 샘플 시간 할당은 [inf 0] 또는 inf입니다.

블록이 상수 샘플 시간을 허용하려면, 블록은 연속 상태 또는 이산 상태를 가지면 안 되며 조건부 실행 서브시스템의 출력 포트를 구동해서는 안 됩니다. 자세한 내용은 Enabled Subsystem 사용하기 항목을 참조하십시오.

Simulink 블록 라이브러리에는 MATLAB S-Function 블록, Level-2 MATLAB S-Function 블록, C S-Function 블록과 같이 포트가 서로 다른 샘플 레이트로 출력을 생성할 수 있는 여러 블록이 포함되어 있습니다. 이러한 블록의 일부 포트는 상수 샘플 시간을 가질 수 있습니다.

트리거된 샘플 시간

블록이 Function-Call Subsystem 또는 Enabled Subsystem 같은 Triggered Subsystem 내에 있는 경우, 비동기 함수 호출의 경우를 제외하고 블록은 상수이거나 트리거된 샘플 시간을 가질 수 있습니다. 트리거된 샘플 시간 유형은 명시적으로 지정할 수 없습니다. 컴파일 중에 트리거된 샘플 시간을 얻으려면 블록 샘플 시간을 상속됨(–1)으로 설정하십시오. 그러면 시뮬레이션 중에 블록이 실행되는 특정 시간이 결정됩니다.

멀티레이트 샘플 시간

유니언 레이트

유니언 샘플 시간은 컴포넌트 샘플 시간의 합집합인 컨테이너 샘플 시간입니다. 이 샘플 시간의 실행은 컴포넌트 샘플 시간 타임라인의 합집합입니다.

멀티레이트 샘플 시간

멀티레이트 샘플 시간은 Simulink 엔진에 의해 모델에서 발생합니다. 서브시스템 또는 멀티레이트 블록(예: Rate Transition 블록)에 두 개 이상의 샘플 시간이 포함되어 있기 때문에 다이어그램 업데이트를 하면 해당 서브시스템 또는 멀티레이트 블록이 노란색으로 바뀝니다.

시스템에 여러 샘플 시간이 있는지 평가할 때, 상수 [inf, 0] 또는 모델 전체에 적용되는 이벤트는 제외됩니다 따라서 상수 값 출력이 있는 블록 하나와 이산 샘플 시간이 있는 블록 하나가 포함된 서브시스템은 멀티레이트로 지정되지 않습니다. 연속 샘플 시간을 갖는 블록과 보조 스텝에서 고정됨 샘플 시간을 갖는 블록이 같이 있는 경우, 샘플 시간의 타임라인이 같기 때문에 이 블록들도 멀테레이트로 지정되지 않습니다. 이러한 블록은 연속 샘플 시간을 갖도록 지정됩니다.

Dataflow 샘플 시간

샘플 시간이 데이터 흐름으로 돼있는 블록은 데이터 기반입니다. 예를 들어, Dataflow Subsystem (DSP System Toolbox) 블록이 이에 해당합니다. 이 블록은 데이터 기반이면서 정적으로 스케줄링되는 동기식 Dataflow를 계산 모델로 사용합니다. 자세한 내용은 Dataflow Subsystem (DSP System Toolbox) 항목을 참조하십시오.

초기화, 재초기화, 종료 샘플 시간

Initialize Function 블록, Reinitialize Function 블록, Terminate Function 블록을 사용하여 디폴트 루틴에 사용자 지정 루틴을 추가하여 블록 상태를 변경하거나 읽을 수 있습니다. Reset Function 블록을 사용하여 사용자 지정 루틴을 구현할 수도 있습니다. 모델에 Initialize Function 블록, Reinitialize Function 블록, Terminate 블록이 있는 경우 초기화, 재설정, 종료 샘플 시간이 지정됩니다. 이러한 블록에는 모델에 이 샘플 시간이 사용되도록 하는 알고리즘 또는 의미 체계가 포함되어 있습니다.

관련 항목