프로그래밍/랩뷰 기술자료

랩뷰 While 루프 생성 및 구성하기

에이티에스 2023. 6. 27. 08:21
728x90

While 루프는 주어진 조건이 충족될 때까지 코드 블록을 반복적으로 실행하는 데 사용하는 구조입니다. VI가 실행되면 While 루프 내부의 코드가 실행되고 조건 터미널이 평가됩니다.


While 루프 만들기

LabVIEW를 시작하고 새 VI를 엽니다. 파일»새 VI를 선택하여 빈 VI를 열 수 있습니다.

블록 다이어그램을 마우스 오른쪽 버튼으로 클릭하여 함수 팔레트의 임시 버전을 표시합니다.
선택 사항: 함수 팔레트의 왼쪽 상단 모서리에있는 압정을 클릭하여 더 이상 임시가 아닌 팔레트를 고정할 수 있습니다.
구조로 이동하여 While 루프를 선택합니다 .
블록 다이어그램에 루프를 배치하려면 루프가 원하는 크기가 될 때까지 마우스 왼쪽 버튼을 클릭하고 드래그합니다.

전면 패널에 정지 버튼을 추가합니다. 컨트롤 팔레트»불리언»정지 아래에서 찾을 수 있습니다.

블록 다이어그램에서 정지 버튼 아이콘을 while 루프로 드래그합니다.

while 루프의 실행을 제어할 수 있도록 정지 버튼을 조건 터미널에 연결합니다.

  • 기본적으로 정지 버튼을 누르면 참 값이 조건부 터미널에 전달되어 while 루프가 실행을 중지합니다.
  • 참고: 정지 버튼 대신에 부울 데이터를 조건 터미널에 연결하여 while 루프의 실행을 제어할 수 있습니다.

조건부 터미널을 구성합니다. 참인 경우 정지 참인 경우 계속의 조건 터미널을 변경하기 위해서는 조건부 터미널을 마우스 오른쪽 버튼으로 클릭하고 원하는 설정을 선택하면 됩니다.

조건부 터미널은 루프가 정지되는 시기를 정의합니다. 조건부 터미널에는 두 가지 설정이 있습니다. 참인 경우 정지 ( 

 ) 참인 경우 계속 ( 

 ).

조건부 터미널이 참인 경우 정지로 설정되고 부울 값 true가 조건부 터미널로 전송되면 루프가 실행을 중지합니다. 이것이 기본 설정입니다.

 

참인 경우 계속으로 설정하면 while 루프는 부울 값 true가 터미널로 전송되는 경우에만 실행됩니다.

(선택 사항) 반복 터미널을 마우스 오른쪽 버튼으로 클릭하고 인디케이터 생성을 선택하여 루프가 수행한 반복 횟수를 모니터링합니다.

 

 

While 루프에 구조 터널 추가

구조 터널을 사용하여 while 루프와 같은 구조 안팎으로 데이터를 공급합니다. while 루프로 데이터를 보내려면 구조 터널을 만들어야 합니다.
  • while 루프로 전송되는 데이터는 첫 번째 반복에서만 전송됩니다.
  • while 루프에서 전송되는 데이터는 마지막 반복 후에만 전송됩니다 .
    • 프런트 패널 데이터를 지속적으로 업데이트 하려면 인디케이터가 while 루프 내부에 있어야 합니다.

예: 완료된 반복 확인

while 루프를 만드는 단계를 완료하십시오. (위의 내용 참고)

전면 패널에 숫자 인디케이터를 만듭니다. (컨트롤»숫자»숫자형 인디케이터)

 

(선택 사항) 데이터 유형의 강제 변환을 방지하려면 인디케이터를 마우스 오른쪽 버튼으로 클릭하고 형»I32를 선택하여 숫자 표현을 I32로 변경합니다.

 

블록 다이어그램에서 반복 카운터를 숫자 인디케이터 아이콘에 연결합니다.

  • 구조 터널은 while 루프의 경계에 솔리드 블록으로 나타납니다. 블록은 터널에 연결된 데이터 유형의 색상입니다.
  • 루프가 종료된 후 데이터가 루프 밖으로 전달됩니다.
  •  
다음 블록 다이어그램에서 반복 터미널은 터널에 연결되어 있습니다. 터널의 값은 while 루프가 실행을 마칠 때까지 반복 표시기에 전달 되지 않습니다. 스니펫을 LabVIEW 코드로 가져와 다음 사항을 확인하십시오.
  • 난수 인디케이터는 while 루프 안에 있습니다. 이 표시기에 대한 데이터는 반복 할 때마다 업데이트됩니다.
  • 반복 횟수 인디케이터는 코드가 실행되는 동안 0 값을 갖습니다. 이는 while 루프가 실행을 중지할 때까지 터널이 표시기에 정보를 전달하지 않기 때문입니다.
  • 정지를 누르면 반복 횟수 인디케이터가 업데이트됩니다.


정지 조건 설정

부울 함수를 사용하여 while 루프 조건 터미널에 영향을 미치는 여러 조건을 구현할 수 있습니다. "or" 함수를 사용하여 오류 와이어 상태와 중지 버튼 컨트롤을 비교하여 둘 중 하나가 참이면 조건 터미널이 참 신호를 수신하고 while 루프가 중지되도록 할 수 있습니다.

while 루프를 만드는 단계를 완료하십시오. (위의 내용 참고)

프론트 패널에 에러 입력 3D.ctl 컨트롤을 놓습니다. (컨트롤 팔레트»배열&클러스터»에러 입력 3D.ctl)

블록 다이어그램에서 에러 입력 3D.ctl 아이콘이 while 루프 밖에 있는지 확인합니다.

정지 버튼과 조건부 터미널 사이의 연결 와이어를 제거합니다.

while 루프 외부에 간단한 에러 핸들러를 배치합니다. (함수 팔레트»대화상자 & 사용자 인터페이스»단순 에러 핸들러.vi) 이 함수는 호출 시 발생한 오류를 보고합니다.

구조 터널을 이용하여 while 루프를 통과하도록 에러 컨트롤을 단순 에러 핸들러와 연결합니다.

에러 컨트롤의 출력을 while 루프의 경계에 연결합니다. 테두리를 클릭하여 터널을 만듭니다.

터널에서 while 루프의 반대쪽 경계까지 그리고 단순 에러 핸들러의 입력으로 와이어를 계속 연결합니다.

while 루프 안에 이름으로 풀기 함수를 배치합니다. (함수 팔레트»프로그래밍»클러스터, 클래스, &배리언트»이름으로 풀기) 이 함수를 사용하여 에러 데이터 와이어의 부울 부분을 분리할 수 있습니다.

에러 와이어를 이름으로 풀기 기능에 연결합니다.

이름으로 풀기 함수를 마우스 왼쪽 버튼으로 클릭하고 상태를 선택하여 에러 데이터의 부울 부분을 표시합니다.

while 루프 안에 or 함수를 놓습니다. (함수 팔레트»프로그래밍»불리언»Or함수)

데이터 와이어를 연결합니다.

or 함수에 정지 버튼 컨트롤과 이름으로 풀기 함수에서의 상태 조건을 연결합니다.

or 함수의 출력을 조건부 터미널에 연결합니다.

아래 스니펫은 정지 버튼을 누르거나 while 루프 내부에서 에러가 감지되면 while 루프의 실행을 중지합니다.

 


기타 중지 조건 고려 사항

위에서 설명한 상황(사용자 입력 또는 오류시 중지)은 조건부 중지 입력을 설정하는 매우 일반적인 사용 사례입니다. 그러나 이것이 중지 조건에 복잡성을 추가하는 유일한 방법은 아닙니다.
  • 세 개 이상의 부울 조건을 비교하려면 복합 산술 함수를 사용하십시오. 이는 에러 상태, 사용자 입력 및 측정 데이터 값을 동시에 모니터링하고 임계값 또는 상태가 발생한 경우 코드 실행을 중지하려는 경우에 유용합니다.
  • Or, 복합 산술 함수 또는 기타 불리언 비교 함수를 사용하여 에러 데이터를 비교할 때 에러 번들을 산술 함수에 직접 연결할 수 있습니다. 에러 상태 부울은 자동으로 구문 분석됩니다.
    • 이것은 모든 LabVIEW 버전에 해당되지 않을 수 있습니다. 중지 조건 설정 섹션에 설명된 프로세스는 모든 버전의 LabVIEW 및 따라야 할 올바른 프로세스에 적용됩니다.

 

 

728x90
반응형
그리드형