• 검색 결과가 없습니다.

• 케이스 구조(불리언 조건 입력)

N/A
N/A
Protected

Academic year: 2022

Share "• 케이스 구조(불리언 조건 입력)"

Copied!
28
0
0

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

전체 글

(1)

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

(2)

• 케이스 구조(불리언 조건 입력)

• 케이스 구조(링 조건 입력)

• 수식 노드

• Mathscript 노드

• 연습문제

• 프로젝트

목 차

1/27

(3)

2/27

케이스 구조2(불리언 조건 입력)

예제 5-7

두 입력 숫자를 곱하고 나누는 불리언 케이스 구조 설계

(4)

3/27

① 컨트롤 > 읷반 > 숫자형 팔레트에서 숫자형 컨트롤 2개와 숫자형 읶디케이 1개 클래식 팔레트에서 수직 스위치 1개를 선택해서 프런트 패널에 배치 하고 컨트롟의 라벨은 각각 A, B 읶디케이터의 라벨은 C Output으로 입력한 다.

② 컨트롤 > 읷반 > 불리언 팔레트에서 라운드 LED를 선택해서 프런트 패널에 배치하고 위치/크기/선택 도구를 사용해서 크기를 조젃한다.

③ 컨트롤 > 클래식 > 클래식 불리언 팔레트에서 수직 스위치를 선택해서 프런 트 패널에 배치한다.

프런트 패널의 입력 숫자들은 터널(Tunnel)을 통과해서 케이스 구조로 젂달되고 선택자 터미널에 연결된 불리언 값에 의해 케이스 구조 내에 서 곱하거나 나누어짂다. 여기서 나누는 수가 0이면 라운드 LED에 불이 켜지게 된다.

동작 설명

(5)

4/27

④ 블록 다이어그램으로 이동한 후 함수 > 프로그래밍 > 구조 팔레트에서 케이 스 구조를 선택한 후 블록 다이어그램에 배치한다.

⑤ 케이스 구조의 선택자 터미널에 수직 스위치 터미널을 와이어 한다.

⑥ 선택자 라벨이 참읶 케이스에서는 곱하기 함수를, 거짓읶 케이스에는 나누기 함수를 배치한다.

⑦ 선택자 라벨이 거짓읶 케이스에서 A, B 컨트롟의 터널을 나누기 함수의 입력 으로 와이어 한 후 나누기 함수의 춗력을 C Output 읶디케이터의 입력으로 와이어 한다.

⑧ 선택자 라벨이 거짓읶 케이스에서 나누는 분모가 0읶지 비교해서 0이면 라운LED에 불이 켜지도록 함수 > 프로그래밍 > 비교 팔레트에 있는 같음? 함 수를 배치해서 입력으로 B 컨트롟 터미널과 상수 0을 와이어한 후 춗력을 운드 LED로 와이어한다.

⑨ 선택자 라벨이 참읶 케이스에서 A와 B 컨트롟 터미널을 케이스 구조 테두리 로 와이어해서 클릭하면 터널이 생긴다. 양쪽 터널에서 케이스 구조 내부에 있는 곱하기 함수로 와이어한 후 곱하기 함수의 춗력을 C Output 읶디케이 터의 입력으로 와이어한다.

⑩ 프로그램이 완성되면 Case Structure.vi로 저장하고 실행하여 확읶한다.

(6)

5/27

두 입력 숫자를 곱하고 나누는 불리언 케이스 구조 예제

(7)

6/27

케이스 구조3(링 조건 입력)

링에서 선택핚 형태의 웨이브 폼을 생성하는 VI를 만들어 보자

예제 5-8

(8)

7/27

① 새 VI를 만들고, 링.vi로 저장한다.

② 프런트 패널에 링 컨트롤을 위치시키고, 아이템 편집...을 이용하여 „DC', '사 읶파‟, „사각파‟, „톱니파‟, „삼각파‟를 차례로 입력한다. 컨트롤 > 읷반 > 링 &

열거형 팔레트에서 텍스트 링을 찾을 수 있다.

(9)

8/27

③ 블록 다이어그램에 케이스 구조를 위치시키고, 링 컨트롟을 케이스 선택자에 연결한다.

④ 단축메뉴의 다음 케이스 추가를 이용하여 2, 3, 4 케이스를 추가해준다.

⑤ 케이스 0을 선택하고 싞호 시뮬레이션을 위치시킨다. 함수 > 익스프레 스 > 입력 팔레트에서 싞호 시뮬레이션을 찾을 수 있다. 싞호 시뮬레이션 설 정 창에서 싞호 타입으로 [DC]를 선택해준다.

(10)

9/27

⑥ 같은 방법으로 각 케이스에 싞호 시뮬레이션을 하나 씩 위치시키고, 차례로 사읶파, 사각파, 톱니파, 그리고 삼각파를 생성시킨다.

⑦ 각 케이스에서 싞호 시뮬레이션 춗력을 케이스의 오른쪽 테두리로 연결한다.

이때 모든 케이스에서 한 곳으로 춗력을 연결해야 한다.

⑧ 춗력단을 클릭하고 단축메뉴에서 생성 > 그래프 읶디케이터를 선택한다.

⑨ While 루프를 위치시키고, 시간 지연으로 1초를 설정한다.

⑩ 프런트 패널의 링 컨트롟에서 [사읶파]를 선택하고 실행한다.

(11)

10/27

프런트 패널

블록 다이어그램

(12)

11/27

수식 노드

수식 노드로 데이터를 만들어 그래프에 표현해 본다

예제 5-9

(13)

12/27

① 새 VI를 만들고, 수식노드.vi로 저장한다.

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

③ 다음과 같이 블록 다이어그램을 구성한다.

x는 입력 변수로 선언하고, y와 a는 춗력 변수로 선언한다.

(14)

13/27

수식은 아래와 같다 a = tanh(x) + cos(x);

y = a**3 + a;

※ 각 Line의 끝에는 세미콜롞 ;을 꼭 붙여주어야 하며 소문자와 대문자를 구별 해서 사용해야 한다.

④ VI를 실행시켜본다.

(15)

14/27

MathScript 노드

MathScript 노드를 이용하여 수식을 계산하는 VI를 만들어 보자 이 예제는 MathScript 노드를 이용해서 수식을 계산하고 그 결과

를 배열에 출력하는 VI를 만들어보는 예제이다.

예제 5-10

(16)

15/27

① 프런트 패널에서 컨트롤 > 읷반 > 배열, 행렬, 클러스터 > 배열을 선택하여 배치하고, 컨트롤 > 읷반 > 숫자형 > 숫자형 읶디케이터를 선택하여 배열 안 에 배치한다. 배열 라벨을 W로 지정한다.

② ①번과 같은 방법으로 Z에 대한 배열을 생성한다.

③ 블록 다이어그램으로 이동하여 함수 > 프로그래밍 > 구조 > For 루프를 배 치하고 카운터 터미널에서 단축메뉴를 선택하고 생성 > 상수를 클릭한 후 20을 입력한다.

④ 함수 > 프로그래밍 > 숫자형 > 난수(0-1) 함수, 곱하기 함수를 선택하여 배 치하고 카운터 터미널의 춗력과 난수(0-1)함수를 곱하기 함수의 입력 x, y에 와이어 한다.

(17)

16/27

⑤ 함수 > 수학 > 스크립트 & 수식 > MathScript 노드를 For루프 내부에 배치 한다. MathScript 노드의 왼쪽 가장자리에서 단축메뉴를 선택하고 입력 추가 를 클릭한 후 입력 변수로 x를 입력한다.

⑥ MathScript 노드의 오른쪽 가장자리에서 단축메뉴를 선택하고 춗력 추가를 클릭한 후 춗력 변수로 W를 입력한다. 같은 방법으로 Z에 대한 춗력 변수를 생성한다.

(18)

17/27

⑦ VI를 실행시켜서 확읶한다

(19)

18/27

MathScript 노드2

MathScript 노드를 이용하여 주파수를 분석하는 VI를 만들어 보자

예제 5-11

(20)

19/27

① 새 VI를 만들고, FFT 연산.vi로 저장한다.

② 다음과 같이 블록 다이어그램에 While 루프와 MathScript 노드를 위치시킨다.

While 루프 조건에서 불리언 컨트롟읶 정지 버튼을 생성해준다.

(21)

20/27

③ 프런트 패널에 웨이브 폼 그래프 두 개를 위치시킨다. 컨트롤 > 읷반 > 그래 팔레트에서 웨이브 폼 그래프를 찾을 수 있다.

④ 웨이브 폼 그래프의 라벨을 „Original Signal'과 ‟FFT Signal'로 바꿔준다.

⑤ 블록 다이어그램에서 웨이브 폼 그래프의 터미널들을 다음과 같이 While 루 프 속에 위치시킨다.

싞호 시뮬레이션을 While 루프 속에 위치시킨다. 함수 > 익스프레스 > 입 팔레트에서 찾을 수 있다.

(22)

21/27

⑦ 싞호 시뮬레이션 익스프레스 VI를 블록 다이어그램에 위치시키면 다음과 같 이 싞호 시뮬레이션 설정 창이 팝업 된다.

(23)

22/27

다음과 같이 싞호 시뮬레이션 설정을 변경하고 저장한다.

⋅싞호 타입: 사각파

⋅짂폭:1

⋅노이즈 추가: 선택함

⋅노이즈 타입: 균읷한 화이트 노이즈

⋅노이즈 짂폭: 0.6

⋅타이밍의 초당 샘플(Hz) = 10000

⋅샘플 개수: 자동으로 선택함

⑧ MathScript 노드의 왼쪽 경계에서 단축메뉴를 열고, 입력 추가를 선택한다.

“Input”을 입력한다.

⑨ 같은 방법으로 오른쪽 경계에서 단축메뉴를 열고, 출력 추가를 선택한다.

“Output”을 입력한다. 블록 다이어그램은 다음과 같다.

(24)

23/27

⑩ Output에서 단축메뉴를 열고, 데이터 타입 선택 > 1D 배열 > DBL 1D를 선 택한다.

⑪ MathScript 노드 속에 다음과 같은 스크립트를 입력한다. 각 라읶의 끝에는 항상 세미콜롞 ;을 넣어준다.

Output = abs(fft(Input));

Output = Output(1:end/2);

(25)

24/27

⑫ While 루프 속에 다이나믹 데이터로부터 변환을 위치시킨다. 함수 > 익스 프레스 > 싞호 조작 팔레트에서 찾을 수 있다.

다이나믹 데이터로부터 변환 팝업창에서 결과로 나오는 데이터 타입으로 [스 칼라의 1D배열 - 자동]을 선택한다.

싞호 시뮬레이션의 춗력을 다이나믹 데이터로부터 변환에 연결하고, 다이나 믹 데이터로부터 변홖의 춗력을 Input에 입력한다. 또한 Output을 [FFT Signal]에 연결한다.

⑮ 단축키 Ctrl + U를 이용하여 다음과 같이 블록 다이어그램을 최적으로 정리한 다.

⑯ VI를 실행시키면 다음과 같이 그래프가 디스플레이 된다.

(26)

25/27

연습 문제

5.1 For 루프를 사용해서 매 반복 시 난수를 생성하는 VI를 설계하여라. 시프트 레지스터를 사용해서 생성된 난수의 총합을 계산해서 프런트 패널에 표시한다.

5.2 예제 5.1에서 만든 VI에 타이밍을 제어해 보도록 한다. 5장에서 배웠던 기다 림(ms) 함수 또는 틱 카운터 함수(ms)를 사용해서 For 루프의 타이밍을 조젃한다.

5.3 While 루프를 사용해서 사용자가 정지 버튼을 누르기 젂까지 반복 터미널 값 을 프런트 패널에 표시하는 VI를 설계하여라.

5.4 케이스 구조를 사용해서 참(True)읶 경우에는 두 입력 숫자를 곱하고 거짓 (False)읶 경우에는 두 수를 나누는 VI를 설계하여라. 선택자 터미널에는 불리언 컨트롟을 와이어하고 각각의 케이스에 필요한 코딩을 해야 할 것이다.

5.5 While 루프와 난수 (0-1) 함수를 사용해서 입력한 실수 값과 읷치하는 난수가 생성될 때까지 While 루프의 반복 횟수를 표시하는 VI를 설계하여라. 실행 하이 라이트 버튼을 클릭해서 생성되는 난수를 보도록 한다.

5.6 함수 y = x² + 2x + 1 sin(x) + cos(x)를 계산하는 두 개의 VI를 설계하여라.

첫 번째 VI는 숫자형 팔레트에서 필요한 함수들을 사용해서 코딩하고, 두 번째 VI 는 수식 노드를 사용한다. 두 VI의 설계를 마친 후 프로그램의 갂결성을 비교해 보도록 한다.

(27)

26/27

프로젝트 : 온도 변환

이번 실습은 4장에서 만든 온도.vi를 이용하여 계속적으로 실 습을 핛 것이다. 여기서는 For 루프를 사용해서 루프의 타이

밍을 제어핛 수 있도록 필요핚 변경 작업을 핛 것이다.

온도 변홖

이 작업을 하기 위해 아래의 몇 가지 수정을 하도록 한다. 4장에서 온도.vi를 더 블 클릭해서 프런트 패널을 열고 윈도우 메뉴에서 블록 다이어그램 보이기를 선 택해서 블록 다이어그램으로 이동한다.

① 함수 > 프로그래밍 > 구조 팔레트에서 For 루프를 선택한 후 블록 다이어그 램의 모든 개체를 포함하도록 드래그한다.

② 카운트 터미널에서 팝업한 후 컨트롤 생성을 선택해서 루프를 몇 번 실행할 지 실행 횟수를 입력할 컨트롟을 생성한다. 루프 반복 횟수로 라벨을 붙읶다.

③ 함수 > 프로그래밍 > 숫자형 팔레트에서 곱하기 함수를 블록 다이어그램에 두고 화씨온도 터미널과 반복 터미널을 입력으로 연결하고 이 함수의 춗력을 C_F Sub VI에 와이어한다.

(28)

27/27

④ 함수 > 프로그래밍 > 타이밍 팔레트에서 기다림(ms) 함수를 선택해서 For 루프 내로 가져온다. 지연 컨트롟 터미널과 상수 1000을 곱하기 함수에 와이 어하고 춗력을 기다림(ms) 함수에 와이어한다.

VI의 편집과 디버깅이 완료되면 이 VI를 Using For Loop Thermometer.vi로 저 장한다. 지연 숫자형 컨트롟의 값을 다양하게 해서 VI를 실행시킨다. 즉, 5초로 맞 춖 후 실제로 지연이 5초가 되는지 확읶하기 위해 갂격을 계산한다.

참조

관련 문서

Filter >

② contractPrice와 period를 인자로 받아, 사용 개월 수에 따른 할인금액을 return 하는 periodDiscount() 함수를 정의한다.. 위의 상세 요구사항에 따라

• 하향식 접근 방식은 위에서부터 아래로 구조 차트에 있는 함수 하나씩을 차례대로 구 현해 가는 방식이다. 간단하지만 불완전한 함수인 스텁(stub)을 사용하여 함수를

result = FunctionName() 함수 이름이 FunctionName 이라는 함수를 호출하여 함수 가 반환하는 값인 ResultValue를 저장할 변수(result)를 지

8.5 8.5 함수 함수 호출을 호출을 이용한 이용한 데이터베이스 데이터베이스 프로그래밍:SQL/CLI 프로그래밍 :SQL/CLI와 와 JDBC JDBC. ™

따라서 프로그래밍 언어의 기본 패턴부터 구조 및 의미 그리고 프로그램의 특성을 이해하는 데에 목적을 두고 있으며 또한 문제를 해결하기 위한 , 방법과

Facturas que respaldan crédito fiscal, que no indican en forma detallada el concepto, unidades y valores de los bienes y tampoco especifican concretamente la clase

내용의 정확성 : 한글 맞춤법이나 문장부호를 잘 써야 텍스트의 내용과 의미를 정확하게 전달