파일 입출력(File I/O) LabVIEW의 장점 중 하나라고 소개드리고 싶은 사항 중 하나, 바로 파일 입▪출력입니다. LabVIEW는 데이터 관리 측면에서도 다양한 파일 포맷을 지원하고 있으며 NI에서 제공하는 2진 포맷 형태의 TDMS 파일을 통해 고속 스트리밍이 가능하다는 장점을 가지고있습니다. TDMS 포맷에 대해서는 다음 튜토리얼에서 좀 더 자세히 다루도록하고 먼저 LabVIEW의 기본 "파일 I/O" 함수들을 살펴보도록 하겠습니다. 파일 I/O 함수의 위치는 함수 팔레트에서 프로그래밍 >> 파일I/O 에 있습니다. ASCII 및 Binary 파일 포맷을 지원하는 텍스트 및 2진 파일 읽기/쓰기 관련 함수들이 있습니다. LabVIEW 관련 함수를 보고있긴 합니다만 보통 OS 위에서 실행되는 ..
모듈화(SubVI) 모듈화란 사용자가 원하는 기능의 함수를 직접 만드는 것을 말합니다. 랩뷰에서는 SubVI라고 많이 부르며 랩뷰 기본 함수 및 툴킷에서 제공되는 아이콘 외에 내가 직접 함수 아이콘을 만든다고 보시면 되겠습니다. "그럼 모듈화를 왜 사용해야 하는 걸까요?", "기존에 제공되는 함수를 사용하면 더 편하고 쉬운게 아닌가요?" 등의 의문을 가지고 계신 분들이 있으실텐데요. 개인적으로는 내가 잘 활용할 수 있는 나만의 모듈. 즉, SubVI를 얼마나 많이 가지고 있는지가 나의 LabVIEW 스킬이 될 수 있다고 생각합니다. 그만큼 랩뷰에서는 지원되는 함수만 있다면 입출력 터미널을 와이어링만 시켜서 일단 코드 작성을 끝낼 수 있기 때문이죠. "先 기능 구현, 後 스터디가 가능하다고나 할까요?" 크..
이벤트 구조 심화편(Advanced Event Structure) 이번 시간에는 지난번 다루어보았던 이벤트 구조(Event Structure)에 대해 좀 더 알아보는 시간을 가지도록 하겠습니다. 이벤트 구조의 동작만 알아도 LabVIEW에서 사용하는데 크게 문제가 없기 때문에 따로 지난 시간에 언급드리진 않았는데요. 한번 사용해보았으니 이제 자세히 리뷰를 해보도록 하겠습니다. 이벤트 구조에 대해서 잘 기억이 안나시는 분들은 이전 포스팅 내용을 한번 정독하시고 본문을 읽어주시길 권장드립니다. 랩뷰(Tutorial) 17 | 이벤트 구조(Event Structure) 이벤트(Event)란, 프로그래밍에서 이벤트라고 하면 '지정한 조건에서의 특정 기능이 실행'되도록 하는 것입니다. 프로그래밍 언어가 익숙하신 ..
이벤트(Event)란, 프로그래밍에서 이벤트라고 하면 '지정한 조건에서의 특정 기능이 실행'되도록 하는 것입니다. 프로그래밍 언어가 익숙하신 분들은 어렵지 않겠으나 반대로 '굳이 써야하나..?'라고 생각하시는 분들도 계실 수 있는데요. 간단하게 설명하긴 하였지만 이벤트를 사용하지않고 CASE 구조를 가지고 입력이 a이면 b를, c이면 특정 동작을 수행하라와 같이 코드를 작성할 수도 있습니다. (강의를 다녀보면 오히려 많이 배우면 머리아프다거나,,이정도만 알아도 내가 코드를 간단히 작성해서 돌려보는데에는 문제없다고 하시는 분들도 꽤 있더군요..LabVIEW가 배우기 쉬운만큼 간단한 것까지만하려고 하는걸까요. 개인적으로는 아쉬웠습니다..😂)바로 이전 시간에 '스탑 워치' 실습을 해보았던 자료를 예시로 설명하..
지금까지 다루었던 반복문, 분기문, 시프트 레지스터, 타이밍 함수 등을 이용하여 스톱 워치와 알람 기능을 만들어보도록 하겠습니다. 혹시라도 해당 포스팅을 처음 보시거나 랩뷰를 처음 사용하시는 분들이 계시다면 앞에서 다루었던 Tutorial 10 ~ 15까지는 한번 정독 후 본문을 읽어주시기 바랍니다. 그럼 한 Step씩 랩뷰 실습을 해보도록 하겠습니다. 기본 UI 제공 파일 UI가 만들어져 있는 파일은 아래에 첨부한 vi를 다운로드하시거나 직접 버튼 3개, 숫자형 인디케이터 1개를 생성하셔도 무방합니다. 순서도(Flow chart) 보통 코드를 작성할 때 우리는 순서도, 알고리즘 또는 로직이라고 일컫는 블록도를 한번 설계해보고나서 그걸 참고하여 코드를 작성하는데요. 이번 실습에서 만들어볼 스탑워치에 대한..
이번 시간에는 타이밍(Timing) 함수에 대해 알아보도록 하겠습니다. 이전 시간에 반복문(For, While 문) 구조와 연속적인 실행에서 데이터를 넘기기 위한(Shift Register)에 대해 알아보았는데요. 여기에서 '루프 실행을 내가 원하는 주기마다 어떻게 실행하지?'라는 궁금증이 하나 생길 겁니다. 바로 랩뷰(LabVIEW) 타이밍 함수와 관련된 내용인데요. 이전 시간에 잠깐씩 언급은 되었지만 이번 시간에 한번 자세히 살펴보도록 하겠습니다. 타이밍 팔레트 (Timing Palette) 타이밍 팔레트의 위치는 함수 팔레트 >> 프로그래밍 >> 타이밍에 위치해 있습니다. 본문에서 다룰 함수는 랩뷰에서 대표적으로 많이 쓰이는 함수인 [Tick 카운트(ms)], [기다림(ms)], [다음 ms배수까지..
오토 인덱싱(Auto Indexing) 이번 시간에는 랩뷰 오토 인덱싱(Auto Indexing)에 대해서 한번 알아보도록 하겠습니다. 오토 인덱싱(Auto Indexing)이란 "Auto + Indexing"의 의미 그대로 자동적으로 인덱스 처리를 수행해주는 기능을 말합니다. 인덱스는 배열의 구성 요소 중 하나로 'n번째'라는 위치 정보를 나타내는 용어인데요. 이 위치 정보를 자동으로 처리하기 위해 ¹반복문(For문, While문)을 이용한 ²배열 데이터를 다룬다고 보시면 되겠습니다. 오토 인덱싱은 기본적으로 활성화 되어있기 때문에 반복문(For문 or While문) 경계에 터널이 생성되면 오토인덱싱이 활성화 되어있습니다. 아래의 이미지는 오토인덱싱이 활성화되어 있는 예시 이미지입니다. 여기서 LabV..
프로그래밍에 필요한 조건문(CASE 구조), 반복문(For문, While문 등)까지 살펴보셨다면 반복 실행되는 코드에서 랩뷰는 어떻게 데이터 전달을 하는지 알아보도록 하겠습니다. Loop 사용에 대해 익숙하지 않으신 분들은 앞서 포스팅하였던 내용을 한번정도 리뷰 후 본문을 읽어주시길 바랍니다. LabVIEW 조건문 - CASE 구조 랩뷰(LabVIEW) Tutorial 10 | 조건문, CASE 구조 이번 시간에는 분기문 또는 조건문에 대해서 알아보겠습니다. 프로그래밍 언어란 결국에는 사람의 생각하는 방법을 모방하여 문법을 형성한 것인데요. 프로그래밍이 아니더라도 우리는 항상 moonnote.tistory.com LabVIEW 반복문01 - For 루프 랩뷰(LabVIEW) Tutorial 11 | 반복..
이번 시간에는 While문에 대해서 알아보도록 하겠습니다. While문의 경우 이전 포스팅에서 설명드렸던 For문과 마찬가지로 반복문입니다. While 루프(While Loop) 랩뷰에서 While 루프는 함수 팔레트 >> 프로그래밍 >> 구조 >> While 루프를 선택하시면 생성할 수 있습니다. 마찬가지로 블록다이어그램에서 원하는 크기만큼 드래그하여 루프를 생성하면 되고 While 루프의 경우 아래의 이미지처럼 다음 2가지로 구성되어 있습니다. ① 조건 터미널 : While 루프의 실행 여부를 판별하기 위한 불리언(참, 거짓) 값을 입력받는 터미널입니다. ② 반복 횟수 : 현재 반복하고 있는 횟수 정보를 반환하는 인디케이터 터널입니다.(시작 넘버가 0부터 시작) 반복문이기 때문에 For문과 마찬가지로..
이번 시간에는 반복문에 대해서 알아보겠습니다. 반복문이란 프로그래밍 언어에서 루프(Loop)라고 부르기도 하며 지정한 횟수만큼 또는 특정 정지 조건을 만족할 때까지 코드를 계속 반복 실행하는 구조를 말합니다. 대표적으로 For 루프와 While 루프가 있는데 이번 포스팅에서는 For 루프에 대해서 먼저 알아보도록 하겠습니다. For 루프(For Loop) 랩뷰에서 For 루프는 함수 팔레트 >> 프로그래밍 >> 구조 >> For 루프를 선택하시면 생성할 수 있습니다. 케이스 구조와 마찬가지로 For 루프를 선택하고 블록다이어그램에서 원하는 크기만큼 드래그하면 아래의 이미지처럼 생성이 됩니다. For 루프의 기본 구성은 총 2가지로(카운트 설정, 반복 횟수) 되어 있으며 아래의 이미지와 같이 생성됩니다. ..
이번 시간에는 분기문 또는 조건문에 대해서 알아보겠습니다. 프로그래밍 언어란 결국에는 사람의 생각하는 방법을 모방하여 문법을 형성한 것인데요. 프로그래밍이 아니더라도 우리는 항상 매번 선택을 해야하는 순간들이 있죠..이 선택 한번에 의해 결과는 달라지게 되는데, 이러한 특성을 가지고 있는 것이 바로 조건문(분기문)입니다. 프로그래밍을 접해보신 분들이라면 우리가 익히 알고 있는 If문, Switch/Case문 등이 바로 이런 문법이라고 할 수 있겠네요. LabVIEW에서는 CASE 구조 하나로 조건에 따른 서로 다른 기능을 구현할 수 있습니다. 케이스 구조(CASE Structure)케이스 구조는 함수 팔레트 >> 프로그래밍 >> 구조 >> 케이스 구조를 선택하시면 생성하실 수 있습니다.케이스 구조를 선..
웨이브폼(Waveform)이란, 웨이브폼(Waveform)이란 '파형'이란 의미로 파동과 같은 신호의 모양과 형태를 말합니다. LabVIEW에서도 웨이브폼(Waveform) 데이터 타입을 지원하고 있는데 주기적인 신호 측정을 표시하고 저장하는 목적으로 사용됩니다. 주기적인 신호라는 말처럼 웨이브폼은 데이터의 크기 정보 외에 시간 정보를 같이 포함하고 있는데요. 기본적인 LabVIEW 웨이브폼의 구성 요소는 ¹시작 시간(t0), ²시간 간격(dt), ³데이터 배열(Y[]) 3가지로 구성됩니다. 위의 이미지는 LabVIEW 웨이브폼 상수인데요. 웨이브폼도 결국 클러스터 타입으로 구성되어있는 것을 보실 수 있습니다. 다만 Wire 색상을 Pink가 아닌 Brown으로 구분 짓고 있습니다. (숫자형으로 이루어진..
이번 시간에는 지금까지 다루었던 내용을 토대로 간단한 성적서 프로그램을 한번 만들어보도록 하겠습니다. 기본 UI 제공 파일 블록다이어그램에서 실습을 Step by Step으로 실습해볼 계획이기에 기본 UI가 만들어져있는 파일을 아래에 다운로드를 클릭하여 받으시고 진행하도록 하겠습니다. 뭐..직접 만들어도 크게 상관은 없긴 합니다. (사용 버전 : LV 2018) 실습 VI를 열어보면 성적 입력(클러스터 컨트롤), 업데이트 버튼, 성적표 테이블(테이블 인디케이터)로 구성되어 있습니다. 실습해보고자 하는 프로그램은 먼저 응시자들에 대한 정보(이름, 과목별 점수)를 기입하고 아래 버튼을 누르면 성적표 테이블에 업데이트되도록 만들어볼 예정입니다. 그럼 본격적으로 만들어보도록 하겠습니다. 1. 버튼 입력 확인 :..
클러스터(Cluster) 클러스터(Cluster)는 배열 타입처럼 데이터를 클러스터 쉘에 모아서 사용하는 타입입니다. 다만 배열의 경우같은 데이터 타입 1가지만 쉘에 담을 수 있었다고한다면 클러스터의 경우 여러 타입의 데이터들을 하나의 클러스터 쉘로 묶어서 사용할 수 있습니다. 예를 들어 숫자형, 문자열, 불리언 타입을 클러스터로 묶어서 사용하는 것이죠. 한번정도 사용 경험이 있으신 분들은 LabVIEW에서 에러 핸들링을 위한 데이터 타입으로 에러 컨트롤 또는 인디케이터를 보셨을 텐데요. 에러 데이터 입∙출력도 바로 이 클러스터 타입입니다. 클러스터의 타입은 3가지로 분류되는데 타입에 따라서 블록 다이어그램에 색상이 나뉩니다. 클러스터는 다양한 데이터 타입들을 담을 수 있기 때문에 배열처럼 인덱스 정보가..
이번 시간에는 LabVIEW 배열(Array) 타입에 대해 알아보도록 하겠습니다. LabVIEW 기본 데이터 타입 3가지(숫자, 문자, 불리언)에 대해 모르시는 분들께서는 이전 포스팅(Tutorial 03-05)을 먼저 참고해주시고 본문을 읽는 것을 추천 드립니다. 배열(Array) 배열(Array)이란 동일한 원소들을 하나로 묶은 데이터 타입을 말하며 번호(인덱스)와 이에 대응하는 데이터들로 이루어져 있습니다. LabVIEW에서의 배열 상수로 배열의 구성을 살펴보면 각 칸마다 데이터 값이 들어가 있으며 제일 좌측 상단에 숫자 0으로 시작하는 위치 정보를 나타내는 인덱스(Index) 정보가 포함되어 있습니다. 배열에서 데이터 원소의 위치 정보를 나타내는데 필요한 인덱스(Index) 개수에 따라 1차원(n..
이번 시간에는 LabVIEW 불리언(Boolean) 타입에 대해 알아보도록 하겠습니다. 불리언 타입은 '0'과 '1', 'OFF'와 'ON' 또는 '거짓'과 '참'이라고 부르는 2가지 데이터 값만 갖는 타입을 말합니다. 프로그램에서 버튼 입력 또는 LED ON/OFF 등의 디스플레이시 많이 사용되며 디지털 논리 회로와 관련된 함수들로 구성되어 있습니다. 불리언 팔레트 블록다이어그램에서 함수 팔레트 >> 프로그래밍 항목에서 불리언 데이터 처리에 필요한 함수들을 찾을 수 있습니다. 기본적으로 불리언 데이터 타입은 녹색으로 테두리 및 와이어를 표시하고 있습니다. 논리 회로(Logic gate) 함수 논리 연산을 수행하여 하나의 논리 출력 값을 얻기 위한 다양한 불리언 함수들이 있습니다. LabVIEW에서는 디..
이번 시간에는 LabVIEW 문자열(String) 타입에 대해 알아보도록 하겠습니다. 문자열 타입은 말 그대로 컨트롤 또는 인디케이터 사용 시 텍스트 형태로 데이터를 입력하거나 보여줍니다. 어떤 외부 파일에 대한 경로를 지정할 때, 장비 간 통신을 주고받기 위해 프로토콜을 전송할 때 등 LabVIEW에서는 모두 문자열 타입을 이용해서 데이터를 주고받을 수 있는데요. 기본적으로 LabVIEW에서는 unsigned char 타입의 형식을 따르고 있습니다. 문자열 팔레트 블록다이어그램에서 함수 팔레트 >> 프로그래밍 항목에서 문자열 데이터 처리에 필요한 함수들을 찾을 수 있습니다. 숫자형에서 정수형과 실수형에 따라 테두리의 색상이 다르듯이 LabVIEW에서 데이터 타입에 따라 테두리 및 와이어의 색상을 구분 ..
데이터 타입 3가지(숫자, 문자, 불리언) 프로그램 언어를 사용할 때 우리는 알맞은 데이터 타입을 선택해 사용해야지 되는데요. LabVIEW 뿐만이 아니라 대부분의 프로그램 언어들에서 공통적으로 쓰이는 기본은 "문자, 숫자, 불리언" 3가지 타입입니다. LabVIEW 같은 경우 팔레트에서 필요로 하는 데이터 타입의 컨트롤 또는 인디케이터를 끌어와서 사용하기에 데이터형에 따른 크기를 크게 고려 안 하고 쓰는 편인데요. PC의 메모리 영역을 사용하기에 알맞은 데이터 타입의 형을 지정하여 필요한만큼만 사용하는 것이 리소스 측면에서 가장 좋습니다. 기본 3가지 타입의 경우 아래의 테이블표 형태로 정리해보았습니다. 그럼 LabVIEW 어디에서 기본 데이터 타입과 관련된 함수가 있는가? 프런트 패널의 경우 컨트롤 ..
이번 시간에서는 LabVIEW에서의 입력과 출력에 대해서 다루어 보도록 하겠습니다. 보통의 프로그래밍 언어라고 하면 생성하였던 변수가 사용자의 코딩에 따라서 입력이 될 수도 있고 출력이 될 수도 있습니다. 하지만 LabVIEW는 입력과 출력을 철저히 분리해서 사용해야하죠. 그럼 어떤 것이 입력이고 출력인지 알아보도록 하겠습니다. 컨트롤(Control) LabVIEW에서 사용하는 입력을 모두 컨트롤(Control)이라고 부릅니다. 프런트패널에서 팔레트를 호출하였을시 나타나는 컨트롤 팔레트에서 기본적으로 LabVIEW에서 제공하는 여러 스타일(슬라이드, 게이지, 테이블 등)의 컨트롤을 사용해서 사용자 인터페이스(UI : User Interface)를 사용자가 원하는 구성으로 꾸밀 수 있게 되는 것이죠. La..
LabVIEW 기본 화면 LabVIEW를 실행하였을 때 아래와 같이 두 개의 패널이 나타납니다. 두 패널은 서로 한쌍이기에 LabVIEW를 사용한다면 항상 같이 묶여서 사용된다고 보면 되는데요. 프런트 패널(Front Panel)과 컨트롤 팔레트(Control Palette) 먼저 왼쪽에 격자가 있는 패널부터 살펴보겠습니다. 패널 이름은 프런트 패널(Front Panel)이라고 부르며 실제 UI(User Interface), 즉 디스플레이와 관련된 패널이라고 보시면 됩니다. 프런트 패널에서 우클릭을 하면 UI 구성에 필요한 컨트롤(버튼, 문자 입력란, 숫자 값 입력란 또는 슬라이드 등) 및 인디케이터(그래프, 테이블, LED, 게이지 등) 관련 팔레트가 나타납니다. LabVIEW에서는 이를 컨트롤 팔레트..
LabVIEW는 미국 텍사스 오스틴에 본사를 두고 있는 National Instruments(줄여서 NI라고 함)社의 소프트웨어로서 Test, Measurement, Automation, Control 및 Design 분야에서 사용되어지는 소프트웨어입니다. NI는 미국 본사 외에도 전세계 60여개 지사를 두고 있는 글로벌 기업으로 국내 역시 한국 NI 지사를 보유하고 있습니다. LabVIEW에 대해 나와있는 소개 영상을 보면 가끔 [Lab+VIEW]로 [실험실에서 보는 것]으로 설명을 하시는 분들이 있는데, 이는 잘못된 설명으로 정식 명칭은 [Laboratory Virtual Instrument Engineering Workbench]로 가상 계측기 역할을 해주는 워크 벤치를 말합니다. 전공이 아니신 분..