Lesson2 While Loop(와일루프)

안녕하세요. 알렉스 입니다.

오늘은 LabVIEW에서 가장 많이 쓰이는 함수중에 하나인 와일루프(While Loop)에 대해서 설명 드리겠습니다.

사진1) 와일루프 선택
 프로그램을 시작하시고 블록 다이어그램에서 사진1 처럼 와일루프를 선택합니다.

사진2) 와일루프(While Loop)


사진2에 보면 검은 사각형 안에 코드를 짜는 거고 그안에 반복 터미널과 조건 터미널을 볼수 있습니다. 반복 터미널은 와일루프의 코드가 몇회 반복됬는지 알려줍니다. 와일루프 내의 프로그램이 모두 수행할때까지 숫자가 올라가지 않고 모두 돌았을 때에야 1씩 올라갑니다.
 조건 터미널은 와일루프가 종료되는 조건 입니다. 종료 조건은 2가지가 있는데 사진12를 참고하면 됩니다.



사진3) 와일루프 순서도

사진3은 와일루프가 동작되는 간단한 순서도 입니다. 2번의 코드는 와일루프 내에 수행되는 코드 입니다. 3번의 조건은 조건 터미널을 말합니다. 1번의 시작은 프로그램을 시작할때를 말하고 조건이 계속 거짓이면 와일루프는 전원이 꺼지거나 PC가 고장날때 까지 계속 반복합니다.

사진4) 문자열 컨트롤(왼쪽)과 인디게이터왼쪽) 연결
저번 Lesson1에서 처럼 문자열 컨트롤과 인디게이터를 만들겠습니다. 이번에는 와일루프 안쪽에 만드는 것입니다. 완료후 실행을 해 봅시다

사진5) 에러 발생
하지만 실행을 할수 없습니다. 사진5에서 보면 화살표가 깨져 있는 것을 알수 있습니다. 이는 LabVIEW내에서 실행하기 전에 에러를 감지 했다는 것입니다.

사진5) 에러 발생조건
깨진 화살펴를 클릭해면 몇개의 에러가 있는지 그리고 왜 에러가 났는지 알려주게 됩니다.
사진5에서 에러 보이기를 클릭하시면 에러가 발생한 지점으로 갈수 있습니다. 사진5의 에러는 '조건 터미널이 연결되지 않았습니다' 입니다.




사진6) 에러 발생 위치
사진6에서 조건 터미널에 어떻한 것도 연결되어 있지 않습니다. 사진3의 순서도에서 3번이 조건 터미널 입니다. 그런데 이것이 참이나 거짓을 결정하지 않는다면 와일루프는 에러에 걸립니다. 언제 종료해야 할지 컴퓨터가 모르기 때문입니다.

사진7) 버튼 추가
사진7의 버튼을 추가합니다. 버튼은 참,거짓 2가지 경우만 갖고 있습니다.



사진8) 버튼 연결
버튼을 조건터미널에 연결합니다. 사진8에서 왼쪽의 불리언은 프런트 패널에 있는 버튼 입니다. 오른쪽은 불리언과 조건 터미널이 연결된 상태 입니다.



사진9) 프로그램 실행후
이제 화살표를 보면 다시 연결됬다는 것을 알수 있습니다. 실행을하고 사진9 처럼 하면 문자열 인디게이터(문자열2)에 컨트롤에서 입력한 문자열이 나오게 됩니다.



사진10) 문자열 컨트롤에 문장 기입후
사진10은 문자열 컨트롤에 문자를 입력하고 난후 인디게이터에 나온 결과 입니다. 




사진11) 프로그램 정지
당연히 프런트 패널에서 코드를 정지를 할수 있습니다. 불리언을 누르면 코드는 정지를 합니다. 사진11은 코드가 정지된 상태이고 불리언이 On(참) 상태 입니다.



사진12) 조건 터미널 조건 모드
하지만 반대의 경우도 만들수 있습니다. 조건 터미널을 클릭하시면 사진12의 아래와 같은 모양이 나옵니다. 이는 거짓이 들어올때 와일루프를 정지 하는 것입니다. 코드를 짜실때 사진12와 같이 상황에 따라서 사용할수 있습니다.



사진13) 반복터미널에 인디게이트 생성
이제 반복터미널의 상태를 보도록 하겠습니다. 사진13에서 반복터미널에 인디게이터를 생성합니다. 이때 생성되는 인디게이터는 숫자를 표시합니다.



사진14) 프로그램 실행후 반복터미널 상태
프로그램을 실행하자마자 숫자형 인디게이터가 미친듯이 올라갑니다. 이는 와일루프가 CPU에서 최대한 많은 자원을 가져가기 때문입니다. 즉 프로그램이 실행될때 와일루프를 최대한 빠르게 돌릴려고 CPU로부터 갖고 올수있는 자원을 갖고 오는 것입니다.



사진15) 프로그램 실행전 CPU

사진16) 프로그램 실행후 CPU

사진15,16은 와일루프 실행 전과 후의 CPU사용율을 나타냅니다. 'Ctrl+ALt+Delete'키를 누르면 위와 같은 창을 띄울수 있습니다. 프로그램의 최적화를 할려면 가능한 최소한의 자원을 사용해야 합니다.

사진17) 기다림(ms) 생성
블록다이어 그램에서 사진17과 같이 기다림함수를 생성합니다. 기다림 함수는 와일루프가 한번 실행하고나서 모든 코드가 실행이 되면 마지막에 일정시간 정지하는 것입니다.



사진18) 왼쪽에 상수 생성
이번에는 왼쪽에 상수를 생성합니다. 상수는 변하지 않는 수입니다. 물론 상황에 따라서 컨트롤을 만들어도 됩니다. 



사진19) 코드 완성
상수를 생성하면 사진19처럼 1000이라는 값을 상수값으로 지정합니다. 1000은 1000ms을 말하는 것으로 1초입니다. 그렇게 되면 와일루프가 모든 코드를 실행한 다음 1초간 기다린후 다시 프로그램을 수행하는 구조 입니다. 필요에 따라 500,10000 등등 여러 숫자를 넣을수 있습니다. 사진19는 32비트 정수 입니다.



사진20) 프로그램 수정후 실행
이제 다시 실행을 하면 사진20처럼 많은 자원을 소비하지 않는 것을 알수 있습니다. 만약 와일루프에 있는 코드가 빠르게 실행을 해야 한다면 당연히 CPU의 자원이 더 필요합니다. 하지만 그렇지 않다면 궂이 중요하지 않은데 자원을 많이 쓸 필요가 없는거죠.

아래는 연습문제 입니다. 한번 For 루프를 이용해서 풀어 보시기 바랍니다.






긴글 읽어 주셔서 감사합니다.




YouTube 동영상


Discord Community Link




댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)