파일 입출력(File I/O) LabVIEW의 장점 중 하나라고 소개드리고 싶은 사항 중 하나, 바로 파일 입▪출력입니다. LabVIEW는 데이터 관리 측면에서도 다양한 파일 포맷을 지원하고 있으며 NI에서 제공하는 2진 포맷 형태의 TDMS 파일을 통해 고속 스트리밍이 가능하다는 장점을 가지고있습니다. TDMS 포맷에 대해서는 다음 튜토리얼에서 좀 더 자세히 다루도록하고 먼저 LabVIEW의 기본 "파일 I/O" 함수들을 살펴보도록 하겠습니다. 파일 I/O 함수의 위치는 함수 팔레트에서 프로그래밍 >> 파일I/O 에 있습니다. ASCII 및 Binary 파일 포맷을 지원하는 텍스트 및 2진 파일 읽기/쓰기 관련 함수들이 있습니다. LabVIEW 관련 함수를 보고있긴 합니다만 보통 OS 위에서 실행되는 ..
You have a large LabVIEW application with over 200 subVIs written by you and your colleagues. It is functioning incorrectly, and you are fairly certain the issue is in one of the subVIs that you wrote. Which of the following strategies will most effectively troubleshoot the issue? 1. Open all of the front panels for the subVIs you wrote and observe the control and indicator values during executi..
This VI has a race condition. Why? 1. The bottom While Loop could stop before the top loop stops. 2. Numeric Control could be inserted into the array before being incremented. 3. Numeric Control is executed twice in the top While Loop. 4. LabVIEW always prioritizes execution of the top loop. 정답 보기는 아래 더보기 클릭 더보기 정답 : 2. Numeric Control could be inserted into the array before being incremented. 블..
Why does this code cause a broken Run button? 1. There is no data source for the subVI 2. The subVI is broken. 3. The indicator is wired to a control terminal 4. There is a data mismatch between the main VI and the subVI 정답 보기는 아래 더보기 클릭 더보기 정답 : 2.The subVI is broken. 문제에서 제시한 이미지를 보고 VI 실행 버튼이 깨진 원인을 찾는 문제이다. 정답 찾기는 쉬운 편이나 문제를 보면 코드와 도움말 패널을 같이 제시하고있다. 도움말 패널에서는 입출력 터미널에 대한 정보 및 입력 터미널의 연결 설정을..
Running this VI causes your computer to run out of memory. What is the most likely cause? 1. The loop time delay is too large 2. The DAQmx Read VI returned an error 3. The specified current range is too high 4. The array output tunnel on the While Loop has no bounds 정답 보기는 아래 더보기 클릭 더보기 정답 : 4. The array output tunnel on the While Loop has no bounds 위의 코드를 실행하였을 때 PC에서 메모리 부족 현상이 나타날 가능성이 있는 경우에..
Why does this code cause a broken Run button? 1. A required terminal for the function is not wired. 2. None of the output terminals are wired. 3. The error in terminal is unwired. 4. This code does not cause a broken Run button. 정답 보기는 아래 더보기 클릭 더보기 정답 : 1. A required terminal for the function is not wired. 해당 코드를 보고 실행 버튼이 깨진 이유에 대해 물어보는 문제이다. 먼저 함수에 대해 알고 있어야 풀 수 있는 문제로 [원소를 큐에 추가] 함수에 대해 알아보도..
Which is a valid error description value for this Error Ring? 1. Error %d occurred at "%s". Possible reason: %d 2. No Error 3. The "%s" function generated a value of "%d", but the expected value was "%d". 4. The "abc" function generated a value of "I32", but the expected value was "I32". 정답 보기는 아래 더보기 클릭 더보기 정답 : 3. The "%s" function generated a value of "%d", but the expected value was "%d". 에러..
이벤트(Event)란, 프로그래밍에서 이벤트라고 하면 '지정한 조건에서의 특정 기능이 실행'되도록 하는 것입니다. 프로그래밍 언어가 익숙하신 분들은 어렵지 않겠으나 반대로 '굳이 써야하나..?'라고 생각하시는 분들도 계실 수 있는데요. 간단하게 설명하긴 하였지만 이벤트를 사용하지않고 CASE 구조를 가지고 입력이 a이면 b를, c이면 특정 동작을 수행하라와 같이 코드를 작성할 수도 있습니다. (강의를 다녀보면 오히려 많이 배우면 머리아프다거나,,이정도만 알아도 내가 코드를 간단히 작성해서 돌려보는데에는 문제없다고 하시는 분들도 꽤 있더군요..LabVIEW가 배우기 쉬운만큼 간단한 것까지만하려고 하는걸까요. 개인적으로는 아쉬웠습니다..😂)바로 이전 시간에 '스탑 워치' 실습을 해보았던 자료를 예시로 설명하..
Which error(s) does LabVIEW report at the end of execution? 1. Error Code 1430 2. Both Error Code 7 and Error Code 1430 3. Error Code 7 4. Ether Error Code 7 or Error Code 1430 정답 보기는 아래 더보기 클릭 더보기 정답 : 1. Error Code 1430 이미지와 같이 코드가 작성되어있고 각각의 SubVI에서 Error 1430과 Error 7이 발생하였을 때 랩뷰에서 실행 마지막에 알려주는 에러는 어떻게 되는지 물어보는 문제이다. [에러 병합(Merge Errors)] 함수를 알고 있는지가 핵심이라고 할 수 있으며 [에러 병합] 함수의 경우 입력으로 받고자하는 에..
Why does this code cause a broken Run button? 1. The False case has an unwired output terminal. 2. The VI is not broken. 3. The Case structure lacks a default case. 4. The Replace Array Subset function has an unwired input terminal. 정답 보기는 아래 더보기 클릭 더보기 정답 : 1. The False case has an unwired output terminal. 문제에서 보여주는 이미지처럼 코드가 작성되어있을 때 VI가 깨진 상태가 되는 이유를 물어보는 문제이다. "참" 케이스 안에 있는 [Delete From Arra..
In the following code, the Init Values VI sets the value of the Additional Action global variable to TRUE. But when you run this VI, the Additional Action VI does not execute. Why? 1. The Case structure has been constant folded. 2. The Init Values VI is reentrant and addressing a different instance of the global variable. 3. The global VI is broken. 4. There is no data dependency between when th..
Which VI is used to ignore a specific error? 1. Simple Error Handler 2. Error Cluster From Error Code 3. General Error Handler 4. Clear Errors 정답 보기는 아래 더보기 클릭 더보기 정답 : 4. Clear Errors 특정 에러를 무시할 때 사용하는 VI를 물어보는 문제이다. LabVIEW에서 Error Handling 경험이 있다면 크게 어렵지 않은 문제로 보기를 하나씩 살펴보면 다음과 같다. 1. Simple Error Handler (단순 에러 핸들러) : 에러가 발생했는지의 여부를 나타낸다. 에러가 발생한 경우, 이 VI는 에러의 설명을 반환하고 선택적으로 대화 상자를 디스플레이한다. ..
If SubVI Process.vi generates an error, your VI should clear the error and retry the SubVI two more times to give it a chance to succeed. Which of the following VIs best meets these requirements? 1. 2. 3. 4. 정답 보기는 아래 더보기 클릭 더보기 정답 : 3. (문제 이미지 참조) Process.vi 이름의 SubVI에서 에러가 발생하였을 경우 2번 더 SubVI를 실행하여 에러없이 실행되도록 하는 코드를 찾는 문제이다. 일단 조건을 정리해보면 에러가 발생하였을 경우이므로 반대로 에러가 없다면 SubVI는 1회만 실행되어야한다. 이를 가능토록 ..
지금까지 다루었던 반복문, 분기문, 시프트 레지스터, 타이밍 함수 등을 이용하여 스톱 워치와 알람 기능을 만들어보도록 하겠습니다. 혹시라도 해당 포스팅을 처음 보시거나 랩뷰를 처음 사용하시는 분들이 계시다면 앞에서 다루었던 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가지로(카운트 설정, 반복 횟수) 되어 있으며 아래의 이미지와 같이 생성됩니다. ..
예제 파일 LabVIEW 2012 or 이후 버전 개요 LV 8.6 이후에 출시된 [센서 맵핑] 함수를 사용하여 3D 설계 파일(*.stl) 이미지를 불러와서 LabVIEW 3D Image로 디스플레이해주는 예제 실행 순서 Sensor Mapping Example.vi 실행 Data Input LED 클릭 유무에 따른 Modeling 데이터 변화 확인 Data Input 클릭시, User-Generated 클러스터 내의 슬라이더로 센서 값 조절 ※ 이 글이 도움이 되었다면 "🤍공감" 버튼을 클릭해주세요. 클릭 한번이 글 쓰는데 큰 힘이 됩니다.
이번 시간에는 분기문 또는 조건문에 대해서 알아보겠습니다. 프로그래밍 언어란 결국에는 사람의 생각하는 방법을 모방하여 문법을 형성한 것인데요. 프로그래밍이 아니더라도 우리는 항상 매번 선택을 해야하는 순간들이 있죠..이 선택 한번에 의해 결과는 달라지게 되는데, 이러한 특성을 가지고 있는 것이 바로 조건문(분기문)입니다. 프로그래밍을 접해보신 분들이라면 우리가 익히 알고 있는 If문, Switch/Case문 등이 바로 이런 문법이라고 할 수 있겠네요. LabVIEW에서는 CASE 구조 하나로 조건에 따른 서로 다른 기능을 구현할 수 있습니다. 케이스 구조(CASE Structure) 케이스 구조는 함수 팔레트 >> 프로그래밍 >> 구조 >> 케이스 구조를 선택하시면 생성하실 수 있습니다. 케이스 구조를 ..