LabVIEW TM Core 1 교육과정매뉴얼 교육과정소프트웨어버전 2010 2010 년 10 월판 325290B-0129 LabVIEW Core 1 교육과정매뉴얼 저작권 1993 2010 National Instruments Corporation. 판권소유. 저작권법에따라, 이간행물은 National Instruments Corporation 의사전서면동의없이는간행물의전부또는일부라도사진복사, 기록, 정보검색시스템으로저장, 번역을할수없음은물론이거니와전자또는기계방식의여하한형태로도복제또는송신될수없습니다. 내쇼날인스트루먼트는타인의지적재산권을존중하며사용자에게도그렇게할것을요청하고있습니다. NI 소프트웨어는저작권및기타지적재산권법에의해보호받고있습니다. NI 소프트웨어를타인소유의소프트웨어또는기타자료들을복제하는데사용할수있는경우, 여러분은 NI 소프트웨어를라이센스또는기타법적제한조건에따라복제해도되는자료들을복제하는데에만사용하여야합니다. For components used in USI (Xerces C++, ICU, HDF5, b64, Stingray, and STLport), the following copyright stipulations apply. For a listing of the conditions and disclaimers, refer to either the USICopyrights.chm or the Copyrights topic in your software. Xerces C++. This product includes software that was developed by the Apache Software Foundation (http://www.apache.org/). Copyright 1999 The Apache Software Foundation. All rights reserved. ICU. Copyright 1995 2009 International Business Machines Corporation and others. All rights reserved. HDF5. NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 1998, 1999, 2000, 2001, 2003 by the Board of Trustees of the University of Illinois. All rights reserved. b64. Copyright 2004 2006, Matthew Wilson and Synesis Software. All Rights Reserved. Stingray. This software includes Stingray software developed by the Rogue Wave Software division of Quovadx, Inc. Copyright 1995 2006, Quovadx, Inc. All Rights Reserved. STLport. Copyright 1999 2003 Boris Fomitchev 상표 CVI, LabVIEW, National Instruments, NI, ni.com, National Instruments 회사로고및이글로고는 National Instruments Corporation 의상표들입니다. National Instruments 의기타상표는 ni.com/trademarks 의 Trademark Information 을참조하시기바랍니다. The mark LabWindows is used under a license from Microsoft Corporation. Windows is a registered trademark of Microsoft Corporation in the United States and other countries. 이문서에서언급된다른제품과회사의이름들은각각해당회사들의상표이거나상호들입니다. National Instruments Alliance Partner Program 의멤버들은 National Instruments 와는다른독자적인사업기구들이며 National Instruments 와어떠한대리관계나파트너쉽또는 joint-venture 관계를가지고있지않습니다. 특허권 National Instruments 제품 / 기술에대한특허권에관하여는귀하의소프트웨어에있는도움말 특허, 귀하의미디어에있는 patents.txt 파일또는 ni.com/patents 의 National Instruments Patent Notice 를참고하십시오.
ÉTÉ Å[ÉgÉTÉ Å[Ég 전세계기술지원및제품정보 ni.com/korea National Instruments 본사 11500 North Mopac Expressway Austin, Texas 78759-3504 USA 전화 : 512 683 0100 전세계사무소 남아프리카공화국 27 0 11 805 8197, 네덜란드 31 (0) 348 433 466, 노르웨이 47(0)66907660, 뉴질랜드 0800 553 322, 대만 886 02 2377 2222, 대한민국 82 02 3451 3400, 덴마크 45 45 76 26 00, 독일 49 89 7413130, 러시아 7 495 783 6851, 레바논 961 (0) 1 33 28 28, 말레이시아 1800 887710, 멕시코 01 800 010 0793, 벨기에 32 (0) 2 757 0020, 브라질 55 11 3262 3599, 스웨덴 46 (0) 8 587 895 00, 스위스 41 56 2005151, 스페인 34 91 640 0085, 슬로베니아 386 3 425 42 00, 싱가포르 1800 226 5886, 영국 44 0 1635 523545, 오스트리아 43 662 457990-0, 이스라엘 972 3 6393737, 이탈리아 39 02 41309277, 인도 91 80 41190000, 일본 0120-527196, 중국 86 21 5050 9800, 체코 420 224 235 774, 캐나다 800 433 3488, 타이 662 278 6777, 터키 90 212 279 3031, 포르투갈 351 210 311 210, 폴란드 48 22 328 90 10, 프랑스 01 57 66 24 24, 핀란드 358 (0) 9 725 72511, 호주 1800 300 800 추가적인지원정보는, 추가적인정보와리소스부록을참조하십시오. National Instruments 문서에대한문의사항은 National Instruments 웹사이트의 ni.com/info 에서정보코드 feedback 을입력하십시오.
목차 수강생안내서 A. NI 자격증...vii B. 교육과정설명...viii C. 시작하기전의준비사항...ix D. 교육과정소프트웨어설치하기...x E. 교육과정목표...x F. 표기법...xi 1 과하드웨어설정하기 A. DAQ 하드웨어...1-2 B. DAQ 소프트웨어사용하기...1-8 C. 인스트루먼트컨트롤...1-10 D. GPIB...1-10 E. 시리얼포트통신...1-12 F. 인스트루먼트컨트롤소프트웨어사용하기...1-14 G. 교육과정프로젝트...1-16 2 과 LabVIEW 탐색하기 A. 버추얼인스트루먼트 (VI)...2-2 B. VI 의구성요소...2-2 C. VI 시작하기...2-4 D. 프로젝트탐색기...2-7 E. 프런트패널...2-12 F. 블록다이어그램...2-18 G. 컨트롤, VI, 함수검색하기...2-26 H. 도구선택하기...2-28 I. 데이터흐름...2-35 J. 간단한 VI 만들기...2-36 3 과 VI 문제해결및디버깅하기 A. LabVIEW 도움말유틸리티...3-2 B. 깨진 VI 수정하기...3-4 C. 디버깅기법...3-6 D. 정의되지않은데이터또는예상치못한데이터...3-11 E. 에러확인및에러핸들링하기...3-12 National Instruments Corporation iii LabVIEW Core 1 교육과정매뉴얼
목차 4 과 VI 구현하기 A. 프런트패널디자인...4-2 B. LabVIEW 데이터타입...4-7 C. 코드문서화하기...4-16 D. While 루프...4-18 E. For 루프...4-21 F. VI 타이밍...4-25 G. 루프반복에서데이터전달하기...4-26 H. 데이터플롯하기...4-28 I. 케이스구조...4-34 5 과데이터연계하기 A. 배열...5-2 B. 클러스터...5-7 C. 타입정의...5-12 6 과리소스관리하기 A. 파일 I/O 이해하기...6-2 B. 상위레벨파일 I/O...6-3 C. 하위레벨파일 I/O 이해하기...6-4 D. DAQ 프로그래밍...6-5 E. 인스트루먼트컨트롤프로그래밍하기...6-7 F. 인스트루먼트드라이버사용하기...6-9 7 과모듈러어플리케이션개발하기 A. 모듈화이해하기...7-2 B. 아이콘및커넥터팬만들기...7-4 C. SubVI 사용하기...7-8 8 과일반적인디자인기법과패턴 A. 순차적인프로그래밍사용하기...8-2 B. 상태프로그래밍사용하기...8-4 C. 상태머신...8-4 D. 병렬처리사용하기...8-12 9 과변수사용하기 A. 병렬과정...9-2 B. 변수...9-4 C. 기능적인글로벌변수...9-13 D. 경합조건...9-16 LabVIEW Core 1 교육과정매뉴얼 iv niedu.co.kr
목차 부록 A 측정의기초 A. 컴퓨터기반의측정시스템사용하기...A-2 B. 측정의개념이해하기...A-4 C. 측정품질개선하기...A-11 부록 B 추가적인정보와리소스 용어집 색인 National Instruments Corporation v LabVIEW Core 1 교육과정매뉴얼
데이터연계하기 토픽 5 서로관련된여러데이터를같이그룹화하는것이유용한경우가종종있습니다. LabVIEW 에서는배열과클러스터를통해서로연관성이있는데이터를그룹화합니다. 배열은동일한타입의여러데이터를하나의데이터구조로통합하고, 클러스터는다양한타입의여러데이터를하나의구조로통합합니다. 타입정의를사용하여사용자컨트롤및인디케이터를정의할수있습니다. 이번과에서는배열, 클러스터, 타입정의에대해배우고, 이를효과적으로사용할수있는응용법을학습하게됩니다. A. 배열 B. 클러스터 C. 타입정의 National Instruments Corporation 5-1 LabVIEW Core 1 교육과정매뉴얼
A. 배열 노트 배열은원소와차원으로구성됩니다. 배열을구성하는데이터를원소라고합니다. 차원은배열의길이, 높이, 혹은폭을지칭합니다. 배열은하나또는그이상의차원을가지며, 메모리가충분하다면한차원마다최대 (2 31 ) 1 개의원소를포함할수있습니다. 숫자형, 불리언, 경로, 문자열, 웨이브폼, 클러스터데이터타입으로배열을만듭니다. 비슷한데이터를모아서작업을하거나반복된연산을수행하는경우에배열이유용할수있습니다. 배열은웨이브폼에서수집한데이터및루프에서생성된데이터를저장하는이상적인방법입니다. 이경우, 루프의각반복에서배열안의원소를하나씩생성하게됩니다. LabVIEW 에서배열인덱스는 0 을기준으로합니다. 배열에있는첫번째원소의인덱스는차원에관계없이 0 입니다. 제한사항 배열로이루어진배열을만들수는없습니다. 그렇지만다차원의배열을사용할수도있고, 아니면각각의클러스터가하나또는그이상의배열을포함하는클러스터로이루어진배열을생성할수도있습니다. 그러나, 서브패널컨트롤, 탭컨트롤,.NET 컨트롤, ActiveX 컨트롤, 차트, 멀티플롯 XY 그래프의배열은생성할수없습니다. 클러스터에대한추가적인정보는이과의클러스터섹션을참조하십시오. 1 년의 12 달을나열한텍스트배열을간단한예로들수있습니다. LabVIEW 에서는 12 개의원소를가진 1D 문자열배열로 1 년을나타낼수있습니다. 배열원소에는순서가있습니다. 사용자가특정원소에접근할수있도록, 배열에서는인덱스를사용합니다. 인덱스는 0 을기준으로해서시작합니다. 즉, n 개의원소를가진배열은 0 에서부터 n 1 까지인덱스되는것입니다. 예를들어, n = 12 인 12 달에대하여인덱스는 0 에서 11 이됩니다. 3 월은세번째달이므로인덱스는 2 입니다. LabVIEW Core 1 교육과정매뉴얼 5-2 niedu.co.kr
그림 5-1 에서숫자형의배열예를확인할수있습니다. 이배열에서보이는첫번째원소 (3.00) 는인덱스 1 에있으며, 두번째원소 (1.00) 는인덱스 2 에있습니다. 인덱스디스플레이에서원소 1 이선택되었기때문에, 인덱스 0 의원소가이그림에서는보이지않습니다. 인덱스디스플레이에서선택된원소는항상원소디스플레이의가장왼쪽자리에위치하게됩니다. 배열컨트롤및인디케이터생성하기 1 1 인덱스디스플레이 2 원소디스플레이 그림 5-1. 숫자형배열컨트롤 아래의프런트패널에서보이는것처럼프런트패널에배열쉘을추가한다음에숫자형, 불리언, 문자열, 경로, 참조번호, 클러스터컨트롤또는인디케이터등의데이터객체및원소를배열쉘안에끌어놓아서배열컨트롤이나배열인디케이터를만들수있습니다. 그림 5-2. 배열쉘안에숫자형컨트롤놓기 적합하지않은컨트롤및인디케이터를배열쉘안에끌어오려고하면, 배열쉘에컨트롤또는인디케이터를놓을수없게됩니다. 블록다이어그램에서배열을사용하기전에, 먼저배열쉘안에객체를삽입해야합니다. 그렇지않은경우, 블록다이어그램에서배열은안에빈사각대괄호가있는검정색터미널로표시되며, 관련데이터타입이설정되지않습니다. 2 National Instruments Corporation 5-3 LabVIEW Core 1 교육과정매뉴얼
2 차원배열앞에서 1D 배열의예를살펴보았습니다. 2D 배열의원소는그리드 (grid) 안에저장됩니다. 특정원소를찾으려면행인덱스와열인덱스가필요하며, 이인덱스들은 0 을기준으로시작합니다. 그림 5-3 은각각 8 개의행과열을가진 2D 배열로서, 총 8 8 = 64 개의원소를포함하고있습니다. 0 1 2 3 4 5 6 7 그림 5-3. 2D 배열 프런트패널에서다차원배열을추가하려면, 인덱스디스플레이에서마우스오른쪽버튼으로클릭한후바로가기메뉴에서차원추가를선택합니다. 또한, 인덱스디스플레이의크기를조정하여원하는수만큼의여러차원을만들수있습니다. 배열초기화하기 0 1 2 3 4 5 6 7 배열을초기화하거나초기화하지않은채로둘수있습니다. 배열이초기화되면, 각차원에있는원소의개수및각배열의내용을정의하게됩니다. 초기화하지않은배열은지정한수만큼의차원을갖고있지만, 안에원소를포함하지는않습니다. 그림 5-4 에서초기화되지않은 2D 배열컨트롤의예를확인할수있습니다. 이배열안에있는모든원소가모두흐릿하게보입니다. 이는배열이초기화되지않았음을나타냅니다. 그림 5-4. 초기화되지않은 2D 배열 LabVIEW Core 1 교육과정매뉴얼 5-4 niedu.co.kr
그림 5-5 에서는 6 개의원소가초기화되어있습니다. 배열상수생성하기 배열입력오토인덱싱하기 그림 5-5. 6 개의원소를가진초기화된 2D 배열 2D 배열에서특정행에있는하나의원소를초기화하면, 그행에남은원소들은해당데이터타입의기본값으로초기화되어채워집니다. 예를들어, 그림 5-6 에서세번째행의첫번째열의원소에 4 를입력한경우, 세번째행의두번째열및세번째열의원소는자동으로 0 으로설정되어채워집니다. 그림 5-6. 0 으로자동설정된배열 블록다이어그램에배열상수를생성하려면, 함수팔레트에서배열상수를선택하고블록다이어그램에배열쉘을놓은후에문자열상수, 숫자형상수, 불리언상수, 또는클러스터상수를배열쉘안에놓습니다. 배열상수는다른배열과비교를하기위한기준으로사용하거나, 상수데이터를저장하는데활용할수있습니다. 배열을 For 루프또는 While 루프와연결하는경우, 오토인덱싱을활성화하여루프의각반복을배열의원소에연계시킬수있습니다. 이때속이채워진사각형모양의터널은그림처럼바뀌어서, 오토인덱싱이활성화되었음을나타냅니다. 터널에서마우스오른쪽버튼을클릭하고바로가기메뉴에서인덱싱활성화또는인덱싱비활성화를선택하여, 터널의상태를변경할수있습니다. 배열입력 For 루프의입력터미널과연결된배열에서오토인덱싱을활성화하면, LabVIEW 에서는배열크기에맞추어카운트터미널을자동으로설정하게됩니다. 따라서사용자가 For 루프의카운트터미널을별도로연결하지않아도됩니다. For 루프를사용하여한번에한원소씩배열을처리할수있습니다. 따라서 LabVIEW 에서는배열을 For 루프에연결하면오토인덱싱활성화상태가되도록기본설정되어있습니다. 반드시한번에원소하나씩배열을처리할필요가없는경우에는오토인덱싱을비활성화상태로설정할수있습니다. National Instruments Corporation 5-5 LabVIEW Core 1 교육과정매뉴얼
그림 5-7 에서보이는 For 루프는배열안의원소개수와동일한횟수만큼실행이반복됩니다. 대개의경우, For 루프에서카운트터미널이연결되지않으면 VI 의실행화살표는깨집니다. 하지만, 그림에서보이는 For 루프의경우에는실행화살표가깨지지않습니다. 그림 5-7. For 루프의카운트를설정하는배열 하나이상의터널에서오토인덱싱을활성화하거나카운트터미널을연결해놓으면, 이중에서상대적으로더작은실제반복횟수가선택됩니다. 예를들어, 각각 10 개와 20 개의원소를가진오토인덱싱된배열둘을루프에입력하고카운트터미널에값 15 를연결한다면, 이루프는 10 회만실행되고두배열의처음 10 개원소까지만인덱싱합니다. 배열출력 배열출력터널을오토인덱싱하면, 그출력배열은루프가반복될때마다새로생성되는원소를받습니다. 그러므로오토인덱싱된출력배열의크기는항상반복횟수와같습니다. 출력터널과배열인디케이터를연결하는와이어는루프경계에서배열로바뀌면서굵어지고, 그림 5-8 에서보이는것처럼출력터널안에는배열을나타내는사각대괄호가보이게됩니다. 그림 5-8. 오토인덱싱된출력 LabVIEW Core 1 교육과정매뉴얼 5-6 niedu.co.kr
2 차원배열생성하기 B. 클러스터 루프경계의터널에서마우스오른쪽버튼을클릭한후바로가기메뉴에서인덱싱활성화또는인덱싱비활성화를선택하여, 오토인덱싱을활성화하거나비활성화할수있습니다. While 루프에서는기본설정으로오토인덱싱이비활성화됩니다. 터널에서마지막으로전달된값만필요할경우오토인덱싱을비활성화하십시오. 하나의루프안에다른루프가들어있는형식으로, 2 개의 For 루프를사용하여 2D 배열을생성할수있습니다. 그림 5-9 에서보이는것처럼바깥쪽 For 루프는행의원소를생성하며, 안쪽 For 루프는열의원소를생성합니다. 그림 5-9. 2D 배열생성하기 클러스터는여러가지데이터타입의원소를하나로그룹화합니다. 불리언, 숫자형, 문자열값을통합하는 LabVIEW 의에러클러스터는대표적인클러스터의예중하나입니다. 클러스터는텍스트기반프로그래밍언어의레코드 (record) 또는구조체 (struct) 와유사합니다. 여러데이터원소를클러스터로묶으면, 블록다이어그램에서와이어의복잡한연결을피할수있으며 subvi 에필요한커넥터팬터미널의개수를감소시킬수있습니다. 커넥터팬은최대 28 개의터미널을가질수있습니다. 프런트패널에다른 VI 로전달하려는컨트롤및인디케이터가 28 개이상있는경우, 이중일부를하나의클러스터로그룹화하고이클러스터를커넥터팬의한터미널에할당하면됩니다. 블록다이어그램에서대부분의클러스터는핑크색의와이어패턴및데이터타입터미널을가집니다. 에러클러스터의와이어와데이터타입터미널은짙은노란색입니다. 때때로포인트를나타내기도하는숫자형값의클러스터는갈색의와이어패턴및데이터타입터미널을가집니다. 갈색숫자형클러스터를 [ 더하기 ] 나 [ 제곱근 ] 과같은숫자형함수에연결하여, 클러스터의모든원소에동일한연산작업을동시에수행할수있습니다. National Instruments Corporation 5-7 LabVIEW Core 1 교육과정매뉴얼
클러스터원소의순서클러스터와배열원소는모두순서대로배열되어있지만, [ 풀기 ] 함수를사용하여모든클러스터원소를한꺼번에풀어야합니다. [ 이름으로풀기 ] 함수를사용하여이름을기준으로클러스터원소를풀수있습니다. [ 이름으로풀기 ] 함수를사용하는경우, 각클러스터원소에는반드시라벨이있어야합니다. 또한, 클러스터는고정된크기를가진다는점에서배열과차이점이있습니다. 배열과마찬가지로클러스터는컨트롤이나인디케이터중하나입니다. 클러스터안에는컨트롤과인디케이터가함께포함될수없습니다. 클러스터컨트롤및인디케이터생성하기 클러스터상수생성하기 다음프런트패널과같이프런트패널에클러스터쉘을놓고숫자, 불리언, 문자열, 경로, 참조번호, 배열, 클러스터컨트롤또는인디케이터와같은데이터객체또는원소를클러스터쉘안에끌어와서클러스터컨트롤또는인디케이터를프런트패널윈도우에생성합니다. 클러스터쉘을놓는동안커서를끌어서, 클러스터쉘의크기를조정할수있습니다. 그림 5-10. 클러스터컨트롤생성하기 그림 5-11 은문자열, 불리언스위치, 숫자형의세가지컨트롤을포함하는클러스터의예입니다. 클러스터는컨트롤또는인디케이터둘중하나입니다. 클러스터는컨트롤과인디케이터를동시에가질수없습니다. 그림 5-11. 클러스터컨트롤의예 블록다이어그램에클러스터상수를생성하려면, 함수팔레트에서클러스터상수를선택하고블록다이어그램에클러스터쉘을놓은후에문자열상수, 숫자형상수, 불리언상수, 또는클러스터상수를클러스터쉘안에놓습니다. 클러스터상수는다른클러스터와비교를하기위한기준으로사용하거나, 상수데이터를저장하는데활용할수있습니다. 프런트패널윈도우에클러스터컨트롤또는인디케이터가있는상태에서이와동일한원소를포함하는클러스터상수를블록다이어그램에생성할수있습니다. 이경우에는프런트패널윈도우에서블록다이어그램으로클러스터를끌어 LabVIEW Core 1 교육과정매뉴얼 5-8 niedu.co.kr
오거나, 블록다이어그램의클러스터에서마우스오른쪽버튼을클릭하고바로가기메뉴에서생성 상수를선택하면됩니다. 클러스터순서 클러스터의원소는쉘안에서의위치와는상관없는논리적인순서를갖습니다. 클러스터에첫번째로놓인객체는원소 0 이고, 두번째객체는원소 1 이되는방식으로순서가정해집니다. 하나의원소를삭제하면, 클러스터원소들의순서가자동으로조정됩니다. 클러스터순서에의해블록다이어그램에있는 [ 묶기 ] 및 [ 풀기 ] 함수에서원소가터미널로표시되는순서가결정됩니다. 클러스터경계에서마우스오른쪽버튼을클릭한후바로가기메뉴에서클러스터내의컨트롤순서재설정을선택하여, 클러스터순서를확인하고수정할수있습니다. 클러스터내의컨트롤순서재설정을선택하면그림 5-12 에서보이는것처럼도구모음과클러스터가변경됩니다. 1 확인버튼 2 취소버튼 1 2 5 4 3 클러스터순서커서 4 현재순서 그림 5-12. 클러스터순서변경하기 5 새순서 각원소에있는흰상자는그원소가클러스터내에서갖는현재순서를나타냅니다. 검은상자는원소의새순서를나타냅니다. 도구모음옆에있는클릭하여설정합니다텍스트박스에새순서를나타내는숫자를입력하고, 그순서에들어갈원소를클릭하여클러스터원소의순서를설정할수있습니다. 클러스터원소의순서가변경되고, 다른원소의클러스터순서가이에따라조정됩니다. 도구모음에서확인버튼을클릭하여변경된순서를저장합니다. 취소버튼을클릭하면이전의원래순서로되돌아갑니다. 3 National Instruments Corporation 5-9 LabVIEW Core 1 교육과정매뉴얼
클러스터함수사용하기클러스터함수를사용하여클러스터를생성하고조작할수있습니다. 클러스터함수를통해수행할수있는작업으로는다음과같은예들이있습니다 : 클러스터에서특정데이터원소를개별적으로추출하기 클러스터에특정데이터원소를개별적으로추가하기 클러스터를개별데이터원소들로나누기 [ 묶기 ] 함수를사용하여클러스터를병합하고, [ 묶기 ] 와 [ 이름으로묶기 ] 함수를사용하여클러스터를변경하고, [ 풀기 ] 와 [ 이름으로풀기 ] 함수를사용하여클러스터를해체할수있습니다. 또한블록다이어그램의클러스터터미널에서마우스오른쪽버튼을클릭하고바로가기메뉴에서클러스터, 클래스 & 배리언트팔레트를선택하여, [ 묶기 ], [ 이름으로묶기 ], [ 풀기 ], [ 이름으로풀기 ] 함수를놓을수있습니다. [ 묶기 ] 와 [ 풀기 ] 함수는자동으로적절한수의터미널을포함하게됩니다. [ 이름으로묶기 ] 와 [ 이름으로풀기 ] 함수는클러스터안의첫번째원소를표시하게됩니다. 위치도구로 [ 이름으로묶기 ] 와 [ 이름으로풀기 ] 함수의크기를조정하여, 클러스터의다른원소를표시할수있습니다. 클러스터병합하기 [ 묶기 ] 함수를사용하여개별원소로부터클러스터를만들거나, 모든원소에새값을지정하지않고도기존클러스터안에있는특정원소값을변경할수있습니다. 함수의크기를조정할때에는위치도구를사용하거나, 원소입력에서마우스오른쪽버튼을클릭한후바로가기메뉴에서입력추가를선택합니다. 클러스터변경하기 그림 5-13. 블록다이어그램에서클러스터병합하기 클러스터입력을연결할때에는변경하고자하는원소만연결할수있습니다. 예를들어, 그림 5-14 의입력클러스터는세개의컨트롤을포함하고있습니다. 그림 5-14. [ 묶기 ] 함수를통해클러스터변경하기 LabVIEW Core 1 교육과정매뉴얼 5-10 niedu.co.kr
클러스터순서를아는경우, [ 묶기 ] 함수를사용해서그림 5-14 에서보이는것처럼원소를연결함으로써명령값을변경할수있습니다. 또한 [ 이름으로묶기 ] 함수를통해기존클러스터의라벨이있는원소를대체하거나사용할수있습니다. [ 이름으로묶기 ] 함수는 [ 묶기 ] 함수와유사한기능을갖지만, 클러스터순서가아닌원소의고유라벨을기준으로해서클러스터원소를참조한다는점에서차이가있습니다. 고유라벨을가진원소에만접근할수있습니다. 입력개수는출력클러스터의원소개수와반드시일치할필요는없습니다. 수행도구를사용하여입력터미널을클릭하고풀다운메뉴에서원소를선택합니다. 또한입력에서마우스오른쪽버튼을클릭하고아이템선택바로가기메뉴에서원소를선택하는방법도있습니다. 그림 5-15 에서 [ 이름으로묶기 ] 함수를사용하여명령과함수의값을새명령과새함수의값으로업데이트합니다. 그림 5-15. [ 이름으로묶기 ] 함수를통해클러스터변경하기 도중에변경될가능성이있는데이터구조에는 [ 이름으로묶기 ] 를사용합니다. 새원소를클러스터에추가하거나순서를변경하는경우에도원소의고유이름은계속유효하기때문에 [ 이름으로묶기 ] 함수를다시연결할필요가없습니다. 클러스터해체하기 [ 풀기 ] 함수를사용하여클러스터를개별원소로풀어놓을수있습니다. [ 이름으로풀기 ] 함수를통해사용자가지정한이름을갖는클러스터의원소를가져올수있습니다. 출력터미널의개수가입력클러스터의원소개수에의해결정되는것은아닙니다. 수행도구를사용하여출력터미널을클릭하고풀다운메뉴에서원소를선택합니다. 또한출력터미널에서마우스오른쪽버튼을클릭하고아이템선택바로가기메뉴에서원소를선택하는방법도있습니다. 예를들어, 그림 5-16 에서보이는것처럼 [ 풀기 ] 함수를클러스터와함께사용하는경우, 클러스터의네개의컨트롤에대응하는네개의출력터미널이생성됩니다. [ 풀기 ] 함수를통해해제된클러스터의불리언터미널을이와대응되는올바른클러스터의스위치와연계시키려면, 클러스터순서를반드시알아야합니다. 이예에서의원소는원소 0 부터시작하여위에서아래로순서가정해져있습니다. [ 이름으로풀기 ] 함수를사용하면적절한출력터미널개수를갖게되고, 순서와는상관없이이름을사용하여개별원소에접근할수있습니다. National Instruments Corporation 5-11 LabVIEW Core 1 교육과정매뉴얼
에러클러스터 C. 타입정의 사용자컨트롤 그림 5-16. [ 풀기 ] 및 [ 이름으로풀기 ] LabVIEW 에는에러클러스터라고불리는맞춤형클러스터가있습니다. LabVIEW 에서는에러클러스터를사용하여에러정보를전달할수있습니다. 에러클러스터에포함되는원소는다음과같습니다 : 상태 에러가발생했을때참값을전달하는불리언값 코드 에러를숫자형으로표현하는 32 비트부호있는정수 소스 어디에서에러가발생했는지나타내는문자열 에러클러스터사용에대한더자세한정보는이매뉴얼의 3과, VI 문제해결및디버깅하기와 LabVIEW 도움말의에러핸들링하기토픽을참조하십시오. 타입정의를사용하여사용자컨트롤과인디케이터를정의할수있습니다. 사용자컨트롤과인디케이터를통해사용가능한프런트패널객체세트를늘릴수있습니다. LabVIEW 에포함된기존의컨트롤과인디케이터를활용하여, 다양한모양의사용자정의된사용자인터페이스구성요소를생성하고이를어플리케이션에서사용할수있습니다. 이렇게생성한사용자컨트롤및인디케이터를디렉토리또는 LLB 에저장한후, 다른프런트패널에서이를사용할수있습니다. 또한사용자컨트롤및인디케이터를위한아이콘을생성하고, 컨트롤팔레트에추가할수있습니다. 사용자컨트롤과타입정의를만들고사용하는방법에대한추가적인정보는 LabVIEW 도움말의사용자컨트롤, 인디케이터, 타입정의생성하기항목을참조하십시오. 컨트롤편집기윈도우를사용하여컨트롤과인디케이터를사용자정의합니다. 예를들어, 컨트롤또는인디케이터의크기, 색, 원소의상대적인위치를변경하고, 컨트롤이나인디케이터에이미지를반입할수있습니다. LabVIEW Core 1 교육과정매뉴얼 5-12 niedu.co.kr
다음과같은방법으로컨트롤편집기윈도우를열수있습니다 : 프런트패널의컨트롤또는인디케이터에서마우스오른쪽버튼을클릭한후, 바로가기메뉴에서고급 사용자정의를선택합니다. 위치도구를사용하여프런트패널의컨트롤또는인디케이터를선택한후, 편집 컨트롤사용자정의를선택합니다. 새로만들기대화상자를사용합니다. 이러한방법들을통해지정한프런트패널객체를포함하는컨트롤편집기윈도우가열립니다. 컨트롤편집기는편집모드및사용자정의모드라는두가지모드를갖습니다. 컨트롤편집기윈도우도구모음에서현재편집모드또는사용자정의모드상태인지를구분할수있습니다. 컨트롤편집기윈도우는편집모드로열립니다. 사용자정의모드로변경버튼을클릭하여사용자정의모드로변경할수있습니다. 다시편집모드로돌아가려면, 편집모드로변경버튼을클릭합니다. 또한, 수행 사용자정의모드로변경또는수행 편집모드로변경을선택하여모드사이를전환할수있습니다. 프런트패널에있는편집모드와마찬가지로, 컨트롤편집기에서편집모드를사용하여컨트롤또는인디케이터의크기나색을변경하고바로가기메뉴에서옵션을선택할수있습니다. 사용자정의모드는컨트롤또는인디케이터의구성요소를개별적으로변경하여, 컨트롤또는인디케이터에전체적인변화를줄때사용합니다. 편집모드 편집모드에서는 LabVIEW 프로그래밍환경과마찬가지로컨트롤에서마우스오른쪽버튼을클릭하여설정을변경할수있습니다. 1 2 3 4 5 6 7 1 편집모드 2 타입정의상태 3 텍스트 4 객체정렬 5 객체간격조절 6 객체크기조정 7 객체순서재설정 National Instruments Corporation 5-13 LabVIEW Core 1 교육과정매뉴얼
타입정의 사용자정의모드사용자정의모드에서는컨트롤의개별구성요소를움직여서다른요소들과조화를이루도록수정할수있습니다. 사용자정의모드에서변경할수있는리스트를보려면윈도우 부분윈도우보이기를선택합니다. 1 2 3 4 5 6 7 1 사용자정의모드 2 타입정의상태 3 텍스트 4 객체정렬 컨트롤을사용자정의할수있는방법중하나는컨트롤의타입정의상태를변경하는것입니다. 타입정의상태링에서컨트롤, 타입정의, 또는엄격한타입정의중하나를선택하여컨트롤을저장할수있습니다. 컨트롤옵션은컨트롤팔레트에서선택하는컨트롤과같습니다. 필요에따라컨트롤을임의로변경할수있으며, 각복사본과변경사항은개별적으로프로퍼티를보존하게됩니다. 사용자컨트롤저장하기 5 객체간격조절 6 객체크기조정 7 객체순서재설정 사용자컨트롤을생성한후, 나중에사용하기위해이를저장할수있습니다. 기본으로디스크에저장된컨트롤은.ctl 확장자를가집니다. 또한컨트롤편집기를통해사용자가정의한기본설정에맞춰컨트롤을저장할수있습니다. 예를들어, 컨트롤편집기를사용하여웨이브폼그래프의기본설정을변경하고, 저장하고, 다른 VI 에서이를다시호출할수있습니다. 타입정의및엄격한타입정의를사용하여저장된사용자컨트롤또는인디케이터파일에관련인스턴스모두를연계시킬수있습니다. 저장된사용자컨트롤또는인디케이터파일만을편집하여, 사용자컨트롤또는인디케이터의모든인스턴스를변경할수있습니다. 이는같은사용자컨트롤또는인디케이터를여러 VI 에서사용하는경우에매우유용합니다. 사용자컨트롤및인디케이터를 VI 에놓을때, 저장한사용자컨트롤또는인디케이터및 VI 에놓은사용자컨트롤또는인디케이터의인스턴스는서로연계되지않습니다. 사용자컨트롤또는인디케이터의각인스턴스는개별적인독립복사본인것입니다. 그렇기때문에, 사용자컨트롤또는인디케이터파일을변경해도이미사용자컨트롤또는인디케이터를사용한 VI 에는영향을주지않습니다. 사용자컨트롤또는인디케이터의인스턴스를사용자컨트롤또는인디케이터파일에연결하려는경우, 사용자컨트롤또는인디케이터를타입정의또는엄격한타입정의로저장합니다. 타입정의또는엄격한타입정의상태의모든인스턴스는해당인스턴스를생성한원래파일에연계되어있습니다. 사용자컨트롤또는인디케이터를타입정의또는엄격한타입정의상태로저장할때, 관련데이터타입을변경하면그것을사용하는모든 VI 의타입정의또는엄격한타입정의의모든인스턴스에영향을줍니다. 또한, 엄격한타입정의상태에서의컨트롤및인디케이터의모양변경은프런트패널의모든엄격한타입정의인스턴스에영향을미칩니다. LabVIEW Core 1 교육과정매뉴얼 5-14 niedu.co.kr
타입정의는사용자컨트롤및인디케이터의각인스턴스를위한정확한데이터타입을정의합니다. 타입정의의데이터타입을변경하면, 타입정의의모든인스턴스가자동으로업데이트됩니다. 즉, 타입정의인스턴스의데이터타입은그타입정의가사용되고있는각 VI 안에서변경됩니다. 그러나타입정의는데이터타입만정의하기때문에, 데이터타입의일부인값만업데이트됩니다. 예를들어, 숫자형컨트롤에서의데이터범위는데이터타입의일부가아닙니다. 그러므로숫자형컨트롤의타입정의는그타입정의의인스턴스에대한데이터범위를정의하지않습니다. 또한, 링컨트롤에서아이템이름은데이터타입을정의하지않기때문에, 타입정의에서링컨트롤아이템이름을변경해도해당타입정의인스턴스에서아이템이름은변경되지않습니다. 그러나열거형타입컨트롤을위한타입정의에서아이템이름을변경하면, 아이템이름은데이터타입의일부이기때문에해당인스턴스는업데이트됩니다. 타입정의의인스턴스는해당컨트롤및인디케이터고유의캡션, 라벨, 설명, 팁상자, 기본값, 크기, 색또는스타일 ( 슬라이드, 노브스타일등 ) 을가질수있습니다. 타입정의에서데이터타입을변경하면, 가능한한 LabVIEW 는타입정의인스턴스의이전기본값을새데이터타입으로변환합니다. 숫자형컨트롤및인디케이터를문자열컨트롤및인디케이터로대체하는것처럼데이터타입이호환되지않는타입으로변경되면, LabVIEW 는그인스턴스의기본값을보존할수없게됩니다. 타입정의의데이터타입이이전타입정의와호환되지않는데이터타입으로변경되면, LabVIEW 는.ctl 파일에서지정한기본값으로해당인스턴스의기본값을설정합니다. 기본값을지정하지않는경우, LabVIEW 는그데이터타입의기본값을사용합니다. 예를들어, 숫자형에서문자열타입으로타입정의를변경했다면, LabVIEW 는이전의숫자형데이터타입과관련된모든기본값을빈문자열로대체합니다. 엄격한타입정의엄격한타입정의는캡션, 라벨, 설명, 팁상자, 기본값을제외한인스턴스의모든것이엄격한타입정의와같도록만듭니다. 엄격한타입정의의데이터타입은엄격한타입정의를사용한모든곳에똑같이남게됩니다. 엄격한타입정의또한링컨트롤에서의아이템이름이나숫자형컨트롤에서의데이터범위확인등과같은다른값들을정의합니다. 엄격한타입정의를위해사용가능한 VI 서버프로퍼티로는보이기, 비활성화, 키포커스, 깜박거림, 위치, 경계처럼컨트롤및인디케이터의모양에영향을주는요소밖에없습니다. 인스턴스와엄격한타입정의사이의연계를삭제하지않으면, 엄격한타입정의인스턴스의자동업데이트를방지할수없습니다. 타입정의와엄격한타입정의는여러컨트롤로이루어진클러스터를사용하여사용자컨트롤을생성합니다. 새컨트롤을추가하고모든 subvi 에이새로운값을전달해야하는경우, 사용자컨트롤클러스터에새컨트롤을추가합니다. 이렇게하면모든 subvi 의프런트패널에새컨트롤을추가하고새와이어와터미널을만드는작업을할필요가없습니다. National Instruments Corporation 5-15 LabVIEW Core 1 교육과정매뉴얼
복습 : 퀴즈 1. 배열로이루어진배열은생성할수있습니다. a. 참 b. 거짓 2. For 루프에두개의입력배열이연결되어있습니다. 양쪽터널모두에오토인덱싱이활성화되어있습니다. 한배열은 10 개의원소를가지고있으며, 두번째배열은 5 개의원소를가지고있습니다. 그림 5-17 에서보이는것처럼 7 의값이카운트터미널에연결되어있습니다. 이 VI 를실행한후반복인디케이터의값은무엇입니까? 그림 5-17. 반복인디케이터의값은무엇입니까? 3. 컨트롤을사용자정의하고, 컨트롤타입풀다운메뉴에서컨트롤을선택한후, 이컨트롤을.ctl 파일로저장합니다. 이후프런트패널윈도우에해당사용자컨트롤 (custom control) 인스턴스를사용했습니다..ctl 파일을열고컨트롤을변경하는경우, 프런트패널윈도우의컨트롤이변경됩니까? a. 예 b. 아니오 4. 원을나타내는데이터를입력합니다. 원데이터에는 x 좌표, y 좌표, 반지름이포함됩니다. 향후에원데이터의모든인스턴스를확장하여정수로나타내는원의색깔을추가해야할수도있습니다. 프런트패널윈도우에원을어떻게나타내야합니까? a. 두좌표 (x 와 y) 와반지름을나타내는세개의개별컨트롤. b. 모든데이터를포함하는클러스터. c. 클러스터를포함하는사용자컨트롤 d. 클러스터를포함하는타입정의 (type definition). e. 세원소를가진배열. National Instruments Corporation 5-17 LabVIEW Core 1 교육과정매뉴얼
복습 : 퀴즈의답 1. 배열로이루어진배열은생성할수있습니다. a. 참 b. 거짓배열데이터타입을배열쉘로끌어다놓을수없습니다. 그러나 2 차원배열은생성할수있습니다. 2. For 루프에두개의입력배열이연결되어있습니다. 양쪽터널모두에오토인덱싱이활성화되어있습니다. 한배열은 10 개의원소를가지고있으며, 두번째배열은 5 개의원소를가지고있습니다. 다음그림과같이 7 의값이카운트터미널에연결되어있습니다. 이 VI 를실행한후반복인디케이터의값은무엇입니까? 그림 5-18. 반복인디케이터의값은무엇입니까? 반복값 = 4 LabVIEW 는배열크기를초과하지않습니다. 이는프로그래밍에러를막아줍니다. LabVIEW 수학함수도마찬가지로동작합니다. 즉, 10 개원소배열을 [ 더하기 ] 함수의 x 입력에연결하고 5 개원소배열을 [ 더하기 ] 함수의 y 입력에연결하면출력은 5 개원소배열입니다. For 루프가 5 번실행되지만반복은 0 부터시작하므로반복인디케이터의값은 4 입니다. 3. 컨트롤을사용자정의하고, 컨트롤타입풀다운메뉴에서컨트롤을선택한후, 이컨트롤을.ctl 파일로저장합니다. 이후프런트패널윈도우에해당사용자컨트롤 (custom control) 인스턴스를사용했습니다..ctl 파일을열고컨트롤을변경하는경우, 프런트패널윈도우의컨트롤이변경됩니까? a. 예 b. 아니오 4. 원을나타내는데이터를입력합니다. 원데이터에는 x 좌표, y 좌표, 반지름이포함됩니다. 향후에원데이터의모든인스턴스를확장하여정수로나타내는원의색깔을추가해야할수도있습니다. 프런트패널윈도우에원을어떻게나타내야합니까? a. 두좌표 (x 와 y) 와반지름을나타내는세개의개별컨트롤. e. 세원소를가진배열. b. 모든데이터를포함하는클러스터. c. 클러스터를포함하는사용자컨트롤 d. 클러스터를포함하는타입정의 (type definition). National Instruments Corporation 5-19 LabVIEW Core 1 교육과정매뉴얼
노트 LabVIEW Core 1 교육과정매뉴얼 5-20 niedu.co.kr