Discrete-Time Integrator
신호의 이산시간 적분 또는 누적 수행
라이브러리:
Simulink /
Commonly Used Blocks
Simulink /
Discrete
HDL Coder /
Discrete
HDL Coder /
HDL Floating Point Operations
설명
순수 이산 모델을 만들려면 Integrator 블록 대신 Discrete-Time Integrator 블록을 사용하십시오. Discrete-Time Integrator 블록을 사용하면 다음을 수행할 수 있습니다.
블록 대화 상자에서 또는 블록에 대한 입력으로 초기 조건 정의
입력 이득(K) 값 정의
블록 상태 출력
적분의 상한과 하한 정의
추가 재설정 입력을 통한 상태 재설정
출력 방정식
첫 번째 시간 스텝에서 블록 상태는 n = 0이고, 초기 조건 설정 파라미터 값에 따라 초기 출력 y(0) = IC 또는 초기 상태 x(0) = IC가 됩니다.
주어진 스텝 n > 0에 대해 시뮬레이션 시간은 t(n)이며, Simulink®는 출력 y(n)을 다음과 같이 업데이트합니다.
순방향 오일러 방법:
y(n) = y(n-1) + K*[t(n) - t(n-1)]*u(n-1)
역방향 오일러 방법:
y(n) = y(n-1) + K*[t(n) - t(n-1)]*u(n)
사다리꼴법:
y(n) = y(n-1) + K*[t(n)-t(n-1)]*[u(n)+u(n-1)]/2
Simulink는 블록 샘플 시간에 따라 이러한 출력 방정식의 상태공간 구현을 자동으로 선택합니다. 블록 샘플 시간은 명시적 또는 트리거됨일 수 있습니다. 명시적 샘플 시간을 사용할 때 t(n)-t(n-1)은 모든 n > 0에 대해 샘플 시간 T로 축소됩니다.
적분 및 누적 방법
이 블록은 순방향 오일러 방법, 역방향 오일러 방법 또는 사다리꼴법을 사용하여 신호를 적분하거나 누적할 수 있습니다. u는 입력, y는 출력, x는 상태라고 가정합니다. 주어진 스텝 n에 대해 Simulink는 y(n)과 x(n+1)을 업데이트합니다. 적분 모드에서 T는 블록 샘플 시간입니다(트리거된 샘플 시간의 경우 델타 T). 누적 모드에서는 T = 1입니다. 블록 샘플 시간은 출력이 계산되는 시점을 결정하지만 출력 값은 결정하지 않습니다. K는 이득 값입니다. 값은 상한이나 하한에 따라 잘립니다.
순방향 오일러 방법(디폴트 값)은 순방향 직사각형 방법(forward rectangular)이나 왼쪽 근사(left-hand approximation)라고도 합니다.
1/s는 T/(z-1)로 근사됩니다. 스텝 n에서 블록의 출력에 대한 표현식은 다음과 같습니다.
x(n+1) = x(n) + K*T*u(n) y(n) = x(n)
블록은 다음 단계를 사용하여 출력을 계산합니다.
Step 0: y(0) = IC (clip if necessary)
x(1) = y(0) + K*T*u(0)
Step 1: y(1) = x(1)
x(2) = x(1) + K*T*u(1)
Step n: y(n) = x(n)
x(n+1) = x(n) + K*T*u(n) (clip if necessary)이 방법을 사용하면 입력 포트 1에는 직접 피드스루가 없습니다.
역방향 오일러 방법은 역방향 직사각형 방법(backward rectangular)이나 오른쪽 근사(right-hand approximation)라고도 합니다.
1/s는 T*z/(z-1)로 근사됩니다. 스텝 n에서 블록의 출력에 대한 결과 표현식은 다음과 같습니다.
y(n) = y(n-1) + K*T*u(n).
x(n) = y((n)-1)이라고 가정해 보겠습니다. 블록은 다음 단계를 사용하여 출력을 계산합니다.
Triggered Subsystem과 Function-Call Subsystem의 파라미터 초기 조건 설정이
출력또는자동으로 설정되어 있는 경우:Step 0: y(0) = IC (clipped if necessary) x(1) = y(0)Triggered Subsystem이 아닌 서브시스템의 파라미터 초기 조건 설정이
자동으로 설정되어 있는 경우:Step 0: x(0) = IC (clipped if necessary) x(1) = y(0) = x(0) + K*T*u(0) Step 1: y(1) = x(1) + K*T*u(1) x(2) = y(1) Step n: y(n) = x(n) + K*T*u(n) x(n+1) = y(n)
이 방법을 사용하면 입력 포트 1에는 직접 피드스루가 있습니다.
이 방법의 경우 1/s는 T/2*(z+1)/(z-1)로 근사됩니다.
T가 고정된(샘플링 주기와 동일) 경우 출력을 계산하는 표현식은 다음과 같습니다.
x(n) = y(n-1) + K*T/2*u(n-1) y(n) = x(n) + K*T/2*u(n)
Triggered Subsystem과 Function-Call Subsystem의 파라미터 초기 조건 설정이
출력또는자동으로 설정되어 있는 경우:Step 0: y(0) = IC (clipped if necessary) x(1) = y(0) + K*T/2*u(0)Triggered Subsystem이 아닌 서브시스템의 파라미터 초기 조건 설정이
자동으로 설정되어 있는 경우:Step 0: x(0) = IC (clipped if necessary) y(0) = x(0) + K*T/2*u(0) x(1) = y(0) + K*T/2*u(0) Step 1: y(1) = x(1) + K*T/2*u(1) x(2) = y(1) + K*T/2*u(1) Step n: y(n) = x(n) + K*T/2*u(n) x(n+1) = y(n) + K*T/2*u(n)
여기서 x(n+1)은 다음 출력에 대한 최선의 추정값입니다. x(n)이 y(n)과 동일하지 않다는 점에서 이는 상태와 같지 않습니다.
이 방법을 사용하면 입력 포트 1에는 직접 피드스루가 있습니다.
T가 변수일 때(예: 트리거 시간으로부터 얻은 경우) 블록은 다음 단계를 사용하여 출력을 계산합니다.
Triggered Subsystem과 Function-Call Subsystem의 파라미터 초기 조건 설정이
출력또는자동으로 설정되어 있는 경우:Step 0: y(0) = IC (clipped if necessary) x(1) = y(0)Triggered Subsystem이 아닌 서브시스템의 파라미터 초기 조건 설정이
자동으로 설정되어 있는 경우:Step 0: x(0) = IC (clipped if necessary) x(1) = y(0) = x(0) + K*T/2*u(0) Step 1: y(1) = x(1) + K*T/2*(u(1) + u(0)) x(2) = y(1) Step n: y(n) = x(n) + K*T/2*(u(n) + u(n-1)) x(n+1) = y(n)
초기 조건 정의
블록 대화 상자에서 초기 조건을 파라미터로 정의할 수도 있고, 외부 신호로부터 입력받을 수도 있습니다.
초기 조건을 블록 파라미터로 정의하려면 초기 조건 소스 파라미터를
internal로 설정하고 초기 조건 텍스트 상자에 값을 입력합니다.외부 소스에서 초기 조건을 제공하려면 초기 조건 소스 파라미터를
external로 설정합니다. 추가 입력 포트가 블록에 표시됩니다.
상태 포트를 사용하는 경우
다음과 같은 경우 출력 포트 대신 상태 포트를 사용하십시오.
블록의 출력이 재설정 포트나 초기 조건 포트를 통해 블록으로 피드백되어 대수 루프를 유발하는 경우. 예제는
sldemo_bounce_two_integrators모델을 참조하십시오.하나의 조건부 실행 서브시스템에서 다른 조건부 실행 서브시스템으로 상태를 전달하려는 경우. 이 경우에는 타이밍 문제가 발생할 수 있습니다. 예제는 Building a Clutch Lock-Up Model 항목을 참조하십시오.
출력 포트 대신 상태 포트를 통해 상태를 전달하면 이러한 문제를 해결할 수 있습니다. Simulink는 출력과 약간 다른 시간에 상태를 생성함으로써 이러한 문제로부터 모델을 보호합니다. 블록 상태를 출력하려면 상태 포트 표시 체크박스를 선택하십시오. 상태 포트가 블록 상단에 표시됩니다.

적분 제한하기
출력을 특정 수준 내로 유지하려면 출력 제한 체크박스를 선택하고 해당 텍스트 상자에 제한을 입력하십시오. 이렇게 하면 블록이 제한된 적분기로 작동합니다. 출력이 제한에 도달하면 적분 와인드업을 방지하기 위해 적분 동작이 꺼집니다. 시뮬레이션 중에는 제한을 변경할 수 있지만 출력 제한 여부는 변경할 수 없습니다. 다음 표는 블록이 출력을 결정하는 방법을 보여줍니다.
| 적분 | 출력 |
|---|---|
| 포화 하한보다 작음 | 포화 하한 유지 |
| 포화 하한과 포화 상한 사이 | 적분 |
| 포화 상한보다 큼 | 포화 상한 유지 |
적분이 제한에 도달하는 시점을 나타내는 신호를 생성하려면 포화 포트 표시 체크박스를 선택하십시오. 새 포화 포트가 블록 출력 포트 아래에 표시됩니다.

포화 신호의 값은 다음 세 가지 중 하나입니다.
1은 적분이 상한에 있음을 나타냅니다.
0은 적분이 제한되지 않음을 나타냅니다.
-1은 적분이 하한에 있음을 나타냅니다.
상태 재설정하기
블록은 외부 신호를 기반으로 자신의 상태를 지정된 초기 조건으로 재설정합니다. 블록이 자신의 상태를 재설정할 수 있게 하려면 외부 재설정 파라미터 옵션 중 하나를 선택하십시오. 재설정 트리거 유형을 나타내는 재설정 포트가 표시됩니다.

재설정 포트에는 직접 피드스루가 있습니다. 블록 출력이 직접적으로 또는 직접 피드스루를 갖는 일련의 블록을 통해 이 포트로 다시 전달되는 경우, 대수 루프가 발생합니다. 이 루프를 해결하려면 블록 상태 포트의 출력을 재설정 포트에 피드백하십시오. 블록 상태에 액세스하려면 상태 포트 표시 체크박스를 선택하십시오.
트리거 유형 재설정하기
외부 재설정 파라미터를 사용하면 재설정을 트리거하는 재설정 신호의 특성을 결정할 수 있습니다. 다음과 같은 트리거 옵션이 있습니다.
상승– 재설정 신호에 상승 에지가 있을 때 상태를 재설정합니다. 예를 들어, 다음 그림은 상승 재설정 트리거가 역방향 오일러 적분에 미치는 영향을 보여줍니다.
하강— 재설정 신호에 하강 에지가 있을 때 상태를 재설정합니다. 예를 들어, 다음 그림은 하강 재설정 트리거가 역방향 오일러 적분에 미치는 영향을 보여줍니다.
양쪽 모두 가능— 재설정 신호가 상승하거나 하강할 때 상태를 재설정합니다. 예를 들어, 다음 그림은 양쪽 모두 가능 재설정 트리거가 역방향 오일러 적분에 미치는 영향을 보여줍니다.
레벨— 재설정 신호가 0이 아닌 동안 출력을 초기 조건으로 재설정하고 유지합니다. 예를 들어, 다음 그림은 레벨 재설정 트리거가 역방향 오일러 적분에 미치는 영향을 보여줍니다.
샘플링된 레벨— 재설정 신호가 0이 아닐 때 출력을 초기 조건으로 재설정합니다. 예를 들어, 다음 그림은 샘플링된 레벨 재설정 트리거가 역방향 오일러 적분에 미치는 영향을 보여줍니다.
샘플링된 레벨재설정 옵션은 계산량이 적어레벨재설정 옵션보다 효율적입니다.참고
Discrete-Time Integrator 블록의 경우 모든 트리거 감지는 양수 값을 갖는 신호를 기준으로 합니다. 예를 들어 -1에서 0으로 변하는 신호는 상승 에지로 간주되지 않지만, 0에서 1로 변하는 신호는 상승 에지로 간주됩니다.
단순 방식 초기화 모드의 동작
구성 파라미터 대화 상자에서 과소 지정된 초기화 감지를 단순 방식으로 설정하면 단순 방식 초기화 모드가 활성화됩니다. 단순 방식 초기화 모드를 사용하는 경우 Discrete-Time Integrator 블록의 동작은 고전 방식 초기화 모드와 다릅니다. 새로운 초기화 동작은 더 강인하며 다음과 같은 경우 더 일관된 동작을 제공합니다.
대수 루프가 있는 경우
활성화 및 비활성화 시
트리거된 샘플 시간을 사용한 결과와 명시적 샘플 시간을 사용한 결과를 비교할 때(이때, 블록은 명시적 샘플 시간과 동일한 속도로 트리거됨)
단순 방식 초기화 모드를 사용하면 Continuous-Time Integrator 블록에서 Discrete-Time Integrator 블록으로 더 쉽게 변환할 수 있습니다. 이는 두 블록 모두에서 초기 조건이 동일한 의미를 가지기 때문입니다.
고전 방식 및 단순 방식 초기화 모드에 대한 자세한 내용은 Underspecified initialization detection 항목을 참조하십시오.
Triggered Subsystem과 Function-Call Subsystem의 초기 조건 설정이 출력으로 설정된 단순 방식 초기화 모드를 사용하는 경우, 블록의 활성화 동작과 비활성화 동작은 다음과 같이 단순화됩니다.
비활성화 시간 td에서:
y(td) = y(td-1)
활성화 시간 te에서:
부모 서브시스템 제어 포트의 활성화할 때의 상태가
재설정으로 설정된 경우:y(te) = IC.
부모 서브시스템 제어 포트의 활성화할 때의 상태가
유지로 설정된 경우:y(te) = y(td).
다음 그림은 이 조건을 보여줍니다.

단순 방식 초기화 모드를 사용할 때는 Discrete-Time Integrator 블록을 Iterator Subsystem 블록에 배치할 수 없습니다.
단순 방식 초기화 모드에서는 Iterator Subsystem이 경과 시간을 유지하지 않습니다. 따라서 경과 시간이 필요한 Discrete-Time Integrator 블록을 Iterator Subsystem 블록에 배치하면 Simulink에서 오류를 보고합니다.
Function-Call Subsystem 내부 Enabled Subsystem의 동작
Function-Call Subsystem에 Enabled Subsystem이 포함되어 있고, Enabled Subsystem에 Discrete-Time Integrator 블록이 포함되어 있다고 가정하겠습니다. 다음 동작이 적용됩니다.
| 적분기 방법 | 함수 호출 Trigger Port의 샘플 시간 유형 | Function-Call Subsystem이 활성화된 후 처음으로 실행될 때 delta T 값 | 동작 이유 |
|---|---|---|---|
순방향 오일러 | 트리거됨 |
| Function-Call Subsystem이 처음으로 실행될 때, 적분기 알고리즘은 |
역방향 오일러 및 사다리꼴 | 트리거됨 |
| Function-Call Subsystem이 처음으로 실행될 때, 적분기 알고리즘은 |
순방향 오일러, 역방향 오일러, 사다리꼴 | 주기적 | Function-Call Generator의 샘플 시간 | 주기적 모드에서 Discrete-Time Integrator 블록은 |
예제
포트
입력
출력
파라미터
블록 특성
데이터형 |
|
직접 피드스루 |
|
다차원 신호 |
|
가변 크기 신호 |
|
영점교차 검출 |
|
세부 정보
확장 기능
버전 내역
R2006a 이전에 개발됨
참고 항목
도움말 항목
- C Data Code Interface Configuration for Model Interface Elements (Simulink Coder)
- C Data Code Interface Configuration for Model Interface Elements (Simulink Coder)
- Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder)


