Main Content

Sine Wave Function

외부 신호를 시간 소스로 사용하여 사인파 생성

  • Sine Wave Function block

라이브러리:
Simulink / Math Operations

설명

Sine Wave Function 블록은 정현파 파형을 출력합니다. 블록은 시간 기반 또는 샘플 기반 모드에서 동작할 수 있습니다.

참고

이 블록은 Math Operations 라이브러리에 표시되는 Sine Wave 블록과 동일합니다. 블록 대화 상자에서 시간 파라미터에 대해 시뮬레이션 시간 사용을 선택하면 Sine Wave Function 블록을 얻게 됩니다.

시간 기반 모드

블록이 출력 파형을 계산합니다.

y=amplitude×sin(frequency×time+phase)+bias.

시간 기반 모드에서는 샘플 시간 파라미터의 값에 따라 블록이 연속 모드에서 동작할지 아니면 이산 모드에서 동작할지 결정됩니다.

  • 0(디폴트 값)을 선택하면 블록이 연속 모드에서 동작합니다.

  • >0을 선택하면 블록이 이산 모드에서 동작합니다.

자세한 내용은 샘플 시간 지정하기 항목을 참조하십시오.

연속 모드에서 블록의 동작

연속 모드에서 동작할 경우 Sine Wave 블록은 시간이 아주 길어지면 정밀도가 손실되기 때문에 부정확해질 수 있습니다.

이산 모드에서 블록의 동작

샘플 시간 파라미터 값이 0보다 크면 블록은 샘플 시간이 해당 값으로 설정된 Zero-Order Hold 블록을 구동하는 것처럼 동작합니다.

이 방법을 통해 연속/이산 하이브리드 시스템인 모델이 아니라 순수하게 이산 사인파 소스를 갖는 모델을 구축할 수 있습니다. 하이브리드 시스템은 본질적으로 더 복잡하기 때문에 시뮬레이션 시간이 더 오래 걸립니다.

이산 모드에서 이 블록은 절대 시간에 기반한 알고리즘 대신에 차등 증분 알고리즘을 사용합니다. 따라서 진동이나 피로 테스트 같이 무기한으로 실행되도록 만들어진 모델에는 이 블록이 유용할 수 있습니다.

차등 증분 알고리즘은 이전 샘플 시간에 계산된 값을 기반으로 사인값을 계산합니다. 이 방법에는 다음과 같은 삼각함수 항등식이 사용됩니다.

sin(t+Δt)=sin(t)cos(Δt)+sin(Δt)cos(t)cos(t+Δt)=cos(t)cos(Δt)sin(t)sin(Δt)

이 항등식을 행렬 형식으로 표현하면 다음과 같습니다.

[sin(t+Δt)cos(t+Δt)]=[cos(Δt)sin(Δt)sin(Δt)cos(Δt)][sin(t)cos(t)]

Δt가 상수이기 때문에 다음 표현식은 상수입니다.

[cos(Δt)sin(Δt)sin(Δt)cos(Δt)]

따라서 이 문제는 sin(t)의 값에 상수 행렬을 곱하여 sin(t+Δt)를 구하는 행렬 곱셈 문제가 됩니다.

이산 모드는 (4*eps) 같은 반올림 오차 누적을 줄이기는 하지만 완전히 없애지는 못합니다. 각 시간 스텝에서의 블록 출력 계산이 이전 시간 스텝에서의 출력값에 종속되기 때문에 이러한 누적이 발생할 수 있습니다.

이산 모드에서 반올림 오차를 처리하는 방법

Sine Wave block이 시간 기반의 이산 모드에서 동작하는 경우 반올림 오차를 처리하려면 다음 방법 중 하나를 사용하십시오.

방법근거

Saturation 블록을 직접 Sine Wave 블록의 다운스트림으로 삽입하십시오.

Sine Wave 블록 출력에 포화 한도를 설정하여 반올림 오차 누적으로 인한 오버슈트를 제거할 수 있습니다.

Sine Wave 블록에서 sin() 수학 라이브러리 함수를 사용하여 블록 출력을 계산하도록 설정하십시오.

  1. Sine Wave 블록 대화 상자에서 시간외부 신호 사용으로 설정하여 입력 포트가 블록 아이콘에 표시되도록 합니다.

  2. Digital Clock 블록을 사용하여 클록 신호를 이 입력 포트에 연결합니다.

  3. 클록 신호의 샘플 시간을 Sine Wave 블록의 샘플 시간으로 설정합니다.

sin() 수학 라이브러리 함수는 다른 시간 스텝에서의 출력값과 독립적으로 각 시간 스텝에서 블록 출력을 계산하기 때문에 반올림 오차 누적이 방지됩니다.

샘플 기반 모드

샘플 기반 모드는 다음 공식에 따라 Sine Wave 블록의 출력을 계산합니다.

y=Asin(2π(k+o)/p)+b

  • A는 사인파의 진폭입니다.

  • p는 사인파 주기당 시간 샘플 수입니다.

  • k는 0부터 p–1 까지 범위에서 반복되는 정수 값입니다.

  • o는 신호의 오프셋(위상 변위)입니다.

  • b는 신호 편향입니다.

이 모드에서 Simulink®는 첫 번째 시간 스텝에서 k를 0으로 설정하고, 해당 공식을 사용하여 블록 출력을 계산합니다. Simulink는 그다음 시간 스텝에서 k를 증분하고 블록의 출력을 다시 계산합니다. k가 p에 도달하면, Simulink는 블록 출력을 계산하기 전에 k를 0으로 재설정합니다. 이 프로세스는 시뮬레이션이 끝날 때까지 계속됩니다.

지정된 시간 스텝에서 블록 출력을 계산하는 샘플 기반 방법은 이전 시간 스텝의 출력에 종속되지 않습니다. 따라서 이 모드에서는 반올림 오차 누적이 방지됩니다. 샘플 기반 모드는 재설정을 제공하는 서브시스템에서 재설정 의미 체계를 지원합니다. 예를 들어, Sine Wave 블록이 재설정 트리거를 받는 Resettable Subsystem에 있다면 반복 정수 k를 재설정하고 블록 출력을 초기 조건으로 재설정합니다.

포트

입력

모두 확장

사인파 계산에서 시간 소스를 나타내는 입력 신호입니다.

데이터형: double

출력

모두 확장

생성된 사인파인 출력 신호입니다.

데이터형: double

파라미터

모두 확장

이 블록이 생성하는 사인파 유형을 지정합니다. 시간 기반 또는 샘플 기반 중 선택하는 기법에 따라 대화 상자에 파라미터가 표시됩니다.

프로그래밍 방식의 사용법

블록 파라미터: SineType
유형: 문자형 벡터
: 'Time based' | 'Sample based'
디폴트 값: 'Time based'

시뮬레이션 시간을 시간 변수 값 소스로 사용할지 아니면 외부 소스를 사용할지 지정합니다. 외부 시간 소스를 지정하면 블록이 시간 소스의 입력 포트를 생성합니다.

프로그래밍 방식의 사용법

블록 파라미터: TimeSource
유형: 문자형 벡터
: 'Use simulation time' | 'Use external signal'
디폴트 값: 'Use external signal'

사인파 출력 신호의 진폭을 지정합니다.

프로그래밍 방식의 사용법

블록 파라미터: Amplitude
유형: 문자형 벡터
: 스칼라
디폴트 값: '1'

출력을 생성하기 위해 사인파에 추가할 상수 값을 지정합니다.

프로그래밍 방식의 사용법

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

초당 라디안(rad/sec)으로 주파수를 지정합니다.

종속성

이 파라미터를 활성화하려면 사인파 유형시간 기반으로 설정하십시오.

프로그래밍 방식의 사용법

블록 파라미터: Frequence
유형: 문자형 벡터
: 스칼라
디폴트 값: '1'

사인파의 위상 변위를 지정합니다.

시간(t)시뮬레이션 시간 사용으로 설정할 경우 생성 코드에서 이 파라미터가 조정 가능한 전역 변수로 나타나도록 구성할 수 없습니다. 예를 들어 디폴트 파라미터 동작조정 가능형으로 설정하거나 스토리지 클래스를 Simulink.Parameter 객체에 적용하는 경우, 위상 파라미터는 생성 코드에서 조정 가능한 전역 변수로 나타나지 않습니다.

코드 실행 시 위상을 조정 가능하도록 코드를 생성하려면 시간(t)외부 신호 사용으로 설정하십시오. 시간 입력 신호를 직접 제공하거나, Digital Clock 블록을 사용하여 시간 신호를 생성할 수 있습니다. 예제는 Tune Phase Parameter of Sine Wave Block During Code Execution (Simulink Coder) 항목을 참조하십시오.

종속성

이 파라미터를 활성화하려면 사인파 유형시간 기반으로 설정하십시오.

프로그래밍 방식의 사용법

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

주기당 샘플 수를 지정합니다.

종속성

이 파라미터를 활성화하려면 사인파 유형샘플 기반으로 설정하십시오.

프로그래밍 방식의 사용법

블록 파라미터: Samples
유형: 문자형 벡터
: 스칼라
디폴트 값: '10'

샘플 시간 수의 오프셋(이산 위상 변위)을 지정합니다.

종속성

이 파라미터를 활성화하려면 사인파 유형샘플 기반으로 설정하십시오.

프로그래밍 방식의 사용법

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

샘플 주기(단위: 초)를 지정합니다. 디폴트 값은 0입니다. 사인파 유형이 샘플 기반이면 샘플 시간은 0보다 커야 합니다. 샘플 시간 지정하기 항목을 참조하십시오.

프로그래밍 방식의 사용법

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

다른 파라미터가 행이 한 개 있고 열이 한 개 있는 행렬인 경우 출력 차원을 1차원 벡터 신호가 되도록 지정합니다. 이 체크박스를 선택하지 않으면 블록은 숫자형 파라미터와 차원 수가 동일한 신호를 출력합니다. Determine the Output Dimensions of Source Blocks 항목을 참조하십시오. 외부 신호가 시간을 지정하는 경우 이 파라미터를 사용할 수 없습니다. 이 경우 숫자형 파라미터가 열 또는 행 행렬 값인 경우 출력은 1차원 벡터입니다.

프로그래밍 방식의 사용법

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

블록 특성

데이터형

double

직접 피드스루

다차원 신호

아니요

가변 크기 신호

아니요

영점교차 검출

아니요

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

|