피드백 노드
- 업데이트 날짜:2025-08-27
- 5분 (읽기 시간)
피드백 노드를 사용하여 이전 블록다이어그램 실행 또는 루프 반복에서 온 데이터를 저장합니다. 피드백 노드는 이전 실행으로부터의 상태 정보를 저장하고 불러오는데 유용합니다.
피드백 노드는 받은 데이터에 대해 아무 동작도 수행하지 않습니다. 대신 초기화 터미널 에서 값을 받아 해당 값을 다음 입력 터미널에 전달합니다. 피드백 노드가 새 값을 받으면, 노드가 다른 입력 터미널에 그 값을 전달할 때까지 값이 노드에 저장됩니다. 피드백 노드는 피드백 컨트롤 이론과 디지털 신호 처리에서 z-1 블록과 유사합니다.
피드백 노드를 생성하기
SubVI, 함수, 또는 SubVI와 함수 그룹의 출력을 같은 VI, 함수, 또는 그룹의 입력에 연결하고 옵션 대화 상자의 블록다이어그램 페이지에서 사이클내에 피드백 노드 자동 삽입을 활성화하면 다음에 보이는 것처럼 피드백 노드가 자동으로 나타납니다. LabVIEW는 기본설정으로 사이클내에 피드백 노드 자동 삽입을 활성화합니다.
또한 함수 팔레트에서 수동으로 피드백 노드를 선택할 수도 있습니다.
피드백 노드에 대한 예제는 Structures\Feedback Node 디렉토리에 있는 Feedback Node - Building an Array VI를 참조하십시오.
초기화 터미널
초기화 터미널은 피드백 노드의 초기값을 설정합니다. 다음에 보이는 것처럼, 사용자가 피드백 노드를 어떻게 설정하는지에 따라 초기화 터미널의 모양이 변합니다.
피드백 노드를 블록다이어그램에 놓으면, 초기화 터미널은 노드에 연결된 상태로 남아있으며 노드는 VI가 컴파일 또는 로드할 때마다 매번 글로벌하게 초기화됩니다. 첫 번째 실행에서 피드백 노드의 초기 입력은 해당 데이터 타입에 대한 기본값입니다. 하지만, 사용자가 피드백 노드의 초기 값을 설정할 수 있습니다. 사용자가 초기 값을 설정하는 경우, 피드백 노드는 VI가 처음으로 호출하여 실행될 때 해당 값으로 초기화됩니다. VI의 두번째 실행부터는 실행시 초기값이 이전 실행의 마지막 값입니다. 루프 안에서 피드백 노드를 사용하는 경우, 초기화 터미널을 루프의 왼쪽 에지로 옮겨 루프가 실행될때마다 노드가 초기화하도록 설정합니다.
활성화 터미널
다음에 보이는 것처럼 활성화 터미널을 사용하여, 피드백 노드를 활성화 또는 비활성화시킬 수 있습니다.
피드백 노드에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 활성화 터미널을 선택하여, 활성화 터미널을 디스플레이할 수 있습니다. 활성화 터미널이 참으로 설정되어 있으면, 피드백 노드는 사용자가 프로퍼티 대화 상자 또는 노드의 바로 가기 메뉴에서 설정한 실행 조건에 맞게 실행됩니다. 활성화 터미널이 거짓으로 설정되어 있으면, 터미널의 값이 다시 참으로 설정될 때까지 피드백 노드는 이전 실행 또는 반복으로 부터의 최종 값을 계속 출력하게 됩니다.
데이터의 샘플
기본으로, 피드백 노드는 이전 실행 또는 반복의 데이터만 저장합니다. 하지만, 실행 및 반복 횟수를 늘려서 피드백 노드의 출력을 지연시킴으로써, 피드백 노드가 연속적인 여러 실행 또는 반복에서의 데이터 샘플을 저장하도록 피드백 노드를 프로퍼티 대화상자의 설정페이지에서 설정할 수 있습니다. 지연을 하나의 실행 또는 반복이 넘도록 증가시키면, 피드백 노드는 사용자가 지정한 지연이 완료될 때까지 초기화 값만 출력합니다. 그 후에 피드백 노드는 저장한 값을 한 번에 하나씩 순서대로 출력하기 시작합니다.
| 노트 (FPGA Module) 프로퍼티 대화 상자의 FPGA 구현 페이지에서 FPGA 리셋 방법 무시 확인란에 확인 표시를 하는 경우, LabVIEW FPGA Module은 기본적인 레지스터 인스턴스에서 리셋을 제거합니다. 이렇게하면 컴파일러가 플립 플롭 대신 시프트 레지스터 검색 테이블을 사용하여 지연을 구현할 수 있게 됩니다. SRL은 여러 지연을 단일 룩업 테이블(LUT)로 병합하므로 플립 플롭에 비해 FPGA 리소스 사용량을 상당히 감소시킬 수 있습니다. |
예를 들어, 지연을 3으로 지정하는 경우에 피드백 노드는 3 번째 루프 반복까지 초기화 값을 출력합니다. 그 이후의 반복에서 피드백 노드는 첫번째 반복, 즉 반복 0으로부터의 값을 출력하고, 그 다음에는 2번째 반복의 값을 출력하는 방식으로 이어져서 동작합니다. 다음의 블록다이어그램은 초기화 값이 0이고 지연이 3인 피드백 노드의 동작을 보여줍니다.
| 루프 반복 | 피드백 노드가 출력하는 값 | 마지막 값 | 피드백 노드가 저장하는 데이터 |
|---|---|---|---|
| 실행 또는 반복 0 이전 | 해당 없음 | 해당 없음 | 0, 0, 0 |
| 0 | 0 | 0 | 0, 0, 0 |
| 1 | 0 | 1 | 0, 0, 1 |
| 2 | 0 | 2 | 0, 1, 2 |
| 3 | 0 | 3 | 1, 2, 3 |
| 4 | 1 | 5 | 2, 3, 5 |
| 5 | 2 | 7 | 3, 5, 7 |
| 6 | 3 | 9 | 5, 7, 9 |
| 7 | 5 | 12 | 7, 9, 12 |
위의 블록다이어그램에서 피드백 노드는 초기화 값 0을 3번 출력한 후에 피드백 노드가 받은 첫번째 값인 0을 출력합니다.
| 노트 두 개 혹은 그 이상의 실행이나 반복에 지연을 설정할 때 배열을 초기화 터미널에 연결하여 각각의 지연 원소를 임의의 값으로 초기화합니다. |
화살표 방향
노드에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 방향 변경을 선택하여 피드백 노드의 화살표 방향을 변경함으로써 와이어를 따라 흐르는 데이터의 흐름을 나타낼 수 있습니다. 화살표의 방향을 바꾸더라도 피드백 노드와 그에 연결된 와이어의 외형적 모양만 변경되며 데이터의 흐름 방향은 변하지 않습니다.
Z 변환 보기
피드백 노드에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 Z 변환 보기를 선택하여, 피드백 노드가 Z 변환 보기를 디스플레이하도록 변경할 수 있습니다. 이 보기를 사용하면 피드백 노드의 모양이 피드백 컨트롤 이론 및 신호 처리에서의 z-1 블록과 유사하게 변경됩니다. 피드백 노드를 Z 변환 보기로 변경하면, 피드백 노드의 외형적 모양만 변하며 노드의 기능은 변하지 않습니다.
프런트패널 인디케이터와 피드백 노드
피드백 노드와 같은 와이어 사이클에 연결된 프런트패널 인디케이터는 와이어 상에서 피드백 노드에 상대적인 위치에 따라 서로 다른 값을 디스플레이합니다. 다음 블록다이어그램에서 피드백 노드는 초기값을 다음 입력 노드에 전달합니다. 입력 노드는 초기값으로 작동한 후 최종값을 인디케이터에 전달하고 다시 이 값이 피드백 노드에 전달됩니다.
이전 블록다이어그램에서 [증가] 함수는 초기값 4에 작업을 한 후 이를 인디케이터에 전달합니다. 그렇게 되면 프런트패널 인디케이터가 5를 디스플레이합니다. 그러나 다음 블록다이어그램에서 피드백 노드는 같은 데이터 값을 [증가] 함수에 전달하나 인디케이터는 다른 값을 디스플레이합니다.
이전 블록다이어그램에서 피드백 노드 초기값인 4는 [증가] 함수에 도달하기 전에 인디케이터에 도달합니다. [증가] 함수에서 피드백 노드에 전달된 최종값은 5이지만 프런트패널 인디케이터는 초기값인 4를 디스플레이합니다.