Graphical Programming Labview

461

Transcript of Graphical Programming Labview

Page 1: Graphical Programming Labview
Page 2: Graphical Programming Labview
Page 3: Graphical Programming Labview

- 3 -

머 리 말

물리적인 현상을 계측하여 계측 데이터를 수집하고 분석하기 위하여 일반적으로 전용

계측기를 구입하여 처리하여 왔으나 최근에는 를 기본으로 하는 가상 계측기PC

의 활용이 급격히 증가하고 있다 의 이점은 를 기본(Virtual Instrument : VI) . VI PC

으로 하기 때문에 펜티엄 프로세서 윈도우즈 인터넷 정보 통신망 등과 같은II , NT,

의 새로운 기술을 즉시 이용할 수 있다는 것이다 또한 의 성능이 가격에 비하PC . PC

여 빠르게 향상됨에 따라 는 유연성이 부족한 고가의 계측기 사용자들에게 더욱 경VI

제적인 솔루션이 되고 있다.

그러나 고도의 성능을 가진 를 구축하기 위해서는 테스트 및 측정 데이터 수집과 제VI ,

어 프로세스 모니터링 등 핵심적인 기능을 제공할 수 있는 소프트웨어를 사용하여야 하는,

데 는 데이터의 수집 및 제어 데이터 분석 데이터 표현 등을 위한 혁신적인 프LabVIEW , ,

로그래밍 시스템으로 효과적인 프로그래밍 방법을 제공한다 뿐만 아니라 는. LabVIEW VI

라 불리는 소프트웨어 객체를 그래픽으로 작성할 수 있으며 를 디자인하기도 하고 여러, VI

개의 들을 조합하여 사용자의 요구에 적합한 계측기를 상에서 실현시킨다 이VI PC .

는 내쇼날인스트루먼트사에서 년 처음 개발된 이후 기능의 업그레이드를LabVIEW 1986

계속하여 년에는 이 출시되었다1998 LabVIEW 5.0 .

이 책은 그래피컬 프로그래밍 언어인 에 흥미를 가지고 있는 초보자들이 쉽게LabVIEW

이해하고 보다 친숙해 질 수 있도록 설명하였고 기존의 사용자들도 응용 능력을 향상시킬,

수 있도록 하였으므로 연구실에서 기초 연구를 수행하는 과학자나 현장에서 기술 개발에

종사하는 공학자들에게 유용하리라 생각되며 특히 이학 및 공학 분야의 대학과 대학원에

재학중인 학생들을 위한 교재 또는 참고서로도 적합하리라 생각된다.

이 책은 다음과 같이 크게 부로 이루어져 있다5 .

부 의 기초 개념과 프로그래밍의 원리를 이해할 수 있도록 기본적인 프로그1 : LabVIEW•램 편집 기술을 다루고 있다.

부 프로그래밍 하는데 필요한 스트럭처 차트 배열 클러스터 등을 응용하는 내용과 고2 : , , ,•급 프로그램 설계 기술을 수록하고 있다.

부 데이터 수집에 대한 전반적인 내용과 의 사용법 및 인스트루먼트3 : Solution Wizard•컨트롤에 대한 내용을 다루고 있다.

부 지역 변수와 전역 변수 멀티쓰레드 파일 입출력에 대한 고급 함수를 소개하고 있4 : , ,• ․

Page 4: Graphical Programming Labview

- 4 -

으며 데이터의 처리와 해석을 위한 해석 함수들을 취급하는 내용들을 포함하고 있,

다.

부 네트워크 및 통신 즉 클라이언트 서버 와 의 활용 방법에 대5 : , TCP/IP, , DDE ActiveX•한 내용을 다루고 있다.

부록 내쇼날인스트루먼의 응용 제품과 의 응용 사례들을 담고 있다: LabVIEW .•이 책은 각 장마다 사용자가 스스로 따라해 볼 수 있도록 따라하기와 연습문제를 싣고

있다 특히 따라하기 예제는 초보자들도 이해할 수 있도록 쉽게 설명되어 있으며 연습문제.

의 해는 책과 함께 제공되는 의 디렉토리에 각 장별로 수록되어 자신의 작성CD Exercise

한 프로그램과 비교해 볼 수 있도록 하였다.

처음 집필할 때는 왕성한 의욕과 자신감을 가지고 임하였으나 갈수록 능력의 한계를 느

끼면서 중도에 포기하고 싶은 생각도 몇 번씩 들었다 처음 의도와는 달리 미숙한 글들을.

자책하면서 독자 여러분의 아낌없는 지적과 충고를 부탁드린다 저자의 주소는. E-mail

이다[email protected] .

이 책을 쓰는 동안 비평과 조언 그리고 여러모로 도움을 주신 한국기술교육대학교의 이

우영 교수 이재협 교수에게 감사드리며 특히 원고의 정리 수정 등 인내와 노력을 아끼지, ,

않은 생산기계공학과의 김흥배군에게 감사 드린다.

아울러 이 책을 쓸 수 있도록 격려해 주시고 독자들을 위한 평가판 를 제, LabVIEW CD

공할 수 있도록 도와주신 한국 내쇼날인스트루먼트의 박주철 지사장께도 감사 드린다.

끝으로 이 책이 나올 수 있도록 노고를 아끼지 않으신 동일출판사의 여러분께 심심한 감

사를 드린다.

1998. 11

아우내 연구실에서 최 성 주

Page 5: Graphical Programming Labview

- 5 -

차 례

제 부 의 기초1 LabVIEW

장 의 소개1 LabVIEW

개요1. ·························································································································13이 장에서 배우는 것들2. ··························································································13

의 소개3. LabVIEW ···································································································14는 어떻게 동작하는가4. LabVIEW ?··········································································15

프론트 패널5. (Front Panel) ····················································································18블록 다이어그램6. (Block Diagram)·······································································19아이콘 과 커넥터7. (Icon) (Connector) ·····································································21요약▸ ··························································································································22따라하기▸ ···················································································································23

장 의 기초2 LabVIEW

개요1. ·························································································································29이 장에서 배우는 것들2. ··························································································29풀다운 메뉴3. ············································································································30팔레트4. (Floating Palette) ······················································································31요약▸ ··························································································································39따라하기▸ ···················································································································40

장 의 기초3 LabVIEW

개요1. ·························································································································43이 장에서 배우는 것들2. ··························································································43프론트 패널 오브젝트 생성3. ···················································································44편집 기술4. ················································································································47수치 컨트롤과 인디케이터5. (Numeric) ···································································52불6. (Boolean) ···········································································································53문자열7. (String) ·······································································································54경로8. (Path) ··············································································································55와이어링9. (Wiring Up)····························································································55상수 컨트롤 인디케이터 자동 생성하기10. , , ···························································59오브젝트 설명 만들기11. (Description) ··································································60저장하기12. VI ··········································································································61

요약▸ ··························································································································63따라하기▸ ···················································································································64연습문제▸ ···················································································································66

Page 6: Graphical Programming Labview

- 6 -

장 서브 와 디버깅4 VI

개요1. ·························································································································67이 장에서 배우는 것들2. ··························································································67구조적인 설계3. (Hierarchy Design) ······································································68를 서브 로 만들기4. VI VI ·························································································68의 일부를 서브 로 만들기5. VI VI ·············································································75

구조 윈도우 사용하기6. (Hierarchy Window) ·······················································76와 오브젝트 및 텍스트 찾기7. VI ·············································································81실행하기8. VI ············································································································85

디버깅 기술9. ············································································································88요약▸ ··························································································································94

제 부 프로그래밍2

장 루프와 차트5

개요1. ·························································································································97이 장에서 배우는 것들2. ··························································································97

루프와 루프3. While For ·························································································98시프트 레지스터4. (Shift Register) ······································································100파형 차트5. (Waveform Chart) ············································································101싱글 플롯 차트 만들기6. (Single Plot) ·································································102멀티 플롯 차트 만들기7. (Multi Plot) ···································································103불 스위치의 기계적 동작 방식 변경8. (Mechanical Action) ······························104루프의 첫 번째 실행 방지하기9. ···········································································106요약▸ ························································································································107따라하기▸ ·················································································································108연습문제▸ ·················································································································116

장 케이스 및 시퀀스 스트럭처와 수식 노드6

개요1. ······················································································································117이 장에서 배우는 것들2. ························································································117케이스 스트럭처3. (Case Structure) ····································································117시퀀스 스트럭처4. (Sequence Structure) ····························································119시퀀스 로컬5. (Sequence Local) ··········································································121수식 노드6. (Formula Node) ················································································121요약▸ ························································································································123따라하기▸ ·················································································································124연습문제▸ ·················································································································130

장 배열 그래프 및 클러스터7 ,

개요1. ······················································································································131이 장에서 배우는 것들2. ························································································131배열3. (Array) ········································································································132배열 만들기4. ··········································································································132차원 배열5. 2 ···········································································································133루프에서 배열의 응용6. ··························································································134루프를 이용한 차원 배열 만들기7. 2 ·····································································135

Page 7: Graphical Programming Labview

- 7 -

루프 카운트에 자동 인덱싱의 사용8. For ····························································136배열 함수9. (Array Function) ···············································································136다형성10. (Polymorphism)····················································································139그래프11. (Graph) ··································································································140클러스터12. (Cluster) ·····························································································141단일 그래프13. (Single-Plot Graph) ···································································142다중 그래프14. (Multiple-plot Graph) ································································143그래프15. XY ··········································································································144

차트와 그래프의 요약16. ·······················································································145요약▸ ························································································································147따라하기▸ ·················································································································148연습문제▸ ·················································································································151

장 문자열과 파일 입출력8

개요1. ······················································································································153이 장에서 배우는 것들2. ························································································153문자열3. (String) ·····································································································154문자열 함수4. (String Function) ···········································································156

5. VI Setup ··············································································································1586. Sub VI Node Setup ··························································································1627. Key Navigation··································································································163파일 입출력8. (File I/O) ························································································163고수준 파일 입출력 함수9. (High-Level File VIs) ············································164중간형 파일 입출력 함수10. (Intermediate File VIs) ········································165저수준 파일 입출력 함수11. (Low-Level File I/O Functions) ························165

12. Intermediate File VIs·····················································································166기존의 파일이나 새로운 파일을 이용한 데이터 저장13.(Saving Data in a New or Existing File) ··················································168파일로부터 데이터 읽기14. (Reading Data from File) ······································169스프레드시트15. (Spreadsheet) ············································································170표16. (Table) ··········································································································171고수준 파일 입출력 함수17. (High-Level File VIs) ·········································172요약▸ ························································································································173따라하기▸ ·················································································································174연습문제▸ ·················································································································178

장 프로그램 설계 기술9

개요1. ······················································································································179이 장에서 배우는 것들2. ························································································179그래픽 사용자 인터페이스3. (Graphical User Interface) ··································180배치 와 장식4. (Arranging) (Decoration) ······························································181그림 파일 불러들이기5. ··························································································183사용자 과 만들기6. Control Indicator ···································································184

에 도움말 추가하기7. Online Help ········································································187프론트 패널의 객체 속성8. (Object Attribute) ····················································189프로그램 설계 기술9. ·····························································································189

기능 설정하기10. Undo ·························································································192컨트롤 팔레트와 함수 팔레트 설정하기11. ···························································193요약▸ ························································································································196

Page 8: Graphical Programming Labview

- 8 -

장 프로그램 설계 기술10

개요1. ······················································································································197이 장에서 배우는 것들2. ························································································197프린팅과 도큐먼트3. (Document) VIs··································································197도큐먼트4. (Documenting) VIs ·············································································199사용자 메뉴바 만들기5. (menubar) ·······································································205사용자 환경 다루기6. (Customizing your Environment) ··································216요약▸ ························································································································232

제 부 데이터 수집3

장11 DAQ 기초(Data Acquisition)

개요1. ······················································································································235이 장에서 배우는 것들2. ························································································236데이터 수집 일반3. (DAQ) ·····················································································236하드웨어의 구성4. ···································································································237소프트웨어의 구성5. ·······························································································239내셔널인스트루먼트 시스템6. DAQ ·······································································240

의 기초7. DAQ ·········································································································246데이터 수집 보드8. (DAQ Board) ·········································································247

구성 하기9. NI-DAQ (Configuration) ···································································24910. NI-DAQ Configuration utility ·······································································25011. NI-DAQ Test Panels ····················································································253요약▸ ························································································································255

장12 DAQ 일반(Data Acquisition)

개요1. ······················································································································257이 장에서 배우는 것들2. ························································································257

의 구성3. DAQ VI ···································································································258아날로그 입 출력4. / (Analog Input and Output) ·················································258파형 입력 및 출력5. (Waveform Input and Output) ·········································260다채널 아날로그 입력6.(Scanning Multiple Analog Input Channels) ················································262디지털 입력 및 출력7. (Digital Input and Output) ············································264요약▸ ························································································································265따라하기▸ ·················································································································266

장13 Solution Wizard

개요1. ······················································································································273이 장에서 배우는 것들2. ························································································273

3. Solution Wizard ·································································································274의 사용법4. Channel Wizard ··················································································274의 사용법5. Solution Gallery ·················································································279

만들기6. Custom DAQ Application ····································································282요약▸ ························································································································286

Page 9: Graphical Programming Labview

- 9 -

장 인스트루먼트 컨트롤14

개요1. ······················································································································287이 장에서 배우는 것들2. ························································································287

의 개요3. VISA ········································································································288의 개요4. GPIB ········································································································292

직렬 포트 의 개요5. (Serial Port) ··········································································294의 개요6. VXI ··········································································································296

의 개요7. Instrument Driver ·················································································297직렬 포트 통신 함수8. (Serial Port Communication) ········································299

9. IEEE 488 (GPIB)······························································································302인스트루먼트 드라이버 의 사용법10. (Instrument Driver) ··································305파형의 전달11. (Waveform Transfers) ·······························································306요약▸ ························································································································307따라하기▸ ·················································································································308

제 부 고급 기능4

장 고급 함수와 기능15

개요1. ······················································································································313이 장에서 배우는 것들2. ························································································313지역변수 와 전역변수3. (Local Variable) (Global Variable) ·······························314언어의 실행 시스템4. G ·························································································320

재진입 실행5. ··········································································································322실행 속도6. ·············································································································325요약▸ ························································································································329

장 고급 파일 입출력 함수16

개요1. ······················································································································331이 장에서 배우는 것들2. ························································································331고급 파일의 입출력 함수3. ····················································································331요약▸ ························································································································343

장 해석 함수의 소개17

개요1. ······················································································································345이 장에서 배우는 것들2. ························································································345해석 함수3. (Analysis VI) ·····················································································346신호 발생4. (Signal Generation) ··········································································347

5. Curve Fitting ······································································································3496. Digital Filters ·····································································································350스펙트럼 분석과 측정7. ··························································································352요약▸ ························································································································355따라하기▸ ·················································································································356

장 프론트 패널 오브젝트18

개요1. ······················································································································361이 장에서 배우는 것들2. ························································································361프론트 패널 오브젝트3. ··························································································361

Page 10: Graphical Programming Labview

- 10 -

컨트롤과 인디케이터4. Numeric ···········································································368요약▸ ························································································································380

제 부 네트워크 및 통신5

장 와 클라이언트 서버19 TCP/UDP

개요1. ······················································································································383이 장에서 배우는 것들2. ························································································383

통신 함수의 개요3. LabVIEW ··············································································384통신 프로토콜 의 소개4. (Communication Protocol) ···········································384통신 프로토콜을 이용한 파일의 공유5. (Share) ···················································386클라이언트 서버 모델6. / (Client/Server Model) ···················································386

와 의 개요7. TCP UDP ····························································································388인터넷 프로토콜8. (IP) ···························································································390사용자 데이터그램 프로토콜9. (Datagram) (UDP)···············································391

10. TCP(Transmission Control Protocol) ·························································391서버 사용하기11. VI ······························································································392

요약▸ ························································································································399

장 와20 DDE ActiveX

개요1. ······················································································································401이 장에서 배우는 것들2. ························································································401

란 무엇인가3. ActiveX ?··························································································402컨트롤4. ActiveX ···································································································403서버5. ActiveX ·······································································································407

의 개념6. DDE ·········································································································410서버7. DDE ·············································································································412

요약▸ ························································································································416

부 록내셔널 인스트루먼트의 응용 제품A. ···········································································419

응용 사례B. LabVIEW ····································································································429

찾아보기·····························································································································439

참고문헌·····························································································································443

사용법CD ·························································································································444

Page 11: Graphical Programming Labview

…………………………………………………………………

제 부1

…………………………………………………………………

의 기초LabVIEW…………………………………………………………………

장 의 소개1 LabVIEW

장 의 기초2 LabVIEW I

장 의 기초3 LabVIEW II

장 서브 와 디버깅4 VI

…………………………………………………………………

Page 12: Graphical Programming Labview

개요1.

를 처음으로 사용하는 사용자를 위해서 이번 장에서는LabVIEW LabVIEW

에 대한 기초 개념을 소개한다 프론트 패널과 블록 다이어그램을 소개하고.

전체적인 프로그램을 소개함으로써 사용자를 에 친숙하게 만든다LabVIEW .

또한 아이콘과 커넥터의 개념과 메인 프로그램과 부 프로그램에 대한 개념,

등을 설명함으로써 사용자에게 애플리케이션의 모듈화에 대해 소개한다 첫.

번째 장이므로 잘 읽고 에 대해 이해하기 바란다LabVIEW .

또한 이 장에서는 의 사용 환경을 조사하고 의 세 부분LabVIEW LabVIEW

즉 프론트 패널 블록 다이어그램 아이콘 커넥터가 서로 어떻게 작용하는지, , , /

를 배운다 또한 의 메뉴와 작동되는 두 모드 실행 모드와 편집 모. LabVIEW (

드 도움말 및 부 프로그램에 대해서도 공부한다), .

이 장에서 배우는 것들2.

의 개념 소개LabVIEW

의 동작 방법LabVIEW

프론트 패널

블록 다이어그램

아이콘과 커넥터

프론트 패널 블록 다이어그램 아이콘 커넥터의 사용과 이해, , /

입력과 출력의 모양과 기능의 차이점 익히기

흐름 및 프로그래밍의 원리 이해

chapter

1의 소개LabVIEW

Page 13: Graphical Programming Labview

부 의 기초1 LabVIEW

의 소개3. LabVIEW

란 무엇인가3.1 LabVIEW ?

여러분은 가 정확하게 무엇인지 를 가지고 무엇을 할LabVIEW , LabVIEW

수 있는지 그리고 가 여러분을 위하여 무엇을 해줄 수 있는지를 알, LabVIEW

고 싶을 것이다.

는 를LabVIEW Laboratory Virtual Instrument Engineering Workbench

줄인 말이다 이것은 마이크로소프트 윈도우즈 애플 매킨토시 선 스파크스테. , ,

이션을 이용하는 에서 운영되는 강력하고 유연성 있는 장치이며 해석 소프PC

트웨어 시스템의 일종이다.

는 여러 범용의 또는 개발 시스템처럼 프로그램 개발 도LabVIEW C BASIC

구이다 다른 프로그래밍 시스템들이 코드를 생성하기 위하여 텍스트 기반.

의 언어를 사용하는 데 반하여 는 여러 가지 문법적인(Text-based) LabVIEW

사항들을 없애고 블록 다이어그램이라 불리는 흐름도를 사용하여 프로그램을

생성하는데 우리는 이 언어를 그래피컬 프로그래밍, (graphical programming)

이라고 부르며 간단히 언어라고 한다G .

다음 그림은 의 간단한 사용자 인터페이스와 블록 다이어그램 상LabVIEW

의 코드를 보여 준다.

는 과학자와 공학자들에게 익숙한 개념 및 용어들을 사용한다LabVIEW .

는 프로그래밍을 하기 위해 문자화된 언어를 사용하기보다는 그림LabVIEW

기호 에 의존한다 프로그래밍 경험이 전혀 없는 사람일지(graphical symbol) .

Page 14: Graphical Programming Labview

장 의 소개1 LabVIEW

라도 를 쉽게 배울 수 있으나 프로그래밍에 대한 기본 지식이 있으LabVIEW

면 더 좋을 것이다.

그러면 가 여러분에게 무엇을 해줄 수 있을까LabVIEW ?

는 여러분들이 수행하려는 대부분의 프로그래밍 업무에 도움이LabVIEW

되는 서브루틴 과 광범위한 함수들의 라이브러리를 가지고 있다(subroutine) .

또한 데이터 수집 시리얼 계측기 제어 데(data acquisition), GPIB, (serial) ,

이터 해석 데이터 표현 및 데이터 저장 등을 위한 라이브러리도 포함하고 있,

다.

는 프로그램을 통해서 라인 단위의 실행이나 디버깅을 할 수 있는LabVIEW

기존의 프로그램 도구들도 포함하고 있으며 실행 과정에서 데이터의 흐름을

다이나믹하게 관찰할 수 있도록 되어 있다.

의 그래피컬한 성질로 인하여 데이터 표현을 위한 패키지로 많이LabVIEW

사용된다 따라서 데이터를 표현하기 위한 다양한 도구를 가지고 있으며 여러. ,

분이 원하는 어떠한 형태로도 나타낼 수 있다 차트 그래프 사용자 정의 그래. , ,

픽은 단지 출력 선택 사양의 일부분을 구성한다 데이터 수집 해석 표현 도구. , ,

들을 가진 는 기능적으로 완벽하다고 볼 수 있으며 기존의 프로그LabVIEW ,

래밍 언어로 가능한 어떠한 계산도 를 이용하LabVIEW Virtual Instrument

여 계산할 수 있다.

는 어떻게 동작하는가4. LabVIEW ?

는 그 모양이나 작동이 실제의 계측 장치와 매우 유사하기 때문에LabVIEW

가상 계측기(Virtual Instrument 라 불린다 그러나 화면 뒤에서는 나: VI) . C

과 같은 일반적인 프로그래밍 언어가 사용하는 메인 프로그램 함수BASIC , ,

부 프로그램 등을 사용한다 는 대화식의 사용자 인터페이스와 소스 코드를. VI

가지고 있으며 그들 사이에 데이터를 주고받을 수 있다.

는 다음과 같은 세 개의 주요 부분을 가지고 있다VI .

프론트 패널4.1 (Front Panel)

프론트 패널은 의 대화식 사용자 인터페이스이며 이것은 실제의 계측 장VI

치 패널을 묘사하고 있다 프론트 패널은 스위치 누름 단추 노브 그. , , (knob),

Page 15: Graphical Programming Labview

부 의 기초1 LabVIEW

리고 여러 가지 다른 컨트롤 사용자 입력 과 인디케이터(control, ) (indicator,

프로그램 출력 를 포함하고 있다 여러분은 키보드나 마우스를 이용하여 데이) .

터를 입력하고 프로그램이 생성한 결과를 스크린을 통하여 볼 수 있다.

프론트 패널의 예를 다음 그림이 보여 준다.

블록 다이어그램4.2 (Block Diagram)

에서 사용하는 그래피컬 프로그래밍 언어를 언어라고 한다LabVIEW G .

블록 다이어그램은 의 소스 코드이며 는 그래피컬 프로그래밍VI LabVIEW

언어 로 구성된다 블록 다이어그램은 단순한 기호처럼 보이지만 실제로 실G .

행 가능한 프로그램이다 블록 다이어그램의 아이콘들은 저수준. (low-level)

즉 에서 미리 만들어져 있는 함수들과 프로그램 제어를 위한VI, LabVIEW

스트럭처 들을 나타낸다(structure) .

예를 들어 다음의 블록 다이어그램에서는 Sine Pattern.VI, Uniform

등의 저수준 를 사용하였고 이 함수들을 나타내기 위해White Noise.VI VI ,

서 그래프와 그밖의 상수들을 와이어로 연결한 것이다 여러분은 블록 다이.

어그램에서 데이터의 흐름을 나타내기 위하여 아이콘들을 와이어로 연결하여

사용하면 된다.

Page 16: Graphical Programming Labview

장 의 소개1 LabVIEW

아이콘과 커넥터4.3 (Icon and Connector)

일반적으로 하나의 함수 또는 단일 프로그램은 입력을 받아서 결과를 출력

하는 형식으로 이루어진다 의 함수와 들도 입력과 출력을 수행할. LabVIEW VI

수 있다 상에서 아이콘은 하나의 함수 또는 단일 를 나타내며. LabVIEW VI ,

아이콘은 커넥터라는 것을 사용하여 입력과 출력 단자를 표시해 준다.

아래의 그림에는 아이콘과 커넥터의 그림이 있는데 함수를 사용하기 위해,

서는 함수의 입력과 출력을 커넥터의 각 입출력 단자에 연결해 주어야 한다.

따라서 각 와 함수들은 이 커넥터를 통하여 데이터를 전달하며 자신의 데VI ,

이터형 을 이 커넥터를 통하여 표시하기도 한다(data type) .

적절하게 함수를 사용하는 것은 프로그램의 모듈화에 도움이 되며 사용자는,

모듈화를 통해서 프로그램을 쉽고 간결하게 작성할 수 있다.

이러한 특징으로 는 모듈화된 프로그램의 개념을 프로그램에 사LabVIEW

용할 수 있다 프로그램을 모듈화하기 위해서는 하나의 응용 문제를 여러 개.

의 부 프로그램으로 나누어야 한다 그리고 각 부 프로그램을 수행하는 를. VI

구성한 다음 전체의 애플리케이션을 완성하도록 메인 프로그램의 블록 다이어

그램에서 그 들을 서로 연결한다 여기서 만들어지는 부 프로그램들은 하나VI .

의 역할을 수행할 수 있도록 잘 구성해야 하며 일반적으로 전체 블록 다이어,

그램에서 반복되는 부분을 하나의 부 프로그램으로 만들면 된다 이 장의 끝.

에 있는 따라하기를 수행해 보면 이해가 쉬울 것이다.

Page 17: Graphical Programming Labview

부 의 기초1 LabVIEW

프론트 패널5. (Front Panel)

간단하게 설명하자면 프론트 패널은 사용자들이 프로그램과 대화하는 창

(window)이라고 말할 수 있다 여러분이 를 실행하고 입력 값을 주기 위해. VI

서는 프론트 패널을 열어야 한다 또한 여러분이 프로그램의 결과를 보기 위.

해서도 프론트 패널이 필요하다.

다음 그림은 프론트 패널의 예이다LabVIEW .

프론트 패널은 컨트롤과 인디케이터의 결합 이다 컨트롤은(combination) .

여러분들이 종래의 계측기에서 발견할 수 있는 노브 라든가 스위치 등(knob)

과 같은 전형적인 입력 장치들을 모사하고 있다 컨트롤은 의 블록 다이어. VI

그램에 데이터를 공급해 준다 인디케이터는 프로그램이 수집하거나 발생시키.

는 데이터를 보여 주는 출력 표시기를 모사하고 있다 컨트롤과 인디케이터에.

대해서는 다음과 같은 방식으로 기억해 두면 좋다.

컨트롤(Control) =입력(Input)인디케이터(Indicator) =출력(Output)

여러분이 마우스의 오른쪽 버튼을 누르면 컨트롤 메뉴가 패널에 나타나게

되며 그들 중 하나를 선택하면 컨트롤 또는 인디케이터가 패널에 놓여진다.

오브젝트 가 한 번 패널에 놓여지면 여러분은 그것들의 크기 모양 위(object) , ,

치를 쉽게 조절할 수 있다.

Page 18: Graphical Programming Labview

장 의 소개1 LabVIEW

블록 다이어그램6. (Block Diagram)

블록 다이어그램 창은 의 소스 코드를 나타내는 데 사용된다LabVIEW VI .

의 블록 다이어그램은 실제 실행 가능한 코드인 나 에서의LabVIEW C BASIC

문자들로 구성된 프로그램에 대응된다 여러분은 특수한 기능을 수행하는 오.

브젝트들을 서로 연결하여 줌으로써 블록 다이어그램을 구성할 수 있다.

종래의 프로그래밍에서 사용되는 흐름도와 비슷하게 보이는 그림 표현으로

의 프로그램을 구성한다 이 장에서는 블록 다이어그램의 구성 요소LabVIEW .

인 터미널 노드 와이어에 대하여 설명한다, , .

아래의 간단한 는 두 수의 차를 계산하는 것이다 그것의 다이어그램은VI .

터미널 노드 와이어들을 보여 준다, , .

터미널6.1 (Terminal)

프론트 패널 상에 컨트롤과 인디케이터를 위치시키면 는 블록 다LabVIEW

이어그램에 이것들에 대응되는 터미널을 생성한다 블록 다이어그램에서 이.

컨트롤 또는 인디케이터에 속하는 터미널을 지워 버릴 수는 없다 터미널은.

프론트 패널에 있는 컨트롤 또는 인디케이터를 지울 때 사라진다.

컨트롤터미널은윤곽이두꺼운선이고인디케이터터미널은얇은선으로되어있다 그것.

들은 기능적으로 동등하지 않기 때문에 그 둘을 구분하는 것은 매우 중요하다 컨트롤. (

입력이고 인디케이터= , =출력이므로 이들은 서로 호환성이 없다.)

Tip

컨트롤 터미널 와이어 노드 인디케이터터미널

수치 컨트롤 수치 인디케이터

Page 19: Graphical Programming Labview

부 의 기초1 LabVIEW

터미널을 입력과 출력으로 기억해 두면 좋을 것이다 수치 컨트롤을 통하여.

입력되는 데이터는 프론트 패널에도 존재함과 동시에 다이어그램 상에 있는

수치 컨트롤 터미널을 통하여 블록 다이어그램에도 나타난다.

여러분이 그림에서 보아서 알 수 있듯이 덧셈 기능 아이콘도 터미널을 가지

고 있다 데이터는 와이어를 따라 흘러 덧셈 기능 아이콘으로 들어온다 덧셈. .

기능이 내부에서 계산을 완료하고 나서 출력 터미널에 새로운 데이터 값을,

발생시킨다 데이터는 수치 인디케이터 터미널로 흘러 들어오고 또한 데이터.

가 표시되는 프론트 패널로 다시 들어간다.

노드6.2 (node)

노드는 프로그램 실행 요소이다 노드는 표준화된 프로그래밍 언어에서 문.

연산자 함수 서브루틴 과(statement), (operator), (function), (subroutine)

유사하다 덧셈과 뺄셈 기능 등이 노드의 한 형태를 보여 주며 스트럭처는 노. ,

드의 다른 형태를 보여 준다 전통적인 프로그래밍 언어에서의 루프나 케이스.

와 유사하게 스트럭처는 코드를 조건부 또는 반복적으로 실행한다. LabVIEW

는 수식 노드 라고 불리는 특수한 노드를 가지고 있으며 이것(formula node)

은 문자로 된 식들을 평가하는 데 매우 유용하다.

와이어6.3 (wire)

와이어는 입력과 출력 터미널 사이의 데이터 통로이다 여러분은 입력 터미.

널을 다른 입력에 또는 출력 터미널을 다른 출력에 연결할 수는 없지만 하나

의 입력 터미널을 여러 출력 터미널에 연결할 수는 있다.

이 원리는 컨트롤과 인디케이터가 왜 서로 호환성이 없는지를 설명하여 준다 컨트롤은.

입력 터미널이고 인디케이터는 출력 터미널이다.

각 와이어는 와이어를 따라 흐르는 데이터의 형태에 따라 서로 다른 모양과

색을 가진다 앞에서 본 블록 다이어그램은 수치의 스칼라 값에 대한 와이어.

형태를 보여 준다.

다음의 표는 대응되는 여러 형태의 와이어들을 나타낸 것이다.

Tip

Page 20: Graphical Programming Labview

장 의 소개1 LabVIEW

블록 다이어그램에서 사용되는 와이어의 형태▼

데이터 형(Data Type)

스칼라(Scalar) 차원 배열1 차원 배열2 색상

수 치(Numeric)

오렌지

불(Boolean) 녹 색

문자열(String) 보 라

아이콘 과 커넥터7. (Icon) (Connector)

가 다른 안에서 서브 로 작동할 때 그것의 컨트롤과 인디케이터는VI VI VI

로부터 데이터를 받거나 로 데이터를 보내 준다 의 아이콘은 다른VI VI . VI VI

의 블록 다이어그램 안에서 데이터의 입출력을 표현한다 아이콘은 그림 또는.

문자 또는 이들을 혼합하여 표현할 수 있다, .

의 커넥터는 컨트롤과 인디케이터에 대응되는 터미널의 집합이다 커넥터VI .

는 함수 호출의 파라미터 리스트와 같은 것이다 커넥터 터미널은 데이터를.

서브 로 또는 서브 로부터 전달하는 그래피컬 파라미터와 같이 작용한다VI VI .

각 터미널은 프론트 패널에 있는 자신의 컨트롤과 인디케이터에 대응된다 서.

브 의 커넥터는 입력 터미널에서 데이터를 받아서 이것을 서브 컨트롤을VI VI

통하여 서브 코드로 보낸다 이것은 또한 그 출력 터미널을 통하여 서브VI .

로부터의 결과를 받아들인다VI .

모든 는 프론트 패널과 다이어그램 상단 오른쪽 구석에 있는 아이콘VI

에 표시되어 있는 디폴트 아이콘을 가지고 있다 디폴트 아이콘은 다음pane .

그림에서 확인해 보도록 하자.

모든 는 커넥터를 가지고 있으며 프론트 패널 아이콘 의 팝업 메뉴VI , pane

로부터 를 선택함으로써 찾아볼 수 있다Show Connector .

아이콘 pane

Page 21: Graphical Programming Labview

부 의 기초1 LabVIEW

아이콘◀ 커넥터◀

Page 22: Graphical Programming Labview

장 의 소개1 LabVIEW

는 를 줄인 말이다 이LabVIEW Laboratory Virtual Instrument Engineering Workbench .

것은 마이크로소프트 윈도우즈 애플 매킨토시 선 스파크스테이션을 이용하는 에서 운영되, , PC

는 강력하고 유연성 있는 장치이며 해석 소프트웨어 시스템의 일종이다.

는 여러분들이 수행하려는 대부분의 프로그래밍 업무에 도움이 되는 서브루틴LabVIEW

과 광범위하고 다양한 함수들의 라이브러리를 가지고 있다 또한 데이터 수집(subroutine) .

시리얼 계측기 제어 데이터 해석 데이터 표현 및 데이터(data acquisition), GPIB, (serial) , ,

저장 등을 위한 라이브러리도 포함하고 있다 는 대화식의 사용자 인터페이스와 소스 코드를. VI

가지고 있으며 그들 사이에 데이터를 주고받을 수 있다.

컨트롤은 의 블록 다이어그램에 데이터를 공급해 준다 인디케이터는 프로그램이 수집하VI .

거나 발생시키는 데이터를 보여 주는 출력 표시기를 모사하고 있다 컨트롤과 인디케이터에 대.

해서는 다음과 같은 방식으로 기억해 두면 좋다.

컨트롤(Control) =입력(Input)인디케이터(Indicator) =출력(Output)

프론트 패널 상에 컨트롤과 인디케이터를 위치시키면 는 블록 다이어그램에 이것LabVIEW

들에 대응되는 터미널을 생성한다 블록 다이어그램에서 이 컨트롤 또는 인디케이터에 속하는.

터미널을 지워 버릴 수는 없다 터미널은 프론트 패널에 있는 컨트롤 또는 인디케이터를 지울.

때 사라진다.

의 커넥터는 컨트롤과 인디케이터에 대응되는 터미널의 집합이다 커넥터는 함수 호출의VI .

파라미터 리스트와 같은 것이다 커넥터 터미널은 데이터를 서브 로 또는 서브 로부터 전. VI VI

달하는 그래피컬 파라미터와 같이 작용한다 각 터미널은 프론트 패널에 있는 자신의 컨트롤과.

인디케이터에 대응된다.

요약

Page 23: Graphical Programming Labview

부 의 기초1 LabVIEW

예제 1

기존의 프로그램을 열고 가 어떻게 동작하는지에 대한LabVIEW LabVIEW

개념을 얻기 위하여 한 예를 실행시켜 보자.

라는 를 열고 다음 순서대로 실행시켜Temperature System Demo.vi VI

보자.

아이콘을 더블 클릭하여 를 시작시키면 잠시 후 초기LabVIEW LabVIEW

화면이 나타난다.

를 선택한다Open VI .

파일 대화상자가 화면에 나타나면 를 더블 클릭하여EXAMPLES Example

directory를 연다.

를 더블 클릭하고 를 더블 클릭하여 선택한다Apps tempsys.llb .

를 더블 클릭하여 연다Temperature System Demo.vi .

잠시 후 다음 그림과 같은 프론트 패널이 나Temperature System Demo

타난다 프론트 패널은 수치 입력 선택 스위치 슬라이드 조절기 노브. , , ,

입력 차트 그래프 온도 표시기 등을 포함하고 있다(knob) , , , .

실행 버튼 ( 을 눌러 를 실행시킨다 이 버튼이 가 실행 중이라는) VI . VI

것을 나타내기 위하여 모양이 바뀐다.

다음 그림은 의 프론트 패널과 블록 다이어Temperature System Demo.vi

그램이다.

Page 24: Graphical Programming Labview

장 의 소개1 LabVIEW

프론트 패널▲

블록 다이어그램▲

예제 2

여러분은지금까지기본적인용어들과개념을익혔을것이다 좀더구체적으로.

이해하기 위하여직접연습예제를 따라해 보자 무작위수. (random 를number)

발생시켜 그 값을 파형 차트에 도시하는 간단한 를 구성해 보자LabVIEW VI .

를 시작하면 다음과 같은 초기 화면이 나타난다LabVIEW .

Page 25: Graphical Programming Labview

부 의 기초1 LabVIEW

초기 화면에서 를 선택하면 라는 프론트 패널이 스크New VI Untitled 1.vi

린 위에 나타난다.

메뉴에 있는 를 선택하면 스크린이 프론트 패Windows Tile left and right

널과 블록 다이어그램으로 나뉘어진다 마우스의 오른쪽 버튼을 클릭하여.

컨트롤 팔레트를 프론트 패널에 띄운다 아래의 그림과 같이 컨트롤 팔레트.

의 그래프 서브 팔레트에 있는 파형 차트를 선택한다.

프론트 패널에 점선으로 된 차트가 아래의 왼쪽 그림과 같이 나타난다 마.

우스를 움직여 이것을 프론트 패널의 적당한 위치로 이동시킨 후 마우스의

왼쪽 버튼을 누르면 아래의 오른쪽 그림과 같은 파형 차트가 나타난다.

Page 26: Graphical Programming Labview

장 의 소개1 LabVIEW

컨트롤 팔레트로 가서 서브 팔레트에 있는Boolean vertical toggle

를 선택한다 점선의 스위치가 나타나면 이것을 차트 옆으로 이동시switch .

켜 마우스의 왼쪽 버튼을 누른다 그러면 스위치가 차트 옆에 나타난다. .

차트의 스케일 을 변경시키기 위하여 툴 팔레트의 오퍼레이팅 툴을(scale)

선택하여 이것을 차트의 스케일 위로 가져가서 마우스의 왼쪽 버튼을10.0

클릭한다 그러면 그 부분이 흰 박스로 변한다 숫자 을 로 변경한 후. . 10 1

마우스의 왼쪽 버튼을 누르면 차트의 스케일이 으로 변경된다1.0 .

이제 블록 다이어그램에 다음과 같은 두 개의 터미널이 놓여 있는 것을 발

견할 수 있을 것이다.

프로그램의 실행을 반복하기 위하여 루프 를 이용한다 커서를While (Loop) .

블록 다이어그램으로 가져간 후 마우스의 오른쪽 버튼을 클릭하면 함수 팔레

트 가 나타난다 를 선택하고 다시(functions palette) . Structures While 루

프를 선택한다 커서가 점선의 작은 박스로 변하게 되는데 이것을 블록 다.

이어그램의 왼쪽 상단으로 이동시키고 나서 마우스의 왼쪽 버튼을 누른 후

이것을 끌어서 과 터미널들을 포함시킨 상태에서 마우스의 버튼NUM TF

을 놓으면 루프가 만들어진다While .

vertical toggle switch

오퍼레이팅 툴

Page 27: Graphical Programming Labview

부 의 기초1 LabVIEW

함수 팔레트의 에 있는 아이콘을 선택한다Numeric Random Number(0-1) .

툴 팔레트에 있는 포지셔닝 툴을 선택하여 블록 다이어그램의 오브젝트들

을 적당한 위치로 이동시킨다.

툴 팔레트에 있는 실패 모양의 와이어링 툴을 선택한다 이것을. Random

아이콘 위에서 마우스의 왼쪽 버튼을 클릭한 후 끌어서 로Number DBL

표시된 터미널 위에서 왼쪽 버튼을 다시 한 번 클릭한다 그러면 두 아이콘.

들이 오렌지색의 선으로 연결될 것이다 이 연결이 잘못될 경우 연결되. 는

선이 점선으로 나타나게 되는데 이 경우 포지셔닝 툴을 점선 위에 위치시키

고 마우스의 왼쪽 버튼으로 클릭한 후 키를 누르면 제거된다 이번<delete> .

에는 터미널과 루프의 조건 터미널TF While (conditional terminal)을 위

와 같은 방법으로 연결한다 이 루프는 프론트 패널의 스위치가 위. TRUE

치에서 실행된다.

Page 28: Graphical Programming Labview

장 의 소개1 LabVIEW

이제 여러분은 여러분이 만든 를 실행할 준비가 되었다 우선 툴 팔레트VI .

의 오퍼레이팅 툴을 이용하여 스위치를 위치로 만(Tools Palette) “up”

든다 프론트 패널의 툴바에 있는 실행 버튼을 클릭하면 차트 상에 연속적.

으로 도시되는 무작위수들을 볼 수 있을 것이다 정지를 원하면 스위치를.

클릭하여 위치로 한다“down” .

Page 29: Graphical Programming Labview

개요1.

의 능력은 매우 여러 가지이고 다양하다는 것을 기억하기 바란다LabVIEW .

그러나 이 책은 결코 에서 실행 가능한 모든 것들을 지루하게 취급LabVIEW

하려는 것이 아니고 여러분들에게 를 가지고 무엇을 할 수 있는지를LabVIEW

소개하고 신속하게 에 익숙해지도록 도와주려는 것이다LabVIEW . LabVIEW

는 풀 다운과 팝업의 두 가지 형태의 메뉴를 가지고 있다 여러분은 앞 장에서.

그 중 일부를 이미 사용해 보았고 나머지들은 앞으로 많이 사용할 기회가 있,

을 것이다 지금부터 여러분은 그들의 기능에 대하여 배울 것이다 또한 파일. .

을 저장하는 여러 가지 방법에 대해서도 배울 것이다.

이 장에서 배우는 것들2.

풀다운 메뉴의 종류와 기능

팔레트의 종류와 기능

툴바의 기능

팝업 메뉴의 종류와 기능

chapter

2의 기초LabVIEW

Page 30: Graphical Programming Labview

부 의 기초1 LabVIEW

풀다운 메뉴3.

윈도우의 맨 위에 있는 메뉴바에는 여러 개의 풀다운 메뉴가 있으며 메VI ,

뉴바 중의 하나를 누르면 서브 메뉴가 나타난다 풀다운 메뉴는 다른 응용 프.

로그램에 포함되어 있는 와 같은 것을 가지며 다른Open, Save, Copy, Paste

기능들은 의 특별한 기능들이다 메뉴들은 여러분이 쓰기에 편리하LabVIEW .

도록 단축키로도 사용된다.

파일 메뉴3.1

파일 메뉴는 다른 응용 프로그램과 같이 또는 와 같은 명령어를Save Print

포함한다 여러분은 새로운 를 생성할 때나 기존의 것을 열 때 이 파일 메뉴. VI

를 사용한다.

편집 메뉴3.2

편집 메뉴를 살펴보자 이것은 와 같은 보편적인 명령을. Cut, Copy, Paste

가지고 있으며 여러분은 이들을 사용하여 윈도우를 편집할 수 있다 편집 메.

뉴에서 잘못 연결된 와이어들을 제거할 수 있으며 또한 여러분의 팔레트들을

사용자가 편집하여 사용할 수 있다.

오퍼레이트 메뉴3.3 (Operate)

오퍼레이트 메뉴에서 여러분의 프로그램을 실행시키거나 정지시킬 수 있다.

Page 31: Graphical Programming Labview

장 의 기초2 LabVIEW I

프로젝트 메뉴3.4

프로젝트 메뉴는 큰 들의 집합 사이에서 네비게이션 을 단순VI (navigation)

화시키기 위한 특징을 포함하고 있다 계층 구조를 볼 수 있으며 모든. VI VI

들의 서브 들을 결정할 수 있다VI .

윈도우 메뉴3.5

여러분은 프론트 패널과 블록 다이어그램 사이에서 토글 할 수 있으(toggle)

며 에러 리스트와 클립보드를 볼 수 있고 프론트 패널과 블록 다이어그램을, ,

동시에 사용하기 위하여 화면을 둘로 나눌 수 있다 또한 플로팅 팔레트를 불.

러오거나 닫을 수 있다.

도움말 메뉴3.6

여러분은 도움말 메뉴를 사용하여 도움말 윈도우의 내용을 보이게 하거나

감출 수 있다 또한 의 온라인 레퍼런스 를 사용. LabVIEW (online reference)

할 수 있다.

팔레트4. (Floating Palette)

의 팔레트는 여러분이 스크린 위의 편리한 곳에 위치시킬 수 있LabVIEW

다 빈번하게 사용되는 세 종류의 팔레트는 다음과 같다. .

Page 32: Graphical Programming Labview

부 의 기초1 LabVIEW

툴 팔레트(Tools Palette)

컨트롤 팔레트(Controls Palette)

함수 팔레트(Functions Palette)

그들의 타이틀 바를 클릭한 후 끌어서 위치를 이동시킬 수 있다.

컨트롤 팔레트와 함수 팔레트4.1

프론트 패널의 구성을 위하여 컨트롤과 인디케이터를 선택하려면 컨트롤 팔

레트를 사용한다 함수 팔레트는 아마 더 자주 이용하게 될 텐데 이것은 를. VI

구축하는 데 사용되는 함수와 스트럭처를 포함하고 있다 컨트롤 팔레트와 함.

수 팔레트는 여러 가지 면에서 특이하다 가장 중요한 것으로 컨트롤 팔레트.

는 프론트 패널 윈도우가 활성화되어 있을 때만 보이고 함수 팔레트는 블록,

다이어그램 윈도우가 활성화되어 있을 때만 보인다.

컨트롤 팔레트 함수 팔레트

두 팔레트들은 여러분이 필요로 하는 오브젝트들이 들어 있는 서브 팔레트

를 가지고 있다 컨트롤 팔레트나 함수 팔레트에 있는 서브 팔레트 위에 커서.

를 놓으면 그 서브 팔레트의 이름이 팔레트의 꼭대기에 나타난다.

마우스의 버튼을 클릭하고 버튼을 누르고 있으면 관련되는 서브 팔레트들이

나타난다 서브 팔레트에 있는 오브젝트를 선택하려면 오브젝트 위에 마우스.

버튼을 놓고 그것을 프론트 패널이나 블록 다이어그램 상의 원하는 곳으로 이

동시킨 후 클릭한다 팔레트 버튼의 이름처럼 서브 팔레트 오브젝트 이름도.

커서를 그 위로 가져가면 나타난다.

Page 33: Graphical Programming Labview

장 의 기초2 LabVIEW I

몇몇의 서브 팔레트들은 더 많은 오브젝트들을 포함하는 서브 팔레트를 가

지고 있다는 것을 주목하기 바란다 이것은 아이콘의 오른쪽 위 모서리에 있.

는 작은 삼각형으로 표시된다.

컨트롤 팔레트와 함수 팔레트들은 프론트 패널이나 블록 다이어그램의 빈 공간에서 팝업

함으로써 가져올 수 있다(popping up) .

팝업은 에서 마우스 오른쪽 버튼을 클릭 하는 것으로 정의된‘ ’ PC (right-mouse-clicking)

다.

툴 팔레트4.2

툴 은 마우스 커서의 특별한 동작 모드이다 여러분은 툴들을 표준 페(Tool) .

인트 프로그램에서 사용하는 것처럼 특수한 편집 또는 동작 기능들을 수행하

기 위하여 사용한다 컨트롤 팔레트와 함수 팔레트들과 마찬가지로 툴 팔레트.

는 위치를 변경시키거나 닫을 수 있다 툴을 선택하기 위하여 툴 팔레트 위에.

있는 적당한 버튼을 누르면 마우스 커서가 변하게 된다 만일 어떤 툴이 어떤.

기능을 갖는지 모를 때에는 커서를 버튼 위로 가져가서 툴을 설명해 주는 툴

팁 이 나타날 때까지 놓아 둔다(tool tip) .

툴 팔레트는 메뉴의 를 클릭하면 나타난다Windows Show Tools Palette .

오퍼레이팅 툴 은 여러분이 프론트 패널에 있는 컨트롤과 인(operating tool)

디케이터의 값을 변경시킬 수 있도록 해준다 오퍼레이팅 툴로 노브나 스위치.

및 다른 오브젝트들을 조작하기 때문에 그런 이름이 붙게 되었다 이것은. VI

가 실행 모드이거나 동작 중일 때 프론트 패널에서만 사용된다.

포지셔닝 툴 은 오브젝트를 선택하거나 이동시키거나 크기(positioning tool) ,

를 조절할 때 사용한다.

라벨링 툴 은 문자로 된 라벨을 만들어 내거나 문자열을 편집(labelling tool)

Tip

Page 34: Graphical Programming Labview

부 의 기초1 LabVIEW

할 때 사용한다.

와이어링 툴 은 블록 다이어그램 오브젝트들을 서로 연결할 때(wiring tool)

사용한다.

색상 툴 은 여러 색깔로부터 색상을 선택하여 오브젝트나 배경(coloring tool)

의 색상을 바꿀 수 있다 툴 팔레트에서 적당한 색상 영역을 클릭함으로써 전.

경 이나 배경 색을 정할 수 있다(foreground) (background) .

팝업 툴 은 그것으로 오브젝트를 클릭할 때 오브젝트의 팝업 메(pop-up tool)

뉴를 열어 준다.

스크롤 툴 은 활성화된 윈도우에서 스크롤 할 때 사용하게(scroll tool) (scroll)

되는데 활성화된 윈도우에서 이 툴을 선택하고 오른쪽 마우스 버튼을 누르고,

이동하면 윈도우 내의 오브젝트들은 움직이는 방향으로 스크롤된다.

브레이크포인트 툴 은 코드를 수정할 수 있도록 의 블록(breakpoint tool) VI

다이어그램에서 브레이크포인트를 설정한다 이것은 여러분이 필요할 경우 입.

력 값을 변경하거나 무엇이 어떻게 돌아가는지를 알 수 있도록 실행을 일시

정지시켜 준다.

프로브 툴 은 가 실행 중일 때 데이터가 와이어를 통해서 통과(probe tool) VI

하는 것을 볼 수 있도록 와이어 위에 프로브를 생성한다.

색상 복사 툴 은 기존의 오브젝트로부터 색을 잡아내서 다른(color copy tool)

오브젝트에 그 색을 덮어 씌운다.

프론트패널이활성화되어있을때에는스페이스바를누름으로써오퍼레이팅툴과포지셔

닝툴 사이의전환이가능하며 블록다이어그램이활성화되어있을때에는스페이스바를,

누름으로써 와이어링 툴과 포지셔닝 툴 사이에 전환이 가능하다.

툴바4.3 (ToolBar)

윈도우의 맨 꼭대기에 위치한 툴바는 의 실행을 제어하는 데 사LabVIEW VI

용되는 버튼들뿐만 아니라 오브젝트의 분포와 정렬을 제어하기 위한 명령어들

과 사용할 폰트를 선택할 수 있는 옵션을 포함하고 있다 여러분은 툴바가 프론.

Tip

Page 35: Graphical Programming Labview

장 의 기초2 LabVIEW I

트 패널에서보다 블록 다이어그램에서 더 많은 옵션을 가지고 있으며 를 실VI

행시킬 때 몇 개의 편집에 관련된 옵션들은 사라진다는 것을 알게 될 것이다.

화살표와 같이 생긴 실행 버튼은 그것을 클릭하였을 때 의 실행을 시작한다VI .

가 실제 실행 중일 때 그것의 모양이 바뀐다VI .

가 이 안될 때에는 실행 버튼의 모양이 깨진다VI compile .

연속 실행 버튼은 여러분이 정지 버튼을 누를 때까지 계속해서 를 실행한다VI .

스톱 버튼은 작은 정지 표시와 비슷하게 생겼으므로 쉽게 인식할 수 있(Stop)

으며 가 실행을 시작하면 활성화된다 이 버튼을 클릭하면 를 정지시킬VI . VI

수 있다.

일시 정지 버튼은 과 같은 단일 실(Pause) step into, step over, step out

행 모드 디버깅 옵션 을 사용할 수 있도록 를 일시(single-step) (option) VI

정지시킨다.

버튼은 데이터가 다이어그램을 따라 통과할 때Execution Highlighting VI

데이터의 흐름을 하이라이트 하도록 해 준다 이것이 온 되어(highlight) . (on)

있을 때 블록 다이어그램에서 데이터가 흐르는 상태를 볼 수 있다.

여러분은 툴바에 있는 글꼴 링 으로부터 글꼴 크기 스타일(Font ring) (font), , ,

문서의 색상 등을 변경할 수 있다LabVIEW .

의 아이콘들을 같은 간격으로 배치하거나 정렬시키는 데 도움을 주LabVIEW

는 자동 정렬 기구를 가지고 있다.

상의 모든 컨트롤과 인디케이터들은 생성된 순서에 따라 다른 것을LabVIEW

가리거나 또는 다른 것에 의해 가려져서 화면에 나타나게 되는데 이 툴을 사

용하여 그 순서를 바꿀 수 있다.

실행 모드와 편집 모드4.4

여러분이 를 열면 를 편집할 수 있는 편집 모드 상태로 열린다 여러분VI VI .

이 를 실행시키면 이것은 자동적으로 실행 모드로 들어가며 이때 편집은 불VI

Page 36: Graphical Programming Labview

부 의 기초1 LabVIEW

가능하다 가 실행 모드일 때 프론트 패널에서는 오퍼레이팅 툴만이 사용 가. VI

능하다 가 실행을 종료하면 는 편집 모드로 전환된다. VI VI . Operate 메뉴로부

터 를 선택함으로써 실행 모드로 전환할 수 있으며Change to Run Mode

를 선택함으로써 편집 모드로 전환된다Change to Edit Mode .

팝업 메뉴4.5 (Pop-up)

여기서는 지금까지와는 다른 형태의 메뉴를 설명한다 여러분은LabVIEW .

아마 팝업 메뉴를 다른 메뉴보다 더 자주 사용할 것이다 팝업시키LabVIEW .

기 위하여 커서를 오브젝트 위로 가져가서 마우스의 오른쪽 버튼을 클릭하면

팝업 메뉴가 나타난다.

모든 오브젝트는 옵션과 명령어들의 팝업 메뉴를 가지고 있다LabVIEW .

이 팝업 메뉴에서 사용 가능한 옵션들은 오브젝트의 종류에 의존하며 가 실VI

행 모드냐 또는 편집 모드냐에 따라 다르다 예를 들어 수치 컨트롤은 그래프.

인디케이터와는 매우 다른 팝업 메뉴를 가진다 만일 여러분이 프론트 패널이.

나 블록 다이어그램의 빈 공간에서 팝업하면 컨트롤 팔레트 또는 함수 팔레트

를 각각 얻게 된다.

팝업하는 법4.6

윈도우즈와 유닉스에서는 오브젝트 위에서 오른쪽 마우스 버튼을 클릭한다.

프로그래밍 과정에서 어떻게 해야 할지 잘 모를 때 팝업을 시도해 본다는 것

을 기억하라.

팝업 메뉴에서 기억해 두어야 할 것4.7

여러 팝업 메뉴 항목들은 그 항목의 부 항목을 가지고 있으면 메뉴의 오른

쪽 끝에 화살표 모양이 나타나는데 사용자는 이 화살표를 보면 이 메뉴가 부,

Page 37: Graphical Programming Labview

장 의 기초2 LabVIEW I

메뉴를 가지고 있다는 것을 알아야 한다.

메뉴들은 가끔 서로 배타적인 선택을 가진다 현재 선택된 옵hierarchical .

션은 텍스트 기반의 옵션을 위하여 체크 마크로 표시되나 그래피컬 옵션을 위

해서는 박스로 둘러싸인다 몇몇 메뉴 항목들은 구성해야 할 옵션들을 포함하.

는 대화상자를 팝업한다 대화상자를 이끄는 메뉴 항목들은 로 나. ellipsis(...)

타내어진다 일반적으로 화살머리 또는 가 없는 메뉴 항목들은 선택되. ellipsis

면 바로 실행되는 명령들이다.

가끔 오브젝트 중의 서로 다른 부분은 다른 팝업 메뉴를 가진다 여러분이.

팝업을 해서 원하는 팝업 메뉴를 얻지 못하면 오브젝트의 다른 부분을 팝업

해 보라.

설명이 필요한 팝업 특성들4.8

팝업 메뉴들은 오브젝트들의 여러 특성들을 구체화시키도록 해 준다 다음의.

옵션들은 여러 팝업 메뉴에서 나타나므로 각각에 대하여 설명하도록 한다 이.

부분은 뛰어넘어도 상관이 없고 필요할 때 다시 돌아와서 참고하면 된다.

과Change to Control Change to Indicator

을 선택함으로써 현재의 인디케이터가 컨트롤로 바뀔Change to Control

수 있고 를 선택하면 그와 반대로 컨트롤이 인디케이터, Change to Indicator

로 바뀔 수 있다 오브젝트가 컨트롤이면 그 팝업 메뉴는. Change to

를 포함하며 인디케이터이면 팝업 메뉴는 을 포Indicator , Change to Control

함하게 된다.

블록 다이어그램에 있는 컨트롤 터미널은 인디케이터 터미널보다 더 두꺼운

Page 38: Graphical Programming Labview

부 의 기초1 LabVIEW

외곽선을 가진다 여러분은 컨트롤과 인디케이터를 혼동하지 않도록 항상 주.

의를 기울여야 한다.

과Find Terminal Find Control/Indicator

여러분이 프론트 패널 메뉴로부터 을 선택한다면Find Terminal LabVIEW

는 대응되는 블록 다이어그램 터미널로 가서 깜박이게 된다 만일 블록 다이.

어그램 팝업 메뉴로부터 를 선택하면 는 그Find Control/Indicator LabVIEW

것과 대응되는 프론트 패널 상의 오브젝트를 보여 줄 것이다.

Show

많은 아이템들이 메뉴를 가지고 있으며 그것으로 연결 터미널이나Show

라벨 스크롤 바 등과 같은 것들을 감추거나 보이게 한다 어떤 옵션이 그 옆, .

에 체크되어 있다면 그 옵션은 보여지며 체크되지 않았다면 그것은 감추어져,

서 보이지 않는다.

Data Operation

팝업 메뉴는 컨트롤과 인디케이터에서 데이터를 조정할 수Data Operation

있도록 여러 가지의 옵션들을 가지고 있다 이것들은 실행 모드에서 사용 가.

능한 팝업 아이템들이라는 것에 주목할 필요가 있다.

Create

옵션은 주어진 오브젝트에 대한 지역 변수 와 속성Create (local variable)

노드 를 만드는 쉬운 방법이다(attribute node) .

Key Navigation

은 프론트 패널 오브젝트를 키보드 상의 키를 통해 사용할Key Navigation

수 있는 키를 설정할 수 있다.

Online Help

Page 39: Graphical Programming Labview

장 의 기초2 LabVIEW I

함수의 팝업 메뉴로부터 온라인 도움말을 선택하면 는 그 함수에LabVIEW

대응되는 설명을 보여 준다.

Replace

옵션은 매우 유익하다 바꾸고자 하는 오브젝트에서 팝업을 하여Replace .

를 클릭한 후 컨트롤 팔레트 또는 함수 팔레트에서 하나를 선택한다Replace .

가능한 곳에서는 와이어가 연결된 상태로 남아 있게 된다.

위에서 설명한 모든 특징들을 지금 당장 다 기억하려고 애쓸 필요는 없다.

이것들은 를 사용하면서 자연스럽게 기억될 것이다LabVIEW .

윈도우의 맨 위에 있는 메뉴바에는 여러 개의 풀다운 메뉴가 있으며 메뉴바 중의 하나를VI ,

누르면 서브 메뉴가 나타난다 풀다운 메뉴는 다른 응용 프로그램에 포함되어 있는. Open,

와 같은 것을 가지며 다른 기능들은 의 특별한 기능들이다 메뉴Save, Copy, Paste LabVIEW .

들은 여러분이 쓰기에 편리하도록 단축키로도 사용된다.

의 팔레트는 여러분이 스크린 위의 편리한 곳에 위치시킬 수 있다 빈번하게 사용LabVIEW .

되는 세 종류의 팔레트는 다음과 같다.

툴 팔레트(Tools Palette)컨트롤 팔레트(Controls Palette)함수 팔레트(Functions Palette)

그들의 타이틀 바를 클릭한 후 끌어서 위치를 이동시킬 수 있다.

윈도우의 맨 꼭대기에 위치한 툴바는 의 실행을 제어하는 데 사용되는 버튼들LabVIEW VI

뿐만 아니라 오브젝트의 분포와 정렬을 제어하기 위한 명령어들과 사용할 폰트를 선택할 수

있는 옵션을 포함하고 있다.

모든 오브젝트는 옵션과 명령어들의 팝업 메뉴를 가지고 있다 이 팝업 메뉴에서LabVIEW .

사용 가능한 옵션들은 오브젝트의 종류에 의존하며 가 실행 모드냐 또는 편집 모드냐에 따라VI

다르다.

요약

Page 40: Graphical Programming Labview

부 의 기초1 LabVIEW

예제 1

디지털 컨트롤과 스트링 컨트롤 및 불 인디케이터를 프론트 패널에 만들어 보시오.

이 예제에서는 환경에 대하여 친숙해지도록 간단한 문제를 연습LabVIEW

해 보기로 한다 다음의 기본적인 작업들을 여러분 자신이 직접 해 보기를 바.

란다.

새로운 를 열고 프론트 패널과 블록 다이어그램 사이를 토글 해VI (toggle)

보시오.

메뉴바의 에 있는 또는 을 선택하Windows Show Diagram Show Panel

면 전체 화면의 프론트 패널이나 블록 다이어그램을 볼 수 있다.

프론트 패널과 블록 다이어그램을 동시에 볼 수 있도록 크기를 조정해 보라.

메뉴바의 에 있는 또는Windows Tile Left and Right Tile Up and

을 선택하면 프론트 패널과 블록 다이어그램을 동시에 볼 수 있다Down .

컨트롤 팔레트로부터 디지털 컨트롤 스트링 컨트롤 불 인디케이터를 선택, ,

하여 프론트 패널 위에 띄워 보라.

디지털 컨트롤을 얻으려면 컨트롤 팔레트의 수치 서브 팔레트 버튼을 클

릭한 후 이때 나타나는 서브 팔레트로부터 디지털 컨트롤을 선택한다.

이번에는 스트링 컨트롤과 불 인디케이터를 같은 방법으로 만들어 보라.

디지털 컨트롤

Page 41: Graphical Programming Labview

장 의 기초2 LabVIEW I

프론트 패널의 오브젝트가 만들어질 때 가 그것에 대응되는 터LabVIEW

미널을 블록 다이어그램에 어떻게 만드는지 주목하라 그리고. floating

터미널은 오렌지색 정수 은 청색 스트링은 핑크point numeric ( numeric ),

색 불은 녹색이라는 것을 주목하라 이 색들은 여러분이 데이터의 형식을, .

구분하기 쉽도록 해 준다.

디지털 컨트롤 위에서 팝업하여 팝업 메뉴로부터 를Change to Indicator

선택하라 의 모양이 어떻게 변하는지를 살펴보라 디지털 컨트롤. numeric (

왼쪽의 작은 화살표들이 사라져 버린다 그리고 블록 다이어그램의 터미).

널이 어떻게 바뀌는지 주목해 보라 인디케이터의 외곽선이 얇아진다 이( ).

차이를 확실히 구분할 수 있을 때까지 컨트롤과 인디케이터 사이를 계속

반복해 보라.

툴 팔레트로부터 포지셔닝 툴을 선택하여 프론트 패널에 있는 오브젝트를

하나 선택하라 키를 눌러서 그것을 지워 버려라 다른 오브젝트들. <delete> .

도 지워서 프론트 패널과 블록 다이어그램을 깨끗하게 만든다.

스트링 컨트롤

불 인디케이터

Page 42: Graphical Programming Labview

개요1.

지금까지는 환경의 기본에 대하여 배웠고 지금부터는 들을 구LabVIEW , VI

성하는 방법에 대하여 공부하겠다 실제로 해보면 더 잘 기억할 수 있기 때문.

에 여러분이 책에 있는 대로 컴퓨터에서 수행해 나가면 더욱 빠르게 기술을

배울 수 있을 것이다 이번 장에서는 실제로 프로그램을 작성할 때 많이 사용.

하는 프로그램 편집 기술과 지금까지 소개한 툴들을 사용하는 방법에 대해 배

우게 된다.

이 장에서 배우는 것들2.

프론트 패널 상에 오브젝트 생성하기

라벨 사용하기

오브젝트 편집 기술

수치 컨트롤과 인디케이터의 기초

오브젝트 설명 만들기(Description)

파일 저장하기

chapter

3의 기초LabVIEW

Page 43: Graphical Programming Labview

부 의 기초1 LabVIEW

프론트 패널 오브젝트 생성3.

프론트 패널에 오브젝트 생성하기3.1

보통 사용자 입력과 프로그램의 출력을 정의하기 위하여 프론트 패널에 컨

트롤과 인디케이터를 드롭 하여 프로그램을 시작하게 된다 커서를 컨(drop) .

트롤 팔레트 위로 가져가면 서브 팔레트의 이름이 팔레트 위쪽에 나타나는 것

을 볼 수 있다.

마우스의 버튼을 클릭하여 누른 상태에서 그 서브 팔레트로 이동한다 마우.

스의 버튼을 놓음으로써 서브 팔레트의 원하는 오브젝트를 선택할 수 있다.

서브 팔레트의 오브젝트 위로 커서를 옮기면 서브 팔레트의 맨 위쪽에 오브젝

트의 이름이 나타나는 것을 볼 수 있다.

클릭한 오브젝트를 프론트 패널 위의 원하는 곳으로 이동시킨 후 클릭하면

그 오브젝트가 나타나게 된다.

한 오브젝트를 프론트 패널 위에 나타내면 그것에 대응되는 터미널이 블록

다이어그램에 나타난다는 것을 기억하라 윈도우즈 메뉴로부터. Tile Left and

를 선택하여 동시에 프론트 패널과 블록 다이어그램 윈도우를 본다면 사Right

용자가 를 작성하는 데 도움이 될 것이다VI .

아이템에 라벨 붙이기3.2

라벨은 프론트 패널과 블록 다이어그램의 오브젝트들에게 이름을 부여하기

위해서 사용하는 도구로 사용자가 블록 다이어그램이나 프론트 패널에 오브,

Page 44: Graphical Programming Labview

장 의 기초3 LabVIEW II

젝트를 생성하면 그 오브젝트 위에 작은 사각형 영역이 나타나게 된다 사용.

자는 이 사각형 영역에 오브젝트를 대표하는 이름이나 사용자의 취향에 따라

주석을 달 수도 있다 사용자가 오브젝트를 생성하면 이 사각 영역은 문자열.

의 입력을 기다리게 되는데 라벨을 사용하지 않고 다른 작업을 수행하면 이,

작은 사각형 영역은 사라져 버린다 문자를 입력하면 프론트 패널 오브젝트뿐.

만 아니라 대응되는 블록 다이어그램 터미널에도 입력된 문자가 동시에 나타

난다.

는 고유 라벨 과 프리 라벨 이라는 두LabVIEW (owned label) (free label)

종류의 라벨을 지원하고 있다 고유 라벨은 오브젝트에 속해 있으며 그것과.

함께 이동하며 그 오브젝트에만 주석을 달 수 있다 프리 라벨은 특정한 오브.

젝트에 관계되는 것이 아니고 자유롭게 만들 수도 있고 지울 수도 있다.

프리 라벨 만들기3.3

프리 라벨은 독립적으로 만들 수도 있고 이동도 가능하며 지울 수도 있다.

프리 라벨을 만들려면 툴 팔레트로부터 라벨링 툴을 선택하여 사용자가 원하

는 곳에서 클릭하면 문자 커서를 가진 작은 박스가 나타날 것이다 원하는 문.

자를 타자하면 입력이 완료된다 프론트 패널에 라는. “Model 704 Meter”

프리 라벨을 만들어 보라.

또한 라벨은 팝업 메뉴의 을 이용하여 보이거나 혹은 숨길Show Label▶

수 있다.

이 곳에 입력된 문자가 나타난다.

Page 45: Graphical Programming Labview

부 의 기초1 LabVIEW

또한 사용자는 캡션 라벨 을 사용할 수 있다 이 라벨도 고(Caption Label) .

유 라벨과 함께 오브젝트에 종속적으로 행동하지만 고유 라벨보다 더 많은,

단어를 써넣을 수 있으므로 오브젝트에 대한 설명을 하는 데 사용한다.

캡션 라벨도 고유 라벨과 같이 팝업 메뉴를 이용하여 보이게 하거나 숨길

수 있다.

또한 사용자가 라벨을 프로그램적으로 조작할 수 있는데 이것은 속성 노드,

를 이용하는 것이다 속성 노드에 대해서는 다음에 배우게 되는데 여기서는. ,

속성 노드를 이용하면 프로그램적으로 조작할 수 있다는 사실만을 알아 두기

바란다.

Page 46: Graphical Programming Labview

장 의 기초3 LabVIEW II

만일 사용자가 를 이용하여 오브젝트에 대한 도움말을Help Show Help▶

보는 경우에 아래의 그림과 같이 상단에 오브젝트의 캡션 라벨이 나타나고 그

밑에 고유 라벨이 나타나게 된다.

문자의 색 크기 스타일 폰트 바꾸기3.4 , , ,

에서는 툴바에 있는 폰트 링 의 옵션을 이용하여 문자LabVIEW (Font ring)

속성을 변경할 수 있다 포지셔닝 툴로 오브젝트를 선택한 후 폰트 링으로부.

터 폰트를 선택하여 변경시킨다.

온도계 라는 프리 라벨 폰트의 크기를 로 바꾸어 보라“ ” 18 .

블록 다이어그램에 오브젝트 생성하기3.5

실제 프로그램은 블록 다이어그램에 있는 함수들 서브 들 스트럭처들을, VI ,

조합함으로써 만들어진다 이렇게 블록 다이어그램 상에서 프로그램을 제작하.

기 위해서는 프론트 패널에서 컨트롤 팔레트를 이용해서 했던 것처럼 함수 팔

레트의 서브 팔레트 중에서 원하는 오브젝트를 선택한 후 위치시키고 싶은 곳

으로 가서 클릭하면 생성된다.

편집 기술4.

윈도우즈 상에 있는 오브젝트들을 다른 곳으로 이동시키거나 복사하거나 지

워 버리는 등의 편집 방법을 설명하겠다.

Page 47: Graphical Programming Labview

부 의 기초1 LabVIEW

오브젝트 선택하기4.1

오브젝트를 편집하기 위해서는 우선 그것을 선택하여야 한다 선택하는 방.

법은 포지셔닝 툴을 오브젝트 위로 가져간 다음 마우스 버튼을 클릭하면 된다.

오브젝트를 선택하면 선택된 오브젝트는 점선의 윤곽선으로 둘러싸인다 한.

개 또는 여러 개의 오브젝트를 선택하는 또 다른 방법은 그들 주위로 선택 사

각형으로 끌기를 하는 것이다 즉 포지셔닝 툴로 빈 공간에 클릭한 후 모든 오.

브젝트가 다 포함될 때까지 대각선 방향으로 끌기를 한 다음 마우스의 버튼을

놓으면 선택 사각형은 사라지고 점선들이 선택된 각각의 오브젝트를 에워싼

다 프론트 패널 오브젝트와 블록 다이어그램 오브젝트를 동시에 선택할 수는.

없지만 같은 프론트 패널이나 블록 다이어그램에서 여러 개의 오브젝트는 선

택할 수 있다.

오브젝트 이동시키기4.2

포지셔닝 툴로 오브젝트를 클릭하여 원하는 위치까지 끌기를 하면 된다 다.

른 방법은 포지셔닝 툴로 오브젝트를 선택한 후 화살표 키로 정밀하게 이동시

킬 수 있으며 키를 누른 상태에서 화살표 키를 누르면 빨리 이동시킬<shift>

수 있다.

Page 48: Graphical Programming Labview

장 의 기초3 LabVIEW II

오브젝트의 복사4.3 (duplicating)

사용자는 선택된 오브젝트를 복사할 수 있다 복사하려는 오브젝LabVIEW .

트를 포지셔닝 툴로 클릭하면 점선으로 둘러싸인다 메뉴로부터 를. Edit Copy

선택하면 선택된 오브젝트가 클립보드로 복사된다 메뉴로부터 옵. Edit Paste

션을 클릭하면 오브젝트가 프론트 패널 상에 복사된다.

좀더 쉬운 방법은 오브젝트를 클릭한 후 점선으로 둘러싸인 상태로 만든다.

키를 누른 상태에서 오브젝트를 클릭하여 이동시키고자 하는 곳으로 끌<ctrl>

기를 하고 마우스의 버튼을 놓는다 이것은 자체의 기능이 아니라. LabVIEW

윈도우즈 상에서 실행되는 대부분의 프로그램들에게 지원되는 드래그 앤 드롭

이라는 윈도우즈 서비스의 한 종류이다(Drag & Drop) .

하지만 블록 다이어그램에서는 컨트롤과 인디케이터 터미널을 복사할 수 없

다 오브젝트들의 복사는 프론트 패널에서만 가능하다는 것을 명심하기 바란다. .

오브젝트를 복사하면 대응되는 터미널도 블록 다이어그램에 만들어진다 컨.

트롤과 터미널이 서로 어느것에 속하는지를 모를 경우 커서를 오브젝트 위에

놓고 팝업 메뉴를 호출하여 또는 을 선택한다Find Terminal Find Control .

그러면 는 오브젝트에 대응되는 짝을 찾아 깜박임과 함께 하이라이LabVIEW

트 하고 점선으로 에워싼다(highlight) .

오브젝트 지우기4.4

지우고자 하는 오브젝트를 선택한 후 메뉴로부터 를 클릭 또는Edit Clear

키를 누른다<delete> .

컨트롤과 인디케이터들은 프론트 패널에서만 지울 수 있으며 블록 다이어,

그램에서는 터미널을 지울 수 없다.

오브젝트의 크기 조절4.5

오브젝트는 원하는 크기로 조절할 수 있다 포지셔닝 툴을 오브젝트 위로.

가져가면 크기 조절 표시가 모서리에 나타난다 포지셔닝 툴을 크기 조절 표.

시 위로 가져가면 커서가 크기 조절 툴로 바뀐다 클릭한 후 끌기를 하여 점선.

이 원하는 크기가 될 때까지 조절한다.

어떤 컨트롤과 인디케이터는 크기 조절이 완전히 자유롭게 되지 않는다 예.

Page 49: Graphical Programming Labview

부 의 기초1 LabVIEW

를 들어 디지털 컨트롤은 수평 방향으로만 크기 조절이 된다 그러나 큰 폰트.

를 사용하여 오브젝트를 크게 보이게 할 수 있다.

오브젝트에 색칠하기4.6

는 모니터의 설정에 따라 스크린에 검정과 흰색 회색 등으로 나LabVIEW ,

타난다 대부분의 오브젝트들은 색상의 변경이 가능하지만 모두 다. LabVIEW

그렇지는 않다 예를 들어 프론트 패널 오브젝트들의 블록 다이어그램 터미널.

들과 와이어들은 그것들이 전달하는 데이터 형식에 대한 색상이 정해져 있어

서 색상의 변경이 불가능하다 오브젝트나 윈도우의 색상을 변경하려면 색상.

도구 로 팝업하여 다음과 같은 팔레트가 나타나면 원하는 색상을(Color tool)

클릭한다.

하단의 를 선택하면 사용자가 원하는 색상을 선택할 수 있는데 색More... ,

의 삼원색인 빨강색 녹색 파랑색의 조합으로 사용자가 원하는 색을 만들어, ,

사용하면 된다.

Page 50: Graphical Programming Labview

장 의 기초3 LabVIEW II

색상 맞추기4.7 (matching)

사용되는 색상의 정도를 맞추기가 곤란한 경우 오브젝트의 색을 복사하여

다른 오브젝트에 적용할 수가 있다 툴 팔레트에 있는 을 사. Color Copy tool

용하여 색상을 정한다 선택하려는 색을 가진 오브젝트 위에서. Color Copy

을 클릭한 후 툴 팔레트의 색상 툴을 선택하고 이것을 다른 오브젝트 위에tool

서 클릭한다.

오브젝트 정렬 과 배치4.8 (alignment) (distribution)

가끔 구성된 를 정리된 상태로 보이게 하고 싶은 경우 오브젝트들의 간격VI

과 줄을 똑바로 맞추는 방법이 필요할 것이다 의 정렬과 배치 기능. LabVIEW

이 이러한 작업을 쉽게 해 준다 오브젝트들을 정렬하려면 포지셔닝 툴로 그.

들을 모두 선택 포지셔닝 툴을 클릭하고 끌기를 하여 점선 사각형이 오브젝트(

들을 모두 에워싸게 한 후 마우스 버튼을 놓음 하고 툴바의 오른쪽에 있는)

으로 가서 정렬하고자 하는 형을 선택한다Align ring .

아래의 예는 을 사용하는 방법을 설명하고 있는데 정렬하고자Align ring ,

하는 오브젝트를 선택한 상태에서 을 누르면 아래의 그림과 같은Align ring ,

여섯 가지 정렬 방법을 사용할 수 있다.

Page 51: Graphical Programming Labview

부 의 기초1 LabVIEW

은 과는 달리 오브젝트들을 같은 간격으로 배열Distribute ring Align ring

하고자 할 때 같은 방법으로 사용된다.

수치 컨트롤과 인디케이터5. (Numeric)

수치 컨트롤은 에 수치 값을 입력할 수 있도록 해 주고 수치 인디케이터VI ,

는 수치 값이 나타나도록 해 준다 는 여러 가지 형태의 수치 오브. LabVIEW

젝트들 예를 들어 노브 슬라이드 탱크 미터 온도계 그리고 간단한(knob), , , , ,

디지털 표시기 등을 가지고 있다 이들을 사용하려면 컨트롤 서브 팔레트의.

수치 팔레트로부터 선택하면 된다.

표시 형식5.1 (Representation)

블록 다이어그램에 나타나는 터미널의 모양은 데이터의 표시 형식에 따르게

된다 서로 다른 표시 형식들은 메모리를 보다 효과적으로 사용하도록 데이터.

저장 방법들이 다른 것에 기인하며 또한 서로 다른 메모리의 바이트 수를 사,

용하는 것 부호가 있거나 없는 것에도 기인한다 블록 다이어그램 터미널 중, .

정수 데이터는 파랑색 부동 소수점 데이터는 오렌지색을 가진다 터미널들은, .

데이터의 형식을 나타내는 몇 개의 문자 예를 들어 배정도 유동 소수점 표시(

형식은 로 표시된다“DBL”) .

에서 사용되는 표시 형식은 다음 표와 같다LabVIEW .

탱크

온도계

노브

슬라이드

미터

Page 52: Graphical Programming Labview

장 의 기초3 LabVIEW II

control Indicator Description

Extended-precision floating-point

Double-precision floating-point

Single-precision floating-point

Complex extended-precision

floating-point

Complex double-precision floating-point

Complex single-precision floating-point

Unsigned 32-bit integer

Unsigned 16-bit integer

Unsigned 8-bit integer

32-bit integer (long word)

16-bit integer (word)

8-bit integer

Cluster

Array

Path

Refnum

Boolean

String

Enumeration

ActiveX Variant

수치 상수 컨트롤 인디케이터의 표시 형식은 오브젝트에서 팝업하여, ,

에서 선택하여 변경할 수 있다 수치 컨트롤이나 인디케이Representation .▶

터에서 마우스의 오른쪽 버튼을 클릭함으로써 팝업한다는 것을 항상 기억하

라.

불6. (Boolean)

불은 불 대수의 기초를 형성하는 데 기여한 이라는 영국의George Boole

논리학자이며 수학자를 기리기 위하여 이름 붙여진 것이다 불은 또는. “on

라는 간단한 단어로 생각할 수도 있다 불 데이터는 참 과 거짓off” . (true)

의 두 상태를 가진다 는 컨트롤 팔레트의 불 서브 팔레트에(false) . LabVIEW

사용할 수 있는 수많은 스위치 버튼 등과 같은 불 컨트롤과 인디케이터, LED,

를 제공한다 불의 상태는 오퍼레이팅 툴로 클릭하여 바꿀 수 있으며 수치 컨. ,

트롤과 인디케이터처럼 불의 각 형태는 그 용도에 따라 디폴트 형태를 가지고

Page 53: Graphical Programming Labview

부 의 기초1 LabVIEW

있다 예를 들면 스위치는 컨트롤로 그리고 는 인디케이터로 생성된다( LED ).

Page 54: Graphical Programming Labview

장 의 기초3 LabVIEW II

불 터미널은 블록 다이어그램에서 초록색으로 표시되며 라는 문자“TF”

를 포함한다.

컨트롤 터미널은 윤곽선이 두꺼운 반면 인디케이터 터미널은 얇다 그들은.

기능이 서로 다르기 때문에 그 둘을 구분하는 것은 매우 중요하다.

컨트롤 입력 데이터 소스= = (data source)인디케이터 출력 데이터 싱크= = (data sink)

불 버튼6.1

는 일반적으로 두 가지 형태의 불 버튼을 사용자에게 제공하고 있LabVIEW

는데 그것은 원형과 사각형 버튼으로 이 버튼 안에는 버튼의 상태를 나타낼,

때 사용할 수 있는 문자를 가지고 있다 이 문자는 단지 사용자를 위해 정보를.

표시하는 경우에 사용하며 일반적으로 두 가지 문자 메시지를 포함할 수 있,

다 그 하나는 상태이며 다른 하나는 상태를 각각 나타내는 문. TRUE FALSE

자 표시이다 처음 버튼을 가져왔을 때 상태는 을 상. TRUE “ON” , FALSE

태는 를 말한다 모든 불은 또는 라는 단어를 표시“OFF” . “ON” “OFF”

할 수 있는 문자 옵션을 가지고 있다Show Boolean .▶

문자열7. (String)

간단히 말하면 문자열 컨트롤과 인디케이터는 문자 데이터를 나타(string)

낸다 스트링은 대부분 를 저장하는 표준 방법인. alphanumeric character

형식의 데이터를 포함하며 스트링 터미널과 스트링 데이터를 전달하ASCII ,

Page 55: Graphical Programming Labview

부 의 기초1 LabVIEW

는 와이어는 블록 다이어그램에서 분홍색 으로 나타난다 또한 터미널(pink) . ,

은 라는 문자를 포함한다 스트링은 컨트롤 팔레트의“abc” . String & Table

서브 팔레트에서 찾을 수 있다.

경로8. (Path)

파일 폴더 디렉토리의 경로를 표시하기 위하여 경로 컨트롤과 인디케이터, ,

를 사용한다.

와이어링9. (Wiring Up)

프론트 패널에 컨트롤들과 인디케이터들을 아무리 잘 정렬하여 놓았어도 프

로그램 안에서 상호 작용을 하게 하려면 블록 다이어그램에서 이들을 와이어

로 연결하여야 한다.

여기서는 와이어링 기술에 관하여 필요한 모든 것들을 설명한다.

와이어링 툴은 터미널들을 연결하는 데 사용한다 커서 포인트는 그림과 같.

이 실패에 감기지 않은 와이어의 끝단이다.

Page 56: Graphical Programming Labview

장 의 기초3 LabVIEW II

하나의 터미널을 다른 것에 연결하기 위하여 첫 번째 터미널을 와이어링,

툴로 클릭하고 다른 터미널로 이동한 후 그 위에 클릭한다 어떤 터미널을 먼.

저 클릭해도 상관없다 와이어링 툴의 커서가 터미널 위에 정확히 위치하게.

되면 터미널 영역이 깜박거린다 클릭하면 이 터미널까지 와이어가 연결된다. .

와이어링 툴로 터미널을 클릭하면 커서가 다이어그램에서 움직이는 데 따,

라 실패에서 실이 풀리듯이 는 와이어를 늘려 준다 이때 마우스의LabVIEW .

버튼을 계속 누르고 있을 필요는 없다 기존의 와이어에 연결하고자 할 때에.

도 위에서 설명한 대로 수행하면 된다 와이어링 툴이 새로운 와이어를 기존.

의 와이어에 묶기 위하여 정확하게 위치하였을 때 와이어가 깜박인다 스트럭.

처 밖에 있는 터미널을 스트럭처 안에 있는 터미널과 직접 연결할(structure)

수도 있다 는 와이어가 통과하는 스트럭처 경계에 다음 그림과 같. LabVIEW

이 터널을 만든다 첫 번째 그림은 와이어의 끌기를 하였을 때 터널이 나타나.

는 것을 보여 주며 두 번째 그림은 와이어링이 된 후의 터널을 묘사하고 있,

다.

복잡한 오브젝트의 와이어링9.1

서브 또는 복잡한 노드를 와이어링 할 때에는 와이어링 툴을 아이콘에VI

가까이 접근시킬 때 나타나는 입출력 단자들의 연결선에 주의를 기울이면 도

움이 된다 아래의 그림에 나타난 아이콘 주위에는 잘려진 와이어들 즉 단. VI ,

자의 연결선들이 그들의 형태 색깔 두께 등에 의하여 터미널에 필요한 데이, ,

터널

Page 57: Graphical Programming Labview

부 의 기초1 LabVIEW

터의 형태로 나타난다.

와이어링 툴을 터미널 위로 통과시킬 때 똑바른 위치에 연결할 수 있도록

대응되는 윈도우 터미널이 나타난다Help .

잘못된 와이어9.2 (Bad Wire)

와이어링을 잘못 하였을 때에는 깨어진 와이어 즉 점선으로 된 와이어가 정

상적인 와이어 대신에 나타난다 잘못 연결된 와이어들이 다 없어질 때까지.

실행 버튼은 깨진 상태로 보이며 는 컴파일을 실행하지 못한다 잘못 연결VI .

된 와이어를 지우려면 포지셔닝 툴로 선택한 후 키를 누르면 지워진<delete>

다 더 좋은 방법은 메뉴에서 를 클릭함으로써 모든. Edit Remove Bad Wire

잘못된 와이어들을 한꺼번에 지워 버리는 것이다.

만일 와이어들이 왜 끊어지는지를 모를 때에는 깨진 상태의 버튼을 클Run

릭하거나 끊어진 와이어 위에서 팝업하여 를 선택한다 그러면 무List Error .

엇이 문제인지를 설명해 주는 대화상자가 나타난다.

와이어링 요령9.3

와이어의 방향을 바꾸려면 마우스의 버튼을 클릭한다.

와이어의 출발 방향을 바꾸려면 스페이스 바를 누른다.

Page 58: Graphical Programming Labview

장 의 기초3 LabVIEW II

와이어링 중에 와이어를 지우려면 마우스의 오른쪽 버튼을 클릭한다.

와이어가 교차하면 다음 그림에서 보이는 바와 같이 첫 번째 와이어가 두 번

째 와이어의 밑에 있는 것처럼 첫 번째 와이어에 약간의 틈새가 생긴다 와.

이어가 분기하는 것과 교차하는 것을 구분하기 위하여 Edit Preferences▶

블록 다이어그램 프레퍼런스에서 항목을 클릭Show dots at wire junction

하면 교차점과 분기점에서 점이 나타난다.

와이어링 중 와이어를 지우려면 마우스의 오른쪽 버튼을 누른다.

와이어 늘이기9.4

포지셔닝 툴을 이용하여 선택된 오브젝트들을 드래그함으로써 한 개 또는

그룹의 와이어링된 오브젝트들을 이동시킬 수 있다 선택된 오브젝트들의 와.

이어는 자동적으로 늘어나게 된다.

늘어난 와이어는 가끔 잘려진 끄트머리 등을 남긴다 그러면 메뉴의. Edit

명령을 이용하여 이것들을 제거하라Remove Bad Wires .

사용자가 를실행하기 전에항상VI <Ctrl + 를 사용하여 를 실행하는B> Remove Bad Wires

것이 좋다 조각난 는 오브젝트들에 가려져 잘 안보이기 때문이다. Bad Wires .

Tip

Page 59: Graphical Programming Labview

부 의 기초1 LabVIEW

와이어 선택과 지우기9.5

와이어 세그먼트는 와이어의 한 수평 또는 수직 부분을 말한다 세 개 또는.

네 개의 와이어 세그먼트가 만나는 점을 교차점 이라고 부른다 와(junction) .

이어 가지 는 교차점과 교차점 교차점과 터미널 터미널과 터미널 사(branch) , ,

이의 모든 세그먼트를 포함한다 와이어 위에 위치 도구를 놓고 마우스로 한.

번 클릭하면 세그먼트를 선택하게 된다 마우스를 두 번 클릭하면 가지를 선.

택하게 된다 마우스를 세 번 클릭하면 와이어 전체를 선택하게 된다. .

또는 키를 누르면 선택된 와이어를 지울 수 있다<delete> <backspace> .

상수 컨트롤 인디케이터 자동 생성하기10. , ,

상수 컨트롤 인디케이터를 팔레트에서 생성하여 터미널에 연결하는 대신, ,

에 터미널로부터 팝업하여 Create Constant, Create Control, Create

를 선택하면 그 터미널에 맞는 적당한 데이터 형식을 가진 오브젝트Indicator

를 자동으로 생성한다 새로운 오브젝트는 자동적으로 연결된다 이 기능은 매. .

우 편리하기 때문에 프로그램을 작성할 때 꼭 기억하라.

Page 60: Graphical Programming Labview

장 의 기초3 LabVIEW II

오브젝트 설명 만들기11. (Description)

가끔 사용자가 만든 오브젝트에 대한 설명을 만들 필요가 있다 이것은 일.

반 범용 언어에 주석을 다는 것과 같은 의미이며 에서는 각 오브젝, LabVIEW

트뿐만 아니라 에 대한 설명을 만들 수 있다VI .

우선 각 오브젝트에 대한 설명을 만들려면 팝업 메뉴의 Data Operation ▶

을 사용하면 아래의 그림과 같은 대화상자가 활성화된다Description .

이 대화상자를 사용하려면 사용자가 편집 모드에 있어야 하며 각 오브젝트,

에 대한 설명을 항에 넣고 버튼을 누르면 된다 이 설명을 보Description OK .

려면 다시 팝업 메뉴를 이용하여 위의 대화상자를 활성화시키면 되지만 도움

말 상자에서도 볼 수 있다.

전체에 대한 설명을 만들려면 를 사용하면VI Windows Show VI Info...▶

되는데 아래의 그림은 그 대화상자를 보여 주고 있다.

Page 61: Graphical Programming Labview

부 의 기초1 LabVIEW

앞의 대화상자는 사용자가 에 대한 설명을 만들기 위해 사용하기도 하지VI

만 메모리 사용에 대한 설명도 함께 나온다는 것을 기억하고 나중에 참고하기

바란다.

저장하기12. VI

사용자는 작성한 를 하나의 로 저장하거나 여러 개의 들을 하나의VI VI VI

파일에 묶어서 저장할 수 있다.

단일 로 저장하기12.1 VI

메뉴에는 아래와 같이 다섯 가지 메뉴 항목이 있다File .

메뉴는 파일을 저장하는 데 사용할 수 있으며 만일 가 새로 만든Save , VI

것이라면 파일의 이름을 지정할 수 있도록 대화상자가 나타난다.

만일 가 새로 작성한 것이라면VI Save As..., Save A Copy As..., Save

메뉴를 사용하면 된다with Options... .

메뉴를 사용하면 위와 같은 대화상자가 활성화되는Save with Options...

데 메인 와 서브 를 어떠한 방법으로 저장할 것인가 다이어그램에 대해, VI VI ,

암호 를 부여할 것인가에 대한 설정을 할 수 있다(password) .

Page 62: Graphical Programming Labview

장 의 기초3 LabVIEW II

를저장할때파일이름과함께확장자 를주는것이좋다 의확장자는자동으VI .vi . LabView

로 부여되지 않기 때문이다.

라이브러리로 저장하기12.2 VI

사용자는 들을 하나의 파일로 저장할 수 있는데 이때 확장자는 가 되VI , .llb

며 라이브러리 파일이라 부른다 사용자가 라이브러리 파일로 저장할 만한. VI

적당한 이유를 가지고 있다고 해도 단일 로 저장하는 것이 좋다 아래에는, VI .

각 경우에 대해 적당한 사용 이유가 있다.

아래와 같은 이유라면 라이브러리 파일로 저장하는 것이 유용하다VI .

은 파일 이름이 자를 초과할 수 없는데 의 이름을 까Windows 3.1 8 , VI 255

지 지정하려면 라이브러리 파일로 저장하면 된다VI .

만일 를 다른 플랫폼으로 전송하려고 할 때 하나의 라이브러리 파일VI VI

이 단일 파일을 전송하는 것보다 쉽다VI .

만일 디스크의 여유가 별로 없다면 라이브러리 파일로 저장하면 된다VI .

라이브러리 파일은 파일들을 압축해서 저장하기 때문이다VI VI .

아래와 같은 이유라면 단일 파일로 저장하는 것이 유용하다VI .

단일 파일로 저장하면 파일의 복사 이동 백업 등의 파일 서비스를 사VI , ,

용할 수 있다.

서브 를 사용하지 않았다면 라이브러리 파일은 서브 디렉토리를 사VI , VI

용하지 않으므로 단일 를 사용하는 것과 동일하다VI .

단일 파일이 라이브러리 파일을 사용하는 것보다 더 빠르게 읽고 쓸VI VI

수 있다.

와 컨트롤들을 단일 파일로 저장하는 것이 전체 프로젝트를 라이VI VI VI

브러리 파일로 저장하는 것보다 더 강력하다.

라이브러리 파일은 프로페셔널 개발 툴킷과는 호환이 되지 않는다VI .

Tip

Page 63: Graphical Programming Labview

부 의 기초1 LabVIEW

라이브러리 파일 생성하기12.3 VI

라이브러리 파일을 생성하려면 아래의 단계대로 하면 된다VI .

메뉴에서 나 를 선택한다File Save As... Save A Copy As... .①

대화상자가 활성화되면 버튼이나 버튼을 누른다New... New VI Library .②

③ 라이브러리파일의 이름을지정하고 버튼을누른다VI VI Library . LabVIEW

는 확장자를 지정하지 않아도 확장자를 자동으로 부여한다.llb .

라벨은 프론트 패널과 블록 다이어그램의 오브젝트들에 이름을 부여하기 위해 사용하는 도

구로 사용자가 블록 다이어그램이나 프론트 패널에 오브젝트를 생성하면 그 오브젝트 위에 작,

은 사각형 영역이 나타나게 된다.

에서는 툴바에 있는 폰트 링 의 옵션을 이용하여 문자 속성을 변경할LabVIEW (Font ring)

수 있다.

실제 프로그램은 블록 다이어그램에 있는 함수들 서브 들 스트럭처들을 조합함으로써 만, VI ,

들어진다 이렇게 블록 다이어그램 상에서 프로그램을 제작하기 위해서는 프론트 패널에서 컨.

트롤 팔레트를 이용해서 했던 것처럼 함수 팔레트의 서브 팔레트 중에서 원하는 오브젝트를

선택한 후 위치시키고 싶은 곳으로 가서 클릭하면 생성된다.

오브젝트를 편집하기 위해서는 우선 그것을 선택하여야 한다 선택하는 방법은 포지셔닝 툴.

을 오브젝트 위로 가져간 다음 마우스 버튼을 클릭하면 된다 오브젝트를 선택하면 선택된 오. ,

브젝트는 점선의 윤곽선으로 둘러싸인다.

오브젝트는 원하는 크기로 조절할 수 있다 포지셔닝 툴을 오브젝트위로 가져가면 크기 조절.

표시가 모서리에 나타납니다 포지셔닝 툴을 크기 조절 표시 위로 가져가면 커서가 크기조절.

툴로 바뀐다 클릭 한 후 끌기를 하여 점선이 원하는 크기가 될 때까지 조절한다. .

프론트 패널에 컨트롤들과 인디케이터들을 아무리 잘 정렬하여 놓았어도 프로그램 안에서

상호 작용을 하게 하려면 블록 다이어그램에서 이들을 와이어로 연결해야 한다.

사용자는 작성한 를 하나의 로 저장하는 방법과 여러 개의 들을 하나의 파일 에VI VI VI (.llb)

묶어서 저장할 수 있다.

요약

Page 64: Graphical Programming Labview

장 의 기초3 LabVIEW II

예제 1

온도계 시스템 구성하기(Thermometer)

지금부터 실제로 무엇인가를 수행하는 를 만들어 보자 이 프로그램은 시VI .

뮬레이션된 데이터를 읽어서 프론트 패널 위의 온도계에 온도를 표시해 보는

것이다.

다음과 같은 순서로 프로그램을 완성하여 실행해 보자.

새 프론트 패널을 연다.

컨트롤 메뉴의 수치 서브 팔레트로부터 온도계를 선택하여 드롭한다 패널.

에 온도계가 나타나면 곧바로 딸려 오는 라벨상자에 온도계 라고 타자“ ”

한다 오퍼레이팅 툴로 온도계의 눈금 을 클릭하고 이라고 입. “10.0” 100

력하면 온도계의 스케일이 변경된다.

블록 다이어그램과 프론트 패널을 동시에 나타내면 작업하기 편리하므로

윈도우즈 메뉴로부터 를 선택한다 그러면 윈도우에Tile Left and Right .

블록 다이어그램과 프론트 패널이 좌우로 나타난다.

블록 다이어그램에서 마우스의 오른쪽 버튼을 클릭하면 함수 팔레트가 나

타나며 이 함수 팔레트의 수치 서브 팔레트에 있는 곱하기 함수를 선택하

여 적당한 곳에 위치시킨다.

Page 65: Graphical Programming Labview

부 의 기초1 LabVIEW

함수 팔레트의 에 있는 를 클릭하여 블록Tutorial Demo Voltage Read.vi

다이어그램 상에 위치시킨다.

툴 팔레트에서 와이어링 툴을 선택하여 이것을 좌측Demo Voltage Read

상단에 위치시키고 팝업한 후 를 클릭하고 상수 을 타자Create Constant 1

한다 같은 방법으로 좌측 하단에 상수 을 생성한다. 0 .

곱하기 함수의 아래 부분에 와이어링 툴을 위치시키고 팝업한 후 Create

를 클릭하고 상수 을 타자한다Constant 100 .

툴 팔레트에서 와이어링을 선택하고 아래 그림과 같이 와이어링한다.

메뉴바의 실행 버튼을 누르면 온도계에서 온도가 변화되는 것을 볼 수

있다.

Page 66: Graphical Programming Labview

장 의 기초3 LabVIEW II

입력되는 두 수가 같으면 프론트 패널의 에 붉은색이 점등되도록 를LED VI

구성하시오.

프론트 패널에 와 토글 스위치를 설치하고 를 점등시켜Square LED LED

보시오.

두 개의 입력 숫자로 덧셈 뺄셈 곱셈 나눗셈 연산을 수행하는 를 구성, , , VI

하시오.

개의 입력 숫자에 대한 평균을 구하여 그 결과를 나타내는 를 구성하3 VI

시오.

무작위수 를 발생시켜 다음의 연산 결과를 프론트 패널(random number)

에 나타내는 를 구성하시오VI .

무작위수-

무작위수에 을 곱한 결과- 10

위의 항을 으로 나눈 결과- 200

Page 67: Graphical Programming Labview

개요1.

이번 장에서는 서브 를 사용하여 프로그램을 구조화시키는 방법에 대해서VI

배우게 된다 소규모의 프로그램이라면 문제가 없겠지만 만일 거대한 프로그.

램을 작성한다면 하나의 로 프로그램을 작성한다는 것은 무리가 있다 따라VI .

서 거대한 프로그램을 몇 가지 기능을 하는 작은 프로그램으로 분리하여 이것

을 서브 로 만들면 간단하게 프로그래밍을 할 수 있다 또한 이번 장에서는VI .

구조화 윈도우와 찾기 툴 에 대해서 배우게 되며 프(hierarchy) (Find utility) ,

로그램의 실행과 에러를 수정하는 디버깅에 대해 배우게 된다.

이 장에서 배우는 것들2.

서브 의 작성법VI

구조화 윈도우 의 사용법(hierarchy window)

찾기 툴 의 사용법(Find utility)

프로그램 실행 기술

디버깅 툴의 사용법

chapter

4서브 와 디버깅

Page 68: Graphical Programming Labview

부 의 기초1 LabVIEW

구조적인 설계3. (Hierarchy Design)

프로그램을 잘 작성하려면 우선 구조적인 프로그램에 대해서 잘 이해하VI

고 있어야 한다 사용자가 를 만들면 이것은 다른 프로그램의 부 프로그램. VI

으로 사용할 수 있다 범용의 프로그램처럼 그래피컬 프로그램도 부 프로. C G

그램을 사용하여 구조적인 프로그램을 작성할 수 있는 것이다 프로그램에. C

서는 부 프로그램의 사용에 한계가 없다 이와 마찬가지로 그래피컬 프로그램.

도 부 프로그램을 사용하는 데 한계가 없다 즉 사용할 수 있는 부 프로그램의.

수에 한계가 없다는 것이다 또한 하나의 부 프로그램을 여러 프로그램의 부.

프로그램으로 사용할 수 있으며 이제부터는 부 프로그램을 간단히 서브 프로,

그램 이라는 용어로 부르기로 하겠다(sub-program) .

사용자가 프로그램을 작성할 때는 일단 메인 프로그램을 설계하고 그에 따

른 입력과 출력 요건을 검토해야 한다 그 다음 입력과 출력 요건에 맞게 서브.

프로그램을 작성하는 것이 좋다 서브 프로그램을 잘 사용하면 일단 프로그램.

작성이 쉬워지고 디버깅하는 데 매우 편리하다 따라서 항상 전체 프로그램에.

서 어떠한 부분을 서브 프로그램으로 작성할 것인지 결정하는 것도 프로그램

을 작성하는 데 매우 중요한 기술이다.

를 서브 로 만들기4. VI VI

메인 프로그램이든 서브 프로그램이든 모든 프로그램은 입력과 출력 값을

가질 수 있다 에서는 이러한 입력과 출력을 처리하기 위해서 일단. LabVIEW

아이콘이라는 것을 사용한다 아이콘은 단일 를 나타내기 위한 기호와 같은. VI

역할을 하고 이 아이콘과 함께 커넥터라는 것을 사용하는데 이것은 단일, VI

의 실제적인 입력과 출력을 담당한다 따라서 서브 프로그램을 만들기 위해서.

는 일단 커넥터라는 것을 잘 이해하고 사용할 수 있어야 한다.

아이콘 만들기4.1

의 아이콘을 만들기 위해서는 프론트 패널의 우측 상단에 있는 아이콘을VI

더블 클릭하든가 다음의 그림처럼 팝업 메뉴를 사용하여 을 사용Edit Icon...

하면 된다.

Page 69: Graphical Programming Labview

장 서브 와 디버깅4 VI

메뉴를 사용하면 아래의 그림과 같은 아이콘 편집 대화상자가Edit Icon...

활성화된다 우측의 그리기 도구를 이용하여 사용자가 직접 를 대표할 수. VI

있는 아이콘을 그려야 한다 또한 우측에는 사용자가 보유하고 있는 모니터의.

종류에 따라 세 가지 형태의 아이콘을 사용할 수 있는데 그것은, B&W, 16

등이며 디폴트는 이다 세 가지 각각을 그려서 사Colors, 256 Colors B&W .

용할 수 있으며 을 이용하여 복사하여 사용할 수 있다, Copy from .

일반적으로 만을 그려서 사용하는 것이 유리하다 이것은 사용자가 컬B&W .

러 모니터를 사용한다고 해도 아이콘이 표시되지만 컬러 아이콘만을 그려 사용,

한다면 사용자가 흑백 모니터를 사용할 경우에는 화면에 표시되지 않기 때문이,

다.

아래에는 그리기 도구 상자에 있는 툴들의 사용법을 설명하고 있다.

픽셀 단위로 그림을 그리거나 지울 때 사용하며 키를 사용하면: , <shift>

연필의 움직임을 수직 또는 수평으로 제한하기 때문에 매우 편리하다.

직선을 그리는 데 사용한다 연필과 마찬가지로 수평 수직 등의 움직임: . ,

을 제한하기 위해 키를 사용한다<shift> .

전경색이 될 색을 아이콘 상에서 선택한다 만일 키: . <shift>

Page 70: Graphical Programming Labview

부 의 기초1 LabVIEW

를 같이 사용하면 배경색에 대해 적용될 수 있다.

배경색을 이용하여 일정 영역을 채운다: .

직사각형 윤곽을 전경색으로 그린다 이 아이콘을 더블: .

클릭 하면 전경색을 이용하여 아이콘의 테두리를 그린다.

키를 사용하면 정사각형을 그릴 수 있다<shift> .

직사각형 윤곽을 전경색으로 그리고 배경색으로 내부를:

채운다 이 아이콘을 더블 클릭 하면 전경색을 이용하여 아이콘의 테두리를.

그리고 배경색을 이용하여 내부를 채운다 키를 사용하면 정사각형을. <shift>

그릴 수 있다.

아이콘 상의 일정 영역을 복사 이동 삭제 등의 목적을 위하여: , ,

선택하는 데 사용한다 이 아이콘을 더블 클릭 하면 아이콘 전체를 선택할 수.

있으며 선택한 영역을 지우기 위해서는 키를 누르면 되고 정사각, <delete> ,

형으로 선택하기 위해서는 키를 사용하면 된다<shift> .

아이콘 상에 문자를 넣기 위해서 사용한다 만일 더블 클릭 하면: ,

글꼴을 선택할 수 있으며 커서 키를 사용하면 텍스트를 이동할 수 있다, .

현재 선택된 전경색과 배경색을 보여 준다 각 사각형을 클릭: .

하면 색상을 선택할 수 있다.

아이콘을 아이콘으로 저장하고 프론트 패널로 돌아간다: VI .

아이콘을 저장하지 않고 프론트 패널로 돌아간다: .

커넥터 터미널 형태 결정하기4.2

일단 아이콘을 그렸으면 사용자는 커넥터에 대한 설정을 해야 하는데 서브,

를 사용하기 위해서는 메인 프로그램에서 서브 에게 데이터를 전달해 주VI VI

어야 한다 이러한 역할을 수행하기 위해서 사용자는 커넥터의 형태를 결정해.

주어야 한다 커넥터의 형태를 결정해 준다는 것은 입출력 변수의 수와 커넥.

터의 형태를 선택해야 하는 것을 말한다.

만일 커넥터의 형태가 이미 결정되어 있다면 프론트 패널의 우측 상단에 있

는 아이콘 영역에서 팝업 메뉴를 사용하여 를 선택하면 커Show Connector

넥터의 형태가 아이콘을 대신해서 아이콘 자리에 표시된다 다음의 예는 팝업.

Page 71: Graphical Programming Labview

장 서브 와 디버깅4 VI

메뉴를 사용하는 것을 보여 주고 있다.

블록 다이어그램에서는 아이콘 창이 있지만 커넥터 창은 없으므로 팝업 메,

뉴를 사용할 수 없다 만일 사용자가 커넥터 형태를 결정하지 않았다면 형태.

를 결정해 주어야 하는데 우선 입력과 출력의 수를 결정하고 어떠한 형태를,

가질 것인지 결정해야 한다.

커넥터 창의 작은 사각형 영역은 입력과 출력 터미널을 의미하고 이 작은

영역과 컨트롤 밑의 인디케이터를 직접 연결해 주어야 한다.

터미널 형태의 선택과 수정4.3

커넥터 형태를 결정하기 위해서는 아래의 그림과 같이 팝업 메뉴의 Pattern

을 선택하고 자신이 원하는 형태의 커넥터 형태를 선택하면 된다.

검은 사각형 영역으로 선택된 커넥터 형태가 현재 선택되어 있는 커넥터의

형태이고 원하는 것이 있다면 새로운 것을 고르면 된다.

만일 선택한 커넥터 형태에 터미널을 더 추가하고 싶으면 추가하기 원하는

Page 72: Graphical Programming Labview

부 의 기초1 LabVIEW

터미널 영역에서 팝업 메뉴의 을 선택하면 된다Add Terminal .

선택한 커넥터 형태에서 터미널을 삭제하고 싶으면 삭제하기 원하는 터미널

영역에서 팝업 메뉴의 을 선택하면 된다Remove Terminal .

선택한 커넥터 형태의 공간 배치를 변경하고 싶으면 팝업 메뉴의 Flip

를 사용하면 된다Horizontal, Flip Vertical, Rotate 90 Degrees

컨트롤과 인디케이터를 각 터미널에 할당하기4.4

사용자는 이제까지 커넥터의 형태를 결정하였다 이것은 입출력 터미널의.

수를 결정한 것인데 이 터미널을 사용하려면 프론트 패널 상에 있는 컨트롤,

과 인디케이터를 이 터미널과 직접 연결해 주어야 한다.

아래의 단계대로 직접 해보기 바란다.

커넥터 상에 있는 터미널을 마우스를 이용하여 클릭하라 그러면 커서는 자.

동으로 와이어링 툴로 변경되고 선택한 터미널은 색이 반전된다.

사용자가 사용할 프론트 패널 상의 컨트롤이나 인디케이터를 선택하여 클

릭한다 선택한 오브젝트는 점선 영역으로 둘러싸인다. .

Page 73: Graphical Programming Labview

장 서브 와 디버깅4 VI

커서를 프론트 패널 외부의 영역으로 움직여서 클릭하면 점선들은 사라지

고 커넥터 터미널은 데이터의 형에 따른 색으로 반전된다.

만일 커넥터 터미널의 색이 흰색을 가지고 있다면 이것은 커넥터 터미널

과 프론트 패널 상의 컨트롤 및 인디케이터가 연결이 되지 않았음을 의미하

는 것이므로 다시 연결해야 한다.

단계와 단계를 반복해서 수행한다1 2 .

또한 사용자는 프론트 패널에서 컨트롤과 인디케이터를 먼저 선택하고 커넥

터 터미널을 나중에 선택해도 된다 사용자는 커넥터 형태를 변경할 수도 있.

고 나중에 가 변경될 것을 생각해서 여분의 커넥터 터미널을 만들고 연결, VI

하지 않아도 된다 이것은 아무런 영향을 미치지 않기 때문이다 마찬가지로. .

여분의 프론트 패널 상의 컨트롤과 인디케이터를 가질 수 있다.

커넥터 창은 많아야 개의 터미널을 가질 수 있기 때문에 사용자가 개28 28

이상의 컨트롤과 인디케이터를 연결해서 사용하기를 원한다면 몇 개의 컨트롤

Page 74: Graphical Programming Labview

부 의 기초1 LabVIEW

과 인디케이터를 클러스터로 묶고 이것을 하나의 커넥터 터미널과 연결해서

사용하면 된다.

서브 를 위한 커넥터 옵션4.5 VI

는 사용자가 커넥터 터미널을 연결하지 않고 사용하는 것을 방지LabVIEW

하기 위해서 커넥터 터미널의 연결을 권장 필요(recommended), (required),

선택 등으로 분류하고 사용자에게 표시해 준다(option) .

그래피컬 프로그램은 사용자가 만든 의 입출력 터미널을 디폴트인 권장VI

으로 설정하여 생성한다(recommended) .

필요 로 되어 있는 터미널을 사용할 때에는 항상 연결을 해서 사(required)

용해야 한다 그러나 권장 을 사용할 때에는 연결하지 않아도. (recommended)

사용할 수 있으나 컴파일 과정에서 경고 를 받게 된다(warning) .

커넥터 터미널의 연결이 권장 필요 선택 중에서 어떤 것인지 보려고 할 때나, ,

선택하려면 팝업 메뉴를 사용하여 항목을 이용하면 된다This Connection Is .

아래의 항목에서 체크된 것이 현재의 설정 상태를 나타내는 것이고 도움말

윈도우에서 필요 는 굵은 글씨체로 권장 은 일반 텍스트로 선택‘ ’ , ‘ ’ , ‘ ’

은 회색으로 나타난다.

터미널 삭제4.6

사용자는 프론트 패널과 커넥터 터미널과의 연결 상태를 삭제할 수 있다.

삭제를 하려는 커넥터 창의 터미널 상에서 팝업 메뉴를 호출하여 아래의 그림

과 같이 을 사용하면 된다Disconnect This Terminal .

그러면 터미널의 상태가 연결 상태가 지정되어 있지 않다는 것을 나타내는

흰색으로 변하고 연결이 끊어진다 만일 모든 터미널의 연결을 끊기 위해서는.

팝업 메뉴의 을 사용하면 된다 주의해야 할 것은Disconnect All Terminal .

Page 75: Graphical Programming Labview

장 서브 와 디버깅4 VI

팝업 메뉴의 과 은 다르다는Remove Terminal Disconnect This Terminal

것이다 전자는 터미널 자체를 지우는 것이고 후자는 터미널과 오브젝트와의.

연결을 끊는 것이다.

연결의 확인4.7

연결 상태를 확인하기 위해서는 프론트 패널 상의 컨트롤이나 인디케이터

혹은 터미널을 커넥터 창이 보일 때 와이어링 툴을 이용하여 클릭하면 연결된

오브젝트를 보여 준다.

의 일부를 서브 로 만들기5. VI VI

사용자는 의 일부를 선택하여 이것을 이 프로그램의 서브 로 만들 수VI VI

있다 이렇게 만들어진 서브 는 사용자가 오브젝트와 터미널을 힘들여서 연. VI

결해 주어야 하는 일 없이 자동적으로 생성되며 의 일부를 사용자가 선택, VI

한 상태에서 를 사용하면 된다 하지만 이렇게 서브Edit Create Sub VI .▶

를 만드는 데에는 일정한 규칙과 주의 사항이 있다VI .

규칙과 주의 사항5.1

터미널의 수

터미널의 수가 최대 개이므로 이 수를 넘기는 범위의 컨트롤과 인디케이28

터를 선택하여 서브 를 생성하면 안 된다VI .

사이클

만일 생성되는 서브 의 출력이 다시 이 서브 의 입력으로 들어가는 재VI VI

진입이 이루어지면 안 된다.

Page 76: Graphical Programming Labview

부 의 기초1 LabVIEW

루프 안의 속성 노드

루프 안에 속성 노드가 있을 경우에는 선택해서 서브 로 만들 수 없다VI

선택의 오류

상식 밖의 선택을 해서는 안 된다 예를 들어 케이스 스트럭처를 선택하지.

않고 그 안의 오브젝트를 선택하면 안 된다.

루프 안의 지역 변수와 프론트 패널 터미널

루프 안의 지역 변수와 프론트 패널 터미널을 선택하여 서브 를 생성하면VI

안 된다.

Page 77: Graphical Programming Labview

장 서브 와 디버깅4 VI

특정 상에 있는 프로그램의 일부를 서브 로 만들고 싶다면 블록 다이어그램 상에서VI VI

마우스로 블록을 설정하고 메뉴의 를 사용하면서브프로그램이자동으Edit Create Sub VI

로 만들어진다.

속성 노드 지역 변수를 포함하는 케이스 스트럭처,

속성 노드 지역 변수를 포함하는 케이스 스트럭처를 선택하여 서브 를 생, VI

성하면 안 된다 예를 들어 아래의 그림과 같은 경우를 들 수 있다 아래의 그. .

림은 케이스 스트럭처를 사용하여 일 경우에 출력을 하는 것이다FALSE .

그러나 케이스 스트럭처를 서브 로 만들 경우 에러를 만나게 된다VI .

구조 윈도우 사용하기6. (Hierarchy Window)

구조 윈도우는 메인 의 서브 호출 상황을 그래피컬하게 표현하는 데VI VI

사용된다 전역 변수의 사용과 형 의 정의도 함께 표시해 주므로 사용자. (type)

에게 매우 편리한 기능이다.

이 윈도우를 사용하면 의 구조화된 모습을 사용자에게 다양한 방법으로VI

보여 주는데 예를 들어 사용자는 서브 들의 사용과 전역 변수의 유무를 수, VI

직 또는 수평 등의 다양한 방법으로 볼 수 있다.

Tip

Page 78: Graphical Programming Labview

부 의 기초1 LabVIEW

이 윈도우의 또 다른 특징은 VI Setup..., Edit Icon..., Show VI Info...,

메뉴에 접근할 수 있는 기능과 드래그와 복사 기능을Print Documentation...

이용한 구조 노드를 다른 의 서브 로 사용할 수 있다는 것이다VI VI .

구조 윈도우 열기6.1

사용자는 아래의 방법 중 어느 한 가지로 구조 윈도우를 열 수 있다.

메뉴를 사용하면 현재 활성화된 윈도우의 에Project VI Hierarchy VI▶

초점을 맞추어 구조 윈도우를 생성한다.

서브 전역 변수 등에서 팝업 메뉴를 호출하여 를VI, Show VI Hierarchy

선택한다.

만일 구조 윈도우가 이미 열려 있다면 사용자는 윈도우 메뉴의 활성화된

윈도우 리스트에서 선택하여 이것을 활성화할 수 있다.

메뉴를 이용하거나 윈도우의 상단에 있는 이나View Horizontal Layout

버튼을 이용하여 다양하게 볼 수 있으며 아래 그림과 같이Vertical Layout ,

수평으로 표시된 화면에서는 메인 가 좌측에 존재하고 수직인 경우에는 상VI

단측에 메인 가 존재한다 메인 와 그 서브 는 항상 라인으로 연결되어VI . VI VI

표시된다.

위의 그림에서 각 노드에는 화살표 모양이 있다 이것들의 의미는 노드 외.

부에 있는 사각형으로 둘러싸인 화살표는 두 가지 종류가 있는데 하나는 빨강

색이고 또 하나는 검정색이다 빨강색은 노드의 가 서브 를 가지고 있는. VI VI

데 화면에 표시하지 않았다는 것을 의미한다 사용자가 이 화살표를 클릭하면.

Page 79: Graphical Programming Labview

장 서브 와 디버깅4 VI

서브 들이 나타나게 된다 또한 검정색은 그 의 서브 가 모두 표시되고VI . VI VI

있다는 것을 의미한다 앞의 그림에서도 두 번째 는 그 아래 서브 를 표. VI VI

시하고 있다 또 하나의 사각형에 둘러싸여 있지 않은 화살표는 파랑색을 하.

고 있는데 이것이 의미하는 것은 이 를 호출하는 또 다른 가 존재한다는, VI VI

것을 알리는 것이다.

앞의 그림에서 검은 사각형으로 둘러싸여 있는 노드는 현재 선택되어 초점

이 맞추어져 있는 노드를 의미하고 커서를 노드 위에 위치시키면 노드의 이,

름이 표시된다 구조화 윈도우에 있는 를 열고 싶으면 그 의 노드를 더블. VI VI

클릭하면 된다.

메뉴 옵션6.2 View

다음 그림과 같이 메뉴에는 구조 윈도우를 표시하는 옵션들이 있으View

며 사용자는 이 메뉴들을 윈도우의 상단에 있는 버튼으로부터도 사용할 수,

있다.

Redraw

라인들을 최소화하고 노드들의 대칭을 최대화하는 형태로 윈도우를 다시 그

린다 만약 초점이 맞추어진 노드가 있다면 이것을 중심으로 하고 없다면 메. ,

인 윈도우를 중심으로 표시한다.

Show All VIs

모든 들을 표시한다VI .

Vertical Hierarchy

메인 를 상단에 위치시키고 그 아래 서브 를 배치하여 수직 형태로 표VI VI

시한다.

Horizontal Hierarchy

메인 를 좌측에 위치시키고 그 우측에 서브 를 배치하여 수평 형태로VI VI

Page 80: Graphical Programming Labview

부 의 기초1 LabVIEW

표시한다.

Include VIs in vi.lib

에 있는 들을 표시하거나 표시하지 않도록 토글한다vi.lib VI .

Include Globals

전역 변수와 지역 변수를 표시하거나 표시하지 않도록 토글한다.

Include Type Definition

형 의 정의를 표시하거나 표시하지 않도록 토글한다(type) .

Full VI Path in Label

구조 윈도우에 를 노드로 표시하는 데 있어서 의 전체 경로를 라벨에VI VI

표시한다.

툴바의 메뉴6.3

구조 윈도우에 있는 툴바의 메뉴는 아래의 그림과 같으며 그 아래 설명이

있다 위의 메뉴와 설명은 같으므로 아이콘을 잘 보기 바란다. .

오른쪽에서 왼쪽으로 가는 아이콘의 기능은 아래와 같다.

Redo Layout

Vertical Layout

Horizontal Layout

Include VI Lib

Include Globals

Include Type Definition.

팝업 메뉴6.4

사용자가 구조 윈도우에서 팝업 메뉴를 선택하면 아래의 그림과 같이 메뉴

가 활성화되며 이 메뉴들은 화면의 표시를 조작하거나 선택한 노드를 조작할,

수 있는 명령들로 구성되어 있다.

Page 81: Graphical Programming Labview

장 서브 와 디버깅4 VI

각 메뉴의 설명은 아래와 같다.

Highlight Connections

호출한 와 그 서브 의 연결을 빨강색으로 하이라이트 한다VI VI .

Show Immediate Sub VIs

숨겨진 서브 를 표시하고 이들의 연결 상태를 빨강색으로 표시한다 그리VI .

고 메뉴는 로 바뀐다Hide All Sub VIs .

Hide All Sub VIs

모든 서브 를 숨긴다 그리고 메뉴는 로 바뀐VI . Show Immediate Sub VIs

다.

Show VI Hierarchy

선택한 노드에 초점을 맞추고 이 에 대한 서브 와 호출 를 표시한다VI VI VI .

Show All Sub VIs

선택한 노드에 초점을 맞추고 이 에 대한 서브 를 표시한다VI VI .

Show All Callers

선택한 노드에 초점을 맞추고 이 에 대한 호출 를 표시한다VI VI .

Edit Icon

선택한 노드의 아이콘을 편집할 수 있는 아이콘 에디터를 활성화시킨다.

VI Setup

선택한 노드에 대해 대화상자를 활성화시킨다VI Setup .

Get Info

선택한 노드에 대해 대화상자를 활성화시킨다Get Info .

Open Front Panel

Page 82: Graphical Programming Labview

부 의 기초1 LabVIEW

전역 변수 형 정의에 대한 프론트 패널을 활성화시킨다VI, ,

Print Documentation...

대화상자를 활성화시킨다Print Documentation .

구조 윈도우에서 찾기6.5 VI

사용자는 구조 윈도우 내에서 노드의 이름을 이용하여 간단하게 를 찾을VI

수 있다 그러면 작은 찾기 윈도우가 활성화되며 그 안에 찾을 이름을 넣으면. ,

된다 노드를 찾으면 이 노드는 하이라이트 되어 쉽게 확인할 수 있다. .

아래의 그림은 를 찾는 예를 보여 주고 있다drawJoint.vi .

와 오브젝트 및 텍스트 찾기7. VI

사용자가 여러 개의 서브 를 이용하거나 하나의 를 사용하거나 할 때VI VI

특정 오브젝트나 문자열 등을 찾을 경우가 있다 이런 경우에. Project ▶

메뉴를 사용하여 찾으면 된다Find .

사용자가 찾을 수 있는 오브젝트는 다음과 같다.

VIs

함수

형 정의

전역 변수

지역 변수

속성 노드

Page 83: Graphical Programming Labview

장 서브 와 디버깅4 VI

브레이크포인트

프론트 패널 터미널

텍스트

메뉴뿐만 아니라 팝업 메뉴에는 오브젝트와 관련된 아이템을 찾을 수Find

있도록 도와준다 예를 들어 컨트롤에서 팝업 메뉴를 호출하면 이 컨트롤의.

터미널을 찾을 수 있는 기능이 있다.

와 오브젝트 찾기7.1 VI

찾기 대화상자를 활성화시키기 위해서는 Project ▶ 를 사용하거나Find...

를 사용하면 된다<ctrl+f> .

나 다른 프로젝트를 찾기 의해서는 항목을 누르면 된다VI Object .

찾기 원하는 오브젝트를 선택하기 위해서 를 누르면 아래와Select Object

같은 메뉴가 나타난다.

메뉴에는 사용자가 함수 형 정의 전역 변수 에 있는 오브젝트 등, VI, , , vi.lib

을 찾을 수 있도록 각 항목이 준비되어 있다.

Page 84: Graphical Programming Labview

부 의 기초1 LabVIEW

텍스트 찾기7.2

텍스트를 찾기 위해서는 텍스트 항목을 선택하면 된다.

그 아래에는 세 가지의 옵션이 있는데 설명은 다음과 같다.

Match Case

사용자가 찾으려는 문자열과 정확히 일치하는 문자열을 찾는다.

Match Whole Word

사용자가 찾으려는 문자열이 들어 있는 단어 전체를 찾는다 다만 숫자나.

스페이스 또는 부호는 제외한다(+) .

Regular Expression

사용자가 찾으려는 문자열을 정규 표현으로 다룬다 정규 표현은 온라인 도.

움말의 를 참고하면 된다Function & VI reference .

텍스트 찾기 옵션7.3

을 사용하면 찾기를 수행할 영역을 사용자가 지정해 줄 수More Option...

있으며 아래에 그 화면의 모습이 있다, .

각 메뉴 항목에 대한 설명은 다음과 같다.

Page 85: Graphical Programming Labview

장 서브 와 디버깅4 VI

Search in VIs

문자열을 상에서 찾는다VI .

Search in Object's Label

문자열을 오브젝트의 라벨 상에서 찾는다

Search in Object's Data & Parts

문자열을 오브젝트의 데이터에서 찾는다.

찾기 결과 윈도우7.4

사용자가 찾기를 원하는 문자열은 하나 이상이 있을 수 있다 이 결과를 아.

래와 같이 결과 윈도우를 사용하여 표시해 준다.

또한 각 메뉴에 대한 설명은 다음과 같다.

Clear

찾기 결과를 모두 지운다.

Go To

사용자가 결과를 더블 클릭하여 선택하면 그 결과를 하이라이트한다.

Find

찾기 대화상자를 다시 호출한다.

Stop

찾기를 너무 오래 수행하거나 결과를 이미 찾은 경우에는 사용자가 이 버튼

을 사용하여 찾기를 중지할 수 있다.

Page 86: Graphical Programming Labview

부 의 기초1 LabVIEW

실행하기8. VI

사용자가 작성한 를 실행하는 방법에 대해서는 장 및 장에서 이미 툴VI 1 2

바를 이용하여 실행하는 방법에 대해 설명하였으므로 이번 장에서는 그 이외

의 다양한 실행 기술에 대해 설명한다 특히 데이터 저장에 대한 부분을 중심.

으로 설명하겠다.

프론트 패널 상의 데이터 저장8.1 (Data Logging)

의 프론트 패널 상에 있는 컨트롤에서 발생하는 데이터를 시간과 함께 기VI

록할 수 있는 기능이 있다 이것을 데이터 로깅 이라 한다 사. (Data Logging) .

용자는 서로 다른 파일에 이 데이터를 저장할 수 있으며 이것을 로그 파일,

이라 한다 사용자는 이렇게 저장된 데이터를 를 이용하거나(logging file) . VI

프로그램적으로 또는 표준 파일 입출력 함수를 이용하여 읽을 수 있다.

각 는 로그 파일의 위치를 보여 주면서 로그 파일과의 연결을 유지하고VI

있으며 연결이 삭제되면 데이터 로깅이 다시 가능하게 된다 이런 경우 데이, .

터 로그 파일의 경로와 이름을 다시 지정해 주어야 한다.

사용자는 메뉴를 이용하여 데이터 로깅을 할 수Operate Data Logging▶

있으며 아래의 그림이 그것을 묘사하고 있다.

의 프론트 패널의 데이터를 자동으로 로깅할 수 있는 상황에서는 의 실VI VI

행이 끝나는 매시간마다 데이터를 저장한다 사용자는 이 자동 데이터 저장을.

메뉴를 사용하여 수행시킬 수 있다Operate Log at Completion .▶

또한 사용자는 메뉴Operate Data Logging Change File Binding...▶ ▶

를 사용하여 로그 파일의 연결을 변경할 수 있다.

Page 87: Graphical Programming Labview

장 서브 와 디버깅4 VI

사용자는 레코드 번호를 입력하고 키를 사용하거나 버튼을 사<Enter> Enter

용하여 레코드를 선택할 수 있다.

선택한 레코드를 버튼을 사용하여 삭제할 수도 있다 하지만 이것은Delete .

완전한 삭제가 아니라 휴지통에 버리는 역할을 한다.

사용자가 완전한 삭제를 하려면 버튼을 사용하Record marked for deletion

면 된다 또한 완전한 삭제가 이루어지려면. Operate Data Logging▶ ▶

를 사용해야 한다Purge Data... .

연결을 했으면 버튼을 사용하여 상태로 돌아오고 이 연결을 다시OK VI ,

끊으려면 을 사용하고 파일 이름을 입력Operate Clear Log File Binding▶

해야 한다.

사용자가 저장한 로그 파일을 보려면 메뉴를 사용Operate Retrieve...▶

해야 하며 툴바의 형태가 아래와 같이 변한다, .

가운데의 하이라이트된 번호는 사용자가 보기 위해 선택한 레코드의 번호이

다 그 우측의. [ 안의 숫자는 레코드의 범위를 표시한다 데이터가 저장된 시] .

간과 날짜를 그 우측에 보여 주고 있다 사용자는 레코드의 사용 가능한 범위.

안에서 화살표를 이용하여 레코드를 선택하여 볼 수 있다.

데이터베이스 접근8.2 을 이용한 데이터 보기

사용자는 프로그램을 이용하여 데이터를 볼 수 있는데VI , Enable

와 표준 파일 입출력 함수를 사용하여 가능하다Database Access .

이 메뉴는 프론트 패널의 데이터를 로그한 서브 상에서 팝업 메뉴를 호VI

출하면 메뉴가 있는데 이 메뉴를 사용하면 다음Enable Database Access

그림과 같이 서류 캐비닛과 같은 그림이 데이터 로그 화면 뒤에 따라붙는다.

Page 88: Graphical Programming Labview

부 의 기초1 LabVIEW

또한 아래의 그림에는 그 터미널에 대한 설명이 있다.

만일 서브 가VI n개의 레코드를 가지고 있다면 사용자는, -n부터 n 까-1

지의 숫자를 터미널에 연결할 수 있다 은 첫 번째 레코드를 은record # . 0 , 1

두 번째 레코드를 차례로 의미하므로 n 까지의 레코드를 사용할 수 있는 것-1

이다 만일 사용자가 마지막 레코드를 차례로 접근하려면 음수를 연결하면 되.

는데 예를 들어 은 마지막 레코드를 는 그 앞의 레코드를 의미한다, -1 , -2 .

파일 입출력 함수를 이용한 데이터 보기8.3

사용자는 표준 파일 입출력 함수를 사용하여 로그 데이터를 볼 수 있는데,

로그 파일은 시간과 함께 프론트 패널 데이터를 저장하고 있다 시간은 초를.

나타내기 위해 부호 없는 32비트를 사용하고 기준 시간으로부터의 초과 시,

간을 위해 부호 없는 16비트를 사용한다.

다음의 다이어그램은 그 예를 나타내고 있다

Page 89: Graphical Programming Labview

장 서브 와 디버깅4 VI

디버깅 기술9.

이번 절에서는 의 오류를 수정하기 위해 사용하는 디버깅 기술에 대하여VI

배우게 된다 사용자는 이 디버깅 기술을 잘 사용할 수 있어야 하므로 잘 읽고.

필요할 때 사용하기 바란다.

에러 수정하기9.1

작성한 를 실행하려고 할 때 실행 버튼이 깨진 상태로 나타나면 이것은VI

에러가 있다는 것을 의미한다 일반적으로 사용자가 를 작성하는 도중에는. VI

깨진 실행 버튼으로 나타나지만 를 다 작성한 다음에는 실행할 수 있는 버, VI

튼으로 나타난다 만일 를 다 작성한 다음에도 실행 버튼이 깨진 상태로 나. VI

타나면 이것은 상에 에러가 있다는 것이다 이런 경우 사용자는VI . Edit ▶

메뉴를 사용하거나 키를 누르면 다이어Remove Bad Wires <Ctrl + b> VI

그램 상에 숨어 있는 와이어 조작을 전부 제거함으로써 실행할 수 있는 버튼

이 나타날 수도 있다 하지만 여전히 깨진 실행 버튼이 나타나면 이 깨진 실행.

버튼을 눌러서 에러 리스트를 보고 수정해야 한다 아래의 그림에 그 에러 리.

스트의 예가 있다.

Page 90: Graphical Programming Labview

부 의 기초1 LabVIEW

만일 에러의 발생 위치를 찾으려면 에러 리스트에서 에러를 더블 클릭하면

된다 그러면 에러의 위치가 깜박거리면서 하이라이트된다 다른 의 에러를. . VI

보려면 항목에서 다른 를 선택하면 된다VI List VI .

에러 리스트에는 에러의 이름과 설명이 있는데 더 자세한 설명은 온라인,

레퍼런스를 사용하기 바란다.

범위 에러 수정하기9.2 VI (range)

범위 에러가 발생하는 경우에는 좌측의 그림과 같은 아이콘이 실행 버튼에 표

시된다.

아래와 같은 상황에서 범위 에러가 발생한다.

사용자가 컨트롤을 일정한 범위에서 값을 받도록 설정하고 팝업 메뉴의(

를 이용 이 컨트롤이 이 수의 범위를 벗어나는 값을 받았을Data Range... )

경우

사용자가 인디케이터를 일정한 범위에서 값을 주도록 설정하고 팝업 메뉴(

의 를 이용 이 인디케이터가 이 수의 범위를 벗어나는 값을Data Range... )

받았을 경우

연산자가 범위를 벗어나는 값을 만나면 실행을 멈추도록 설정한 값을 컨트

롤에 전달하였을 경우

만일 컨트롤이나 인디케이터의 값이 범위를 벗어날 경우 아래의 그림에서

우측의 그림과 같이 빨강색으로 사각형이 둘러싸인다.

싱글 스텝 실행을 이용한 디버깅 예9.3

디버깅을 하기 위해서 사용자는 의 실행을 노드 단위로 할 필요가 있다, VI .

이러한 실행을 싱글 스텝이라고 하며 이것은 사용자가 포즈 버튼을(pause)

Page 91: Graphical Programming Labview

장 서브 와 디버깅4 VI

누르고 실행 버튼을 누르는 경우에 이루어진다 실행이 이루어진 이후에 포즈.

버튼을 누르는 경우에도 싱글 스텝 실행이 이루어진다 만일 싱글 스텝을 취.

소할 경우에 사용자는 포즈 버튼을 다시 누르면 된다 싱글 스텝 실행에서 하.

나의 실행이 멈추면 다시 실행 버튼을 누르면 된다 이렇게 하여 노드 단위의.

실행을 할 수 있는 것이다.

다음과 같이 싱글 스텝 실행을 할 때는 세 가지 실행 방법이 있다.

이 버튼을 누르면 스트럭처 시퀀스 루프 나 서브 를 실행하고: ( , ) VI

다음 노드에서 실행을 대기한다.

이 버튼을 누르면 서브 나 스트럭처의 맨 처음 실행문으로 이동: VI

하여 서브 나 스트럭처를 다시 실행한다VI .

이 버튼을 사용하면 현재의 다이어그램이나 서브 혹은 스트럭처: VI

를 실행하고 빠져 나온 상태에서 대기한다.

아래의 예는 싱글 스텝 실행을 설명하기 위한 예제이다.

위의 그림에는 두 개의 서브 가 있는데 하나는 아이콘 모양이 이고 또VI n!

하나는 이다 현재 이 실행 중이고 는 다음 단계에서 실행한Fib(n) . Fib(n) n!

다 버튼을 누르면 함수의 다이어그램을 열고 실행할 준비. Step Into Fib(n)

를 한다 그리고 버튼을 누르면 서브 를 실행하고 멈춘다 다음. Step Over VI .

으로 버튼을 누르면 루프문을 실행하고 멈춘다Step Out .

실행하고 싶은 서브 를 선택하려면 다음 그림과 같이 선택 상태에서 서브VI

를 선택하면 된다VI .

Page 92: Graphical Programming Labview

부 의 기초1 LabVIEW

하이라이트 실행9.4

디버깅을 하기 위해서는 실행을 좀더 다이나믹하게 보는 것이 필요하다.

는 실행을 하이라이트할 수 있는 기능이 있는데 이것은 툴바의 하LabVIEW ,

이라이트 실행 버튼을 누르면 된다 그러면 실행 중에 있는 는 데이터의 흐. VI

름을 나타내기 위해 와이어를 지나가는 물방울 표시로 데이터를 표현한다 아.

래의 그림은 이러한 기능을 잘 보여 주고 있다.

만일 사용자가 하이라이트 실행을 싱글 스텝 실행과 함께 사용한다면 다음

그림처럼 의 아이콘 상에 화살표가 나타나면서 다음 실행을 위해 대기 중임VI

을 알린다.

Page 93: Graphical Programming Labview

장 서브 와 디버깅4 VI

구조 윈도우도 가 현재 대기 중인 것을 표시하는데 아래의 그림처럼 빨VI ,

강색으로 아이콘 상에 표시하면 이 서브 는 현재 멈추어 있다는 것을 말하VI

고 만일 녹색으로 표시되면 호출되었을 때 멈춘다는 것을 의미한다, .

프로브 툴9.6 이용하기

이번에는 디버깅 도구 중에서 가장 중요한 프로브 툴을 소개한다 프로브.

툴은 실행 시에 노드에 프로브를 설치하고 와이어를 지나가는 값을 확인하는

데 사용하는 것이다.

프로브 툴은 툴 팔레트에 있으며 이것을 선택하고 와이어 상에 위치시키거

나 팝업 메뉴의 를 사용하여 프로브를 설치할 수 있다 그러면 아래의Probe .

그림과 같이 를 실행하면 프로브 윈도우가 나타나서 값을 표시해 준다VI .

사용자가 설치한 프로브는 자동으로 번호가 매겨지며 프로브가 설치된 와,

이어 상에도 같은 번호가 표시된다 만일 사용자가 프로브가 설치된 와이어를.

Probe Tool

Page 94: Graphical Programming Labview

부 의 기초1 LabVIEW

찾으려고 한다면 프로브 윈도우 상에서 팝업 메뉴를 호출하고 를Find Wire

사용하면 된다.

브레이크포인트 툴9.7 이용하기

싱글 스텝 실행을 사용하면 노드 단위의 실행을 할 수 있으므로 디버깅하

는 데 매우 편리하지만 실행하는 데 시간이 많이 걸린다는 단점이 있다 만일.

사용자가 에러를 수정하기 위해서 의 일부분만을 싱글 스텝으로 실행할 경VI

우에는 다른 부분에서 싱글 스텝으로 실행할 필요가 없다 이러한 경우 사용.

자는 의 일부분에 실행 중지점 을 설정해 놓으면 실행하는 도VI (Breakpoint)

중에 실행 중지점에서 실행을 멈추게 된다 그러면 사용자는 이 부분부터 프.

로브를 설치하여 싱글 스텝으로 실행하면 디버깅하는 데 매우 유용하다.

실행 중지점을 생성하기 위해서는 툴 팔레트의 브레이크포인트 툴을 사용하

여 실행 중지점을 설치하거나 제거할 수 있다 다음의 다이어그램은 그 예를.

나타내는 것인데 번 프로브의 테두리가 두껍게 되어 있다 이것으로 이 프로, 2

브에 실행 중지점을 설치했다는 것을 알 수 있다 따라서 이 다이어그램에서.

는 프로브의 값을 표시한 다음 실행을 멈춘다.

또한 다음의 그림에서는 곱셈 함수 다음에 둥근 점이 있는데 이 지점에 실,

행 중지점을 설치했음을 알 수 있다 또한 증가 함수에도 두꺼운 테두리가 있.

으므로 이 지점도 실행 중지점이다 따라서 증가 함수를 수행하기 전에 멈추.

고 곱셈 연산을 수행한 다음에 실행을 멈춘다.

Page 95: Graphical Programming Labview

장 서브 와 디버깅4 VI

아래의 그림에서는 루프 테두리가 두꺼우므로 루프가 실행 중지점으로 설정

된 것이다 이 경우에는 곱셈 연산을 실행한 후에 실행을 중지한다. .

의 실행 중지점은 와 함께 저장되지만 실행 시에만 나타난다VI VI .

사용자가 프로그램을 작성할 때에는 일단 메인 프로그램을 설계하고 그에 따른 입력과 출력

요건을 검토해야 한다 그 다음 입력과 출력 요건에 맞게 서브 프로그램을 작성하는 것이 좋다. .

서브 프로그램을 잘 사용하면 일단 프로그램 작성이 쉬워지고 디버깅하는 데 매우 편리하다.

따라서 항상 전체 프로그램에서 어떠한 부분을 서브 프로그램으로 작성할 것인지 결정하는 것도

프로그램을 작성하는 데 매우 중요한 기술이다.

의 아이콘을 만들기 위해서는 프론트 패널의 우측 상단에 있는 아이콘을 더블 클릭하든가VI

팝업 메뉴를 사용하여 을 사용하면 된다Edit Icon... .

일단 아이콘을 그렸으면 사용자는 커넥터에 대한 설정을 해야 하는데 서브 를 사용하기, VI

위해서는 메인 프로그램에서 서브 에게 데이터를 전달해 주어야 한다VI .

사용자는 의 일부를 선택하여 이것을 이 프로그램의 서브 로 만들 수 있다 이렇게 만들어VI VI .

진 서브 는 사용자가 오브젝트와 터미널을 힘들여서 연결해 주어야 하는 일 없이 자동적으로VI

생성되며 의 일부를 사용자가 선택한 상태에서 를 사용하면 된다, VI Edit Create Sub VI .▶

사용자가 의 일부분에 실행 중지점 을 설정해 놓으면 실행하는 도중에 실행VI (Break point)

중지점에서 실행을 멈추게 된다.

요약

Page 96: Graphical Programming Labview

…………………………………………………………………

제 부2

…………………………………………………………………

프로그래밍…………………………………………………………………

장 루프와 차트5

장 케이스 및 시퀀스 스트럭처와 수식 노드6

장 배열 그래프 및 클러스터7 ,

장 문자열과 파일 입출력8

장 프로그램 설계 기술9 I

장 프로그램 설계 기술10 II

…………………………………………………………………

Page 97: Graphical Programming Labview

개요1.

데이터들의 흐름을 관리하는 스트럭처는 가지 종류가 있다 이것은5 . While

루프 루프 케이스 스트럭처(While Loop), For (For Loop), (Case Structure),

시퀀스 스트럭처 수식 노드 이다 이(Sequence Structure), (Formula Node) .

장에서는 루프와 루프의 기본적인 개념에 대해서 배우게 된다 부가While For .

적으로 시프트 레지스터와 스위치들의 동작 방식을 변경하는 방법에 대해서도

배운다 한편 를 이용하는 일반적인 목적은 계측 분야에서 사용자가. , LabVIEW

원하는 물리량을 얻고 그것을 분석하는 과정을 원활히 하기 위해서이다.

는 물리량을 얻고 그것을 표시 하기 위한 기능을 가지고 있LabVIEW (display)

다 그것은 차트 와 그래프 라는 것으로 이 장에서는 차트에 대. (Chart) (Graph)

해서 배우게 되고 장에서 그래프에 대해 배울 것이다 특히 이 둘의 차이점에, 6 .

대해서 잘 이해해야만 이들을 유용하게 사용할 수 있을 것이다.

이 장에서 배우는 것들2.

루프의 사용법While

루프의 사용법For

시프트 레지스터와 그 사용법

스위치의 동작 방식 변경 방법

파형 차트 의 사용법(Waveform Chart)

chapter

5루프와 차트

Page 98: Graphical Programming Labview

부 프로그래밍2

루프와 루프3. While For

여러분이 를 사용하여 프로그램을 작성할 경우 어느 특정 영역을LabVIEW

반복하여 실행시켜야 할 문제에 봉착하게 될 것이다 이러한 경우를 위하여.

에는 일반적인 프로그램 언어와 같이 루프 와 스트럭처LabVIEW (Loop)

라는 기능이 있다 과 같은 범용 언어를 사용해 본 일이 있(Structure) . BASIC

는 사용자라면 이러한 기능이 있으리라는 것을 미리 예측할 수 있을 것이다.

루프 문은 일정 영역의 블록 다이어그램을 여러 차례 반복할 필요가(Loop)

있을 때 사용한다 이것도 다양한 목적을 충족시키기 위해 사용하는 방식과 동.

작 방식에 의해 루프와 루프로 나뉘어진다While For .

여러분은 함수 팔레트의 스트럭처 부 메뉴 중에서 루프While ( 와) For

루프( 를 찾을 수 있을 것이다 이것을 사용하고자 한다면 아이콘을 선택) .

하고 둘러싸기를 원하는 블록 다이어그램 부분의 좌측 상단에 마우스의 왼쪽

버튼을 누른 후 끌어서 우측 하단까지 이동한 후에 버튼을 놓는다 그러면 원.

하는 형태의 루프가 완성된다 또는 루프를 먼저 생성하고 생성된 루프문 안. ,

에 반복하기를 원하는 블록 다이어그램을 만들어 나가도 된다.

그러면 루프와 루프를 비교하여 설명해 보기로 하자While For .

루프는 두 가지의 터미널을 가지고 있다 하나는 불 입력While . (Boolean

터미널이고 하나는 수치 출력 터미널이다 이Input) (Numerical Output) .

루프의 동작은 불 입력 터미널에 참 과 거짓 의 두 가지While (True) (False)

값을 갖는 불 값을 넣어 주는 것으로 반복을 시작한다(Boolean) .

는 매번 반복의 끝에서 이 값이 참인지 거짓인지를 검사해서 거짓이면 루VI

프를 종료하므로 루프는 무조건 한 번은 실행된다 수치 출력 터미널은While .

반복의 횟수를 출력하는 터미널이다 일반적으로 루프의 사용은 불 값. While

을 갖는 스위치를 입력 터미널에 연결하여 스위치의 상태를 조작하여 특정 영

역을 반복시킬 경우에 사용한다.

Page 99: Graphical Programming Labview

장 루프와 차트5

그러면 사용자 자신이 원하는 반복 횟수만큼 반복을 시키고자 한다면 어떻

게 해야 할까?

이러한 경우를 대비하여 에서는 루프를 만들어 놓았다LabVIEW For . For

루프의 구성은 수치 입력 터미널인 루프 카운터 와 수치 출력 터(Loop Count)

미널을 가지고 있다 루프는 루프 카운터에 반복하기를 원하는 수를 연결. For

하는 것으로 실행을 한다 수치 출력은 루프와 같이 반복 횟수를 출력. While

하는 터미널이다 이것의 출력은 부터 시작하므로 반복 횟수를 으로 준. 0 100

다면 부터 까지의 수를 출력하게 된다는 것을 기억하기 바란다 두 가지0 99 .

루프의 특징을 잘 기억하고 적절하게 사용하는 능력을 길러야 한다.

위의 것은 개의 무작위수 를 발생시켜 이것을 파형100 (random number)

차트 에 표시하는 예제이다 차트에 대해서는 다음 절에서(waveform chart) .

배우게 된다.

어떠한 프로그램이라도 기본적인 기능만 있으므로 필요한 나머지의 기능은

프로그래머 자신이 만들어서 사용하여야 한다 그런 응용 능력을 길러야 좋은.

프로그램을 만들 수 있다.

conditional terminal count terminal

iteration terminal

Page 100: Graphical Programming Labview

부 프로그래밍2

시프트 레지스터4. (Shift Register)

이번에 설명하려는 것은 시프트 레지스터라는 것으로 루프와 루While For

프에서만 사용할 수 있다 이것은 일종의 지역 변수로 변수 값을 다음 반복 수.

행을 위해 넘겨 주는 것이다 이것의 생성은 루프의 테두리에 마우스의 커서.

를 위치시키고 오른쪽 버튼을 누르면 팝업 메뉴가 생성되는데 이것의 하단부

에서 라는 것을 실행하면 루프의 좌우측 테두리에 그림과Add Shift Register ․같이 개의 터미널이 생성된다2 .

오른쪽 터미널은 루프의 일회 반복이 끝나는 시점에서 기억되며 그 값은,

다음 반복의 초기에 왼쪽 터미널의 초기값으로 들어간다 또한 마우스의 커서.

를 이 터미널에 위치시키고 오른쪽 버튼을 눌러 팝업 메뉴 상의 Add

를 이용하여 다수 개의 좌측 터미널을 만든다면 이것의 값들은 각각Element

회 반복 전 회 반복 전의 값을 가지게 된다 시프트 레지스터는 또한 아래2 , 3 .

의 그림과 같이 좌측의 터미널에 초기화를 하여 특정 값을 가지도록 할 수도

있다 시프트 레지스터의 데이터 타입은 어떠한 형태 예를 들어. ( Numeric,

든 가능하다Boolean, String, Array) .

시프트 레지스터

Page 101: Graphical Programming Labview

장 루프와 차트5

여러분은 따라하기를 잘 이해하고 시프트 레지스터를 어떠한 경우에 사용해

야 하는지를 잘 판별할 수 있어야 한다.

파형 차트5. (Waveform Chart)

파형 차트는 하나 이상의 연속적인 데이터 량을 표시할 수 있도록 만들어진

특수한 수치 인디케이터 이다 이것은 인디케이터이므(Numerical Indicator) .

로 컨트롤 메뉴의 그래프 팔레트 에 들어 있으며 아래에 그(Graph Palette)

예가 있다.

Page 102: Graphical Programming Labview

부 프로그래밍2

파형 차트에는 스트립 차트 스코프 차트 스위(strip chart), (scope chart),

프 차트 의 세 가지 형태가 있다 이것의 분류는 차트의 갱신(sweep chart) .

모드 에 의한 것으로 이것의 선택은 오른쪽 마우스 버튼을 이(Update Mode) ,

용한 팝업 메뉴의 에서 모드를 변경함으로Data Operation Update Mode▶

써 이루어진다.

스트립 차트는 차트의 표시 영역을 연속적으로 스크롤 하면서 표시하는 방

식이고 스코프와 스위프 차트는 오실로스코프처럼 영역을 다시 그리면서 표,

시한다.

그렇다면 과연 어느 형태가 더 빠르게 디스플레이 될 수 있을까?

스트립 차트는 연속적인 표시를 실행하는 도중에 계속해서 화면을 다시 그

려야 하는 반면에 스코프 차트와 스위프 차트는 일정 영역만 갱신하면 되므,

로 당연히 스코프 차트와 스위프 차트가 월등히 빠르다.

스코프 차트와 스위프의 차이점은 무엇일까?

스코프 차트는 차트가 연속적으로 그려지다가 오른쪽 경계를 만나면 화면

전체가 다시 갱신되면서 왼쪽 영역에서부터 다시 시작하는 반면에 스위프 차,

트는 화면을 지우지 않고 왼쪽부터 다시 시작하는 데 차이가 있다 따라서 스.

위프 차트에는 현재 데이터의 표시 위치를 나타내는 수직선이 존재한다.

어느 형태의 차트를 사용하는가 하는 것은 여러분에게 달려 있다.

싱글 플롯 차트 만들기6. (Single Plot)

하나의 연속적인 데이터를 표시하기 위해서는 표시하기를 원하는 수치 출력

터미널을 차트의 입력 터미널에 연결하여 주면 된다.

Page 103: Graphical Programming Labview

장 루프와 차트5

형태가 맞지 않게 표시되는 데이터는 자동적으로 입력 데이터의 형태를 따

르게 된다.

멀티 플롯 차트 만들기7. (Multi Plot)

파형 차트는 여러 개의 연속적인 데이터를 표시할 수도 있다 그렇게 하기.

위해서는 메뉴의 번들 기능을 이용하여 여러Function Cluster (Bundle)▶

개의 데이터를 묶어 주어야 한다.

아래의 예는 세 개의 에서 나오는 연속적인 온도 값을 하나의 차트에 표VI

시하는 것으로 여러분이 한번 구성하여 보기 바란다 만일 하나의 데이터를.

더 추가하고 싶으면 포지셔닝 툴 을 이용하여 번들의 크기(Positioning tool)

를 증가시키면 번들의 수가 증가한다.

멀티플롯을 사용할 때 에서는 모드와 모드 중 하나를LabVIEW Overlay Plots Stack Plots

사용할 수있다 이것은하나의차트화면에하나의데이터를표시하는것과하나의차트를.

플롯 개수대로 나누어 각각 표시하는 것이다.

Tip

Page 104: Graphical Programming Labview

부 프로그래밍2

8. 불 스위치의 기계적 동작 방식 변경(Mechanical Action)

사용자가 불 스위치를 사용하고 있다면 특히 수직 스위치, (Vertical

를 사용한다고 생각해 보자 를 실행시킬 때마다 사용자는 수직 스Switch) . VI

위치를 온 시키고 툴바에 있는 실행 버튼을 눌러야 할 것이다 하지만 꼭(on) .

이렇게 할 필요는 없다 그래피컬 프로그래밍에서는 불 스위치의 기계적인 동.

작 방법을 다양하게 변경시킬 수 있기 때문이다.

에서 제공하는 불 스위치들은 모두 아래와 같은 동작 방식을 가지LabVIEW

고 있다.

Switch When Pressed

Switch When Released

Switch Until Released

Latch When Pressed

Latch When Released

Latch Until Released

불 스위치를 사용하기 위해서는 메뉴에서 다양한 불Controls Boolean▶

스위치를 찾을 수 있으며 아래에 그 예가 있다.

다음 그림처럼 원하는 불 스위치를 위치시키고 팝업 메뉴의 Mechanical

을 선택하면 개의 동작 방식을 보여 준다 사용자가 원하는 형태의 동Action 6 .

작 방식을 선택하여 사용하면 된다.

Page 105: Graphical Programming Labview

장 루프와 차트5

그러면 가지의 동작 방식에 대해 설명해 보겠다6 .

는 사용자가 마우스를 클릭할 때마다 불 상태 값을 변Switch When Pressed

경한다 이것은 일반적인 전등의 스위치와 같다 한 번 클릭했을 경우의 불 값. .

은 다시 클릭할 때까지 유효하기 때문에 가 실행하는 것에 어떠한 영향을VI

줄 수 없다.

는 사용자가 마우스를 클릭하고 버튼을 놓을 경우에Switch When Released

불 상태 값이 변경된다.

는 마우스를 클릭했을 경우에 불 상태 값을 변경하고Switch Until Released ,

버튼을 놓았을 경우에 다시 값을 변경하여 원래의 상태로 돌아온다 따라서.

사용자가 어떠한 불 상태 값을 사용하기 위해서는 마우스 버튼을 계속 누르고

있어야 한다.

도 역시 사용자가 마우스를 클릭했을 경우에 불 상태Latch When Pressed

값을 변경한다 하지만 와 차이가 있다. Switch When Pressed . Latch When

는 가 한 번 실행했을 경우에 다시 원래의 불 상태 값을 가진다 따Pressed VI .

라서 이 스위치를 루프와 같이 사용했을 경우 사용자가 한 번 눌렀을While ,

경우에 루프는 한 번만 실행한다.

는 사용자가 마우스를 클릭하고 손을 놓을 경우에 불 상Latch When Released

태 값을 변경한다 하지만 위와 마찬가지로 가 한 번 실행을 하면 다시 원래. VI

의 값으로 불 상태 값으로 돌아간다 따라서 루프와 같이 사용하면 사용. While

자가 버튼을 한 번 놓을 경우에 한해서 루프는 한 번씩 실행된다.

Page 106: Graphical Programming Labview

부 프로그래밍2

는 사용자가 마우스를 클릭했을 경우 불 상태 값을 변Latch Until Released

경하고 다시 버튼을 놓으면 가 값을 읽고 다시 원래의 불 값으로 되돌아온, VI

다 따라서 루프와 같이 사용하면 사용자가 클릭을 하고 손을 놓으면. While

한 번 실행을 한다.

지금까지 불 스위치의 동작 방식을 설명하였는데 아이콘의 그림을 잘 보고, ,

그 동작 방법을 다시 생각해 보기 바란다.

루프의 첫 번째 실행 방지하기9.

프로그램 작성 시에 루프를 사용하였다면 프로그램 실행 시에While ,

루프는 항상 한 번은 실행한다 이것은 루프가 항상 반복 실행된 후에While .

실행 조건을 검사하기 때문이다.

그러나 사용자는 케이스 스트럭처를 루프 안에 포함시켜서 실행 전에 조건

을 검사하도록 할 수 있다.

아래의 그림과 같이 블록 다이어그램을 구성해 보아라 루프문 안에 케이스.

스트럭처가 들어 있고 선택 터미널 에 루프의 불 입력을(Selector terminal)

와이어링하였다 그리고 참일 경우에 작업이 진행될 수 있도록 하였다. .

Page 107: Graphical Programming Labview

장 루프와 차트5

앞의 그림에서 케이스 스트럭처를 실행하기 전에 루프의 실행 조건 즉 참,

과 거짓을 판별하게 된다 실제로 수행되어야 할 실행 내용은 케이스 스트럭.

처 안에 있기 때문에 루프가 거짓이면 그대로 루프를 빠져 나가게 되므로 작

업이 한 번도 수행되지 않는 것이다.

잘 기억해 두었다가 필요한 경우에 적당히 사용하기 바란다.

는 특정 영역을 반복하기 위하여 두 가지의 루프 스트럭처를 가지고 있다 하나는LabVIEW .

루프이고 다른 하나는 루프이다 둘의 사용법은 원하는 형태의 루프를 함수 팔레트While For .

에서 선택하고 반복을 원하는 부분에 마우스의 클릭 과 끌기 를 이용하여 영역을, (click) (drag)

지정하면 테두리가 생성될 것이다 중요한 점은 루프는 조건 터미널의 값이 참인 경우에. While

실행을 하는 반면에 루프는 반복 횟수를 미리 지정함으로써 실행된다는 것이다, For .

여러분은 루프와 함수를 이용하여 루프의 실행 시간을 지연Wait Until Next ms Multiple

시킬 수 있다 이것은 최소 반복 시간이 수마이크로초 라는 것을 의미한다. (ms)

시프트 레지스터 루프에서만 가능함 는 일회 반복이 끝나면 다음 반복으로 변수의 값을 전달( )

하는 지역 변수이다 따라서 여러분이 이전의 반복에 사용된 변수 값을 참조하려고 한다면 시.

프트 레지스터를 이용하면 될 것이다 여러 단계 전에 이루어진 반복 값을 참조하려면 시프트.

레지스터의 좌측 테두리에 레지스터의 요소를 생성하면 된다 지역 변수이므로 루프문 안에서.

만 값을 전달할 수 있다.

파형 차트는 연속적인 데이터를 표시하기 위한 수치 인디케이터이며 갱신 모드에 따라 세 종,

류가 있다 이것은 스트립 차트 스코프 차트 스위프 차트이다 이것은 약간씩 차이가 있으므로. , , .

적당하게 선택하여 사용할 수 있는 능력을 길러야 한다.

요약

Page 108: Graphical Programming Labview

부 프로그래밍2

예제 1

무작위수 를 개 발생시켜 현재의 값과 합을 프론트 패널에 나타내(random number) 100

시오.

프론트 패널

블록 다이어그램

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴( 를 선택한다) .

여기에서 루프For ( 를 선택하여 알맞은 크기로 블록 다이어그램에)

운다.

다시 함수 팔레트에서 메뉴Numeric ( 를 선택한다) .

여기에서 Random Number( 를 선택하여 알맞은 위치에 띄운다) .

프론트 패널의 컨트롤 팔레트에서 메뉴Numeric ( 를 선택한다 이) .

Page 109: Graphical Programming Labview

장 루프와 차트5

곳에서 디지털 인디케이터( 를 선택하여 알맞은 위치에 놓는다) .

블록 다이어그램에서 인디케이터와 를 와이어링 툴Random Number (Wire

tool, 로 연결한다) .

와 와이어로 연결된 디지털 인디케이터를 루프 밖에Random Number For

서 Add Array Element( 와 연결한다) .

는 함수 팔레트의 메뉴에 있음(Add Array Element Numeric )

프론트 패널에 새로운 디지털 인디케이터를 만든다.

와 새로운 디지털 인디케이터 를Add Array Element (Digital Indicator)

연결한다.

루프의 터미널 위에서 팝업 메뉴의 를 클릭For count Create Constant

한 후 을 입력한다100 .

예제 2

시프트 레지스터를 이용하여 현재의 값과 회 회 회 반복 전의 값을 프론트 패널에1 , 2 , 3

나타내시오.

프론트 패널

Page 110: Graphical Programming Labview

부 프로그래밍2

블록 다이어그램

Page 111: Graphical Programming Labview

장 루프와 차트5

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴를 선택하여 루프While

( 를 선택하여 알맞은 크기로 만든다) .

루프의 테두리에서 마우스의 오른쪽 버튼을 한 번 클릭하여While Add

를 선택한다Shift Register .

루프의 왼쪽 테두리에 만들어진 위에서 마우스의 오른Add Shift Register

쪽 버튼을 클릭하여 를 선택한다Add Element .

가 개가 되도록 만든다Add Element 3 .

프론트 패널에 디지털 인디케이터( 를 개 만든다) 4 .

프론트 패널의 컨트롤 팔레트에서 불 메뉴( 를 선택한다) .

여기에서 사각 버튼( 을 선택하여 띄운다) .

블록 다이어그램의 함수 팔레트에서 불 메뉴( 를 선택하여 그 안에 있)

는 Not( 을 띄운다) .

위에 제시된 블록 다이어그램처럼 각각의 아이콘을 와이어로 연결한다.

툴바의 실행 버튼을 누르면 루프가 실행되며 사각 버튼을 누르면 루프가 정

지된다.

예제 3

프론트 패널에 디지털 컨트롤을 설치하고 두 자리 수를 입력한다 이 수와 무작위수가.

일치할 때까지 루프를 반복하여 현재의 수와 루프의 반복 횟수를 프론트 패널에While

나타내는 를 구성하시오VI .

프론트 패널

Page 112: Graphical Programming Labview

부 프로그래밍2

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

컨트롤 팔레트에서 Numeric( 을 선택하여 디지털 컨트롤) ( 과)

지털 인디케이터( 를 찾아서 프론트 패널에 띄운다) .

프론트 패널에 디지털 컨트롤과 인디케이터가 나타나면 주석을 단다.

함수 팔레트에서 스트럭처 메뉴( 를 선택한다) .

여기에서 루프While ( 를 찾아서 알맞은 크기로 나타낸다) .

함수 팔레트에서 Numeric( 을 선택하여) Random Number, Multiply,

와 를 찾아서 블록 다이어그램에 띄운다Round To Nearest Increment .

블록 다이어그램에 사용된 함수들Random Number(0-1).

Multiply function.

Round To Nearest function.

Not Equal? function.

Increment function.

함수 팔레트에서 메뉴Comparison ( 를 선택하여 을 찾아) Not Equal?

블록 다이어그램에 띄운다.

툴 팔레트에 있는 와이어링 툴( 로 각각을 연결한다) .

Page 113: Graphical Programming Labview

장 루프와 차트5

예제 4

와 루프를 이용하여 온도 데이터를 파형 차트Thermometer VI While (Waveform chart)

에 나타내시오.

프론트 패널

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

먼저 패널의 컨트롤 팔레트에서 불 메뉴를 선택한다.

여기에서 Vertical Switch( 를 찾아서 띄운다) .

다시 컨트롤 팔레트에서 Graph menu( )를 선택한 다음, Waveform

Chart( 를 찾아서 띄운다) .

Page 114: Graphical Programming Labview

부 프로그래밍2

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴를 선택하여 루프While

를 찾아서 알맞은 크기로 띄운다.

함수 팔레트에서 Tutorial menu( 를 선택하여) Digital

Thermometer VI( 를 찾아서 띄운다) .

다시 함수 팔레트에서 Time & Dialog menu( 를 선택하여) Wait

Until Next ms Multiple( 을 찾아서 띄운다) .

아이콘의 왼쪽에서 마우스의 오른쪽을 클릭Wait Until Next ms Multiple

하여 를 선택하고 을 입력한다 온도 데이터가Create Constant 500 ( 500

지연되어 차트에 나타나도록 하기 위한 것이다ms ).

마지막으로 각각의 아이콘을 와이어로 연결한다.

예제 5

무작위수 를 파형 차트 로 나타내어 보고 노브(random number) (Waveform chart) , (knob)

를 조정하여 데이터들이 천천히 차트에 나타나도록 하시오.

프론트패널 블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

먼저 프론트 패널의 컨트롤 팔레트에서 불 메뉴와 수치 메뉴에서 각각 수

직 슬라이드 스위치와 Knob( 를 찾아서 알맞은 위치에 놓는다) .

그래프 메뉴에서 파형 차트를 찾아서 놓는다.

Page 115: Graphical Programming Labview

장 루프와 차트5

블록 다이어그램의 함수 팔레트의 스트럭처 메뉴에서 루프를 선택하While

여 알맞은 크기로 놓는다.

함수 팔레트의 수치 메뉴에서 를 찾아서 놓는다Random Number .

메뉴에서 을 찾아서 알맞은Time & Dialog Wait Until Next ms Multiple

위치에 놓는다.

각각의 아이콘을 와이어로 연결한다.

오퍼레이팅 툴을 이용하여 의 최대값에서 클릭하여 으로 수정한Knob 1000

다.

예제 6

시프트 레지스터를 이용하여 에서 얻어지는 세 개의 데이터에 대한 평Thermometer VI

균값을 파형 차트에 나타내시오.

프론트 패널

Page 116: Graphical Programming Labview

부 프로그래밍2

블록 다이어그램

Page 117: Graphical Programming Labview

장 루프와 차트5

새로운 프론트 패널과 블록 다이어그램을 연다.

프론트 패널의 컨트롤 팔레트에서 파형 차트와 스위치를 선택하여 알맞은

위치에 놓는다.

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴를 선택하여 루프While

를 찾아서 알맞은 크기로 만든다.

함수 팔레트의 수치 메뉴에서 Add( 와) Divide( 를 찾아서 놓는)

다.

메뉴에서 을 찾아서 놓는다Time & Dialog Wait Until Next ms Multiple .

함수 팔레트의 메뉴에서 를 찾아서 놓는다Tutorial Thermometer VI .

루프의 테두리에서 마우스의 오른쪽을 클릭 를While Add Shift Register

선택하여 시프트 레지스터를 만든다.

루프의 왼쪽에 있는 시프트 레지스터 위에서 팝업하여While Add

를 선택하면 시프트 레지스터가 하나 추가된다Element .

아이콘과 에서 팝업한 후Divide Wait Until Next ms Multiple Create

를 이용하여 과 이라는 숫자를 타자한다Constant 3 500 .

와이어를 이용하여 각각의 아이콘을 연결한다.

Page 118: Graphical Programming Labview

부 프로그래밍2

개의 무작위수를 발생시켜 파형 차트에 도시하는 를 구성하시오100 VI .

문제 에서 얻어지는 데이터들이1 250 만큼 시간 지연 이ms (time delay)

되어 차트에 도시되도록 하시오.

문제 에서 얻어지는 무작위수들의 평균값을 프론트 패널에 나타내시오2 .

프론트 패널에 토글 스위치와 디지털 인디케이터를 설치하여 루프의While

실행 횟수를 나타내는 를 구성하시오 단VI . ( , 500 만큼 시간 지연이 되ms

도록 할 것)

프론트 패널의 디지털 컨트롤에서 주어지는 루프의 실행 횟수를 파형For

차트에 나타내는 를 구성하시오VI .

루프를 루프와 같이 지정된 횟수만큼 실행하도록 하시오 또한While For .

지정된 횟수 이전이라도 버튼을 눌렀을 때 루프가 실행을 정지하도록Stop

를 구성하시오VI .

Page 119: Graphical Programming Labview

개요1.

우리는 장에서 루프에 대해서 공부를 하였다 이 장에서는 예고한 대로 루5 .

프와 함께 가지 새로운 스트럭처를 배우게 된다 하나는 케이스 스트럭처2 .

이고 또 하나는 시퀀스 스트럭처 이(Case Structure) (Sequence Structure)

다 그리고 복잡하고 어려운 공식을 사용하기 쉽게 도와주는 수식 노드.

를 배우게 될 것이다(Formula Node) .

이 장에서 배우는 것들2.

케이스 스트럭처 의 사용법(Case Structure)

시퀀스 스트럭처 의 사용법(Sequence Structure)

시퀀스 로컬 과 그 사용법(Sequence Local)

수식 노드 의 사용법(Formula Node)

케이스 스트럭처3. (Case Structure)

만일 일반 범용의 프로그래밍 언어를 사용해 본 경험이 있는 사용자라면 조

건문을 많이 사용하였을 것이다 도 프로그래밍 언어이므로 조건문. LabVIEW

을 사용한다.

chapter

6케이스 및 시퀀스 스트럭처와수식 노드

Page 120: Graphical Programming Labview

부 프로그래밍2

일반적으로 언어에서 제공하는C switch()˜ 문과 동일한 기능을case

도 제공하고 있다 이것이 바로 케이스 스트럭처 이LabVIEW . (Case Structure)

다.

함수 팔레트의 스트럭처 팔레트에서 케이스 스트럭처를 선택하여 사용할 수

가 있다 이것의 모양은 여러 가지의 메모를 적을 수 있는 의 메. 3M Post-it

모지와 비슷하다 조건을 설정하고 조건에 부합하는 값을 가지는 경우에 실행. ,

을 할 수 있는 여러 경우의 실행문을 메모에 나누어서 적은 것이다 예를 들어.

서 주사위를 던져 나오는 숫자에 해당하는 메모 페이지의 행동을 수행해야 하

는 게임을 한다고 하면 우리는 주사위를 준비하고 메모지 장을 준, Post-it 6

비하여 각자 행동을 기술해야 하는 것이다.

이제 조건을 기술하고 조건에 맞는 실행문을 여러 가지 조건의 수에 맞게,

만들어서 케이스 스트럭처를 사용해 보자 케이스 스트럭처를 선택하여 원하.

는 위치에 단순하게 위치시킬 수도 있고 또는 끌기를 이용하여 원하는 크기대

로 만들 수도 있다 아래에 그 모양이 있다 테두리 좌측의 물음표 모양의 터. .

미널을 선택 터미널 이라고 하고 이것은 조건을 설정하는(Selector terminal)

데 사용하게 된다 우리는 조건의 변수 형태를 수치나 불 값을 사용할 수가 있.

는데 최초의 모양은 좌우측에 화살표가 있는 라는 문자를 가지고 나타, False․난다.

케이스 스트럭처

Selector terminal

Page 121: Graphical Programming Labview

장 케이스 및 시퀀스 스트럭처와 수식 노드6

좌우의 화살표는 조건에 맞는 실행문을 기술할 메모지와 같은 조건 영역을

보여 준다 불 은 와 단 두 개뿐이지만 같은. (Boolean) False True , Numeric

경우에는 2n 까지의 실행문을 메모리가 허용하는 한 각각 기술할 수 있다-1 .

팝업 메뉴를 사용하면 를 사용하여 새로Add Case After, Add Case Before

운 조건영역을 만들 수 있다 무엇인가를 찾는다면 항상 팝업 메뉴를 이용하.

는 습관을 가져라.

아래의 예는 불 컨트롤을 사용하여 참인 경우에는 두 수의 뺄셈 연산을 수

행하고 거짓인 경우에는 두 수의 덧셈 연산을 수행한다, .

백문이 불여일견이므로 따라하기에서 직접 해보면서 익히기 바란다.

시퀀스 스트럭처4. (Sequence Structure)

는 시퀀스 스트럭처라는 기능을 제공하고 있다 이것은 케이스 스LabVIEW .

트럭처와는 다르게 조건에 만족하는 것을 실행하는 것이 아니라 번호를 매긴

순서대로 실행을 한다 다시 말해서 순차 실행을 하는 것이다. .

Page 122: Graphical Programming Labview

부 프로그래밍2

시퀀스 스트럭처

메모지의 상단에 번호를 매기고 이것의 순서에 의해서 그 안의 사Post-it

람의 이름대로 배턴을 넘겨 주며 하는 이어달리기 경주라고 생각하면 될 것이

다 이것도 역시 함수 팔레트의 팔레트에 있다는 것을 기억하기. Structure

바란다 최초의 모습이 위에 나타나 있다. .

이것은 단순히 영화 필름의 프레임과 같은 모습을 하고 있다 우리는 이것.

을 프레임 이라고 부른다 이곳에 실행할 블록 다이어그램을 만들어(Frame) .

주면 된다.

프레임을 추가하고 싶으면 팝업 메뉴를 이용하여 Add Frame After, Add

를 이용하면 된다Frame Before .

를 선택하면 좌우측에 화살표를 가진 사각 영역이 프레Add Frame Before ․임의 상단에 생성된다 그 안에는 숫자가 매겨져 있는데 이것이 바로 실행 순. ,

서가 된다 번호 우측에는 괄호에 둘러싸여 있는 두 개의 숫자가 있고 이것이. ,

바로 현재 만들어져 있는 프레임의 개수를 나타낸다 이라면 번부터. [0..1] 0

번까지 개의 프레임 이 만들어져 있는 것이다 프레임의 실행은 항1 2 (Frame) .

상 번호 순서대로 행해진다 원하는 블록 다이어그램을 프레임 안에 적절하게.

만들어 사용하기 바란다 주의할 것은 스트럭처는 항상 하나의 프레임만을.

보여 준다는 것이다.

그렇다면 에는 왜 이런 기능이 있을까LabVIEW ?

케이스 스트럭처나 루프를 잘 이용하면 되는데 시퀀스 스트럭처라는 기능

하나를 더 추가한 이유는 무엇일까?

Page 123: Graphical Programming Labview

장 케이스 및 시퀀스 스트럭처와 수식 노드6

이것은 프로그래밍의 생명인 구조화와 간략화를 위한 도구를 사용자에게 제

공하기 위한 것이라고 생각된다.

우리는 루프에서 지역 변수인 시프트 레지스터를 사용하였다 시퀀스 스트.

럭처에서도 이러한 지역 변수를 제공한다 이것을 시퀀스 로컬. (Sequence

이라 부른다Local) .

시퀀스 로컬5. (Sequence Local)

이것의 사용은 시퀀스 스트럭처의 한 프레임에서 다음 프레임으로 변수의

값을 전달하고자 할 때 사용한다.

팝업 메뉴를 사용하여 만들 수 있으며 초기의 모습은 조그마한 사각형이 프

레임의 경계에 붙게 되는데 이것은 마우스를 이용하여 경계의 어디에든 위치,

시킬 수 있다 만일 이것에 변수 값의 입력을 연결하면 시퀀스 로컬의 내부에.

화살표가 생기는데 입력부에는 프레임으로부터 나가는 화살표가 출력부에는, ,

들어오는 화살표가 나타나게 된다 시퀀스 로컬에 입력을 주면 그 다음에 위. ,

치하는 모든 프레임에는 들어오는 모양을 한 화살표를 가진 시퀀스 로컬이 생

기고 변수의 값을 이용할 수 있다 그 이전의 프레임에서는 변수의 값을 이용, .

할 수가 없으며 시퀀스 로컬이 희미한 형태를 띠게 되므로 잘 기억해 두기 바

란다.

수식 노드6. (Formula Node)

는 공학에 많이 이용되는 프로그램이므로 복잡한 공식을 자주 사LabVIEW

용하게 된다 만일 우리가. 의 방정식을 기본적인 연산 함수를

이용하여 계산할 경우 시간도 걸리고 프로그래밍이 복잡해질 것이다, .

Page 124: Graphical Programming Labview

부 프로그래밍2

수식 노드

그러나 는 사용자를 위해 이런 경우에 사용할 수 있도록 강력한LabVIEW

기능을 제공하고 있다 공식을 그냥 써 주면 된다 이것을 우리는 수식 노드. .

라고 부르며 이것도 역시 함수 팔레트의 스트럭처 메뉴에(Formula Node) ,

있다 앞에서 예로 든. 의 연산을 수행하는 아래의 두 다이어그

램을 비교해 보아라.

수식 노드의 최초 모습은 단순한 사각형의 두꺼운 경계를 가지고 있는데,

그 안에 공식을 그냥 써 주면 된다 다만 약간의 문법이 존재하므로 이에 맞게.

써주어야 하며 줄의 끝에는 항상 세미콜론 을 기입해 주어야 한다, (;) .

그 문법과 제공되는 함수들이 다음에 보여지고 있다 계산을 위해 입력 변.

수의 터널 이 있어야 하고 결과를 출력하기 위한 터널도 필요하다 우(tunnel) .

리는 이것을 팝업 메뉴에서 만들어 사용할 수 있으며 과, Add Input Add

Page 125: Graphical Programming Labview

장 케이스 및 시퀀스 스트럭처와 수식 노드6

을 이용하면 된다 입력과 출력의 터널은 그 두께에서 차이가 있으며Output . ,

출력용 터널 이 조금 더 굵다(tunnel) .

다음 그림은 입력과 출력의 터널을 생성하는 방법을 보여 준다.

는 두 개의 루프 이외에 개의 스트럭처를 더 가지고 있다 케이스 스트럭처와 시LabVIEW 3 .

퀀스 스트럭처 수식 노드이다 케이스 스트럭처는 조건에 맞는 실행을 하며 시퀀스 스트럭처, .

는 부여된 번호에 맞게 순서대로 실행을 한다 항상 하나만의 조건 영역과 프레임을 보여 준다.

는 것도 명심하기 바란다 프레임과 조건 영역의 수는 메모리가 허용하는 한. 2n- 까지이며1

불 값을 조건으로 했을 경우에는 거짓 과 참 이라는 가지 조건만을 취급하게 된(False) (True) 2

다.

시퀀스 스트럭처에서는 시퀀스 로컬이라는 지역 변수를 이용하게 되는데 여기에 입력을 연,

결하면 밖으로 나가는 화살표가 만들어지며 그 다음에 위치하는 모든 프레임에는 들어오는 화

살표가 만들어져서 지역 변수의 값을 받아서 사용할 수 있다.

수식 노드를 이용하여 어려운 수학 공식을 직접 기입하여 프로그램을 간단하게 할 수 있다.

몇 가지 문법이 존재한다는 것과 줄의 끝에는 항상 세미콜론 을 기입해야 한다는 것을 명심(;)

하기 바란다.

요약

Page 126: Graphical Programming Labview

부 프로그래밍2

예제 1

디지털 입력의 제곱근 을 구하라 단 입력값이 음수이면(square root) . , Error.. Negative

라는 가 뜨고 를 누르면 을 출력하도록 하라Number dialog box , OK -99999.00 .

프론트 패널

일 때False 일 때True

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

프론트 패널의 컨트롤 팔레트에서 수치 메뉴를 선택하여 디지털 컨트롤과,

디지털 인디케이터를 찾아서 놓는다.

Page 127: Graphical Programming Labview

장 케이스 및 시퀀스 스트럭처와 수식 노드6

블록 다이어그램의 함수 팔레트를 선택한다.

스트럭처 메뉴를 열어 케이스 스트럭처( 를 찾아 알맞은 크기로 만)

든다.

케이스 스트럭처에서 이 부분( 의 화살표를 클릭하여 로 맞춘다) True .

함수 팔레트의 메뉴를 선택하여(1) Comparison Greater or Equal 0?

( 를 찾아서 놓는다) .

수치 메뉴를 선택하여(2) Square Root Value( 를 찾아서 놓는다) .

각각의 아이콘을 와이어로 연결한다(3) .

의 작성이 완료되었으면 다시 이 부분True ( 의 화살표를 클릭하여)

케이스 스트럭처 의 형태를 로 만든다(case structure) False .함수(1) 팔레트의 를 선택하여Time & Dialog one button dialog(

를 찾아서 놓는다) .

와이어링 툴을 왼쪽 부분에 놓고 팝업하여 를 선택한(2) Create Constant

다.

와이어링 툴을 스트럭처의 오른쪽 터널 위에 놓고 팝업하여(3) Create

를 선택한 후 를 타자한다Constant -99999 .

프론트 패널의 디지털 컨트롤에 양수 또는 음수를 입력하여 실행시켜 보아

라.

예제 2

두 자리의 입력수와 발생된 무작위수가 일치할 때까지 루프를 반복하여 이때까지의While

반복 횟수와 걸린 시간을 프론트 패널에 나타내시오.

프론트 패널

Page 128: Graphical Programming Labview

부 프로그래밍2

새로운 프론트 패널과 블록 다이어그램을 연다.

프론트 패널의 컨트롤 팔레트에서 메뉴를 선택하여 디지털 컨트Numeric

롤 개와 디지털 인디케이터 개를 만들고 주석을 단다1 3 .

블록 다이어그램 (1)

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴를 선택한다.

여기에서 시퀀스 스트럭처( 를 찾아서 알맞은 크기로 놓는다) .

시퀀스 스트럭처의 테두리에서 마우스의 오른쪽을 클릭하여 Add Frame

를 선택한다 그러면After . 이 나온다.

이 위에서 마우스의 오른쪽을 클릭하여 를 선택하면 프Add Frame After

레임의 수가 개 늘어난다1 .

이 과정을 반복하여 프레임을 개 만든다( 3 .)

프레임의 번호를 에다 맞추고 시퀀스 스트럭처의 테두리에서 마우스의0 ,

오른쪽을 클릭하여 을 선택한다Add Sequence Local .

번 과정을 실행하면 테두리에 작은 사각형이 하나 생긴다 이것이 프레(7 .

과 프레임을 연결해 주는 역할을 한다.)

함수 팔레트의 메뉴를 선택하여Time & Dialog Tick Count( 를 찾)

아서 놓는다.

아이콘과 시퀀스 로컬 테두리에 있는 작은 사각형 을 와(sequence local, )

이어로 연결한다.

이 부분( 에서 오른쪽 화살표를 클릭하여 두 번째 프레임으로 넘)

어간다.

Page 129: Graphical Programming Labview

장 케이스 및 시퀀스 스트럭처와 수식 노드6

블록 다이어그램 (2)

루프를 두 번째 시퀀스 스트럭처에 알맞은 크기로 놓는다While .

Random Number( ), Multiply( ), Increment( ),

Rround to Nearest( ), Not Equal?( 을 찾아서 놓는다 위에) (제시된 아이콘들

은 앞에서 나왔던 것들이다).

에서 마우스의 오른쪽을 클릭하여 을 선택하여[DBL] Representation

를 고른다 와[I32] .(Number to Match, Number of Iterations Current

라고 쓰여져 있는 만 바꾼다Number [DBL] .)

각각의 아이콘을 와이어로 연결한다.

이 부분( 을 클릭하여 다음 프레임로 넘어간다) .

블록 다이어그램 (3)

Tick Count, Divide, Subtract( 를 시퀀스 스트럭처에 놓는다) .

각각의 아이콘을 와이어로 연결한다.

Page 130: Graphical Programming Labview

부 프로그래밍2

예제 3

수식 노드 를 이용하여 다음 식을 파형 그래프에 나타내시오(Formula Node) .

단, 는 라디안 간격으로 까지 변화한다1 200 .

프론트 패널

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 파형 그래프를 찾아서 놓는다.

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴를 선택하여 수식 노드

( 와 루프를 찾아서 알맞은 크기로 놓는다) For .

루프 안에 수식 노드가 오도록 한다For .

루프의 에서 팝업 메뉴로 숫자 을 입력한다For [N] 200 .

Page 131: Graphical Programming Labview

장 케이스 및 시퀀스 스트럭처와 수식 노드6

수식 노드의 테두리에서 마우스의 오른쪽을 클릭하여 Add I 을 선택하nput

고 를 타자한다 다시 테두리에서 마우스의 오른쪽을 클릭하여y . Add

Output를 선택하고 를 타자한다a .

오퍼레이팅 툴을 수식 노드 안에서 클릭한 후 수식 노드 안에 구하려는 공

식을 적어 넣는다 단 수식의 끝은 반드시( , ; 을 붙인다).

각각의 아이콘을 와이어로 연결한다.

Page 132: Graphical Programming Labview

부 프로그래밍2

어떤 두 수 와 로 연산을 수행한 결과를 라는 제목의 디지털A B A/B Result

인디케이터에 나타내고 만일 가 이면 라는 제, B 0 Error : Divided by zero

목의 가 붉은 색으로 점등되는 를 구성하시오LED VI .

두 개의 저항으로이루어진전기회로에서그들을 병렬 또는 직렬로연결하였

을 때 합성 저항의 값을 프론트 패널의 에 나타내는 를 구성하시오Meter VI .

직렬 연결에서의 합성 저항치 :

병렬 연결에서의 합성 저항치 :

문제 에서 입력 전압이 주어질 때 전기 회로에 흐르는 전류값을 프론3-2

트 패널의 디지털 인디케이터에 나타내는 를 구성하시오VI .

전류

케이스 스트럭처를 이용하여 두 수의 입력에 대한 사칙 연산을 수행하는

계산기를 프론트 패널에 꾸미시오 단 사칙 연산의 선택은 부터 까지. ( , 0 3

를 나타내는 정수형 슬라이드를 이용하고 일 때에는 덧셈 일 때에는 뺄0 , 1

셈 일 때에는 곱셈 일 때에는 나눗셈에 대응하도록 하시오, 2 , 3 .)

수식 노드에서 다음 방정식을 계산하는 를 구성하시오VI .

Page 133: Graphical Programming Labview

개요1.

는 프로그래밍 언어이다 따라서 프로그래밍 언어가 가지고 있는LabVIEW .

기본적인 요소를 가지고 있다 이 장에서는 프로그래밍 언어의 기본 요소 중.

하나인 배열 에 대하여 공부하게 된다 계측에서 발생하는 많은 양의(Array) .

데이터를 처리하기 위해서는 배열을 적절하게 처리할 수 있어야 하므로 이 장

에서 잘 이해하기 바란다.

또한 우리는 장에서 차트에 대하여 배웠다 차트와 그래프는 서로 비슷하, 5 .

지만 엄밀히 따지면 커다란 차이가 있다 이 장에서는 그래프를 배우게 되는, .

데 이 장의 끝에서 차트와 그래프의 차이점을 잘 배울 수 있을 것이다 또한, .

클러스터 에 대해서도 배우게 될 것이다(Cluster) .

이 장에서 배우는 것들2.

배열 이란 무엇인가(array) ?

배열의 사용

기본적인 배열 함수

다형성 이란 무엇인가(polymorphism) ?

그래프의 사용법

클러스터란 무엇인가?

차트와 그래프의 비교

chapter

7배열 그래프 및 클러스터,

Page 134: Graphical Programming Labview

부 프로그래밍2

배열3. (Array)

배열 이란 형태가 같은 수치 데이터들의 집합을 말한다 우리는 배열(array) .

을 사용함으로써 같은 형태를 갖는 많은 수의 데이터들을 아주 쉽게 처리할

수 있다.

일반적으로 같은 형태의 많은 수의 방들을 만들어 줌으로써 배열을 사용할

수 있다 방의 형태에 따라 차원 차원 차원 또는 다차원으로 만들 수 있. 1 , 2 , 3

으며 에서는 하나 이상의 배열을 생성할 수 있고 메모리가 허용하, LabVIEW

는 한 차원당 2N- 에 해당하는 수의 방 을 만들 수 있다 어떠한1 (element) .

형태의 데이터형 도 배열을 사용할 수 있으나 배열의 배열이나 차(data type) ,

트와 그래프는 배열의 요소로 사용할 수 없다 또한 인덱스 를 사용하. (index)

여 배열의 임의 요소를 참조할 수도 있다.

우리가 주의해야 할 것은 만일 개의 방을 만들었다면 첫 번째 방은 부10 1

터 시작하는 것이 아니라 부터 시작하므로0 0 (˜ N- 까지의 방 번호를 가1)

진다는 것이다 당연히. N은 방의 개수이다 위에 차원 배열의 예가 있다 첫. 1 .

번째 방은 두 번째 방은 의 인덱스를 가진다는 사실을 기억하기 바란다0, 1 .

배열 만들기4.

여러분이 배열을 컨트롤이나 인디케이터로 만들기 위해서는 컨트롤 팔레트

의 를 이용하거나 함수 팔레트의 를 이용할 수 있다Array & Cluster Array .

또한 함수 팔레트에는 배열을 사용하기 쉽게 해주는 유용한 함수들이 들어 있

으므로 이를 잘 살펴보기 바란다.

다음에는 처음으로 생성된 빈 배열의 예가 있다 이 빈 배열에 방(Empty) .

의 개수와 방의 형태를 결정하기 위해서는 이미 만들어져 있는 컨트롤이나 인

디케이터를 마우스를 이용하여 끌어서 넣거나 또는 팝업 메뉴를 이용하여 만

들 수도 있다.

Page 135: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

차원 배열5. 2

차원 배열을 만들기 위해서는 컨트롤 팔레트의 에서2 Array & Cluster

Array를 선택하여 놓고 여기에 디지털 컨트롤이나 디지털 인디케이터를 선택

하여 끌어서 넣으면 배열이 생성된다.

차원 배열의 생성에는 두 개의 인덱스가 필요하다 하나는 행 을2 . (column)

위하여 다른 하나는 열 을 나타내기 위하여 필요하다 각 인덱스는 부, (row) . 0

터 시작하며 아래에 그 예가 있다.

배열의 차원을 증가시키는 것은 빈 배열의 인덱스 디스플레이 영역에서 팝

업 메뉴를 사용하여 을 이용하면 된다 차원 배열을 가지고Add Dimension . 1

차원 배열을 만들어 보기 바란다 포지셔닝 툴을 오른쪽 모서리에 위치시키2 .

면 로 바뀌며 이때 클릭하여 원하는 크기로 확장시킨다 아래에Grid Cursor .

그 예가 있다.

Page 136: Graphical Programming Labview

부 프로그래밍2

루프에서 배열의 응용6.

배열을 사용할 때 루프와 함께 사용하는 경우가 많다 따라서 우리는 배열.

을 루프와 함께 사용하는 기술을 배워 보기로 하겠다.

루프와 루프는 둘 다 그 테두리에 배열의 요소를 저장할 수 있으For While

며 그 인덱스의 호출을 쉽게 수행할 수가 있다 우리는 이것을 자동 인덱스, .

라 한다(Auto-Indexing) .

아래의 예는 루프를 사용한 자동 인덱스이다 루프는 번 반복하For . For 6

면서 부터 까지의 인덱스 번호를 만들고 개의 무작위수0 5 6 (random

를 만들어 낸다 루프를 반복하는 동안 만들어진 무작위수는 그 테두number) .

리에 차곡차곡 쌓여 있다가 루프가 끝나면 배열로 들어간다 루프의 경계 밖.

에 와이어가 두껍게 되어 있는 것을 볼 수 있을 것이다.

만일 이렇게 하지 않고 루프의 끝과 동시에 마지막에 발생된 하나의 수만

통과하기를 원한다면 루프 테두리의 두꺼운 와이어에서 팝업 메뉴를 호출하여

을 선택하고 팝업 메뉴에서 을 선택Disable auto-indexing Disable Indexing

하면 된다 아래에 그 예가 있다 루프 밖의 와이어가 두껍지 않다는 것에 주. .

목하기 바란다.

이 예는 마지막에 발생한 수만을 루프의 종료와 함께 배열에 넘겨 주게 된다.

Page 137: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

루프와 루프를 사용할 때 자동 인덱싱 기능에 대해 신경 쓰기 바란다 치명적인For While .

오류를 범할 수 있기 때문이다.

에서는 배열의 참조가 쉬운 루프를 배열과 많이 사용하므로LabVIEW For

루프에 대해서는 와이어의 연결과 동시에 자동 인덱스 가For (auto-indexing)

자동으로 설정되는 반면 루프에 대해서는 이므, While Disable auto-indexing

로 자동 인덱싱을 원한다면 사용자가 팝업 메뉴를 이용하여 Enable

auto-indexing을 선택해야 한다.

루프를 이용한 차원 배열 만들기7. 2

만일 루프를 이용하여 차원 배열을 참조하려고 한다면 어떻게 해야For 2

할까?

우선은 루프가 필요할 것이고 그리고 차원 배열이 당연히 필요할 것For , 2

이다 두 개의 루프를 어떻게 배치하면 될까. For ?

아래의 그림에 그 해답이 있다 하나의 루프를 다른 루프의 안쪽에 위치시.

키는 것이다 그러면 바깥쪽의 루프가 번 반복할 때마다 안쪽의 루프는 카운. 1

트 에 지정한 만큼 반복하여 정지하고 다시 바깥쪽의 루프가 회 반복(count) 1

하면서 안쪽의 루프가 루프를 다 돌고 이렇게 해서 차원 배열의 인덱스가... 2

만들어지기는 하는데 그럼 과연 어느 쪽 루프가 줄 을 나타내는 인덱스, (Row)

를 만들어 낼까?

Tip

Page 138: Graphical Programming Labview

부 프로그래밍2

그것은 바깥쪽 루프이다 따라서 루프는 첫 번째 줄의 첫 번째 열 두 번째. ,

열 세 번째 열의 요소를 인덱스하여 줄을 먼저 인덱스 하고 다음, (indexing) ,

줄을 인덱스 하는 방식을 사용하는 것이다 다시 말해서(index) . (0,0) (0,1)

순서로 인덱스하고 다시 줄을 바꿔서(0,2) (0,3) , (1,0) (1,1) (1,2) (1,3)

순서로 인덱스하는 것이다.

8. 루프 카운트에 자동 인덱싱의 사용For

루프의 반복 횟수 지정을 배열의 크기를 이용하여 할 수도 있다 아래For .

의 예에서 보여지듯이 이 되어 있다면 는Enable auto-indexing , LabVIEW

자동적으로 루프와 연결된 배열의 크기를 반복 횟수로 사용한다 만일 배열도.

연결되어 있고 루프 자체의 반복 횟수도 설정되어 있다면 는 두 수, , LabVIEW

중 작은 수를 반복 횟수로 설정한다는 것을 명심하기 바란다.

아래의 예에서 배열의 크기는 이고 설정된 반복 횟수는 이므로 둘 중10 100

더 작은 을 반복 횟수로 선택하게 된다10 .

배열 함수9. (Array Function)

에서는 배열을 사용하는 데 유용하도록 많은 함수를 제공하고 있LabVIEW

다 이것은 함수 팔레트의 에 있는 것으로 몇 가지만 소개해 보겠다. Array .

Page 139: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

는 배열을 입력으로 하여 배열 요소의 개수를 출력한다Array Size .

는 두 개의 배열을 하나의 배열로 만들거나 배열에 요소를 더Build Array

첨가할 때 사용한다.

블록 다이어그램에서 포지셔닝 툴을 이용하여 크기를 변경하면 입력 터미널

의 개수를 증가시킬 수 있다.

함수의 입력은 가 있는데 다음의 예Array Subset Array, Index, Length ,

와 같이 배열 내의 특정 문자열을 참조할 때 사용한다 인덱스 는 부. (Index) 0

터 시작한다.

Page 140: Graphical Programming Labview

부 프로그래밍2

의 일반적인 기능은 배열 내에서 하나의 요소를 참조하는 경우Index Array

에 사용한다 아래 예에서 번째 요소의 값은 인덱스 가 부터 시작하. 2 (Index) 0

므로 가 된다5 .

또한 인덱스와 배열을 응용하여 새로운 기능을 수행할 수 있다 만일 우리.

가 차원 배열에서 가로나 세로 한 줄의 배열을 뽑아서 하나의 차원 배열을2 1

만들려면 어떻게 해야 할까?

이것을 수행하는 방법은 다양하게 있을 수 있다 그러나 일반적으로. Index

를 활용하면 쉽게 할 수 있다 를 팝업 메뉴를 이용하여Array . Index Array

하나를 더 추가한 다음 팝업 메뉴의Index Input Terminal Disable

을 이용하면 터미널의 형태가 그림에서 보이는 것과 같이 속이 찬 사Indexing

각형은 속이 빈 형태를 띠게 된다.

다음의 그림은 그것을 도식화한 것이다 두 개의 입력 터미널 중 어느 것을.

이용하느냐에 따라 행 과 줄 의 배열을 각각 뽑아낼 수 있다(Column) (Row) .

Page 141: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

다형성10. (Polymorphism)

는 다형성을 제공한다 여기서 다형성이란 무슨 의미일까LabVIEW . ?

에는 와 같은 산술 연산 함수를 제공한다LabVIEW Add, Multiply, Divide .

다형성이란 함수의 입력이 같은 형태의 데이터 구조가 아니라도 연산을 수행

할 수 있다는 의미이다 적절한 예로서 아래와 같이 배열과 스칼라 의. (scalar)

연산을 들 수 있다 첫 번째 예의 결과는 이며 두 번째와 세 번째는 배. scalar ,

열이다 즉 연산에 배열이 들어 있으면 결과는 배열의 형태를 가진다. .

이전의 예에서 루프를 사용하여 개의 무작위수를 발생시켜서 그 경For 100

계에 저장하고 있다가 루프가 끝나면 배열로 보내는 예가 있었다 이 예에서.

배열로 보내기 전에 상수를 곱하여 배열에 저장하는 예가 다음의 그림에 있다.

Page 142: Graphical Programming Labview

부 프로그래밍2

위의 예에서 루프의 실행이 끝나면 자동 인덱싱의 결과로 배열을 내보내게

되는데 그 배열에 스칼라 수를 곱하면 배열의 요소 모두에게 스칼라 수를 곱,

해 주는 결과가 된다.

그래프11. (Graph)

장에서 배운 차트와 이 장에서 배우는 그래프의 차이는 무엇일까5 ?

첫 번째 차이는 차트는 하나의 데이터만으로 그릴 수 있는 반면에 그래프,

는 두 가지의 값이 필요하다는 것이다 다시 말해서 그래프를 그리기 위해서.

는 의 두 가지 좌표 값이 필요하다 반면 차트는 축의 값만을 필요로 한X, Y . Y

다는 것이 커다란 차이점이다.

는 가지 종류의 그래프를 제공한다 그래프와 파형 그래프LabVIEW 2 . XY

가 바로 그것이다(Waveform Graph) .

파형 그래프도 하나의 값만으로 그래프를 그릴 수 있다 이 두 가지 형태는.

프론트 패널에서 보기에 별로 차이가 없다 아래에 그래프의 예가 있다. .

Page 143: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

그래프는 인디케이터이므로 컨트롤 메뉴의 팔레트로부터 생성시킬Graph

수 있다.

그래프는 와 의 두 값을 입력으로 하기 때문에 입력값은 항상 배열이어야 한다X Y .

클러스터12. (Cluster)

그래프 기능을 이용하기 위해서 다시 이해하고 넘어가야 할 기능이 있다.

다음은 클러스터의 아이콘이다bundle .

그래프는 두 가지의 값을 가져야만 그림을 그릴 수 있다고 하였다 그러XY .

면 두 가지의 값을 어떻게 그래프와 연결할 수 있을까?

그것의 답은 클러스터 라는 기능을 이용하는 것이다 클러스터라는(Cluster) .

것은 하나 이상의 데이터들을 묶어 준다고 생각하면 된다 설령 데이터들의.

형태 가 다르다고 해도 서로 묶어 줄 수 있다(Type) .

여러분은 함수 팔레트의 팔레트에서 함수를 찾을 수 있을Cluster Bundle

것이다.

이것은 그래프를 그리기 위해 두 가지의 값을 하나의 값으로 묶어 주는 것

이다 우리는 이것을 클러스터 라고 부른다. (Cluster) .

Tip

Page 144: Graphical Programming Labview

부 프로그래밍2

파형 그래프를 위해서 우리는 값 값의 증분 값의 배열이 필요하다X , X , Y .

다음의 번들 을 보면 알 수 있을 것이다 따라서 그래프를 그리기(Bundle) .

위해서는 두 가지의 값을 번들로 묶어서 하나의 클러스터로 만들어야만 그릴

수 있다는 것을 기억해 두기 바란다 만일 번들을 안 쓴다면 값은 의 증. X 0, X

분은 로 자동 설정된다1 .

단일 그래프13. (Single-Plot Graph)

파형 그래프를 이용하여 개의 무작위수를 만들어 내고 이것을 배열에100

저장하지 말고 바로 그래프로 출력해 보자 아래의 그림에 그 예가 있다. .

역시 번들 함수를 사용하지 않았으므로 초기 값은 의 증분은 자동적으X 0, X

로 로 설정된다1 .

값은 루프가 끝나면 배열의 형태로 그래프에게 넘어가게 된다 이것Y For .

은 자동 인덱스 기능이라는 것을 다시 상기하기 바란다(Auto-Indexing) .

이제 번들을 이용하여 그래프를 사용해 보도록 하자.

위의 예제에 번들 함수를 그래프 전에 연결하고 의 초기값을 증분을, X 3,

로 연결하면 된다0.5 .

두 가지 예에서 변경된 부분이 있다 그래프의 터미널 형태가 바뀌었다. .

위의 것은 차원 배열을 나타내고 아래의 것은 세 가지 데이터를 묶은 클1 ,

러스터를 나타낸다.

Page 145: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

다중 그래프14. (Multiple-plot Graph)

위의 예에서 무작위수를 하나 더 발생시켜서 두 개의 그래프를 그려 보도록

하자.

먼저 번들을 이용하지 않고 해보면 아래의 그림처럼 두 개의 배열형 데이,

터를 라는 함수를 이용하여 그래프로 보내 주면 된다 따라서 그Build Array .

래프의 터미널은 차원 배열의 형태를 나타낸다2 .

여기에 번들을 사용하면 아래의 그림처럼 된다 전에 번들 함, . Build Array

수를 두 개 사용하여 각각의 초기값과 증분을 주고 두 개의 클러스터,

로 만들고 함수를 사용하면 형태가 된(Cluster) , Build Array Cluster Array

다.

함수의 문법과 기능을 다시 상기해 보자 이것의 기능은 차원Build Array . 1

배열 개를 가지고 차원 배열을 만들 경우나 또는 개의 클러스터2 2 2 (Cluster)

를 가지고 클러스터 배열을 만들어 낸다(Cluster) .

Page 146: Graphical Programming Labview

부 프로그래밍2

그래프15. XY

만일 여러분이 수학 시간에 배운 일반적인 직교 좌표(Cartesian coordinate)

를 사용하고 싶다면 그래프를 사용하면 된다 우리는 직교 좌표에 익숙하XY .

므로 이것을 사용하면 일반적인 수학적 도형들도 잘 표현할 수 있다 다음의.

다이어그램에 그 예가 있다.

여기에서 의 좌표를 번들을 이용하여 두 개의 차원 배열을 하나의 클X, Y 1

러스터로 만들어 그래프로 연결하였다 따라서 그래프의 터미널 형태가 클러.

스터의 형태가 되었음을 알아보아야 한다 연습을 계속하여 블록 다이어그램.

와이어의 색이나 굵기 또는 터미널의 형태를 보고도 무엇을 나타내는지 알 수

있어야 한다.

Page 147: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

16. 차트와 그래프의 요약

아래에 차트와 그래프에 대한 대표적인 사용 예를 넣었다 나중에 다른 프.

로그램을 작성한다면 이것을 보고 응용하기 바란다 좋은 프로그램을 작성하.

기 위한 시작은 기존의 프로그램을 잘 응용하는 것이다 외우려고 하지 말고.

자신도 모르게 익혀질 수 있도록 계속 연습해라.

1. Waveform Chart

2. Single-Plot Waveform Graph

Page 148: Graphical Programming Labview

부 프로그래밍2

3. Multiple-Plot Waveform Graph

4. Single-Plot XY Graph

5. Multiple-Plot XY Graph

Page 149: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

같은 형태의 많은 데이터들을 처리하기 위해서 우리는 배열을 사용한다 배열은 어떠한 형태.

의 데이터형도 사용할 수 있다는 것을 명심하기 바란다.

배열을 사용하기 쉽게 해주는 유용한 배열 함수가 준비되어 있다. Build Array, Index

등이 그것이며 나머지 함수에 대해서도 스스로 공부하기Array, Array Subset, Array Size ,

바란다 특히 다차원 배열을 이용할 수 있도록 노력하기 바란다. .

배열을 생성하는 가지 단계가 있었다 첫 번째로 팔레트에서 빈 배열2 , Array & Cluster

을 만들고 두 번째로 컨트롤이나 인디케이터를 마우스를 이용하여 집어(empty array shell)

넣으면 된다.

루프나 루프는 발생되는 데이터를 자신의 경계에 저장하고 있다가 루프의 실행이For While

끝나면 배열의 형태로 값을 전달한다 루프는 자동 인덱싱을 루프는. For , While Disable

을 기본 값으로 가지고 생성된다Indexing .

다형성 은 연산의 융통성을 주기 위한 것으로 각기 다른 형의 연산을 무리(Polymorphism)

없이 수행할 수 있다는 의미이다.

그래프의 종류에는 파형 그래프와 그래프가 있다 그래프는 일반적인 직교 좌표를XY . XY

지원한다 또한 번들을 사용하여 그리거나 사용하지 않고 배열을 그대로 그래프에 연결하면.

파형 그래프의 초기값과 증분값은 과 로 자동 설정된다0 1 .

번들을 사용하면 하나 이상의 데이터를 묶어서 클러스터라는 구조로 만든다는 것을 명심하

기 바란다.

다중 그래프를 그리기 위해서는 를 이용하여 차원 배열 두 개를 차원 배열로Build Array 1 2

만들어 주던가 두 개의 클러스터를 이용하여 클러스터 배열로 만들어 주는 방법이 있다, .

요약

Page 150: Graphical Programming Labview

부 프로그래밍2

예제 1

와 의 배열을 이용하여 그래프에 원을 그려 보시오X Y .

프론트 패널

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 그래프 메뉴를 선택하여 그래프XY ( 를)

찾아서 알맞은 위치에 놓는다.

Page 151: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴를 선택하여 루프를For

찾아서 알맞은 크기로 놓는다.

루프의 에서 팝업 메뉴를 이용하여 숫자 을 입력한다For [N] 100 .

메뉴에서 를 찾아서 놓는다Numeric Divide .

는 메뉴에 있는 메뉴[ ] Numeric Additional Numeric Constants (π

)

에서 찾아서 놓는다.

메뉴의 내부에 있는 메뉴Numeric Trigonometric ( 에서) Sine(

과) Cosine( 을 찾아서 놓는다) .

메뉴Cluster ( 에서) Bundle( 을 선택하여 놓는다) .

작성이 완료되면 와이어를 이용하여 각각의 아이콘을 연결한다.

예제 2

함수 팔레트의 에 있는 에서 온도 데이터를 실시간으로 파Tutorial digital thermometer.vi

형 차트에 나타내시오 또한 데이터 수집이 완료된 후에 그 결과를 파형 그래프에 나타.

내고 최대 최소 평균 온도를 프론트 패널에 표시하는 를 구성하시오, , VI .

프론트 패널

Page 152: Graphical Programming Labview

부 프로그래밍2

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 그래픽 메뉴를 선택한다.

여기에서 파형 차트와 파형 그래프를 선택하여 알맞은 크기로 패널 위에

놓는다.

컨트롤 팔레트의 메뉴에서 디지털 인디케이터를 찾아서 놓는다Numeric .

이 과정을 반복하여 디지털 인디케이터를 개 만든다( 3 .)

파형 차트와 그래프의 오른쪽 위에 이라고 쓰여져 있는 부분에서 마Plots

우스의 오른쪽을 클릭하여 점의 형태를 선택한다.

여기에서 파형 차트에는 십자형 을 파형 그래프에는 사각형( ) , (square,+

을 선택한다) .□

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴를 선택한다 여기에서.

루프를 선택하여 알맞은 크기로 놓는다For .

루프의 왼쪽 위에 있는 위에서 팝업하여 을 입력한다For [N] 40 .

함수 팔레트의 메뉴에서 를 선택하여 놓는Tutorial digital thermometer vi다.

메뉴Array ( 에서) array max & min( 을 선택하여 놓는다) .

메뉴에서 을 선택하여 놓고Time & Dialog wait until next ms multiple ,

팝업 메뉴를 이용하여 을 입력한다250 .

메뉴Analysis ( 의 안에 있는 메뉴) probability and statistics (

를 선택한다 여기에서) . mean vi( 를 선택하여 놓는다) .

와이어를 이용하여 각각의 아이콘을 연결한다.

Page 153: Graphical Programming Labview

장 배열 그래프 및 클러스터7 ,

8 이진수를 십진수로 변환하는 를 구성하시오 단 배열을 사용하bit VI . ( ,

시오)

개의 요소를 갖는 차원 배열을 읽고 짝수는 짝수끼리 홀수는 홀수 인10 1 , ,

덱스끼리 더한 결과를 개의 방을 가진 차원 배열에 나타내는 를 구성2 1 VI

하시오 단 개의 요소는. ( , 10 25, 17, 3, 50, 42, 29, 98, 11, 6, 38)

개의 무작위수를 갖는 배열의 순서를 바꾸는 를 구성하시오 예를 들100 VI .

어 은 로 은 이 되도록 하시오array[0] array[99] , array[1] array[98] .

수식 노드를 이용하여 를 파형 그래프에 나타내는

를 구성하시오VI .

무작위수를 연속적으로 발생시켜 파형 차트에 나타내고 상한과 하한을 임

의로 정하여 이 범위 이상의 값에 대해 를 사용하여 경고하는 를 구LED VI

성하시오.

Page 154: Graphical Programming Labview

개요1.

문자열 이란 문자의 집합을 말한다 우리는 이것을 단순한 문(String) ASCII .

자 메시지를 전달하는 것 이상으로 자주 사용하게 되므로 잘 사용할 수 있어

야 한다 예를 들어 기기 제어 를 수행할 경우 수치 데이. (Instrument Control)

터를 문자열로 취급하는 경우가 있다 다시 이것을 수치 데이터로 바꾸면 되.

는 것이다 에서 만들어진 프로그램을 실행할 때 사용하는 여러 가. LabVIEW

지의 선택 사항 과 에 대하여도 배우게 될 것이다(Option) Key Navigation .

또한 를 사용하여 획득한 데이터를 파일에 저장하고자 할 때 이용LabVIEW

하는 함수와 그 방법에 대하여 배우게 된다 파일을 저장하는 여러 가지 방법.

에 대해서 배우게 되며 고수준 파일 입출력 에 대해서도, (high-level file I/O)

배울 수 있을 것이다.

이번 장은 중요하면서도 약간 난해한 부분이므로 포기하지 말고 여러 번,

읽고 차근차근 이해하기 바란다.

이 장에서 배우는 것들2.

문자열 컨트롤과 인디케이터의 생성 방법

유용한 문자열 함수의 소개

옵션의 사용법VI setup

옵션Sub VI Node Setup

chapter

8문자열과 파일 입출력

Page 155: Graphical Programming Labview

부 프로그래밍2

Navigation

파일 입출력을 수행하는 방법

고수준 파일 입출력 함수(High-level File I/Os)

문자열3. (String)

앞에서 소개한 대로 문자열의 사용은 의미가 있다 수치 데이터의 전송에.

문자열로 전송한 후 다시 문자열로 바꿔서 사용한다든지 또는 수치 데이터를

파일로 저장하려면 문자열의 형태로 전환해야 한다.

문자열 컨트롤이나 인디케이터를 사용하려면 메뉴의Control String &

팔레트를 찾아보아야 한다 좌측에는 문자열 컨트롤의 예가 있다 컨트롤Table . .

내부에 문자열을 입력하거나 수정하려면 툴 팔레트의 오퍼레이팅 툴이나 라벨

링 툴을 이용한다 포지셔닝 툴을 이용한 문자열 컨트롤이나 인디케이터 코너.

부에서 마우스의 끌기 를 사용하여 크기를 변경시킬 수 있다(corner) (Drag) .

만일 문자열 컨트롤이나 인디케이터가 프론트 패널의 자리를 너무 많이 차

지한다면 어떻게 해야 할까?.

그것은 스크롤 바를 사용하는 것이다 이것은 팝업 메뉴의. Show Scrollbar

를 사용하여 만들 수 있는데 밖에 지원하지 않는다 만일, Vertical Scrollbar .

팝업 메뉴에서 가 희미하게 사용 불가의 상태를 나타낸다면Show Scrollbar ,

문자열 컨트롤이나 인디케이터가 한 줄 입력의 상태로 스크롤 바를 만들기에,

Page 156: Graphical Programming Labview

장 문자열과 파일 입출력8

는 너무 작기 때문이므로 문자열 컨트롤나 인디케이터의 수직 두께를 크게 해

야 할 것이다.

또한 팝업 메뉴의 를 사용하면 입력된 문자가 전부 애스Password Display

테리스크 의 형태로 변하게 되므로 보안을 유지하는 데 도움이 될 것이다(*) .

아래의 그림에서 문자열 컨트롤이나 인디케이터의 블록 다이어그램 형태를 볼

수 있을 것이다.

문자열 컨트롤이나 인디케이터는 백 스페이스 캐리지 리턴(backspaces),

탭 등의 특수 문자들을 표시하거나 입력받을 수 있(carriage return), (tab)

다 이 문자들을 보기 위해서는 팝업 메뉴에서 를 선택하. ‘\’Code Display

면 된다 상태가 되면 특수 문자들이 백 슬래시를 포함. ‘\’ Code Display ,

하는 형태의 문자로 표시된다 아래의 표에 그 예가 있다 만일 특수 문자들의. .

입력을 원한다면 백 슬래시를 먼저 입력하고 원하는 코드의 문자를 입력하면

된다.

아래의 표에는 문자열 제어를 수행하는 데 사용하는 문자 제어 코드가 있다.

Code LabVIEW Interpretation

\00-\FF

\b

\f

\n

\r

\t

\s

\\

Hex value of an 8-bit character; must bo uppercase

Backspace (ASCII BS, equivalent to W08)

Form feed (ASCII FF, equivalent to W0C)

Linefeed (ASCII LF, equivalent to W0A)

Carriage return (ASCII CR, equivalent to W0D)

Tab (ASCII HT, equivalent to W09)

Space (equivalent, W20)

Backslash (ASCII W, equivalent to W5C)

Page 157: Graphical Programming Labview

부 프로그래밍2

문자열 함수4. (String Function)

이제 문자열을 잘 다루기 위해서 에서 제공하는 문자열 함수를 배LabVIEW

울 시간이 되었다 이 함수들을 외우지 말고 어떤 기능의 함수가 있는지만 기.

억하고 나중에 그 사용법은 도움말 기능을 이용하면 쉽게 찾을 수가 있다, .

이 함수들은 함수 팔레트의 스트링 팔레트에서 찾을 수 있으며 몇 가지만

소개하기로 한다.

는 문자열에 포함된 문자의 수를 나타낸다String Length .

는 하나 이상의 문자열을 입력으로 하여 하나의 문자Concatenate Strings

열로 변환하여 준다 즉 문자열을 하나로 합성하는 것이다 아래의 그림은 함. .

수의 형태를 나타내고 있으며 포지셔닝 툴을 이용하여 크기를 변경하면 입력

의 개수를 변경시킬 수 있다.

Page 158: Graphical Programming Labview

장 문자열과 파일 입출력8

문자열을사용할때 공백과 특수 문자 제어 코드 등의 사용에 주의하라 이들은 기본적으, .

로 보이지 않기 때문이다.

특정 문자열의 일부 문자들을 발췌하고자 한다면 을 사용하면String Subset

된다 입력은 문자열과 발췌할 문자의 길이와 위치를 지정하는 와. Length

의 가지 입력을 가지고 있다 문자열의 첫 번째 문자의 오프셋은Offset 3 . 0이

다.

어떤 경우에는 문자열을 수치 데이터로 또는 수치 데이터를 문자열로 변경,

하여야 할 경우가 생기는데 전자의 경우에는, From Exponential/Fract/Eng

함수를 사용하고 후자의 경우에는 함수를 사용하면 된다To Fractional .

함수는 수치 데이터를 부동 소수점 형태의To Fractional (Floating-point)

문자열로 변환한다 이 함수에는 정밀도 를 입력할 수 있는데 만. (Precision) ,

일 정밀도에 를 입력하면 소수점 이하 자리의 정밀도를 가진 부동 소수점4 4

형태의 문자열을 반환하게 되는 것이다 아래에 그 예가 있다. .

Tip

Page 159: Graphical Programming Labview

부 프로그래밍2

함수는 문자열과 을 입력받아 문자열From Exponential/Fract/Eng Offset

중에서 원하는 위치에 있는 수치 문자 즉 부터 의 숫자 등을, 0 9 , -, +, e, E

수치 데이터로 변환하여 출력한다 따라서 이 함수는 문자열에서 변환을 원하.

는 수치 문자 의 위치를 알거나 올바른 형태의 수치 문(Numeric Character) ,

자가 들어 있는 경우에 유용하다.

따라서 함수 전체를 다 외우려 하지 말고 지원하는 함수의 종류와 그 사용,

상의 특징만을 외워 두면 된다 나머지는 프로그램을 작성하다 보면 저절로.

몸에 익혀지는 것이다.

5. VI Setup

상에서 만들어진 프로그램을 라고 하는 것은 이미 배워서 알LabVIEW VI

고 있을 것이다 에서는 의 실행에 필요한 몇 가지 옵션들이 있. LabVIEW VI

는데 현재의 메인 프로그램을 위한 옵션과 부 프로그램을 위한, VI Setup

옵션이 준비되어 있다Sub VI Node Setup .

이번 절에서는 을 설명하고 절에서 을 설VI Setup 8.6 Sub VI Node Setup

명할 것이다.

여러분이 을 사용하기 위해서는 프론트 패널 우측 상단의 아이콘VI Setup

Page 160: Graphical Programming Labview

장 문자열과 파일 입출력8

영역에서 팝업 메뉴를 이용하여 을 실행하여야 한다 블록 다이어그VI Setup .

램에서는 팝업 메뉴가 생성되지 않는다는 것을 명심하기 바란다 그러면 위의.

그림과 같은 대화상자가 나타나게 되는데 대화상자 안에는 여러 가지 옵션들,

이 체크상자와 함께 나열되어 있다 마우스를 이용하여 체크를 할 때 표시가. ∨

나타나는 것이 설정을 한 것이다 설정의 취소는 다시 마우스로 체크하면 된다. .

대화상자의중앙상단에위치한콤보상자 를이용하면(Combo box) Execution

를 설정할 수 있는데 가Options, Window Options, Documentation Options , 2

지는 나누어 설명하도록 하고 는 스스로 탐구해 보기, Documentation Options

바란다.

5.1 Execution Options

위의 그림에서 볼 수 있듯이 에는Execution Options Show Front Panel

부터 까지When Loaded Page Margins 12가지가 있는데 은Page Margins

버전 부터 추가된 것이다4.1 .

Show Front Panel When Loaded

프로그램을 메모리에 로드시킬 때 프론트 패널을 나타낸다.

Show Front Panel When Called

프로그램을 부 프로그램으로서 호출할 경우에만 프론트 패널을 나타낸다.

Close Afterwards if Originally Closed

를 체크해야 사용할 수 있으며 이것을 체Show Front Panel When Called ,

크하면 부 프로그램으로서 호출이 끝나면 프론트 패널을 닫는다.

Run When Opened

프로그램을 열면 실행 버튼의 사용 없이도 자동적으로 실행된다.

Suspended When Called

프로그램을 호출하면 자동적으로 실행을 일시 멈춘다.

Reentrant Execution

만일 프로그램 상에서 자신을 부 프로그램으로 사용한다면 어떻게 될까 이?

것은 아주 위험한 일이다 우리는 이것을 재진입 이라 하며 시스. (Reentrant)

템 정지의 주원인이 되기 때문에 주의를 요한다 재진입 시 같은 프로그램을.

두 번 실행하는 것이므로 같은 메모리 공간과 같은 데이터를 사용할 우려가

Page 161: Graphical Programming Labview

부 프로그래밍2

있으므로 이 항목을 체크하면 그런 우려를 막을 수 있다.

VI Priority

멀티프로세싱을 지원하는 컴퓨터는 일반적으로 의 프로세싱 관리를 한CPU

다 쉽게 말해서 여러 개의 프로그램이 동시에 실행된다면 어느것을 먼저 해. ,

야 할지를 결정하는 것이다 에서는 단계의 우선 순위 권한을 제공. LabVIEW 5

하고 있다 부터 그리고 이 그것인데 이 가장 높은. 0 3, subroutine , subroutine

실행 우선 순위를 가지고 있다 만일 주프로그램이 개의 부 프로그램을 동시. 5

에 사용하게 되는데 개는 개는 을 개는 서브루틴의 우선 순위를 가, 2 3, 1 1 , 1

지고 있다면 개의 서브루틴을 먼저 실행하고 의 우선 순위를 가진 부 프로, 1 , 3

그램 개를 동시에 시간을 나누어서 실행하고 나서 우선 순위 의 프로그램을2 1

실행하는 것이다.

나머지는 프린터의 사용 시에 필요한 것으로 도움말을 이용하여 스스로 공

부하기 바란다.

5.2 Window Options

는 실행 모드에서만 적용되는 것으로 편집 모드에서는 의Window Options

미가 없다 이것의 사용은 실행 시의 윈도우와 그 환경에 관한 것이므로 알아.

두면 유용하게 사용될 수 있을 것이다 외울 필요는 없고 이런 기능이 있다는.

것만 알아 두기 바란다.

아래의 그림에 의 대화상자가 나와 있으며 가지의 체Window Options , 16

크 항목이 있다.

Dialog Box

윈도우의 형태가 대화상자의 형태를 따른다.

Page 162: Graphical Programming Labview

장 문자열과 파일 입출력8

Window has Title bar

실행 윈도우의 형태가 타이틀 바를 가진다.

Allow User to Close Window

실행 도중 윈도우를 닫을 수 있다 이것은 윈도우를 닫을 수 있는 버튼이나.

기능을 제공한다는 의미이다.

Allow User to Resize Window

실행 도중 윈도우의 크기를 조절할 수 있다.

Allow Run-Time Pop-up Menu

프로그램의 실행 도중 팝업 메뉴를 사용할 수 있다.

Size to Screen

윈도우의 크기가 스크린의 크기로 생성된다.

Auto-Center

윈도우의 생성 시 스크린의 중앙에 자동으로 위치하도록 한다.

Show Scroll Bars

윈도우에 스크롤 바를 생성한다.

Show Menu Bar

메뉴가 있는 윈도우를 생성한다.

Show ToolBar

툴바가 있는 윈도우를 활용한다.

Show Run Button

윈도우에 실행 버튼이 있다.

Show Continuous Run Button

Show Run Button이 체크되면 사용할 수 있는 것으로 연속 실행 버튼이

있는 윈도우를 사용한다.

Show Abort Button

실행을 중단할 수 있는 실행 중지 버튼을 사용할 수 있다.

Allow Debugging(Compile in Debugging code)

디버깅 툴을 사용하여 디버깅을 할 수 있는 기능이 윈도우에 들어 있다.

Enable Log/Print at Completion

Page 163: Graphical Programming Labview

부 프로그래밍2

실행 시 발생되는 데이터를 활용하고 실행이 완료되면 프린트할 수 있는 기

능이 윈도우에 들어 있다.

위의 항목들은 쉬워 보이지만 실행에 문제를 줄 수도 있으므로 신중하게 선

택하도록 하고 더 자세한 내용은 도움말을 이용하기 바란다, .

Page 164: Graphical Programming Labview

장 문자열과 파일 입출력8

6. Sub VI Node Setup

이 옵션은 부 프로그램을 사용하는 데 필요한 옵션으로 블록 다이어그램 상

의 아이콘 상에서 팝업 메뉴를 호출하면 사용할 수 있다Sub VI .

아래에 보이는 그림이 팝업 메뉴상의 을 실행했을 경Sub VI Node Setup

우에 나타나는 대화상자의 모습이다 가지의 체크 항목이 있으며 부 프로그. 4

램의 실행에 관한 옵션이다.

Open When Panel when loaded

주프로그램이 메모리 상에 올라올 경우 부 프로그램이 자동으로 열린다 즉.

자동적으로 부 프로그램의 프론트 패널을 보여 준다.

Show Front Panel when called

주프로그램에서 부 프로그램을 호출하였을 경우에만 부 프로그램의 프론트

패널을 보여 준다.

Close afterwards if originally closed

주프로그램과 부 프로그램을 완전히 닫았을 경우에만 부 프로그램이 완전하

게 닫힌다.

Suspend when called

주프로그램에서 부 프로그램을 호출했을 경우 프론트 패널을 보여 주는 것

이 아니라 대기 상태에 들어간다 즉 프론트 패널을 보여 주지 않고 사용자, . , ,

가 프론트 패널을 보여 줄 때까지 대기하는 것이다.

Page 165: Graphical Programming Labview

부 프로그래밍2

7. Key Navigation

모든 프론트 패널 상의 컨트롤들은 이라는 옵션을 가지고Key Navigation

있다.

이것으로 우리는 무엇을 할 수 있을까 눈치 빠른 사용자라면 아마도 감을?

잡고 있을 것이다 사용자가 프로그램을 만드는 도중에 버튼 컨트롤을 생성하.

고 실행하는 도중에 버튼을 누르려면 마우스를 이용하여 클릭해야 할 것이다.

하지만 키보드 상의 특정 키의 조합으로 버튼을 누를 수 있도록 하는 기능이

필요할 때가 있을 것이다.

우리는 특정 컨트롤을 이용하는 것을 이 컨트롤에 초점을 맞추었다고 이야

기하며 컨트롤의 사용을 키보드를 통해 할 수 있도록 하는 기능이, Key

이다Navigation .

따라서 항상 컨트롤의 팝업 메뉴에서만 을 이용할 수가 있으Key Navigation

며 다음 그림과 같은 대화상자를 사용하여 키 값을 컨트롤에 할당할 수 있다, .

만일 컨트롤이 텍스트나 디지털 컨트롤이라면 값을 입력할 수 있는 상태가

되며 불 값이라면 토글 상태로 컨트롤을 이용할 수 있다, .

파일 입출력8. (File I/O)

를 이용하여 프로그램을 작성하다 보면 우리가 얻은 중요한 데이터LabVIEW

를 파일에 저장할 경우가 생긴다 이것은 데이터 수집. (Data Acquisition) 분야

에서 매우 중요한 일이므로 이번 장에서 잘 이해하기 바란다.

Page 166: Graphical Programming Labview

장 문자열과 파일 입출력8

어떤 특정 데이터를 디스크 상에 파일로 저장하거나 읽는 것을 우리는 파일

입출력 이라 하며 파일 입출력을 원활히 수행할 수 있도록(File I/O) ,

LabVIEW에서는 많은 함수와 들을 제공하고 있다 이렇게 제공되는 함수와VI .

들은 아래와 같이 가지 단계로 나뉘어진다VI 3 .

1. Low-level File I/O functions

2. Intermediate File VIs

3. High-level File VIs

고수준 파일 입출력 함수9. (High-Level File VIs)

함수 팔레트의 팔레트에서 우리가 원하는 종류의 파일 입출력File I/O VI

들을 사용할 수가 있는데 에서는 모두 개의 고수준 파일 들을LabVIEW 9 VI

지원하고 있다 이 는 함수 팔레트의 팔레트의 들 중에서 맨 윗. VI File I/O VI

줄에서 제공하고 있는 것들이다.

이런 종류의 들은 들을 부 프로그램으로 사용할 수VI Intermediate File VI

있으며 를 사용하는 데 필요한 대부분의 파일 형태를 아주 쉽게 취, LabVIEW

급할 수 있으므로 고수준 파일 입출력 라고 부른다VI .

예를 들어 이런 종류의 를 사용하면 입출력 도중 발생하는 에러를 아주VI

쉽게 처리할 수 있는 에러 핸들러 를 제공한다 이것을 사용(Error Handler) .

하면 입출력시 발생하는 에러를 잡아 대화상자를 이용하여 나타나게 할 수 있

다.

Page 167: Graphical Programming Labview

부 프로그래밍2

10. 중간형 파일 입출력 함수(Intermediate File VIs)

는 팔레트의 나머지 들에 관한 것으로 일Intermediate File VIs File I/O VI

반적으로 이런 종류의 들을 저수준 파일 입출력 함수VI (Low-level File I/O

라 하며 고수준 파일 입출력에 비하여 직접적이고 함수적인 기능을Function) ,

수행한다 쉽게 설명하면 우리가 스프레드시트 형태의 파일. , (Spreadsheet)

입출력을 원한다면 고수준 파일 입출력을 사용하여 단 하나의 만 사용하면VI

가능하지만 저수준 파일 입출력을 사용하면 파일을 열고 쓰거나 읽고 닫고, , , ,

하는 여러 개의 를 사용해야 한다 따라서 초보자라면 고수준 파일 입출력VI .

을 더 선호할 것이며 저수준 파일 입출력의 사용을 기피할 것이다 하지만, .

를 사용하는 도중에 약 정도의 저수준 파일 입출력을 해LabVIEW 80 90%˜

야 할 경우가 생긴다는 것을 명심하기 바란다 당연히 고수준의 파일 입출력.

을 사용하면 더 좋은 프로그램을 작성할 수가 없다 따라서 저수준 파일 입출.

력에 더 많은 시간을 할당하기 바란다 요즘 사람들은 너무 쉬운 것만 사용하.

려는 경향을 가지고 있다 하지만 남보다 조금 더 잘하기 위해서는 더 많은 노.

력이 필요한 것이다 에서는 개의 중간형 파일 입출력 들을 제공. LabVIEW 4 VI

하고 있다.

11. 저수준 파일 입출력 함수(Low-Level File I/O Functions)

메뉴의 팔레트에는 아래의 그림과 같은 부 메뉴가 존재Function File I/O

하는데 이것들을 우리는 저수준 파일 입출력 함수라고 한다.

Page 168: Graphical Programming Labview

장 문자열과 파일 입출력8

여기에 제공되는 함수들은 사용하기가 매우 어렵지만 사용자에게 파일 입,

출력의 세세한 부분까지도 조작할 수 있는 기능을 제공하며 가장 유연성 있,

는 함수들이다 이 부분에 대해서는 스스로 학습하기 바란다. .

12. Intermediate File VIs

가장 기본적인 파일 입출력은 파일의 열기 만들기 쓰기 읽기 닫기 등이, , , ,

다 이번 절에서는 에서 제공하는 가지 중간형 파일 들과 파일. LabVIEW 4 VI

입출력 도중 발생하는 에러를 처리할 수 있는 함수를 배우게 된다 그런데.

팔레트를 보면 이상한 점을 볼 수 있을 것이다 개의 중에서 하File I/O . 4 VI

나는 흰색이고 나머지 개는 노랑색 아이콘을 하고 있다 부터3 . LabVIEW 4.1

많이 바뀌었는데 흰색은 를 나타내고 노랑색은 함수를 나타내는 것이다, VI , .

함수와 의 차이는 무엇일까VI ?

우리는 를 이용하여 를 만들 수가 있고 여러 개의 를 묶어 놓LabVIEW VI VI

을 수도 있다 따라서 상의 어떠한 라도 우리가 그 내용을 보거. LabVIEW VI

나 수정하고 지울 수 있다 하지만 함수는 를 만들 때부터 원시 코. LabVIEW

드나 기타의 방법을 이용하여 우리가 보거나 고칠 수 없도록 만든 것을 말한

다 따라서 엄밀히 말해 는 개의 중간형 파일 와 개의 함수를. LabVIEW 1 VI 3

제공하고 있는 것이다.

여기까지 설명했으면 감각 있는 사용자는 아주 기발한 생각을 하고 있을 것

이다 그것은 우리가 원하는 프로그램을 짜기 전에 에서 제공하는. LabVIEW

모든 를 열람해 보았다가 나중에 사용자가 원하는 프로그램을 작성할 때VI ,

비슷한 를 불러서 약간 수정하고 첨가해서 자신이 만든 프로그램으로 완성VI

해 나갈 수 있다는 것이다 어떠한 프로그램 언어라도 다 그렇게 시작한다 하. .

지만 여기에는 주의할 사항이 있다 미리 만들어진 의 내용과 로직. VI (Logic)

에 대해서 다 이해하고 나서 사용해야 한다는 것이다.

Open/Create/Replace File.vi

이 를 이용하면 기존에 이미 존재하는 파일을 읽거나 대치할 수 있고 새VI ,

로운 파일을 만들 수도 있다 위의 그림에는 에 대한 함수의 형식이 보여지. VI

고 있다 만일 파일 경로를 연결하지 않으면 는 사용자가 파일을 선택할 수. VI

있도록 대화상자를 보여 주게 된다 일단 파일이 만들어지거나 열려지면 사용.

Page 169: Graphical Programming Labview

부 프로그래밍2

자가 읽거나 쓸 수가 있다 버전에서는 사용할 데이터의 형식. LabVIEW 4.0

에 따라 서로 다른 를 사용하였으나 부터는 데이터의 형에 관계없이 하VI 4.1

나의 함수에 의해서 읽고 쓰기가 가능하게 되었다 즉 에서는 문자열. , 4.0 , 16

비트 정수 단정도 부동 소수점수(16-bit integer), (single-precision

등의 가지형으로 나누어 읽기 쓰기 함수가 각각floating-point number) 3 , 3

개씩 존재한다.

Read File

이 함수는 카운트에 연결된 바이트만큼 데이터를 읽어 들이게 된다 데이터.

를 읽어 들이는 지점은 에 따라 달라지게 된다 자세한pos mode, pos offset .

것은 다음 절에서 소개하도록 하겠다.

Write File

쓰기를 위한 함수라는 것을 제외하고는 함수와 같은 형식을 취하Read File

고 있다.

Close File

컴퓨터에서 사용하는 파일의 사용에 있어서 열기와 닫기의 필요성에 대해서

의문을 제기할 수도 있을 것이다 이것을 따로 설명할 수는 없고 컴퓨터에서.

Page 170: Graphical Programming Labview

장 문자열과 파일 입출력8

파일을 사용하기 위해서는 항상 열기와 닫기를 수행해야 한다는 것만 알아 두

기 바란다 특히 파일을 사용하고 닫기를 수행하지 않으면 파일 내의 데이터의.

손실을 초래하게 되므로 주의를 요한다 아래의 그림은 파일을 닫기 위해 사용.

하는 함수의 형식이며 파일 크기를 반환한다는 것을 기억해 두라File Close .

Simple Error Handler

이 함수는 팔레트에 있는 것으로 파일을 사용하는 도중에Time & Dialog

에러를 검출하는 기능을 가지고 있으며 만일 에러가 있으면 대화상자를 통하

여 에러를 보여 주게 된다.

기존의 파일이나 새로운 파일을 이용한 데이터 저장13.

(Saving Data in a New or Existing File)

이번 절에서는 데이터를 열고 저장하고 닫는 단계의 예를 보여 주겠다, , 3 .

를 이용하여 파일을 열기 위해서는 일반적으Open/Create/Replace File VI

로 파일의 경로를 프로그램 자체에서 연결하는 방법과 연결하지 않고 대화상

Page 171: Graphical Programming Labview

부 프로그래밍2

자를 이용하는 방법이 있다 대화상자를 이용하면 프로그램이 쉽지만 더 많은.

시간이 걸린다 프로그램 자체에서 경로를 연결하면 실행 시간을 줄일 수 있.

다 그리고 연결하는 경로의 형식은 드라이브 이름 과 콜론 및. (A, B, C, ...) (:)

역 슬래시 를 이용하여 지정한다 예를 들면(\) . c:\TESTDATA\TEST1.DAT

와 같이 사용하면 된다.

아래에 보이는 예제가 프로그램에 경로를 연결하여 이미 존재하는 파일에

데이터 쓰기를 간략화한 것이다.

위의 예제는 파일을 열고 과 를 열고TEST1.DAT refnum error cluster ,

쓰고 닫는 에 연결하는 형식으로 되어 있다, VI .

이라는 것은 파일을 열면 생성되는 것으로 열린 파일을 처리하기 위refnum

해 파일에 부여된 고유 번호 정도라고 생각하면 된다 는 번들. error cluster

형태의 데이터로서 파일의 에러를 처리하기 위해서 를Simple Error Handler

함수에 연결하였다 만일 에러가 발생하면 대화상자를 통하여 에Close File .

러를 보여 주게 된다.

파일로부터 데이터 읽기14. (Reading Data from File)

일반적으로 파일을 읽기 위해서는 기존에 이미 작성된 파일을 이용하게 되

는데 이전의 예제에서 만들어진 파일을 가지고 읽기를 해보기로 하자, .

위의 예를 실행하면 이라는 파일 대화상자를 보여 주면서Enter filename

파일 이름의 입력을 기다리게 된다 대부분의 형식은 와 같지만 읽. File save

Page 172: Graphical Programming Labview

장 문자열과 파일 입출력8

기를 수행하기 위해서는 읽어 들일 데이터의 양을 연결해 주어야 한다 읽어.

들일 위치는 파일의 시작 부분부터 에 지정한 만큼 떨어진 위치에pos offset

서 이루어지게 된다 설정하지 않은 값은 이 된다. pos offset 0 .

스프레드시트15. (Spreadsheet)

를 이용하면 데이터를 스프레드시트에서 읽어 들이기 쉽게 저장LabVIEW

할 수 있다 가지 방법이 있는데 하나는 고수준 입출력 인. 2 VI Read / Write

를 이용하는 방법이고 하나는 스프레드시트 파일의 속to Spreadsheet file.vi

성과 형식을 잘 이해하고 형식에 맞게 프로그램을 만드는 방법이다.

의 사용은 비교적 쉬우므로 이번 절에Read / Write to Spreadsheet file.vi

서는 두 번째 방법을 설명하겠다.

스프레드시트라는 것은 수치 데이터의 분석과 처리를 용이하게 하기 위해

작성된 소프트웨어로서 대표적으로 그리고 요, Lotus-123, SPSS, Quattro,

즘 많이 사용하는 등이 있다는 것을 참고로 말해 둔다MS Excel .

스프레드시트에서 읽을 수 있도록 파일을 저장하려면 시트의 각 셀 이(cell)

하나의 데이터를 읽을 수 있도록 조치해야 한다 일반적으로 탭을 사용하여.

각 행 을 분리하고 을 사용하여 열 의 경계를 표시(column) End of Line (Row)

한다 따라서 스프레드시트용 파일을 만들기 위해서는 두 가지의 표시를 해주.

면서 데이터를 기록하면 되는 것이다.

아래의 그림은 스프레드시트용 데이터 파일을 만드는 블록 다이어그램이다.

위의 블록 다이어그램에서 사용한 과 표시는 팔End of Line Tab Function

레트의 팔레트에 들어 있다String .

Page 173: Graphical Programming Labview

부 프로그래밍2

표16. (Table)

스프레드시트에서 사용하는 형태의 표 를 에서 사용할 수(table) LabVIEW

있다 표는 문자열을 처리하는 차원 배열의 형태를 취하고 있으며 메모리가. 2 ,

허용하는 한 어떠한 크기라도 가질 수 있다.

아래의 그림에 그 예가 있으며 스프레드시트처럼 자동적으로 가로 세로의,

헤더를 생성하지 못하므로 팝업 메뉴에서 Show▶ 와Row Headers Show▶

를 선택해야 헤더를 볼 수 있다Column Headers .

표에 값을 넣기 위해서는 이나 을 이용하여Operating Tool Labeling Tool

야 하며 문자열만을 취급하므로 수치 데이터를 넣기 위해서는 문자열로 전환,

해야 한다 또한 헤더에 값을 넣기 위해서는 행과 열의 헤더를 위해 차원 배. 1

열을 각각 준비해야 한다 아래에 그 예가 있으므로 스스로 만들어 보기 바란.

다.

Page 174: Graphical Programming Labview

장 문자열과 파일 입출력8

고수준 파일 입출력 함수17. (High-Level File VIs)

고수준 파일 입출력은 사용자에게 편리성을 제공한다 고수준 파일 입출력.

은 를 가지고 열기 읽기 쓰기 닫기를 수행할 수 있도Intermediate File I/O , / ,

록 만들어 놓은 것이다 들의 블록 다이어그램을 한번씩 살펴보기 바란다. VI .

아래에 기본적인 개의 고수준 파일 입출력 들을 소개한다4 VI .

Write Characters to File

열기와 닫기를 자동으로 수행하면서 문자열을 파일에 저장하는 기능을 수행

한다.

Read Characters From File

만큼 떨어진 위치에서 데이터를 읽어 들인다 열기와 닫기 역시 자동offset .

적으로 수행한다.

Write to Spreadsheet File

차원이나 차원의 단정도수 를 문자열의 형2 1 (Single-Precision Number)

태로 저장하며 대부분의 스프레드시트에서 읽을 수 있는 텍스트 파일을 만드

는 것이다 파일을 만들거나 기존의 파일에 텍스트를 첨가할 수 있다. .

Page 175: Graphical Programming Labview

부 프로그래밍2

Read From Spreadsheet File

텍스트 파일을 이 지정한 위치에서 열 단위로 읽어 들이고 이것을 단offset

정도수 로 변환하여 반환한다 텍스트 형태로 저(Single-Precision Number) .

장된 스프레드시트 파일을 읽는 데 이용하면 매우 편리하다.

계측에서 발생한 데이터를 파일에 저장할 수 있도록 는 여러 가지 와 함수들을LabVIEW VI

제공하고 있으며 그들은 가지 형태로 분류된다 고수준 파일 입출력, 3 . Intermediate File I/O, ,

저수준 파일 입출력이 그것이며 이것들은 팔레트의 팔레트에 들어 있다, Function File I/O .

파일을 사용하기 위해서는 파일 열기와 닫기를 수행해야 하는데 파일을 열게 되면 는, CPU

파일을 처리하기 위해 고유한 번호를 부여하게 된다 이것을 이라 하며 열린 파일을. refnum ,

사용하기 위해서 필수적인 데이터이다 파일을 열면 사용 후에는 반드시 닫기를 수행해야 한. ,

다는 것도 명심하기 바란다 그리고 고수준 파일 입출력 들은 열기와 닫기를 자동으로 수행. VI

할 수 있도록 만들어져 있으므로 사용자에게 편리성을 제공한다.

파일의 입출력에서 문자열 정수 부동소수점수(String), (Integer), (floating-point number)

등의 데이터형을 사용할 수 있으며 형태나 이진 형태로 저장할 수 있다 형식을, ASCII . ASCII

사용한다면 텍스트 형식으로 파일을 사용하기 때문에 호환성을 유지할 수 있는 반면에 이진,

형식을 사용하면 작고 빠르게 제어할 수 있는 파일을 만들 수 있다.

요약

Page 176: Graphical Programming Labview

장 문자열과 파일 입출력8

예제 1

라는 제목을 가진 스트링에 문자를 입력하여 주어진 문자들을Header, Number, Trailer

하나의 문자열로 합쳐 에 나타내고 그 스트링의 크기를 프론트 패널에Combined String

나타내는 를 구성하시오 단 숫자는 소수점 이하 자리로 나타내시오VI . , 4 .

프론트 패널

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 메뉴String & Table ( 를 선택하여)

string control( 과) string indicator( 를 찾아서 놓는다) .

Page 177: Graphical Programming Labview

부 프로그래밍2

수치 메뉴에서 디지털 컨트롤과 인디케이터를 찾아서 놓는다.

블록 다이어그램의 함수 팔레트에서 스트링 메뉴를 선택하여 string length

( 와) concatenate strings( 를 찾아서 놓는다) .

스트링 메뉴 안에 있는 메뉴Additional String to Number Functions

( 에서) to fractional( 를 찾아서 놓는다) .

블록 다이어그램에서 의 속성을 에서 로 바꾼Length of String [DBL] [I32]

다.

각각의 아이콘을 와이어로 연결한다.

이라고 쓰여져 있는 에 라고 써넣는다Header string control [set] .

이라고 쓰여져 있는 에 라고 써 넣는다Trailer string control [volts] .

예제 2

텍스트 형식의 파일을 읽어서 프론트 패널에 파일의 내용을 나타내는 를 구성하시오VI .

프론트 패널

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 메뉴에서 스트링 인디케이터를String & Table

Page 178: Graphical Programming Labview

장 문자열과 파일 입출력8

찾아서 알맞은 크기로 놓는다.

Page 179: Graphical Programming Labview

부 프로그래밍2

블록 다이어그램의 함수 팔레트에서 메뉴File I/O ( 를 선택하여)

Open/Create/Replace File.vi( ), Read File.vi( 와) CloseFile.vi

( 를 찾아서 놓는다 의 왼쪽에 숫자) (Open/Create/Replace File.vi

을0

연결한다).

메뉴에서Time & Dialog Simple Error Handle.vi( 를 찾아서 놓는)

다.

스트링 메뉴에서 스트링 상수를 찾아서 놓는다.

스트링 상수 안에 이라고 써넣는다Select File .

각각의 아이콘을 와이어를 이용하여 연결한다.

예제 3

에서 개의 온도 데이터를 읽어 들여 스프레드시트에서 사용할 수Digital thermometer 25

있는 데이터형으로 파일에 저장하는 를 구성하시오VI .

프론트 패널

Page 180: Graphical Programming Labview

장 문자열과 파일 입출력8

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 메뉴를 선택하여 스트링 인디케String & Table

이터를 찾아서 알맞은 크기로 놓는다.

그래프 메뉴에서 파형 차트를 찾아서 알맞은 크기로 놓는다.

패널의 왼쪽 상단에 라는 버튼을 추가한다want seconds? (F) .

블록 다이어그램의 함수 팔레트에서 스트럭처 메뉴를 선택하여 루프를For

찾아서 알맞은 크기로 놓는다.

메뉴에서File I/O Open/Create/Replace File.vi, write file( 과)

close

를 찾아서 놓는다file .

메뉴에서String to fractional, tab( ), concatenate strings, end of

line ( 을 찾아서 놓는다) .

메뉴에서Time & Dialog wait until next ms multiple, simple error

handle.vi, get data/time string( 을 찾아서 놓는다) .

의 왼쪽 하단에서 마우스의 오른쪽을 클릭하여Get data/time string

을 선택하면 라는 것이 만들어진다create control want seconds? (F) .

메뉴에서 를 찾아서 놓는다Tutorial digital thermometer.vi .

각각의 아이콘을 와이어로 연결한다.

과 를 연결하면 터널이 생긴다 이 터널에서 마우스Write file Close file .

의 오른쪽을 클릭하여 을 선택해야만 과disable indexing Write file

Page 181: Graphical Programming Labview

부 프로그래밍2

이 연결된다Close file .

Page 182: Graphical Programming Labview

장 문자열과 파일 입출력8

문자열을 입력하여 문자열 중에 특정 단어와 숫자를 읽어 각각 스트링 인

디케이터와 수치 인디케이터에 나타내는 를 구성하시오VI .

암호를 입력받아 입력된 암호가 틀리면 를 점등하는 를 구성하시오LED VI .

그래프를 이용하여 과 그래프를 그리고 이 데이터를 스프XY sine cosine

레드시트에서 읽을 수 있도록 저장하는 를 구성하시오VI .

연습문제 에서 저장한 스프레드시트 파일을 읽어서 다시 그래프에 도3 XY

시하는 를 구성하시오VI .

를 이용하여 파형 차트에 그리고 일정한 형식으로Digital Temperature.vi

파일에 저장하는 를 구성하시오 단 데이터의 형식은VI . , [%1f%s %s %s]

를 사용하시오.

Page 183: Graphical Programming Labview

개요1.

이번 장에서는 를 이용한 프로그램을 잘 만들기 위한 몇 가지 기LabVIEW

술을 소개한다 사용자가 프로그램을 실행할 경우 프론트 패널을 제일 먼저. ,

보면서 사용자가 작성한 프로그램을 시작한다 따라서 우리는 프론트 패널을.

아주 신선하게 만들 필요가 있다 프론트 패널을 보면 프로그램이 얼마나 잘.

구성되었는지 그리고 어떠한 목적을 위하여 만들어졌는지를 쉽게 알 수 있다.

프로그램에서 사용자와의 인터페이스를 제공하는 부분을 우리는 그래픽 사용

자 인터페이스 라고 부르며 이것을 잘 구성(GUI, Graphical User Interface) ,

할 필요가 있다 이번 장에서는 프론트 패널을 꾸미는 데 필요한 몇 가지 기술.

을 배울 수 있을 것이다.

이 장에서 배우는 것들2.

그래픽 사용자 인터페이스 란 무엇인가(GUI) ?

배치 와 장식 의 기술들(Arranging) (Decoration)

그림 파일 불러오기에 대하여…

온라인 도움말 에 사용자 도움말 추가하기(Online Help)

외부 도움말의 사용법

컨트롤과 함수 팔레트의 변경 방법

chapter

9프로그램 설계 기술

Page 184: Graphical Programming Labview

부 프로그래밍2

3. 그래픽 사용자 인터페이스(Graphical User Interface)

컴퓨터의 급속한 발달과 소프트웨어 산업의 성장이 프로그램 자체의 요구

사항에 많은 변화를 가져왔다 그 중에서 제일 괄목할 만한 부분은 사용자와.

의 대화를 행하게 되는 사용자 인터페이스를 어떻게 제공하느냐 하는 것이다.

많은 사용자들이 프로그램의 최초 화면으로 그 프로그램의 진위를 판단하게

된다 이 사용자 인터페이스를 다양한 각도에서 지원할 수 있도록. LabVIEW

자체에서 부여된 기능을 알아보고자 한다.

그래픽 사용자 인터페이스 구이 라고(GUI, Graphical User Interface, ‘ ’

도 부른다 라는 말이 사용된 것은 불과 얼마 전의 일이다 이것은 사용자와의) .

대화를 그래픽을 이용하여 수행한다는 것을 의미한다 윈도우즈 자체도 그. 95

래픽 사용자 인터페이스 기반의 이기 때문에 우리는 그래픽 사용자(GUI) OS

인터페이스를 윈도우즈 에서 쉽게 사용할 수 있는 것이다 유닉스 시스템의95 .

윈도우즈나 매킨토시도 당연히 그래픽 사용자 인터페이스를 기반으로 한X-

다.

우리가 그래픽 사용자 인터페이스를 사용해야 하는 이유는 대략 다음과 같

다 우선 프로그램을 사용자에게 신뢰할 수 있을 만큼의 첫 인상을 심어 줄 수.

있다는 것이다 또한 사용자에게 편리성을 제공해 주며 실제 작업을 하지 않.

고도 일을 할 수 있는 모의실험 기능을 제공한다는 것이다 무엇(Simulation) .

보다도 미적으로 안정된 프로그램을 사용자에게 제공할 수 있다는 것이 그래

픽 사용자 인터페이스를 사용하는 이유일 것이다.

는LabVIEW Knobs, Slides, LEDs와 같은 기본적인 그래픽 사용자 인터

페이스용 객체를 가지고 있다 하지만 이번 장에서는 이것을 더 잘 사용할 수.

있는 몇 가지 기술도 함께 공부해 보자.

그래픽 사용자 인터페이스의 예제를 다음 그림에 나타내었다.

Page 185: Graphical Programming Labview

장 프로그램 설계 기술9 I

배치 와 장식4. (Arranging) (Decoration)

프론트 패널을 더 잘 꾸미기 위해 우선은 프로그램에 사용하는 컨트롤과 인

디케이터를 어디에 어떻게 배치해야 하는가를 잘 생각해 보아야 한다 우선은.

같은 기능을 수행하는 컨트롤과 인디케이터끼리 잘 나누어서 원하는 크기의

화면에 잘 배치해야 할 것이다 이것들의 이름표 는 어디에나 위치시킬. (Label)

수 있으나 항상 같은 자리를 차지하여야 정돈된 상태를 보여 줄 수 있으며 같,

은 기능을 위해 모인 컨트롤과 인디케이터들을 위한 이름표도 붙여 둔다면 사

용자에게 더 많은 배려를 할 수 있을 것이다.

다음의 그림은 컨트롤 팔레트의 팔레트이다 이것들은 특별한Decoration .

기능을 하는 것이 아니다 블록 다이어그램에서 특별한 터미널을 만드는 것도.

Page 186: Graphical Programming Labview

부 프로그래밍2

아니다 이것을 사용하지 않아도 를 작성할 수 있으나 이것을 사용한다면. VI ,

프론트 패널을 아주 다양하게 꾸밀 수 있다 우리는 상자 원형 프레임과 같은. , ,

다양한 장식 도구를 이용하여 같은 기능을 하는 컨트롤이나 인디케이터 등을

잘 배치하거나 묶어 놓을 수 있다 하지만 잘 사용해야 하며 사용을 잘못하면. ,

더 지저분해 보일 수 있다.

아래의 그림을 보아라 두 개의 박스가 겹쳐져 있다 만일 사용자가 아래의. .

박스를 위의 박스보다 아래에 위치시키고 싶다면 어떻게 해야 할까 우리는?

의 메뉴 중에서 메모리에 관계된 개의 부 메뉴를 볼 수 있다LabVIEW Edit 4 .

이것은 Move Forward, Move Backward, Move to Front, Move to Back

등으로 아래의 그림처럼 원하는 상자를 아래로 위치시키려면 그 상자를 선택

하고 를 실행하면 그 상자가 아래에 위치하게 된다 아래에Move Backward .

그 기능에 대한 설명이 있다.

Move Forward

선택된 객체를 이전 순서 앞으로 위치시킨다.

Move Backward

선택된 객체를 이전 순서 뒤로 위치시킨다.

Page 187: Graphical Programming Labview

장 프로그램 설계 기술9 I

Move to Front

선택된 객체를 맨 위 순서로 위치시킨다.

Move to Back

선택된 객체를 맨 아래 순서로 위치시킨다.

위의 설명에는 순서라는 말을 사용하였는데 이것은 객체를 만든 순서를 의,

미하고 이것에 대한 정보는 메모리에 순서대로 저장된다 하지만 위의 메뉴들, .

을 이용하여 메모리 상의 순서를 바꾸는 것으로 이를 잘 명심해야 한다 따라, .

서 위의 메뉴는 위아래의 순서를 바꾸는 것이 아니라 메모리 상의 순서를 바․꾸는 것임을 잘 알아야 할 것이다 많은 수의 상자들이 있을 경우에는 아주 중.

요한 사실이다.

그림 파일 불러들이기5.

프론트 패널에 아주 근사한 그림을 벽지 로 사용하고자 한다면(wall paper)

어떻게 해야 할까 아니면 자신이 속한 곳의 로고 로 사용하고자 한다? (Logo)

면 어떻게 해야 할까 아니면 파이프 형상의 그림을 읽어 들여서 자신의 프로?

그램에 공정 과정을 자세하게 나타낼 수 없을까?.

상에 그림 파일을 들여오기 위해서는 그림 파일을 사용 중인 프LabVIEW

로그램에서 명령으로 메모리에 적재한 후에 의 명령으Copy LabVIEW Paste

로 이를 프론트 패널 상에 표시할 수 있다 아주 간단하다 이것은 일반적으로. .

윈도우즈에서 기본적으로 제공하는 기능을 사용한 것으로 명령이 제공, Copy

되는 프로그램 상에서 이 명령을 이용하여 클립보드 상에 비트맵(Clipboard)

파일의 형태로 복사를 해두고 다시 명령으로 프로그램 상에 표시를 하Paste

는 것이다 이를 확인하려면 의 메뉴에서 클립보드 메뉴. LabVIEW Windows

를 실행하면 클립보드의 내용을 표시해 줄 것이다.

Page 188: Graphical Programming Labview

부 프로그래밍2

위에 그림에는 그 예가 있다 불러온 그림은 화면을 꾸미기 위해서 사용하거.

나 자신만의 컨트롤을 만드는 경우에 사용될 수 있다 이것은 일반 장식 도구, .

처럼 크기를 변경하거나 옮길 수 있으나 상에서의 수정은 불가능하, LabVIEW

다 비트맵 파일을 사용하기 때문에 다른 기능의 그림 파일보다 약간의 약점은.

있다 예를 들면 그림의 크기를 변경하면 그림 파일이 찌그러지는 현상이 있다. .

그림 파일을 불러오기 위한 또 하나의 방법은 Import Picture From File

명령을 이용하는 것이다 이것은 선택한 파일을 클립보드 상에 비트맵 파일.

의 형태로 읽어 들이는 것이며 이를 다시 표시하려면 명령을 사용하, Paste

여야 한다.

또 다른 방법은 메뉴의List & Ring Picture and Text Ring이나 Picture

을 사용하면 된다 아래에 그 예가 있다Ring . .

이것을 이용하여 여러 개의 그림을 마치 스케치북처럼 보관하고 표시할 수

있도록 되어 있다 은 단지 문자를 같이 사용할 수 있. Picture and Text Ring

다는 것에 과 차이가 있다Picture Ring .

이것에 그림을 추가하거나 그림을 불러오려면 팝업 메뉴를 사용하면 된다.

사용자 과 만들기6. Control Indicator

우리는 이 절에서 우리가 원하는 형태의 컨트롤과 인디케이터를 만드는 것

에 대하여 배우게 될 것이다 에서 제공하지 않는 형태의 컨트롤이. LabVIEW

나 인디케이터를 만들기 위해서는 에서 제공하는 일반적인 컨트롤LabVIEW

을 이용하여야 한다 일반적으로 불 컨트롤만을 이용하여 새로운 컨트롤을 만.

들 수가 있는데 아래의 절차에 따라 수행해 보기 바란다 이것은 일반적인 불, .

스위치를 이용하여 밸브 컨트롤을 만드는 것을 보여 주는 것이다.

프론트 패널 상에서 불 스위치를 만들어 위치시킨다.

Page 189: Graphical Programming Labview

장 프로그램 설계 기술9 I

메뉴의 명령을 수행하여 를 활성화시킨Edit Edit Control Control Editor

다 만일 다른 컨트롤이라면 항목이 희미하게 변해 있어 이.( Edit Control

를 사용할 수 없을 것이다.)

는 불 값을 보여 줄 것이다Control Editor .

Page 190: Graphical Programming Labview

부 프로그래밍2

편집 모드에서 이것은 마치 프론트 패널과 같은 동작을 한다 여러분은 팝,

업 메뉴를 이용하여 크기 나 정밀도 와 같은 값을 변경(Scale) (Precision)

할 수 있다.

에서는 색을 바꾸거나 크기를 변경할 수 있으며 또한 다Customize mode ,

양한 형태의 그림으로 바꿀 수가 있다.

에서 팝업 메뉴를 이용하여 를 선택하면Customize mode Import picture

불 값의 참 과 거짓 에 해당하는 그림을 아래의 그림으로 각(True) (False)

각 변경할 수 있다.

메뉴의 를 이용하여 확장자File Save .ctl 을 갖는 파일을 생성할 수 있다.

중요한 점은 기존의 컨트롤을 가지고 만들어진 사용자 컨트롤은 기능 자체

를 변경할 수 없다는 것이다 다만 그림 파일을 이용하여 외형만을 변경했을.

뿐이다 이것이 중요한 제약이지만 여러분은 이것을 이용하여 예쁜 컨트롤을.

만들 수 있다.

아래의 그림에 이렇게 하여 만들어진 의 예가 있다VI .

Page 191: Graphical Programming Labview

장 프로그램 설계 기술9 I

에 도움말 추가하기7. Online Help

를 사용하는 도중에 급하게 무언가에 대하여 찾을 경우에 우리는LabVIEW

도움말을 이용한다 에는 두 가지 종류의 도움말이 있다 하나는. LabVIEW .

로 우리가 마우스의 포인터로 가리키는 것에 대한 모든 정보를Window Help ,

보여 준다 이 기능은 아주 유익한 것으로 항상 를 이용한다면. Window Help

쉽게 프로그래밍을 할 수 있을 것이다 좋은 습관으로 만들기 바란다. .

또 하나는 로 외부의 도움말 파일을 프로Online Help to a Help document

그램에 연결하여 사용하는 것이다.

위의 두 가지 모두 사용자가 도움말을 추가할 수 있는데 첫 번째의 Window

는 팝업 메뉴의Help Operation▶Description을 이용하여 도움말을 작성하

고 버튼을 눌러 저장하면 마우스의 움직임에 따라 자동으로 도움말이 표OK

시된다 또한 여러분이 작성한 전체에 도움말을 부여하려면 메. VI Windows

뉴의 를 사용하면 된다Show VI Info... .

Page 192: Graphical Programming Labview

부 프로그래밍2

그리고 프로그램 자체에서 도움말 윈도우 를 활성화시킬 수(Help Window)

있는데 이것은 팔레트의 서브 팔레트에서, Advanced Help Control Help

와 함수를 이용하면 된다Window Get Help Window Status .

아래의 그림에 함수의 형태가 보여지고 있는데 에 불 값을, Show Terminal

넣어 주면 윈도우 도움말을 볼 수 있다 에 도움말. Top Left corner terminal

윈도우가 생성되는 왼쪽 상단의 위치를 입력하면 된다.

보다 진보한 형태의 파일을 만드는 방법은 외부에 도움말 파일을 만들Help

고 이것을 부르는 것인데 이것을 사용하려면 여러분의 플랫폼에 맞는 도움말,

파일 번역기가 필요하다.

예를 들면 윈도우에서는 의 나Blue Sky Software RoboHelp WexTech

의 를 이용하면 된다 이렇게 만들어진 외부 도움말을System Doc-to-Help .

프로그램에 불러오기 위해서는 함수를 이용하여야 한Control Online Help

다.

아래 그림에 함수의 형태가 있는데 인덱스를 이용할 수도 있고 특정 영역, ,

을 보여 줄 수도 있다.

Page 193: Graphical Programming Labview

장 프로그램 설계 기술9 I

Page 194: Graphical Programming Labview

부 프로그래밍2

8. 프론트 패널 의 객체 속성(Front Panel) (Object Attribute)

이번 절에서는 프론트 패널의 객체 속성 노드에 대해 설명한다 속성 노드.

는 블록 다이어그램 내의 인디케이터 및 컨트롤 객체에 대한 외형과 기능 특

성을 조작할 수 있는 기능이다.

속성 노드 를 이용하여 사용자는 색상과 가시성(Attribute node)

위치 깜박임 등의 속성을 조작할 수 있다(Visuality), (Position), (Blinking) .

속성 노드를 만들기 위해서는 프론트 패널의 객체나 블록 다이어그램의 터미

널 상에서 팝업 메뉴를 이용하여 를 차례로 선Create Attribute Node▶ ▶

택하면 된다.

초기 값으로 속성 노드는 하나의 속성만을 표시하는데 사용자가 포지셔닝,

툴을 이용하여 표시 영역을 넓힐 수 있다.

속성을 변경하려면 팝업 메뉴를 이용하거나 오퍼레이팅 툴을 이용하여 변경

할 수도 있다.

객체마다 서로 다른 다양한 속성이 존재하기 때문에 사용자는 도움말 기능

을 이용하여 속성을 변경하는 것이 좋다 도움말을 이용하려면. Help Show▶

를 선택하면 된다Help .

또한 속성 노드를 사용하면서 사용자는 속성을 부여할 수도 있지만 현재의

속성 값을 읽어 들일 수 있다 이것은 팝업 메뉴의 를 선택하. Change to Read

면 가능하다.

프로그램 설계 기술9.

이제 여러분들은 그래피컬 프로그래밍의 다양한 면에 대해 조금은 친숙해졌

Page 195: Graphical Programming Labview

장 프로그램 설계 기술9 I

을 것이다 이제까지 배운 것을 프로그램 제작 시 적절하게 사용할 수 있어야.

할 것이다 이번 절에서는 새로운 프로그램 제작 시에 필요한 기술과 적당한.

프로그램 스타일을 소개하기로 한다.

사용자가 커다란 프로그램을 제작한다고 하면 그것도 한 사람이 제작해야,

하는 톱 다운 방식으로 제작하려고 할 때 그래피컬 프로그램 방식은 사용자- ,

에게 다양한 기능을 제공한다.

일반적으로 프로그램은 아래의 순서대로 이루어진다.

프로그램의 요구 사항을 리스트로 작성하라1. .

프로그램의 요구 사항을 생각하며 프론트 패널에 필요한 리스트를 작성하,

는 것이다 예를 들어 프론트 패널에 만들어야 하는 컨트롤과 인디케이터 실. , ,

시간 해석의 필요성 데이터 표시 방법 등을 리스트로 미리 만드는 것이다 그, .

다음으로 프로그램의 사용자 입장에서 실물 크기의 모형 으로 프(mock-up)

론트 패널을 만들고 기능과 특징에 대해 생각해 보는 것이 도움이 된다, .

의 조직을 설계한다2. VI (Design the VI Hierarchy)

일반 범용 프로그램에서 흐름도를 만드는 것과 유사한 단계이다 그래피컬.

프로그램의 장점은 조직적인 특성에 기인한다 일단 프로그램을 만들면 사용.

자는 이것을 주프로그램의 부 프로그램으로 사용할 수 있으며 부 프로그램의,

수는 원칙적으로 무제한이다 따라서 사용자는 전체 프로그램을 미리 주요한.

기능을 수행하는 작은 단위로 나누어 프로그램을 작성하고 이것을 부 프로그,

램으로 사용하면 되는 것이다 다음의 흐름도가 그 예를 대략적으로 설명하고.

있다.

Page 196: Graphical Programming Labview

부 프로그래밍2

MAIN

CONFIGHDWSETUP

FILESETUP

READDATA

PROCESSDATA

SAVEDATA

FILE I/OHANDLER

HDWDRIVERS

위의 예에 따라 사용자는 프로그램을 주프로그램을 기준으로 작은 단위로

나누어서 프로그래밍하는 것이 유리하다 주프로그램을 설정한 다음 각 부 프. ,

로그램을 생성하는데 전체를 다 만들지 말고 먼저 필요한 아이콘의 입력 및,

출력 단자를 먼저 설계한다.

필요한 부 프로그램을 다 만들었으면 부 프로그램 중에서 서로 중복되는,

부분은 없는지 또는 불필요한 부분은 없는지 검사해야 한다, .

프로그램을 작성한다3. .

이제 프로그램을 작성할 단계가 왔다.

먼저 아이콘을 작성한 대로 부 프로그램을 만들어 나간다.

프로그램 상에 나타나는 일반적인 문제를 해결한다.

부 프로그램을 검사한다 부 프로그램을 검사하기 위해 두 프로그램을 이.

용할 필요 없이 단일 부 프로그램만을 수행하여 입력과 출력 값이 정당한,

가를 검사하면 된다.

이렇게 하여 프로그램 작성의 커다란 흐름을 알아보았다.

부 프로그램을 제작하는 과정에서 사용자는 후에 새로운 입력이나 출력이

필요할지도 모른다는 생각을 할 것이다 따라서 부 프로그램의 제작 과정에서.

아이콘 상에 여분의 입력 및 출력 단자를 미리 만들어 놓고 이것을 와이어로,

연결하지 말고 놔두면 된다 이렇게 하면 부 프로그램의 제작 과정에서 아이. ,

콘 형태를 변경하지 않고도 새로운 입력 및 출력 단자를 만들 수 있는 것이다.

컨트롤과 아이콘을 연결할 경우 일반적으로 입력 단자는 좌측에 출력 단자, ,

는 우측에 만드는 것이 프로그램의 제작에 많은 도움이 된다.

일반적으로 여러 곳에서 블록 다이어그램 내에서 비슷하거나 중복되는 부분

Page 197: Graphical Programming Labview

장 프로그램 설계 기술9 I

을 피하기 위해서 또는 프로그램이 너무 크거나 다른 프로그램에서도 사용할, ,

수 있도록 하기 위해서 프로그램을 나눌 필요가 있다.

기능 설정하기10. Undo

에는 사용자가 만족할 만한 기능 하나가 추가되었는데 이것LabVIEW 5.0 ,

은 사용자가 프로그램 작성 중에 실수를 할 경우 실행 취소를 할 수 있는,

기능이다 이번 절에서는 기능을 사용할 수 있도록 설정하는 방Undo . Undo

법에 대해 배울 것이다.

기능을 이용하면 사용자의 실수를 원래대로 회복할 수 있는File Undo▶

데 를 이용하면 다시 이 기능을 복원할 수 있다, File Redo .▶

이것의 단축키는 에 대해 에 대해 이Undo <Ctrl-Z>, Redo <Ctrl-Shift-Z>

설정되어 있으며 와 메뉴의 옆에는 와 를 수행할 한두, Undo Redo Undo Redo

단어의 설명이 함께 붙어 있어서 사용하기에 편리하다 예를 들어 아래의 그.

림과 같이 나타난다.

와 를 사용하려면 내에서 와 스텝을 기억Undo Redo LabVIEW Undo Redo

하고 있어야 한다. Preferences Block diagram Maximum Undo▶ ▶

를 이용해야 하는데 프레퍼런스는 다음 장에서 설명한다 아래steps per VI , .

의 그림은 스텝을 설정하는 화면이다.

Page 198: Graphical Programming Labview

부 프로그래밍2

만일 스텝 수가 이면 와 기능을 사용할 수 없다0 , Undo Redo .

각 는 자신의 스텝을 기억하고 있으며 스텝 수만큼 메모리 자원을VI Undo ,

잃어 버리게 되는 것이다.

호출자 는 의 인터페이스가 변경되면 자동으로 스텝을VI (caller) VI , Undo

갱신한다 이런 경우 호출자가 가지고 있는 에 대한 정보는 스텝 수만큼. , Undo

의 최신 정보를 빼고 하나씩 지워 버린다 이런 일은 사용자가 아래의 경우 중.

하나를 했을 경우에 일어난다.

컨트롤 팔레트와 함수 팔레트 설정하기11.

그래피컬 프로그램 환경은 사용자가 컨트롤과 함수 팔레트를 변경할 수 있

는 기능을 가지고 있다 아래에는 팔레트를 변경할 수 있는 다양한 방법들이.

있다.

이나 디렉토리에 자신이 추가할 나 컨트롤을 저장함으user.lib instr.lib VI

로써 팔레트에 추가할 수 있다.

팔레트 옵션을 사용하여 컨트롤과Edit Edit Controls & Function VI▶

를 팔레트에 추가할 수 있다.

특정한 디렉토리에서 파일을 지우거나 추가하는 것처럼 자동으로 변경될,

수 있도록 팔레트를 설정한다

자주 사용되는 함수를 더 쉽게 접근할 수 있도록 팔레트를 다시 배열할 수

있다.

사용자마다 자주 사용하는 함수가 다르므로 서로 다른 팔레트 배열을 사용

할 수 있도록 설정한다.

를 사용하는 도중에 프론트 패널이 활성화되면 함수 팔레트는 보LabVIEW

이지 않고 블록 다이어그램 창이 활성화되면 컨트롤 팔레트가 보이지 않는,

다 만일 사용자가 모든 팔레트가 동시에 보일 수 있도록 설정하기를 원한다.

면 프레퍼런스 파일에 showAllPalettes라는 항목을 로 설정하면 된다true .

사용자는 기능을이용하여자신에게맞는팔레트형태를선택할Edit Select Palette set▶

수 있다.

Tip

Page 199: Graphical Programming Labview

장 프로그램 설계 기술9 I

이나 디렉토리에 나 컨트롤을 추가하기1. user.lib instr.lib VI

컨트롤이나 를 팔레트에 추가하는 가장 쉬운 방법은 추가할 것을VI user.lib

디렉토리 안에 저장하는 것이다 를 시작하면 함수 팔레트의. LabVIEW , User

부팔레트는Libraries .lib이나 디렉토리를 그 안에 담는다 따라서.mnu .

디렉토리를 읽어 그 안의 함수를 안에 생성하는 것이user.lib User Libraries

다.

이와 마찬가지로 함수 팔레트의 부팔레트인 인스트루먼트 드라이버 팔레트

는 디렉토리 안의 함수들을 자신의 내용으로 만든다instr.lib .

여기서 과 을 디렉토리라고 하는 이유는 를 단일 프로그user.lib instr.lib .vi

램으로 저장하면 생성되는 파일인 데 반하여 여러 들을 같이 저장하면, vi .lib

파일이 생성된다 따라서 그 안의 내용을 보면 들의 디렉토리를 형성하고 있. vi

음을 볼 수 있을 것이다.

팔레트 형상의 변경2.

컨트롤과 함수 팔레트의 정보는 애플리케이션 디렉토리의 디렉토리menus

에 저장된다 디렉토리는 여러 다양한 팔레트의 정보를 가진 디렉토리. menus

들을 가지고 있으며 네트워크를 사용하지 않는다면 각 사용자에 따라 다른,

디렉토리를 정의할 수 있다 또한 사용자는 자신이 설정한 를 프menus . menu

레퍼런스 파일 안의 항목에 지정한 경로에 저장할 수 있다 프레menusDIR .

퍼런스 파일에 대해 이해가 안가는 사람은 윈도우즈의 워드패드를 이용하여

프레퍼런스 파일을 보기 바란다.

따라서 자신의 디렉토리에 있는 파일을 다른 사용자의 디렉토menus menus

리에 복사한다면 자신의 설정을 다른 사용자에게 쉽게 전달할 수 있는 것이다, .

함수 팔레트를 변경하려면 팔레트 메뉴Edit Edit Control & Function▶

의 을 변경하기 바란다menu setup

팔레트 에디터3.

컨트롤이나 함수 팔레트를 변경하거나 추가하려면 Edit Select Palette▶

메뉴의 옵션을 사용하면 된다 이 메뉴를 사용하면 팔레트 에디터로 들어Set .

가게 되는데 에디터 대화상자가 나오게 된다, .

이 에디터에서 함수의 위치를 변경하려면 마우스의 드래그 기능을 이용하여

원하는 위치에 위치시키면 된다 또한 삭제하거나 삽입하는 등의 기능을 수행. ,

하려면 팝업 기능을 이용하여 다음 그림처럼 수행하면 된다, .

Page 200: Graphical Programming Labview

부 프로그래밍2

팝업 메뉴를 이용하여 사용자는 메뉴를 수정할User Libraries(user.lib)

수 있으며 메뉴를 수정할 수 있다 만일 사용자가, Instrument I/O(instr.lib) .

이 이외의 함수를 수정하기를 원하면 을 이용하여menu setup new setup...

을 사용해야 한다 한번 해보는 것이 읽는 것보다 좋으니 한번 해보기 바란다. .

부팔레트 새로 만들기4.

사용자가 팔레트를 추가하기 원한다면 팔레트 에디터를 사용해야 한다, .

이나 을 사용하지 않고 팔레트를 새로 만들기를 원한다면 팔레user.lib vi.lib

트 에디터의 팝업 메뉴 중 를 이용하여야 한다 이것을Insert Submenu... .▶

선택하면 아래와 같은 대화상자를 볼 수 있을 것이다.

부 메뉴에 대한 정보는 나 파일에 저장할 수 있다 파일이나VI .mnu . .mnu

파일 안에는 각각 하나의 함수 팔레트나 컨트롤 팔레트를 담고 있다.llb .

새로운 메뉴를 생성하기 위해서는 을 선택Create a new menu file(.mnu)

하고 팔레트 이름과 이것을 담고 있을 파일의 이름을 지정해 주어야 한다 이.

파일의 확장자는 로 사용하기를 바라며 저장 위치는 디렉토리.mmu , menus

내의 사용자 디렉토리에 저장해야 한다.

기존의 메뉴에 컨트롤이나 함수를 추가하려 한다면 Link to an existing

을 선택하면 된다menu file .

를 선택하면 메뉴 파일을 디렉토리와 연결하는 데 사Link to a directory ,

용할 수 있다 그러면 메뉴의 수정이 자동으로 갱신되므로 사용자에게 편리함.

을 제공한다.

Page 201: Graphical Programming Labview

장 프로그램 설계 기술9 I

프로그램의 외형은 사용자에게 신선한 감을 줄 수 있는 얼굴과 같은 역할을 하는 부분이므로

이 부분에 대하여 신경을 써야 한다 이것을 위해서는 에서 제공하는 장식 도구를 이용. LabVIEW

하거나 그림 파일들을 불러들여서 사용하면 된다 또는 장식 도구를 사용하는 중에 서로의 위치.

문제를 해결하기 위해서 메모리에 관계되는 메뉴의 를 이용하면 된다Edit Move... .

외부의 그림 파일을 에서 불러다 사용할 수 있는데 이것에는 여러 가지 방법이 존재LabVIEW ,

한다 한 가지는 윈도우즈 자체에 있는 클립보드를 이용하는 것이고 또 하나는. Import Picture

파일을 이용하는 것이다From .

이미 존재하는 컨트롤과 인디케이터를 이용하여 우리가 원하는 형태를 가진 새로운 컨트롤과

인디케이터를 만들 수가 있다 그러나 이것은 외형만 바꿀 수 있지 그 외의 기능은 변경할 수. ,

없으므로 일반적으로 기존에 있는 불 컨트롤이나 인디케이터를 사용하여 새로운 컨트롤과 인디

케이터를 만든다.

항상 윈도우즈 도움말 기능을 이용하는 습관을 기른다면 쉽게 프로그램을 만들거나 프로그램,

을 사용할 수 있을 것이다 또한 우리가 원하는 형태의 도움말을 만들거나 외부의 존재하는 도움.

말을 함수를 이용하여 불러오고 표시할 수 있다는 것을 명심하기 바란다.

프론트 패널의 객체속성 노드를 이용하면 객체마다서로 다른 다양한속성을 변경하여프론트

패널의 다양함을 추구할 수 있다 속성 노드를 이용하여 사용자는 색상과 가시성 위. (Visuality),

치 깜박임 등의 속성을 조작할 수 있다 속성 노드를만들기 위해서는 프론(Position), (Blinking) .

트 패널의 객체나 블록 다이어그램의 터미널 상에서 팝업 메뉴를 이용하여 Create Attribute▶

를 차례로 선택하면 된다Node .▶

를 설계하려면 일반 범용 프로그램의 언어에서 사용하는 흐름도와 같이 프로그램 작LabVIEW

성 전에 아래와 같은 단계로 설계 단계를 거치는 것이 사용자에게 유리하다.

프로그램의 요구 사항을 리스트로 작성하라1. .의 조직을 설계한다2. VI (Design the VI Hierarchy)

프로그램을 작성한다3. .에는 사용자의 실수를 취소할 수 있는 기능과 취소한 기능을 다시 실행할LabVIEW 5.0 Undo

수 있는 기능을 가지고 있다 사용자는 대화상자에서 의 스텝 수를 지Redo . Preferences Undo

정할 수 있으나 이 스텝을 많이 사용하면 메모리 자원 의 효율성이 떨어지, (memory resource)

므로 두 가지 문제에 대해 절충을 해야 한다.

를 사용하는 사용자마다 사용 목적이 다양하기 때문에 컨트롤과 함수 팔레트 내의LabVIEW

함수가 자신의 목적에 맞도록 변경하는 것이 사용자가 를 사용하는 데 도움이 된다LabVIEW .

따라서 는 사용자의 컨트롤과 함수 팔레트를 변경하는 기능을 가지고 있다LabVIEW .

요약

Page 202: Graphical Programming Labview

개요1.

이번 장에서도 를 이용한 프로그램을 잘 만들기 위한 몇 가지 기LabVIEW

술을 소개한다 우선 자신의 프로그램을 프린터를 이용하여 문서화하는 방법.

과 도큐먼트 를 다루는 방법에 대해 설명해 보겠다 또한 의VIs . LabVIEW 5.0

새로운 기능인 사용자 메뉴바를 만드는 방법도 여기서 공부해 보도록 하겠다.

를 사용하는 도중에 여러 가지 사용자 환경을 자신의 프로그램에 맞LabVIEW

게 설정하는 방법도 배울 수 있는데 이러한 기능들은 프로그램을 작성하는,

데 꼭 필요한 기능은 아니지만 잘 알아 두면 매우 유용한 기능이므로 열심히

배우기 바란다.

이 장에서 배우는 것들2.

프린팅 및 도큐먼트 의 사용법VIs

사용자 메뉴바 만들기

의 다루기LabVIEW Preferences

프린팅과 도큐먼트3. (Document) VIs

이번 절에서는 프린트에 관련된 다양한 내용과 도큐먼트 에 대해서 알아VI

보자.

chapter

10프로그램 설계 기술

Page 203: Graphical Programming Labview

부 프로그래밍2

그래피컬 프로그래밍에서 들은 다양한 방법으로 프린트를 할 수 있다VIs .

일반적으로 들을 프린트하는 가지의 방법이 사용되고 있다VI 4 .

현재의 윈도우의 내용을 빠르게 출력하기 위해 메뉴를 이Print Window...

용할 수 있다

메뉴를 이용하여 매우 다양한 출력물을 얻을 수Print Documentation...

있다 예를 들어 프론트 패널 블록 다이어그램. , (front panel), (block

부 프로그램 컨트롤 히스토리 등의 정diagram), (sub VI), , VI (history)

보를 포함하여 를 다양하게 출력할 수 있다VI .

프로그램 상에서 프린터를 직접 조작하여 를 프로그램 실행 도중 자동으VI

로 출력할 수 있다.

서버를 사용하여 윈도우나 도큐먼트들을 프로그램 안에서 출력VI VI VI

할 수 있다.

게다가 프린터가 직렬 포트 나 병렬 포트 에 연, (serial port) (Parallel port)

결되어 있다면 를 이용하여 출력할 수 있으나 프린터의 제어, Serial Port VI ,

명령어에 대한 지식이 있어야 한다.

윈도우즈나 유닉스 운영체제에서는 프린트를 하기 위해 Function ▶

에 위치한 를 사용해도 되고 매킨토시에서Communication System Exec VI ,

는 에 위치한Function Communication AppleEvent AESEvent Print▶ ▶

를 사용해도 된다 윈도우즈 운영체제에서 다른 응용 프로그램Document VI .

에 데이터를 프린트할 수 있도록 오토메이션 을 사용할ActiveX (automation)

수도 있다.

프린트하는 방식에 관계없이 모든 프린트 출력물의 형식에 영향을 미치는

대화상자에는 대화상자와 셋업 대화상자 가지가 있다Preferences 2 .

사용자는 프린트 옵션을 사용하기 위해 대화상자의 프린팅 대Preferences

화 페이지 를 이용하면 된다(Printing dialog page)

프린터의 출력 형식과 출력 정보를 설정하기 위해 메뉴의File Printer

매킨토시에서는 아이템을 이용하면 된다 예를 들어Setup...( Page Setup...) . ,

사용자는 이 메뉴 아이템을 이용하여 출력물의 위치와 등을 변경landscape

할 수 있다.

Page 204: Graphical Programming Labview

장 프로그램 설계 기술10 II

포스트스크립트 프린터3.1 (PostScript)

만일 사용자가 포스트스크립트 프린터를 사용한다면 다른 옵(PostScript) ,

션을 선택하지 말고 Edit Preferences Printing PostScript▶ ▶ ▶

아이템을 사용하는 것이 좋다printing .

포스트스크립트 프린터를 사용하면 다음과 같은 장점이 있다(PostScript) .

포스트스크립트 프린터는 스크린 상의 이미지를 더 정밀하게(PostScript)

재생한다.

포스트스크립트 프린터는 고해상도 그래프 기능을 가지고(PostScript)

있다.

포스트스크립트 프린터는 패턴 라인 형태(PostScript) (Pattern), (Line

폰트 등을 더 정밀하게 재생산한다style), (font) .

활성화된 윈도우 프린트하기3.2

현재 화면에 활성화되어 있는 윈도우 프론트 패널이나 블록 다이어그램 를( )

출력하기 위해서는 메뉴를 사용하면 된다 이 메뉴를 사용하Print Window... .

면 사용자는 대기 시간 없이 빠르게 출력할 수 있다 에 대해 이해하기 위해. VI

서는 를 사용하면 된다Print Document.. .

의 출력물들은 프로그램 상에서 자동으로 프린트하도록 하Print Window...

는 것과 똑같은 모습의 형식을 가지고 있다 대화상자의. VI Setup Execution

는 사용자가 프로그램 상에서 또는 를 사용하여 프린Options Print Window...

트할 경우 사용할 몇 가지 옵션을 가지고 있다.

도큐먼트4. (Documenting) VIs

이번 절에서는 도큐먼트들을 종이 파일 형식으로 프린트VI , RTF, HTML

하는 방법에 대해 설명한다 또한 그래픽 파일들의 파일 형식에 대해서도 언.

급한다.

사용자가 에 대한 자세한 내용을 출력하기 위해서는VIs Print

을Documentation... 사용하면 된다 아래의 그림과 같은. Print

Page 205: Graphical Programming Labview

부 프로그래밍2

대화상자를 사용하여 여러 가지 출력 형식을 선택할 수Documentation... VI

있으며 자신이 직접 출력 형식을 만들어 사용할 수도 있다, .

프린트 도큐먼트 대화상자는 다섯 가지의 출력 형식을 가지고 있다 개는 미. 4

리 정의되어 있는 출력 형식이고 하나는 사용자가 지정할 수 있는 형식이다, .

아래에 그 다섯 가지의 출력 형식에 대한 설명이 있다.

형식Icon, Description, Panel, and Diagram

이름그대로아이콘 설명 프론트패널 그리고블록다이어그램을프린트한다, , , .

형식Using the Panel

프론트 패널 설명 그리고 컨트롤 이름과 그 설명을 프린트한다, VI .

형식sing as a Sub VI

아이콘 커넥터 설명 터미널 데이터형 이름과 연결되어 있는 컨트롤, , VI , ( ),

에 대한 설명을 프린트한다 이 형식의 출력물은 함수 레퍼런스 형식과 비. G

슷하다.

형식Complete Documentation

아이콘 커넥터 설명 프론트 패널 프론트 패널에 있는 모든 컨트롤들에 대, , , ,

한 설명 블록 다이어그램 그리고 부 프로그램의 이름들을 프린트한다, .

형식Custom

사용자가 프린트 형식을 지정하는 것이다 버튼을 사용하여 사. Configure...

용자는 형식을 지정할 수 있는 것이다 자세한 내용은 조금 후에 설명하기로.

하겠다.

Page 206: Graphical Programming Labview

장 프로그램 설계 기술10 II

선택 상자는 사용자에게 출력물의 목적지를 선택할 수 있도록Destination

한다 사용자가 선택할 수 있는 목적지는 파일 파일 일반 텍스. HTML , RTF ,

트 파일 그리고 프린터 가지가 있으며 자세한 내용은 조금 후에 설명하기로4 ,

하겠다.

메뉴의 대화상자에는 하단에 개의 옵션이 존재한다 그Print Document 5 .

것은 Scale Front Panel to Fit, Scale Block Diagram to Fit, Print Header

[name/date/page #], Page Break between Sections, Print Section

등이며 아래에 설명이 있다Headers , .

과 항목을 선택하면Scale Front Panel Fit Scale Block Diagram to Fit

프론트 패널과 블록 다이어그램을 프린트할 때 한 페이지에 프린트할 수 있도

록 까지 축소할 수 있다1/4

항목을 선택하면 페이지의 상단에 헤더를 프린트하게 되는Print Header

데 헤더에는 페이지 번호 이름 및 의 최종 수정일 등을 포함한다, , VI VI .

항목은 아래의 항목에서 페이지 브레이크Page Breaks Between Section

를 삽입한다(Page Break)

커넥터의 아이콘과 설명(connector icon and description)

프론트 패널(front panel)

프론트 패널 컨트롤들의 리스트(list of front panel control details)

블록 다이어그램(block diagram)

블록 다이어그램에 대한 자세한 내용(block diagram details)

조직VI (VI hierarchy)

부 프로그램의 리스트(list of sub VI)

항목을 선택하면 항목별로 헤더를 프린트한다 예Print Section Header , .

를 들어 부 프로그램을 프린트하기 전에 부 프로그램의 리스트를 헤더로 프,

린트한다.

그러면 이번에는 이전에 설명을 미룬 사용자 프린트 세팅을 설명하기로 하

겠다 메뉴의 대화상자에서 항목을 선택하고. Print Document.. Custom ,

버튼을 누르면 아래의 그림과 같은 사용자 프린터 세팅 대화상자Configure...

가 활성화된다.

Page 207: Graphical Programming Labview

부 프로그래밍2

위의 대화상자는 사용자가 프린트할 수 있는 항목을 보여 주는데 위의 순,

서는 프린트되는 순서대로 항목을 보여 주고 있는 것이다.

위의 항목을 자세하게 설명해 보겠다.

Icon and Description

입력 출력과 함께 아이콘의 그림을 프린트한VI Connector and Icon : , VI

다.

설명을 프린트한다VI Description : VI .

Front Panel

프론트 패널을 프린트한다.

Controls

컨트롤과 인디케이터의 이름들을 프린트하며 배열 클러스터 또는 을, , refnum

만나면 그의 부 컨트롤을 프린트한다 또한 우측의 선택상자, . ( )

를 선택할 수도 있다.

Description

컨트롤의 이름과 그 옆에 설명을 프린트한다.

Include Data Type Information

프린터로 프린트를 한다면 컨트롤의 이름 좌측에 그 컨트롤의 터미널을 프,

린트한다 텍스트 파일로 프린트하면 설명 다음에 데이터형을 프린트한다. .

Block Diagram

Page 208: Graphical Programming Labview

장 프로그램 설계 기술10 II

블록 다이어그램을 프린트한다.

Hidden Frame

케이스 문과 시퀀스 문의 보이지 않는 프레임까지 프린트한다.

Repeat Higher Level Frames

보이지 않는 프레임을 프린트할 때 보이는 상위의 프레임을 한 번 더 프린,

트한다.

VI Hierarchy

메모리 상에 있는 현재의 조직 에 대한 설명을 주프로그램과VI (Hierarchy)

부 프로그램을 선으로 연결하여 프린트한다.

List of Sub VIs

모든 부 프로그램의 아이콘 이름 경로 등을 프린트한다, , .

VI History

현재의 에 대한 간략한 역사를 기록한다VI .

사용자가 나 를 사용하는 대신 상에서Print Document Print Window , VI

직접 프린트를 할 수 있는 방법은 아래와 같이 두 가지 방법이 있다.

가 완전히 실행한 후에 프린트를 할 수 있도록 프로그램 상에서 를 설VI VI

정할 수 있다.

서버 를 사용하여 의 도큐먼트와 프론트 패널을 프린트할VI (server) , VI

수 있다.

프로그램에서 프린트하기 위해서는 팝업 메뉴의 Operate Print at▶

명령어를 사용하면 된다 위와 같이 설정을 하면 를 완전히 실행Complete . VI

한 후에 어떠한 때라도 프론트 패널의 내용을 프린트한다 만일 이 가 서브. VI

라면 서브 를 실행하고 주프로그램으로 돌아가기 전에 프린트를 한다VI VI .

그러면 에 대하여 공부해 보자Page Layout .

나 에 있는 설정 값들을 변경하는 경우 프Edit Preferences Print Setup▶

린트 형식에 영향을 미치게 되는데 이러한 영향을 무시할 수 있는 방법은, VI

을 사용하면 된다 이 옵션Setup Execution Option . Page Layout▶

은 메뉴의 행동에도 영향을 미친다(Option) Print Window.. .

Page 209: Graphical Programming Labview

부 프로그래밍2

그림에 대해 설명을 하면,

Print Panel When VI Completes Execution

프로그램이 완전히 실행했을 경우 프린트를 할 수 있는 또 다른 방법이다.

Print Header

의 이름 최종 수정일 및 페이지의 번호가 헤더에 포함되어 출력된다VI , .

Scale to Fit

만일 프론트 패널의 크기가 한 페이지보다 크다면 축소하여 프린트할 수,

있도록 한다.

Surrounding Panel with Border

프론트 패널의 주위에 사각형 테두리를 프린트한다.

Page Margins

사방의 여백을 설정할 수 있다.

마지막으로 형식이나 형식으로 프린트하는 방법에 대해 자세RTF HTML

하게 설명해 보겠다.

사용자는 설명이나 컨트롤 등을 혹은VI RTF(Rich Text Format),

형식으로 출력할 수 있다 이것은HTML (HyperText Markup Language) .

대부분의 워드프로세서들이 형식을 사용하기 때문에 매우 유용하며RTF ,

형식은 온라인 도움말 형식의 소스로도 사용되기 때문이다 온라인 도큐RTF .

먼트를 인터넷 상에서 웹 브라우저를 통하여 보려고 한다면 형식으로, HTML

만드는 것도 도움이 된다.

형식으로 파일을 프린트하려고 한다면 사용자는 온라인 도움말 형식RTF ,

으로 할 것인지 또는 워드프로세서용으로 할 것이지를 지정해 주어야 한다, .

왜냐하면 워드프로세서는 의 그림 파일을 문서 안에 삽입하는 데 비해, RTF ,

온라인 도움말 형식은 그림 파일들을 외부의 비트맵 형식으로 만들기(.BMP)

Page 210: Graphical Programming Labview

장 프로그램 설계 기술10 II

때문이다 파일의 경우 그림 파일들을 이나. HTML , JPEG(.JPG) Portable

파일로 만들기 때문이다Network Graphics(.PNG) .

혹은 형식으로 프린트하려면 아래의 그림과 같이RTF HTML , File ▶

대화상자에서 설정을 하면 된다Print Documentation .

항목에서 이나 을 선택하면 된다Destination RTF File HTML File .

파일 형식을 선택하면 아래의 그림과 같이 두 개의 항목이 나타나는RTF ,

데 온라인 도움말 형식으로 하려면, Help compiler source(images written

를 선택하여 주면 되는데 그러면 그림 파일을 외부에 따로 저장externally) ,

하게 된다.

파일 형식을 선택하면 아래와 같은 대화상자가 나타나는데 그림HTML , ,

파일 형식을 선택할 수 있으며 컬러의 수를 선택할 수도 있다 그림 파, . JPEG

일 형식은 압축 성능이 좋아 용량은 작으나 미세한 부분의 이미지를 부분적,

으로 잃어 버릴 수도 있다 이 파일 형식은 사진용으로 많이 사용되며 항상. ,

24비트 이미지를 사용한다 형식은 형식처럼 압축 성능은 좋으. PNG JPEG

나 만큼 좋지는 않다, JPEG .

사용자 메뉴바 만들기5. (menubar)

이번 절에서는 아주 재미있는 것을 배우게 된다 부터는 메뉴. LabVIEW 5.0

를 사용자가 직접 제작할 수 있다 점점 더 범용 프로그래밍 언어의 기능에 가.

까워지고 있는 것이다 하지만 자체의 메뉴 항목을 변경하는 것이. LabVIEW

아니라 자신이 작성한 를 실행할 때 사용할 메뉴를 만드는 것이다VI .

Page 211: Graphical Programming Labview

부 프로그래밍2

메뉴를 만드는 것은 두 부분으로 나뉘어진다 그것은 메뉴 항목 만들기와.

메뉴 다루기이다.

또한 메뉴를 만드는 것도 두 가지 방식이 있다 하나는 시간에 대해 변하지.

않는 메뉴와 시간에 따라 변하는 메뉴를 만드는 것이다 시간에 따라 변하지.

않는 메뉴를 만드는 것은 우선 메뉴 에디터를 사용하여 RTM(run-time

라고 부르는 메뉴 템플릿을 만드는 것부터 시작한다 를 실행하게 되menu) . VI

면 이것이 메뉴로 로드 되며 의 블록 다이어그램 내에서 함수를 이(load) , VI G

용하여 사용자는 메뉴를 지우거나 수정 또는 삽입할 수 있다, .

모든 메뉴는 메뉴가 호출되면 처리할 루틴과 고유의 이름을 가지고 있다.

이것을 태그라고 하는데 메뉴를 선택하면 상에서 이 태그를 읽어 들일 수, VI

있도록 함수가 준비되어 있다 따라서 태그를 사용하면 블록 다이어그램 내에.

서 메뉴가 선택되면 처리할 수 있는 루틴을 만들 수 있는 것이다.

메뉴 에디터5.1 (Menu editor)

메뉴 에디터는 사용자가 파일을 만들고 편집하고 이것을 와 연RTM , , VI

결할 수 있는 기능을 제공해 준다 이 메뉴 에디터를 사용하려면. Edit ▶

를 선택하면 된다 가지 형식의 메뉴를 사용할 수 있는데Edit Menu... . 3 ,

형은 표준 메뉴를 사용할 수 있도록 하며 형은 표준 형식에Default , Minimal

서 자주 사용하지 않는 메뉴를 제거한 형태를 제공한다 형은. Custom RTM

파일을 사용할 수 있는 형태이며 형과 형은 사용자가 편집, Default Minimal

할 수 없다.

위의 그림처럼 메뉴 에디터는 메뉴의 조직을 좌측의 창에 보여 주고 우측,

에는 현재 선택된 메뉴 항목에 대한 성질 을 보여 준다 또한 상단(Property) .

Page 212: Graphical Programming Labview

장 프로그램 설계 기술10 II

의 항에는 현재의 메뉴를 미리 보여 준다 첫 번째 툴바의 아이콘을Preview .

이용하여 새로운 메뉴 항목을 삽입하거나 메뉴의 를 사용하여 삽Edit insert

입 할 수 있다.

우측의 메뉴 성질 항목 중의 에는Item Type User Item, Application

등 세 가지의 항목이 있다Item, Separator .

User Item

블록 다이어그램 내에서 프로그램적으로 메뉴를 처리할 수 있다 또한 메뉴.

의 이름을 항목에 넣을 수 있으며 각 메뉴에 대해 를Item Name , Item Tag

설정해 주는데 이 태그는 메뉴마다 모두 달라야 한다는 것을 명심해야 한다, .

또한 그 아래의 두 선택 항목에는 과 항이 있는데 메뉴 항목Enable Checked ,

이 사용자가 선택할 수 있는 상태 혹은 사용자가 선택할 수 없는 상(Enable),

태 로 나타날지를 지정해 주는 부분이다 또한 프로그램의 메뉴에는(Disable) .

사용자가 메뉴를 빠르게 선택할 수 있도록 가속키 또는 단축키 라는 것이 있( )

는데 마지막 항목에 사용자가 이 가속키를 지정해 줄 수 있다, .

Application

에서 제공해 주는 일반적인 것으로 이 형태를 선택하면 일반적인LabVIEW ,

메뉴 에디터의 대화상자가 나오는데 태그를 보여 주거나 속성을 보여 주지는,

않는다 따라서 사용자가 메뉴를 변경하거나 수정할 수 없다 하지만 일반적인. .

태그의 명칭은 로 시작하므로 사용자가 이 태그를 받아서 처리할 수는APP_

있다 이 장의 마지막 절에 이 태그들의 리스트들을 참조할 수 있다. .

Separator

메뉴 대신에 메뉴 항목을 분리하는 선을 만드는 것이며 를 선택, Separator

하면 속성을 사용자가 설정할 수 없다.

사용자는 메뉴 에디터에서 툴바의 화살표 모양의 툴을 이용하여 메뉴의 위

치를 변경하거나 메뉴를 이용하거나 단순히 드래그 앤 드롭, Edit , (Drag and

기능으로 그 위치를 변경할 수 있다 또한 우측의 메뉴 트리형 조직표Drop) .

에서는 부 메뉴가 있다는 도형을 클릭하거나 메뉴를 사용하여 트리를 보, Edit

기 좋게 전개할 수 있다.

또한 메뉴를 사용하여 파일을 읽어 들이거나 저장할 수 있으며File RTF ,

메뉴의 그리고 메뉴를 이용하여 메뉴Edit Cut, Copy, Paste, Insert Delete

를 편집할 수 있다 메뉴 에디터의 사용 도중 컨트롤에 대한 도움말을 이용하.

Page 213: Graphical Programming Labview

부 프로그래밍2

려면 메뉴를 이용하거나 의문이 있는 컨트롤 상에 마우Help Show Help ,▶

스를 위치시키면 된다.

그러면 메뉴 에디터의 메뉴에 대한 자세한 설명을 해 보겠다.

우선 메뉴는 아래와 같은 부 메뉴가 있다File .

Open

기존에 만들어진 파일을 연다 파일을 열면 자동적으로RTF . RTF Custom

형으로 선택된다

New

기존에 작업하던 파일이 있다면 이것을 저장할지를 묻고 새로운RTF , RTF

파일을 만든다.

Save

현재의 를 저장한다RTF .

Save as

다른 이름을 사용하여 현재의 메뉴를 로 저장한다RTF .

Close

메뉴 에디터를 끝낸다.

메뉴에는 아래와 같은 부 메뉴가 있다Edit .

Cut

현재 선택된 메뉴 항목을 지우고 이것을 클립보드로 복사한다.

Page 214: Graphical Programming Labview

장 프로그램 설계 기술10 II

Copy

현재 선택된 메뉴 항목을 클립보드로 복사한다.

Copy Entire Menu

전체 메뉴를 클립보드로 복사한다.

Paste

클립보드에 있는 내용을 메뉴 항목으로 붙인다.

Collapse/Expand

현재 선택된 부 메뉴 항목을 전개하거나 접는다.

Collapse All

모든 부 메뉴를 접는다.

Expand All

모든 부 메뉴를 전개한다.

Insert User Item

선택된 메뉴에 새로운 메뉴를 삽입한다.

Insert Separator

분리선을 삽입한다.

Insert Application Item

메뉴 아이템에서 메뉴를 가져와 삽입한다Application .

Delete Item

메뉴 항목을 지운다.

Make Super Item

부 메뉴를 가지는 최상단 메뉴를 만든다.

Make Sub Item

부 메뉴를 만든다.

Move Item Up

현재 선택된 메뉴 항목을 위로 옮긴다.

Move Item Down

현재 선택된 메뉴 항목을 아래로 옮긴다.

Page 215: Graphical Programming Labview

부 프로그래밍2

메뉴 에디터의 툴바의 기능에 대해 설명해 보겠다.

사용자 메뉴 항목을 삽입한다

선택된 메뉴 항목을 지운다.

현재 선택된 부 메뉴 항목을 주 메뉴 항목으로 만든다.

현재의 메뉴 항목을 부 메뉴 항목으로 만든다.

선택된 메뉴 항목을 위로 옮긴다.

선택된 메뉴 항목을 아래로 옮긴다.

이번에는 다음 절에서 기술할 메뉴 선택과 핸들링 함수를 설명하기 전에

과 함수에 대해 설명해 보겠다Get Menu Selection Enable Menu Tracking .

메뉴를 조작하기 위해 사용하는 함수들은 대부분 을 이용한다refnum .

우리는 을 파일 처리 함수와 함께 배운 적이 있다 파일을 열면 이 파refnum .

일을 닫을 때까지 이라는 파일 고유의 핸들링 이름이 발생되는데 우리refnum ,

는 이것을 파일 이름 대신 사용하여 파일 처리를 수월하게 수행했었다 이번에.

는 의 개념을 메뉴에 대해 적용한다 상에서 메뉴 항목을 선택하면refnum . VI

고유의 이 발생하는데 파일과 마찬가지로 이것을 이용하여 선택된 메뉴refnum ,

의 종류에 따라 를 진행시키는 것이다 위의 그림은 메뉴로서VI . Current VI's

이것으로부터 블록 다이어그램 내에서 메뉴의 을 발생시키는 것이다refnum .

사용자가 메뉴를 선택하면 함수가 이 항목을 읽을 때, Get Menu Selection

까지 다른 메뉴를 선택할 수가 없다 하지만 일단 메뉴 항목을 읽으면 이 항. ,

목에 대한 처리가 끝나지 않아도 다른 메뉴를 선택할 수 있다 그러나 이런 일.

은 선택된 메뉴의 처리를 하는 동안에는 일어나지 않을 것이다 위와 같은 상.

황에서 사용자는 함수를 사용하여 다음과 같이 연결Enable Menu Tracking

하면 프로세스를 처리한 후에 메뉴를 사용 가능한 상태로 바꿀 수 있다.

Page 216: Graphical Programming Labview

장 프로그램 설계 기술10 II

메뉴 선택 핸들링 함수5.2

아래와 같은 메뉴 선택 핸들링 함수가 지원된다.

함수는 선택된 메뉴 항목의 태그를 동안Get Menu Selection ms timeout

지연하면서 반환한다 반환값 중의 는 함수의 메뉴 조직 중의 항목. item path

의 위치에 대한 설명을 문자열로 반환하며 콜론 으로 분리된 메뉴 태그의, (:)

리스트 형태를 하고 있다 만일 터미널이 로 설정되어 있다. block menu True

면 메뉴 항목을 읽은 후에 메뉴의 선택이 블록 아웃 모드로 전환, (block out)

된다.

함수는 메뉴의 선택을 위한 메뉴의 탐색을 가능Enable Menu Tracking

또는 불가능의 형태로 전환한다.

Page 217: Graphical Programming Labview

부 프로그래밍2

다이내믹 메뉴 함수5.3 (Dynamic Menu Function)

를 실행하고 있는 동안에도 사용자는 메뉴 관리 함수를 사용하여 메뉴 항VI

목을 조작할 수 있다. Insert Menu Item, Delete Menu Items, Get Menu

등이 그 함수들Item Info, Set Menu Item Info, Get Menu Shortcut Info

이며 이 함수들은 팔레트에 있으며 이, Functions Application Control ,▶

함수들은 을 사용하여 조작된다 은 를 이refnum . refnum constant current VI

용하여 발생시킬 수 있다.

함수는 부 메뉴나 주 메뉴를 삽입하는 데 사용한다Insert Menu Item .

는 메뉴가 삽입될 부 메뉴를 지정해야 하며 를 지정하지menu tag , menu tag

않으면 메뉴 항목은 내의 주 메뉴가 된다 와, menubar . Item names item tag

는 삽입될 항목의 이름과 태그를 지정한다 만일 하나 이상의 메뉴 항목을 삽.

입한다면 이 두 터미널은 배열의 형태가 되며 하나의 메뉴만을 삽입한다면,

단지 문자열이 된다 만일 태그와 이름이 같다면 하나의 문자열을 동시에 두.

터미널에 연결할 수 있다 은 아이템이 삽입될 위치를 지정하는 단. After item

자인데 기존 메뉴의 태그나 위치 을 기준으로 하는 정수 를 지정할 수 있다, (0 ) .

제일 첫 번째 위치에 메뉴를 삽입하려면 보다 작은 수를 연결하면 된다 마0 .

찬가지로 마지막에 메뉴를 삽입하려 한다면 기존 메뉴의 수를 넣어 주면 된,

다 단자에는 실제로 할당된 태그를 반환하며 나. Item tag out , menu tag

을 연결하지 않았다면 에러를 발생시킨다after item .

아래의 예는 개의 주메뉴 과 그리고 부 메뉴인2 , File Edit, Test 1, Test2,

을 상에 생성하는 예이다Test3 VI .

Page 218: Graphical Programming Labview

장 프로그램 설계 기술10 II

함수는 메뉴 항목을 지우는 데 사용한다 가Insert Menu Item . menu tag

지정되어 있다면 지정된 메뉴의 부 메뉴를 지우고 그렇지 않다면 주메뉴를,

지운다 나 하나 이상의 단자를 지정하지 않으면 에러를 발생시킨. menu tag

다.

함수는 지정한 메뉴의 속성을 반환한다 반환하는 속Get Menu Item Info .

성은 이름 의 이름을 문자열로 반환 사용 불가능 상태일 경우(menu ), enable(

에는 가능일 경우에는 를 출력하는 불 단자 메뉴 항목False, True ), checked(

에 체크 표시가 있으면 없으면 를 반환하는 불 단자True, False ), shortcut

단축키 등 이다( ) .

Page 219: Graphical Programming Labview

부 프로그래밍2

함수는 위의 와 반대로 속성을Set Menu Item Info Get Menu Item Info

지정하는 데 사용된다 따라서 입력과 출력이 함수와는. Get Menu Item Info

반대라는 것을 알 수 있을 것이다.

함수는 지정한 단축키 로 사용 가능한Get Menu Shortcut Info (short cut)

메뉴 항목을 반환한다 는 콜론 으로 분리된 메뉴 아이템 태그를. Item path (:)

문자열로 반환한다 은 문자열 키 과 불 값 시프트키를 사용하는지. short cut ( ) (

안 하는지를 지정 으로 구성된다) .

애플리케이션 아이템 태그5.4 (Application Item Tags)

사용자는 아래의 애플리케이션 아이템 태그를 이용하여 애플리케이션 아이

템을 삽입할 수 있다.

Application Item Item Tagꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏ ꠏꠏꠏꠏꠏꠏꠏFile APP_FILE

New APP_NEW

Open... APP_OPEN

Close APP_CLOSE

Save APP_SAVE

Save As... APP_SAVEAS

Save A Copy As... APP_SAVE_A_COPY_AS

Save with Options... APP_SAVE_WITH_OPTIONS

Printer Setup... APP_PRINTER_SETUP

Print Documentation... APP_PRINT_DOCUMENTATION

Print Window... APP_PRINT_WINDOW

Edit VI Library... APP_EDIT_VI_LIBRARY

Edit Template... APP_EDIT_TEMPLATE

Mass Compile... APP_MASS_COMPILE

Convert CVI FP File... APP_CONVERT_CVI

Exit APP_EXIT

Edit APP_EDIT

Undo APP_UNDO

Redo APP_REDO

Cut APP_CUT

Page 220: Graphical Programming Labview

장 프로그램 설계 기술10 II

Copy APP_COPY

Paste APP_PASTE

Clear APP_CLEAR

Import Picture from File... APP_IMPORT_PICT_FROM_FILE

Preferences... APP_PREFERENCES

User Name... APP_USER_NAME

Clear Password Cache APP_CLEAR_PASSWORD_CACHE

Select Palette Set APP_SELECT_PALETTE_SET

Edit Control & Function Palettes... APP_EDIT_PALETTES

Operate APP_OPERATE

Stop APP_STOP

Print at Completion APP_PRINT_AT_COMPLETION

Log at Completion APP_LOG_AT_COMPLETION

Data Logging APP_DATA_LOGGING

Log... APP_LOG

Retrieve... APP_RETRIEVE

Purge Data... APP_PURGE_DATA

Change Log File Binding... APP_CHANGE_LOG_BINDING

Clear Log File Binding APP_CLEAR_LOG_BINDING

Suspend when Called APP_SUSPEND_WHEN_CALLED

Reinitialize All to Default APP_REINIT_ALL_TO_DEFAULT

Project APP_PROJECT

User Project VIs * APP_USER_PROJECT_VIS

Show VI Hierarchy APP_SHOW_VI_HIER

This VI's Callers APP_THIS_VIS_CALLERS

This VI's SubVIs APP_THIS_VIS_SUBVIS

Unopened SubVIs APP_UNOPENED_SUBVIS

Unopened Type Defs APP_UNOPENED_TYPEDEFS

Find... APP_FIND

Show Search Results APP_SHOW_SRCH_RSLTS

Find Next APP_FIND_NEXT

Find Previous APP_FIND_PREV

Show Profile Window APP_SHOW_PROFILE_WINDOW

Compare VIs... APP_COMPARE_VIS

Show Differences APP_SHOW_DIFFERENCES

Export Strings... APP_EXPORT_STRINGS

Import Strings... APP_IMPORT_STRINGS

Windows APP_WINDOWS

Show Panel APP_SHOW_PANEL_DIAGRAM

Show VI Info... APP_SHOW_VI_INFO

Show History APP_SHOW_HISTORY

Show Functions Palette APP_SHOW_CTRLS_FCTNS

Show Tools Palette APP_SHOW_TOOLS

Show Clipboard APP_SHOW_CLIPBOARD

Page 221: Graphical Programming Labview

부 프로그래밍2

Show Error List APP_SHOW_ERRORS

Tile Left and Right APP_TILE_LEFT_RIGHT

Tile Up and Down APP_TILE_UP_DOWN

Full Size APP_FULL_SIZE

Open Windows * APP_OPEN_WINDOWS

Help APP_HELP

Show Help APP_SHOW_HELP

Lock Help APP_LOCK_HELP

Simple Help APP_SIMPLE_HELP

Online Reference... APP_ONLINE_REF

Online Help for VI APP_ONLINE_HELP_FOR_VI

Help Files * APP_HELP_FILES

About LabVIEW... APP_ABOUT

사용자는 메뉴 기능을 사용하기 위해 의 메뉴 컨트롤을 사용할 수도 있다ActiveX .

6. 사용자 환경 다루기(Customizing your Environment)

이번 절에서는 프린팅 디스플레이 또는 컨트롤과 함수 팔레트와 같, , undo

은 사용자 환경을 메뉴를 이용하여 변경하는 방법에 대해 배울Preferences

수 있을 것이다.

설정하기6.1 Preferences

메뉴를 이용하면 대화상자가 나오게 되File Preferences Preferences▶

는데 그 상단에 어떤 항목을 설정할 것인지 선택할 수 있는 선택 상자가 있,

다 사용자는 설정하고 싶은 항목을 선택하여 다양한 방법으로 자신에게 맞는.

설정을 수행할 수 있다 그러면 이제부터 가지 선택 항목에 대해 자세하게. 14

공부해 보도록 하겠다.

설정하기1. path

사용자가 를 찾으려고 할 때 라이브러리를 찾으려고 할 때 파일들의 경VI ,

로를 설정하여 주는 것으로 대화상자에서 를 선택하면 아, Preferences Paths

래와 같은 대화상자가 활성화된다.

Tip

Page 222: Graphical Programming Labview

장 프로그램 설계 기술10 II

패스 에는 어떠한 파일의 경로를 설정할 것인지 선택하는 선택Preferences

상자가 또 나타나게 되는데 아래의 그림과 같은 선택 항목들을 담고 있다,

대화상자는 최초로 활성화되었을 때 많은 항목들이 사용하지Preferences

못하는 상태로 회색 나타나게 되는데 이것은 선택상자의 우측에 있는( ) , Use

체크 항목을 체크했기 때문이다 사용자가 직접 설정을 하려면default . Use

체크 항목을 체크하지 않으면 사용자가 선택할 수 있는 상태로 변하default ,

게 된다.

가지의 디렉토리를 설정하기 위해서 사용자는 어떠한 디렉토리를 설정할5

것인지 선택하고 직접 경로를 넣어 주던가 버튼을 이용하여 자신의Browse...

경로를 인식시켜 주면 된다 아래 그림에 그 예가 있는데 라고 쓰. , new value

인 부분에 경로를 넣어 주면 된다

c u r r e n tp a t h new value

Page 223: Graphical Programming Labview

부 프로그래밍2

디렉토리는 라이브러리 즉 파일의 경로를 인식시켜 주면 되Library .vi .lib

는 것이고 디렉토리는 임시 파일을 위한 경로를 지정하면 된다, Temporary .

디렉토리는 상의 파일 대화상자가 활성화될 때 나오는 디Default LabVIEW

렉토리를 지정하는 것인데 의, Function File I/O File Constants▶ ▶

함수의 반환값과도 동일하다 디렉토리는 컨트롤Default Directory . Menus

또는 함수 팔레트의 메뉴 파일을 담고 있는 경로인데 이것은 라이브러리 디,

렉토리로 미리 설정되어 있다 경로는 프로그램의 부 프로그램이. VI Search

나 컨트롤 등이 있어야 할 위치에 있지 않을 경우에 한에 파일을 찾는 경로이

다.

설정하기2. Performance and Disk

를 사용하는 도중에 임시 파일 을 사용하는 경LabVIEW (Temporary file)

우가 있다 예를 들면 사용자가 를 저장하려고 할 때 에서는 이. , VI , LabVIEW

것을 일단 임시 파일로 저장하고 완전하게 저장이 되면 정식 이름을 가진, VI

로 저장을 한다 따라서 여분의 디스크 공간을 더 사용하는데 이러한 문제를. ,

해결하려면 를 시작할 때 여분의 디스크 공간에 대해 확인을 해야LabVIEW ,

한다 만일 사용자가. 500 이하의 디스크 여유를 가지고 있다면KB LabVIEW

는 시작할 때 경고를 하고 시작을 중지한다 또한 만일 사용자가. 2 이하의MB

여분을 가지고 있다면 는 사용자에게 경고는 하지만 를LabVIEW LabVIEW

시작한다 이러한 것은 사용자가 프레퍼런스에서 설. Performance and Disk

정을 하면 되는데 다음에 그 대화상자의 모습이 있다 대화상자 안의 체크 항, .

목은 플랫폼에 따라 다르다.

Page 224: Graphical Programming Labview

장 프로그램 설계 기술10 II

대화상자 안의 체크 항목에 대해 설명하면

Deallocate memory as soon as possible이 항목을 체크하면 를 실행한 후에 메모리에서 제거한다 따라서 부 프VI .

로그램들은 실행 후 즉시 메모리에서 제거되므로 메모리 사용의 효율성을

높일 수 있으나 빈번한 메모리의 사용은 메모리 내의 공간이 많이 조각나,

기 때문에 성능 면에서는 오히려 저하되는 특징이 있다.

User default이 항목은 내의 시간에 관한 함수들이 모두 윈도우즈에서 제LabVIEW

공하는 타이머를 사용한다는 것이다 이 타이머의 해상도는. 55 이다 따ms .

라서 등의 함수들Tick Counter, Wait, Wait Until Next ms Multiple VIs

은 55 의 해상도를 가진다는 것이다 하지만 이 항목을 체크하지 않는다ms .

면 즉 윈도우즈 내의 타이머를 사용하지 않는다면 사용자가 를 이, DAQ VI

용할 때 보다 높은 정밀도를 가질 수 있다 이것은 들이 보드. DAQ VI DAQ

내에 있는 보다 정밀한 타이머를 사용하기 때문이다 따라서 사용자가.

를 사용할 때는 이 항목을 체크하지 않는 것이 유리하다DAQ VI .

Check available disk space during launch이것은 임시 파일을 사용하기 위해 최소한의 디스크 여유를 LabVIEW

시작 시에 사용할 것인지 아닌지를 판단하기 위해서 사용한다 두 가지 항.

목이 있다 하나는. 500 이하에서 경고를 할 것인지KB , 2000 에서 경MB

고를 할 것인지를 사용자가 원하는 대로 체크하면 된다.

Run with multiple threads이것은 사용자가 멀티스레드를 지원하는 환경에서 멀티스레드를 사OS

용할 것인지 아닌지를 체크하는 것이다 만일 이것을 체크하지 않는다면.

사용자는 하나의 스레드를 사용하는 것으로 인식하고 를 실행했을 때 발VI

Page 225: Graphical Programming Labview

부 프로그래밍2

생하는 사용자 인터페이스와의 대화 등이 하나의 스레드를 이용하여 실행

된다.

설정하기3. Front Panel

대화상자가 아래의 그림에 있다Front Panel Preferences

체크 항목에 대해 자세하게 설명해 보겠다.

Open the control editor with double click프론트 패널 상의 컨트롤이나 인디케이터들을 편집할 수 있는 컨트롤 에

디터 윈도우를 컨트롤이나 인디케이터를 더블 클릭하여 사용할 수 있다-

End text entry with Return key (same as Enter key)이 항목을 체크하면 사용자는 키보드 상의 키를 키보드의, <return> 101

숫자 키와 함께 있는 키처럼 사용할 수 있다 예를 들어 사용자는 윈<enter> .

도우즈 환경에서 키를 누름으로 해서 새로운 라인을 만들 수 있<ctrl-enter)

다 매킨토시.( <option-return>, Sun <meta-return>, HP-UX

<alt-return>)

Override system default function key setting사용자가 가지고 있는 키보드에는 펑션 키라는 것이 있다 이것은 사용.

에 의해 그 기능이 미리 정해져 있는데 예를 들면 상에서 키는OS , , PC F10

키와 같은 기능을 한다 하지만 이 항목을 체크하면 펑션키는<break> . , OS

가 정해 놓은 기능을 수행하는 것이 아니라 에서 정해 놓은 기능LabVIEW

을 수행한다.

Use localized decimal point진 정수를 사용하는 경우 일반적으로 데시멀 포인트라는 것을 사용한10 ,

다 예를 들어 은 으로 표현하는 것이다 하지만 이 항목을 체크. 1000 1,000 .

하면 는 시스템에서 설정한 대로 사용하며 마침표를 사용하려면LabVIEW ,

Page 226: Graphical Programming Labview

장 프로그램 설계 기술10 II

이 항목을 체크하지 않으면 된다.

Use smooth updates during drawing만일 사용자가 그래프를 사용한다고 하자 도중에 그래프가 너무 작아서.

조금 크게 하거나 또는 작게 하면 화면이 깜박거리면서 화면에서 그래프가

지워지는 일을 본 경험이 있을 것이다 하지만 이 항목을 체크하면.

는 스크린 버퍼를 사용하며 데이터를 이 버퍼에 복사하고 그래프LabVIEW

를 다시 그린 다음 다시 버퍼의 내용을 그래프로 그린다 따라서 화면을 지.

우면서 발생하는 깜박거림은 없으며 그래프가 아주 부드럽게 다시 나타난,

다 하지만 스크린 버퍼가 차지하는 메모리가 있기 때문에 성능은 조금 저. ,

하된다.

Use transparent name labels의 컨트롤이나 인디케이터 등은 모두 이름표 를 가지고LabVIEW (Label)

있다 이것은 조금 두꺼운 이름표를 가지고 있기 때문에 취향에 맞지 않는.

점도 있다 하지만 이 항목을 선택하면 투명한 이름표를 사용하여 이름 자.

체만을 표시하여 준다.

Blink speed프론트 패널 상의 모든 컨트롤들은 모두 깜박임 속도를 가지고 있다 이.

것은 고정치 로(default) 1,000 이며 사용자가 이 값을 사용한다면 우측ms

의 를 체크하면 된다 깜박임은 또한 속성 노드 중의 하나이며Use default . ,

이것을 참고하려면 장을 보면 된다8 .

설정하기4. Block Diagram

대화상자에서 을 선택하면 아래와 같은 대화Preferences Block Diagram

상자를 볼 수 있을 것이다.

Page 227: Graphical Programming Labview

부 프로그래밍2

체크 항목에 대해 설명하면,

Page 228: Graphical Programming Labview

장 프로그램 설계 기술10 II

Show dots at wire junctions이 항목은 와이어들이 서로 교차하는 점에서 점 을 표시하므로 사용(dot)

자가 보기에 매우 편리하게 해준다.

Show tip-strips over terminals사용자가 블록 다이어그램의 함수 또는 부 프로그램의 터미널에 마우스

커서를 위치시키면 변수의 이름을 보여 준다 이것을 팁 스트립이라 한다. .

Use control caption for sub-VI tip-strips항목은 도움말이나 팁 스트립을 보여 주는 대신 컨트롤의 이름을 보여

준다.

Show wiring guides위의 항목도 위와 마찬가지로 팁 스트립을 보여 줄 때 변수의 형과 방향

등을 자세하게 보여 준다.

Show sub VI names when dropped사용자가 부 프로그램을 마우스로 지적하면 부 프로그램의 이름을 보여

준다.

Use transparent name labels이름을 보여 주는데 투명한 이름표를 자긴 이름을 보여 준다, .

Use Window Title in function palette함수 팔레트에서 의 팔레트 이름을 보여 줄 때 의 이름 대신 의VI , VI VI

윈도우 타이틀을 보여 준다.

Maximum undo steps per VIs부터는 사용자가 한 행위를 다시 없애기 위한 기능LabVIEW 5.0 Undo

이 추가되었다 는 기본적으로 번의 스텝을 기억하고 있. LabVIEW 8 Undo

는데 이 값을 사용하지 않고 사용자가 직접 이 값을 지정할 수 있다 하지, .

만 스텝을 많이 사용하면 메모리를 많이 사용하므로 조심스럽게 값Undo

을 선택해야 한다 에 대해 자세한 설명은 다음 절에서 설명한다. Undo .

설정하기5. Debugging

디버깅 대화상자가 다음의 그림에 있다Preferences .

Page 229: Graphical Programming Labview

부 프로그래밍2

체크 항목에 대해 설명하면,

Show data bubbles during execution highlighting디버깅을 할 때 와이어를 통한 데이터의 흐름을 물방울의 흐름으로 나타

낸다 따라서 이 항목을 체크하지 않으면 데이터의 흐름을 표시하지 않으므.

로 조금 더 빠른 디버깅을 할 수 있다.

Auto probe during execution highlighting자동으로 프로브 기능이 되므로 와이어를 지나가는 데이터를 볼 수 있다.

Show warning in error box by default실행시키려고 할 때 에러뿐만 아니라 경고 까지 표시한다(warning) .

Warn about objects unavailable in the student edition를 체크하면 이 항목을 체크할 수Show warning in error box default

있는데 이것은 경고 뿐만 아니라 학생용 판에서 사용하지 않는, (warning) ,

객체에 대한 경고까지 보여 준다.

설정하기6. Colors

프레퍼런스 대화상자의 모습은 아래의 그림과 같다Colors .

Page 230: Graphical Programming Labview

장 프로그램 설계 기술10 II

위의 대화상자는 상의 다양한 항목에 대한 색상을 결정할 수 있LabVIEW

다 만일 사용자가 항목을 체크한다면 항목들을 설정할 수 없다. Use Default .

각 항목에 대해 설명하면,

Front Panel프론트 패널의 색상을 변경한다

Block Diagram블록 다이어그램의 색상을 변경한다

Scrollbar스크롤 바의 색상을 변경한다

Menu Text메뉴 텍스트의 색상을 변경한다

Menu Background메뉴 판의 색상을 변경한다.

Blink Foreground속성 노드를 이용하여 깜박임을 설정한 객체에 대해 깜박임 전경색을 설

정한다.

Blink Background깜박임 배경색을 설정한다.

Use default colors에서 미리 지정한 색을 사용한다LabVIEW .

설정하기7. Fonts

대화상자는 가지 항목에 대한 글꼴 형태를 지정한다 애플리케이션Fonts 3 .

글꼴 시스템 글꼴 대화상자 글꼴 등이 그것이며 애플리케이션 글꼴을 설정, , ,

하는 대화상자가 아래의 그림에 있다.

Page 231: Graphical Programming Labview

부 프로그래밍2

글꼴은 가지 형식으로 사용할 수 있으며 글꼴은 플랫폼에 따3 , Use default

라 에서 지정한 글꼴을 사용하는 것이며 글꼴은 사용자가LabVIEW , Custom

사용할 글꼴을 지정하는 것이며 우측의 이라는 버튼이 활성화된, Font Style...

다 이 버튼을 사용하면 글꼴을 지정할 수 있는 것이다. .

설정하기8. Printing

아래의 그림에는 프린팅 프레퍼런스 대화상자가 있으며 플랫폼에 따라 다,

르다는 것을 명심하기 바란다.

각 항목에 대해 설명하면,

Standard printing이 항목을 체크하면 표준 형식으로 프론트 패널 블록 다이어그램 아이, , ,

콘 등을 프린트한다 만일 사용자가 프린트를 파일로 하고 싶거나 사용자의. (

프린터가 파일로 프린트하는 기능을 가지고 있다는 가정 아래 프린터가),

포스트스크립트 형식을 지원하지 않거나 할 때는 이 항목을 사용하면 된다.

Allow printer dithering프린터가 디더링을 사용할 수 있도록 지정하는 것이다 이 항목은 프린터.

종류에 관계없이 사용할 수 있으며 흑백 프린터의 경우에는 디더링을 사용,

하여 이미지에 그레이 스케일을 추가하는 역할을 한다.

PostScript print프린트할 데이터를 포스트스크립트 형태로 변환한 후 이것을 프린(.ps)

터로 전송한다 포스트스크립트 프린터나 드라이버를 가지고 있다면 출력. ,

물은 그래픽 이미지가 된다.

Page 232: Graphical Programming Labview

장 프로그램 설계 기술10 II

PostScript level 2사용자의 프린터가 등급 의 포스트스크립트을 지원한다면 이 항목을 체2 ,

크하여 에게 알려 주어야 한다LabVIEW .

Bitmap printing이 항목을 체크하면 프린터할 데이터를 비트맵으로 변환하여 출력하는데,

이 방법은 프린트 시간이 오래 걸리기는 하지만 보다 정밀한 프린트를 할

수 있다.

Color/Gray scale printing이 항목은 8 컬러 그레이 출력을 한다 프린터 드라BPP(bit per pixel) / .

이버에 설정된 값들은 무시된다.

Margins프린터를 사용할 때 상하좌우의 여백을 얼마만큼 사용할 것인지에 대한

설정값을 지정한다.

설정하기9. History

사용자가 만든 모든 들은 자신이 만들어진 과정을 기억하고 있다VI .

프레퍼런스 대화상자를 사용하여 새로운 에 대한 히스토리 윈도우History VI

를 설정한다.

대화상자에 있는 체크 항목은 크게 가지로 나뉘어진다 첫 번째 그룹은 다2 .

섯 가지 항목이 있는데 언제 어떻게 히스토리 윈도우에 과정을 기록하는지에

관한 것이고 두 번째 그룹은 가지 항목이 있는데 로그를 어떻게 하는지에, 3

관한 것이다

히스토리에 관한 각 의 설정은 대화상자를VI VI Setup > Documentation

이용하면 된다.

Page 233: Graphical Programming Labview

부 프로그래밍2

대화상자에 있는 체크 항목에 대한 자세한 설명은,

Add an entry time VI is saved가 저장될 때마다 히스토리 엔트리를 추가한다VI .

Prompt for comment when VI is saved가 저장될 때 히스토리가 변경되었다는 것을 알리기 위해 히스토리 대VI

화상자를 활성화시킨다.

Prompt for comment when VI is closed를 닫을 때마다 히스토리가 변경되었다는 것을 알리기 위해 히스토리VI

대화상자를 활성화시킨다.

Record comments generated by the editor작성 중에 발생하는 사건에 대해 에디터를 통하여 기록한다VI .

Show revision number in titlebar히스토리 윈도우의 헤더 타이틀에 리비젼 번호를 삽입하여 보여 준다 리.

비젼 번호는 부터 시작하며 를 저장할 때마다 씩 증가한다0 , VI 1 .

로그인 항목은 아래와 같다.

Login automatically with the registration name등록 이름을 이용하여 자동으로 로그인 한다.

Login automatically with the system user name사용자 이름이 정의되어 있다고 가정하고 현재의 사용자 이름 대신 시스,

템 사용자 이름을 사용할 수 있다.

Show the login prompt at startup time를 시작할 때마다 로그인 할 수 있는 로그인 프롬프트를 보여LabVIEW

준다.

설정하기10. Time and Date

시간과 날짜에 대한 프레퍼런스 대화상자는 다음의 그림과 같다.

이 대화상자를 이용하여 사용자는 시간과 날짜에 대한 표시 형식을 지정할

수 있다 그러나 개개의 컨트롤이나 인디케이터는 이 설정값을 무시하고 자신.

만의 표시 형식을 지정할 수 있다.

Page 234: Graphical Programming Labview

장 프로그램 설계 기술10 II

각 체크 항목에 대한 설명을 하면,

Default date format이 항목에는 날짜에 대한 가지 표시 형식이 있는데 연도 날짜 월을 어3 , ,

떻게 배치하는가에 따라 서로 다르다.

default time format이 항목은 시간의 표시 항목에 관한 것인데 시간 표시 형식인지 시12 , 24

간 표시 형식인지를 선택할 수 있다.

Date Separator날짜를 나타내는 데 사용하는 분리선을 어떤 문자로 사용할 것인지에 대

한 설정이다.

Time Separator시간을 표시하기 위한 분리선을 설정하는 것이다.

설정하기11. Miscellaneous

대화상자의 모습은 아래의 그림과 같다Miscellaneous Preferences .

각 항목에 대한 설명을 하면,

Page 235: Graphical Programming Labview

부 프로그래밍2

Use Native file dialog파일의 형식을 에 따라 서로 다른 일반적인 파일 대화상자를 사용한OS

다 일반적으로 는 에 정의된 파일 대화상자에 몇 가지 기능을. LabVIEW OS

추가하여 사용하고 있다.

Allow drop-through clicks한 번의 마우스 클릭으로 윈도우를 활성화시킬 수 있다.

Use hot menus메뉴를 사용하려면 마우스의 왼쪽 버튼을 누른 상태에서만 메뉴를 선택

할 수 있다 하지만 이 인간공학적인 기능을 이용하여 사용자는 손의 변형.

없이 메뉴를 선택할 수 있다 즉 마우스의 왼쪽 버튼을 누르지 않아도 메뉴. ,

를 선택할 수 있는 것이다.

Show auto-constant labels컨트롤이나 인디케이터를 생성할 때 자동으로 이름표를 만든다 이름은.

컨트롤이나 인디케이터의 이름을 그대로 사용하므로 사용자는 이름을 변경,

하여 사용하면 된다.

Open VIs in Run mode를 열 때 편집 모드가 아닌 실행 모드로 열린다VI .

Skip navigation dialog on launch를 실행하면 아래의 그림처럼 대화상자가 나타나는데 이 항목LabVIEW ,

을 체크하면 이 대화상자를 표시하지 않고 바로 를 시작한다LabVIEW .

설정하기12. Server : Configuration

대화상자의 형태는 다음 그림과 같Server : Configuration Preferences

다.

Page 236: Graphical Programming Labview

장 프로그램 설계 기술10 II

이 대화상자를 이용하여 사용자는 다른 애플리케이션과의 통신 프로토콜을

선택할 수 있다 만일 사용자가 프로토콜을 선택하면 다른 애플리케. TCP/IP ,

이션이 서버에 접속할 수 있도록 포트 번호를 입력해야 한다.

대화상자를 이용하여 다른 애플리케이션이 서Server : Configuration VI

버에 접근하여 아래의 세 가지 서버 자원을 사용할 수 있도록 설정할 수 있다.

Allow VI Calls이 항목을 체크하면 다른 애플리케이션에게 서버를 통하여 를 호출할, VI

수 있도록 할 수 있다.

Allow VI Methods and Properties다른 애플리케이션이 서버를 통하여 를 읽고 그 속성을 설정할 수 있도VI

록 한다.

Allow Application Methods and Properties다른 애플리케이션이 를 읽고 속성을 변경할 수 있도록 한다VI .

고정치 로 프로토콜은 를 설정하고 를 가능하도록(default) ActiveX VI Calls

설정되어 있다.

설정하기13. Server : TCP/IP Access

프로토콜은 인터넷 프로토콜이다 즉 인터넷을 사용하여 서버를 이TCP/IP .

용한다는 이야기이다 따라서 인터넷을 사용하려면 꼭 설정해 주어야 하는 것.

이 있다 그것은 어떠한 인터넷 호스트를 사용하여 접근할 것인지를 설정해.

주어야 하는 것이다.

아래의 그림에는 서버 접근 프레퍼런스 대화상자의 모습이다: TCP/IP .

프로토콜을 사용한다면 사용자는 어떠한 클라이언트가 에 접근TCP/IP , VI

할 수 있는지를 설정해 주어야 한다.

Page 237: Graphical Programming Labview

부 프로그래밍2

에는 접근할 수 있는 클라이언트와 접근 불가능한 클TCP/IP Access List

라이언트들의 리스트가 있다 이것을 수정하려면 수정하려는 클라이언트를 선.

택하고 우측의 나 를 선택해 주면 된다 버Allow Access Deny Access . Add

튼을 누르면 새로운 클라이언트를 삽입할 수 있고 버튼을 이용하면, Remove

설정된 클라이언트를 지울 수 있다.

클라이언트가 서버에 접근하려고 한다면 서버는 접근 리스트를 검, TCP/IP

사하여 접근을 허락하거나 금지한다.

사용자가 혹은 서버에 대한 더 알고 싶으면 장의 통신 함수를 참TCP/IP 19

조하라 하지만 그곳에서도 인터넷이나 기타 통신의 개념에 대한 상세한 이론.

을 사용자에게 설명하지 못한다 따라서 사용자는 다른 전문 서적을 참고하여.

인터넷 서버 그리고 기타의 용어와 개념에 대해 알고 있어야 서버를 잘 이용, ,

할 수 있다.

설정하기14. Server : Exported VIs

또한 를 서버로 사용하기 위해서는 어떠한 를 다른 애플리케이LabVIEW VI

션이 접근하려 할 때 허용하느냐 하는 것을 설정해 주어야 한다.

아래의 그림은 의 대화상자의 모습이Server : Exported VIs Preferences

다.

Page 238: Graphical Programming Labview

장 프로그램 설계 기술10 II

항에는 현재 접근을 허용하거나 허용하지 않는 의 리스트Exported VIs VI

들이 있다 사용자가 이것을 변경하려면 변경할 를 선택하고 우측의. , VI Allow

또는 를 사용하여 접근을 허락하거나 금지할 수 있다Access Deny Access .

또는 버튼을 사용하면 새로운 를 추가하거나 지울 수 있다Add Remove VI .

다른 애플리케이션이 서버에 접근하여 접근 가능한 는 체크 마크가 있고VI ,

접근 불가능한 는 마크가 있다VI ‘x’ .

서버는 다른 애플리케이션이 에 접근하려고 할 때 리스트를 검사하여 접VI

근의 허락과 금지를 하며 리스트 항에는 와일드카드 와 이름 및 경로를, (*) VI

기입하여 를 표시할 수 있다 자세한 문법은 도움말을 참조하기 바란다VI . .

사용자가 작성한 프로그램을 문서화하기 위해서 는 프린트를 다양하게LabVIEW LabVIEW

할 수 있도록 하는 기능을 가지고 있다 메뉴에는 과. File Print Documentation Print Window

부 메뉴가 있어서 사용자가 원하는 형태의 출력물을 얻을 수 있도록 한다.

에는 사용자가 실행 시에 나타나는 메뉴를 만들 수 있도록 하는 기능을 가LabVIEW 5.0 VI

지고 있다 사용자는 메뉴 에디터를 사용자 형태의 메뉴로 만들 수 있으며 메뉴를. (Custom) ,

만들 때에는 태그를 지정하여 메뉴 처리를 쉽게 할 수 있다.

메뉴를 처리하기 위해서 다양한 함수가 지원되고 있으며 이 함수를 사용하여 사용자는 일반,

애플리케이션과 같은 메뉴를 가진 프로그램을 만들 수 있는 것이다.

를 잘 사용하려면 를 잘 다루어야 한다 다양한 환경을 다양한 방법으LabVIEW Preferences .

로 설정해 놓으면 프로그램 개발 환경을 좀더 자신에게 편리하게 만들 수 있기 때문이다.

메뉴를 이용하면 대화상자가 활성화된다 이 대화상자를 이용LabVIEW Edit Preferences .

하면 사용자는 경로 디스크 용량 프론트 패널 블록 다이어그램 디버깅 색상 글꼴 프린팅, , , , , , , ,

히스토리 시간과 날짜 서버 등의 다양한 항목에 대해 설정할 수 있다, , .

요약

Page 239: Graphical Programming Labview

…………………………………………………………………

제 부3

…………………………………………………………………

데이터 수집…………………………………………………………………

장11 DAQ 기초(Data Acquisition)

장12 DAQ 일반(Data Acquisition)

장13 Solution Wizard

장 인스트루먼트 컨트롤14

…………………………………………………………………

Page 240: Graphical Programming Labview

개요1.

를 사용하는 목적은 데이터의 수집 이므로 이LabVIEW (Data Acquisition) ,

책을 읽는 사람들이 에 대해서 초보자라는 것을 전제로 하고 에 대DAQ DAQ

한 일반적인 사실에 대해서 이번 장을 할애하여 기술하고자 한다.

이번 장에서 사용자는 의 기초적인 지식에 대하여 배울 수 있으며 데DAQ ,

이터 수집 시스템의 구성과 원리에 대해서 배울 수 있을 것이다 일반적인 사.

실을 기술하는 것이므로 사용자는 그 개념을 잘 적용할 수 있도록 천천히 읽

으면서 공부하기 바란다 또한 이 책 외에 데이터 수집 이론에 대한 서적을 접.

해 보는 것이 를 배우는 데 도움이 될 것이라 믿는다LabVIEW .

또한 데이터 수집을 장에 걸쳐서 설명하기로 하겠다 쉬운 부분부터 어려, 3 .

운 부분으로 전개하는 과정에서 상당히 전자공학적인 내용을 다루어야 하지만

가급적 이를 피하기로 하겠다 또한 데이터 수집을 수행하기 위해서는. DAQ

보드 라는 하드웨어가 필요하지만 보드가 없어도 수행할 수 있는 예(Board) ,

제를 주로 선정하였으며 보드가 꼭 필요한 부분은 이를 표시하였다 이, DAQ .

장에서는 주로 보드를 설치하고 테스트하는 방법에 대하여 배우게 될DAQ

것이다 따라서 보드가 필수적이므로 보드가 없는 사용자는 한번 읽어보. DAQ

기 바란다.

chapter

11DAQ 기초

Page 241: Graphical Programming Labview

부 데이터 수집3

이 장에서 배우는 것들2.

데이터 수집 의 일반 사항(DAQ)

데이터 수집 시스템의 일반적인 구성

데이터 수집 소프트웨어의 일반적인 구성

데이터 수집 보드의 일반 사항

내셔널인스트루먼트 사 시스템 구성(NI) DAQ

란 무엇인가DAQ(Data Acquisition) ?

를 수행하기 위한 장비들DAQ

보드 설치 및 테스트DAQ

데이터 수집 일반3. (DAQ)

데이터 수집 시스템 이란 실세계의 신호 즉 아(Data Acquisition System)

날로그 신호를 컴퓨터로 입력받아 디지털로 변환하고 이 변환된 데이터를 사,

용자의 요구에 맞게 분석하는 시스템을 말한다 이 시스템은 각종 센서 온도. ( ,

압력 를 통해 받아들여진 아날로그 신호를 분석하는 용도에 대부분 사용, )…

되고 있지만 계측기나 분석 기기 등에서 출력되는 전압 신호(10 이하 를 입V )

력받아 분석하는 응용 분야에도 사용되고 있다.

이러한 시스템은 주로 보드 또는 화 되어 있으며 대부분 수입(Board, Card)

판매되고 있고 국내의 몇몇 업체에서만 개발하여 판매하고 있다 수입되는 제.

품은 주로 신호의 정확성과 안정성이 요구되는 분야에 사용되고 있으며 국내

제품으로는 다채널의 제품들이 출시되는 경향이 있다.

은 제품화된 보드를 컴퓨터에 장착하고Data Acquisition(DAQ) System

응용 프로그램을 선정하거나 사용자의 요구에 맞게 개발하여 시스템을 구성하

고 있다 년 전까지만 해도 연구실이나 실험실에서 보드를 구입하여 사용. 2 3˜

자의 요구에 맞게 프로그램을 개발하여 사용하는 경우가 대부분이었으나 현재

는 공장자동화나 대규모의 데이터 수집 시스템 또는 제품 검(DAQ System)

사 와 측정 시스템 등에 활발히 사용되고 있다(Test) (Measurement) .

Page 242: Graphical Programming Labview

장 기초11 DAQ

또한 과거에는 소프트웨어를 전문가들이 프로그래밍하여Data Acquisition

사용하였으나 요즘에는 비전문가도 쉽고 빠르게 프로그래밍을 할 수 있는 소

프트웨어가 판매되어 각광을 받고 있다 물론 전문가도 제한된 시간 내에 신.

속하게 프로그램을 작성할 수 있어서 자주 사용되고 있다.

하드웨어의 구성4.

일반적으로 하드웨어 는 다음과 같이 메인 시스템 보드(H/W) (Main) , DAQ ,

입력 센서 신호 조절 모듈 로 구성된다(Signal Conditioning Module) .

메인 시스템4.1 (Main System)

메인 시스템 으로는 주로 일반용 컴퓨터 펜티엄 등 나(Main System) (486, )

특수하게 제작된 산업용 컴퓨터를 사용한다 메인 시스템의 시방은 별도로 규.

정되어 있지 않으나 데이터를 수집하고자 하는 용도에 따라 시스템을 적당히

선정하면 된다.

선정 시 몇 가지 주의할 점으로서 첫째는 보드와 호환성Data Acquisition

이 있는지 살펴봐야 하고 둘째는 하드디스크의 액세스 시간이 빠른 것이 좋,

다.

보드에서 빠른 속도로 데이터를 수집한다고 해도 하드디스Data Acquisition

크의 액세스 시간이 느리면 원하는 속도로 저장할 수 없기 때문이다.

데이터 수집 보드4.2 (Data Acquisition Board)

아날로그 데이터를 수집하여 컴퓨터가 처리할 수 있는 형태 즉 디지털 데이

터로 변환시켜 주는 핵심 기능을 한다 시스템의 성능은 보드에 달. DAQ DAQ

려 있다고 해도 과언이 아니기 때문에 우선 보드에 대해서 알아보자DAQ .

이번 절에서는 데이터 수집 보드의 가장 중요한 아날로그 입력 부분에 대해

서만 설명하겠다.

입력 형태1. (Input Type)

입력 형태에는 일반적인 과Conventional SS&H(Simultaneous Sample

그리고 등이 있다 은and Hold) Delta Sigma . Conventional

와 로 나뉘어지는데 는 모든SE(Signal-Ended) DI(Differential Input) , SE

Page 243: Graphical Programming Labview

부 데이터 수집3

채널의 접지를 공통으로 사용하는 데 비해 는 채널마다 서로 다른 접지를DI

가지고 있어서 는 잡음에 강한 반면 는 상대적으로 약하다고 평가된다DI SE .

나 는 멀티플렉서 와 를 통해 아날로그 데이터를 지정SE DI (Multiplexor) S/H

된 채널 순서에 따라서 수집하지만 는 멀티플렉서 앞에SS&H (Multiplexor)

채널마다 회로가 준비되어 있어서 모든 채널을 동시에 입력받을 수 있다S/H .

는 보통 적은 수의 채널에 사용된다SS&H .

입력 범위2. (Input Range)

입력 범위는 입력받는 신호의 범위를 말한다 입력 범위는 데이터의 단방향.

성 양방향성에 따라 와 로 나뉘어지고 데이터 변환 제품의, Unipolar Bipolar ,

경우 로PGH(Programmable Grain High), PGL(Programmable Gain Low)

도 나눌 수 있다.

아날로그 디지털 변환기 는 기본적으로- (A/D Converter) 0 10˜ 나V ±10V

를 로 지정하고 있으나 입력 센서 등에는 이보다 작은 신호를Full Scale Range

출력하는 경우가 많다. 0 0.1˜ 의 신호를 출력하는 센서로부터V 0 10˜ 범위V

로 데이터를 수집했다면 정밀하게 분석을 기대할 수 없으므로 0 0.1˜ 의 적은V

신호를 증폭하여 수집해야만 한다 이때 적용되는 것이 또는 이다. PGH PGL .

한 가지 주의할 점은 이 크다고 해서 반드시 좋은 것은 아니라는 점이Gain

다 이 이상이면 노이즈에 약하고 데이터의 수집 속도를 느리게 하. Gain 500

기 때문이다 또 하나 언급해야 할 중요한 기능은 제품의 종류와 회사마다 다.

르기는 하지만 라는 기능이다Channel-Gain List .

이 기능은 채널 중에서 자유롭게 입력 채널을 지정하고 지정된 채널마다 서

로 다른 을 부여할 수 있는 기능이다 입력 센서는 다양할 수 있으므로 모Gain .

든 채널에 대한 과 각 채널의 입력 순서가 고정적으로 정해져 있다면 정Gain

밀하고 자유롭게 데이터를 수집하고 분석할 수 없을 것이다.

속도3. (Speed)

데이터 수집 시스템 에서 입력 장비로부터 데이터를 초당 몇(DAQ System)

개씩 받을 것인가는 상당히 중요하다 보통 속도는 수집 시간. (Acquisition

변환 시간 전송 시간 으로 분Time), (Translation Time), (Transfer Time)

류하지만 일반적으로 처리 시간 으로 결정한다 처리 시간은 초(Throughout) .

당 몇 개의 데이터를 센서로부터 수집하여 메모리에 저장하는가를 나타내며

단위는 로 한다Hz .

예를 들어 100 이면 초당 개의 데이터를 수집하여 메모리에 저kHz 100,000

Page 244: Graphical Programming Labview

장 기초11 DAQ

장할 수 있다는 것이다 샘플링 이론에 의하면 입력받고자 하는 데이터의 수.

가 초당 개이면 데이터 수집 보드의 처리 시간은50,000 100,000 이어야Hz

정확한 신호를 기대할 수 있다 그러나 보통 생산 회사마다 기술의 차이에 의.

하여 이 기준이 달라지게 되는데 사의 제품은 배의 속도만 가지고 있으, DT 3

면 아무런 문제 없이 데이터의 수집이 가능하다.

해상도4. (Resolution)

아날로그 디지털 변환기는 보통 비트 로 정밀도를 나타낸다 여기서- (Bit) .

나타내는 비트 는 입력 범위 를 몇 개로 등분하여 아날로그(Bit) (Input Range)

데이터를 수집할 것인가를 나타낸다 해상도 가 높을수록 정밀한. (Resolution)

데이터를 받을 수 있으나 용량이 많아지고 필요 없는 잡음이 섞일 수 있다는

단점도 있다.

입력 센서4.3 (Input Sensor)

데이터 수집 시스템은 반드시 입력 측에 센서가 장착된다 입력 센서는 매우.

다양하며 반드시 센서에서 출력되는 출력 범위 가 있다 물론(Output Range) . ,

이 신호가 데이터 수집 보드 의 입력 범위 와 호환(DAQ Board) (Input Range)

되어야 한다 그렇지 않다면 신호를 적절하게 변환해 주는 변환기.

나 신호 조절 모듈 을 사용해야(Transmitter) (Signal Conditioning Module)

한다.

신호 조절 모듈4.4 (Signal Conditioning Module)

이 장치는 센서 로부터 입력되는 신호 의 잡음을 축소시켜(Sensor) (Signal)

주거나 온도나 압력 등을 전압 으로 변환시켜 주고 센서 로(Voltage) (Sensor)

부터 입력되는 고전압 으로부터 보드나 메인 시스템(High Voltage) DAQ

을 보호해 준다(Main System) .

소프트웨어의 구성5.

시스템의 응용 소프트웨어는 사용자가 프로그램을 개발하여 사용하거DAQ

나 이미 개발되어 있는 소프트웨어를 사용하는 경우의 두 가지로 나눌 수 있

다 사용자가 직접 프로그램을 개발하는 경우에는 보드 구입 시 제공되. DAQ

Page 245: Graphical Programming Labview

부 데이터 수집3

는 툴킷 을 이용하는 경우로서 사에서는 다양한 프로그래밍 언어(Toolkit) DT

를 제공하는 라이브러리를 제공하고 있다.

현재 개발되어 판매되고 있는 응용 소프트웨어로는 과GLOBAL LAB HP

및 가 있다 특히VEE with DT VPI(Visual Programming S/W) LabVIEW .

와 는 아주 쉽고 신속하게 사용자의 용도에HP VEE with DT VPI LabVIEW

맞게 프로그래밍할 수 있기 때문에 전문가든 비전문가든 사용할 수 있다.

내셔널인스트루먼트 시스템6. DAQ

개요6.1

내셔널인스트루먼트는 가상 계측 시스템 솔루션을 개발하기 위한 다양한

제품들을 생산하고 있으며 이들 솔루션은 시험 측정 및 산업 자동화 애DAQ ,

플리케이션에 광범위하게 사용되고 있다.

내셔널인스트루먼트의 제품으로는 및 매킨토시PCI, PCMCIA, ISA, EISA

용 플러그 인 보드 모듈 외장형 병렬 및 시리얼 포트 보드Nubus - , VXI , DAQ ,

시그널 컨디셔닝 액세서리 등이 있다.

하드웨어 드라이버 소프트웨어 그리고 애플리케이션 소프트웨어가, DAQ

시스템을 구성하는 대 요소이다 이들은 서로 호환되어야 하므로 내셔널인3 . ,

스트루먼트의 하드웨어 제품들은 윈도우즈 윈도우즈NT/95/3.1, NEC

및 매킨토시 오퍼레이팅 시스템 하에서 드95/3.1, DOS, DOS/V, NEC DOS

라이버 및 애플리케이션 소프트웨어와 함께 개발되고 테스트되었다.

를 위한 제품 설계6.2 DAQ

입력의 정확도와 효율적인 시스템 개발을 위하여 내셔널인스트루먼트는 많

은 하드웨어 및 소프트웨어 제품을 개발하였다 최신의 기술 혁명이라DAQ .

할 수 있는 시리즈는 계측기급의 데이터 수집용 표준 다채널 구조이다E .

시리즈 제품들은 버스 마스터용 설정을 위한E PCI MITE, Plug & Play

DAQ- 계측기 수준의 카운팅과 타이밍을 위한 멀티보드 및PnP, DAQ-STC,

멀티 기능의 동기를 위한 버스 이나 샘플링 속도와 관계없이 높은RTSI , Gain

정확도의 아날로그 입력 측정을 위한 로 이루어져 있다NI-PGIA .

Page 246: Graphical Programming Labview

장 기초11 DAQ

아날로그 디지털 및 타이밍 입출력 등에 따라 다양한 시리즈 및 다른, E

제품들이 있다 시리즈 보드들과 같은 많은 제품들은 프로그래DAQ . E DAQ

밍이 가능한 채널 샘플링 및 변환 모드 각 채널에 따라 분리된 전후 지, Gain, ,

연 아날로그 및 디지털 트리거링 등을 포함하고 있어 데이터 수집용의 뛰어,

난 솔루션을 제공하게 된다.

시리즈 제품들은 내셔널인스트루먼트의 계측기급 시그널 컨디셔닝 제품E

들과 호환되므로 유연하고 정확한 기반의 데이터 수집 시스템을 구축할, PC

수 있다.

신호 처리를 위한 제품6.3

내셔널인스트루먼트의 시스템은 보드 및 소프트웨어의 성SCXI PC, DAQ

능을 향상시키기 위한 시그널 컨디셔닝 기술에 적합하도록 설계되었다. SCXI

는 플러그 인 시스템의 처리 능력과 유연성에 기존 독립 계측기의 낮은- DAQ

노이즈 콤팩트한 환경을 결합시켰다 는 다음의 두 가지 방식으로 활용, . SCXI

이 가능한 다양한 플러그 기능의 계측 시스템이다.

플러그 인 보드나 모듈의 시그널 컨디셔닝- DAQ VXI

에 연결 가능한 병렬이나 시리얼 포트를 가진 완전한 외장형 시스템PC DAQ

는 낮은 아날로그 시그널 컨디셔닝 증폭 필터링 등에 최적의 시스템SCXI , ,

이다 모듈은 수. SCXI Thermocouple, RTD, Thermistor, Strain Gauge,

에서mV 250 에 이르는 볼트 소스 및mV , 4 20 0 20˜ ˜ 소스 등과 같은mA

다양한 형태의 시그널에 모두 사용될 수 있다 모듈은 또한 아날로그 출력 디. ,

지털 입출력 및 릴레이 등에 이용이 가능하다.

시스템은 여러 가지의 시그널 컨디셔닝 모듈들을 장착할 수 있는 섀SCXI

시로 이루어져 있다 센서의 선이나 필드 와이어링은 시그널 컨디셔닝 모듈.

전면에 직접 플러그를 꽂을 수 있는 실드 된 터미널 블록으로 연결(shielded)

된다 모듈은 모두 하나의 플러그 인 보드로 컨디셔닝하고 다중 송신한다. - .

또 다른 방법으로는 모듈을 이용하여 시그널을 디지털, SCXI-1200 DAQ

화하고 디지털 데이터를 병렬 포트나 시리얼 포트를 통해 4,000 떨어져 있ft

는 곳까지 전송할 수 있다 시스템은 벤치 탑의 몇 개의 채널에서부터. SCXI

대형 랙 마운트 시스템의- 3,072채널에 이르기까지 그 이용 범위가 넓다.

내셔널인스트루먼트는 다양한 버스 형태 및 운영 시스템에 적합한 제DAQ

Page 247: Graphical Programming Labview

부 데이터 수집3

품들을 지속적으로 개발하고 있다 버스 마스터 제품의 출현은. PCI DAQ

솔루션의 성능을 한 단계 높은 수준으로 끌어올렸다DAQ .

버스는PCI 132 에 이르는 속도로 데이터를 수집할 수 있다 이러한MB/s .

속도의 데이터 전송은 막대한 마이크로프로세서의 시간을 소모하고 시스템의,

성능을 저하시키기 때문에 내셔널인스트루먼트는 를 개발하게, MITE ASIC

되었다.

는 특히 버스용 전송을 위해 개발되어 있다MITE PCI DAQ .

와 같은 기술을 이용하여 는 마이크로프로세서에Scatter-gather DMA MITE

부담을 주지 않고 버스의 처리 능력을 가능한 최상으로 끌어올린다, PCI . E

시리즈 기술과 결합된 이 아키텍처는 솔루션의 새로운 장을 연다PCI DAQ .

내셔널인스트루먼트의 버스용 시리즈는 하드웨어 설정을 손쉽ISA E DAQ

게 하는 기능을 가지고 있다 이 시리즈는 입출력 어드레스Plug & Play . E ,

채널 인터럽트 등을 설정하기 위해 스위치나 점퍼를 설정하는 대신 윈DMA ,

도우즈 의 기술을 이용한다95 Plug & Play .

모든 시리즈 제품들은 교환할 수 있는 퓨즈를 가지고 있고 소프트웨어를E ,

통한 캘리브레이션이 가능하므로 시리즈 하드웨어를 한번 설치한 이후에는, E

어떠한 작업도 필요하지 않다.

내셔널인스트루먼트는 시리즈에 기존의 이나 카운터 타이E 9513 8253/54 /

머 칩을 이용하는 다른 보드들보다 뛰어난 성능을 부여하기 위하여 데이터,

수집 시스템 타이밍 컨트롤러 를 개발했다ASIC(DAQ-STC) .

이 의 특징은 뛰어난 기능 저렴한 비용 낮은 전력 소모이다 이DAQ-STC , , .

는 총 개의ASIC 10 16, 24 bit 20 카운터 타이머를 가지고 있는데 이MHz / ,

중 개는 아날로그 입력 타이머 개는 아날로그 출력 타이밍 제어 그리고 나4 , 4 ,

머지 개는 사용자들이 일반적인 용도로 사용할 수 있는2 24 bit 20 카운MHz

터 타이머이다.

보드 상의 디지털 시그널 외부 시그널 또는 소프트웨어가 이, TTL DAQ-

를 이용하여 데이터 수집 사이클 중 샘플링 속도를 데이터 수집에 아무런STC

지장을 주지 않고 지체 없이 바꿀 수 있다 카운터를 이용하여서는. 1 주MHz

파수 영역에 대해 최대 20 속도의 반복적인 아날로그 시그널을 주기적MS/s

으로 샘플링할 수 있다.

이 는 하드웨어 카운터 작동을 완충시키고 각각의 채널이 독립DAQ-STC ,

적으로 다른 속도의 샘플링을 할 수 있는 기능을 부여한다.

Page 248: Graphical Programming Labview

장 기초11 DAQ

보드를 이용한 시스템 개발에 있어서 종종 멀티보드 및 멀티 기능의DAQ

동기화가 요구된다.

즉 일반적인 트리거나 타이밍 시그널로 하나 이상의 보드에서 여러 가지,

기능을 동기화할 필요가 생긴다.

이런 이유로 내셔널인스트루먼트는 타이밍과 트리거 시그널의 순서를 결정,

하는 실시간 시스템 통합 버스를 개(Real-time system Integration, RTIS)

발하였다 는 변환 변환 디지털 입력 디지털 출력 카운터 타. RTIS A/D , D/A , , ,

이머 작동 등을 동기화한다.

예를 들면 두 개의 아날로그 입력 보드가 데이터를 포착하는 동시에 제, 3

의 보드가 데이터 입력 샘플링 속도와 동일하게 출력 패턴을 만들어 낸다.

내셔널인스트루먼트는 높은 과 속도로 프로그래밍이 가능한 계측Gain Gain

증폭기인 를 개발하였다 이 는 높은 속도와 에서NI-PGIA . NI-PGIA Gain

변환을 정확하게 처리하지 못하는 기존에 제작된 증폭기의 부정확 문제를AD

해결할 수 있다.

진동 주파 음향 수중 음파 탐지기 등과 같은 애플리케이션에서 시그, , , AC

널을 수집하기 위한 시험 측정 시스템은 온도 측정과 같은 애플리케이션에서

시그널을 수집하기 위한 시스템보다 매우 다양한 요구 조건을 가지고 있DC

다 시그널은 일반적으로 필터 동시 샘플링 높은 다이내믹. AC Antialiasing , ,

범위 완벽한 증폭 균일성 낮은 노이즈 등을 더욱 필요로 한다, , .

내셔널인스트루먼트의 다이내믹 시그널 수집 보드는 옥타브에서 입력1 6˜

시그널을 90 감소시키는 필터 동시 샘플링dB Antialiasing , , 93 의 다이내dB

믹 범위, -95 이하의 및dB THD 0.025 증폭 균일성 등으로 이러한 요구dB

조건들을 충족시킨다 와 매킨토시 용 다이내믹 시그널 수집 보드. ISA NuBus

에는 등이 있다AT-A2150, AT-DSP2200, NB-A2100, NB-A2150 .

고정밀도 와 저잡음6.4 (High Accuracy) (Low Noise)

단일 또는 복수 층의 에 변환기 계측 증PCB(Printed Circuit Board) A/C ,

폭기 버스 인터페이스 회로를 부착하는 경우 보드는 많은 노이즈를 가, , DAQ

지게 된다 노이즈를 감소시키기 위해서 주로 이용되는 기술로는 보드. DAQ

부품에 금속 실딩 을 부착하는 것이다(shielding) .

내셔널인스트루먼트는 보드의 민감한 아날로그 섹션에 금속 실딩을DAQ

하기도 하지만 보드 자체의 한 층에 노이즈 실드를 부착하는 한 단계, DAQ

Page 249: Graphical Programming Labview

부 데이터 수집3

앞선 기술을 이용한다.

Page 250: Graphical Programming Labview

장 기초11 DAQ

를 이용한 고성능 데이터 전송6.5 DMA

보드는 프로그램된 인터럽트 또는 를 이용하여 메모리로부DAQ I/O, DMA

터 데이터를 수집하고 또 메모리로 데이터를 전송한다 는 데이터를 시, . DMA

스템 메모리 내로 직접 전송하는 전용 하드웨어를 이용하여 시스템의 처리 능

력을 향상시킨다 이것은 프로세서가 다른 작업에만 전념할 수 있게 한다. .

버스 마스터의 경우 는 특히 중요하다 내셔널인스트루먼트는 특히PCI DMA .

버스 마스터 데이터 수집을 위하여 를 개발하였다 는 버스를MITE . MITE PCI

제어하고 프로세서의 시간을 낭비하지 않고 최대, 132 속도로 데이터를MB/s

전송한다.

데이터 수집을 위한 드라이버 구동식 소프트웨어 설계6.6

보드용 드라이버 소프트웨어는 몇 줄의 간단한 소스 코드에서부터 완DAQ

전한 통합 드라이버 소프트웨어 시스템에 이르기까지 그 범위가 매우 넓다.

내셔널인스트루먼트는 드라이버 소프트웨어를 개발하는 데 연인원NI-DAQ

명 이상을 동원하고 있으며 그 결과로 운영 시스템을 개발하게 되었70 , DAQ

다.

윈도우즈 윈도우즈 윈도우즈NT/95/3.1, 95/3.1J, NEC 95/3.1, DOS,

와 운영 시스템에서 사용이 가능한 는DOS/V, NEC DOS Mac OS NI-DAQ

아날로그 디지털 및 타이밍 입출력 트리거링 멀티플렉싱 등을 위한 완벽한, , ,

데이터 수집 입 출력 함수를 가지고 있다 는 손쉬운 사용을 위한 높/ . NI-DAQ

은 수준의 함수와 유연성 및 뛰어난 기능을 위한 낮은 수준의 함수를 모두 가

지고 있다.

는 여러 가지의 플랫폼과 운영 시스템에 있어서 일관된 인터페이NI-DAQ

스를 유지한다 예를 들면 윈도우즈 에서. , NT DAQ Card-1200, PCMCIA

용으로 개발된 프로그램은 손쉽게 용으로 다시 컴파일할 수Card C Mac OS

있고 파워매킨토시에 설치된 용으로 이용할 수 있다, PCI-1200 .

이중 버퍼 기술은 많은 수량의 데이터를 지체 없이 수집하고 산출하는 데

이용된다 또한 동시에 여러 가지 함수와 여러 종류의 보드를 이용할 수 있다. .

는 채널 인터럽트 레벨과 버스 채널에 대한 보드간의NI-DAQ DMA , RTSI

충돌을 막아 준다 대부분의 드라이버는 데이터 수집이 완전하게 수행되고 있.

는지 또는 다른 일들이 발생했는지를 확인하기 위하여 소프트웨어 폴링

Page 251: Graphical Programming Labview

부 데이터 수집3

을 이용하여 프로그램을 해야 한다(polling) .

Page 252: Graphical Programming Labview

장 기초11 DAQ

그러나 는 사용자가 규정한 이벤트가 일어날 때마다 윈도우즈NI-DAQ DAQ

애플리케이션에 알려 준다 다음과 같은 이벤트들이 그 예이NT/95/3.1 . DAQ

다.

일정 수의 아날로그 입력 샘플이 수집되었을 때

아날로그 레벨과 시그널의 스코프가 일정 수준에 도달했을 때

시그널이 일정한 전압 영역을 벗어났을 경우

일정 디지털 입 출력 형태와 일치했을 때/

는 모든 내셔널인스트루먼트의 플러그 인 보드에 포함되어NI-DAQ - DAQ

있다.

응용 소프트웨어6.7

내셔널인스트루먼트의 프로그램에 대해 간략하게 소프트웨어의LabVIEW

구성을 말해 보면 내셔널인스트루먼트는 윈도우즈에서 모든 하드웨어, DAQ

제품들과 호환되는 프로그래밍이 필요 없이 즉시 사용할 수 있는 제품인

를 제공한다Virtual Bench .

는 스코프 디지털 멀티미터 임의 파형 발생기 함수 발생기Virtual Bench , , , ,

데이터 로거 다이내믹 시그널 분석기 등을 가지고 있다 더 자세한 내용은 부, .

록을 참조하기 바란다.

내셔널인스트루먼트는 데이터 수집 분석 제공을 위하여 내셔널인스트루먼, ,

트의 드라이버 소프트웨어를 개발하고 있다 따라서 애플리케이션NI-DAQ .

소프트웨어는 내셔널인스트루먼트의 플러그 인 보드들의 모든 기능과- DAQ

성능을 이용할 수 있다.

시간 및 빈도에 따라 또는 통계적으로 데이터를 분석하기 위한 루틴을 개,

발했다 내셔널인스트루먼트의 애플리케이션 소프트웨어를 이용하여 보. DAQ

드와 상호 작용하는 그래픽 사용자 인터페이스 를 만들어 수집된 데이터(GUI)

를 제시할 수 있다.

애플리케이션 개발의 방법 및 플랫폼에 따라 애플리케이션 소프트웨어를 선

택할 수 있다.

는 표준 언어 프로그래밍에 익숙한 개발자들이 선호하는LabWindows/CVI

프로그래밍 방식을 채택하고 있다 와 는 개발자들C . LabVIEW BridgeVIEW

에게 애플리케이션 개발에 매우 효율적인 환경을 제공하는 언어 그래피컬G

Page 253: Graphical Programming Labview

부 데이터 수집3

개발 방식을 채택하고 있다.

마이크로소프트 엑셀에 첨가하여 사용할 수 있는 프로그램인 는Measure

스프레드시트 사용자들에게 엑셀을 이용하여 직접 데이터를 수집할 수 있는

편리한 방법을 제공한다.

의 기초7. DAQ

란 우리가 원하는 물리적 신호의 발생을 얻어 이것DAQ(Data Acquisition)

을 처리하는 것을 말한다 컴퓨터를 이용하여 를 수행하기 위해서는 센서. DAQ

를 이용하여 얻은 물리적 신호를 전압과 전류와 같은 전기적 신호로 바꾸어

주어야 한다 종종 우리는 보드를 시스템 의 전체로 간주. DAQ DAQ (System)

하는 경우가 있는데 보드는 하나의 요소일 뿐이다 일반적으로, DAQ DAQ .

를 소프트웨어적으로 처리해 주는 와 같은 소프트웨어를 사용DAQ LabVIEW

하기 전에는 오실로스코프와 같은 전용의 계측 기기를 사용하였다.

그러나 이제는 보드와 와 같은 소프트웨어를 사용하여 다양DAQ LabVIEW

한 처리를 할 수 있게 되었다 이런 전용 기기와 다르게 보드는 물리적. DAQ

신호를 직접 연결하여 사용할 수 없을 때가 있다 컴퓨터는 디지털 정보를 취.

급하므로 아날로그 신호를 디지털로 바꿔 줄 수 있는 기기가 필요한 것이다.

비단 디지털로 바꾸어 주는 것뿐만 아니라 여러 가지를 처리해 줄 필요가 있

으므로 이를 위하여 내셔널인스트루먼트 에서는 다양한 처리 장치를 준비(NI)

하고 있다 위의 그림은 일반적인 시스템의 개략도이다 이렇게 준비한. DAQ .

후에 데이터를 얻고 분석하고 표시할 수 있는 것이다.

일반적으로 데스크탑 컴퓨터는 보드를 내장하고 랩탑(desktop) DAQ ,

형의 컴퓨터는 외장형 보드를 이용하여 시스템을 구성한다 외장(laptop) DAQ .

형 시스템 구성은 보드를 끼울 만한 슬롯 이 없을 경우에 주로 사용DAQ (slot)

Page 254: Graphical Programming Labview

장 기초11 DAQ

하며 직렬 병렬 및 형태의 데이터 버스 를 사용한다, , GPIB (bus) .

Page 255: Graphical Programming Labview

부 데이터 수집3

데이터 수집 보드8. (DAQ Board)

에는 내셔널인스트루먼트 사의 플러그LabVIEW (National Instruments) -

인 보드를 사용할 수 있는 여러 가지 함수를 제공하고 있다(Plug-in) DAQ .

이 절에서 보드에 대하여 자세하게 공부해 보자DAQ .

는 여러 가지 플랫폼 에서 사용할 수 있도록 제작되었LabVIEW (Platform)

는데 일반적으로 윈도우즈, PC- (Windows) 3.1/95/NT, Sun/HP Unix,

등에서 사용할 수 있다Macintosh .

따라서 시스템의 설계 구조 가 각각 다르므로 플랫폼의 종류(Architecture)

에 따라 보드가 다르게 제작되어 있으나 이 책에서는 윈도우즈에DAQ , PC-

서 사용할 수 있는 보드만을 다루도록 하겠다DAQ .

하나의 보드는 아날로그 디지털 변환 디DAQ - (analog-to-digital, A/D) ,

지털 아날로그 변환 디지털 입 출력- (digital-to-analog, D/A) , / (Digital

카운터 타이머 등 여러 가지 작업을 수input/output, I/O), / (counter/timer)

행할 수 있도록 설계되어 있다.

일반적으로 윈도우즈 는 플러그 앤 플레이 라는 기능으로95 (Plug & Play)

시스템에 하드웨어나 소프트웨어를 자동으로 감지할 수 있다 이러한 기능은.

각 하드웨어나 소프트웨어의 제작자들이 마이크로소프트사 에 등록을 했(MS)

을 경우에만 가능하다 따라서 등록이 안된 하드웨어나 소프트웨어는 사용자.

가 직접 시스템에 인식을 시켜 주어야 한다 자동으로 감지할 수 있는 하드웨.

어를 라 하고 이것이 안 되는 것을Plug & Play Device , Non Plug and Play

라 한다 또한 이 두 종류와 병렬 장치Device . DAQ (Parallel Port DAQ

라는 것이 있는데 컴퓨터의 병렬 포트 즉 프린터 포트에 연결하여Devices) , ,

사용할 수 있는 장치가 있다.

아래의 표에 세 가지 장치들의 목록이 있으므로 자신의 것이 어디에 해당하

는지 먼저 알아 두어야 할 것이다 또한 자신의 보드가 어느 버스 형태. (Bus)

를 따르는지 알아야 슬롯에 삽입할 수 있다 아래의 표에서 보면. Plug and

는 등 가지 형태를 하고 있으며Play Board PCI, ISA, PC Card 3 , Non Plug

는 버스 등으로 나뉘어지므로 자신의 컴퓨터and Play Board PCI, ISA, NEC

슬롯에 적당하게 끼워야 할 것이다.

Page 256: Graphical Programming Labview

장 기초11 DAQ

Page 257: Graphical Programming Labview

부 데이터 수집3

구성 하기9. NI-DAQ (Configuration)

이 절 이후부터는 보드를 가지고 실제로 사용할 수 있도록 시스템에DAQ

설치하고 이를 테스트하는 방법에 대하여 공부를 하겠다 이미 자신의 보드는.

시스템의 슬롯에 끼워져 있어야 한다.

1. Plug and Play Board

플러그 앤 플레이 는 드라이버 가(Plug and Play Board) NI-DAQ (driver)

설치되어 있다면 자동으로 감지된다 이것을 보려면 윈도우즈. (Windows) 95

상의 시작 버튼을 누른 후 설정▶제어판▶시스템 아이콘을 더블 클릭하면 4

개의 탭이 있는데 이 중에서 번째인 장치관리자를 선택하면 위의 그림과 같2

이 라는 항목이 나타날 것이다Data Acquisition Device .

2. Non Plug and Play & Parallel Port DAQ Devices

자신의 컴퓨터에 드라이버를 설치한 후에 아래의 지시를 따른다NI-DAQ .

제어판의 새 하드웨어 추가를 실행하여 버튼을 누르면 시스템이 스스Next

로 하드웨어를 감지하여 하드웨어 리스트를 보여 주는데 이 중에서 NI-DAQ

를 선택하여 지시대로 설치하면 된다Board .

Page 258: Graphical Programming Labview

장 기초11 DAQ

10. NI-DAQ Configuration utility

이제 자신의 컴퓨터에 보드를 설치하였으니 이를 사용하기 위하여 자DAQ

신의 목적에 맞게 설정을 해야 한다 는 기본적으로. LabVIEW Configuration

와 을 제공하고 있는데 이것을 사용하여 보드를 설정utility Test Panel DAQ

하고 시험할 수 있다.

를 이용하여 사용자는 다음과 같은 세 가지NI-DAQ Configuration utility

일을 할 수 있다.

자신의 장치를 설정할 수 있다.

장치의 기능을 테스트할 수 있다.

설정 값들을 파일에 저장하여 필요에 따라 능동적으로 사용할 수 있다.

우선 를 실행시키면 다음의 그림과 같은 초기 화면을Configuration utility

볼 수 있을 것이다 이것은 개의 탭 으로 구성되어 있는데 하나는. 2 (Tab) DAQ

이고 하나는 이다 우리는 만을 사용하Devices SCXI Devices . DAQ Devices

기로 한다 자신이 설정하기 원하는 장치를 선택하고 우측 하단의. Configure

버튼을 누르면 설정 화면을 볼 수 있을 것이다 설정 화면은. System, AI,

등 개의 탭 으로 구성되어 있으며 이들을 설명해 보겠AO, Accessory 4 (Tab)

으나 더 자세한 내용을 원할 경우에는 매뉴얼을 참고해야 한다DAQ Board .

Page 259: Graphical Programming Labview

부 데이터 수집3

1. System

이 항목은 시스템의 자원을 관리하는 경우에 사용하는 것으로 윈도우즈 95

에서는 이 항목을 수정할 수가 없다 이것은 윈도우즈 가 자동으로 관리하. 95

는 것으로 만일 사용자가 관리를 할 수 있도록 되어 있다면 다른 장치와 충돌

을 일으킬 수 있을 것이다 아래 그림의 리스트 박스에는 항목의 부. System

항목이 있는데 그 항목들은 다음과 같은 것들이 있다.

Edit Input/Output Range

Edit Interrupt Request

Edit Direct Memory Access

Edit Memory Range

Edit PC Card Socket

Edit Parallel Port

Page 260: Graphical Programming Labview

장 기초11 DAQ

2. AI

이 항목은 아날로그 입력 을 하기 위해 보드를 설정하기 위(Analog Input)

한 것이며 항목은 아날로그 입력 의 전압 범위를 정Polarity (Analog Input)

하는 것으로 Bipolar( 5- V˜ 5+ 와V) Unipolar(0˜ 10+ 로 설정할 수V)

있다.

항목에는 다음 가지 중 하나의 모드 내용은 보드Mode 3 AI (Mode) DAQ

매뉴얼을 참고하여야 한다.

differential (differential, requires a positive and a negative lead)

referenced Single Ended (referenced single-ended, uses a ground

reference from the DAQ device)

Non-referenced Single Ended (non-referenced single-ended, uses

a

common Parallel external ground reference)

또한 사용자가 플러그 앤 플레이 나 병렬 포트 장치(Plug and Play) DAQ

이외의 보드를 가지고 있다면 매뉴얼을 참고로(Parallel Port DAQ device)

하여 보드 자체의 점퍼 를 설정할 필요가 있다(Jumper) .

3. AO

아날로그 출력 에 관한 설정은 항목을 다음 네 가(Analog Output) Polarity

지 값 중에서 하나로 설정하는 것으로 만일 로 설정하면External Reference

값을 넣어 줄 수 있도록 박스가 생성된다External .

Bipolar

Unipolar

Page 261: Graphical Programming Labview

부 데이터 수집3

Bipolar External Reference

Unipolar External Reference

Page 262: Graphical Programming Labview

장 기초11 DAQ

4. Accessory

이 항목은 선택된 보드 와 같이 사용할 수 있는 외부 부속 장치를(Board)

선정하는 것으로 모든 항목이 모든 보드에 동일한 설정 메뉴를 가지는 것이

아니라 자신이 선택한 에 맞게 설정 메뉴가 나온다는 것을 이해하기 바Board

란다 따라서 의 콤보상자에 나와 있는 장치들은 현재 선택되어 있. Accessory

는 보드와 같이 사용할 수 있는 장치를 나타내고 있는 것이다.

11. NI-DAQ Test Panels

설정을 완료하였으면 설정 값을 바탕으로 시험을 해야 하는데 시험은, NI-

에서 할 수도 있고 을 이용DAQ Configuration utility , NI-DAQ Test Panel

하여 할 수도 있다.

다음과 같은 개의 탭을 가진 은 보드의 종류에 따라 채널을 다4 Test Panel

양하게 사용할 수 있도록 보드의 사용자 매뉴얼을 참고로 해야 한다.

항목에서는 다양한 입력 전압을 설정할 수 있으며Input Limit , Data Mode

Page 263: Graphical Programming Labview

부 데이터 수집3

와 에서는 그래프의 형태를 조정할 수 있다Y Scale Mode .

아래의 그림은 아날로그 입력 을 시험하기 위한 것으로 매뉴(Analog Input)

얼에 설정된 채널에 따라 입력 전압을 입력하면 그래프에 표시될 것이다 다만.

너무 높은 전압을 주면 보드에 치명적인 손상을 유발할 수 있으므로 조심DAQ

해야 하며 일반적으로 약, 35 정도 이상이면 위험하다V .

아래의 그림은 아날로그 출력 을 시험하는 것으로(Analog Output) DC

와 함수를 발생시킬 수 있다 보드 매뉴얼에서 아날로그 출력Voltage Sine .

채널을 찾아 설정해야 한다(Analog Output) .

다음의 두 그림은 와 의 로서 각각 사용자가Count I/O Digital I/O Test Panel

스스로 공부해 보기 바란다 중요한 것은 자신이 보유한 보드의 성능과 기. DAQ

능을 잘 알고 있어야 하며 어떤 채널이 어떠한 기능을 위해 할당되어 있는지를,

파악하고 있어야 한다 항상 매뉴얼을 참고해야 하며 카드. Non-Plug and Play

라면 자신의 보드 점퍼 를 하드웨어적으로도 설정해야 한다(Board Jumper) .

Page 264: Graphical Programming Labview

장 기초11 DAQ

의 사용 목적은 일반적으로 계측 분야에서 원하는 물리량을 얻는 것이다 따라서LabVIEW .

내셔널인스트루먼트 사에서는 외에 센서의 신호를 얻기 위한 보드를 공급하LabVIEW DAQ

고 있다.

일반적으로 보드는 플러그 앤 플레이 논 플러그 앤 플레이DAQ (Plug & Play), (Non Plug

병렬 포트 장치 등으로 분류할 수 있으며 원하는 물리량을 얻기 위해서는 자신& Play), DAQ ,

이 보유한 보드의 종류를 미리 파악하고 적절하게 구성해 주어야 한다DAQ .

는 및 프로그램을 제공하고 있다 자신의LabVIEW DAQ Configuration Utility Test Panel .

보드의 종류와 사용 범위를 미리 파악하고 에서 설정한 후에DAQ DAQ Configuration Utility

에서 시험을 할 수 있다Test Panel .

요약

Page 265: Graphical Programming Labview

개요1.

이 장에서는 를 이용하여 물리적 신호를 읽는 과정을 설명한다LabVIEW .

보드를 준비하지 못한 사용자를 위하여 보드가 없이도 실행할 수DAQ DAQ

있는 프로그램을 다수 준비하였으며 또한 가 지원하고 있는 모든, LabVIEW

관련 기능을 소개할 수 없어서 주요한 함수와 예만을 넣었으니 나머지DAQ

부분은 스스로 해보기 바란다 는 이미 설치되어 있다고 가정하므. DAQ Board

로 설치하지 않았으면 장을 다시 공부하기 바란다10 .

프로그램 작성의 중요한 점은 스스로 해봐야 한다는 것이다 아무리 이론.

지식이 해박하다고 해도 실제로 프로그램을 작성하는 것과는 거리가 있다 프.

로그램을 아는 사람들은 많이 있지만 실제로 프로그램을 작성해 본 경험이,

있거나 프로그램을 작성할 수 있는 사람은 많지 않다고들 한다 이번 장부터, .

는 실전에 들어가게 되니 많은 연습 과 사고 를 하기 바, (practice) (thinking)

란다.

이 장에서 배우는 것들2.

들의 기본적인 구성DAQ VI

아날로그 입력과 출력(Analog Input and Output)

파형 입력과 출력(Waveform Input and Output)

다채널 아날로그 입력(Scanning Multiple Analog Input Channels)

chapter

12DAQ 일반

Page 266: Graphical Programming Labview

부 데이터 수집3

디지털 입력과 출력(Digital Input and Output)

Page 267: Graphical Programming Labview

장 일반12 DAQ

의 구성3. DAQ VI

에서는 들이 단계로 구분되어 있었다LabVIEW 4.0 DAQ VI 3 . Easy I/O,

가 그것들이며 최신의 버전에서는 기본적으Intermediate and Advanced 5.0

로 아날로그 입력 아날로그 출력 디지털(Analog Input), (Analog Output),

입 출력 카운터 보정과 구성/ (Digital I/O), (Counter), (Calibration and

신호 조절 등으로 와Configuration), (Signal Conditioning) Easy I/O Utility

및 메뉴가 메뉴에 각각 들어간 형태를 하고 있다Advanced DAQ .

이전 버전에서는 함수의 난이도에 따라 분류를 하였으나 버전부터4.0 4.0

는 기능별로 묶어 놓은 것이다.

위의 그림은 메뉴의 팔레트를 보여 주고 있으Function Data Acquisition

며 개의 아이콘이 있다 각각 많은 수의 들을 가지고 있으며 이제부터 이6 . VI

들의 사용법을 자세하게 설명해 보겠다.

아날로그 입 출력4. / (Analog Input and Output)

아날로그 입 출력 의 모든 함수를 설명하기에는 지면이 모자라/ (Analog I/O)

기 때문에 이 절에서 설명이 안된 들은 스스로 공부하기 바란다VI .

Page 268: Graphical Programming Labview

부 데이터 수집3

위의 그림과 같이 아날로그 입 출력 에는 기본적인 개의 와/ (Analog I/O) 9 VI

유틸리티 그리고 고급 함수들이 포함되어 있는데 이 절에서는 기본(Utility), ,

적인 개의 만을 설명하겠다 아날로그 입력과 아날로그 출력은 각각 입력7 VI .

과 출력을 지원한다는 차이만 있을 뿐 다른 차이는 없이 모든 것이 동일하다, .

함수는 원하는 채널을 입력으로 하여 측정된 전압을AI Sample Channel

반환한다 입력 단자는 보드의 번호를 의미하며 채널은 문자열. Device DAQ ,

값으로 채널의 번호를 입력하면 된다 와 입(String) . High Limit Low Limit

력 단은 입력 신호의 전압 범위를 지정하는 것으로 10+ 에서V 10- 의 고V

정치 를 갖는다(Default) .

번호는 에서 설정한 번호로 한 개의Device DAQ Configuration Utility ,

보드를 갖고 있다면 이 된다DAQ 0 .

Page 269: Graphical Programming Labview

장 일반12 DAQ

도 같은 형식을 가지고 있지만 출력이 배열의 형AI Sample Channels VI ,

태를 하고 있다는 것을 잘 보기 바란다 출력 단자에서 나오는 선이 앞의 그림.

보다 더 굵다 이것은 여러 개의 채널에서 신호의 입력을 받을 수 있다는 것을.

의미한다.

는 아날로그 출력 채널을 통하여 전압을 출력한다AO Update Channel VI .

단자는 보드의 번호를 입력해야 하며 단자에는 채널Device DAQ , Channel

의 번호를 지정해 주면 된다 출력할 전압은 단자에 연결하면 되고. Voltage ,

보드의 종류에 따라 출력 전압의 상한과 하한이 달라진다.

만일 나 를 사용하는 도중AI Sample Channel VI AO Update Channel VI

에 에러를 만나면 대화상자가 자동으로 활성화되어 에러 코드를 표시해 준다, .

프로그램을 하다 보면 많이 만나는 일로 사용자가 적절하게 대응하는DAQ

능력을 길러야 한다 프로그램 자체가 복잡해지면 에러가 어렵게 느껴지는 경.

우도 있는데 절대로 어렵게 생각하거나 포기하지 말고 끝까지 해결하려는 노,

력을 기울여야 한다 그래야 실력 향상이 된다 에러를 알리는 대화상자가 활. .

성화되면 작업을 계속할 것인지 중단할 것인지에 대한 선택을 하면 된다, .

파형 입력 및 출력5. (Waveform Input and Output)

많은 프로그램에서 빠르지는 않지만 하나의 측정 지점에서 다수의 데이터를

읽어 들이는 경우가 있다 게다가 측정 간격은 다수의 요소에 의해 정해지므. ,

로 측정간에 일정한 측정 간격을 유지하기는 힘들다 예를 들어 루프. (Loop)

문의 실행 속도와 프로그램의 호출 시간 등에 영향을 받는다.

DAQ▶ 에 있는 들을 이용하여 일반적인 아날로그 들이 달성Easy I/O VI VI

할 수 있는 측정 효율보다 더 빠른 데이터의 습득과 발생을 수행할 수 있다.

Page 270: Graphical Programming Labview

부 데이터 수집3

더 나아가 이 들을 이용하면 사용자가 측정 효율을 지정하여 사용할 수도VI

있다 이 함수들은 과 이다. AI Acquire Waveform AI Generate Waveform .

는 사용자가 지정한 와 샘플 수를AI Acquire Waveform VI sample rate

가지고 단일 입력 채널에서 데이터를 습득한 다음 이것을 반환한다. Device

단자에는 보드의 번호를 연결해야 하며 채널은 아날로그 입력 채널의DAQ ,

번호를 지정해야 한다 은 샘플 수를 지정한다. Number of samples . Sample

단자는 초당 샘플 수를 의미하는 샘플 속도를 지정해야 한다rate . High limit

과 은 입력 신호의 전압 영역을 지정한다 이것의 고정값Low limit . (Default

는 각각value) 10+ 에서V 10- 이다 은 습득한 전압을 출력할V . Waveform

차원 배열 형태의 출력 단자이다 단자는 사용한 실1 . Actual sample period

제 샘플 시간을 반환하는데 이 시간은 매우 중요하게 사용될 수 있다 이 시, .

간과 실제 얻어진 데이터를 연산하면 실제 샘플 주기가 얻어지기 때문이다.

일반적으로 사용자가 에 지정한 샘플 속도는 보유한 하드웨어의Sample rate

성능에 따라 실제의 샘플 율과 차이가 있기 때문이다.

는 개의 데이터를 얻는다는 것 외에는AI Acquire Waveforms VI 2 AI

와 차이가 없다 따라서 출력 단자는 차원 배열을 하Acquire Waveform VI . 2

고 있다 이 배열의 각 열은 각 채널의 신호들이 순서대로 들어간다. .

는 지정한 장치 에 지정한 채널을AO Generate Waveform VI (Device)

통하여 파형 아날로그 전압을 발생시킨다(waveform) .

Page 271: Graphical Programming Labview

장 일반12 DAQ

다채널 아날로그 입력6.

(Scanning Multiple Analog Input Channels)

의 를 이용하여 단일 실행 모드에서Easy I/O AI Acquire Waveforms VI

여러 개의 채널을 이용하여 파형 들을 얻을 수 있다(waveform) .

은 사용자가 지정한 샘플 수와 샘플 속도를 가지고AI Acquire Waveforms

다채널에서 여러 개의 을 얻고 이것을 반환한다 는Waveform . Device DAQ

보드의 번호를 지정하는 곳이고 는 측정할 여러 곳의 채널들을 지, Channels

정하는 문자열을 가지고 있다 여러 개의 채널을 지정해야 하므로 콤마를 사.

용하여 와 같이 지정하게 되어 있다 실수하기 쉬운 부분이니 기억해1, 2, 4 .

두기 바란다 는 채널당 샘플 수를 지정한다. Number of samples/ch . Scan

는 각 채널에서 측정할 초당 샘플 수를 지정해야 한다 과rate . High limit Low

은 입력 신호의 전압 범위를 지정해야 하는데 지정하지 않으면limit 10+ 에V

서 10- 까지 고정치를 사용하게 되어 있다 단자는 측정한 전V . Waveforms

압을 출력하는 차원 배열의 형태를 가진 출력 단자이다 출력선이 중 실선2 . 2

으로 되어 있다는 것을 명심하기 바란다 는 사용자가 지. Actual scan period

정한 샘플 속도와 실제 측정에 사용한 샘플 속도가 하드웨어의 사양에 따라

서로 다르기 때문에 실제 측정 시간을 반환하는 출력 단자이다.

다음의 그림에는 그 예가 있다 를 이용하여. AI Acquire Waveforms VI 3

개의 채널에서 측정을 한다 측정 순서는 채널 순서로 하며 채널당. 1, 2, 4, 6 ,

로 개의 샘플을 측정한다 은 측정한20000 Hz 1000 . AI Acquire Waveforms

데이터를 차원 배열의 형태로 반환하며 첫 번째 측정한 데이터는 첫 번째2 ,

줄에 다음 측정값은 다음 줄에 저장한다 를 이용하여 각 채널의, . Index Array

데이터를 분리한다.

Page 272: Graphical Programming Labview

부 데이터 수집3

파형과 그래프 형태 읽기(Scanned Waveform and Graphs)

우리가 를 이용하여 습득한 데이터를 파형AI Acquire Waveform VI

(waveform) 그래프로 만들기 위해서는 파형 그래프 에 직(Waveform Graph)

접 연결하여야 한다 그러나 이것을 적절하게 파형 형태의 그래. (Waveform)

프로 그리기 위해서는 팝업 메뉴의 를 이용하여야(Popup) Transpose Array

한다 아래의 예는 개의 채널에서 얻은 데이터를 파형 그래프로. 4 (Waveform)

나타내는 것이다.

사용자는 그래프의 하단을 시간 영역으로 만들기 위해서는 위에서 사용한

기술뿐만 아니라 번들 함수를 사용하여야 한다 아래에 그 예가 있는(Bundle) .

데 이것은 실제 측정 시간끼리 를 이용하여 묶은, AI Acquire Waveforms VI

다음 그래프에 표시하는 것이다.

Page 273: Graphical Programming Labview

장 일반12 DAQ

Page 274: Graphical Programming Labview

부 데이터 수집3

디지털 입력 및 출력7. (Digital Input and Output)

특정 포트 라인을 이용하여 디지털 데이터를 읽고 쓸 수 있는 를VI Easy

에서 제공하고 있다I/O .

는 사용자가 설정한 특정한 포트의 라인을 논리적Write to Digital Line VI

으로 나 로 설정한다 에는 보드의 번호를High Low . Device DAQ , Port

에는 라인이 위치한 포트의 번호를 연결한다 단자에는 사용할Number . Line

라인을 지정하며 단자에는 라인을 설정하기 위해 나, Line state True False

로 설정한다 디지털은 가지의 상태만을 가지므로 라인을 논리적으로. 2 High

나 로 만든다는 말은 과 의 상태로 만든다는 것을 의미하며 사용Low ON OFF ,

자는 이러한 함수를 어디에 이용할까 하는 의문을 품을 수 있을 것이다 이? .

함수의 사용은 기기의 제어 등에서 가지 상태를 가지는 경우의 제어에 주로2

사용하며 그 조합으로 다양한 영역에 사용된다, .

는 사용자가 설정한 포트에서 디지털 라인의 논Read from Digital Line VI

리적인 상태를 읽어 들인다 단자에는 보드의 번호를. Device DAQ , Port

에는 라인이 위치한 포트의 번호를 설정해 준다 단자에는 읽어number . Line

들이는 데 사용할 라인을 설정해 주면 를 통하여 논리적인 상태를line state

반환한다.

Page 275: Graphical Programming Labview

장 일반12 DAQ

는 지정한 포트를 통하여 십진 형태의 데이터를Write to Digital Port VI

출력한다 단자에는 보드의 번호를 에는 사용할. Device DAQ , Port Number

포트의 번호를 연결한다 단자에는 포트에 사용할 새로운 라인의 상. Pattern

태를 연결하여 준다 에는 포트의 전체 비트 수를 지정한다. Port Width (bit) .

는 사용자가 지정한 포트를 통하여 디지털 데이Read from Digital Port VI

터를 읽어 들인다 에는 보드의 번호를 에는 사용. Device DAQ , Port Number

할 포트의 번호를 지정한다 에는 사용할 포트의 전체 비트. Port Width (bit)

수를 지정하면 출력 단자를 통하여 십진 형태로 표시해 준다Pattern .

만일 사용 도중 에러를 만난다면 대화상자를 활성화하여 에러 코드를 표시

하므로 실행을 계속할 것인지 아닌지를 결정해야 한다.

이번 장에서는 에서 제공하는 여러 가지 중에서 와LabVIEW DAQ VI Easy I/O

에 대하여 공부하였다Intermediate VI .

는 기본적인 아날로그 입력 아날로그 출력 디지털 입 출력 을 수행할 수Easy I/O VIs , , / (I/O)

있는 고급 함수로 이루어져 있다 이 함수를 이용하여 간단한 아날로그 입출력 과 디지털. (I/O)

처리를 상에서 할 수 있는 것이다 또한 들을 이용하면 사용 도중 발생LabVIEW . Easy I/O VI

하는 에러의 처리를 간단하게 할 수 있다 만일 이러한 들을 사용하는 도중 에러가 발생하면. VI

대화상자가 활성화되어 에러 코드를 표시하는데 사용자는 작업을 계속할 것인지 아닌지를 결,

정하면 된다.

함수를 와 비교할 때 들은 보다 하드웨어를 다Easy I/O Intermediate VI Intermediate VI

루는 데 용이하게 되어 있다 또한 프로그램을 개발하는 데 보다 많은 유연성과 효율성을 제공.

한다 들은 함수의 단점을 보안하는 데 사용할 수 있다. Intermediate VI Easy I/O .

요약

Page 276: Graphical Programming Labview

부 데이터 수집3

이 장의 따라하기는 보드를 갖추고 있는 독자들만 실행 가능합니다DAQ .

예제 1

보드를 이용하여 외부의 아날로그 신호를 읽어 들여 에 출력시키는DAQ Voltage meter

를 구성하시오VI .

프론트 패널

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 패널에서 디지털 컨트롤 개와 스트링 컨트롤 개를 만든3 1

다.

Page 277: Graphical Programming Labview

장 일반12 DAQ

컨트롤 팔레트 메뉴에서Numeric meter( 를 찾아서 알맞은 크기로)

놓는다.

불 메뉴에서 스위치를 찾아서 놓는다vertical .

블록 다이어그램의 루프를 알맞은 크기로 놓는다While .

함수 팔레트의 메뉴Data Acquisition ( 안에 있는 메) Analog Input

뉴( 에서) AI sample channel.vi( 를 찾아서 놓는다) .

블록 다이어그램에서 라고 주석이 붙어 있는 디지털 컨트롤에서 마Device

우스의 오른쪽 부분을 클릭하여 을 선택한다 원래representation . [DBL]

이었던 것을 으로 속성을 바꾼다[I16] .

다시 와 라고 주석이 붙어 있는 디지털 컨트롤에서 마우스의high low limit

오른쪽 부분을 클릭하여 을 선택한다 원래 이었던representation . [DBL]

것을 로 속성을 바꾼다[SGL] .

라고 주석이 붙어 있는 도 속성을 로 바꾼다Voltage meter [SGL] .

위 사항이 완료되면 와이어 각각의 아이콘을 연결한다.

예제 2

보드를 이용하여 부터DAQ 0 9.5 까지 간격으로 디지털 인디케이터에 신호를 출V 0.5V

력시키는 를 구성하시오VI .

프론트 패널

Page 278: Graphical Programming Labview

부 데이터 수집3

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 디지털 컨트롤 디지털 인디케이터, (Numeric 메

뉴 스트링 컨트롤 메뉴 을 찾아서 놓는다), (String & Table ) .

블록 다이어그램의 함수 팔레트에서 루프를 찾아서 알맞은 크기로 놓For

는다. 에 숫자 을 팝업하여 입력한다([N] 20 .)

수치 메뉴에서 를 찾아서 놓는다multiply .

블록 다이어그램에 라고 주석이 붙어 있는 디지털 컨트롤의 속성을Device

에서 로 바꾼다 그리고 이라고 주석이 붙어 있[DBL] [I32] . voltage output

는 디지털 인디케이터의 속성을 에서 로 바꾼다[DBL] [SGL] .

메뉴에서 을 찾아서 놓는다Time & Dialog wait until next ms multiple .

왼(

쪽에서 팝업하여 숫자 을 입력한다500 .)

메뉴 안에 있는 메뉴Data acquisition Analog Output ( 에서) AO

update channel( 을 찾아서 놓는다) .

각각의 아이콘을 와이어로 연결한다.

예제 3

보드를 이용하여 외부로부터 수집되는 아날로그 신호를 파형 그래프에 나타내고 그DAQ

신호의 샘플 수 샘플링 속도 등을 프론트 패널에서 변경시킬 수 있는 를 구성하시오, VI .

Page 279: Graphical Programming Labview

장 일반12 DAQ

프론트 패널

블록 다이어그램

새로운 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 디지털 컨트롤 스트링 컨트롤과 파형 그래프, 를 찾

아서 알맞은 크기로 놓는다.

블록 다이어그램에서 라고 주석이 붙어 있는 것의 속성을# of samples

에서 로 바꾼다 그리고 라고 주석이 붙어 있는[DBL] [I32] . samples/sec

것의 속성을 에서 로 바꾼다[DBL] [SGL] .

메뉴에서 을 찾아서 놓는다 번들의 왼쪽에 을 기입한Cluster bundle .( 0.00

다 처음엔 정수 이었던 것의 속성을 값으로 바꾸면 된다. [DBL] [SGL] .)

Page 280: Graphical Programming Labview

부 데이터 수집3

메뉴 안에 있는 메뉴에서Data acquisition analog input AI acquire

waveform ( 을 찾아서 놓는다 왼쪽 가장 위 부분에 팝업 메뉴를 이) .(

용하여 을 입력한다1 .)

각각의 아이콘들을 와이어로 연결한다.

예제 4

파일로부터 차원 배열 형태의 파형 데이터를 읽어서 파형 그래프에 나타내는 를 구1 VI

성하시오 사용할 파일은 독자들이 각자 엑셀에서 데이터 사이를 탭으로 분리한 형식을.

사용하여 준비하시오.

프론트 패널

블록 다이어그램

새로운 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 디지털 컨트롤과 파형 그래프를 찾아서 각각 알

맞은 곳에 놓는다.

Page 281: Graphical Programming Labview

장 일반12 DAQ

블록 다이어그램의 함수 팔레트에서 메뉴를 선택하여File I/O readfrom

spreadsheet file.vi( 를 찾아서 놓는다) .

메뉴에서 을 찾아서 놓는다 포지셔닝 툴로 을 한칸Cluster bundle . bundle

더 추가하고 의 맨 윗 부분에 을 연결한다bundle 0 .

의 중간에 디지털 인디케이터를 연결한다bundle .

의 단자를 의 아래 부분에read from spreadsheet file.vi all rows bundle

연결한다.

실행 버튼을 누르면 라는 대화상자가 나타난다choose file to read .

준비된 파일을 선택하면 그래프에 데이터가 그려진다.

예제 5

슬라이드와 스위치의 선택에 따라 대응되는 문자열을 스트링으로 출력Vertical Vertical

하는 예제로서 프론트 패널을 잘 살펴보고 블록 다이어그램을 구성하여 보시오.

프론트 패널

Page 282: Graphical Programming Labview

부 데이터 수집3

블록 다이어그램

Page 283: Graphical Programming Labview

장 일반12 DAQ

새로운 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 메뉴를 선택하여Numeric vertical slide (

를 찾아서 알맞은 크기로 놓는다) .

불 메뉴에서 스위치를 찾아서 놓는다vertical .

패널에 디지털 컨트롤과 스트링 인디케이터를 찾아서 놓는다.

블록 다이어그램의 함수 팔레트에서 스트링 메뉴를 선택하여 pick line &

append( ), select & append( 와) concatenate strings( )

를 찾아서 놓는다.

스트링 메뉴 안에 있는 메뉴를 선additional string to number functions택

하여 format & append( 를 찾아서 놓는다) .

에 쓰여 있는 영문 등 과pick line & append (INIT, VDC ) select &

와 에 쓰여져 있는 영문은 스트링 상수를 이용한append format & append

다.

각각의 아이콘을 와이어로 주의해서 연결한다.

Page 284: Graphical Programming Labview

개요1.

버전부터는 새로운 기능이 추가되었는데 요즘 윈도우에서LabVIEW 4.1 ,

사용되는 대부분의 프로그램들이 적용하고 있는 마법사 의 기능이다(Wizard) .

내셔널인스트루먼트 에서는 이 마법사의 기능을 보드를 사용하여(NI) DAQ

데이터를 습득하는 과정에서 사용자의 어려움을 덜어주는 데 적용하여

라는 새로운 기능을 만들어 내었다Solution Wizard .

이번 장에서는 의 기능을 이용하는 것에 대하여 배울 수Solution Wizard

있을 것이다 사용자는 자신의 애플리케이션을 의 기능을 이. Solution Wizard

용하여 쉽게 만들 수 있으며 기능을 추가하여 더 나은 애플리케이션을 제작,

할 수 있을 것이다.

이 장에서 배우는 것들2.

란 무엇인가Solution Wizard ?

의 사용법Channel Wizard

의 사용법Solution Gallery

사용자 애플리케이션 만들기DAQ (Custom DAQ Application)

chapter

13Solution Wizard

Page 285: Graphical Programming Labview

부 데이터 수집3

3. Solution Wizard

요즘 윈도우즈 프로그래밍에서는 하나의 새로운 경향이 생겨나기 시작했다.

프로그램을 사용하는 사용자를 위한 배려를 더 많이 하기 위해 보다 적은 노

력으로 프로그램을 사용할 수 있도록 하는 것이다 이것을 위하여 대부분의.

윈도우즈 프로그램은 마법사 라는 기능을 가지면서 새로 탄생하고 있(Wizard)

는데 이것은 사용자를 대화식으로 이끌어 가면서 결과를 프로그램이 자동으,

로 도출해 내는 것이다.

이러한 추세를 따라 에서도 마법사의 기능을 버전부터 사NI LabVIEW 4.1

용하기 시작하였다 에서는 이 기능을 보드를 사용하여 용 프로. NI DAQ DAQ

그램을 만드는 사용자를 위하여 사용자와의 대화 방식에 의해 자동으로 프로,

그램을 만드 것에 적용하였다 이 기능의 이름이 이다 우리. Solution Wizard .

말로 해법사 정도로 해석하면 될 것이다 그러나 이 기능은 현재. LabVIEW

에서만 사용이 가능하고 이나 또는for Windows SUN HP-UNIX Macintosh

에서는 사용할 수 없으며 보드를 사용하는 프로그램이 아니라면, DAQ DAQ

이 기능을 사용할 수 없다 하지만 이 기능을 사용하면 아주 쉽게 보드. DAQ

를 인식하고 채널을 할당하여 쓸 만한 프로그램을 만들 수 있다, DAQ .

의 사용법4. Channel Wizard

이번 절에서는 마법사의 기능을 따라하기 식으로 예제를 통해서 배워 보도

록 하겠다 예제는 마법사의 기능을 이용하여 센서를 통하여 온도를 측정하는.

프로그램을 만드는 것으로 사용자는 먼저 를 사용하여DAQ , Channel Wizard

자신이 보유하고 있는 보드의 채널을 인식시켜야 한다 사용자가DAQ .

를 사용하여 보드를 인식시켰기 때문에 마법사는 사용Configuration Utility

자가 어떠한 보드를 가지고 있는지는 알고 있다 하지만 사용자가 어떠한 채.

널을 사용할 것인지는 모른다 따라서 를 사용하여 사용할 채. Channel Wizard

널을 인식시켜 주어야 한다.

Page 286: Graphical Programming Labview

장13 Solution Wizard

위의 그림은 의 초기 화면이다 세 번째에 있는LabVIEW . DAQ Solution

버튼을 사용하여 마법사를 시작한다Wizard .

그러면 위와 같은 화면이 나타나면서 마법사 프로그램의 실행을 준비한다.

이제 우리는 위의 화면을 시작으로 에 들어 왔다 위의 화Solution Wizard .

면에서 에 들어가기 위해 버튼Channel Wizard Go to DAQ Channel Wizard

을 사용한다.

Page 287: Graphical Programming Labview

부 데이터 수집3

그러면 위와 같은 화면이 나타나면서 의 시작을 준비하게Channel Wizard

된다.

위의 그림이 의 초기 화면이다 현재는 어떠한 채널도 할당Channel Wizard .

되어 있지 않다 이미 채널이 할당되어 있다면 이것을 저장하기 바란다 아래에. .

는 저장된 파일을 읽고 쓸 수 있는 버튼이 준비되어Open, Save, Save As...

있으므로 사용자는 파일에 저장하였다가 나중에 불러서 사용할 수 있다 우리.

는 새로운 채널을 할당해야 하므로 버튼을 사용하여 채널 할당을 시작한New

다.

Page 288: Graphical Programming Labview

장13 Solution Wizard

채널을 할당하기 위해서 채널 이름을 주고 이것에 대한 간단한 설명을,

에 적어 주고 적당한 센서의 형태를 할당해 준다 우리Give it a description .

는 전압 측정 형태의 센서를 사용한다 센서의 형태에는 전압 측정형 전류 측. ,

정형과 등의 종류가 있다Thermocouple .

우리가 온도를 측정한다는 것을 아래의 체크 박스를 선택하여 알려 준 다음

버튼을 사용하여 다음 설정 화면으로 넘어간다Next > .

아래의 그림은 온도를 측정하는 데 필요한 물리량을 지정하는 데 사용한다.

화면이 나타나면 사용자는 센서가 읽어 들인 신호를 어떠한 형태의 스케일

을 사용하여 센서를 통하여 출력할 것인지를 결정해 주어야 한다 이 형태에.

는 등이 있다No Scalling, Map Ranges, New Custom Scale .

또한 센서의 출력 전압 범위를 지정해 주어야 하는데 우리는, Map Range

형태의 을 사용하고 부터Sensor Scale 0 1 까지의 센서 출력 범위를 사용하V

겠다 아래의 그림과 같이 설정을 하고 버튼을 누른다. Next > .

Page 289: Graphical Programming Labview

부 데이터 수집3

Page 290: Graphical Programming Labview

장13 Solution Wizard

위의 그림은 의 마지막 설정 화면이다 이미 사용자가Channel Wizard .

를 사용하여 설정한 보드를 선택하고 채널DAQ Configuration Utility DAQ

과 입력 모드를 선택해 주어야 한다 따라서 보드가 없는 사용자는. DAQ

를 사용할 수 없다 하드웨어에서는 자신이Solution Wizard . DAQ DAQ

를 사용하여 인식한 보드의 목록을 보여 주게 되어 있는Configuration Utility

데 이것 중에서 하나를 선택하면 선택한 보드의 사양을 알고 있기 때문에 사,

용 가능한 채널의 리스트가 자동으로 나타나게 된다 또한 선택 가능한 입력.

모드도 자동으로 나타난다 버튼을 누르면 는 설정이. Finish Channel Wizard

끝나게 된다.

위의 그림을 보면 지금까지 우리가 설정한 대로 채널을 인식하고 있다 우.

리는 번 채널을 사용하여 부터 까지의 온도를 읽을 수 있다 이것은0 0F 100F .̊ ̊센서의 0 부터V 1 까지의 전압을 형식으로 할당하여 읽어 들여서 나온V Map

값이다.

이제 설정값을 저장하고 나가기 바란다.

Page 291: Graphical Programming Labview

부 데이터 수집3

마법사기능은사용하기전에자신이보유한 보드의종류와입출력채널의수와번호DAQ ․를 알아 두는 것이 좋다.

의 사용법5. Solution Gallery

이제까지 에게 우리가 사용할 채널과 어떻게 이 채널을 사Solution Wizard

용할 것인가에 대하여 알려 준 것이다 이를 바탕으로 우리가 원하는 형태의.

프로그램을 자동으로 생성해 줄 를 사용해야 한다 이미VI Solution Gallery .

설정한 채널을 인식하여 사용할 수 있는 상태로 되면 아래의 그림과 같이

를 실행했을 경우에 라Solution Wizard View Current Wizard Configurator

는 버튼이 나온다.

우리는 자동으로 프로그램을 생성하기 위해 버튼을 누른다VI Next .

우리는 가지의 선택을 할 수가 있다 하나는 에 있는 이2 . Solution Gallery

미 만들어져 있는 프로그램을 사용하는 것이고 또 하나는 사용자가 일부분을,

다시 수정하여 사용할 수 있는 것이다.

이 절에서는 에 이미 만들어져 있는 를 사용하는 것에 대Solution Gallery VI

하여 배우고 다음 절에서 에 대하여 공부하기로 하겠, Custom DAQ Application

Tip

Page 292: Graphical Programming Labview

장13 Solution Wizard

다.

Page 293: Graphical Programming Labview

부 데이터 수집3

를 선택하고 버튼을 누르면 아래의 그림과 같은 윈Solution Gallery Next

도우가 활성화될 것이다.

우리는 리스트에서 원하는 형태의 를 선택하고 이것Gallery Category VI

에 맞게 에서 선택하면 된다 사용자는 어떠한 형태를 사용Common Solution .

할 수 있는지 알아 두기 바란다 우리는 중에서. Data Logging Simple Data

를 선택하여 데이터를 저장할 수 있는 를 만들기로 하겠다Logger VI . Next >

버튼을 누른다.

Page 294: Graphical Programming Labview

장13 Solution Wizard

마지막으로 설정되어 있는 채널 리스트가 나오는데 현재는, Temperature

라고 하는 이전에 우리가 설정한 것만 리스트에 나와 있다 우리는 이것을 선.

택하고 버튼을 누른다Open Solution .

그러면 위와 같은 윈도우가 나오면서 우리가 주문한 대로 를 준비하기 시VI

작하는 것이다 화면에는 우리가 알아 두면 유익한 몇 가지 내용이 나온다. .

만들어진 를 상에서 일반 처럼 수정하여 사용할 수 있다VI LabVIEW VI .

만일 이름을 기입하면 과 항을Channel , “device name” “Input limit”

무시해도 된다.

만들어진 를 사용자가 원하면 디스크에 저장할 수 있다VI .

등에 관한 내용을 사용자가 수정할 수 있다sample rate, trigger, time .

자 이제 우리가 주문한 가 완성되었다 아래 그림에 프론트 패널과 블록VI .

다이어그램이 있다.

Page 295: Graphical Programming Labview

부 데이터 수집3

우리는 를 이용하여 간단하게 프로그램을 만들었다Solution Wizard DAQ .

에 적용될 수 있는 대부분의 프로그램이 를 통하여 만들DAQ Solution Wizard

어질 수 있다 또한 사용자가 원하는 형태로 수정할 수 있다는 사실은.

의 필요성을 정당화시키는 것이다Solution Wizard .

위의 프로그램을 실행시키면 위와 같이 데이터를 저장할 수 있도록 대화상

자가 나타난다 저장할 파일의 이름을 입력하면 파일에 데이터들이 저장되는.

것이다.

만들기6. Custom DAQ Application

다음의 그림에서와 같이 의 번째 단계에서Solution Wizard 2 Custom DAQ

을 선택하여 자동으로 생성될 에 대하여 사용자가 더 자세한 주Application VI

문을 할 수 있다 버튼을 누른다. Next > .

Page 296: Graphical Programming Labview

장13 Solution Wizard

그러면 아래와 같은 화면이 나타나는데 항에는 현, Option Configuration

재 라는 말이 있는데 이것은 사용자가 어떠한 옵션No Data Option Selected ,

도 선택하지 않았기 때문이다 항에는 개의 버튼이 있는. Data Acquisition 6

데 그 중에서 사용자가 원하는 형태의 것을 선택하여 그 버튼을 누르면 된다, .

버튼을 누른다Analog Input .

을 선택하였기 때문에 이것에 대하여 다음과 같은 단계에 대Analog Input 4

하여 설정을 하여야 한다.

우선은 단계로서 사용할 장치와 설정되어 있는 채널을 선택하고 가지 단1 4

계에 대하여 설정해 준다.

단계에서는 읽어 들일 샘플에 대한 설정으로 하나의 샘플 다수개의 샘플2 , ,

또는 다수개의 샘플을 연속적으로 읽어 들일 수 있도록 설정할 수 있다.

단계에서는 샘플 시간 에 대한 것으로 단계에서 다수개3 (Sample Timing) 2

의 샘플을 선택하면 활성화된다 이것은 시간 신호에 대하여 내부 신. (Time)

Page 297: Graphical Programming Labview

부 데이터 수집3

호를 이용하느냐 또는 외부 신호를 이용하느냐를 설정할 수 있다.

단계는 트리거 를 사용할 것인지에 대한 것이다4 (Trigger) .

위와 같이 선택하고 버튼을 누른다OK .

그러면 아래와 같이 항에 우리가 설정한 대로 표시가Option Configured

되고 항에는 설정한 결과로 우리가 사용할 수 있는 여러 가지 해가, Solutions

기술되어 있다 현재는 와. Acquire Single value Single Value

가지의 해가 있는데 우리는 를 사용w/AMUX-64T 2 , Acquire Single value

한다 그 아래에는 라는 버튼이 있는데 이것을 누르면 위의. Get Solution Info ,

리스트에 있는 해에 대한 정보가 있다.

Page 298: Graphical Programming Labview

장13 Solution Wizard

해를 보기 위해 을 선택하면 되는데 다음에는 그 가 있다Open Solution VI .

프로그램을작성하기전에 를 사용하여 프로그램을 작성한 다음 자신에게Solutiion Wizard

맞게 수정하면 편리하다.

이렇게 하여 우리는 지금까지 에서 새롭게 제공하는LabVIEW Solution

에 대하여 공부하였다 를 잘 사용하면 사용자에게 많Wizard . Solution Wizard

은 이득이 있으므로 많은 연습을 하여 익혀 두기 바란다.

Tip

Page 299: Graphical Programming Labview

부 데이터 수집3

에서는 마법사 기능을 이용하여 사용자에게 원하는 형태의 들을 자동으로 생성LabVIEW VI

할 수 있도록 하고 있다.

를 사용하기 위해서는 를 사용하여 사용자가 보유하고 있Solution Wizard Channel Wizard

는 보드의 종류와 어떠한 채널을 어떠한 형태로 사용할 것인지를 미리 알려 주어야 한다DAQ .

를 사용하는 방법에는 두 가지 방법이 있다 하나는 를 사Solution Wizard . Solution Gallery

용하는 것이고 이것에 사용자의 세분화된 설정을 할 수 있도록 을, Custom DAQ Application

제공하고 있다.

사용자는 에서 생성된 를 사용하여 다시 원하는 형태로 수정하여 사용할Solution Wizard VI

수 있으며 자신의 프로그램으로 저장할 수 있다, .

요약

Page 300: Graphical Programming Labview

개요1.

우리는 이제까지 와 보드를 이용하여 데이터를 얻는 방법을LabVIEW DAQ

공부했다 하지만 일반적으로 데이터를 얻는 전용기를 사용하는 사용자라면 이.

전용 기기가 읽어 들인 데이터를 에서 처리하고 싶어할 것이다 우리LabVIEW .

는 이 전용기를 를 이용하여 컨트롤하는 방법을 배우게 될 것이다LabVIEW .

이렇게 하면 우수한 성능의 전용기가 읽어 들인 데이터를 에서DAQ LabVIEW

분석할 수 있는 것이다 또한 시리얼 포트 를 이용하여 기기를 조. (Serial Port)

작하거나 기본적인 통신을 수행하는 방법에 대해서도 배우게 될 것이다.

이 장에서 배우는 것들2.

시리얼 포트VISA, GPIB, (Serial Ports), VXI

인스트루먼트 드라이버 란 무엇인가(Instrument Driver) ?

시리얼 포트 통신 수행 방법(Serial Port Communication)

인터페이스 와IEEE 488(GPIB) (Interface) GPIB VIs

인스트루먼트 드라이버 사용법(Instrument Driver)

아스키 와 이진 파형 의 전달 방법(ASCII) (binary waveform)

chapter

14인스트루먼트 컨트롤

Page 301: Graphical Programming Labview

부 데이터 수집3

의 개요3. VISA

란 그리고 그 외의 형태를 갖는 기기를 드라이버를 호출함VISA GPIB, VXI

으로써 조작할 수 있도록 제작된 함수 를 말한다Single Interface (Library) .

그러나 는 그 자체로 인스트루먼트 프로그래밍 기능을 제공하지 않는다VISA .

는 저수준 드라이버를 호출할 수 있는 고수준의VISA API(Application

함수이다Programming Interface) .

VISA

GPIB VXISerial

OS Calls NI-488. NI-VXI

사용자는 함수를 이용하여 여러 가지 다른 종류의 입출력 형태VISA (I/O)

를 취하는 특정 기기를 조작할 수 있도록 를 제single instrument driver VI

작 할 수가 있다 일반적으로 이것은 기기와의 통신에 사용할 적당한 입출력.

형태를 선택하기 위하여 문자열이 함수를 통과하(I/O) (String) VISA Open

다가 입출력 형태가 결정되고 계정이 이루어지면 와(I/O) VISA Read VISA

와 같은 함수들을 이용하여 일반적인 방법으로도 기기 입출력Write VISA

활동을 시작할 수 있는 것이다 그러므로 프로그램은(instrument I/O) . GPIB

와 함수에 구애받지 않는다VXI .

또한 인스트루먼트 드라이버 는 인터페이스에 독VISA (instrument driver)

립적이므로 여러 종류의 시스템 에서 사용할 수 있다(system) .

는 표준 함수를 제공한다VISA .∙

인터페이스의 형식에 관계없는 독립성을 제공한다.∙

플랫폼에 독립적이다.∙

객체 지향적 이기 때문에 확장성과 새로운 기기에의 적용이 쉽다(object-oriented) API .∙

의 특징VISA

Page 302: Graphical Programming Labview

장 인스트루먼트 컨트롤14

다음은 의 내부 구조를 대략적으로 규정하고 있다VISA API .

자원 관리자(Default Resource Manager)자원 찾기- (Find Resource)계정 열기- (Open Sessions)

메시지 기반(Message based)읽기- (Read)쓰기- (Write)

레지스터 기반(Register based)읽기- (Read)쓰기- (Write)

속성(Properties)읽기- (Read, Get)쓰기- (Write, Get)

이벤트(Event)대기- 동기(Wait, )설치 핸들러- 비동기(Install Handler, )

함수들은 에 위치하고 있다VISA Function Instrument I/O VISA .▶ ▶

그러면 간단하게 함수에 대해서 소개해 보겠다VISA .

사용자는 자신의 시스템 내에 자원을 찾기 위해서 VISA Fine Resource

함수를 사용할 수 있다 함수의 원형은 아래와 같으며 개의 입력 단자와 개. , 2 3

의 출력 단자를 가지고 있다 위의 함수가 프로그램의 일반적인 시작점. VISA

이 된다 위의 함수를 사용하기 위해서는 입력 단자에 자원을 검. expression

색할 검색 명령어를 연결해 주면 된다.

Page 303: Graphical Programming Labview

부 데이터 수집3

다음의 표에는 검색 명령어들의 문법이 있다.

기기 자원(Instrument Resource) 표현(Expression)

GPIBGPIB-VXIGPIB or GPIB-VXIVXIAll VXIserialAll

GPIB[0-9]*::?INSTRGPIB-VXI?*INSTRGPIB?*INSTRVXI?*INSTR?*VXI[0-9]*::?*INSTRASRL[0-9]*::?*INSTR?*INSTR

메모리 접근 자원(Memory Access Resource)

표현(Expression)

VXIGPIB-VXIAll VXIAll

VXI?*MEMACCGPIB-VXI?*MEMACC?*VXI[0-9]*::?MEMACC?*MEMACC

함수의 출력은 단자에서 찾은 자원의 개수와 단자에return count find list

서 찾은 자원의 리스트이며 는 문자열 배열의 형태를 하고 있다 일, first list .

반적인 블록 선도의 모습은 아래의 그림과 같다.

자원의 위치와 정확한 이름은 다음과 같은 형식으로 출력하게 된다VISA .

Interface Type[board index]::Address::VISA Class

는 객체 지향적 인 함수이기 때문에 클래스에 대해VISA (object-oriented)

개념이 있어야 한다 클래스는 같은 부류의 함수들을 캡슐화. VISA VISA

시킨 것이다 대부분의 함수들은 클래스로 캡슐화되(encapsulation) . INSTR

어 있으며 그 외의 함수들은 규정에 의하여 첨가되어질 수 있다 사용, VISA .

자는 클래스를 팝업 메뉴를 이용하여 설정할 수 있다 다음의 그림은 그VISA .

예를 보여 주고 있다.

Page 304: Graphical Programming Labview

장 인스트루먼트 컨트롤14

만일 사용자가 클래스를 변경하였을 경우 설정한 클래스에 대한 함수만을

사용할 수 있으므로 와이어를 연결할 때 주의를 요한다 예를 들면 사용자가. ,

클래스 대신 클래스를 사용했다면 레지스터 접근 함수를INSTR GPIB VXI

와이어로 연결하여 사용할 수 없는 것이다.

자원을 찾았으면 자신의 시스템에 존재하는 자원을 이용하여 계정을 열어야

한다 아래의 함수는 함수의 원형을 보여 주고 있다. VISA Open .

계정을 열기 위해서 꼭 함수를 사용할 필요는 없으며 자원Find Resource ,

의 이름과 위치를 알고 있다면 직접 사용해도 되나 또한 대부분의 프로그램,

에서 여러 개의 기기를 사용한다면 각각의 계정을 열어 주어야 한다 일단 계.

정을 열었으면 닫아 주기를 해야 한다 함수와 함께 아래의 그림. VISA Open

과 같이 팔레트의 을 이용하여Control Path & Refnum VISA session▶

을 사용하여 계정을 열 수도 있다Control .

또한 다음의 그림에 함수의 원형이 있는데 프로그램을 올바르VISA Close ,

게 끝내려면 열린 계정은 항상 닫아 주어야 한다.

Page 305: Graphical Programming Labview

부 데이터 수집3

이 책에서는 이 정도의 내용만을 서술하니 관심이 있거나 를 사용할, VISA

사용자는 도움말이나 매뉴얼을 참고하기 바란다.

의 개요4. GPIB

는 이라고도 부르며 멀General Purpose Interface Bus(GPIB) IEEE 488

티미터 와 오실로스코프 와 같은 독립형 기기와의(Multimeter) (Oscilloscope)

통신 방법을 지칭하는 것이다 내셔널인스트루먼트 사. (National Instrument)

는 를 가지고 기기를 조작할 수 있도록 다양한 제품을 제작하고 있다 이GPIB .

것의 가장 일반적인 방법은 삽입형 보드를 컴퓨터에 설치하고 케GPIB GPIB

이플 을 이용하여 보드와 기기를 직접 연결하는 것이다(Cable) GPIB .

Page 306: Graphical Programming Labview

장 인스트루먼트 컨트롤14

함수를 이용하여 내셔널인스트루먼트LabVIEW GPIB 사의 인터페이GPIB

스 를 사용할 수 있다(interface) .

또한 는 내셔널인스트루먼트 사의 표준 드라이버를 사LabVIEW NI-488.2

용하고 있으며 메뉴의 팔레트에 전통적인 함Function Instrument I/O GPIB

수와 함수가 들어 있다488.2 .

표준으로는 과 두 가지가 있으며 휴렛팩커드GPIB IEEE 488 IEEE 488.2 ,

사에서는 프로그램 가능한 기기의 제어와 통신을 위해 를 디자인하였으GPIB

며 처음에는 라고 불렀음 이것은( HP-IB ), 1 의 빠른 데이터 전송률 때MB/s

문에 급속하게 컴퓨터간의 통신이나 주변 장치와의 통신을 위한 애플리케이션

에 퍼져 나갔다.

에서 제공하는 함수들은 절에서 기술하며 여기서는LabVIEW GPIB 13.9 ,

내셔널인스트루먼트 사에서 공급하는 하드웨어 중에서 와 호환을LabVIEW

이루는 장치를 몇 가지 기술해 본다.

AT-GPIB/TNT, AT-GPIB/TNT(PnP), AT-GPIB/TNT+, PCI-GPIBPCMCIA-GPIB, PCMCIA-GPIB+GPIB-ENETEISA-GPIBVXIpc Model 850NEC-GPIB/TNT, NEC-GPIB/TNT(PnP)GPIB-PCII/IIAPC/104-GPIBCPCI-GPIBGPIB-ENET

PMC-GPIB

Page 307: Graphical Programming Labview

부 데이터 수집3

AT-GPIB, AT-GPIB/TNTPCMCIA-GPIBPCI-GPIBVXIpc Model 850

GPIB-ENET

직렬 포트 의 개요5. (Serial Port)

이번 절에서는 직렬 포트의 개요와 직렬 통신 시 중요한 영향을 주는 인자

에 대해 간략하게 설명하도록 하겠다(factor) .

직렬 통신은 컴퓨터 상호간이나 프린터와 같은 주변 장치간에 데이(Serial)

터를 전달하는 데 많이 사용하고 있다 또한 직렬 통신은 하나의 통신. (Serial)

선을 따라 한 비트 씩 데이터를 전달하는 것으로 이것은 주로 보다 먼 거(Bit)

리에 보다 적은 전송률로 보내려 할 때 사용한다 많은 수의 기기들도. GPIB

직렬 통신이 가능하며 직렬 통신의 단점은 하나의 기계에서 하나의 통신 설,

정만이 가능하다는 것이다.

직렬 통신의 예를 들면 모뎀 과 전화선을 이용하여 데이터를 전달(modem)

하는 방법이 있다 직렬 통신의 더 자세한 예는. examples\instr\samplserl.lib

에 들어 있는 들을 보면 될 것이다VI .

는 를 가지고 있으며 이것을 사용하기 전에 사용자는LabVIEW serial VI ,

기기가 자신의 컴퓨터와 잘 연결되어 있는지를 확인하여야 한다 잘 연결이.

되어 있다면 이제 Function▶ Instrument I/O▶ 팔레트에 있는 를serial VI

사용할 수가 있다 는 다섯 가지의 를 가지고 있는데. LabVIEW VI , Serial Port

Page 308: Graphical Programming Labview

장 인스트루먼트 컨트롤14

Init, Serial Port Write, Serial Port Read, Bytes at Serial Port, Serial

등이 그것이다 함수들의 설명과 사용법은 절에서 배울 수Port Break . 13.8

있을 것이다.

직렬 통신을 할 때 가장 일반적인 문제는 두 기기 즉 송신측 와 수, (sender)

신측 간의 통신을 확실하게 유지하는 것이다 직렬 포트는 전달하거(receiver) .

나 받을 데이터를 임시 저장할 버퍼 를 가지고 있으나 이것은 한정된(buffer) ,

용량을 가지고 있다 만약에 통신 중에 버퍼가 꽉 찬다면 데이터 사용자가 데.

이터를 읽어 새로운 데이터를 읽어 들일 공간을 확보할 때까지 새로운 데이터

를 무시하고 버리는 문제가 발생하는 것이다.

이러한 문제를 없애기 위해 핸드셰이킹 이라는 것을 사용하(Handshaking)

는데 핸드셰이킹을 사용하면 송신측과 수신측은 버퍼가 차기 전에 서로에게,

통신으로 사인을 주고받는다 즉 송신측은 수신측으로부터 정보를 보내라는.

메시지를 받기 전까지 정보를 보내지 않고 대기하는 것이다.

사용자는 상에서 두 가지 방법의 핸드셰이킹을 할 수 있다 소프LabVIEW .

트웨어 핸드셰이킹과 하드웨어 핸드셰이킹이 두 가지 방법인데 사용자는 이,

두 가지 방법의 핸드셰이킹을 온 하거나 오프 할 수 있다 디폴트 값(on) (off) .

은 오프 라는 것을 명심하기 바란다(off) .

는 소프트웨어 핸드셰이킹이다 수신측에서 버퍼 가 꽉XON/XOFF . (buffer)

찼을 경우 송신측에게 를 보내서 정보를 보내지 않도록 한, XOFF(<Ctrl-S>)

다 이와 반대로 수신측의 버퍼 가 비어 있거나 정보를 받을 여유가. , (buffer)

있을 경우에는 을 보내서 정보를 보내도록 한다XON(<Ctrl-Q>) .

를 사용할 수 있을 경우 사용자는 와 를 사용XON/XOFF , <Ctrl-Q> <Ctrl-S>

하여 과 를 보낼 수 있다 만일 를 사용할 수 있는 상태XON XOFF . XON/XOFF

가 아닌 경우에는 이것을 일반 정보로 해석한다는 것을 염두에 두기 바란다.

중요한 점은 이진 정보의 경우에는 를 사용하지 말라는 것이다XON/XOFF .

이진 데이터 상에는 가 미리 들어 있어서 이것을 데이터<Ctrl-S>, <Ctrl-Q>

가 아닌 로 해석하기 때문이다XON/XOFF .

사용자는 에러 핸들러 를 이용하여 에러 코드를 볼 수 있다 이러한VIs . VIs

는 통신 중의 에러에 대한 설명과 프로그램을 계속 진행하기 위해 사용할 수

있는 옵션에 대해 설명해 준다.

또한 통신 중의 들에 의해 발생되는 에러들은 플랫폼에 따serial port VIs

라 다르기 때문에 시스템 매뉴얼을 참조하기 바란다.

Page 309: Graphical Programming Labview

부 데이터 수집3

플랫폼에 따라 직렬 포트의 번호가 다르기 때문에 아래에 다양한 플랫폼에

따른 직렬 포트의 번호를 열거하면서 이번 절을 마친다.

직렬 통신 함수에 대한 설명은 절을 참조하기 바란다13.8 .

윈도우즈 95/NT and 3.1

0 : COM 1 5 : COM 6 10 : LPT 11 : COM 2 6 : COM 7 11 : LPT 22 : COM 3 7 : COM 8 12 : LPT 33 : COM 4 8 : COM 9 13 : LPT 44 : COM 5

매킨토시

매킨토시 상에서 은 모뎀 을 나타내는데 과 드라port 0 (modem) , .ain .aout

이버를 사용한다.

은 프린터를 나타내는데 과 드라이버를 사용한다port 1 , .bin .bout .

유닉스(Unix)

과 를 사용하는 상Solaris 1 Concurrent PowerMAX Sun SPARCstation

에서는 포트 번호 은 를 은 를 나타낸다0 /dev/ttya , 1 /dev/ttyb .

를 사용하는 경우에는 포트 은 은 를Solaris 2 0 /dev/cua/a, 1 /dev/cua/b

나타낸다.

상에서는 포트 번호 은 은 을 나타낸다HP-UX 0 /dev/tty00, 1 /dev/tty01 .

의 개요6. VXI

최근에 계측 기기 시스템에서 많이 사용하고 있는 것이 바로 버스VXI

인데 이것은 최대 개의 슬롯을 가지고 있는 조금 거대한 형태를 하(bus) , 13

고 있으며 기기의 형태와 크기는 제작자에 따라 매우 다양하다 또한 사용자, .

는 몇 개의 다른 형식으로 를 사용할 수 있다 는 를 조작하VXI . LabVIEW VXI

기 위해서 고수준과 저수준의 함수를 제공하고 있으며VXI , Function▶

Instrument I/O▶ 에서 이 함수들을 사용할 수 있다VISA .

Page 310: Graphical Programming Labview

장 인스트루먼트 컨트롤14

의 개요7. Instrument Driver

이번 절에서는 인스트루먼트 드라이버 라이브러리의 설치 방법과 사용법을

설명하면서 시작하겠다 그리고 자신만의 인스트루먼트 드라이버를 만드는 것.

을 설명하면서 이 절을 끝마치겠다.

우리가 에서 프린터나 과 같은 기기를 사용한다면Windows 95 CD-ROM ,

먼저 에 사용할 장치의 드라이버를 설치하여야 한다 일반적으로Windows 95 .

드라이버는 하드웨어가 아닌 소프트웨어로서 특정 기기의 정보를 담고 있다.

따라서 이것을 설치해야만 기기를 제어할 수 있는 것이다 에서 외. LabVIEW

부의 전용 기기를 사용한다고 하면 우리는 이것에 대한 드라이버를 이DAQ

용하여야 한다 예를 들어 우리가 멀티미터 를 사용. HP 34401A (Multimeter)

한다고 하자 우리는 를 이용하여 외부에 있는 이 기기에서 데이터를 읽. VISA

어 들일 것이고 에서 드라이버를 이용하여 화면에, LabVIEW HP34401A HP

가 가지고 있는 기능에 맞게 디스플레이를 할 수 있는 것이다34401A .

따라서 인스트루먼트 드라이버 는 특정 기기의 기능에(Instrument driver)

맞게 제작된 소프트웨어를 말하고 이것의 형태는 특정 기기의 기능을 실제,

기기와 똑같이 디스플레이 하는 것으로 되어 있다 사용자 자신이. LabVIEW

에서 제공하지 않는 드라이버를 제작할 수도 있고, GPIB, Serial, CAMAC,

기기를 위한 드라이버를 약 여 개 가지고 있다 많은 수의 드라이버VXI 500 .

를 다 설명할 수는 없기 때문에 자신이 보유한 기기에 맞는 드라이버는 기본,

적으로 알아둘 필요가 있다.

Page 311: Graphical Programming Labview

부 데이터 수집3

다시 한번 정의하면 인스트루먼트 드라이버 란, (Instrument Driver)

LabVIEW의 표준 입출력 함수를 이용하여 기기와의 통신을 할 수 있는VISA

들을 말한다 각 들은 프로그램 안에서 사용할 수 있는 동작 명령어 예를VI . VI ,

들어 읽기 쓰기 트리거링 등과 같은 명령어와 대응한다 따라서, , . LabVIEW

인스트루먼트 드라이버를 사용하면 각 기기를 조작할 수 있는 저수준의 어려

운 명령어들을 익힐 필요가 없다.

위에 설명한 것과 같이 에는 직렬 포트를 사용할 수LabVIEW GPIB, VXI,

있는 다양한 인스트루먼트 드라이버를 제공하고 있으며 제공되는 인스트루먼,

트 드라이버들은 블록 다이어그램도 같이 제공하고 있기 때문에 사용자가 자

신의 요구에 맞게 수정하여 사용할 수 있다.

인스트루먼트 드라이버는 내셔널인스트루먼트 사의 웹 사이트나 인(web)

스트루먼트 드라이버 를 통하여 설치할 수 있다 또한 최신의 인스트루먼CD .

트 드라이버를 터치 톤 전화기를 사용한 내셔널인스트루먼트 자동 팩스 시- -

스템을 통하여 구할 수 있다.

번호는 이나 이며 웹사이트의 주소는(512)418-1111 (800)329-7177

이다http:// www.natinst.com/idnet .

만일 자신에게 필요한 인스트루먼트 드라이버가 당장 없다면 사용자는 아래

의 지시대로 하면 된다.

가장 비슷한 인스트루먼트 드라이버를 사용한다 명령어가 비슷하거나 기.

기의 제조 회사 같은 인스트루먼트 드라이버를 사용하면 된다.

인스트루먼트 드라이버 제작 방법에 따라 만들어서 사용한다.

인스트루먼트 드라이버는 디렉토리에 설치하여야 한다LabVIEW/instr.lib .

예를 들어 인스트루먼트 드라이버를 설치한다면, HP34401A LabVIEW/

디렉토리에 설치하면 된다instr.lib/hp34401a .

또한 그와 같은 디렉토리에 인스트루먼트 드라이버를 구성할 메뉴 파일과

라이브러리들을 찾을 수 있을 것이다 메뉴 파일은 팔레트 상에VI . Function

서 인스트루먼트 드라이버 들을 보여 주는 역할을 한다 라이브러리들VIs . VI

은 인스트루먼트 드라이버 들을 담고 있는 것이다VIs .

Page 312: Graphical Programming Labview

장 인스트루먼트 컨트롤14

직렬 포트 통신 함수8. (Serial Port Communication)

직렬 포트 통신 방법은 주변 기기나 프로그램 가능한 기기간의 통신에 매우

유용하게 사용되고 있다 따라서 잘 알아 둘 필요가 있음을 상기시킨다 직렬. .

포트는 하나의 통신선을 통하여 한 번에 하나의 비트만을 보내는 통신 방법으

로 먼 거리의 통신이나 데이터 전송률이 적은 경우에 사용한다.

일반적으로 컴퓨터에는 하나 이상의 직렬 포트가 있기 때문에 직렬 포트 통

신이 인기를 끌고 있으며 직렬 포트를 통하여 기기까지도 사용이 가능, GPIB

하다 하지만 직렬 포트는 하나의 포트를 통하여 하나의 장비와 통신을 할 수.

있다는 단점이 있다.

일반적으로 주변 기기는 문자열 전송의 끝을 알리는 하나의 문자를 사용하

고 있는데 캐리지 리턴 이나 프린터에 사용하는 라인피드, (Carriage) (Line

또는 세미콜론 등이 있다 주변 기기 사용 설명서를 이용한다면 주변Feed), .

기기의 제어 문자들에 관한 정보를 얻을 수 있다.

에서 직렬 포트를 이용하기 위해서는LabVIEW Instrument ▶ 팔레Serial

트에 있는 함수를 이용하면 된다.

는 특정 포트를 선택하여 원하는 형태로 설정을 하는 것Serial Port Init VI

이다 은 핸드셰이킹 을 설정하며 는. Flow control (handshaking) , Buffer size

가 위치할 입출력 버퍼 의 크기를 설정한다 사용할 포트의 번호를VI (buffer) .

에 연결하고 보 속도Port Number (Baud rate), Data Bits, Stop Bits,

를 각각 설정하면 직렬 포트를 사용할 수 있다Parity .

Page 313: Graphical Programming Labview

부 데이터 수집3

는 사용할 직렬 포트 번호를 연결하고 전송할 문자열Serial Port Write VI

을 연결하여 데이터를 전송하는 데 사용한다.

는 가 가리키는 직렬 포트에서Serial Port Read VI Port number request

에서 설정한 만큼 문자를 반환한다byte count .

는 지정한 포트의 입력 버퍼에서 바이트 수를 반환Bytes at Serial Port VI

한다.

예를 들어 사용자가 직렬 포트를 통하여 계측기의 데이터를 얻는 것을 생,

각해 보자.

아래에 그 예가 있다 우선 를 사용하여 직렬 포트를 초. Serial Port Init VI

기화해야 하고 그리고 를 사용하여 계측 기기에 명령, Serial Port Write VI

을 전달해야 하고 를 사용하여 직렬 포트에서 사용, Bytes at Serial Port VI

가능한 버퍼의 바이트 수를 알아내야 한다 마지막으로. , Serial Port Read VI

를 이용하여 계측 기기로부터 데이터를 읽어 들여야 한다.

Page 314: Graphical Programming Labview

장 인스트루먼트 컨트롤14

또한 직렬 포트를 사용하여 두 대의 컴퓨터간에 데이터를 주고받을 수 있다.

아래의 예제는 그 예를 보여 주고 있으며 트랜스미터 에서, (Transmitter) VI

는 초마다 무작위수 를 발생시키고 이것을2 (Random Number) To

함수를 이용하여 문자열로 변환시킨 후에 캐리지 리턴을 추가하여Fractional

를 사용하여 포트를 통해 전송한다Serial Port Write VI .

리시버 에서는 또 다른 컴퓨터에서 동시에 실행시켜야 하며(Receiver) VI ,

를 사용하여 직렬 포트를 검사한 후에 참 값Bytes at Serial Port VI (True)

이 발생하면 를 이용하여 발생된 무작위수Serial Port Read VI (Random

를 읽어 들이는 것이다Number) .

Page 315: Graphical Programming Labview

부 데이터 수집3

9. IEEE 488 (GPIB)

의 함수에는 와 전통적인 들을 가지고 있LabVIEW GPIB 488.2 VI GPIB VI

으며 는 와 호환성을 유지하고 있다 이번 장에서GPIB 488.2 VI IEEE 488.2 .

는 전통적인 들에게 초점을 맞추어 설명하겠다GPIB VI .

에서는 를HP(Hewlett Packard) General Purpose Interface Bus(GPIB)

년대 초에 개발하였다 에서는 를 년에 규격으로 정한1970 . IEEE GPIB 1975

이후 는 의 규격으로 인식되기 시작하였다GPIB IEEE 488 . GPIB, HP-IB,

등은 같은 의미로 사용하며 의 일반적인 개발 목적은 계측IEEE 488 , GPIB

기기와 컴퓨터를 이용한 검사에 동시성을 부여하기 위해서였다 그러나 이제.

는 이러한 목적이 반전되어 컴퓨터간의 통신이나 스캐너의 조작 등에 사용하

고 있다.

는 전선 병렬 버스 로 이루어져 있GPIB 24- (24-conductor parallel bus)

으며 디지털이다 이것은 개의 데이터 라인 개의 관리 라인. 8 , 5 (management

개의 핸드셰이크 라인line, ATN, EOI, IFC, REN and SRQ), 3 (handshake

그리고 개의 접지 라인 으로 구성되어 있다 또한line), 8 (ground line) . GPIB

는 8 병렬bit , 1 직렬 그리고 동기화 데이터 전송 방식을 사용하고 있byte ,

다.

GPIB VIs

는 통신을 하기 위해서 몇 개의 를 가지고 있다 대부분LabVIEW GPIB VI .

의 프로그램은 기기간의 데이터의 읽기와 쓰기를 많이 사용하므로GPIB

와 들을 소개하겠다GPIB Read GPIB Write VIs .

Page 316: Graphical Programming Labview

장 인스트루먼트 컨트롤14

함수는 이 지정한 장치에 문자열 데이터GPIB Write Address string GPIB

를 전달한다 는 를 어떻게 종료시키는지를 가리키는 것이. Mode GPIB Write

고 에 지정한 시간만큼 동작하며 는 의 동작 후 동작, timeout ms , Status GPIB

상태를 지정하는 곳이다 는 개의 요소를 지닌 배열의 형태.(Status 16 Boolean

를 하고 있으며 각 요소는 컨트롤러의 상태를 가리킨다GPIB .)

함수는 이 지정한 장치로부터GPIB Read address string GPIB byte

만큼 데이터를 읽어 들인다 는 와 함께 데이터 읽기를count . Mode byte count

종료하기 위한 조건으로 사용한다 출력은 이며 는. data string , status Write

함수와 마찬가지로 의 상태를 나타낸다GPIB Controller .

함수는 아래와 같은 사건이 발생할 경우에 종료하게 되어 있다GPIB Read .

에 지정한 만큼 읽은 후byte count byte∙에러를 감지하였을 경우∙

에 지정한 시간을 초과한 다음timeout ms∙가 종료 메시지를 받았을 경우VI∙가 종료를 알리는 문자 를 감지하였을 때VI (End of String, EOS)∙

함수는 이 지정한 장치로부터 의 종료가GPIB Status address string GPIB

완료가 된 후에 의 상태와 를 반환한다GPIB controller byte count . byte

는 의 마지막 실행 시 전송된 의 수를 반환한다count VI byte .

아래에는 개의 요소를 가진 의 배열 값을 나타내고 있다16 status Boolean .

만일 의 실행 중에 에러가 발생하면 번 를 인 로 설정하고VI 15 bit TRUE 1 ,

출력 단자에는 에러를 담고 있는 것이다 아래의 표에 에러의 종GPIB error .

류와 그 의미가 있다.

Page 317: Graphical Programming Labview

부 데이터 수집3

Status Bits TableStatus Bit Numeric Value Symbolic StatusDescription0 1 DCAS Device Clear State1 2 DTAS Device Trigger State2 4 LACS Listener Active3 8 TACS Talker Active4 16 ATN Attention Asserted5 32 CIC Controller-In-Charge6 64 REM Remote State7 128 LOK Lockout State8 256 CMPL Operation Completed12 4096 SRQI SRQ Detected while CIC13 8192 END EOI or EOS Detected14 16384 TIMO Timeout15 -32768 ERR Error Detected

Page 318: Graphical Programming Labview

장 인스트루먼트 컨트롤14

GPIB Error Codes TableGPIB Error Symbolic Status Description0 EDVR Error Connecting to Driver1 ECIC Command Requires GPIB Controller to be CIC2 ENOL Write Detected No Listeners3 EADR GPIB Controller Not Addressed Correctly4 EARG Invalid Argument or Arguments5 ESAC Command Requires GPIB to be System Controller6 EABO I/O Operation Aborted7 ENEB Non-existent Board8 EDMA DMA Hardware Not Detected9 EBTO DMA Hardware uP Bus Timeout11 ECAP No Capability12 EFSO File System Operation Error13 EOWN Shareable Board Exclusively Owned14 EBUS GPIB Bus Error15 ESTB Serial Poll Byte Queue Overflow16 ESRQ SRQ Stuck On17 ECMD Unrecognized Command19 EBNP Board Not Present20 ETAB Table Error30 NADDR No GPIB Address Input31 NSTRG No String Input (Write)32 NCNT No Count Input (Read)61 EPAR Serial Port Parity Error62 EORN Serial Port Overrun63 EOFL Port Receive Buffer Overflow64 EFRM Serial Port Framing Error65 SPTMO Serial Port Timeout, Bytes Not Received at SerialPort

Page 319: Graphical Programming Labview

부 데이터 수집3

10. 인스트루먼트 드라이버 의 사용법(Instrument Driver)

에는 많은 수의 를 가지고 있다 그 리스트를LabVIEW instrument driver .

를 이용하여 확인하여 보아라 만일 아래의 리스트에 사용자가On-line Help .

보유한 기기의 가 없다면 호환성이 있거나 비슷한 것을 골라 수정하여driver

사용하면 된다.

서로 다른 많은 종류의 기기가 있으므로 각각의 기기에 맞는 를 만드driver

는 방법에 대하여 여기서 설명할 수는 없다 하지만 각각의 기기에 맞는 프론.

트 패널을 사용하기 위해서는 모든 의 명령문 을 만driver (command string)

들고 이것을 기기에 보내 줄 수는 있다 명령문 은 일반적. (command string)

으로 기기의 형식에 맞게 만들어진 문자로 이루어져 있다 이제ASCII .

메뉴의 팔레트에 있는 함수를 사용하여 명령문Function String (Command

을 만드는 것에 대하여 기술하도록 하겠다string) .

String Function for Instrument Drivers

함수는 여러 개의 줄로 이루어진 문자열에Pick Line & Append line

가 지정한 줄에 을 첨가하여 새로운 을 만드는 함수이다 이index string string .

때 캐리지 리턴 은 줄과 줄 사이를 구분하여 준다(Carriage return) .

Page 320: Graphical Programming Labview

장 인스트루먼트 컨트롤14

함수는 두 개의 과 에 주어진Select & Append false string true string

을 값을 갖는 에 따라 첨가한다 만일 의 값string boolean selector . selector

이 라면 에 을 첨가하는 것이고 라면True true string string , False false

에 을 첨가한다string string .

함수는 주어진 를 이 지정한 형Format & Append number format string

식에 따라 문자열로 바꾼 후에 에 첨가하여 새로운 을 만들어 낸string string

다.

에 대하여 알고 싶으면 도움말을 이용하라Format String .

파형의 전달11. (Waveform Transfers)

대부분의 기기 즉 오실로스코프 나 스캐너GPIB , (oscilloscope) (Scanner)

와 같은 기기는 문자나 이진 문자열 로써 파형을 반환ASCII (binary string)

한다 만일 기기가 이진 문자열 을 사용한다면 아스키에 비하. (binary string)

여 더 적은 메모리를 사용하고 더 빠른 실행 속도를 보장해 준다 또한 아스키.

보다 더 적은 바이트 를 필요로 한다(byte) .

ASCII Waveform

예를 들어 보자 개의 점으로 이루어진 파형을 생각해 보자 각 점은. 1024 . 0

부터 사이의 값을 가질 것이며 문자를 사용하여 각 점을 나타내255 , ASCII

기 위해서 최대 4 가 필요할 것이다 최대bytes .( 3 가 필요할 것이며 콤bytes ,

마와 같은 분리 문자를 위하여 1 사용 따라서 사용자는 최대bytes ), 4096

와 머리와 꼬리말을 위한 메모리를 추가로 사용해야 한다bytes(4×1024) .

Page 321: Graphical Programming Labview

부 데이터 수집3

Binary Waveform Encoded as 1-Byte integers

위와 같은 형태의 이 이진 문자를 사용하면waveform 1024

와 머리와 꼬리말을 위한 메모리만을 사용해도 표시할 수 있bytes(1×1024)

다 각 점이 부호 없는 정수를 사용한다고 가정하면 이진 문자를 사용. 8-bit ,

하면 각 점을 나타내기 위해서 1 만이 필요하다bytes .

직렬 포트를 사용한 통신은 대의 컴퓨터나 또는 프로그램 가능한 주변 기기간의 통신에 주2

로 사용한다 일반적으로 직렬 통신은 데이터의 전송 속도가 느리거나 기기와의 거리가 먼 경.

우에 사용한다.

라이브러리에는 기기를 조작할 수 있는 함수들이 들어 있다 많이 사용하는 함GPIB GPIB .

수로는 등이 있으며 는 기기에게 데이터GPIB Write, GPIB Read, GPIB Status , GPIB Write

를 전달하거나 제어할 목적으로 명령을 전달할 경우에 사용하고 는 기기로부터 데, GPIB Read

이터를 받을 경우에 사용한다 는 의 종료 후에 의 상태를 표. GPIB Status VI GPIB Controller

시하여 준다.

에는 프로그래밍에 이상적으로 적합한 문자열 함수를 가지고 있는데 이 함LabVIEW GPIB ,

수들은 데이터의 형 변환을 쉽게 해준다.

요약

Page 322: Graphical Programming Labview

장 인스트루먼트 컨트롤14

예제 1

외부 장치와 로 통신하는 것을 이해하기 위한 따라하기 문제로 프론트 패널과 블록GPIB

다이어그램을 보고 연습하기 바란다.

프론트 패널

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 컨트롤 팔레트에서 디지털 인디케이터와 디지털 컨트롤을 찾아서

놓는다.

메뉴에서 스트링 컨트롤과 스트링 인디케이터를 찾아서 놓String & Table

는다.

메뉴List & Ring ( 에서) text ring( 을 찾아서 놓는다) .

메뉴에서 를 찾아서 놓는다 이 위에 불 메뉴에 있는Array & Table array .

를 가져간다round LED .

Page 323: Graphical Programming Labview

부 데이터 수집3

① ②

블록 다이어그램 (1)

다이어그램의 함수 팔레트에서 케이스 스트럭처를 찾아서 알맞은 크기로

놓는다 처음엔 위쪽에 이라고 되어 있는 부분과 라고 되어 있는 부. 0 True

분을 먼저 작성하기 위해서 위 다이어그램과 같이 설정해 놓는다.

먼저 왼쪽 번 케이스 에 메뉴( ) Visa (① 를 선택하여) Low Level

메뉴Instrument I/O ( 를 찾는다) .

이 메뉴 안에 있는 메뉴GPIB ( 를 선택하여) GPIB write( 를)

아서 놓는다.

메뉴에서Array index array( 를 찾아서 케이스와 케이스 사이에)

는다 왼쪽 하단에서 팝업 메뉴를 이용하여 를 입력한다. ( 15 .)

오른쪽 번 케이스 의 메뉴에 있는( ) GPIB GPIB status(② 를 찾아서)

놓는다.

다이어그램에 있는 아이콘의 속성을 알맞은 형태로 바꾼다.

와이어를 이용하여 아이콘들을 연결한다.

Page 324: Graphical Programming Labview

장 인스트루먼트 컨트롤14

③ ④

블록 다이어그램 (2)

번 다이어그램은 번 다이어그램의 다음 것이다 여기에. GPIB read③ ①

( 를 찾아서 놓는다) .

번은 부분인데 와 마찬가지로 를 찾아서 놓는False , True GPIB status④

다.

다이어그램에 있는 아이콘의 속성을 알맞은 형태로 바꾼다.

와이어를 이용하여 아이콘들을 연결한다.

Page 325: Graphical Programming Labview

…………………………………………………………………

제 부4

…………………………………………………………………

고급 기능…………………………………………………………………

장 고급 함수와 기능15

장 고급 파일 입출력 함수16

장 해석 함수의 소개17

장 프론트 패널 오브젝트18

…………………………………………………………………

Page 326: Graphical Programming Labview

개요1.

이 장에서는 에서 제공하는 보다 강력하고 진보된 함수들과 구조문LabVIEW

을 소개한다 또한 에는 일반적인 언어처럼 지역변수. LabVIEW (Local

Variable)와 전역변수 를 제공하는데 이번 장에서 이것의(Global Variable)

사용을 배울 수 있을 것이다 프로그램의 작성은 사용자의 실력에 따라 다양.

하게 작성할 수 있는데 같은 기능을 하는 프로그램이라도 실력이 있는 사용,

자는 고급 기능과 기술을 사용하여 성능을 향상시키면서 작성할 수 있다 이.

번 절에서는 이러한 고급 기능 몇 가지를 배울 수 있을 것이다 항상 생각을.

하고 이 책을 읽어야 한다 그래야만 실력이 향상되는 것이다 이 책이 전하는. .

단편적인 지식은 사용자의 프로그램 작성 능력에 큰 도움을 줄 수 없기 때문

이다.

이 장에서 배우는 것들2.

지역변수 와 전역변수 의 사용(Local Variable) (Global Variable)

실행 시스템의 이해VI

멀티태스킹과 멀티스레드

재진입 실행(Reentrant Execution)

chapter

15고급 함수와 기능

Page 327: Graphical Programming Labview

부 고급 기능4

3. 지역변수 와 전역변수(Local Variable) (Global Variable)

기술적으로 말하자면 지역변수와 전역변수는 스트럭처의 일종이다 일반적.

인 범용의 프로그래밍 언어를 사용해 본 사용자라면 그것들의 필요성을 미리

알고 있으리라 믿는다 범용 언어인 와 에서 사용할 수 있는 지역변수. C Pascal

와 전역변수를 에서 그대로 적용할 수 있으나 약간의 차이가 있다LabVIEW .

우리는 이것의 터미널을 이용하여 프론트 패널 상의 오브젝트들에게 값을 넘

겨주거나 받을 수 있다 하지만 블록 다이어그램 상에 있는 오브젝트들은 하.

나의 터미널만을 가질 수 있으므로 만약 사용자가 여러 위치에서 여러 개의

들에게 값을 주거나 받으려면 어떻게 해야 하겠는가VI ?

여기에 그 해답이 있다.

지역변수 란 블록 다이어그램상의 여러 위치에서 프론트(Local Variable)

패널 상의 오브젝트에게 오브젝트의 터미널에 와이어를 연결할 필요 없이

값을 주거나 받을 수 있도록 만들어져 있다.

전역변수 는 데이터의 형에 관계없이 서브 에 와이어(Global Variable) VI

를 연결할 필요 없이 여러 개의 들 사이에 데이터를 주고받을 수 있도록VI

만들어져 있다 또는 여러 개의 들을 동시에 실행시킬 필요가 있을 때. VI

사용한다 전역변수는 여러 면에서 지역변수와 비슷하지만 여러 개의 들. VI

사이에 데이터를 전달할 수 있다는 것에 차이가 있다.

지역변수3.1 (Local Variable)

지역변수 는 함수 팔레트의 스트럭처에 있으며 이것을 선(Local Variable)

택하여 제일 처음 사각형에 둘러싸여 있는 물음표를 볼 수 있을 것이다 이것.

을 오퍼레이팅 툴을 이용하여 클릭하면 현재 이름이 붙여져 있는 컨트롤과 인

디케이터들의 리스트가 나타날 것이다 이 리스트 중에서 하나를 선택하거나.

팝업 메뉴의 을 이용하여 선택할 수도 있다 또한 사용자는 오브Select Item .

젝트의 터미널에서 팝업 메뉴를 호출하면 Create▶ 을 이용할Local Variable

수 있는데 이것을 이용하여 지역변수를 만들 수도 있다.

Page 328: Graphical Programming Labview

장 고급 함수와 기능15

아래에는 지역변수를 사용하는 일반적인 이유가 몇 가지 보여지고 있다.

하나의 변수를 이용하여 여러 개의 루프를 실행시킬 수 있다 이것은 다른.

방법으로는 아마 불가능할 것이다.

어떠한 컨트롤이라도 가상적으로 인디케이터처럼 사용할 수 있다 또한 어.

떠한 인디케이터라도 컨트롤처럼 사용할 수 있다.

동시에 실행되는 두 개의 루프 조작하기3.2

우리는 전에 어떻게 가 데이터의 흐름을 제어하여 실행 순서를 제LabVIEW

어하는가에 대하여 배운 적이 있을 것이다 데이터 흐름의 원리는. LabVIEW

가 얼마나 직관적이고 프로그램하기 쉬운가 하는 문제에서부터 출발한다 그.

러나 때때로 프론트 패널에 있는 컨트롤이나 인디케이터의 터미널에 연결하지

않고도 데이터를 읽거나 쓸 경우에 봉착하게 된다 이것에 대한 고전적인 문.

제가 아래에 있다 그림에는 개의 루프가 있는데 이것들을 하나의 불. 2 While

스톱 컨트롤을 사용하여 동시에 끝내야 한다는 것을 보여 주고 있다.

Page 329: Graphical Programming Labview

부 고급 기능4

어떻게 이것을 할 수 있을까?

혹자는 아래의 그림처럼 간단하게 연결하여 사용할 수 있다고 생각할 것이

다 프로그램을 할 때는 잘 생각해야 한다 아무리 많이 공부를 해도 논리적으. .

로 생각하는 것에 약한 사람은 좋은 프로그램을 작성하기 힘들다.

잘 생각해 보면 위의 그림에는 오류가 있다 루프문은 실시간적으로 불 값.

을 검사해서 종료하도록 되어 있지만 아래의 그림처럼 외부에서 연결된 값은

루프의 수행을 완료한 후에 그 값을 검사하므로 사용자가 원하는 시기에 루프

를 종료할 수가 없다 하지만 조금 더 생각이 있는 사람이라면 아래의 그림처.

럼 트릭 을 사용하여 하나의 루프 안에 불 값을 넣어서 연결하고 그것(Trick)

을 외부의 루프로 길게 빼서 연결할 것이다.

하지만 이것도 내부에 연결된 루프는 원하는 대로 동작을 하겠지만 또 다른

하나의 루프는 제대로 동작할 수 없을 것이다.

이 딜레마에 빠진 문제의 답은 지역변수 를 사용하는 것이(Local Variable)

다 아래의 그림처럼 하나의 불 컨트롤을 만들고 이것에서 지역변수를 만들.

어서 다른 하나의 루프에 연결하면 된다.

Page 330: Graphical Programming Labview

장 고급 함수와 기능15

지역변수는 항상 자신이 속해 있는 프론트 패널 오브젝트의 최신 값을 가지

고 있다 이러한 이유로 하나의 컨트롤이나 인디케이터에서 여러 개의 지역변.

수를 만들어서 여러 곳에서 이것의 최신 값을 이용할 수 있는 것이다.

지역변수의 동작 방식3.3

지역변수가 가지고 있는 또 하나의 장점은 이미 만들어져 있는 컨트롤이나

인디케이터로부터 값을 읽거나 쓸 수 있다는 것이다 이것은 오브젝트의 특징.

이 아니므로 일반적인 방법으로는 만들 수가 없다 지역변수는 가지 동작 방. 2

식을 제공한다 하나는 읽기 모드로서 이것은 지역변수가 속해 있는. (Read)

터미널로부터 컨트롤처럼 값을 읽을 수 있는 것이고 또 하나는 쓰기, (Write)

모드로써 이것은 지역변수의 터미널을 통하여 인디케이터처럼 표시할 수 있는

것이다 지역변수는 이 두 가지 방식 중에서 하나의 동작 방식만을 가질 수 있.

지만 여러 개의 지역변수를 만들 수 있으므로 읽기와 쓰기 모드를 갖는 개의2

지역변수를 만들 수는 있다 아래의 것을 공식처럼 기억해라. .

읽기 모드 = CONTROL쓰기 모드 = INDICATOR

이것을 이해하는 또 다른 방법은 읽기 모드를 데이터 소스 로 그(Source) ,

리고 쓰기 모드를 데이터 싱크 로 이해하면 될 것이다 이 동작 방식을(Sink) .

변경하려면 팝업 메뉴의 를 이용하면 되는데 아래의 그림처럼Change to... ,

읽기 모드에서는 쓰기 모드보다 경계가 더 두꺼운 형태를 하고 있다.

연결을 하려고 할 때 좀더 세심한 주의가 필요하다 만일 읽기 모드에서 지.

역변수에 쓰기를 하려고 연결한다면 오류를 나타내는 끊어진 와이어를 볼 수

있는 것이다 그리고 항상 지역변수들에게는 이름을 달아 놓는 습관을 기르도.

록 해라.

Page 331: Graphical Programming Labview

부 고급 기능4

전역변수3.4 (Global Variable)

만일 사용자가 이전에 전역변수를 사용해 본 일이 없다고 한다면 우선은 축

하해 주고 싶다 전역변수는 가장 실수하기 쉽고 혼동되는 구조문의 일종이므.

로 여기서 다시 더 공부를 해야 할 필요가 있기 때문이다 전역변수는 종종 가.

장 치명적인 버그 를 만들어 내기도 하고 이상한 동작을 할 때가 많이(Bugs)

있으므로 확실하게 알고 사용해 주기 바란다.

지역변수가 단일 에서 사용되어 여러 개의 장소에서 하나의 변수 값을 이VI

용할 수 있었는 데 비하여 전역변수는 여러 개의 들에게 데이터를 넘겨서, VI

사용할 수 있다는 것이다.

아래의 예를 생각해 보라 두 개의 를 동시에 실행하고자 한다면 어떻게. VI

해야 할까 아래의 그림에는 가지 종류의 가 있는데 두 가지 모두 실행을? 2 VI

조작하기 위해 불 값을 가지고 있다 만일 두 개의 루프가 하나의 에 있는. VI

것이라면 지역변수를 사용하면 되지만 이것이 두 개의 로 구성되어 있기, VI

때문에 지역변수를 사용할 수는 없고 전역변수를 사용해야 한다, .

전역변수는 지역변수와 비슷하게 생겼지만 전역변수는 지구본 형상의

아이콘을 가지고 있다는 것이 그 특징이다“world” .

Page 332: Graphical Programming Labview

장 고급 함수와 기능15

전역변수 생성하기3.5

지역변수처럼 전역변수 역시 스트럭처 팔레트에 들어 있고 역시 읽기와 쓰,

기의 두 가지 동작 방식을 지원하고 있다 하지만 지역변수와 다르게 서로 다.

른 들만이 독립적으로 같은 전역변수를 사용할 수 있다 이것은 효과적으로VI .

여러 개의 들간에 데이터를 공유할 수 있는 길을 제공하는 것이다VI .

만일 팔레트에서 전역변수를 사용한다면 사각형에 물음표가 있고 그 안에

지구본 형상의 아이콘을 담고 있는 최초의 전역변수를 볼 수 있는 것이다 이.

것은 아직 정의되지 않았다는 것을 의미하는 것으로 이것을 더블 클릭하면 VI

들의 리스트를 볼 수 있는 것이다 사용자는 전역변수를 특수한 형태의 로. VI

생각하면 된다.

다음은 전역변수를 사용하는 데 있어 필요한 몇 가지 중요한 점을 표시하였다.

항상 전역변수를 초기화하여라.

전역변수를 이용하여 동시에 읽기나 쓰기를 하지 말아라.

또한 전역변수를 파일에 하나의 처럼 저장할 수도 있는데 일반적으로 확VI

장자는 을 갖는다.gbl .

아래의 예는 세 가지 형태의 전역변수 즉 수치 문자열 그리고 두 개의 값, , ,

을 담고 있는 클러스터에 대해 설명하고 있다.

사용자는 전역변수를 블록 다이어그램 상에 위치시키고 프론트 패널 상에서

이것을 정의해야 한다 또한 하나의 안에서 여러 개의 전역변수를 사용할. VI

수 있기 때문에 사용자는 어떠한 전역변수를 사용할 것인지 잘 선택해야 한다.

아래의 그림과 같이 사용자는 노드 위에서 팝업 메뉴의 메뉴를Select Item

이용하여 아이템을 선택해야 한다.

Page 333: Graphical Programming Labview

부 고급 기능4

언어의 실행 시스템4. G

이번 절에서는 의 멀티태스킹과 실행에 대해 배울 수 있을 것이다VI .

그래피컬 프로그램에서는 사용자가 동시에 여러 를 실행할 수 있다 게다VI .

가 주어진 안에서 병렬로 작성한 다이어그램도 동시에 실행할 수 있다, VI .

일반적으로 사용자는 멀티태스킹이 어떻게 이루어지는지 알 필요가 있다.

따라서 이번 절에서 잘 이해하기 바란다.

멀티태스킹 의 소개4.1 (multi tasking)

대부분의 컴퓨터는 하나의 프로세서만을 가지고 있다 이것이 의미하는 것.

은 주어진 시간에 하나의 일을 처리할 수 있다는 것이다 하지만 멀티태스킹.

을 이용하면 시간을 분할하여 일을 처리하고 다른 일을 처리하도록 나머지 시

간을 할당하는 것이다 시간을 작게 분할한 양이 많으면 많을수록 이것을 두.

가지 이상의 일이 동시에 이루어지는 것처럼 보인다.

멀티태스킹에는 두 가지 종류가 있는데 하나는 협동 형 멀티, (cooperative)

태스킹이고 또 하나는 선점 형 멀티태스킹이다, (preemptive) .

윈도우즈 과 매킨토시는 협동적 멀티태스킹을 사용한다 이것은 프로그3.1 .

램 자체가 다른 작업에게 일정 시간을 양보하는 것이다 대부분의 프로그램은.

사용자의 명령을 기다리는 데 상당한 시간을 보낸다 따라서 다른 작업에게.

양보할 시간을 많이 가지고 있는 것이다 하지만 프로그램이 시간을 양보할.

수 없는 정도로 많은 일을 하고 있다면 다른 작업은 실행할 기회조차 받지 못,

하는 것이다 따라서 협동적 멀티태스킹은 프로그램 작성 단계에서부터 이러.

한 것을 염두에 두고 프로그램되어져야 한다.

실제로 대부분의 프로그램은 프린팅 윈도우 이동 파일 저장과 같은 일을, , ,

처리할 때 협동적 멀티태스킹을 지원 받기 힘들다 즉 이런 일을 처리할 때는. ,

다른 작업을 수행하기 힘들다는 것이다.

많은 다른 애플리케이션들은 선점형 멀티태스킹을 지원하고 있다.

이러한 선점형 멀티태스킹은 스위칭과 스케줄링이라는 것을 이용한다 일단.

작업이 수행되는 최소 시간으로 시간을 분할하고 하나의 작업에 할당된 시간

이 끝나면 이 작업에게 대기하도록 명령하고 다른 작업에게는 작업을 시작하,

도록 명령을 하는 것이다 이러한 스위칭은 프로그램의 코딩에 관계없이 아무.

Page 334: Graphical Programming Labview

장 고급 함수와 기능15

지점에서나 일어나도록 처리한다.

멀티스레드 의 소개4.2 (Multi threading)

애플리케이션이 작업을 수행할 때 작업을 수행하는 방법은 여러 가지가 있

다 가장 쉬운 방법은 하나의 작업을 완전하게 수행하고 다음 작업을 수행하.

는 것이다 그러나 일반적으로 대부분의 프로그램들은 이론적으로 실행할 수.

있는 작은 단위로 나누어져 병렬로 실행된다 예를 들어 하나의 애플리케이션.

에서 사용자는 프린팅을 하는 동시에 계속해서 문서를 편집할 수 있다 멀티.

스레드는 멀티태스킹 개념을 하나의 애플리케이션의 실행에 적용한 것이다.

따라서 멀티스레드를 지원하는 프로그램은 여러 가지 작업을 병렬적으로 동시

에 수행할 수 있는 것이다.

협동형 멀티태스킹과 같이 협동적 멀티스레드를 지원하기 위해서는 사용자

가 프로그램을 작성할 때 다른 작업에게 시간을 양보하도록 작성해야 한다.

멀티스레드 안의 하나의 스레드는 애플리케이션과 동일한 프로그램으로 여겨

지며 협동적인 멀티스레드를 위해서는 이 단일 스레드를 잘 조직해야 한다, .

그러나 애플리케이션의 멀티스레드를 잘 조직할 수 있는 것은 매우 힘들며,

이러한 경우에 대부분의 협동형 멀티스레드를 이용하는 애플리케이션은 잠재

적으로 병렬 실행을 잃어 버릴 가능성이 있다.

몇몇 는 선점형 멀티스레드를 지원하고 있다 이러한 경우 는 선점형OS . OS

멀티태스킹과 같이 스위칭과 스케줄링을 이용하여 선점형 멀티스레드를 지원

한다.

실행 시스템4.3 G

프로그램 언어는 에서 지원하는 선점형 멀티스레드뿐만 아니라 멀티G OS

태스킹도 함께 사용한다.

이것을 위해 제한된 수의 스레드를 사용하며 어떤 경우에는 협동적 멀티스,

레드를 사용하기도 한다.

설명을 위해 사용자가 윈도우즈 를 사용하고 있다고 하자 그러면 애플리95 .

케이션은 멀티스레드를 지원 받을 수 있고 실행 시스템은 스레드를 이용하여,

의 실행을 다중 작업으로 한다 그러나 스레드의 수는 제한적이기 때문에VI .

병렬적으로 잘 조직된 애플리케이션은 스레드를 사용하지 않는 협동적 멀티태

스크를 사용하게 된다 병렬적으로 잘 조직된 프로그램은 스스로 멀티태스크.

Page 335: Graphical Programming Labview

부 고급 기능4

를 지원하도록 작성된 것이기 때문에 스레드가 모자라는 상황에서는 멀티태스

크를 이용하는 것이 낫기 때문이다.

멀티스레드 애플리케이션4.4

사용자는 에서VI Setup Execution Options Preferred Execution▶

을 사용하여 여섯 가지의 실행 시스템 중에서 하나를 선택하여 사용할System

수 있다.

아래에는 그 여섯 가지의 종류가 나와 있다.

사용자 인터페이스(User Interface)

표준(Standard)

인스트루먼트 입출력(Instrument I/O)

데이터 수집(Data Acquisition)

기타 1(other 1)

기타 2(other 2)

재진입 실행5.

재진입 호출의 이해5.1

일반적으로 같은 서브 를 동시에 호출하여 사용할 수는 없다 만일 하나VI .

의 를 서로 다른 곳에서 동시에 호출하면 하나의 호출이 서브 를 실행하VI VI

고 나서 또 다른 곳에서 호출한 를 실행하게 된다 만일 사용자가VI . VI Setup

을 이용하여 항목을 설정하게 되면 서로 다른 곳에서Reentrant Execution

Page 336: Graphical Programming Labview

장 고급 함수와 기능15

하나의 를 동시에 호출했을 경우에도 이것은 동시에 실행될 수 있다VI .

재진입 실행은 아래와 같은 경우에 유용하다.

가 일정한 시간을 기다리거나 시간 종료가 발생하는 경우VI

가 같은 안에서 데이터를 공유할 수 없을 때VI VI

사용자는 아래의 그림과 같이 의 에서VI Setup Execution Options

항목을 설정함으로써 재진입 실행을 할 수 있다 하지Reentrant Execution .

만 항목을 설정하면 다른 항목은 사용 불가능의 상태로Reentrant Execution

변하게 된다.

사용자가 항목을 설정하면 아래와 같은 항목을 설정할Reentrant Execution

수 없다는 것도 알아 두기 바란다.

Opening a front panel when loaded

Opening a front panel when called

Execution highlighting

Single-Stepping

위의 항목을 사용할 수 없는 이유는 하나의 를 서로 다른 곳에서 호출하VI

여 실행할 경우 데이터의 복사본 개를 가지고 있어야 하고 실행 상태도 가2 2

지를 유지해야 하기 때문이다.

재진입 호출의 예5.2

아래의 두 가지 예는 재진입 실행의 전형적인 면을 보여 주기 위한 예이다.

아래의 예는 입력으로 시간과 불을 취하고 이 시간이 될 때까지 기다리는

Page 337: Graphical Programming Labview

부 고급 기능4

이다 만일 이 를 하나 이상의 장소에서 호출하면 이것은 재진입이 되는VI . VI

것이다.

위의 는 함수가 현재의 시간을 초 단위로 읽어 들VI Get Time In Second

이고 함수가 이 시간을 날짜와 시간 단위의 클러Seconds to Date & Time

스터로 변환한다 이 시간이 을 거쳐 최종적으로 함수로 전달되. Bundle Wait

어 시간만큼 대기하게 된다.

위의 를 실행하기 위해서는 아래의 그림과 같이 시간과 분을 입력으로 주VI

어야 한다.

또 다른 예는 데이터를 저장하기 위해 를 재귀적으로 실행하는 예이다VI .

만일 사용자가 네 개의 실행 데이터에 대해 지수평균을 구하는 프로그램을 작

성한다고 하면 이전의 값을 기억하기 위해서 세 개의 시프트 레지스터를 사,

용해야 할 것이다.

이 를 서브 로 하여 두 개의 채널에서 읽어 들인 두 가지 수집 데이터VI VI

Page 338: Graphical Programming Labview

장 고급 함수와 기능15

를 이 함수를 이용하여 지수평균을 구하고자 한다면 다음의 다이어그램과 같

이 재진입 실행을 해야 한다.

실행 속도6.

아무리 컴파일러가 빠른 실행을 한다고 해고 시간은 최상의 성능을 위해 가

장 중요한 요소이다.

이 절에서는 의 실행 속도에 영향을 미치는 요소에 대해 언급하며 최상의VI

성능을 발휘하도록 사용자에게 필요한 기술을 소개한다.

실행 속도의 향상을 위해 아래의 항목을 체크해 본다.

입출력(I/O)

파일 데이터 수집 네트워크, GPIB, ,

스크린 디스플레이

큰 컨트롤 너무 많은 디스플레이 컨트롤 오버랩, ,

메모리 관리

배열과 문자열의 불필요한 사용 데이터 스트럭처의 불필요한 사용,

입출력6.1

입출력은 일반적인 계산을 수행하는 것보다 더 많은 시간을 사용하는 경우

가 있다 따라서 입출력의 사용은 최대한 줄이는 것이 실행 속도를 향상시키.

는 방법이다 따라서 사용자가 데이터 수집을 한다면 사용자는 최소의 데이터.

수집 를 사용하는 것이 실행 속도를 향상시킬 수 있는 방법이다VI .

예를 들어 사용자가 데이터 수집을, 100지점에서 수행한다면 개의 를100 VI

사용하는 것이 아니라 루프를 사용하여 하나의 데이터 수집 를 사용하는 것VI

Page 339: Graphical Programming Labview

부 고급 기능4

이 실행 속도의 향상에 크게 도움이 된다.

스크린 디스플레이6.2

프론트 패널 상에 있는 컨트롤을 다시 그리는 것은 실행 속도를 저하하는

또 하나의 요인이다 같은 컨트롤을 사용한다고 해도 복잡한 컨트롤은 실행.

시간을 더 느리게 하는데 예를 들어 그래프와 차트를 복잡하게 하는 것은 실,

행 속도를 크게 저하시킨다.

이러한 속도의 저하는 새로운 데이터가 기존의 데이터와 같을 경우에는 다

시 그리기를 수행하지 않는 컨트롤의 지능적인 기능으로 인하여 조금은 완화

되지만 그래프와 차트는 이러한 기능을 수행할 수 없다.

다시 그리는 비율이 가장 큰 문제인데 이것은 사용자가 최소한의 컨트롤을,

사용하면 그나마 완화된다 그래프와 차트의 경우에는 자동 스케일을 사용하.

지 않거나 스케일 마크와 그리드 를 사용하지 않으면 완화할 수 있다(grid) .

만일 컨트롤이 오버랩 되어 있고 이 컨트롤이 중요하게 사용(Overlapped) ,

되는 컨트롤이라면 이것 또한 실행 속도를 현저하게 저하시키는 요인이 된다.

만일 사용자가 프레퍼런스에서 를 사용하지 않는다면 더 많Smooth Updates

은 깜박거림을 경험하게 된다.

병렬 다이어그램6.3

만일 사용자가 아래의 그림과 같이 두 개의 루프를 병렬로 만들어 실행한다

면 실행 시스템은 두 루프를 주기적으로 반복하여 실행할 것이다 또한 두 루.

프 중에서 상대적으로 덜 중요한 루프가 있다면 그 루프 안에 함수를 사Wait

용하여 상대적으로 덜 실행하게 하면 된다.

Page 340: Graphical Programming Labview

장 고급 함수와 기능15

하나의 루프는 데이터 수집을 실행하고 있고 또 하나의 루프는 수집된 데이

터를 모니터링 하는 루프이다 이 다이어그램에 함수를 사용하면 지정한. Wait

시간마다 루프를 실행하여 가끔씩 모니터링 함으로써 데이터 수집에 더 많은

시간을 할당하는 것이다.

루프의 불필요한 계산6.4

루프문 안에 같은 값을 계산하는 식을 넣는 것보다 이것을 루프 밖으로 보

내는 것이 실행 속도에 도움이 된다.

아래의 예를 가지고 설명을 해 보자.

위의 나눗셈 연산은 항상 같은 값을 루프 안에서 계산한다 그러므로 이 나.

눗셈 연산을 루프 밖으로 보내서 계산하면 실행 속도 향상에 도움이 된다.

이제 다음의 다이어그램을 보자.

Page 341: Graphical Programming Labview

부 고급 기능4

위의 다이어그램에서 사용자가 전역변수의 값을 알고 있다면 위의 다이어그

램은 불필요한 시간을 소비하고 있는 것이다 따라서 사용자는 이 전역변수를.

루프 밖으로 보내면 실행 속도를 향상시킬 수 있다.

하지만 아래와 같이 루프의 밖으로 빼면 사용자는 실수를 한 것이다 반드.

시 시프트 레지스터를 사용해야 한다.

Page 342: Graphical Programming Labview

장 고급 함수와 기능15

지역변수 란 블록 다이어그램 상의 여러 위치에서 프론트 패널 상의 오브(Local Variable)

젝트에게 오브젝트의 터미널에 와이어를 연결할 필요 없이 값을 주거나 받을 수 있도록 만들

어져 있다.

전역변수 는 데이터의 형에 관계없이 서브 에 와이어를 연결할 필요 없(Global Variable) VI

이 여러 개의 들간에 데이터를 주고받을 수 있도록 만들어져 있다 또는 여러 개의 들을VIs . VIs

동시에 실행시킬 필요가 있을 때 사용한다 전역변수는 여러 면에서 지역변수와 비슷하지만 여.

러 개의 들간에 데이터를 전달할 수 있다는 것에 차이가 있다VIs .

대부분의 컴퓨터는 하나의 프로세서만을 가지고 있다 이것이 의미하는 것은 주어진 시간에.

하나의 일을 처리할 수 있다는 것이다 하지만 멀티태스킹을 이용하면 시간을 분할하여 일을.

처리하고 다른 일을 처리하도록 나머지 시간을 할당하는 것이다 시간을 작게 분할한 양이 많.

으면 많을수록 이것을 두 가지 이상의 일이 동시에 이루어지는 것처럼 보인다.

대부분의 프로그램들은 이론적으로 실행할 수 있는 작은 단위로 나뉘어져 병렬로 실행된다.

예를 들어 하나의 애플리케이션에서 사용자는 프린팅을 하는 동시에 계속해서 문서를 편집할

수 있다 멀티스레드는 멀티태스킹 개념을 하나의 애플리케이션의 실행에 적용한 것이다 따라. .

서 멀티스레드를 지원하는 프로그램은 여러 가지 병렬적으로 동시에 수행할 수 있는 것이다.

일반적으로 같은 서브 를 동시에 호출하여 사용할 수는 없다 만일 하나의 를 서로 다른VI . VI

곳에서 동시에 호출하면 하나의 호출이 서브 를 실행하고 나서 또 다른 곳에서 호출한 를VI VI

실행하게 된다 만일 사용자가 을 이용하여 항목을 설정하게. VI Setup Reentrant Execution

되면 서로 다른 곳에서 하나의 를 동시에 호출했을 경우에도 이것은 동시에 실행될 수 있다VI .

요약

Page 343: Graphical Programming Labview

개요1.

이번 장에서는 에서 제공하는 파일 입출력에 대한 고급 함수를 배LabVIEW

워 보도록 하겠다 파일에 대해서는 자신이 작성한 프로그램에서 사용할 적당.

한 파일 형태를 선택할 수 있도록 텍스트 데이터로그 이진(Text), (Datalog),

파일 등 가지 파일의 취급 방법에 대하여 배워 보도록 하겠다(Binary file) 3 .

이 장에서 배우는 것들2.

파일 경로에 대하여

데이터로그 파일 다루기(Datalog)

이진 파일 다루기(Binary File)

고급 파일의 입출력 함수3.

우리는 이미 장에서 파일 입출력 함수를 사용하여 일반적인 문서와 스프레8

드시트의 형태로 자신의 데이터를 파일로 저장하는 방법에 대하여 배웠을 것

이다 텍스트 형태의 파일 저장은 파일 저장의 전형적인 형태라는 점과 호환.

성이 있다는 점을 장점으로 가지고 있다 따라서 대부분의 는 이러한 파일. OS

을 취급할 수 있도록 지원하고 있다 하지만 텍스트 파일은 단점이 있다 이것. .

은 디스크의 용량을 많이 차지한다는 점과 읽고 쓰는 데 많은 시간이 소비된

chapter

16고급 파일 입출력 함수

Page 344: Graphical Programming Labview

부 고급 기능4

다는 것이다 따라서 에서는 이러한 단점을 보완하기 위해서 가지. LabVIEW 2

의 파일 형태를 더 취급하고 있다 이것은 데이터로그 와 이진 파일. (Datalog)

이다(Binary file) .

데이터로그 파일 형식은 에서 사용하는 것으로 프론트 패널 상의LabVIEW

정보를 저장하거나 다른 프로그램의 데이터를 저장하기 위해 사용LabVIEW

하는 특수한 형식의 이진 파일이다 따라서 사용자가 프론트 패널의 정보를.

저장하려고 한다면 데이터로그 형식을 사용해야 한다 사용자가 데이터로그.

파일 형식을 사용하여 파일을 저장하려고 할 때 프론트 패널 상의 컨트롤이나

인디케이터의 값들이 동시에 저장된다 나중에 이것을 읽어 들여서 프론트 패.

널의 값들을 볼 수가 있다 데이터로그 파일 형식은 에서만 사용할. LabVIEW

수 있다 사용자는 에 있는 메뉴를 이용하여 데이터로그 파일 형식. LabVIEW

을 사용할 수 있으므로 상당히 편리하다 또한 사용자는 클러스터와 스트링.

같은 데이터형의 저장으로 사용자가 직접 데이터로그 파일을 만들LabVIEW

수도 있다.

이진 파일 파일이라고도 함 이 메모리 상에 저장될 때는 데이(byte stream )

터를 이미지로 저장한다 따라서 사용자가 문서 작성기 등을byte-for-byte .

이용하여 이진 파일을 보려고 하면 알 수 없는 이상한 형식의 파일이 발생되

기 때문에 알아볼 수는 없다.

하지만 이진 파일은 저장 용량을 줄일 수 있다는 것과 읽고 쓰는 것을 빠르

게 할 수 있다는 장점이 있다 예를 들어. 8 정수를 개 가지고 있는 배bit 100

열을 이진 파일을 사용하여 저장한다면 100 가 필요하지만 텍스트 파bytes ,

일을 사용한다면 400 가 필요하다 이것은 정수 배열의 경우 배열 요소bytes .

하나에 대하여 이진 파일은 1 가 필요하지만 텍스트 파일을 사용한다면byte 4

가 필요하기 때문이다bytes .

ASCII Datalog Binary

사용하기 쉽다.∙다루고 보는 데 쉽다.∙많은 저장 용량이 필요∙하다.

상대적으로 사용하기 쉽다.∙사용하려면 특수한 프로그램∙이 필요하다.

에서만 사용할 수LabVIEW∙있다.

의 데이터나 프론트LabVIEW∙패널을 저장하기에 용이하다.

정확한 사용 규칙이 필요하다.∙저장 용량이 적고 처리 시간이∙빠르다.큰 용량의 파일을 실시간으로∙저장하는 데 용이하다.

Page 345: Graphical Programming Labview

장 고급 파일 입출력 함수16

파일의 경로 지정하기1.

파일을 저장하고 읽기 위해서 는 특별한 데이터 형 을 사LabVIEW (Type)

용한다 이것의 이름은 라고 하며 과 는. path , path control indicator Path &

팔레트에 들어 있다 문자열 컨트롤과 인디케이터와 비슷하게 생긴Refnum .

과 에 파일을 위한 절대 경로 또는 상대 경로를 지정하path control indicator

여 준다.

그러나 문자열 컨트롤과는 달리 자신이 사용하고 있는 의 문법에 맞는OS

경로와 파일명만을 입력할 수 있다 만일 파일 시스템의 문법과 용어에 대해.

서 익숙하지 않다면 매뉴얼을 참고하여라 예를 들어 설명하면 만일 사, OS . ,

용자가 라는 파일명을 경로명과 함께 사용하는 경우 아래와 같이sample.txt

각각의 에 맞게 사용하면 될 것이다OS .

Windows C:\TRAVIS\DATA\SAMPLE.TXTMacOS PowerHD:Travis:Data:Sample Text fileSun and HP usr/travis/data/sample_txt_file

파일을 새로 만들거나 열기를 수행할 경우 사용자는 경로와 파일명을 사용

해야 한다 만일 사용자가 이나 을 호출하였을 때 를. Open File New File Path

연결하지 않았다면 는 파일을 찾기 위하여 대화상자를 활성화시킬, LabVIEW

Page 346: Graphical Programming Labview

부 고급 기능4

것이다 또는 사용자가 함수를 사용하여 대화상자를 활성화시킬. File Dialog

수도 있다.

아스키 파일 읽고 쓰기2. (ASCII)

만일 사용자가 파일 입출력을 빠른 속도 없이 사용해도 된다면 아래와 같,

은 고급 파일 입출력 함수 를 사용하여 텍스트(high-level file I/O function)

파일로 저장하기 바란다 고급 파일 입출력 함수를 이용하면 파일을 열고 닫.

고 또 에러 검사까지 자동으로 한다 따라서 저수준 파일 입출력보다 시간을.

조금 줄일 수 있다.

반면 아래와 같은 저수준 파일 입출력 함수인 함수를 사용해도, Write File

시간을 줄일 수 있다.

입력은 다형성 을 제공한다 따라서 수치Data (Polymorphism) . (Numeric),

문자열 클러스터 등을 연결해도 무관하지만 어떠한 데이터(String), (Cluster)

형을 연결하느냐에 따라 파일의 형태가 결정된다 따라서 문자열을 연결하면.

텍스트 파일을 저장할 수 있는 것이다.

3. pos mode & pos offset

와 은 사용자의 파일 시스템과 관련이 있는데 이해하pos mode pos offset

기가 까다롭다 파일 입출력의 수행을 계속 유지하기 위해 사용자의 는 파. OS

일 마크 라는 보이지 않는 변수를 사용하는데 이것은 기준점을(file marker) ,

기준으로 파일을 마지막으로 저장한 위치를 바이트 단위를 사용하여 현재의

위치를 저장하는 것이다 파일을 저장할 때마다 는 기준점으로부터. LabVIEW

만큼 떨어진 위치에 에 따라 저장을 한다pos offset pos mode .

기준점은 파일의 시작점이며 는 이다 또한 파일의 끝에서pos mode 0 . pos

는 이며 파일을 마지막으로 읽거나 저장한 현재 위치의 는mode 1 , pos mode

이다 함수를 사용하여 새로운 데이터의 삽입 지점을2 . Write File pos mode

Page 347: Graphical Programming Labview

장 고급 파일 입출력 함수16

와 을 사용하여 조작할 수 있으며 파일을 조작하는 고급 기법 중의pos offset ,

하나인 무작위 접근을 사용할 수 있다(random) .

위에 설명한 개념을 돕기 위하여 아래의 그림을 가지고 설명해 보겠다.

Beginning of file

(b)

Data

(a) (c)

Beginning of file End of file

는 사용자가 마지막으로 읽거나 쓰기를 한 현재의 위치이다file marker .

세 부분은 사용자가 사용할 수 있는 영역으로 아래와 같은 값으(a), (b), (c)

로 사용자가 접근할 수 있다.

는 은 양수(a) pos mode 0(relative to start of file), pos offset

와 둘 다 연결하지 않는다(b) pos mode pos offset .

는 은 양수(c) pos mode 2(write relative to file marker), pos offset

데이터로그 파일 읽고 쓰기4. (Datalog)

데이터로그 파일은 의 프론트 패널 상의 클러스터 문자열 불 배LabVIEW , ,

열과 같은 객체를 저장하는 특정한 형태의 이진 파일이다 사용자가 데이터로.

그 파일을 저장할 때마다 는 데이터의 라는 것을 사용한다LabVIEW record .

라는 것은 파일 안에 존재하는 일종의 파일과 같다 그러나 를 사용record . OS

하면 하나의 파일만을 볼 수 있지만 안에서는 데이터로그 파일 안, LabVIEW

에 있는 여러 개의 를 볼 수 있다 이 파일의 구조적인 특징은 사용자record .

가 파일 내에 존재하는 를 무작위 로 접근 할 수 있record (random) (access)

다는 것이다 또 하나의 특징은 사용자는 얼마나 많은 바이트가 필요한지 알.

필요가 없다는 것이다 데이터로그 파일은 불 배열과 같은 몇 가지 데이터형. ,

을 섞어서 사용하는 데 더욱 유용하다.

아래에는 데이터로그 파일을 만드는 가지 방법이 있다2 .

함수는 메뉴에 있는 데이터로그 메Front Panel Datalogging Operation

뉴를 사용한다 이 메뉴는 를 제외한 프론트 패널상의 정보를. file I/O code

파일로 저장한다 메뉴의 부 메뉴를 이용하든가. Operation log at

Page 348: Graphical Programming Labview

부 고급 기능4

메뉴를 이용할 수 있다completion .

이나 함수를 사용하여 데이터로그 파일을 읽거나 쓸Read File Write File

수 있다 이 경우에는 프론트 패널 전체를 기록하는 것이 아니라 사용자가.

지정한 데이터를 저장할 수 있다.

데이터 로깅5. Front File (Data Logging)

데이터로그 파일은 사용하기 쉽다 블록 다이어그램 상에 프로그램이 필요.

없기 때문이다 사용자가 데이터 로깅을 가능 상태로 만들어 놓으면. (enable) ,

는 프론트 패널 상의 모든 컨트롤이나 인디케이터의 정보를 저장한LabVIEW

다 나중에 사용자가 이것을 호출하여 사용할 수 있으며 다른 에서도 이 파. , VI

일을 사용할 수 있다.

프론트 패널 상의 정보를 저장하기 위해서는 메뉴의Operation Data

Logging▶ 를 사용하면 된다 만일 프론트 패널 상에 컨트롤이나 인디Log... .

케이터가 없다면 아래와 같은 로그 파일을 만들 수 없다는 메시지를 전달하게

되고 로그 파일을 만들 수 있다면 파일의 이름을 주어야 한다, .

Operation▶ 을 사용하면 매시간 자동으로 로그 파일을Log at Completion

만들게 된다 매시간 같은 이름의 파일에 를 첨가하는 것이다. record .

로그 파일을 보기 위해서는 Operation▶Data Logging▶ 를 사Retrieve...

용하면 되는데 아래와 같이 툴바의 모양이 바뀌게 된다, .

Page 349: Graphical Programming Labview

장 고급 파일 입출력 함수16

현재 상자의 검은 부분 안의 숫자는 사용자가 현재 보고 있는 의 번record

호를 말한다 괄호로 둘러싸인 숫자는 의 수를 말해 주고 있다 좌측의. record .

을 이용하여 레코드를 변경하면서 볼 수 있다 우측의 시간up/down control .

과 날짜는 가 저장된 시간과 날짜를 의미한다 현재 선택된 를record . record

쓰레기통 형상의 버튼을 이용하여 지울 수 있으며 버튼을 누르(Trash) , OK

면 빠져 나갈 수 있다.

프로그램에서 직접 로그 파일을 보기 위해서는 로그 파일을 서브 로 사용VI

하여 아래의 그림과 같이 팝업 메뉴의 를 사용하면Enable Database Access

된다.

위와 같이 선택하였을 경우 우습게 생긴 노란색의 프레임이 아래의 그림처,

럼 나타나게 되는데 에서는 이것을 라고 소개하고 있다LabVIEW halo .

만일 사용자가 서브 를 실행하는 경우 실행되지 않을database-access VI

것이다 대신 프론트 패널 상으로 저장되어 있는 데이터를 입력에 연결된. ,

번호에 따라 클러스터의 형태로 보여 주게 된다 클러스터에서 데이터record .

의 순서는 프론트 패널 상의 객체의 순서와 같다.

Page 350: Graphical Programming Labview

부 고급 기능4

프로그램으로 데이터로그 파일 다루기6.

메뉴를 이용하여 데이터로그 파일을 읽고 쓸 수도 있지만 데이터로그 파일,

을 다루는 고급화된 방법으로 과 을 사용하는 방법이 있Read File Write File

다.

프로그램에서 데이터로그 파일을 사용하면 프론트 패널 상의 모든 컨트롤과

인디케이터를 저장할 필요가 없다 사용자가 원하는 컨트롤과 인디케이터의.

값만을 저장하고 읽을 수 있다는 것이다 사실 데이터로그 파일을 사용하는.

이유는 많은 수의 를 사용하여 프론트 패널 상의 데이터를 자장하기 위record

해서이다.

설령 사용자가 하나의 데이터형을 사용하였다 할지라도 다양한 데이터형을

사용하여 클러스터를 만들 수 있다 데이터형은 배열 문자열. (array), (string),

수치 불 등이 사용될 수 있다 사실 데이터로그 파일의(numeric), (boolean) .

사용에서 중요한 점은 텍스트나 텍스트 헤더의 사용 없이 에서 직접LabVIEW

프론트 패널 상의 변수를 사용할 수 있다는 것이다.

만일 사용자가 과 함수를 사용하여 데이터로그 파일Read File Write File

을 다룬다면 와 은 변하게 된다 이것은 와pos mode pos offset . file marker

관련되는 대신에 번호와 관련되는 것이다 예를 들어 함수record . Read File

를 사용하게 되면 특정 를 지정하기 위해 입력 단자를 사용record pos offset

하는 것이다 또한 단자는 얼마나 많은 수의 를 사용하느냐와 관. count record

계하는 것이지 몇 바이트를 읽어 들일 것인지에 대한 입력으로 사용하는 것이

아니다.

함수를 사용할 때 단자에 연결해야 한다 이것은“data type” . New File

이나 과 같은 함수를 같이 사용할 때 연결해 주어야 하며Open File , Read

에는 연결을 안 해도 된다 이러한 함수를 같이 사용함으로써File . Read File

과 함수에게 데이터로그 파일을 사용한다는 것을 알려 주는 역할Write File

을 한다 따라서 와 과 와 같은 입력 단자의 변화를. pos mode pos offset count

생기게 하는 것이다.

데이터로그 파일을 사용할 때 파일 입출력 함수의 단자에, “data type”

연결해 주어야 한다 은 예외이다 에는 사용할 데이터로. Read File . Read File

그 파일의 이름을 지정해 주어야 하기 때문이다.

이진 파일을 사용할 때 단자의 사용은 이나“data type” Read File Write

에만 사용한다 따라서 사용자는 이나 함수에는 연File . New File File Dialog

Page 351: Graphical Programming Labview

장 고급 파일 입출력 함수16

결하면 안 된다.

위의 예는 데이터로그 파일을 읽기 위해 사용하는 의 예이다 한번 따라VI .

해 보기 바란다.

또한 데이터로그 파일을 사용하는 예제(examples\file\datalog.lib\Simple

가 있다Temp Datalogger.vi) .

예제는 온도와 시간 및 날짜를 수치Simple Temp Datalogger (numeric)

형으로 저장하는 예이다 또한 위의 예에서는 사용자가 빠뜨리기 쉬운 에러.

처리까지 하고 있다 파일 입출력 함수를 사용할 때에는 항상 에러 처리를 하.

는 것이 좋다는 것을 명심하기 바란다.

데이터로그 파일을 읽어 들이는 예제가 Simple Temp Datalog

Page 352: Graphical Programming Labview

부 고급 기능4

이다Reader.vi .

이진 파일 읽고 쓰기7.

이진 파일 은 일명 바이트 스트림 파일이라고도(Binary file) (byte stream)

하며 개의 바퀴를 가진 포르쉐 자동차에 텍스트 파일을 태운 것과 같다 이, 18 .

것은 매우 빠르며 매우 작기 때문이다 단점이 있다면 파일을 읽기 위해서는.

이진 파일의 형식을 사용자가 미리 알아야 한다는 것이다 일반적으로 사용자.

가 알아보기는 힘들다 이진 파일에 대한 정확한 헤더와 저장 형태에 대한 정.

보가 없기 때문이다.

요약하면 이진 파일은 사용하기가 힘들다 하지만 에는 이진 파, . LabVIEW

일을 읽고 쓸 수 있는 함수를 제공하고 있다 이것은 의. File I/O Binary File

에 들어 있다VIs .

Page 353: Graphical Programming Labview

장 고급 파일 입출력 함수16

여기에는 개의 형 데이터를 이진 파일로 읽고 쓸 수 있는 가 들어 있2 I16 VI

다 또한 형을 다룰 수 있는 가 개 들어 있으며 가지 모두 데이터를. SGL VI 2 , 4

차원이나 차원의 배열로 취급한다 아래는 함수들의 기능 설명이다1 2 . .

는 에 차원이나 차원 배열을 이진 파일로Write To I16 File VI file path 1 2

저장한다 사용자는 새로운 파일을 만들거나 입력 단자에. Append to File

값을 연결하여 기존의 파일을 이용할 수 있다True .

는 형의 이진 데이터를 읽어 들인다 만일 사용Read From I16 File VI I16 .

자가 읽어 들일 부분의 파일의 줄 수와 열 수를 알고 있다면 이것을 입력으로

하여 정확한 차원 배열을 만들어 낼 수 있다 그렇지 않고 연결하지 않고 파2 .

일 전체를 읽어 들인다면 차원 배열로 출력하게 된다1 . start of read offset

단자는 무작위 접근 을 하기 위해 오프셋을 단위로 지(random access) byte

정하게 된다.

아래에는 형의 이진 파일을 사용하기 위한 개의 가 있다 형SGL 2 VI . I16 VI

와 같으나 다만 형의 을 처리한다는 것이 다르다SGL numeric .

Page 354: Graphical Programming Labview

부 고급 기능4

다음 그림은 이진 파일을 읽어 들이기 위한 의 블록 다Read Binary File.vi

이어그램의 예이다

또한 이진 파일을 만들기 위한 의 예도 있다Write binary File VI .

보는 것으로 만족하지 말고 따라서 한번 직접 만들어 보기 바란다 이론적.

으로 아무리 많이 알아도 필요 없다 응용할 수 있는 능력이 중요하기 때문에.

위의 예와 같은 기본적인 예들을 훤히 알고 있어야 한다.

Page 355: Graphical Programming Labview

장 고급 파일 입출력 함수16

Page 356: Graphical Programming Labview

부 고급 기능4

일반적으로 에서 사용하는 파일의 종류에는 가지 종류가 있다 이것들은 서로 장단LabVIEW 3 .

점이 있으며 아래와 같다.

ASCII사용하기 쉽다.

다루고 보는 데 쉽다.

많은 저장 용량이 필요하다.

Datalog상대적으로 사용하기 쉽다.

사용하려면 특수한 프로그램이 필요하다.

에서만 사용할 수 있다LabVIEW .

의 데이터나 프론트 패널을 저장하기에 용이하다LabVIEW .

Binary정확한 사용 규칙이 필요하다.

저장 용량이 적고 처리 시간이 빠르다.

큰 용량의 파일을 실시간으로 저장하는 데 용이하다.

파일에 사용할 경로를 지정하기 위해서 사용자는 과 를 사용할 수 있path control indicator

다 데이터로그 파일은 프론트 패널 상의 컨트롤이나 인디케이터의 값을 저장하기 위해 사용.

하는 특수한 형태의 이진 파일이다 데이터로그를 이용하기 위해서는 상에서. LabVIEW

메뉴를 사용할 수도 있고 또는 프로그램에서 직접 사용할 수 있다 이것은Operation . File I/O

의 과 을 사용하면 된다Read File Write File .

이진 파일 은 매우 작지만 빠른 파일이다 사용자가 이진 파일을 직접 볼 수는(Binary file) .

없지만 의 를 이용하면 이진 파일을 읽고 쓸 수 있다, LabVIEW Binary File VIs .

에는 개의 가 있는데 형 데이터를 읽고 쓰기 위한Binary File VIs 4 VI I16 Read To/Write

과 형을 사용하기 위한 가 있다 이들은From I16 File SGL Read To/Write From SGL File VI .

같은 형태를 하고 있지만 형 들은 배열을 형 는 수치 데이터를 취급한다I16 VI , SGL VI .

요약

Page 357: Graphical Programming Labview

개요1.

이번 장에서는 데이터의 처리와 해석을 에서 할 수 있도록 제공되LabVIEW

는 해석 함수에 대하여 배워 보기로 하겠다 사용자에게 공학적인(Analysis) .

감각이나 수학적인 배경이 있어야 하겠지만 이번 장에서는 조금 쉬운 부분을,

다루도록 하겠다 또한 함수의 특수성에 의해 레퍼런스 매뉴얼. (Reference

또는 메뉴의 레퍼런스를 참고하기 바란다 따라서 이Manual) Help On-line .

장에서는 함수들을 사용한 예를 소개하겠으며 에서 제공하는, LabVIEW

들에는 어떠한 것들이 있는지만을 알고 있으면 사용법은 책을 보Analysis VI

면 되니까 외우지 말고 어떠한 역할을 하는 함수가 있는지만 기억해 두기 바

란다.

이 장에서 배우는 것들2.

들의 소개Analysis VIs

에러 리포팅

샘플 시그널

신호 발생과 주파수 분석

chapter

17해석 함수

Page 358: Graphical Programming Labview

부 고급 기능4

해석 함수3. (Analysis VI)

에서 제공하는 해석 함수들은 그들의 사용 목적에 따라LabVIEW DSP,

등으로 나뉘어지는데 다음과 같은 특징을 가지고 있다Numeric, Statistics , .

디지털 신호 처리1. (DSP, Digital Signal Processing)

여기에 속하는 함수들은 주파수를 이용한 변환 주파수를 이용한 해석 시간, ,

을 이용한 해석 디지털 필터 함수 데이터 윈도, IIR (Digital Filter Function),

우 디지털 파형 발생 등을 수행한다(Data Windowing), .

수치 해석2. (Numeric)

여기에 속하는 함수들은 수치 해석과 벡터와 행렬 계산에 필요한 대수 함수

들을 제공한다.

통계3. (Statistics)

여기에 속하는 함수들은 통계처리에 필요한 함수를 제공하는데 평균 처리 표,

준편차 추론 통계 함수 보간 함수와 커브 피팅 등을 할 수 있, , (Curve-Fitting)

다.

에러 리포팅3.1 (Error Reporting)

모든 해석 함수들에는 에러 출력 단자가 있는데 잘못된 입력이 연결되면,

영이 아닌 수가 출력된다 에러의 리스트는 아래에 준비되어 있다 일반적으로. .

에러 처리를 못하거나 실행을 완수할 수 없는 경우에는 출력 터미널의 배열을

빈 상태로 만들거나 정의되지 않은 부동 소수점수를 포함하게 되어 있는데 이

것은 숫자를 의미하는 것이 아니다(NaN).

아래의 예는 를 수행할 때 에러 코드 을 발생시키Dot Product VI -20003

고 을 반환하는데 이것은 를 수행할 때 입력 배열이 빈 상NaN , Dot Product

태로 되어 있다는 것을 의미한다.

Page 359: Graphical Programming Labview

장 해석 함수17

Page 360: Graphical Programming Labview

부 고급 기능4

샘플 시그널3.2 (Sample Signal)

디지털 신호 처리 를 사용하기 위해서는 아날로(Digital Signal Processing)

그 신호를 디지털로 바꾸어 주어야 한다 이 절에서는 디지털 신호의 표현에.

대해서 언급하겠다.

또한 이 절은 수학적인 지식이나 신호 처리 기술에 대해서 잘 몰라도 된다

는 것을 말해 둔다.

샘플 간격이 Δt인 아날로그 신호 x(t 를 생각해 보자 신호) . x(t 는 다음과)

같이 불연속적인 함수로 표현된다.

Δ Δ Δ … Δ …

Δt는 실제 샘플 간격과 차이가 없기 때문에 다음과 같이 표현된다.

Δ …

따라서 i번째 요소의 값은

Δ

함수 x(t 는) X를 사용하여 다음과 같이 표현된다.

만일 n개의 샘플이 추출되었다면 그 순서는

이것이 디지털 신호의 표현이 된다.

신호 발생4. (Signal Generation)

에서는 네트워크 해석 이나 모의실험LabVIEW (Network Analysis)

(Simulation)에 사용할 수 있는 많은 들을 제공하고Signal Generation VIs

있다 또한 들은 아날로그 신호를 출력하기 위해서. Signal Generation VIs NI

의 하드웨어와 함께 사용되기도 한다.

Page 361: Graphical Programming Labview

장 해석 함수17

대부분의 경우 신호의 주파수 는 나 단위로 측, (Frequency) Hz Cycle/sec

정된다 그러나 디지털 시스템에서는 아날로그 주파수와 샘플링 주파수와의.

비 인 디지털 주파수를 사용하곤 한다(Ratio) .

디지털 주파수 아날로그 주파수 샘플링 주파수= /신호 들을 사용하는 경우 사용자는 샘플링 주파수를 모르는 데도 우리는VI

디지털 주파수를 사용하는 경우가 있다 따라서 아날로그 주파수를 출력하기.

위해서 사용자는 샘플링 주파수를 가지고 있어야 한다.

설명을 계속하기 전에 따라하기 예제를 해보기 바란다

따라하기 예제 에서는 신호의 주파수가1 10 이고 샘플링 주파수가Hz 100

인 개의 파형을 발생시키는데 샘플링 주파수를 신호 주파수로Hz 200 sine ,

나누어서 디지털 주파수를 에 입력하는 모습을 볼 수 있을 것이Sine Wave.vi

다 는 신호를 발생시키기 위해서 디지털 주파수를 입력받기 때. Sine Wave.vi

문이다.

따라하기 예제 의 예에서 신호 주파수를1 10 에서Hz 90 로 바꾸어 보라Hz .

그러면 아마 그래프의 형태가 같은 모양일 것이다.

이러한 현상을 이라 하며 디지털 영역에서만 발생한다 샘Aliasing . Nyquist

플링 이론에 의하면 가장 높은 표현 가능한 주파수라도 샘플링 주파수의 반밖

에는 안된다고 한다.

위의 따라하기 경우에는 샘플링 주파수는 100 이고 따라서 가장 높은Hz ,

표현 가능한 주파수는 50 이다 만일 입력 주파수가Hz . 50 를 넘으면 가짜Hz ,

주파수를 사용하게 되는데 일반적으로, ((n * 50) - 90) Hz > 의 공식을 사0

용하므로, (100 - 90) 가 되어서Hz 10 가 된다 다시 말해서 샘플링 주Hz . ,

파수가 50 인 디지털 시스템에서는Hz 10 에서Hz 90 사이의 영역을 분별Hz

할 수 없는 것이다.

그러므로 디지털을 사용하는 시스템에서는 샘플링 주파수의 반을 초과하는

어떠한 주파수라도 사용해서는 안 된다 만일 그 영역대의 주파수를 사용하면. ,

그것을 제거할 방법이 없다 현상을 막기 위해서는 전형적인 방법으. Aliasing

로 를 사용하는 것이 좋다analog anti-aliasing low pass filter .

Page 362: Graphical Programming Labview

부 고급 기능4

5. Curve Fitting

의 목적은 실험 데이터에 맞는 함수의 변수 차원을 분석하거Curve Fitting

나 변수들의 경향 또는 민감도를 알아보기 위해서이다 아래의 그림에는, .

Analysis▶ 팔레트가 있는데 개의 함수가 들어 있다 이들Curve Fitting 11 .

에 대한 대략적인 설명을 해 보겠다.

Linear Fit

실험 데이터들을 가지고 직선 함수를 유도한다.

Exponential Fit

실험 데이터들을 가지고 지수 함수를 유도한다.

Polynomial Fit

실험 데이터들을 가지고 다차원 함수를 유도한다.

General Polynomial Fit

다차원 함수에 맞추는 것은 과 같지만 정밀도나 정확성을 위Polynomial Fit

해서 수학적인 접근 방법을 다양하게 선택할 수 있다.

General linear Fit

실험 데이터를 함수에 맞추는 것으로

y는 등의 파라미터들을 선형 결합으로 만든 것이다. general

은 정밀도와 정확도를 위해서 수학적인 방법을 다양하게 선택할 수linear fit

Page 363: Graphical Programming Labview

장 해석 함수17

있다는 특징을 가지고 있다 예를 들어. 함수를 들 수 있

는데 이것은, 등의 변수에 대하여 선형적이기 때문이다.

General Levenberg-Marquardt Fit

실험 데이터를 함수에 맞추는 것을 말하며 가,

장 일반적인 방법이기도 하다. y는 변수 등에 선형적일 필요는 없

다.

이나 에 적용할 수는 있지만 일반적으로 에 사용linear fit curve fit curve fit

한다 이것은 이 에 더 적합하기 때문이다 주의할. general linear fit linear fit .

것은 을 사용할 때는 항상 검증이 필요하다는 것Levenberg-Marquardt fit

이다 이 방법의 결과를 항상 정확하다고 보증할 수 없기 때문이다. .

6. Digital Filters

필터의 역할은 주파수 중에서 불필요한 부분을 제거하는 것이며 신호 처리,

에서 많이 사용하는 도구 중의 하나이다 디지털 필터에는 가지 종류가 있다. 2 .

하나는 이고 다른 하나는FIR(finite impulse response) IIR(infinite

이다impulse response) .

필터는 선형 필터로 설계되었으며 필터는 큰 진폭에 반응하도록 설FIR IIR

계되었으므로 비선형에는 반응을 하지 못한다.

6.1 Passband, Stopband, Transition Band

는 최소 주파수 왜곡 을 가지는 지정된 주파수 영역passband (distortion)

을 가지고 있다 일반적으로 이득 은 대역 과 관계가 있기(band) . (gain) (band)

때문에 신호는 이득이 없거나 그 진폭을 잃지 않을 수도 있다.

이상적으로 디지털 필터는 단위 를 가지거나 부터passband passband

까지의 무 전위 대역을 가져야 한다 그러나 실제는 이런 규칙을 모stopband .

두 충족시킬 필요는 없다 특수한 경우에 부터 까지 전위. passband stopband

대역을 가지고 있다 어떠한 경우에는 사용자가 전위 대역을 명확히 지적해.

주어야 한다.

Page 364: Graphical Programming Labview

부 고급 기능4

과6.2 Passband Ripple Stopband Attenuation

대부분의 프로그램에서는 내에서의 미소한 변위를 허용하는 것passband

이 좋다 내의 변위를 이라 부른다 의 감쇠는 무한. passband ripple . stopband

할 수 없으며 사용자는 우리가 만족할 만한 값을 지정해 주어야 한다, .

이나 감쇠는 단위를 사용하는데 아래의passband ripple stopband decibels

식으로 정의된다.

와 는 각각 필터링 전후의 특정 주파수 f의 진폭을 의미한

다.

예를 들면 우리가, -0.02 를 가지고 있다면 은 공식에dB passband ripple

따라서

위의 결과는 입력과 출력의 진폭비가 거의 같다는 것을 보여 준다.

만일 -60 을 가지고 있다면 의 감쇠는dB stopband

위의 결과는 입력 진폭이 출력 진폭의 배라는 것을 보여 준다1000 .

감쇠는 일반적으로 부호가 없는 상태로 사용하지만 사용자가 값을“-” ,

읽을 경우에는 이러한 사실을 가정해야 한다.

아래의 그림은 Analysis▶ 팔레트를 보여 주고 있다 매우 다양한 필Filter .

터 함수가 있으나 이를 전부 설명할 수는 없고 온라인 도움말을 참고하라.

Page 365: Graphical Programming Labview

장 해석 함수17

또한 아래에는 일반적인 필터 예제의 블록 다이어그램과 프론트 패널이 있

다 직접 사용자가 해보기 바란다 또한 전자공학적인 지식을 필요로 하는 부. .

분이므로 관련 서적을 참고하기 바란다.

Page 366: Graphical Programming Labview

부 고급 기능4

스펙트럼 분석과 측정7.

이번 절에서는 진폭과 상 스펙트럼을 결정하는 방법과 스펙트럼 분석기를

소개하고 신호의 총 조화 왜곡 을 결정하는(THD, total harmonic distortion)

방법에 대해 배우게 된다.

스펙트럼 계측 의 소개7.1 (Measurement) VI

몇몇의 측정 들은 진폭과 상 스펙트럼 신호 파워 스펙트럼 등과 같은 시VI ,

간 영역 의 양을 주파수 영역 으로 변환하(time domain) (frequency domain)

기 위해서 사용한다.

파워 스펙트럼 등은 주파수 내용을 측정하기 위해서 자주 사용DET, FFT,

된다 는 신호의 전 시간 영역에 대한 평균 주파수를 구하는 데 사용된다. FFT .

측정 들은 아래와 같은 일반적인 벤치 톱 인스트루먼트들VI (Bench Top)

이 가지고 있는 특성을 동일하게 가지고 있다.

시간 영역의 신호를 입력으로 한다.

출력은 그래프의 형태로 그릴 수 있는 양이어야 한다.

샘플링 간격을 x축으로 하는 그래프로 그릴 수 있다 단위( : Hz).

일반적으로 측정 의 입력에 데이터 수집 의 출력을 직접 연결할 수 있, VI VI

다 또한 그래프의 입력으로도 직접 연결하여 사용할 수 있는 것이다 아래의. .

다이어그램은 스펙트럼 분석기의 다이어그램이다.

Page 367: Graphical Programming Labview

장 해석 함수17

스펙트럼 분석7.2

대부분의 애플리케이션에서 주파수의 내용을 분석하는 것은 신호를 발생시

킨 시스템을 연구하는 데 매우 유용한 정보를 제공한다.

사용자는 기계 부품으로부터 발생되는 소음과 진동의 분석을 통하여 그 정보

를 아주 유용하게 사용할 수 있다.

Page 368: Graphical Programming Labview

부 고급 기능4

따라하기 예제에는 신호의 상과 진폭을 측정하기 위해서 Amplitude VI

와 를 어떻게 사용하는지 배울 수 있는 예제가 준비Phase Spectrum VI

되어 있다.

조화 왜곡7.3 (Harmonic distortion)

만일 특정 주파수 이라 하자 신호) (x(t 가 비선형 시스템을 통과하게 되))

면 시스템의 출력은 입력 주파수인, 뿐만 아니라 그 입력의 조화 수

를 포함하게 된다 조화수의 개수와 그 크.

기는 시스템의 비선형성에 의존한다 일반적으로 비선형성이 크면 조화가 크. ,

게 된다.

비선형 시스템의 예는 출력 y(t 가 입력 신호) x(t 에 세제곱을 한 것이다) .

그래서 만일 입력이 라면 출력은 아래와 같다.

따라서 출력은 기본 주파수 입력인 와 제 의 조화수인 를 포함한다3 3 .ω ω

Page 369: Graphical Programming Labview

장 해석 함수17

에는 수치 해석과 모의실험을 수행할 수 있도록 함수를 제공하고 있다LabVIEW Analysis .

함수는 크게 함수로 나뉘Analysis DSP(Digital Signal Processing), Numeric, Statistics

어지며 함수는 주파수 변환 주파수 해석 등, DSP , , IIR Filter, generating digital waveform

의 일을 수행할 수 있다 에 속하는 함수들은 수치 해석 벡터와 행렬에 관한 대수 함. Numeric ,

수들이 있으며 에 속하는 함수에는 통계 함수 평균과 표준편차 함수 보간 함수, Statistics , , ,

함수들이 있다Curve-fitting

함수 중에 을 수행할 수 있는 함수들이 있는데 신호 발생을 수Analysis Signal Generation ,

행하는 함수 중에는 디지털 주파수를 입력해 주어야 하는 것이 있다 디지털 주파수는 아날로.

그 주파수와 샘플링 주파수와의 비를 말한다.

의 목적은 실험 데이터를 어떠한 함수에 맞추어 변수의 경향과 민감도를 평가Curve fitting

하기 위해서이다 그 종류에는. Linear fit, Exponential Fit, Polynomial Fit, General linear

등으로 크게 나눈다fit, General Levenberg-Marquardt fit .

필터 를 사용하는 이유는 주파수 중의 불필요한 부분을 제거하거나 대처하기 위해서(Filter)

이다 또한 필터에는 와 가. FIR(finite impulse response) IIR(infinite impulse response) 2

지 종류가 있으며 은 선형상 필터로 제작되었다 필터는 큰 진폭에 반응하는 경향을FIR . IIR

가지고 있으며 비선형상에 반응을 한다.

요약

Page 370: Graphical Programming Labview

부 고급 기능4

예제 1

특정 주파의 파형을 파형 그래프에 도시하는 를 구성하시오sine VI .

프론트 패널

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널에 디지털 컨트롤을 개 만든다5 .

그래프 메뉴에서 그래프를 찾아서 알맞은 크기로 놓는다waveform .

각각의 아이콘에 주석을 단다.

Page 371: Graphical Programming Labview

장 해석 함수17

다이어그램에 라고 주석이 붙은 아이콘의 속성을 로 바꾼다samples [I32] .

다이어그램의 함수 팔레트에서 메뉴를 선택하여 와Numeric divide

을 찾아서 놓는다reciprocal .

메뉴에서 을 찾아서 놓는다Cluster bundle .

메뉴Analysis ( 에서 메뉴) Signal Generation ( 를 선택하여)

sine wave.vi( 를 찾아서 놓는다) .

각각의 아이콘을 와이어로 연결한다.

예제 2

다음과 같은 차원 배열의 실험 데이터를 그래프에 나타내고 직선으로 한2 curve fitting

후 그 직선의 기울기와 절편을 디지털 인디케이터에 나타내어라 또한 한. curve fitting

직선도 그래프에 나타내어라.

0 1 2 3 4 5 6 7 8 9

0.9 1.4 3.3 3.89 4.92 7.0 7.3 8.09 9.03 9.98

프론트 패널

Page 372: Graphical Programming Labview

부 고급 기능4

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 함수 팔레트에서 메뉴를 선택하여 를 찾아Array & Cluster array

서 놓는다 이 과정을 반복하여 배열을 개 만든다.( 2 .)

이 배열 위에 하나에는 디지털 인디케이터를 다른 하나에는 디지털 컨트롤,

을 끌어 놓는다.

메뉴에서 디지털 인디케이터를 찾아서 놓는다 이 과정을 반복Numeric . (

하여 디지털 인디케이터를 개 만든다3 .)

그래프 메뉴에서 를 찾아서 놓는다 그래프를 개 만든다xy graph .(xy 2 .)

다이어그램의 함수 팔레트에서 메뉴를 선택하여 를 찾Array index array

아서 놓는다 를 개 만든다. (index array 2 .)

의 왼쪽 하단에서 마우스의 오른쪽을 클릭하여index array add

을 선택한다 다시 왼쪽 하단에 있는 두 곳의 중에서 한dimension . index

곳에는 마우

스의 오른쪽을 클릭하여 을 선택한다 그러면 아이콘의disable indexing .

모양이 ( 에서) ( 로 바뀌게 된다) .

메뉴에서 을 찾아서 놓는다Cluster bundle .

메뉴에서 메뉴Analysis Curve Fitting ( 를 선택하여) linear fit.vi

( 를 찾아서 놓는다) .

각각의 아이콘을 주의해서 연결한다.

Page 373: Graphical Programming Labview

장 해석 함수17

예제 3

예제 에서의 실험 데이터를 이용하여 다음의 차식으로 을 수행한 후 그2 2 curve fitting

계수들을 프론트 패널에 나타내어라 또한 실험 데이터와 된 곡선을 그래프에 나. fitting

타내어라.

프론트 패널

블록 다이어그램

새로운 프론트 패널과 블록 다이어그램을 연다.

패널의 함수 팔레트에서 메뉴를 선택하여 를 찾아Array & Cluster array

서 놓는다 이 과정을 반복하여 를 개 만든다. ( array 3 .)

Page 374: Graphical Programming Labview

부 고급 기능4

이 위에 하나에는 디지털 컨트롤을 나머지는 디지털 인디케이터를array ,

끌어 놓는다.

메뉴에서 디지털 인디케이터와 디지털 컨트롤을 찾아서 놓는다Numeric .

그래프 메뉴에서 를 찾아서 놓는다 를 개 만든다xy graph . (xy graph 2 .)

다이어그램에서 라고 주석이 붙은 아이콘의 속성을polynomial order

로 바꾼다[I32] .

다이어그램의 함수 팔레트에서 메뉴를 선택하여 를 찾Array index array

아서 놓는다 를 개 만든다. (index array 2 .)

의 왼쪽 하단에서 마우스의 오른쪽을 클릭하여index array add

을 선택한다 다시 왼쪽 하단에 있는 두 곳의 인덱스 중에서 한dimension .

곳에는 마우스의 오른쪽을 클릭하여 을 선택한다 그러면disable indexing .

아이콘의 모양이 ( 에서) ( 로 바뀌게 된다) .

메뉴에서 을 찾아서 놓는다Cluster bundle .

메뉴에서 메뉴를 선택하여Analysis Curve Fitting general polynomial

fit.vi( 를 찾아서 놓는다) .

각각의 아이콘을 주의해서 연결한다.

Page 375: Graphical Programming Labview

개요1.

이번 장에서는 프론트 패널 상의 오브젝트와 프론트 패널 상의 두 요소 즉,

컨트롤과 인디케이터에 대해 설명한다 이번 장까지 설명하지 않았던 프론트.

패널 오브젝트에 대한 편집 기술과 고급 사용 기술 등을 배울 수 있을 것이다.

이 장에서 배우는 것들2.

프론트 패널의 개요

프론트 패널 상의 컨트롤과 인디케이터

팝업 메뉴

프론트 패널 오브젝트3.

프론트 패널 상의 컨트롤과 인디케이터는 의 입력과 출력 터미널이다 사VI .

용자는 컨트롤을 에게 데이터를 전달하기 위해서 사용하고 에서 발생되VI , VI

는 데이터는 인디케이터에게 전달하여 화면에 디스플레이 하는 데 사용한다.

이번 절에서는 모든 컨트롤과 인디케이터를 사용하는 데 필요한 몇 가지 편집

기술에 대해 배우게 된다.

프론트 패널 상의 컨트롤 팔레트는 다음 그림과 같다.

chapter

18프론트 패널 오브젝트

Page 376: Graphical Programming Labview

부 고급 기능4

만일 사용자가 컨트롤 팔레트의 각 서브 팔레트에 위치시키면 이 서브 팔레

트의 이름이 상단에 나타난다.

프론트 패널 상의 부 팔레트에 대한 설명이 아래에 있다.

설명은 좌에서 우로 그리고 위에서 아래로 각 부 팔레트를 설명한다.

Numeric controls

수치량을 입력하거나 표시하기 위해 사용하는 도구

Boolean controls

값을 입력하거나 표시하기 위해 사용하는 도구TRUE/FALSE

String & Table controls

텍스트를 입력하거나 표시하기 위해 사용하는 도구

List & Ring controls

리스트 상자와 링 오브젝트를 사용하는 도구

Array & Cluster controls

데이터를 묶어서 사용하기 위해 사용하는 도구

Graph controls

차트와 그래프의 형태로 수치 데이터를 그리는 데 사용하는 도구

Path & Refnum controls

경로와 을 입력하거나 표시하기 위해 사용하는 도구refnum

Decoration

사용자가 패널에 그래픽을 추가하여 꾸미는 데 사용하는 도구

User controls

파일로 사용자가 만든 컨트롤을 자동으로 저장하는 도구user.lib

ActiveX

를 사용하여 의 성능을 향상시키는 데 사용하는 도구 이 오브젝ActiveX VI .

Page 377: Graphical Programming Labview

장 프론트 패널 오브젝트18

트는 컨테이너와 를 담고 있다ActiveX ActiveX Variant .

Select a control...

사용자가 만든 컨트롤을 선택하여 사용하기 위한 도구

프론트 패널 컨트롤과 인디케이터 옵션3.1

사용자가 프론트 패널을 편집하기 위해 팝업 메뉴를 호출하면 아래의 그림

과 같은 팝업 메뉴가 나타나게 되는데 메뉴에는 선을 기준으로 위에 있는 메,

뉴와 선의 아래에 있는 메뉴가 있다 선 위에 있는 메뉴는 모든 컨트롤과 인디.

케이터에서 동일하게 사용되는 메뉴이고 선 아래에 있는 메뉴들은 각 컨트롤,

마다 서로 다르게 사용되는 메뉴들이다 예를 들어 아래의 그림에서 선 아래.

에 있는 메뉴들은Representation, Data Range..., Format & Precision...

오브젝트의 종류마다 서로 다르게 나타나는 메뉴들이다.

우선 모든 오브젝트에게 동일하게 적용되는 메뉴부터 설명해 보기로 하겠다.

Change to Indicator(or Control)

오브젝트가 컨트롤이면 인디케이터 로 인디케이터이(Change to Indicator) ,

면 컨트롤 로 변환한다(Change to controls) .

Find Terminal

프론트 패널 상의 오브젝트는 블록 다이어그램 상에 터미널을 가지고 있다.

이 메뉴를 사용하면 블록 다이어그램 상의 터미널이 깜박거리면서 오브젝트의

터미널을 나타낸다.

Show

이 메뉴는 부 메뉴를 가지고 있는데 이 부 메뉴를 보이거나 보이지 않게 할,

때 사용한다 이때 보이는 것으로 설정해 놓은 것은 체크 표시가 나타난다. .

Create Attribute Node

오브젝트의 속성 노드를 생성한다 속성 노드를 사용하면 프로그램적으로.

Page 378: Graphical Programming Labview

부 고급 기능4

오브젝트의 다양한 속성을 조작할 수 있다.

Data Operation

이 메뉴도 부 메뉴를 가지고 있는데 이 부 메뉴도 역시 선을 기준으로 선,

위에 있는 메뉴는 모든 오브젝트들에게 적용되는 메뉴이고 선 아래의 메뉴들

은 오브젝트마다 서로 다른 메뉴를 가지고 있다 이 메뉴를 이용하면 오브젝.

트의 내용을 복사 잘라내기 붙이기 등의 작업을 수행할 수 있다 또는 오브젝, , .

트의 내용을 초기화하거나 현재의 데이터를 디폴트 데이터로 만들 수도 있다.

아래의 그림은 메뉴의 부 메뉴인데 가 실행 중인 경우Data Operation , VI

에는 아래의 메뉴 중에서 사용하지 못하는 메뉴가 있을 수 있다.

대치하기3.2 (Replacing)

위의 팝업 메뉴에 있는 메뉴는 선택한 오브젝트를 다른 컨트롤이Replace

나 인디케이터로 바꾸는 데 사용한다 이러한 경우 기존의 오브젝트가 가지고.

있던 데이터와 라벨은 가능한 계속 보존된다.

아래의 예를 보자 아래의 그림에는 수직 슬라이드가 있는데 이것을 약간.

다른 슬라이더로 바꾸면 그 아래의 그림과 같이 데이터와 라벨에는 변화가 없

다.

Page 379: Graphical Programming Labview

장 프론트 패널 오브젝트18

하지만 만일 사용자가 슬라이더를 문자열로 바꾸면 라벨과 설명 그리고 데

이터의 흐름 방향만이 계속 보존된다.

컨트롤을 위한 키 네비게이션3.3 (Key Navigation)

모든 프론트 패널 컨트롤들은 메뉴를 가지고 있다 이Key Navigation... .

메뉴를 이용하면 사용자가 마우스를 이용하여 오브젝트를 조작하는 대신 설정

한 키를 이용하여 오브젝트를 조작할 수 있다 이때 설정한 키를 사용하면 오.

브젝트는 키 포커스를 가지게 되는데 예를 들어 만일 문자열 컨트롤을 특정,

키로 설정하면 이 키를 누르면 문자열 컨트롤은 키를 입력받을 수 있는 키 포

커스를 갖는 것이다 또한 만일 이 오브젝트가 불 스위치라면 키를 누를 때마. ,

다 스위치의 상태가 변하게 된다.

사용자가 알아 두어야 할 것은 인디케이터는 메뉴를 사용Key Navigation

할 수 없다는 것이다 이것은 인디케이터에 사용자가 데이터를 전달해 줄 수.

없기 때문이다.

Page 380: Graphical Programming Labview

부 고급 기능4

또한 사용자는 탭 키를 눌렀을 경우 컨트롤이 차례로 선택되도록 설정(Tab)

되어 있는지 볼 수 있으며 펑션 키를 사용할 수 있도록 설정할 수도 있다 또, .

한 대화상자와 같이 키를 기본 키로 사용할 수 있도록 설정할 수도<Enter>

있다 만일 이 키를 설정해 놓으면 아래의 그림과 같이 컨트롤의 주위. <Enter>

에 굵은 사각형이 생긴다.

컨트롤에 키를 설정하는 것에는 아래와 같은 중요한 점이 있다<Enter> .

일단 키를 컨트롤에 설정해 놓으면 다른 컨트롤은 키를<Enter> , <Enter>

사용할 수 없다.

Page 381: Graphical Programming Labview

장 프론트 패널 오브젝트18

만일 탭 키를 사용하여 버튼들을 차례로 선택할 때 선택된 버튼에 설정해,

놓은 키는 특별하게 취급된다 이 설정된 키를 사용하여 버튼을 사용할 수.

도 있지만 탭 키를 사용하여 버튼을 선택하고 키를 사용해도 이, <Enter>

버튼을 사용할 수 있다.

사용자는 아래의 대화상자를 이용하여 키를 설정할 수 있Key Navigation

으며 서로 다른 컨트롤에 같은 키를 할당할 수는 없다.

사용자는 대화상자의 상단에 있는 링을 사용하여 설정할 키를 선택할 수 있

으며 또는 키와 함께 설정할 수도 있다 아래의 그림에는, <Shift> <Ctrl> .

링에 있는 사용 가능한 키를 나타내고 있는데 이 키들과Key Assignment

키를 조합하여 사용할 수 있다<Shift>, <Ctrl> .

프론트 패널 순서3.4

사용자가 프론트 패널 상에 컨트롤이나 인디케이터를 생성하면 위치에 관계

없이 논리적인 순서를 가지게 된다 사용자가 제일 먼저 생성하는 컨트롤은. 0,

그 다음 생성하는 컨트롤은 이러한 순서를 가지게 되며 만일 사용자가 컨1,

Page 382: Graphical Programming Labview

부 고급 기능4

트롤이나 인디케이터를 지우게 되면 순서는 자동적으로 다시 부여받게 된다.

이 순서를 바꾸려면 를 사용하면 되는데 이 메뉴를 사Edit Panel Order... ,▶

용하면 프론트 패널의 모양이 변하게 된다 이것은 프론트 패널 순서 편집 모.

드가 되었음을 알리는 것이다.

각 오브젝트에는 검은 색과 흰색의 사각형이 나타나게 되는데 흰색 사각형,

안의 숫자는 현재의 순서를 나타내고 검은 색은 새로운 순서를 나타낸다 마.

우스를 이용하여 순서를 변경할 오브젝트를 선택하고 대화상자 우측 상단의

사각형 안에 새로운 순서를 넣으면 된다.

프론트 패널 상의 오브젝트 순서는 사용자가 데이터 로깅 을 했을(Logging)

경우에 레코드의 순서가 된다.

대화상자 컨트롤3.5

는 몇 가지 대화상자 컨트롤을 제공하고 있으며 그것은 대화상자LabVIEW ,

링 수치 대화상자 버튼 불 대화상자 체크상자 등이다( ), ( ), .

대화상자 컨트롤의 모양은 플랫폼의 종류에 따라 서로 다르며 이번 절에서

는 윈도우즈에서 사용하는 것만을 언급하기로 한다.

윈도우즈에서는 대화상자 버튼의 모양이 차원 사각형 모양이고 대화상자3

링의 모양은 평평한 사각형의 모양을 하고 있다.

Page 383: Graphical Programming Labview

장 프론트 패널 오브젝트18

컨트롤과 인디케이터4. Numeric

이 절부터는 프론트 패널 상의 각 컨트롤과 인디케이터에 대한 설명을 하게

되는데 이전에 언급한 내용에 대해서는 다시 설명하지 않는 것으로 한다.

다양한 형태의 정수 표현4.1

사용자는 컨트롤과 인디케이터를 다양한 형태로 표현할 수 있는Numeric

데 이것은 아래의 그림과 같이 진수 진수 진수 진수 등으로 표현할, 10 , 16 , 8 , 2

수 있다 이것은 팝업 메뉴의 를 사용하면 된다. Show Radix .▶

또한 아래의 그림은 각 표현의 모습을 보여 주고 있다.

메뉴4.2 Representation

Page 384: Graphical Programming Labview

부 고급 기능4

사용자에게 가지의 수치 데이터형을 지원하고 있다 이것의 변경은 팝업12 .

메뉴의 메뉴를 사용하면 아래의 그림과 같은 변경할 수 있는Representation

서브 메뉴가 나타난다

확장정도형 부동소수점수EXT : (extended-precision)

비트 배정도형 부동소수점수DBL : 16 (double-precision)

비트 단정도형 부동소수점수SGL : 32 (single-precision)

부호 있는 비트 비트 비트 정수I32, I16, I8 : 32 , 16 , 8

부호 없는 비트 비트 비트 정수U32, U16, U8 : 32 , 16 , 8

복합 확장정도형 부동소수점수CXT : (complex EXT)

복합 배정도형 부동소수점수CDB : (complex DBL)

복합 단정도형 부동소수점수CSG : (complex SGL)

각 아이콘을 잘 보면 데이터의 범위를 상대적으로 비교할 수 있다.

범위 옵션4.3

사용자는 팝업 메뉴의 을 사용하여 데이터의 표현 방법을Representation

다양하게 할 수 있으며 각 표현 방법에 대해 값의 범위를 지정하여 사용할 수,

있다 또한 각 표현은 아래와 같은 디폴트의 범위를 가지고 있다. .

Range Options of Numeric Controls and IndicatorsPercision Single Double Extended

(platform-dependent)Minimum 1.5E-45 5.0E-324 1.9E-4951PositiveNumber

Maximum 3.4E38 1.7E308 1.1E4932PositiveNumber

Minimum -1.5E-45 -5.0E-324 -1.9E-4951NegativeNumber

Maximum -3.4E38 -1.7E308 -1.1E4932NegativeNumber

Page 385: Graphical Programming Labview

장 프론트 패널 오브젝트18

사용자는 아래의 그림과 같이 팝업 메뉴의 를 사용하여 각 오Data Range...

브젝트가 취급하는 수의 범위를 지정할 수 있다.

디지털 값의 정밀도4.4

또한 사용자는 오브젝트의 정밀도를 지정하여 사용할 수 있는데 이것은 팝업,

메뉴의 을 이용하여 아래의 그림과 같이 변경하면 된다Format & Precision... .

아래의 그림을 보면 각 설정 값을 다양하게 변경하였을 경우에 어떻게 나타

나는가를 알 수 있다.

만일 사용자가 링에서 를 선택하였다면 다음 그림과Format Time & Date ,

같이 날짜와 시간을 다양하게 변경할 수 있다.

Page 386: Graphical Programming Labview

부 고급 기능4

컨트롤과 인디케이터4.5 Slide Numeric

아래의 그림에는 슬라이드 컨트롤과 인디케이터가 있다.

각 슬라이드는 디지털 표시 장치를 가지고 있으며 이 디지털 디스플레이를,

사용하여 슬라이드의 값을 지정하게 된다 또한 오퍼레이팅 툴로 슬라이드 하.

우징 스케일 증가 버튼에 값을 지정할 수 있다 슬라이더는 움직이면 값이 변, , .

하는 슬라이드의 일부분을 말하고 하우징은 슬라이드의 모체 부분을 말한다, .

스케일은 슬라이드의 눈금을 말하고 증가 버튼은 슬라이드의 좌우 끝에 달려,

있는 삼각형 버튼으로 값을 일정량만큼 증가시키거나 감소시키는 데 사용한

다 다음에 그 예가 있다. .

Page 387: Graphical Programming Labview

장 프론트 패널 오브젝트18

사용자는 오퍼레이팅 툴을 사용하여 아래의 그림과 같이 값을 연속적으로

변경할 수 있으며 만일 가 실행하는 도중에 슬라이드의 값을 오퍼레이팅, VI

툴을 이용하여 연속적으로 변경하면 얼마나 자주 가 슬라이드의 값을 읽느VI

냐에 따라 그 중간 값이 전달된다.

또한 사용자는 오퍼레이팅 툴을 사용하여 슬라이드의 일부분을 클릭하면 순

간적으로 변경할 수 있으나 그 중간 값은 에게 전달되지 않는다, VI .

또한 양 끝단에 위치한 증가 또는 감소 버튼을 사용하여 값을 변경할 수 있

다 키를 함께 사용하면 더 빨리 값을 변경할 수 있으며 그 중간 값은. <Shift>

에게 읽혀진다VI .

디지털 수치와 마찬가지로 그리고Representation, Data Range...,

옵션을 사용할 수 있다 다만 슬라이드는 복소수를 사용Format & Precision .

할 수 없다는 것에 차이가 있다 아래의 그림에 슬라이드의 팝업 메뉴가 있다. .

Page 388: Graphical Programming Labview

부 고급 기능4

메뉴를 사용하면 슬라이드의 디지털 디스플레이Show Digital Display▶

를 보이거나 보이지 않게 할 수 있다.

메뉴에는 아래와 같은 서브 메뉴가 있다Scale .

그 중에서 메뉴는 사용자가 눈금으로 사용할 수 있는 가지의 눈금Style 6

형태를 선택할 수 있도록 한다.

또한 메뉴는 눈금의 매핑 형태를 결정할 수 있는데 아래의 그림Mapping ,

과 같이 선형과 선형에 로그를 취한 로그형이 있다.

또한 디폴트로 눈금의 간격은 일정하게 매겨지는데 사용자는 이 일정한 눈,

금 간격을 팝업 메뉴의 Scale▶Marker Spacing▶ 를 사용하면Arbitrary

된다 또한 눈금의 값을 추가하려면. Scale▶ 를 사용하면 된다Add Marker .

그러면 일정한 위치에 눈금이 생기는데 이 눈금에 눈금의 값을 넣어 주면 된

다.

또한 사용자는 눈금을 오퍼레이팅을 이용하여 움직일 수도 있다.

일반적으로 슬라이드는 숫자 눈금을 가지고 있다 하지만 사용자는 문자를.

Page 389: Graphical Programming Labview

장 프론트 패널 오브젝트18

이용하여 눈금을 매길 수도 있다 이러한 기능을 하기 위해서는 팝업 메뉴의.

를 사용하면 된다 그러면 슬라이드의 눈금은 양단에 디폴트인Text Labels .

과 라는 눈금이 생기게 되는데 라벨링 툴을 사용하여 이 눈금의 문자min max

를 변경하여 사용할 수 있다.

또한 텍스트 눈금을 사용한 상태에서 디지털 디스플레이를 선택하면 어떠한

수치가 문자 눈금과 연결되어 있는가를 볼 수 있다 일반적으로 첫 번째 문자.

눈금 수직 슬라이드에서는 맨 아래 눈금 수평 슬라이드에서는 좌측의 눈금( , )

이 으로 시작한다 또한 와 메뉴를 사용0 . Add Item After Add Item Before

하여 새로운 눈금을 생성할 수 있다.

슬라이드의 종류에는 형이 있는데 이것은 슬라이드 하우징의 내부가 일Fill

정한 색으로 채워진 것을 말한다 또한 사용자는 하나 이상의 수치값을 가지.

Page 390: Graphical Programming Labview

부 고급 기능4

는 슬라이드를 만들 수 있다 이것은 팝업 메뉴에서 를 선택하면. Add Slider

된다.

Page 391: Graphical Programming Labview

장 프론트 패널 오브젝트18

컨트롤과 인디케이터4.6 Rotary Numeric

회전형 수치 컨트롤의 종류에는 아래와 같은 것들이 있다.

회전형 수치 컨트롤은 슬라이드 컨트롤과 같은 메뉴 옵션을 사용하고, Add

메뉴를 하나 이상의 값을 사용할 수 있으며 오퍼레이션 툴을 이 컨트Needle ,

롤 상에 위치시키면 커서의 모양이 아래의 그림과 같이 변하게 되는데 사용자는

마우스를 움직여서 값을 변경할 수 있다 이때 키를 같이 누르면 도씩. <Shift> 45

회전하게 된다 사용자가 주의해야 하는 것은 이러한 행위는 눈금의 범위를 변.

경할 때와 값을 변경할 때 동일하다는 것이다 마우스를 눈금의 위치에 위치시.

키면 커서의 모양이 변하게 되고 눈금의 범위를 변경할 수 있다.

Page 392: Graphical Programming Labview

부 고급 기능4

상자4.7 Color

컬러상자는 컬러를 제어하는 특정한 값에 대응하는 색을 담고 있는 상자이

다 컬러상자의 값은 진수로 표시되며 이것의 형식은 이고 이때. 16 [RRGGBB]

첫 번째 은 빨간색의 값을 두 번째 는 녹색을 세 번째 는 파란색의RR , GG , BB

값을 나타낸다.

사용자는 이 상자에 색을 지정해 주기 위해 오퍼레이팅 툴이나 컬러 툴을

사용하여 이 상자를 클릭하면 된다 그러면 아래의 그림과 같이 색을 선택할.

수 있는 컬러 팔레트가 나타나게 된다.

컬러 상자를 사용하는 제일 쉬운 방법은 Function▶Numeric▶

팔레트에 있는 를 이용하Additional Numeric Constant color box constant

여 이것을 블록 다이어그램에서 컬러상자의 터미널과 연결해 주는 것이다 일.

반적으로 컬러 상자는 프론트 패널 상에서 인디케이터로 사용되며 일반 컬러

상자와 차원 프레임이 있는 컬러상자가 있다3 .

4.8 Color Ramp

사용자는 컬러 램프를 사용하여 수치 값을 표시할 수 있다 컬러 램프를 최.

소한 개 이상의 컬러 눈금을 설정하고 수치가 변하는 것을 설정한 컬러를 사2

용해서 나타낼 수 있다.

Page 393: Graphical Programming Labview

장 프론트 패널 오브젝트18

위의 그림에는 그 예가 있는데 사용자가 상한의 컬러를 으로 하한을, 100 , 0

으로 설정하였기 때문에 만일 이 컬러 램프 인디케이터가 를 받으면 그60.32

수치를 디지털 디스플레이로 표시하고 그에 상응하는 색을 컬러 디스플레이

영역에 나타내게 되는 것이다.

단위4.9 Unit( )

어떠한 수치 컨트롤이라도 미터 혹은 킬로미터와 같은 물리적인 단위를 가

지고 있다.

사용자는 팝업 메뉴의 을 사용하여 수치 컨트롤에 단Show Unit Label▶

위 라벨을 표시할 수 있으며 단위 라벨이 나타나면 사용자가 각 단위의 표준,

약자를 써 주면 된다.

만일 사용자가 이 표준 약자에 익숙하지 않다면 사용자가 단위 라벨에서,

팝업 메뉴를 호출하여 메뉴를 사용하면 사용 가능한 단위에 대한 정보Unit...

가 나타나게 된다.

다음의 수치 컨트롤은 미터 초의 단위를 가지고 있다/ .

o v e r f l o wcolor display

digital displayunderflow color

Ramp

level color

Page 394: Graphical Programming Labview

부 고급 기능4

만일 사용자가 잘못된 단위를 입력하면 잘못된 단위에 를 사용하여 오‘?’

류를 사용자에 알린다.

또한 사용자는 아래의 그림과 같이 애매한 단위를 사용해서는 안 된다.

단위 검사4.10

아래의 예에서 보여지는 것과 같이 단위를 가지고 있는 두 수치의 연산 결

과에 따라 변화된 단위는 항상 맞추어서 사용해야 한다.

위의 예에서 속도와 시간의 두 수를 곱하면 새로운 미터 단위를 가져야 하

지만 사용자가 인디케이터의 단위를 킬로미터로 설정해 놓았기 때문에 미터

단위의 수치가 킬로미터 단위의 수치로 변경되어 나타난다.

Page 395: Graphical Programming Labview

장 프론트 패널 오브젝트18

또한 사용자는 신호에 단위를 사용할 수 없다 아래의 예에서. List Errors

를 사용하여 에러를 보면 라는 에러 메시지를 볼 수 있을Wire : Unit conflict

것이다.

또한 사용자가 수치 상수를 사용했을 경우에 결과로 나타나는 단위는 아래

와 같이 나타나며 수식 노드에서는 단위를 사용할 수 없다, .

Page 396: Graphical Programming Labview

부 고급 기능4

사용자가 프론트 패널을 편집하기 위해 팝업 메뉴를 호출하면 아래의 그림과 같은 팝업 메뉴

가 나타나게 되는데 메뉴에는 선을 기준으로 위에 있는 메뉴와 선의 아래에 있는 메뉴가 있다, .

선 위에 있는 메뉴는 모든 컨트롤과 인디케이터에서 동일하게 사용되는 메뉴이고 선 아래에,

있는 메뉴들은 각 컨트롤마다 서로 다르게 사용되는 메뉴들이다.

사용자는 팝업 메뉴의 을 사용하여 데이터의 표현 방법을 다양하게 할 수Representation

있으며 각 표현 방법에 대해 값의 범위를 지정하여 사용할 수 있다, .

사용자가 프론트 패널 상에 컨트롤이나 인디케이터를 생성하면 위치에 관계없이 논리적인

순서를 가지게 된다 사용자가 제일 먼저 생성하는 컨트롤은 그 다음 생성하는 컨트롤은. 0, 1,

등의 순서를 가지게 되며 만일 사용자가 컨트롤이나 인디케이터를 지우게 되면 순서는 자동적,

으로 다시 부여받게 된다.

슬라이드는 디지털 표시 장치를 가지고 있으며 이 디지털 디스플레이를 사용하여 슬라이드,

의 값을 지정하게 된다 또한 오퍼레이팅 툴로 슬라이드 하우징 스케일 증가 버튼에게 값을. , ,

지정할 수 있다.

어떠한 수치 컨트롤이라도 미터 혹은 킬로미터와 같은 물리적인 단위를 가지고 있다.

사용자는 팝업 메뉴의 을 사용하여 수치 컨트롤에 단위 라벨을 표시할Show Unit Label▶

수 있으며 단위 라벨이 나타나면 사용자가 각 단위의 표준 약자를 써 주면 된다, .

요약

Page 397: Graphical Programming Labview

…………………………………………………………………

제 부5

…………………………………………………………………

네트워크 및 통신…………………………………………………………………

장 와 클라이언트 서버19 TCP/UDP

장 와20 DDE ActiveX

…………………………………………………………………

Page 398: Graphical Programming Labview

개요1.

이번 장부터는 통신 함수에 대해 공부하게 된다 에서 제공하고. LabVIEW

있는 다양한 통신 기능 과 애플리케이션간(communication)

의 통신과 네트워크 를 처리하는 방법에 대(Inter-application) (networking)

해 배울 수 있을 것이다 또한 다음 장에서는 에서 새로 나온. LabVIEW 5.0

를 이용하는 방법과 를 이용한 통신에 대해 배우게 된다 컴ActiveX ActiveX .

퓨터 기술의 급속한 발전의 양상은 거대한 통신망의 활용으로 변모되었으며,

이제 통신은 일부의 기술이 아닌 컴퓨터를 사용하는 사람 혹은 프로그램을,

사용하는 사람들에게 매우 중요한 개념으로 등장하게 되었다 에서. LabVIEW

도 이러한 기술의 발전에 뒤지지 않기 위해 다양한 통신 함수의 개발과 인터

넷 기반 기술에 부응하기 위해 기술을 에 도입하게 되었ActiveX LabVIEW

다 따라서 사용자는 이번 장부터 기술되는 통신 함수와 그 제반 개념에 대해.

알아 둘 필요가 있다 하지만 이 책에서는 통신에 대한 많은 이론과 개념을 모.

두 소개할 수 없으므로 다른 통신에 관한 서적을 참고하기 바란다.

이 장에서 배우는 것들2.

통신 기능의 개요LabVIEW

통신 프로토콜 의 소개(Communication Protocol)

통신 프로토콜을 이용한 파일의 공유(share)

클라이언트 서버 모델/ (Client/Server Model)

서버의 사용VI

chapter

19와TCP/UDP

클라이언트 서버

Page 399: Graphical Programming Labview

부 네트워크 및 통신5

통신 함수의 개요3. LabVIEW

이 장을 공부하기 위해서는 두 대 이상의 컴퓨터가 서로 통신할 수 있도록

설정되어 있어야 하지만 통신을 할 수 없어도 공부를 할 수 있도록 설명을 하,

겠다 일반적으로 두 대 이상의 컴퓨터들이 통신을 하려면 이더넷. (Ethernet)

과 로컬토크 와 같은 하드웨어적인 통신 장치를 이용해야 한다(LocalTalk) .

두 대 이상의 컴퓨터간에 통신을 하는 이유는 다른 컴퓨터에 있는 애플리케

이션이 제공하는 서비스를 이용하기 위해서이다 예를 들어 하나의 컴퓨터에. ,

서 서비스를 제공하는 애플리케이션 서버 은 통신으로 연결되어 있는 컴퓨터( )

들의 정보를 수집하여 제공하는 애플리케이션이거나 다른 컴퓨터에게 정보를,

제공하는 데이터베이스 애플리케이션이다.

이 장을 통해서 사용자는 네트워크 와 통신 에, (Network) (Communication)

관한 용어를 배울 수 있을 것이다.

통신 프로토콜 의 소개4. (Communication Protocol)

두 대 이상의 컴퓨터에서 통신이 이루어지려면 하드웨어적인 구성도 이루,

어져야 하지만 실질적인 통신이 이루어지려면 두 프로세서간에 통신을 할 수,

있는 통신 언어를 같이 사용하여야 한다 이 통신 언어를 프로토콜. (Protocol)

이라 한다.

사용자가 데이터를 얻어 오거나 보내려고 할 때 통신 프로토콜은 사용자가

보내거나 받으려는 데이터를 설정해 주거나 데이터의 위치나 보내려는 데이터

의 목적지를 설정해 준다 통신 프로토콜은 사용자가 데이터를 처리할 수 있.

는 명령어를 사용할 때 이 명령어를 네트워크 드라이버가 이해할 수 있는 명

령어로 번역해 주는 것이다 그러면 네트워크 드라이버는 이 명령을 이해하고. ,

데이터를 적당히 처리한다.

현재 사용되고 있는 통신 프로토콜은 몇 가지가 존재하고 있으며 이것들은,

서로 호환이 되지 않는다 따라서 사용자는 어떠한 프로토콜을 사용할 것인지.

통신을 하기 전에 결정을 해야 한다 만일 사용자가 일반적으로 존재하는 규.

격의 프로토콜을 사용하는 애플리케이션과 통신을 하려고 한다면 이 애플리,

Page 400: Graphical Programming Labview

장 와 클라이언트 서버19 TCP/UDP

케이션과 같은 프로토콜을 사용하면 된다.

사용자가 애플리케이션을 작성할 경우 프로토콜의 선택에 더 많은 유연성,

을 가지고 있어야 한다 사용할 기종과 프로토콜을 선택하는 데(flexibility) .

중요한 요소는 사용자가 사용 가능한 통신 하드웨어와 애플리케이션에게 필,

요한 통신의 복잡성 등이다.

아래에는 에서 사용 가능한 통신 프로토콜을 나타내고 있으며 각LabVIEW ,

프로토콜은 플랫폼에 따라 사용이 제한된다.

모든 플랫폼 환경에서 사용 가능TCP -

모든 플랫폼 환경에서 사용 가능UDP -

상에서 사용 가능하며 윈도우즈 애플리케이션간 통신에 사용DDE - PC ,

윈도우즈 와 상에서 사용 가능ActiveX - 95 NT

매킨토시에서 사용 가능 매킨토시간 메시지 전달에 사용AppleEvents - ,

매킨토시에서 사용 가능 매킨토시 애플리케이션간에 데이터를 주PPC - ,

고받을 때 사용

위에 열거한 프로토콜 들은 서로 원격 애플리케이션의 위치를 참(Protocol)

조하는 방식에서 호환이 되지 않는다 따라서 매킨토시와 간의 데이터의 전. PC

달을 위해서는 서로 같이 사용하는 프로토콜 을 사용해야 한다 예(Protocol) .

를 들어 와 는 와 매킨토시간의 데이터 전달에 사용될 수 있다, TCP UDP PC .

다른 통신 옵션은 아래와 같다LabVIEW .

사용자에게 시스템 레벨의 명령어를 사용할 수 있게System Exec VI -

한다 일반적으로 두 가지 가 있는데 하나는 윈도우즈의. System Exec VI ,

모든 버전에서 사용되는 것이고 다른 하나는 과 를 위한 것이, Sun HP-UX

다.

에서만 사용할 수 있다Named Pipes - UNIX .

와 매킨토시에서 사용할 수 있다HiQ - PC .

Page 401: Graphical Programming Labview

부 네트워크 및 통신5

통신 프로토콜을 이용한 파일의 공유5. (Share)

통신 프로토콜 에 깊숙이 들어가기 전에 사용자는 자신의 목적에(Protocol)

맞는 또 다른 통신 방법이 있는지 알아보는 것이 좋다 예를 들어 멀리 떨어. ,

져 있는 시스템에서 데이터를 수집하고 이 데이터를 또 다른 시스템에 저장,

하는 애플리케이션에 대해 고려해 보아라.

사용자는 통신 프로토콜 을 이용하여 데이터 수집 애플리케이션(Protocol)

에서 얻은 데이터를 멀리 떨어져 있는 컴퓨터에 저장할 수 있는 애플리케이션

을 제작할 수 있다 이것은 네트워크 컴퓨터 상의 파일 공유 능력을 이용하는.

것이 쉽다 파일 공유를 이용하면 의 일부인 드라이버는 멀리 떨어진 컴퓨. , OS

터와 연결을 하고 이 컴퓨터의 디스크를 마치 자신의 컴퓨터에 있는 디스크,

와 같이 사용할 수 있다 만일 사용자가 두 시스템에 동시에 연결되면 어떠한.

애플리케이션이라도 다른 컴퓨터의 디스크에 데이터를 저장할 수 있다 따라.

서 파일 공유는 두 컴퓨터간에 데이터를 전달하는 가장 쉬운 방법으로 자주,

사용된다.

클라이언트 서버 모델6. / (Client/Server Model)

클라이언트 서버 모델은 네트워크 애플리케이션의 일반적/ (Client/server)

인 모델이다 클라이언트 서버 상에서 하나의 시스템은 서비. / (Client/server)

스를 요청하고 클라이언트 또 하나는 이 요청에 응하게 된다 서버( ), ( ).

예를 들어 애플리케이션 상에서 사용자는 멀리 떨어진 시스템이 실세계의,

물리량을 측정할 수 있도록 할 수 있다 이런 경우 요청에 의해 데이터를 공. ,

급하면 서버가 되며 데이터베이스 프로그램과 같은 다른 애플리케이션에 요,

청을 하여 데이터를 얻으면 클라이언트가 된다.

에서는 매킨토시의 를 제외하고는 모든 프로토콜과LabVIEW , AppleEvents

함께 클라이언트와 서버 애플리케이션을 사용할 수 있다 사용자는.

를 사용하여 다른 애플리케이션에 명령어를 전달할 수 있다 하지AppleEvents .

만 를, AppleEvents 사용하여 명령어 서버를 만들 수는 없다 만일 사용자가.

매킨토시 상에서 서버의 기능을 수행하려면 프로토콜을 사TCP, UDP, PPC

Page 402: Graphical Programming Labview

장 와 클라이언트 서버19 TCP/UDP

용하면 된다.

Page 403: Graphical Programming Labview

부 네트워크 및 통신5

일반적인 클라이언트 모델6.1

아래의 그림은 안에서의 단순화된 클라이언트 모델을 나타내고LabVIEW

있다.

위의 클라이언트 모델에서 는 우선 서버를 열고 통신을 연결한 다LabVIEW

음 서버에 명령어를 보낸다 그러면 그 서비스 요청에 대한 결과를 얻고 다시, . ,

서버와의 연결을 끊는다 마지막으로 통신 중에 발생하는 에러를 보고한다. , .

효율을 높이기 위해서는 다중 명령을 처리하고 명령어를 실행한 다음 연결, ,

을 끊는다.

위의 예는 클라이언트 서버 에서 프로토콜을 어떻게 사용하/ (Client/server)

는지를 간단하게 보여 주는 것이다.

일반적인 서버 모델6.2

아래의 그림은 안에서의 단순화된 서버 모델을 나타내고 있다LabVIEW .

위의 예에서 는 첫 번째로 서버를 초기화하고 초기화에 성공하, LabVIEW ,

면 루프문으로 들어가 연결을 기다린다 일단 연결이 되면 는 명령. , LabVIEW

어를 받기 위해 대기한다 그리고 는 명령어를 실행하고 결과를 반. LabVIEW

환한다 는 사용자가 프론트 패널에서 또는 원격으로 버튼을. LabVIEW STOP

누를 때까지 이러한 행위를 계속 반복한다.

Page 404: Graphical Programming Labview

장 와 클라이언트 서버19 TCP/UDP

이 는 에러를 보고하지 않는다 이것은 명령어가 잘못되었다는 것을 클라VI .

이언트에게 보내고 대화상자를 활성화시켜서 사용자에게 보여 주지는 않는다.

사용자는 클라이언트 모델과 마찬가지로 다중 명령어를 처리하기 위해 항상

통신이 연결된 상태로 만들어 놓으면 성능을 향상시킬 수 있다 하지만 이러.

한 행위의 결과로 인하여 다른 클라이언트는 이 클라이언트가 연결을 끊을 때

까지 대기해야 한다 하지만 프로토콜이 다중 연결을 지원한다면 아래의 그림.

과 같이 블록 다이어그램의 구조를 변경해야 한다.

위의 예는 두 개의 루프를 동시에 실행시켜 의 멀티태스킹 능력, LabVIEW

을 보여 주고 있다 하나의 루프는 연속적으로 연결을 기다리며 연결 요청이. ,

들어오면 이 요청을 큐 에 저장한다 또 하나의 루프는 연결 상태를 체(queue) .

크하면서 요청이 들어온 명령어를 실행시킨다 만일 하나의 연결에 에러가 있, .

으면 연결은 끊어진다 또한 서버의 실행을 취소하면 모든 연결은 끊어진다. , .

위의 예는 전형적인 예이므로 잘 보기 바란다.

와 의 개요7. TCP UDP

이번 절부터는 IP(Internet Protocol), UDP(User Datagram Protocol),

인터넷 어드레스 그리고 클TCP (Transmission Control Protocol), , TCP

라이언트 서버 애플리케이션의 예를 소개한다/ .

Page 405: Graphical Programming Labview

부 네트워크 및 통신5

는 를TCP/IP DARPA(Defense Advanced Research Projects Agency)

위해 개발되었으며 통신 프로토콜로 바람직하다 이것이 개발된 이후에 매우, .

널리 사용되게 되었으며 다수의 컴퓨터에서 많이 사용되게 되었다, .

라는 이름은 와TCP/IP TCP(Transmission Control Protocol)

라는 두 가지 프로토콜의 이름에서 따온 것이다IP(Internet Protocol) . TCP,

는 네트워크 통신의 기본적인 툴이다IP, UDP .

는 단일 네트워크뿐만 아니라 멀티 네트워크 인터넷 에서 통신을TCP/IP , ( )

가능하게 한다 개인 컴퓨터가 지역적으로 멀리 떨어져 있는 경우 는. , TCP/IP

하나의 네트워크 또는 인터넷 컴퓨터 사이에 데이터의 경로를 설정한다 또한.

는 대부분의 컴퓨터에서 사용할 수 있기 때문에 다양한 시스템 상에서TCP/IP

데이터를 전송할 수 있다.

는 네트워크를 통하여 데이터를 전달하는 역할을 한IP(Internet Protocol)

다 이 저수준 프로토콜은 데이터의 최소 한계를 취하여 이것을. (low-level)

데이터그램 크로스 처럼 네트워크 상에서 전송한다 왜냐하(datagram cross) .

면 이것은 데이터가 완전하게 전송될 것이라는 것을 보장하지 않기 때문이다.

따라서 는 애플리케이션 상에서 잘 사용되지 않는다 또한 몇 개의 데이터IP .

그램을 전송할 경우에 이 데이터가 무질서하게 전송되거나 몇 번씩 중복되어, ,

보내지는 경우가 있다.

는 데이터를 전송하기 위해 를 사용하는 고수준 프로토TCP IP (high-level)

콜 이다 따라서 는 가 사용할 수 있도록 데이터를 잘게 분리(Protocol) , TCP IP

한다 하지만 이것은 와 다르게 에러 검출을 할 수 있고 데이터 전송을 확. IP ,

실하게 보장하며 중복되게 데이터를 보내지도 않는다 이러한 이유 때문에, . ,

는 애플리케이션 상에서 가장 우수한 프로토콜로 사용된다TCP .

와7.1 LabVIEW TCP/IP

사용자는 모든 플랫폼의 에서 를 사용할 수 있다LabVIEW TCP/IP .

는 클라이언트 서버 를 생성할 수 있는 와 에 관한 를LabVIEW / VI TCP UDP VI

가지고 있다.

인터넷 어드레스7.2

각 네트워크상의 호스트에는 자신만의 비트 인터넷 어드레스를 가지IP 32

고 있다.

Page 406: Graphical Programming Labview

장 와 클라이언트 서버19 TCP/UDP

이 어드레스는 인터넷 네트워크를 정의하며 특정 호스트와 컴퓨터가 네트,

워크와 연결되어 있다는 것을 정의한다 이 어드레스를 사용하여 사용자는 데.

이터를 보내거나 받는 컴퓨터를 정의할 수 있다 는 이 어드레스를 데이터. IP

그램의 헤더에 포함시켜 데이터를 전송하기 때문에 데이터그램은 정확하게 경

로를 찾는다.

이 비트 어드레스를 지정하는 방법은 비트 어드레스를 개의 비트로32 32 4 8

나누어 그 사이에 점을 찍는 형식을 하고 있다 예를 들어 아래에는 개의. 4 8

비트 데이터로 이루어진 비트 어드레스가 있다32 .

132.13.2.3010000100 00001101 00000010 00011110

또 다른 방법은 어드레스를 이름으로 대치하는 것이다 네트워크 드라이IP .

버는 이름을 사용하기 위해 호스트 이름과 에 대한 정보를 담고 있는 파일IP

을 가지고 있거나 라는 거대한 데이터베이스, DNS(Domain Name System)

를 사용하여 다른 컴퓨터가 이름을 가지고 어드레스를 찾는 데 도움을 주고

있다 이 이름을 우리는 도메인 네임이라 한다. .

인터넷 프로토콜8. (IP)

인터넷 프로토콜 은 데이터를 통신상에서 전달하는 저수준의 프로토콜이(IP)

다 는 데이터를 잘게 나누는데 이것을 데이터그램 이라 한다 데. IP (Datagram) .

이터그램은 데이터와 헤더에 목적지의 주소와 소스의 주소를 담고 있다 또한.

는 네트워크나 인터넷상에서 데이터를 보내기 위해 적당한 경로를 설정한다IP .

원래의 호스트는 데이터가 보내질 완전한 경로를 모른다 하지만 헤더를 이.

용하여 네트워크상의 호스트는 데이터 경로를 설정하여 직접 보내거(direct)

나 다른 호스트를 경유하여 데이터그램을 보낸다 그리고 목적지에 도착한 데.

이터그램은 필요에 따라 작게 분리되어 사용되거나 또는 데이터를 자동으로,

원래의 형태로 조립하기도 한다.

는 데이터를 보내기 위한 프로토콜이며 데이터 전달의 확실성은 보장하IP ,

지 못한다 또한 는 데이터의 순서를 모르기 때문에 순서가 바뀌어 보내지. IP

는 수도 있고 중복되게 보내는 수도 있다, .

Page 407: Graphical Programming Labview

부 네트워크 및 통신5

사용자 데이터그램 프로토콜9. (Datagram) (UDP)

는 컴퓨터 상에서 저수준의 단순한 통신을 설정한다 프로세스는 데이UDP .

터그램을 목적지에 보내거나 포트를 이용하여 통신을 한다 는 컴퓨터 대. IP

컴퓨터 전달을 기본으로 한다 하나의 컴퓨터에서 는 다른 컴퓨터의 포. , UDP

트에 데이터그램을 전달한다 만일 목적지의 포트가 받을 준비를 하지 않았다.

면 데이터그램은 전달이 취소되고 버려진다 가 가지고 있는 문제를, . IP UDP

도 모두 가지고 있는 것이다.

전형적으로 는 신뢰성이 별로 중요하지 않은 데이터 전달에 사용된다, UDP .

예를 들어 는 데이터의 전달 도중 일부의 데이터를 잃어 버려도 관계없, UDP

는 통신에서 주로 사용한다.

10. TCP(Transmission Control Protocol)

는 네트워크 상에서 데이터의 전달에 대한 신뢰성을 사용자에게 제공TCP

한다 데이터를 에러 없이 순서대로 그리고 데이터의 손실 없이 보낼 수 있는. ,

것이다 를 사용하면 목적지의 와 같은 데이터를 추가하고 데이터그램. TCP IP

형태로 만들어 전달한다 이러한 순서는 수신측에서 반전되어 데이터그램을.

분리하고 추가된 정보를 추출하고 에러를 체크한다.

사용하기10.1 TCP

는 연결 기반 의 프로토콜이다 이것이 의미하는TCP (connection-based) .

것은 데이터를 전달하기 전에 연결이 이루어져 있어야 한다는 것이다.

사용자는 외부로부터의 연결을 기다리거나 스스로 특정 어드레스를 사용하

여 연결을 초기화할 수 있다 연결을 위해서는 특정 어드레스를 사용하. TCP

거나 어드레스의 포트를 사용할 수 있다 포트의 번호는 부터 사이의. 0 65535

수를 이용하여 표현되며 시스템에서는 이하의 번호를 가진 포트, UNIX 1024

는 예약되어 있어서 사용할 수 없다 주어진 포트의 서로 다른 포트는 다른 서.

비스를 제공하므로 동시에 여러 개의 연결 상태를 쉽게 유지할 수 있다.

Page 408: Graphical Programming Labview

장 와 클라이언트 서버19 TCP/UDP

함수를 사용하여 사용자는 능동적으로 연결을 시TCP Open Connection

도할 수 있다 이 함수를 사용하면 사용자가 통신하기 원하는 어드레스나 포. ,

트를 지정할 수 있다 연결에 성공하면 연결을 특정 지울 수 있는 를 반환. , ID

하게 된다.

외부의 통신 요청을 대기하기 위하여 사용자는 두 가지 방법을 사용할 수

있다.

첫 번째 방법으로 를 사용하여 수신자 를 생성, TCP Listen VI (Listener)

할 수 있고 특정 포트를 통하여 통신의 연결을 받아들일 수 있다TCP .

두 번째 방법으로 함수를 사용하여 수신자를 생성, TCP Create Listener

하고 함수를 사용하여 새로운 통신을 수용할 수 있다, Wait on Listener .

두 번째 방법의 장점은 함수를 이용하여 수신을 취소할 수 있TCP Close

다는 것이며 시간의 제한 없이 통신에 대한 수신을 원할 때 사용된다, .

통신이 연결되면 와 함수를 사용하여 원격 애플리, TCP Read TCP Write

케이션에게 데이터를 보내거나 받을 수 있다.

마지막으로 함수를 이용하여 연결을 종료하면 된, TCP Close Connection

다 만일 읽지 않은 데이터가 있으면 데이터를 잃어 버리게 된다. .

와10.2 TCP UDP

사용자는 를 사용하여 클라이언트 서버를 구축할 수 있다 는TCP/IP / . TCP

최고의 신뢰성 있는 연결 기반 프로토콜이다 는 고성능의 연결이 필요. UDP

없는 프로토콜이다 하지만 데이터 전달의 신뢰성을 제공하지는 못한다 여기. .

에서 연결이란 하드웨어적인 연결이 아니라 소프트웨어적인 연결을 의미한다.

즉 서버에서는 클라이언트의 연결 요청에 응하고 클라이언트는 서버에게 요, ,

청을 하는 등의 소프트웨어적인 연결을 의미하는 것이다.

서버 사용하기11. VI

이번 절에서는 프로그램적으로 와 애플리케이션을 다루는 것에 대해 배우게VI

된다 또한 원격으로 와 애플리케이션을 다루는 것에 대해서도 배우게 된다. VI .

는 서버를 통하여 자체의 기능에 접근하여 사용할LabVIEW VI LabVIEW

수 있다 또한 윈도우즈 와 상에서 를 통하여 프로그램적인 접. 95 NT ActiveX

Page 409: Graphical Programming Labview

부 네트워크 및 통신5

근을 할 수 있다 함수를 이용하면 모든 플랫폼에서 모든 서버. LabVIEW VI

기능을 이용할 수 있다.

아래의 기능은 서버를 이용하여 할 수 있는 작업을 나타낸다VI .

사용자는 를 정적으로 메모리에 로드하는 대신 동적으로 메모리에 로드VI

할 수 있으며 서버를 이용하여 부 프로그램처럼 호출할 수 있다, VI .

프로그램적으로 의 사용자 인터페이스를 조작할 수 있다VI .

인터넷 상에서 를 사용할 때 호출하여 이용할 수 있는 함수를 만LabVIEW

드는 서버 애플리케이션을 제작할 수 있다.

프로그램적으로 의 속성을 변경할 수 있으며 이것을 디스크에 저장할VI ,

수 있다.

사용자는 애플리케이션을 위한 플러그 인 아키텍처를 제작할 수 있으며,

이것을 이용하여 기능을 추가하거나 다른 사용자에게 공급할 수도 있다.

서버의 가능성11.1 VI

사용자는 두 개의 오브젝트를 이용하여 서버에 접근할 수 있다 애플리VI .

케이션 오브젝트와 오브젝트가 그것이며 이 오브젝트를 이용하여 레퍼런VI ,

스를 생성하면 이 레퍼런스를 이용하여 오브젝트를 사용할 수 있다 이러한.

프로그램 규약은 와 네트워크 레퍼런스와 비슷하다File I/O .

애플리케이션과 레퍼런스의 중요한 점은 그들의 네트워크 투명성에 있VI

다 이것이 의미하는 것은 사용자가 그들의 오브젝트 레퍼런스를 여는 것과.

비슷한 방법으로 원격으로 오브젝트의 레퍼런스를 열 수 있다는 것이다 원격.

오브젝트의 레퍼런스를 연 후에 자신의 컴퓨터에 있는 것처럼 사용할 수 있,

다 원격 오브젝트의 조작을 위해 서버는 주의해서 조작에 관한 정보를 네. , VI

트워크를 통해 보내고 결과를 받는다.

애플리케이션의 레퍼런스를 이용하여 사용자는 환경LabVIEW , LabVIEW

에 대한 정보를 얻을 수 있다 정보라는 것은 플랫폼의 종류 의 버. , LabVIEW

전과 메모리에 있는 에 대한 리스트 등이다 따라서 사용자는 이 정보를 근VI .

거로 애플리케이션에 대한 정보를 변경할 수 있다.

의 레퍼런스가 있다면 이것을 메모리에 올릴 수 있다 일단 의 정보를VI , . VI

얻으면 메모리 상에 상주해 있으며 레퍼런스를 닫으면 제거된다 멀티 레퍼, , .

런스를 열고 사용하는 경우에도 동일하게 메모리에 상주하고 닫으면 제거된

Page 410: Graphical Programming Labview

장 와 클라이언트 서버19 TCP/UDP

다 의 레퍼런스를 이용하면 에서 가능한 것과 같은 의 속성을. VI , VI setup VI

얻거나 설정할 수 있다 또한 프론트 패널의 위치와 같은 다이내믹한 속성도.

설정이 가능하다 를 프린트할 수 있으며 원격으로 저장도 가능하고 문자. VI ,

열을 읽거나 내보낼 수 있다.

애플리케이션과 레퍼런스11.2 VI (reference)

대부분의 애플리케이션에서 함수와, Open Application Reference Open

VI 함수를 각각 이용하여 의 레퍼런스를 생성할 수 있다 레퍼런Reference VI .

스를 프론트 패널 상에 표시하기 위해서는 을 팔레, Path & Refnum Controls

트에서 선택하고 과 을 이용하면 된다 을Application VI Refnum . VI Refnum

변경하려면 상에서 팝업 메뉴를 열고, Refnum Select VI Server Class >

를Virtual Instrument 사용하면 된다.

속성과 호출 노드 사용하기11.3 (invoke node)

애플리케이션과 레퍼런스를 조작하는 유일한 방법은 속성과 호출 노드VI

를 통해서만이 가능하다 이것의 모양은 상부에 두 개의 입력과 출력을 가지.

고 있고 그 아래에 입력과 출력의 변수 리스트를 가지고 있다.

단자는 애플리케이션과 의 레퍼런스이고 는Reference VI , dup reference

다른 함수에게 값을 전달하기 위해 사용하는 레퍼런스의 복사본 이다(copy) .

단자는 에러가 발생한 장소와 그 코드 그리고 설명을 담고 있는 클Error in

러스터이다 만일 에러가 에 존재한다면 노드는 아무 일도 하지 않고. error in ,

있다가 을 통해 전달한다error out .

Page 411: Graphical Programming Labview

부 네트워크 및 통신5

각 노드는 각 레퍼런스 입력에 대해 다형성을 제공한다 따라서 애플리케이. ,

션과 을 연결하면 자동적으로 데이터형을 일치시킨다VI refnum .

속성 노드와 함께 애플리케이션과 의 다양한 속성들을 읽고 쓸 수 있다, VI .

사용자는 팝업 메뉴를 이용하여 속성을 선택할 수 있다.

단일 노드를 이용하여 다중 속성을 읽고 쓸 수도 있으며 속성 노드의 크기,

를 변경하여 새로운 터미널을 추가할 수도 있다.

아래의 그림과 같이 하나의 속성 노드에서 속성을 읽고 쓸 수 있다 사용자.

가 읽은 속성은 오른쪽에 작은 화살표를 가지고 있으며 사용자가 쓴 속성은,

왼쪽에 작은 화살표로 표시된다 이것의 변경은 팝업 메뉴의. Change to Read

나 메뉴를 이용하면 된다Change to Write .

노드의 실행은 위에서부터 아래로 되며 중간에 에러가 발생하면 나머지 속,

성은 무시되고 에러가 출력된다 에러 문자열에는 어떠한 속성이 에러를 냈는.

지에 대한 정보가 담겨 있다.

Page 412: Graphical Programming Labview

장 와 클라이언트 서버19 TCP/UDP

호출 노드 를 이용하면 와 애플리케이션의 메소드(Invoke node) , VI (Methods)

를 실행할 수 있다 속성 노드와는 다르게 단일 호출 노드는 단일 메소드만을 실.

행할 수 있다 사용자는 팝업 메뉴를 사용하여 사용 가능한 메소드를 참조할 수.

있다.

메소드의 이름은 항상 변수 리스트에 있는 첫 번째 터미널의 이름이다 만.

일 함수가 값을 반환하면 그 값은 메소드 터미널의 값이다 예를 들어, . , Get

메소드에 의해 값은 반환된다 아니면Control Value . , Print VI To HTML

메소드와 같이 메소드 터미널은 값이 없다.

호출 노드는 위에서부터 아래로 변수 리스트를 나타내고 선택적인 변수는 아,

래 부분에 회색으로 나타난다 위의 예에서 는 변수를 꼭 필요로. , HTML Path

하고 그리고, Append?, Format, Image Format, Depth, Images Directory

는 선택 변수이다.

와 애플리케이션 클래스의 예11.4 VI

이제부터는 일반적인 애플리케이션과 의 클래스 애플리케이션에 대해 배VI

Page 413: Graphical Programming Labview

부 네트워크 및 통신5

워 보도록 하자.

클래스의 속성과 메소드 다루기1. VI

사용자는 메소드에 독립적으로 의 속성을 얻거나 설정할 수 있다 몇몇VI .

애플리케이션에서 사용자는 의 속성에 접근하거나 메소드를 실행하기 원한VI

다 아래의 블록 다이어그램에서 의 프론트 패널 객체는 자신의 고정치. VI

로 다시 초기화되고 프론트 패널을 연다(Default value) , .

상에서 속성과 메소드에 접근하기 전에 를 실행하VI , Open VI reference

여 레퍼런스를 생성해야 한다 메소드를 호출하기 위해서는 호출 노드를 사용.

하여 사용자는 모든 클래스 메소드에 접근할 수 있다 또한 사용자는 팝, VI . ,

업 메뉴를 이용하여 를 이용Select VI Server Class Virtual Instrument▶

하여 클래스 메소드에 접근할 수 있다VI .

속성 노드는 호출 노드와 비슷하게 동작한다 사용자가 속성 노드에 레. VI

퍼런스를 기록하면 모든 클래스 속성에 접근할 수 있다, VI .

애플리케이션 클래스의 속성과 메소드 다루기2.

사용자는 상에서 메소드에 독립적으로 원격으로 또는 지역적으LabVIEW

로 속성을 얻거나 설정할 수 있다 다음의 다이어그램에는 메모리에 있거나.

지역 컴퓨터에 있는 가 문자열 형태로 프론트 패넬 상에 표시되는 것을 보VI

여 준다.

Page 414: Graphical Programming Labview

장 와 클라이언트 서버19 TCP/UDP

만일 사용자가 메모리나 원격 상에 위치한 를 찾으려면 아래의 예처럼VI ,

문자열 컨트롤을 컴퓨터 이름 입력에 연결하고 컴퓨터의(machine name) , IP

어드레스나 도메인 이름을 넣으면 된다.

와 애플리케이션 클래스 속성과 메소드 다루기3. VI

사용자는 클래스와 애플리케이션 클래스의 속성과 메소드를 각각 사용VI

할 수 있다 몇몇 애플리케이션의 경우에는 두 클래스의 속성과 메소드를 다.

사용해야 한다 아래의 다이어그램에는 지역 컴퓨터의 메모리에 있는 를 결. VI

정하고 각 의 경로가 프론트 패널에 표시된다 메모리 상의 모든 를 찾으, VI . VI

려면 사용자는 애플리케이션 클래스 속성에 접근해야 한다 메모리 상의, . VI

의 수는 루프가 실행되는 수와 같다 메모리상의 각 레퍼런스가 필요For . VI

하기 때문에 와 가 루프의 안쪽Open VI Reference Close VI Reference For

에 사용되었다 의 경로를 얻기 전까지는 애플리케이션 레퍼런스를 닫지 않. VI

는 것이 바람직하다.

Page 415: Graphical Programming Labview

부 네트워크 및 통신5

두 대 이상의 컴퓨터간에 통신을 하는 이유는 다른 컴퓨터에 있는 애플리케이션이 제공하는

서비스를 이용하기 위해서이다 또한 두 대 이상의 컴퓨터에서 통신이 이루어지려면 하드웨. ,

어적인 구성도 이루어져야 하지만 실질적인 통신이 이루어지려면 두 프로세서간에 통신을 할,

수 있는 통신 언어를 같이 사용하여야 한다 이 통신 언어를 프로토콜 이라 한다. (Protocol) .

클라이언트 서버 모델은 네트워크 애플리케이션의 일반적인 모델이다 클라/ (Client/server) .

이언트 서버 상에서 하나의 시스템은 서비스를 요청하고 클라이언트 또 하/ (Client/server) ( ),

나는 이 요청에 응하게 된다 서버( ).

라는 이름은 과 라는TCP/IP TCP(Transmission Control Protocol) IP(Internet Protocol)

두 가지 프로토콜의 이름에서 따온 것이다 는 네트워크 통신의 기본적인 툴이. TCP, IP, UDP

다.

사용자는 를 사용하여 클라이언트서버를 구축할 수 있다 는 최고의 신뢰성 있TCP/IP / . TCP

는 연결 기반 프로토콜이다 는 고성능의 연결이 필요 없는 프로토콜이다 하지만 데이터. UDP .

전달의 신뢰성을 제공하지는 못한다.

는 서버를 통하여 자체의 기능에 접근하여 사용할 수 있다 또한 윈LabVIEW VI LabVIEW .

도우즈 와 상에서 를 통하여 프로그램적인 접근을 할 수 있다 함수95 NT ActiveX . LabVIEW

를 이용하면 모든 플랫폼에서 모든 서버 기능을 이용할 수 있다VI .

요약

Page 416: Graphical Programming Labview

개요1.

이번 장에서는 의 새로운 기능인 의 기능을 이용하는LabVIEW 5.0 ActiveX

방법을 배우게 된다 초보자를 위하여 의 개요와 기능을 중점으로 소. ActiveX

개하고자 한다 에 를 사용할 수 있도록 한 것은 소프. LabVIEW 5.0 ActiveX

트웨어의 변화에 부합하는 것으로 아주 새로운 결과를 가져올 것으로 예상하

고 있다 는 그 사용 범위가 넓은 것으로 사용자의 창의력과 응용력에. ActiveX

따라 다양한 결과를 만들어 낼 수 있다 이번 장에서는 기초적인 부분과.

에서의 활용 방법에 대해서만 논하게 되는데 사용자는 의LabVIEW , ActiveX

무한한 잠재력을 잘 활용하기 바란다.

이 장에서 배우는 것들2.

란 무엇인가ActiveX ?

컨트롤ActiveX

서버ActiveX

의 개념 및 사용법DDE

서버DDE

chapter

20와DDE ActiveX

Page 417: Graphical Programming Labview

부 네트워크 및 통신5

란 무엇인가3. ActiveX ?

컨트롤의 배경에는 인터넷에서 진화를 거듭하는 월드 와이드 웹ActiveX ,

과 성숙 단계에 이른 개인용 컴퓨터의 환경을 통하여 개인용 컴퓨터(WWW)

의 차원에서 고도의 커뮤니케이션을 가능케 하는 이용 환경을 실현하기 위해,

마이크로소프트 사가 제창하고 있는 가 버티고 있다ActiveX .

란 인터넷 인트라넷 응용 프로그램을 지원하는 기술의 총칭이며ActiveX / ,

클라이언트 측의 플랫폼과 서버 측의 플랫폼 그리고 개발 도구 저작 도구 네, , ,

트워킹 테크놀로지로 구성된다 자바처럼 인터넷에서 이용할 것을 전제로 한.

신기술뿐 아니라 등 폭 넓은 네트워크 프로TCP/IP, HTTP, NNTP, SMTP

토콜과 표준 규격을 지원하고 있다.

는 컨트롤 을 비롯해ActiveX ‘ActiveX ’ ‘ActiveMovie’, ‘Active

액티브 도큐먼트 등의 몇몇 기술을 총칭하는 말이다Script’, ‘ ’ .

는 마이크로소프트 사에 의해서 년 초에 발표되었다 이것은ActiveX 1996 .

초기에 인터넷과 월드 와이드 웹에 관련된 기술로서 탄생되었고 기술과OLE

연결되어 사용되기 시작하였으나 점차적으로 기술을 포함하는 기술로OLE

발전되었다.

는 인터넷과 월드 와이드 웹 관련 기술로 탄생되었기 때문에 많은ActiveX

구성 요소가 현재 인터넷 기술과 적절한 조화를 이룬다 먼저 는 현재. ActiveX

의 인터넷 표준을 그대로 따른다 즉 기존의 인터넷 사용자들이 사용해 왔던.

프로토콜을 그대로 사용한다 그러므로 를 사용하여 애플리케이션을. ActiveX

작성할 때 전용 서버를 필요로 하지 않는다 만일 새로운 기술을 구ActiveX .

현하기 위하여 새로운 프로토콜이 필요한 경우 는 그러한 새로운 프ActiveX

로토콜을 기존의 프로토콜로 변환하여 사용하기 때문에 애플리케이션 지원을

위하여 새로운 서버를 필요로 하지 않는다 또한 컨트롤은 다른 컨트. ActiveX

롤들과 함께 사용될 수 있다 즉 컨트롤과 자바 컨트롤을 함께 사용. ActiveX

하여 웹 페이지나 애플리케이션을 작성할 수 있다 이외에도 의 장점. ActiveX

은 여러 가지가 있다 그 중 몇 가지만 언급해 보면 먼저 를 사용하면. ActiveX

인터넷 상의 문서를 동적인 문서로 변화시킬 수 있다 그러므로 더 이상 인터.

넷 문서는 정적일 필요가 없다 또한 를 사용하면 우리는 단순한 웹사. ActiveX

이트의 기능을 뛰어넘어서 상호 작용이 가능한 온라인 정보 저장소를 구축할

수 있다 이것의 의미는 어떤 작업을 수행하는 데 공동 작업이 필요한 경우 더.

Page 418: Graphical Programming Labview

장 와20 DDE ActiveX

이상 그 사람들이 한곳에 모여서 작업을 할 필요가 없어졌다는 것을 의미한다.

즉 새로운 정보를 실시간적으로 교환함으로써 온라인 상에서 공동 작업을 가,

능하게 한다.

기술은 아직 발전 초보 단계라고 해도 과언이 아니다 더욱 발전을ActiveX .

거듭할 것이며 명실상부한 기술로 발전될 것이다.

위의 설명은 초보자들에게 조금 진부하게 느껴졌을지 모르지만 위의 설명,

은 일반적인 설명으로 인터넷 관련 응용 프로그램을 위한 의 설명이ActiveX

고 와 같은 프로그램에서 에 대한 설명은 를 단지, LabVIEW ActiveX ActiveX

컨트롤로만 한정하는 것이 이해하는 데 유리하다 마이크로소프트 사에서는.

인터넷을 위하여 라는 것을 개발하였다 이것은 기존의 컨트롤ActiveX . OLE

을 인터넷 기술과 접목하기 위해서 만든 것으로 에서는 컨트롤로만LabVIEW

생각하면 된다 하지만 는 일반 컨트롤과는 차이가 있다 를. ActiveX . ActiveX

사용하기 위해서는 우선 가 윈도우즈 상에 존재해야만 하며ActiveX ,

에서는 사용 가능한 컨트롤을 선택할 수 있도록 해 준다LabVIEW ActiveX .

컨트롤4. ActiveX

이번 절에서는 그래피컬 프로그래밍과 다른 애플리케이션의 상호 작용 능력

을 향상시켜 주는 컨테이너에 대해 배울 수 있다ActiveX .

프론트 패널4.1 ActiveX

아래의 그림처럼 에는 컨트롤 팔레트의 부 팔레트에LabVIEW 5.0 ActiveX

와 라는 두 개의 컨트롤이 추가되었다ActiveX Container ActiveX Variant .

컨트롤 팔레트 상에서 부 팔레트는 라는 문자를 가진 아이콘이ActiveX OLE

다.

Page 419: Graphical Programming Labview

부 네트워크 및 통신5

컨트롤과 인디케이터4.2 ActiveX Variant

컨트롤과 인디케이터는 사용자에게 클라이언트ActiveX Variant ActiveX

기능을 향상시킬 수 있도록 데이터를 다른 소프트웨어로 보ActiveX Variant

내거나 받을 수 있다 사용자가 컨트롤과 인디케이터를 블. ActiveX Variant

록 다이어그램 상에 위치시키면 아래의 그림과 같은 모양으로 나타난다, .

컨테이너4.3 ActiveX

컨테이너는 객체를 프론트 패널 상에서 종합적으로ActiveX ActiveX VI

다룰 수 있도록 해준다 따라서 컨테이너를 사용하면 객체. ActiveX ActiveX

를 프론트 패널 상에 표시해 주고 이것에 관한 설명을 표시해 주기도 한다, .

아래의 그림은 컨테이너를 프론트 패널 상에 처음으로 생성하였을ActiveX

때 나타나는 모습을 담고 있다.

블록 다이어그램 상에서 컨테이너의 모습은 오토메이션ActiveX refnum

터미널의 형태를 하고 있다 따라서 사용자는 이 터미널에 오토메이션 함수를.

연결하고 컨테이너에 들어 있는 객체를 조작할 수 있는 것이다 만일 객체가.

Page 420: Graphical Programming Labview

장 와20 DDE ActiveX

오토메이션 인터페이스를 가지고 있지 않다면 터미널은 사용 불가능한,

을 가지게 되고 사용자는 오토메이션 함수와 같이 사용할 수 없다refnum , .

프론트 패널 컨테이너에 객체를 넣기 위해서는 팝업 메뉴의, Insert

를 사용하면 된다 그러면 대화상자ActiveX Object . Select ActiveX Object

가 나타나게 된다.

컨테이너에 담을 수 있는 객체의 일반적인 형태가 있는데, ActiveX

Document와 이 그것이다ActiveX Control .

Page 421: Graphical Programming Labview

부 네트워크 및 통신5

이 객체는 컨테이너 객체를 이용하여 담겨지며 팝ActiveX Document - ,

업 메뉴의 옵션으로 편집할 수 있다 그러면 객체를 편집할Edit Object .

수 있는 새로운 윈도우가 나타나게 된다 몇 가지의 도큐먼트들은 오토메.

이션 인터페이스를 지원하며 오토메이션 함수와 함께 블록 다이어그램 상,

에서 사용될 수 있다.

이 객체는 컨테이너 안에서 객체 스스로 활성화되고ActiveX Controls -

동작된다 그들은 모두 오토메이션 인터페이스를 가지고 있으며 블록 다이.

어그램 상에서 오토메이션 함수와 함께 사용될 수 있다.

객체는 세 가지 형태로 만들어질 수 있으며 대화상자 상단의 선택상자에서,

선택하여 만들어진다.

시스템에 등록된 도큐먼트형 객체를 선택Create Document -

파일 시스템에 있는 도큐먼트를 선택하며 객Create Object from File - ,

체를 파일과 링크된 상태로 사용하거나 정적으로 프론트 패널 상에 복사할

수도 있다.

시스템에 등록되어 있는 컨트롤을 선택Create Control - ActiveX

컨트롤이나 도큐먼트 두 종류의 객체가 컨테이너에 들어갈 수 있으며 새로, ,

운 컨트롤과 도큐먼트를 만들 수 있고 기존의 도큐먼트를 삽입할 수도 있다, .

새로운 도큐먼트를 만들기 위해서는 위의 그림에서 를 선Create Document

택하고 객체형을 리스트로부터 선택하면 된다.

기존의 도큐먼트나 파일을 삽입하기 위해서 을 선Create Object from File

택하면 다음과 같이 대화상자가 변하게 된다.

Page 422: Graphical Programming Labview

장 와20 DDE ActiveX

를 이용하여 삽입할 도큐먼트를 찾는다 만일 을 선Browse... . Link To File

택하면 프론트 패널 상의 객체가 변경되면 자동으로 도큐먼트가 갱신된다, .

기존의 컨트롤을 삽입하려고 을 선택하면 아래와 같이 대Create Control ,

화상자가 변경된다.

위의 리스트는 시스템에 등록되어 있는 사용 가능한 컨트롤을 나타내는데,

적절하게 선택하여 사용하면 된다.

팔레트 만들기4.4 ActiveX

를 사용하면 컨트롤을 사Project Import ActiveX Controls... , ActiveX▶

용자 컨트롤로 변경할 수 있고 이것을 팔레트에 추가할 수 있다, .

위의 메뉴가 선택되면 시스템에 있는 컨트롤의 리스트가 나타나게 되는데 하,

나 이상의 원하는 컨트롤을 선택할 수 있다 그러면 커스텀 컨트롤로 저장할 디.

렉토리나 파일을 지정해 주어야 한다 디폴트로 파일을 사용한다.lib . user.lib .

Page 423: Graphical Programming Labview

부 네트워크 및 통신5

서버5. ActiveX

오토메이션 서버의 기능5.1 ActiveX

는 오토메이션 서버로 사용할 수 있기 때문에 다른LabVIEW ActiveX ,

가 가능한 애플리케이션 예를 들어 엑셀 들이 와 각ActiveX ( , MS ) LabVIEW

에게 속성과 메소드를 요청할 수 있다VI .

를 서버로 사용하기 위해서는LabVIEW ActiveX Edit ▶Preference▶

을 사용하면 된다 아래에 그 대화상자의 그림이 있다Server: Configuration , .

프로토콜로 프로토콜을 선택하면 는 생성 가능한 클래ActiveX , LabVIEW

스 애플리케이션 를 내보낸다 가, , VirtualInstrument, ActiveX . progId

LabVIEW. 이나 인 경우에는 애플리케이Application LabVIEW.Application.5

션 객체를 만든다 애플리케이션 메소드는 객체를 생성하고. GetVIReference

가상 계측기에게 포인터를 전달한다.

서버 속성과 메소드5.2 ActiveX

더 자세한 내용은 온라인 레퍼런스를 참조하기 바란다LabVIEW .

또한 속성과 메소드를 어떻게 사용하는지 알려면

examples\comm\freqresp..xls 예를 보면 된다 이 예는 를 실행하고 결과. VI

를 표로 만들기 위해 비주얼베이직 스크립트 매크로를 사용한 것이다.

Page 424: Graphical Programming Labview

장 와20 DDE ActiveX

오토메이션 클라이언트의 기능5.3 ActiveX

는 다른 오토메이션 서버를 조작할 수 있으므로LabVIEW ActiveX ActiveX

오토메이션 클라이언트처럼 행동할 수 있다 는 서버의 속성. LabVIEW ActiveX

과 실행 메소드를 설정하거나 얻을 수 있고 서버는 라이브러리 파일을 이용하,

여 메소드와 속성과 같은 정보를 내보낸다 아래의 표에는 오토메이션. ActiveX

클라이언트를 위해 사용할 수 있는 함수와 그 설명이 있다.

함수 설명

Automation Open 열기를 원하는 오토메이션 클래스의 선택Invoke Node 클래스 내의 함수를 실행Property Node 클래스의 속성을 설정하거나 얻는다.Automation Close 오토메이션 을 닫는다refnum

언어를 사용하여 클라이언트 애플리케이션을 만들려면 아래의 순서를 따C

라야 한다.

접근하기 원하는 메소드 객체 인터페이스의 를 얻는다IDispatch .①

그 객체 메소드의 를 얻는다DispatchID .②

인터페이스의 호출 함수를 이용하여 메소드를 호출한다IDispatch .③

하지만 에서는 아래의 단계를 따르면 된다LabVIEW .

함수를 이용하여 인터페이스의 오토메이Automation Open IDispatch①

션 을 얻는다refnum .

객체에 속한 메소드를 실행하기 위해서 호출 노드를 사용한다.②

다음 절에서 설명하는 클라이언트 예제는 노드의 사용을 잘 설명ActiveX

하고 있다.

클라이언트의 예5.4 ActiveX

아래의 예는 위에서 설명한 함수의 사용법을 묘사하고 있다ActiveX .

데이터를 데이터로 변환하기1. ActiveX G

아래의 예는 데이터를 어떻게 데이터로 변환하는지를 보여 준ActiveX G

다 대부분의 애플리케이션에서 사용자는 을 시작. ActiveX , ActiveX refnum

Page 425: Graphical Programming Labview

부 네트워크 및 통신5

점에서 열고 끝나기 전에 닫아야 한다 이 예에서 사용자는 속성 노드를 이용. ,

하여 마이크로소프트 사의 엑셀 객체를 표시하기 위해 열어야 하며 표시는,

표시 형식을 따라야 한다 데이터 함수는 속성 정보를ActiveX . G LabVIEW

에서 지원하는 데이터 형식으로 변환해야 한다.

마이크로소프트 엑셀 이외의 다른 애플리케이션의 속성 정보에 대해 더 알

고 싶으면 온라인 도움말을 이용하기 바란다.

에서 마이크로소프트 엑셀에 워크북 추가하기2. LabVIEW

두 번째 예제는 에서 마이크로소프트 엑셀에 워크북을 추가하는LabVIEW

것이다 이전에 언급한 대로 사용자는 함수를 사. , Open Automation Refnum

용하여 모든 애플리케이션 을 열어야 하고ActiveX refnum Close

을 이용하여 닫아야 한다 다른 워크북을 추가하고자 한Automation Refnum .

다면 그 워크북에 대한 을 가지고 있어야 한다 이 예에서, refnum . Open

함수를 사용하여 엑셀에 개한 을 열고 속성 노Automation Refnum refnum ,

드를 이용하여 워크북 에 접근할 수 있다refnum .

Page 426: Graphical Programming Labview

장 와20 DDE ActiveX

의 개념6. DDE

이번 절에서는 윈도우즈 의 동적 데이터 교환3.1/95/NT (Dynamic Data

을 위한 들을 소개한다 이런 종류의 들은Exchange, DDE) LabVIEW VI . VI

통신이 설정된 상태에서 다른 애플리케이션과 데이터를 공유하기 위해DDE

함수를 실행한다DDE .

의 개요6.1 DDE

동적 데이터 교환 은 윈도우즈 애플리케이션간의 데이터 교환을 위한(DDE)

프로토콜이다.

통신에서 애플리케이션은 통신을 설정하고 데이터를 전달하였다TCP/IP , .

하지만 는 정보를 교환하기 위해서 서로간에 메시지를 교환하는 고수준DDE

프로토콜이다 메시지의 일부는 명령어이며 대부분의 메시지는 전달되는 데. ,

이터로 데이터의 참조는 이름에 의하여 이루어진다.

두 애플리케이션은 실행 상태에 있어야 하며 통신을 시작하기 전에, DDE

윈도우즈에게 자신들의 콜백 함수의 어드레스를 전달해야 한다(callback) .

는 클라이언트가 다른 애플리케이션 즉 서버에게 연결 메시지를DDE DDE

전달함으로써 통신을 초기화해야 하며 연결이 완료되면 클라이언트는 서버에,

게 명령어를 전달할 수 있으며 데이터를 교환하거나 요청할 수 있다.

클라이언트는 서버에게 데이터를 요청하거나 지시함으로써 데이터를 받을

수 있으며 만일 클라이언트가 실시간 모니터링 데이터를 받기 원한다면 매시, ,

간 변화하는 데이터에 대해 실시간으로 지시를 해야 한다.

통신이 완료되면 서버에게 종료 메시지를 보내면 된다DDE , .

는 마이크로소프트 엑셀과 같은 표준 애플리케이션의 통신에 가장 적DDE

합한 프로토콜이다.

를 사용하면 사용자는 클라이언트처럼 사용할 수 있는 를 만들LabVIEW VI

수 있으며 다른 애플리케이션에게 데이터를 전달할 수 있는 서버도 만들 수,

있다 하지만 는 연결 기반 의 통신은 할 수. , LabVIEW (connection-based)

없으며 단지 다른 애플리케이션에게 이름 정보를 제공하고 이 이름을 참조하, ,

여 데이터를 읽거나 설정할 수 있는 것이다.

Page 427: Graphical Programming Labview

부 네트워크 및 통신5

서비스와 데이터 아이템6.2 DDE

를 이용하면 컴퓨터의 주소와 포트 번호를 이용하여 작업을 했지만TCP/IP ,

를 사용하면 서비스의 이름과 토픽 을 참조하여 통신하려는 애플DDE (topic)

리케이션을 정의한다

따라서 서버는 서비스와 토픽으로 결정되며 주어진 서버는 서비스를 위해,

서 애플리케이션 이름을 사용한다 서버는 통신하기를 원하는 몇 가지의 토픽.

을 제공한다 예를 들어 엑셀을 사용하면 토픽은 스프레드시트의 이름이 될. ,

것이다.

엑셀과의 클라이언트 통신 예6.3

를 지원하는 각 애플리케이션은 서로 다른 서비스 토픽 데이터 아이DDE , ,

템을 가지고 있다 예를 들어 두 개의 다른 스프레드시트 프로그램은 각 스프. ,

레드시트의 셀 을 정의할 수 있는 매우 다양한 방법을 취할 수 있다 사(cell) .

용자가 사용하는 애플리케이션이 무엇을 지원하는지를 알려면 애플리케이션,

과 함께 제공되는 매뉴얼이나 도움말을 참조하라.

마이크로소프트의 엑셀은 윈도우즈 상에서 가장 인기 있는 스프레드시트 프

로그램으로 를 지원한다 따라서 사용자는 엑셀에게 명령어를 보내기 위DDE .

해 를 사용할 수 있다 또한 사용자는 이름을 참조하여 스프레드시트 데DDE .

이터를 읽거나 조작할 수 있으며 엑셀의 서비스 이름은 이다 토픽, ‘Excel’ .

에 대해서는 열려 있는 스프레드시트 문서의 이름을 사용하거나 ‘System’

이라는 단어를 사용하면 된다.

사용자가 토픽의 이름으로 을 사용하면 엑셀에게 일반적인 명‘System’ ,

령어를 보내거나 엑셀의 상태에 대한 정보를 요청할 수 있다 예를 들어. ,

토픽을 사용하면 엑셀은 와 같은 아이템을 사용하여‘System’ , ‘Status’

통신을 하며 이것의 값은 엑셀이 작업중이면 를 그리고 명령어를 실, ‘busy’

행할 준비가 되어 있으면 를 사용한다 또한 토픽을‘ready’ . ‘System’

사용하면 이라는 매우 유용한 데이터 아이템을 사용할 수 있다 이‘Topic’ .

아이템을 사용하면 엑셀이 통신할 수 있는 토픽 리스트를 얻을 수 있다.

다음의 다이어그램은 에서 어떻게 토픽 명령어를 사용하는지를LabVIEW

보여 주고 있다 반환값은 열려 있는 스프레드시트의 이름 문자열 과. ( )

이라는 단어이다‘System’ .

Page 428: Graphical Programming Labview

장 와20 DDE ActiveX

엑셀에서 토픽을 사용하는 또 하나의 방법은 엑셀에게 특정한‘System’

문서를 열도록 지시하는 것이다 를 사용하여 엑셀에게 문서. DDE Execute.vi

를 열도록 매크로 를 보내는 예가 아래의 블록 다이어그램에 있다(macro) .

스프레드시트 파일을 열고 나서 사용자는 각 셀의 값을 읽기 위해 명령어,

를 보낼 수 있으며 이런 경우에 토픽은 스프레드시트 문서 이름과 같다 아이, .

템은 각 셀의 이름 또는 셀의 영역이 될 수 있다 예를 들어 아래의 블록 다이. ,

어그램은 하나의 줄과 하나의 행 값을 읽어 들이는 예이다 특정 채널을 통하.

여 읽어 들인 데이터는 다시 엑셀로 보내지는 것이다.

서버7. DDE

서버를 위한7.1 DDE LabVIEW VI

사용자는 데이터 아이템을 위한 서버 를 로 만들 수 있다 이VI LabVIEW .

서버는 특정 서비스와 토픽에 관하여 정보를 제공할 수 있다는 것이 서버의

Page 429: Graphical Programming Labview

부 네트워크 및 통신5

개념이다 는 어떠한 서비스와 토픽을 사용할 수 있으며 서비스 이. LabVIEW ,

름으로 를 그리고 토픽 이름으로 의 이름을 사용한‘LabVIEW’ , Server VI

다.

는 주어진 서비스를 위해 데이터 아이템을 등록하며Server VI , LabVIEW

는 데이터 이름과 그 값을 기억한다.

사용자는 서버에서 를 사용할 수LabVIEW VI DDE Execute Command

없으며 데이터 아이템을 사용하여 명령어를 보내야 한다, .

아래의 예는 를 만들고 클라이언트 애플리케이션에게 데이DDE Server VI

터를 보내는 방법을 보여준다 이 경우에 데이터는 무작위수. (random

가 되며 사용자는 이 무작위수를 데이터 수집 보드를 이용해 얻은 실number)

시간 데이터로 대치할 수 있으므로 잘 연구해 보기 바란다.

위의 예는 를 이용한 서버의 예이다 루프 안에서 는 아이템의LabVIEW . VI

값을 주기적으로 설정하고 는 다른 애플리케이션에게 데이터가 사, LabVIEW

용 가능하다는 것을 알린다 루프가 끝나면 아이템과 서버를 등록하지 않고. ,

를 종료한다VI .

위의 예에서 클라이언트가 될 수 있는 애플리케이션은 를 포LabVIEW VI

함하여 가 가능한 모든 애플리케이션이다 또한 아래의 예는 위 의 클DDE . VI

라이언트가 될 수 있는 의 다이어그램이며 중요한 것은 서버에서 사용한 서VI

비스 토픽 아이템 이름을 그대로 사용한다는 것이다, , .

Page 430: Graphical Programming Labview

장 와20 DDE ActiveX

데이터 요청7.2

위의 예는 클라이언트의 예이며 루프 사용자가 이전에DDE Request VI ,

보았는지에 관계없이 데이터를 즉시 받을 수 있다 만일 서버와 클라이언트.

의 루프가 정확히 같은 실행 시간을 갖지 않는다면 데이터가 중복되거나 손,

실될 것이다.

이러한 데이터의 중복을 피하는 유일한 방법은 를 사용하여DDE advice VI

서버에게 데이터의 변환을 알려 달라는 요청을 하는 것이다 아래의 블록 다.

이어그램에서 두 애플리케이션은 통신을 설정하고 에서는 통신보다는 대(DDE

화라는 용어도 사용함 를 사용하여 데이터 아이템 변) DDE Advised Start VI

화를 알려 달라고 요청하는 것이다 루프의 매실행 시마다 는. LabVIEW DDE

를 사용하여 데이터 아이템 변화를 체크하고 루프의 실행Advised Check VI ,

이 끝나면 는 를 사용하여 루프를 마무리하LabVIEW DDE Advised Stop VI

고 통신 대화 을 마친다( ) .

데이터의 동기화7.3

위에서 열거한 클라이언트 예는 모니터링 데이터에 대해서 잘 적용될 수 있

Page 431: Graphical Programming Labview

부 네트워크 및 통신5

다 그러나 클라이언트가 받은 데이터는 확실성을 보장할 수 없다. . DDE

를 루프와 함께 사용해도 데이터의 변화를 충분히 검사하지 않으면Advised ,

서버가 제공하는 데이터를 클라이언트는 잃어 버리게 된다.

몇몇 애플리케이션에서 데이터의 손실은 문제가 되지 않는다 하지만 사용자.

가 모니터링 데이터를 취급한다면 데이터의 손실이 커다란 문제로 대두된다, .

와 의 가장 커다란 차이는 는 데이터를 큐에 저장하여 사용하기TCP DDE TCP

때문에 데이터의 손실은 없지만 는 그러한 서비스를 제공하지 않는다DDE .

에서 데이터 교환의 확실성을 위해서는 아래의 다이어그램과 같이 서DDE ,

버를 수정하면 된다.

또한 클라이언트의 다이어그램도 아래와 같이 수정하면 된다.

네트워크7.4 DDE

사용자는 를 하나의 시스템에서 애플리케이션간의 통신을 하기 위해DDE

사용할 수도 있고 네트워크 상에서 사용할 수도 있다 네트워크 상에서, . DDE

Page 432: Graphical Programming Labview

장 와20 DDE ActiveX

를 사용하기 위해서는 윈도우즈 혹은 를 사용해야 하며 표준 윈도우즈95 NT ,

에서는 네트워크 를 지원하지 않는다3.1 DDE .

윈도우즈 상의 각 컴퓨터는 네트워크 이름을 가지고 있다 사용자는 이 이.

름을 네트워크 컨트롤 패널에서 설정할 수 있으며 네트워크 상에서 통신을,

할 때 서비스와 그 이름이 변경된다 이름의 변경은 다음과 같이 컴퓨터의 이.

름을 사용하여 변경된다.

\\computer-name\ndds$

또한 윈도우즈의 의 항목은 아래와 같이 변경된system.ini [DDE Share]

다.

[DDE Share]

topicname = appname, realtopic, , 31, ,0, ,0, 0, 0

더 자세한 내용은 온라인 도움말을 참고하기 바란다.

요약

Page 433: Graphical Programming Labview

부 네트워크 및 통신5

란 인터넷 인트라넷 응용 프로그램을 지원하는 기술의 총칭이며 클라이언트 측의ActiveX / ,

플랫폼과 서버 측의 플랫폼 그리고 개발 도구 저작 도구 네트워킹 테크놀로지로 구성된다, , , .

를 사용하기 위해서는 우선 가 윈도우즈 상에 존재해야만 하며ActiveX ActiveX , LabVIEW

에서는 사용 가능한 컨트롤을 선택할 수 있도록 해 준다ActiveX .

는 다른 오토메이션 서버를 조작할 수 있으므로 오토메이션 클LabVIEW ActiveX ActiveX

라이언트처럼 행동할 수 있다 는 서버의 속성과 실행 메소드를 설정하거나. LabVIEW ActiveX

얻을 수 있고 서버는 라이브러리 파일을 이용하여 메소드와 속성과 같은 정보를 내보낸다, .

는 오토메이션 서버로 사용할 수 있기 때문에 다른 가 가능한LabVIEW ActiveX , ActiveX

애플리케이션 예를 들어 엑셀 들이 와 각 에게 속성과 메소드를 요청할 수( , MS ) LabVIEW VI

있다.

동적 데이터 교환 은 윈도우즈 애플리케이션간의 데이터 교환을 위한 프로토콜이다(DDE) .

통신에서 애플리케이션은 통신을 설정하고 데이터를 전달하였다 하지만 는 정TCP/IP , . DDE

보를 교환하기 위해서 서로간에 메시지를 교환하는 고수준 프로토콜이다.

서버와 클라이언트의 루프가 정확히 같은 실행 시간을 갖지 않는다면 데이터가 중복되거나,

손실될 것이다 이러한 데이터의 중복을 피하는 유일한 방법은 를 사용하여. DDE adviced VI

서버에게 데이터의 변환을 알려 달라는 요청을 하는 것이다.

Page 434: Graphical Programming Labview

…………………………………………………………………

부 록

…………………………………………………………………

내셔널 인스트루먼트의 응용 제품A.

응용 사례B. LabVIEW

…………………………………………………………………

Page 435: Graphical Programming Labview

개요1.

우리는 이 부록에서 내셔널 인스트루먼트 사에서 만들고 있는 제품을 소개

하고자 한다 이것은 내셔널 인스트루먼트의 광고를 하기 위한 것이 아니라.

내셔널 인스트루먼트 제품은 만이 있다고 생각하는 사용자가 있기LabVIEW

때문이다 또한 다른 프로그램이나 장비를 만들고 있다는 사실을 알고 있으면.

서도 어떠한 제품들이 있으며 제품들의 목적을 몰라서 사용하지 못하는 사용

자가 있기 때문이다 내셔널 인스트루먼트에서 생산되는 제품 중에는.

와 함께 사용하면 유용한 것들이 많이 있기 때문에 제품들을 소개할LabVIEW

필요성이 있는 것이다.

이 장에서 배우는 것들2.

내셔널 인스트루먼트 에 대한 소개NI

내셔널 인스트루먼트와의 접촉 방법 및 정보 구하기

내셔널 인스트루먼트의 응용 소프트웨어

내셔널 인스트루먼트의 툴킷(Toolkit)

Appendix

A내셔널 인스트루먼트의응용 제품

Page 436: Graphical Programming Labview

부 록

내셔널 인스트루먼트에 대한 소개3.

사는 다양한 컴퓨터와 에서 사용할 수 있는 개National Instrument OS 500

이상의 계측기 관련 하드웨어와 소프트웨어를 전세계에 공급하고 있는 회사

로 년 전에 최초의 제품인 에 관한 인터페이스와 드라이21 IEEE 488(GPIB)

버를 소개하면서 사업을 시작하였다 년에 제품을 생산하기 시작. 1987 DAQ

하였으며 전세계 개국에 명에 달하는 종업원이 있다 소프트웨어 분, 23 1100 .

야에서는 년에 소프트웨어 드라이버를 시작으로 년에 그래피컬 프1976 1983

로그래밍 언어인 를 매킨토시용으로 개발하기 시작하여 년에LabVIEW 1986

시장에 공개하였으며 년에는 와 언어를 위한 를, 1987 C BASIC LabWindows ,

그리고 년에는 윈도우즈와 에서 사용할 수 있는 를 공급하1992 Sun LabVIEW

기 시작하였다 년에는 년에는 에서 사용할. 1984 HP-UX, 1996 PowerMAX

수 있도록 하여 거의 모든 기종에서 사용할 수 있는 길을 열어 놓았다 또한.

년에는 를 개발하여 사용자를 놀라게 하였다1993 LabWindows/CVI .

4. 내셔널 인스트루먼트와의 접촉 방법 및 정보 구하기

내셔널 인스트루먼트는 한국에 지사를 가지고 있다 또한 사용자를 위한 서.

비스가 매우 다양하기 때문에 이것을 잘 이용하면 내셔널 인스트루먼트 제품

을 사용하는 데 많은 도움이 될 것이다.

우선 한국 내셔널 인스트루먼트의 주소와 전화번호를 아래에 소개한다.

주소 서울시 서초구 반포 동 풍성빌딩 호 우: 4 51-12 203 ( )137-044전화 : (02)596-7456, (02)596-7455

Page 437: Graphical Programming Labview

부록 내셔널 인스트루먼트의 응용 제품A

위에 전화번호를 적어 둔 이유는 내셔널 인스트루먼트에서 개최하는 세미나

에 참석을 원하거나 를 사용하는 도중에 어려움이 있으면 전화를 걸LabVIEW

어 물어볼 수 있도록 하기 위해서이다.

내셔널 인스트루먼트에서는 아주 다양한 서비스를 제공하고 있다 아래에.

서비스의 종류와 방법을 적어 놓았다.

인터넷 서비스1. : http://www.natinst.com

서비스2. ftp : ftp.natinst.com

서비스3. BBS : USA (512) 794-5422

4. Fax on Demand

이 서비스는 사용자가 내셔널 인스트루먼트에 질문이 있는 경우 전화를 걸

어 질문에 해당하는 번호를 누른 후 그 답은 팩스를 통하여 받아보는 것이다.

그 절차는 아래와 같다.

미국 이나 전화기 로 전화(800)329-7177 touch-tone (512)418-1111①

를 건다.

안내 음성이 나오면서 사용자를 안내할 것이다.②

개의 문서번호를 누른 후 을 누른다 개의 문서번호 입력 가능4 # .(5 )③

사용자의 번호를 누른다 국가번호 지역번호 번호Fax .(011- - -Fax )④

사용자의 전화번호나 수신 문서에 찍을 번호를 누를 수 있다.⑤

완료를 알리면 전화를 끊는다.⑥

문서번호

제품 정보1001 -

기술 지원 정보1002 -

사용자 솔루션1003 -

위의 번호를 누르면 더 자세한 문서 정보의 안내를 받을 수 있다.

인스트루먼트 뉴스레터5. (Instrumentation Newsletter)

이것은 일년에 번 분기마다 발행되는데 새로운 기술이나 제품 및 기술 동4 ,

향 등의 정보를 얻을 수 있다 한국지사로 전화를 해서 신청하면 된다. .

6. Automation View

이것 또한 년에 번 발행되는데 와 같은 내용을 담고 있지만1 4 , Newsletter

자동화에 관한 내용을 담고 있다는 것이 다르다.

Page 438: Graphical Programming Labview

부 록

인스트루피디아7. (Instrupedia) CD

에서 제공하는 로 년에 한 번씩 나온다 한국지사로 전화를 하면 받NI CD 1 .

을 수 있다 매우 다양한 정보를 담고 있다. .

소프트웨어 쇼케이스8. (Software Showcase CD)

내셔널 인스트루먼트에서 제공하는 로 자사의 제품에 대한 정보와 대부CD

분의 제품을 평가 버전으로 담고 있어서 제품을 한번 사용해 볼 수 있는 기회

를 제공한다 이것 역시 한국지사로 전화를 하면 받을 수 있다. .

위에 제시한 서비스 중에는 한국지사에 전화를 해서 고객번호를 받으면 자

동으로 받아볼 수 있는 서비스가 있다 따라서 우선은 한국지사에 전화를 해.

서 고객번호를 받기 바란다.

내셔널 인스트루먼트의 응용 소프트웨어5.

그래피컬 프로그래밍5.1 (Graphical Programming)

1. LabSuite

내용물- LabVIEW Full Developers Toolkit

- G Math Toolkit

- HiQ

특징수학 모의실험 모델링 보고서 작- , (Simulation), , data Visualization,

Page 439: Graphical Programming Labview

부록 내셔널 인스트루먼트의 응용 제품A

성을 위한 통합 패키지

와 을 이용한 모의실험과 모델링- HiQ G Math Toolkit

를 이용한 실험과 측정- LabVIEW

를 이용한 실시간 해석- LabVIEW (Analysis)

를 이용한 실험 후의 데이터 분석- HiQ

를 이용한 데이터 가시화- HiQ

의 컨트롤을 사용한 논문 및 보고서 작성- HiQ ActiveX

사용 환경Windows 95/NT, Mac OS

2. LabVIEW professional Developers Suite

특징를 사용하는 사용자를 위한 프로그래밍 툴과 유틸리티 패키지LabVIEW

내용물- LabVIEW Full Development System

- LabVIEW Application Builder

- Professional G Developers Toolkit

3. LabVIEW Application Builder

특징에서 만든 를 일반 윈도우즈 프로그램과 같이 가LabVIEW VI LabVIEW

없어도 실행할 수 있는 프로그램으로 만들어 준다.

사용 환경- Windows 95/NT/3.1

- Sun

Page 440: Graphical Programming Labview

부 록

- Mac OS

- HP-UX

- Concurrent PowerMAX

4. LabVIEW Drivers for Industrial Automation

특징에서 나 인스트루먼트 컨트롤 을LabVIEW DAQ (Instrument Control)

수행할 경우에 사용하는 소프트웨어 드라이버로 이들의 종류에는

PLCs, Plug-In DAQ Board and Signal Conditioning, Motion

와 그 외의 장Control Device, Industrial Communication Interface

치까지 매우 다양하다 이들 드라이버들은 내셔널 인스트루먼트에서 제.

작하는 것이 아니라 기기의 제작자들이 공급을 한다.

5.2 Visual Programming

1. LabWindows/CVI

특징의 다음 가는 주력 상품- NI LabVIEW

와 같은 역할을 하지만 언어를 이에 가미하여 프- LabVIEW C/C++

로그램이 가능

통합 개발 환경을 제공-

다양한 의 사용자 설계- GUI

프로그램 코드 생성 기능-

다양한 라이브러리와 드라이버 제공-

다양한 의 사용- Compiler (MS C++, Borland C++, WATCOM

C++,

Symantec C++ )

외부 과 라이브러리 사용 가능 프로그래밍 가능- DLL , SDK

2. LabWindows

특징와 을 이용한 용 프로그램 개발- C BASIC DOS

을 위한 대화식 프로그램 개발 환경- DAQ, Analysis, Presentation

와 라이브러리 사용 가능- C BASIC

Page 441: Graphical Programming Labview

부록 내셔널 인스트루먼트의 응용 제품A

자동 생성- test code

와 풀다운 메뉴 생성- GUI

라이브러리 사용 가능- MS C, Borland C++, MS QuickBasic

사용 환경이상 수치 연산 프로세서 추천- 80286 ( )

최소- 2 이상MB (4 추천MB )

- 10 이상의 디스크 공간MB

3. Component Works

특징을 위한 을- DAQ, Analysis, Presentation 32-bit ActiveX Control

사용

와 함께 사용- VisualBasic, Visual C++, Delphi, Explorer

과 사용 가능- Analog Digital DAQ Control timing I/O

사용 환경Window NT/95

4. TestSuite for LabVIEW & LabWindows/CVI

특징등을 사용하여 결과를 시험하는 프로그SQL, SPC toolkit, VI, Driver

램의 집합

내용물- LabVIEW VXS

- LabVIEW Instrument Driver Library

- Test Executive

- SQL Toolkit

- SPC Toolkit

사용 환경WINDOWS NT/95/3.1

5. Instrument Driver for LabVIEW & LabWindows/CVI

와 에서 사용할 들로 이것LabVIEW LabWindows/CVI Instrument Driver

들의 목록을 보려면 서비스의ftp /support/labview, /support/labwindows

Page 442: Graphical Programming Labview

부 록

에서 찾을 수 있으며 또는 에서도 찾을 수 있다, Instrupedia CD Catalog .

Page 443: Graphical Programming Labview

부록 내셔널 인스트루먼트의 응용 제품A

5.3 Spreadsheet Tool

1. Measure

특징을 이용한 와- MS Excel DAQ Instrument Control

에서 를 직접 수행하여 데이터를 얻으므로 데이터의 변환- Excel DAQ

이 필요 없다.

사용 가능- DAQ Board

적용 분야온도 측정-

연구실 실험-

설계 특성 연구-

교육-

검사- QA

설계 평가-

5.4 Virtual Instrument

1. VirtualBench Suite

특징상에서 제품 및 소프트웨어와 함께 사용할 수 있는 독립 실- PC DAQ

행 프로그램

아래와 같은 가지가 나와 있다- 6 .

VirtualBench-Scope∙VirtualBench-DSA(dynamic signal analyzer)∙VirtualBench-ARB(arbitrary waveform generator)∙VirtualBench-FG(function generator)∙VirtualBench-DMM(digital multimeter)∙VirtualBench-Logger∙

Page 444: Graphical Programming Labview

부 록

5.5 Vertical Market Add-on Toolkit

내셔널 인스트루먼트에서는 나 등에서 같이LabVIEW LabWindows/CVI

사용할 수 있는 을 따로 판매하는데 이것을 같이 사용하면 프로그램Toolkit ,

개발에 많은 도움이 된다 자세한 내용은 나 카탈로그 등을 참고하기 바란. CD

다.

Test ExecutivesSQL ToolkitSPC ToolkitProfessional G Developers ToolkitUnit Test and Validation procedure ToolkitPID Control ToolkitAutomation Symbol toolkit for LabVIEWPicture Control Toolkit for G Developer EnvironmentsInternet Developers Toolkit

5.6 Math, Data Analysis, Visualization Software

1. HiQ

특징수치 해석과 자료의 표현에 가장 이상적인 도구-

을 사용하여 제품 상에 수치 해석이나- ActiveX Control MS Office

데이터 표현을 수행할 수 있음

문법을 사용하여 간단하게 사용 가능- HiQ Script

이나 와 같은 프로그램과 데이터 공유 가능- Excel LabVIEW

강력한 수치 해석 기능-

보고서 작성 기능-

2. Signal Processing Suite

특징신호 처리에 필요한 Toolkit

내용물- Third-Octave Analysis Toolkit

- Digital Filter Design Toolkit

Page 445: Graphical Programming Labview

부록 내셔널 인스트루먼트의 응용 제품A

- Joint time-frequency analysis Toolkit

- Wavelet and Filter Bank Design Toolkit

이상으로 내셔널 인스트루먼트 제품에 대한 설명을 마친다 좋은 응용 프로.

그램을 만들기 위해서는 어떠한 제품들이 있다는 것을 미리 알고 있으면 도움

이 되기에 위에 열거한 것이다.

Page 446: Graphical Programming Labview

개요1.

분야 기계공학1. :

제목입자 이미지 유속계를 이용한 차원 유동장 조사2 (Using Particle Image

Velocimetry to Investigate Two-Dimensional Fluid Fields)

연구자David R. McAndrew

내용상호 상관 입자 이미지 유속계 코드를 개발하고 평가하였다 이 연LabVIEW .

구에서는 비디오 카메라를 연속적인 이미지를 잡는 데 사용하였고, LabVIEW

는 이미지를 상호 상관시키고 속도 벡터를 그리는 데 사용하였다.

DPIV correlation schematic

Appendix

B응용 사례LabVIEW

Page 447: Graphical Programming Labview

부 록

Simple DPIV program

분야 물리학2. :

제목학부 물리 교육 과정에서의 가상 계측기(Virtual Instrumentation Across

the Undergraduate Physics Curriculum)

연구자Michael F. Vineyard 대학교 물리학과(Richmond )

내용대학교의 물리학 학부 과정에서는 실험 교육에 가상 계측기를Richmond

도입하여 활용하고 있다 초급 과정에서는 역학 열역학 전자 광학을 실험하. , , ,

는 데 가상 계측기를 사용한다 고급 과정에서는 실험의 제어 정밀 계측 해석. , ,

을 하는 데 가상 계측기를 활용한다.

The front panel of the virtual instrument developed for this exercise

Page 448: Graphical Programming Labview

부록 응용 사례B LabVIEW

분야 전기공학3. :

제목네트워크된 가상 핵자기 공명 스펙트로미터의 실현(Implementation of

Networked Virtual Nuclear Magnetic Resonance Spectrometer)

연구자외 대학교 전기공학과Y. Zhou (Lamar )

내용가상 계측 기술을 이용하여 핵자기 공명 수신기를 개발하였다 라디오 주파.

수 신호를 직접 양자화하기 위하여 고속 데이터 수집 보드를 사용하였NMR

으며 로 주파수를 변조하였다 인터넷을 통한 원격 작업을 위하여LabVIEW .

클라이언트와 서버 사이의 네트워킹 인터페이스를 개발하였다.

Example of processed NMR data

Page 449: Graphical Programming Labview

부 록

분 야 화학공학4. :

제목가상 계측기를 사용한 의 구현FTOP (Implementation of Full Tensor

Optical Rheometry using Virtual Instrumentation)

연구자매사추세츠대학교 화학공학과S. G. Kalogrianitis( )

내용광학 레올로지를 이용한 폴리머의 차원 연구를 소개한다 유동하는 폴리머3 .

용액에서 실시간 차원 광학 비등방성을 측정하는 새로운 방법을 개발하였다3 .

Real time display of birefringence experiments

Page 450: Graphical Programming Labview

부록 응용 사례B LabVIEW

분야 기계공학5. :

제목가상 계측 컴퓨터 소프트웨어를 이용한 기계공학 실험교과과정

(Mechanical Engineering Lab Course Using Virtual Instrument

Computer Software)

연구자대학교D. M. McStavick(Rice )

내용대학 기계공학과에서는 열역학 열전달 유체역학 진동 등의 실험교육Rice , , ,

에 가상 계측기를 도입하여 활용하고 있다 가상 계측기를 이용하여 데이터.

수집 저장 그래픽 표현 시스템 파라미터 제어를 수행한다, , , .

Front Panel for Wave Tank I and Wave Tank II Experiments

Page 451: Graphical Programming Labview

부 록

분 야 원자력공학6. :

제목원자력공학에서의 가상계측기의 응용(Application of Virtual

Instrumentation in Nuclear Engineering)

연구자외 원자력공학과Kevin W. Wenzel (MIT )

내용의 원자력공학과 대학원 과정에서는 최신 데이터 수집 및 제어 기술을MIT

통합한 실험교과과정에 가상계측기를 활용하여 교육의 성과를 높이고 있다.

플라스마 연구에서 중요한 파라미터인 전자밀도와 온도를 측정하는

실험에 가상계측기가 사용되었다Langmuir probe .

The Particle Physics experiment consists of a small vacuum chamber a 244 cm particle

source, a solid-state particle detector, and the associate data acquisition equipment.

Page 452: Graphical Programming Labview

부록 응용 사례B LabVIEW

분 야 해석화학7. :

제목와 를 이용한 온라인 폴리에틸렌 첨가제 해석LabVIEW Charm Works

(On-line Polyethylene Additives Analysis Using LabVIEW and Charm

Works)

연구자케미칼Phil Hope(BP )

내용케미칼에서는 압출기에서 폴리에틸렌에 들어 있는 가지 첨가제의 농도BP 3

를 실시간 온라인으로 측정하는 기반의 시스템을 개발하였다LabVIEW .

polyethylene Extrusion Unit-Additive Measurement System

Page 453: Graphical Programming Labview

부 록

분 야 환경8. :

제목공기 품질 연속 감시 시스템EcoMonitor -

(Air quality Continuous Monitoring System)

개발자외Victor F. Dias (INESC)

내용공장의 노 또는 보일러에서 발생되는 배기 가스를 연속적으로 감시하기( )爐

위한 시스템의 개발에 가상 계측기가 중요한 역할을 담당하였다 는. LabVIEW

신호의 측정 가시화 데이터 수집 전달 해석 보고서 작성 등에 활용되었다, , , , , .

EcoMonitor architecture

Page 454: Graphical Programming Labview

부록 응용 사례B LabVIEW

분야 전기공학9. :

제목가 지하로 들어간다LabVIEW (LabVIEW goes Underground).

연구자John Phelps(G system)

내용전기회사는 시내의 지하 고전압 분배구의 상태를 감시하기 위한TU Dallas

시스템이 필요하였다 은 와 보드를 이용하여 개. G system LabVIEW DAQ 30

의 다른 통신선을 통하여 들어오는 신호를 수집 해석하고 지하 분배구의 상,

태를 조사하여 나타내는 시스템을 개발하였다.

G-system architecture

Page 455: Graphical Programming Labview

찾아보기

오토메이션ActiveX ···································408

컨테이너ActiveX ······································404

컨트롤ActiveX ··········································402

팔레트ActiveX ··········································406

ASCII Waveform······································306

Binary Waveform·····································307

Bipolar ························································238

Configuration utility ·································250

보드DAQ ···················································273

버튼Execution Highlighting ······················35

루프For ························································98

Gain ·····························································238

GPIB····························································292

Instrument Driver ····································297

Key Navigation ·········································163

LabVIEW······················································14

LabWindows/CVI ······································245

Measure ·····················································246

Passband····················································350

Stopband····················································350

Test Panel ·················································250

Transition Band········································350

Undo···························································192

Unipolar ······················································238

VI Setup ·····················································158

저장하기VI ··················································61

Virtual Bench ············································245

VISA···························································288

루프While ····················································98

그래프XY ···················································140

가상 계측기···················································15

가시성(Visuality) ·······································189

값의 정밀도·················································370

객체 속성(Object Attribute) ····················189

경로(Path) ····················································55

고급 파일의 입출력····································331

구조 윈도우···················································76

구조적인 프로그램········································68

그래프··························································140

그래피컬 프로그래밍····································14

그래픽 사용자 인터페이스·························179

글꼴 링(Font ring) ······································35

네트워크······················································384

네트워크 DDE············································415

노드································································20

다이내믹 메뉴·············································212

다형성(Polymorphism)····················139, 395

단위 검사····················································378

단위(Unit) ··················································377

데이터 수집(DAQ) ·····································236

데이터 저장(Data Logging) ························85

찾 아 보 기

Page 456: Graphical Programming Labview

찾아보기

데이터그램(Datagram)······························390

데이터로그(Datalog) ··································332

데이터베이스 접근(Database Access) ······86

데이터의 동기화·········································414

도움말··························································187

도움말 메뉴···················································31

도큐먼트 VI ················································197

동적 데이터 교환········································410

디버깅····························································88

디지털··························································236

디지털 신호 처리········································346

디지털 입 출력/ ··································247, 264

디지털 필터·················································350

디지털 아날로그 변환- ·······························247

라벨································································44

라벨링 툴·······················································33

로컬토크(LocalTalk) ·································384

루프 카운터(Loop Count) ···························99

리시버(Receiver) VI ·································301

마법사(Wizard) ··········································273

멀티 플롯 차트(Multi Plot) ······················103

멀티스레드(Multi threading) ··········321, 219

멀티태스킹(multi tasking) ························320

멀티플렉서(Multiplexor) ···························238

메뉴 에디터(Menu editor) ·······················206

무작위 접근(random) ································335

문자열(String) ·····························21, 54, 153

바이트 스트림(byte stream)····················340

배열 함수(Array Function) ·····················136

배열(Array) ···············································132

번들(Bundle) ··············································141

범위 에러·······················································89

범위 옵션····················································369

변환 시간(Translation Time)··················238

병렬 다이어그램·········································326

보드(Board) ···············································236

불 스위치····················································104

불(Boolean) ··········································21, 53

브레이크포인트 툴(Breakpoint Tool) 34, 93

블록 다이어그램····································13, 16

사용자 Control ···········································184

사용자 Indicator ········································184

사용자 메뉴바(menubar) ··························205

색상 복사 툴·················································34

색상 툴··························································34

샘플 시그널(Sample Signal) ····················347

서브 프로그램···············································68

선택 터미널(Selector terminal) ·····106, 118

셀(cell) ·······················································170

속성 노드(Attribute node) ·······················189

수식 노드(Formula Node) ·······················121

수집 시간(Acquisition Time) ··················238

수치 출력 터미널··········································99

수치 해석(Numeric) ··································346

수치(Numeric) ·············································21

수치 컨트롤(Numeric) ································52

스위프 차트(sweep chart) ·······················102

스코프 차트(scope chart) ························102

스크롤 툴·······················································34

스톱 버튼(Stop) ···········································35

스트럭처(Structure) ····································98

스트립 차트(strip chart) ··························102

스펙트럼 분석·············································352

스펙트럼 측정·············································352

스프레드시트(Spreadsheet) ·····················165

슬라이드 컨트롤·········································371

시퀀스 로컬(Sequence Local) ·················121

시퀀스 스트럭처·········································119

시프트 레지스터·········································100

신호·····························································236

신호 발생(Signal Generation) ·················347

신호 조절 모듈···········································237

실행 모드·······················································35

실행 버튼·······················································35

Page 457: Graphical Programming Labview

찾아보기

실행 속도····················································325

싱글 스텝·······················································89

싱글 플롯 차트(Single Plot) ····················102

아날로그······················································236

아날로그 입 출력/ ·······························252, 258

아날로그 디지털 변환- ·······························247

아날로그 디지털 변환기- ····························238

아스키 파일(ASCII) ···································334

아이콘·····················································17, 21

아이콘 pane··················································21

아이콘 편집 대화상자···································69

에러································································88

에러 리포팅(Error Reporting) ·················346

에러 핸들러(Error Handler) ····················164

연속 실행 버튼··············································35

오퍼레이팅 메뉴············································30

오퍼레이팅 툴···············································33

와이어····························································20

와이어링 툴···················································34

와이어링(Wiring Up) ··································55

윈도우 메뉴···················································31

이더넷(Ethernet) ·······································384

이진 파일(Binary file) ······························332

인덱스(index) ·············································132

인디케이터····································18, 51, 361

인터넷 어드레스·········································389

인터넷 프로토콜(IP) ··································390

일시 정지 버튼(Pause) ·······························35

임시 파일(Temporary file) ······················218

입력 범위(Input Range) ···························238

입력 형태(Input Type) ·····························237

자동 인덱스(Auto-Indexing) ···················134

자동 정렬 기구··············································35

재진입(Reentrant) ···························159, 322

전송 시간(Transfer Time) ······················238

전역변수(Global Variable) ·······················314

점퍼(Jumper) ·············································252

정수 표현····················································368

조화 왜곡(Harmonic distortion) ····352, 354

주파수 왜곡·················································350

주파수(Frequency) ···································348

지역변수(Local Variable) ···············100, 314

직렬 포트(Serial Port) ·····························294

처리 시간(Throughout) ····························238

카운터 타이머/ (counter/timer) ··················247

캡션 라벨(Caption Label) ··························46

커넥터·····················································17, 21

컨트롤··················································18, 361

컨트롤 팔레트(Controls Palette) ···············32

컬러 램프(Color Ramp) ····························376

케이스 스트럭처(Case Structure) ···········118

클라이언트 서버/ ··········································386

클러스터(Cluster) ······································141

키 네비게이션(Key Navigation) ·············365

터미널····························································19

통계(Statistics) ·········································346

통신 프로토콜(Communication Protocol) 384

툴 팔레트(Tools Palette) ···························32

트랜스미터(Transmitter) VI ····················301

파일 메뉴·······················································30

파일의 공유·················································386

파형 그래프(Waveform Graph) ···············140

파형 입력 및 출력······································260

파형 차트(Waveform Chart) ···················101

파형의 전달(Waveform Transfers) ········306

팔레트····························································31

팔레트 에디터·············································194

팝업 툴··························································34

Page 458: Graphical Programming Labview

찾아보기

팝업 메뉴(Pop-up) ·····································36

편집 메뉴·······················································30

편집 모드·······················································35

포스트스크립트(PostScript) ·····················199

포지셔닝 툴···················································33

표(table) ·····················································171

표시 형식(Representation) ························52

풀다운 메뉴···················································30

프로브 툴(Probe Tool) ·······················34, 92

프로젝트 메뉴···············································31

프로토콜······················································230

프론트 패널············································13, 15

프론트 패널 순서········································366

프리 라벨·······················································45

프린트··························································197

플러그 인- (Plug-in) ··································247

하이라이트 실행············································91

함수 팔레트(Functions Palette) ················32

해상도(Resolution) ····································239

해석 함수····················································346

핸드셰이킹(Handshaking) ·························295

호출 노드····················································394

회전형 수치 컨트롤····································375

히스토리 윈도우·········································226

Page 459: Graphical Programming Labview

참고문헌 443

참 고 문 헌

Lisa K. Wells,

"The LabVIEW Student Edition User's Guide", Prentice Hall, 1995

Lisa K. Wells and J. Travis, "LabVIEW for Everyone", Prentice Hall,

1997

Gary W. Johnson, "LabVIEW Graphical Programming", Mc-Graw Hill,

1994

National Instruments, "Instrumentation Catalogue 1998", 1998

Technical Seminar, "LabVIEW4.1 - Join the G Revolution", 1997

National Instruments, "LabVIEW 5.0 Evaluation Guide", 1998

National Instruments, "LabVIEW Basics", 1995

National Instruments, "LabVIEW Tutorial"

National Instruments, "LabVIEW Data Acquisition Basics Manual"

National Instruments web site, "http://www.natinst.com"

Page 460: Graphical Programming Labview

444 C 사용법D

사용법CD

이 책에 포함된 는 내쇼날인스트루먼트에서 제공하는 평가용CD LabVIEW

프로그램과 책에 나오는 연습문제의 해답을 각 장별로 담고 있다.

에 있는 평가용 프로그램은 내셔널인스트루먼트의 웹사이트에서도 제공된다 웹 주소는CD LabVIEW .※

이다 또한 이 사이트에서는 사용자들에게 이외의 다른 평가판http://www.natinst.com . LabVIEW

프로그램들과 인스트루먼트 드라이버 솔루션 새로운 뉴스들을 제공하고 있으므로 유익한 정보를 얻을 수, ,

있을 것이다.

■ 의 구성CD

▸디렉토리에 있는 형식의 파일을 읽을 수 있는 로 설치는manual pdf Acrobat Reader

를 실행시키면 이 자동 설치된다ar32e301.exe Acrobat Reader 3.01 .

사용자가 파일을 보려면 를 설치한 후에 디렉토리에 있는pdf Acrobat Reader manual

파일을 더블클릭하면 자동으로 문서를 볼 수 있다pdf .

▸사용자컨트롤을만드는데필요한아이콘과그림파일및부가적인데이터들을담고있다.

▸내쇼날인스트루먼트에서 제공하는 평가판 소프트웨어 LabVIEW, BridgeView,

등을 담고 있다LabWindows, HiQ, IMAQ, Lookout, Measure .

의 설치는 디렉토리 안의 를 실행하면 된다LabVIEW LV Evaluation setup.exe .

에러가 발생하면 디렉토리의 파일을 실행한 후 대화상expire Patch lv50evalpatch.exe ,

자가 활성화되면 드라이브에 설치된 파일을 선택해주면 된다C LabVIEW.exe .

▸책에 있는 연습문제의 솔루션 들을 각 장별로 담고 있는 디렉토리이다vi .

▸와 를 위한 데모를 담고 있다LabVIEW BridgeVIEW .

▸각 소프트웨어별로 사용자들의 솔루션을 담고 있다.

에 들어있는 는 정품과 동일한 기능을 가지고 있으나 평가판CD LabVIEW

이므로 다음과 같은 제약이 있다.

일단 에 인스톨한 날부터 일 동안 사용할 수 있으며 독립 실행파일PC 30 ,

확장명이 을 만들 수가 없다 그리고 를 실행시키고 분이( EXE) . , LabVIEW 10

지나게 되면 실행이 멈춘다 하지만 날짜를 변경하거나 다시 인스톨하면 계속.

해서 사용할 수 있다.

Page 461: Graphical Programming Labview

- 445 -

著者 略歷

한양대학교 원자력공학과 졸업

한양대학원 기계공학과 공학박사

대학교 공작기계연구소 방문 과학자Stuttgart (IfW)

기계공학과 방문 교수U. of Massachusetts

현재 한국기술교육대학교 생산기계공학과 부교수