Timed 루프
- 업데이트 날짜:2025-07-30
- 10분 (읽기 시간)
하나 또는 그 이상의 서브다이어그램이나 프레임을 지정한 주기만큼 루프의 각 반복을 순차적으로 실행합니다. 여러 속도의 타이밍 특성, 정확한 타이밍, 루프 실행의 피드백, 동적으로 변하는 타이밍 특성 또는 다양한 레벨의 실행 우선순위를 사용하여 VI를 만들 경우에 Timed 루프를 사용합니다. 구조의 경계에서 마우스 오른쪽 버튼을 클릭한 후 프레임을 추가, 삭제, 삽입, 병합할 수 있습니다.

Timed 루프의 구성요소
반복(i) 터미널은 현재 루프의 반복 수를 나타내며, 첫번째 반복에서는 제로입니다. 반복 카운트가 2,147,483,647, 즉 231을 초과하면 이후에 실행이 계속되어도 반복 터미널은 계속 2,147,483,647에 머무릅니다. 2,147,483,647 반복 이상의 카운트가 필요한 경우 더 큰 정수 범위를 가진 시프트 레지스터를 사용합니다.
Timed 루프는 앞의 그림과 같이 각 프레임에 (1) 입력 및 (4) 출력 노드와 (2) 왼편 및 (3) 오른편 데이터 노드를 포함합니다. 기본적으로, Timed 루프의 노드는 모든 사용 가능한 입력과 출력 터미널을 디스플레이하지 않습니다. 노드의 크기를 조정하거나 노드에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴를 사용하여 노드 터미널을 디스플레이할 수 있습니다. Timed 루프 경계에서 마우스 오른쪽 버튼을 클릭한 후, 바로 가기 메뉴에서 왼쪽 데이터 노드 보이기 또는 오른쪽 데이터 노드 보이기를 선택하여 해당 노드를 디스플레이합니다.
입력 노드를 더블 클릭하거나 구조에서 마우스 오른쪽 버튼을 클릭한 후 Timed 루프 설정을 선택하여 Timed 루프를 설정할 수 있는 Timed 루프 설정 대화 상자를 디스플레이합니다. Timed 루프 설정 대화 상자에 입력하는 값은 입력 노드에서 입력 터미널 옆에 나타납니다.
다음 테이블은 Timed 루프의 노드 터미널을 나열합니다. Timed 루프에 있는 여러 노드의 값은 타이밍 소스의 시작을 기준으로 합니다. 동기화를 요청하지 않으면, 타이밍 소스의 시작 시간은 타이밍 소스를 사용하는 첫번째 루프의 시작 시간입니다. 여러 루프가 동기화 그룹의 일부일 때, 타이밍 소스의 시작 시간은 마지막 루프가 실행할 준비가 된 시간입니다.
(1) 입력 노드
![]() | 데드라인 | Timed 루프가 반복을 종료해야 하는 시간을 지정합니다. 데드라인 값은 Timed 루프의 시작에 상대적이며 타이밍 소스의 단위로 지정됩니다. 값을 -1로 설정하면 이 함수에는 데드라인이 없습니다. 이 입력에 값을 지정하지 않으면, 구조는 주기의 값을 데드라인 값으로 사용합니다. |
![]() | 에러 | 구조를 통해 에러를 전달합니다. 에러가 에러 조건을 받으면 Timed 루프는 실행되지 않습니다. |
![]() | 모드 | Timed 루프가 지연된 실행을 처리하는 방법을 지정합니다. 사용 가능한 모드는 No change, Process missed periods maintaining original phase, Process missed periods ignoring original phase, Discard missed periods maintaining original phase 및 Discard missed periods ignoring original phase와 같이 5가지입니다. |
![]() | 구조 이름 | Timed 루프의 이름을 지정합니다. |
![]() | 오프셋 | Timed 루프가 실행 시작을 기다리는 시간의 길이를 지정합니다. 오프셋 값은 Timed 루프의 시작에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
![]() | 주기 | 소스 이름으로 지정한 타이밍 소스와 같은 단위로 Timed 루프의 주기를 지정합니다. 노트 Timed 루프의 주기를 0으로 설정하지 마십시오. 주기가 0인 경우 정의되지 않은 어플리케이션 동작을 초래할 수 있기 때문에 National Instruments는 주기가 0인 Timed 루프가 있는 어플리케이션은 지원하지 않습니다. Timed 루프의 우선 순위 실행 기능이 있으면서 최대한 빨리 실행되는 루프가 필요한 경우, 대신 Timed 시퀀스 구조 안에서 While 루프를 사용하십시오. |
![]() | 우선순위 | Timed 루프 실행의 우선순위를 지정합니다. Timed 구조의 우선순위는 블록다이어그램의 다른 객체에 비교하여 언제 블록다이어그램에서 구조가 실행되는지 지정합니다. Timed 구조의 우선 순위가 높을수록 다른 Timed 구조보다 빨리 실행됩니다. 우선순위 입력의 값은 1과 65,535 사이의 양의 정수여야 합니다. |
![]() | 프로세서 | 실행을 처리할 프로세서를 지정합니다. 기본 설정은 -2로서, LabVIEW가 프로세서를 자동으로 지정한다는 것을 의미합니다. 수동으로 프로세서를 지정하려면, 0에서 255 사이의 숫자를 입력합니다. 이때 0은 사용 가능한 첫번째 프로세서를 나타냅니다. 사용 가능한 프로세서의 개수를 넘는 숫자를 입력하는 경우, 런타임 에러가 발생하고 Timed 구조는 실행되지 않습니다. |
![]() | 소스 이름 | 구조를 컨트롤하는데 사용할 타이밍 소스의 이름을 지정합니다. 타이밍 소스는 [타이밍 소스 생성] VI를 사용하여 생성하거나 Timed 루프 설정 대화 상자에서 선택해야 합니다. |
![]() | Timeout | Timed 루프가 실행 시작을 기다리는 시간의 최대 길이를 지정합니다. 기본은 -1이며 다음 프레임에 대해서 지정된 타임아웃이 없음을 의미합니다. 타임아웃 값은 타이밍 소스의 시작 또는 이전 반복의 끝에 상대적이며 프레임 타이밍 소스의 단위로 지정됩니다. |
(2) 왼쪽 데이터 노드
| 실제 종료 [f-1] (단일 프레임 Timed 루프에서는 사용할 수 없음) | 이전 프레임(f-1)의 실제 종료 시간을 반환합니다. 실제 종료 값은 타이밍 소스의 시작 시간에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 실제 종료 [i-1] (첫번째 프레임에서만) | 이전 반복(i-1)의 실제 종료 시간을 반환합니다. 실제 종료 값은 타이밍 소스의 시작 시간에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 실제 시작 [f] (단일 프레임 Timed 루프에서는 사용할 수 없음) | 현재 프레임(f)의 실제 시작 시간을 반환합니다. 실제 시작 값은 타이밍 소스의 시작 시간에 상대적이며 프레임 타이밍 소스의 단위로 지정됩니다. |
| 실제 시작[i] (첫번째 프레임에서만) | 현재 반복(i)의 실제 시작 시간을 반환합니다. 실제 시작 값은 타이밍 소스의 시작 시간에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 데드라인 | 현재 프레임의 데드라인 값을 반환합니다. |
| 에러 | 구조를 통해 에러를 전달합니다. |
| 예상되는 종료 [f-1] (단일 프레임 Timed 루프에서는 사용할 수 없음) | 이전 프레임(f-1)의 예상 종료 시간을 반환합니다. 예상되는 종료 값은 타이밍 소스의 시작 시간에 상대적이며 타이밍 소스의 단위로 지정됩니다. 예상 종료(f-1)는 다음 주기의 시작과 같습니다. |
| 예상되는 종료[i-1] (첫번째 프레임에서만) | 이전 반복(i-1)의 예상 종료 시간을 반환합니다. 예상되는 종료 값은 타이밍 소스의 시작 시간에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 예상되는 시작[f] | 현재 프레임(f)의 예상 시작 시간을 반환합니다. 예상되는 시작 값은 타이밍 소스의 시작 시간에 상대적이며 프레임 타이밍 소스의 단위로 지정됩니다. |
| 예상되는 시작[i] (첫번째 프레임에서만) | 현재 반복(i)의 예상 시작 시간을 반환합니다. 예상되는 시작 값은 타이밍 소스의 시작 시간에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 늦게 끝냄? [f-1] | Timed 루프가 지정된 데드라인 전에 이전 프레임을 종료하지 못한 경우 참을 반환합니다. |
| 늦게 끝냄? [i-1] (첫번째 프레임에서만) | Timed 루프가 지정된 데드라인 전에 이전 반복을 종료하지 못한 경우 참을 반환합니다. |
| 프레임 지속기간 (단일 프레임 Timed 루프에서는 사용할 수 없음) | 이전 프레임의 지속기간을 반환합니다. 프레임 지속기한은 프레임의 시작에 상대적이며 프레임 타이밍 소스의 단위로 지정됩니다. |
| 글로벌 종료 시간 | 이전 반복 또는 프레임의 종료 시간을 나노초로 반환합니다. Timed 루프가 절대 타이밍 소스를 사용하는 경우, 글로벌 종료 시간은 타임스탬프를 반환합니다. 그렇지 않은 경우, 글로벌 종료 시간은 64 비트 정수를 반환합니다. Timed 루프가 RT 타겟에서 실행되는 경우, 글로벌 종료 시간은 타겟의 시스템 시간을 기준으로 하며 외부 클럭과 동기화될 수 있습니다. Timed 루프가 Windows에서 실행되는 경우, 글로벌 종료 시간은 Windows 시스템 시간을 기준으로 합니다. |
| 글로벌 시작 시간 | 이전 반복 또는 프레임의 시작 시간을 나노초로 반환합니다. Timed 루프가 절대 타이밍 소스를 사용하는 경우, 글로벌 시작 시간은 타임스탬프를 반환합니다. 그렇지 않은 경우, 글로벌 시작 시간은 64 비트 정수를 반환합니다. Timed 루프가 RT 타겟에서 실행되는 경우, 글로벌 시작 시간은 타겟의 시스템 시간을 기준으로 하며 외부 클럭과 동기화될 수 있습니다. Timed 루프가 Windows에서 실행되는 경우, 글로벌 시작 시간은 Windows 시스템 시간을 기준으로 합니다. |
| 반복 지속기간 (첫번째 프레임에서만) | 이전 반복의 지속기간의 타임스탬프를 반환합니다. 반복횟수 지속기간 값은 반복의 시작에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 모드 (첫번째 프레임에서만) | 현재 반복의 모드 값을 반환합니다. |
| 오프셋 (첫번째 프레임에서만) | 현재 반복 시작의 오프셋 값을 반환합니다. |
| 주기 (첫번째 프레임에서만) | 현재 프레임의 주기 값을 반환합니다. |
| 우선순위 | 현재 프레임의 우선순위 값을 반환합니다. |
| 프로세서 | 프로세서를 할당한 경우, 실행을 처리하도록 할당된 프로세서를 반환합니다. 프로세서를 할당하지 않은 경우에는 -2를 반환하며, 이는 LabVIEW가 프로세서를 자동으로 할당함을 의미합니다. |
| 시작 (첫번째 프레임에서는 사용할 수 없음) | 현재 프레임의 시작 값을 반환합니다. |
| Timeout | 현재 프레임의 타임아웃 값을 반환합니다. |
| 휴면 해제 이유 | 현재 반복의 실행 시작에 대한 이유를 가진 열거형 타입을 반환합니다. 가능한 값은 Normal일 때 0, Aborted일 때 1, Asynchronous Wakeup일 때 2, Timing source error일 때 3, Timed loop error일 때 4, Timeout일 때 5입니다. |
(3) 오른쪽 데이터 노드
![]() | 데드라인 | Timed 루프가 다음 프레임을 종료해야 하는 시간을 지정합니다. 데드라인 값은 다음 프레임의 시작에 상대적이며 타이밍 소스의 단위로 지정됩니다. 기본은 -1이며 변동 없음을 의미합니다. |
![]() | 에러 | Timed 루프 서브다이어그램 밖으로 에러 또는 경고를 전달합니다. 에러가 에러 조건을 받는 경우, Timed 루프는 시간에 관계 없이 다음 프레임을 실행합니다. 에러가 마지막 프레임에서 에러 조건을 받는 경우, 구조는 시간에 관계 없이 현재 반복의 실행을 완료하고, 루프를 닫고, 출력 노드에 에러 조건을 반환합니다. |
![]() | 모드 (마지막 프레임에서만) | 다음 Timed 루프 반복의 모드를 지정합니다. 사용 가능한 모드는 No change, Process missed periods maintaining original phase, Process missed periods ignoring original phase, Discard missed periods maintaining original phase 및 Discard missed periods ignoring original phase와 같이 5가지입니다. |
![]() | 오프셋 (마지막 프레임에서만) | 다음 반복이 실행 시작을 기다리는 시간의 길이를 지정합니다. 오프셋 값은 다음 반복의 시작에 대해 상대적이며 타이밍 소스의 단위로 지정됩니다. 기본은 -1이며 변동 없음을 의미합니다. 다음 반복의 오프셋을 설정하는 경우, 반드시 새 모드 값을 설정해야 합니다. |
![]() | 주기 (마지막 프레임에서만) | Timed 루프 다음 반복의 주기를 타이밍 소스와 같은 단위로 지정합니다. 기본은 -1이며 변동 없음을 의미합니다. 노트 노트: Timed 루프의 주기를 0으로 설정하지 마십시오. 주기가 0인 경우 정의되지 않은 어플리케이션 동작을 초래할 수 있기 때문에 National Instruments는 주기가 0인 Timed 루프가 있는 어플리케이션은 지원하지 않습니다. Timed 루프의 우선 순위 실행 기능이 있으면서 최대한 빨리 실행되는 루프가 필요한 경우, 대신 Timed 시퀀스 구조 안에서 While 루프를 사용하십시오. |
![]() | 우선순위 | 다음 Timed 루프 반복의 우선순위를 지정합니다. 우선순위는 블록다이어그램의 다른 객체에 상대적으로 다음 반복이 언제 실행되는지 지정합니다. Timed 구조의 우선 순위가 높을수록 다른 Timed 구조보다 빨리 실행됩니다. 우선순위 입력의 값은 1과 65,535 사이의 양의 정수여야 합니다. |
![]() | 프로세서 | 실행을 처리할 프로세서를 지정합니다. 기본은 -1이며, LabVIEW가 입력 노드에 지정된 것과 같은 프로세서를 할당함을 의미합니다. -2를 입력하면 LabVIEW가 프로세서를 할당합니다. 수동으로 프로세서를 지정하려면, 0에서 255 사이의 숫자를 입력합니다. 이때 0은 사용 가능한 첫번째 프로세서를 나타냅니다. 사용 가능한 프로세서의 개수를 넘는 숫자를 입력하는 경우, 런타임 에러가 발생하고 Timed 구조는 실행되지 않습니다. |
![]() | 시작 (마지막 프레임에서는 사용할 수 없음) | 다음 프레임이 실행 시작을 기다리는 시간의 길이를 지정합니다. 시작 값은 현재 프레임의 시작에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
![]() | Timeout | 다음 반복이 실행 시작을 기다리는 시간의 최대 길이를 지정합니다. 기본은 -1이며 다음 반복에 대해서 지정된 타임아웃이 없음을 의미합니다. 타임아웃 값은 이전 반복의 종료에 상대적이며 프레임 타이밍 소스의 단위로 지정됩니다. |
(4) 출력 노드
| 실제 종료 [f-1] (단일 프레임 Timed 루프에서는 사용할 수 없음) | 이전 프레임(f-1)의 실제 종료 시간을 반환합니다. 실제 종료 값은 타이밍 소스의 시작 시간에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 실제 종료[i-1] | 이전 반복(i-1)의 실제 종료 시간을 반환합니다. 실제 종료 값은 타이밍 소스의 시작 시간에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 에러 | Timed 루프가 받은 에러를 전달하고 서브다이어그램으로부터 에러를 반환합니다. |
| 예상되는 종료 [f-1] (단일 프레임 Timed 루프에서는 사용할 수 없음) | 이전 프레임(f-1)의 예상 종료 시간을 반환합니다. 반복이 시작될 때 프레임 타이밍 소스가 리셋되지 않는 경우, 예상 종료 값은 타이밍 소스에 상대적입니다. 예상 종료 값은 타이밍 소스 단위로 지정됩니다. 예상 종료(f-1)는 다음 주기의 시작과 같습니다. |
| 예상되는 종료[i-1] | 이전 반복(i-1)의 예상 종료 시간을 반환합니다. 반복이 시작될 때 프레임 타이밍 소스가 리셋되지 않는 경우, 예상 종료 값은 타이밍 소스에 상대적입니다. 예상 종료 값은 타이밍 소스 단위로 지정됩니다. |
| 늦게 끝냄? [f-1] (단일 프레임 Timed 루프에서는 사용할 수 없음) | Timed 루프가 지정된 데드라인 전에 이전 프레임을 종료하지 못한 경우 참을 반환합니다. |
| 늦게 끝냄? [i-1] | Timed 루프가 지정된 데드라인 전에 이전 반복을 종료하지 못한 경우 참을 반환합니다. |
| 프레임 지속기간 (단일 프레임 Timed 루프에서는 사용할 수 없음) | 이전 프레임의 지속기간을 반환합니다. 프레임 지속기한은 프레임의 시작에 상대적이며 프레임 타이밍 소스의 단위로 지정됩니다. |
| 글로벌 종료 시간 | 이전 반복 또는 프레임의 종료 시간을 나노초로 반환합니다. Timed 루프가 절대 타이밍 소스를 사용하는 경우, 글로벌 종료 시간은 타임스탬프를 반환합니다. 그렇지 않은 경우, 글로벌 종료 시간은 64 비트 정수를 반환합니다. Timed 루프가 RT 타겟에서 실행되는 경우, 글로벌 종료 시간은 타겟의 시스템 시간을 기준으로 하며 외부 클럭과 동기화될 수 있습니다. Timed 루프가 Windows에서 실행되는 경우, 글로벌 종료 시간은 Windows 시스템 시간을 기준으로 합니다. |
| 반복 지속기간 | 이전 반복의 실행 길이의 타임스탬프를 반환합니다. 반복 지속기간 값은 반복의 시작에 상대적이며 타이밍 소스의 단위로 지정됩니다. |
| 프로세서 | 프로세서를 할당한 경우, 실행을 처리하도록 할당된 프로세서를 반환합니다. 프로세서를 할당하지 않은 경우에는 -2를 반환하며, 이는 LabVIEW가 프로세서를 자동으로 할당함을 의미합니다. |
Timed 루프의 사용과 설정에 대한 추가적인 정보는 Timed 루프 설정하기 토픽을 참조하십시오.
Timed 루프를 While 루프로 변환하려면, Timed 루프에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 While 루프로 대체를 선택합니다. Timed 루프를 Timed 시퀀스 구조로 변환하려면, Timed 루프에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 Timed 시퀀스로 대체를 선택합니다.
While 루프와 달리 Timed 루프는 정지 터미널의 연결을 요구하지 않습니다. 정지 터미널에 아무것도 연결하지 않았을 경우, 루프는 끝없이 실행될 것입니다.
FPGA VI에서 Timed 루프의 사용과 설정에 대한 더 자세한 정보는 Timed 루프(FPGA Module) 토픽을 참조하십시오.
예제
LabVIEW 포함되는 다음 예제 파일을 참조하십시오.
- labview\examples\Structures\Timed Loop\Timed Loop Offset.vi
- labview\examples\Structures\Timed Loop\Timed Loop Resettable Source Type.vi










