• 검색 결과가 없습니다.

• For 루프 예제

N/A
N/A
Protected

Academic year: 2022

Share "• For 루프 예제"

Copied!
19
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

- 5장. 제어연산(실습1)

(2)

• For 루프 예제

• While 루프 의 속도

• 난수 발생 및 일치되는 실수 값 찾기

• While 루프를 이용한 난수 발생 및 플롯

• 난수의 연속적인 합 계산기

목 차

(3)

For 루프 예제

2/18

이 예제는 블록 다이어그램에 위치한 For 루프 내에 난수(0-1)함수( ) 와 더하기 함수( )를 위치시키고 프런트 패널 상에 컨트롤과 인디케이 터를 배치시킬 것이다.

예제 5-1

(4)

① 컨트롤 > 일반 > 숫자형 팔레트에서 숫자형 컨트롤과 인디케이터를 선택하 여 프런트 패널에 배치하고 각각 라벨을 X와 Y로 입력한다.

② 함수 > 프로그래밍 > 숫자형 팔레트에서 난수(0-1) 함수 와 더하기 함수 를 선택해서 블록 다이어그램에 배치한다.

③ 그림과 같이 난수(0-1) 함수의 출력과 컨트롤 X를 더하기 함수의 입력으로 와 이어 한다.

④ 카운터 터미널에서 단축메뉴를 띄우고 상수 생성을 선택해서 For루프에 상수 를 생성한다. 상수의 값(기본적으로 0)은 100으로 한다.

⑤ 반복 터미널에서 단축메뉴를 띄우고 인디케이터 생성을 선택해서 인디케이 터를 생성하고 반복 카운터로 라벨을 입력한다.

⑥ 디버깅하고 실행한다. 한 가지 제안한다면 실행 하이라이트 버튼을 선택하고 프로그램을 실행시킨다. 그렇지 않으면 루프의 실행은 관찰하기 어려울 정도 로 빠를 것이다.

(5)

4/18

결 과

(6)

While 루프의 속도

While 루프는 CPU의 성능이 가능한 범위에서 최대한 빨리 실행된다. 다음 예제를 통하여 확인해 보자.

예제 5-2

(7)

6/18

① 새 VI를 만들고, 반복횟수.vi라는 이름으로 저장한다.

② While 루프를 블록 다이어그램에 위치시킨다.

③ 참인 경우 정지에서 단축메뉴의 생성 > 컨트롤을 이용하여 [정지]버튼을 생 성시킨다.

의 단축메뉴에서 생성 > 인디케이터를 합니다. I32 정수 값의 인디케이터 가 생성된다.

실행 하이라이트를 이용하여 관찰해본다.

(8)

⑥ While 루프 속에 시갂 지연을 위치시킨다. 그리고 시갂 지연(초)에 0.2를 입력 한다.

⑦ VI를 실행시켜 관찰한다.

(9)

난수 발생 및 일치되는 실수 값 찾기

8/18

While 루프와 난수 발생기를 이용하여 입력한 실수 값과 똑 같은 난수가 생성될 때까지의 While 루프 반복횟수를 찾는 VI를 만들어 보자

예제 5-3

(10)

① 새 VI를 열고, 난수 자동 일치.vi라는 이름으로 저장한다.

② While 루프를 블록 다이어그램에 위치시킨다.

③ 난수(0-1)를 위치시킨다. 함수 > 프로그래밍 > 숫자형 팔레트에서 난수(0-1) 을 찾을 수 있다.

④ 곱하기를 위치시키고, 단축메뉴에서 상수 생성을 이용하여 상수를 만들고 10,000을 붙인다. 난수는 0에서 1사이의 값이므로 10,000을 곱하여 0에서 10,000사이의 값으로 바꿔준다.

⑤ 함수 > 프로그래밍 > 숫자형 팔레트에서 반올림을 찾아서 위치시키고, 출력 단의 단축메뉴에서 생성 > 인디케이터를 선택하여 DBL 인디케이터를 만들어 준다. 라벨을 ‘현재값’으로 바꿔준다.

(11)

10/18

⑥ 함수 > 프로그래밍 > 비교 팔레트에서 같지 않음?을 찾아서 위치시키고, 입력 쪽의 단축메뉴에서 컨트롤 생성으로 DBL 컨트롤을 만들고 라벨을 ‘입력’

으로 바꾼다.

⑦ 의 단축메뉴에서 참이면 계속을 선택하여 로 바꾼 다음, 의 출력을 연결한다.

(12)

을 오른쪽으로 옮기고 함수 > 프로그래밍 > 숫자형 팔레트에서 증가를 찾아서 위치시킨다. 그리고 출력에 인디케이터 생성을 하고 라벨을 ‘반복회수’

로 바꾼다. 1을 더해주는 것은 가 0에서부터 시작하기 때문이다.

(13)

12/18

최소값: 0 리미트 밖의 값에 응답: 강제 변환 최대값: 10,000 리미트 밖의 값에 응답: 강제 변환 증가: 1 리미트 밖의 값에 응답: 강제 변환

⑩ 입력에 0에서 10,000사이의 정수 값을 입력하고 실행시킨다.

실행 하이라이트를 이용하여 관찰해본다.

⑨ 난수에 10,000을 곱하고 반올림 처리를 했기 때문에, 0에서 10,000사이의 정 수만 생성된다. 만약 [입력]에 이외의 값을 입력하면, 일치되는 값을 찾지 못 하고 무한 루프가 된다. 그래서 [입력]에 0에서 10,000사이의 정수 값만 입력 되도록 범위를 정해준다. 단축메뉴에서 데이터 입력 부분을 선택하고 아래와 같이 설정을 바꿔준다.

(14)

While 루프를 이용한 난수 발생 및 플롯

웨이브 폼 차트를 이용하여 난수(0-1)를 플롯 해보자

예제 5-4

(15)

14/18

③ VI를 실행 시켜서 확인해본다.

① 새 VI를 만들고 블록 다이어그램에 While 루프를 위치시킨다.

② 프런트 패널에 웨이브 폼 차트를 위치시킨다.

난수(0-1)는 0에서 1사이의 난수를 생성하는 함수이며, 함수 > 프로그래밍

> 숫자형 팔레트에서 찾을 수 있다.

시간 지연은 함수 > 프로그래밍 > 타이밍 팔레트에서 찾을 수 있다. While 루프는 실행속도를 조절한다. 0.5초에 한 번씩 While 루프를 실행하기 위하여 [시갂 지연(초)]에 0.5를 입력한다.

(16)

난수의 연속적인 합 계산기

일련의 난수의 연속적인 합을 계산하기 위해 시프트 레지스 터를 사용할 것이다. Sum

i

= Sum

i-1

+ Sum

i

예제 5-5

• 난수의 생성 횟수는 프런트 패널의 노브 컨트롤을 통해 입력된다. 블록 다이 어그램을 이용해서 일렦의 난수의 연속적인 합을 계산하는 VI를 만들어 보도 록 한다. 합은 다음과 같이 구해진다.

• Sumi = Sumi-1 + Sumi

• i는 0에서 N-1까지의 수이고, Sumi는 i번째 반복에서 계산된 합이며, Sumi-1 는 현재 반복 이전까지의 총합이다. 이 예제의 주목적은 시프트 레지스터를 For 루프, While 루프와 함께 사용하는 방법에 대해 이해하는 것이다. 아래의 단계를 따라 VI를 구성해 보도록 한다.

(17)

16/18

(18)

① 프런트 패널에 노브 컨트롤과 탱크 인디케이터를 배치하고 라벨을 각각 루프 카운트 실행 횟수와 합계로 입력한다. 노브 컨트롤은 For 루프의 실행 횟수를 지정하고, 탱크 인디케이터는 연속적인 합계를 보여 준다. 노브 컨트롤과 탱 크 인디케이터는 컨트롤 > 일반 > 숫자형 팔레트에 있다.

② 컨트롤 > 일반 > 숫자형 팔레트에서 숫자 인디케이터를 선택하여 프런트 패 널에 배치하고 라벨을 반복 횟수로 입력한다. 이 인디케이터는 For 루프의 반 복 횟수를 나타낸다. 그리고 노브 컨트롤과 탱크 인디케이터의 각각에 팝업 한 후 보이는 아이템 > 디지털 디스플레이를 선택하여 데이터를 볼 수 있게 한다.

③ 블록 다이어그램으로 이동한다. 그림과 같이 For 루프를 위치시키고 노브 컨 트롤 터미널을 카운트 터미널에 와이어 한다.

④ For 루프의 테두리에서 마우스 오른쪽 버튼을 누르면 나타나는 단축메뉴에서 시프트 레지스터 추가를 선택하여 시프트 레지스터를 생성한다. 함수 > 프로 그래밍 > 숫자형 팔레트에서 숫자 상수를 선택하여 왼쪽 시프트 레지스터에 와이어 하면 시프트 레지스터는 0으로 초기화된다.

⑤ 함수 > 프로그래밍 > 숫자형 팔레트에서 난수(0-1) 함수와 더하기 함수, 증가 함수를 For루프 내에 위치시킨다.

(19)

18/18

⑦ 반복 터미널을 증가함수에 와이어 한다. 카운트가 0에서부터 시작되므로 카 운트를 1씩 증가시켜서 프런트 패널에 표시한다.

⑧ 실행 버튼을 눌러서 VI를 실행하고, 그 결과를 살펴보도록 한다.

이 예제에서 시프트 레지스터는 한번 반복해서 다음 반복으로 변수 Sumi-1의 값을 넘겨주기 위해 사용된다.

참조

관련 문서

기본설정) 특수모듈 User Data 읽기/쓰기 실패시 정상동작 불가... 입력모듈로부터

• 칩의 사용 공간이 좁고, 패키지의 역할을 해줄 수 있는 application의 경우.. 반도체 포장을 개봉한 다음부터 실장까지의 용이하게 하는 것이 패키지의 역할이므로, 그 과정에서

옥외탱크저장소의 탱크 중 압력탱크의 경우에는 기밀시험과 비파괴시험 또는 수압시험(최대 상용압력의 1.5배의 압력으로 10분간 수압을 가하는 시험을

Each switching suitcase or each 1,000 test point switching unit in the 5,000 test point switching cabinet can be provided wired with 20 AUX output jacks if XXX has a

NFPA의 방사방식은 탱크 주변부에서 포를 만들어 중심부로 포를 풀어 퍼지게 하는 것이 다.. 그러나 부표면법은 액체표면의

실행 중인

• Defenders need visibility into process and file telemetry, command line parameters, and Windows Event logs. • Subscribe to ETW logs to collect PowerShell cmdlets and

두 개의 평행한 루프 사이의 유도성 누화를 상호 인덕턴스 모델로 표현한 등가