안녕하세요. 지지비입니다. 이번 포스팅에서는 아래 배열 함수에 대해서 예제 배열과 함께 사용하는 방법을 알아보겠습니다. 1. Array Size (배열 크기) 배열의 크기를 반환합니다. 아래 입력 배열은 행x열이 (5x3) 크기인 배열이므로 5와 3을 반환합니다. 2. Index Array (배열 인덱스) 배열에서 특정 행이나 열을 뽑아내거나, 특정 원소를 뽑아냅니다. 3. Replace Subset (원소 대체) 배열의 특정 배열 또는 원소를 대체합니다. 4. Insert Into Array (배열에 삽입) 배열의 특정 부분에 다른 배열 또는 원소를 삽입합니다. 원소의 크기가 맞지 않는 경우, 0을 자동으로 삽입합니다. 5. Delete From Array (배열로부터 삭제) 배열에서 특정 행 또는 열..
안녕하세요. 지지비입니다. 이번 포스팅에서는 회사에서 자동화시 많이 만들게 되는 성적서 생성에 대해서 알아보도록 하겠습니다. 아래와 같은 엑셀 파일(템플릿)에서 빨간색 박스에 있는 셀의 값을 랩뷰에서 변경하고, 저장하는 방법에 대해서 알아봅니다. 1. 준비 사항 : Report Generation Toolkit for Microsoft Office 랩뷰에는 Add-on으로 Report Generation Toolkit for Microsoft Office라는 툴킷이 있습니다. 이 툴킷은 회사에서 사용하려면 추가 금액을 내고 구매해야 하는 애드온입니다. 이 애드온을 사용할 수 있는 라이선스는 이전 포스팅 [LabVIEW 랩뷰/Labview 랩뷰 강의] - 랩뷰 에디션 비교 (Base/Full/Profess..
안녕하세요. 지지비입니다. 이번 포스팅에서는 랩뷰에서 사칙연산을 하는 세 가지 방법에 대해서 알아보도록 하겠습니다. 각 방법은 결과는 같으나 코드를 어떻게 활용하느냐에 따라서 코드의 시인성이 좋아질 수도 있고, 나빠질 수도 있습니다. 1. 숫자 함수 사용하기 첫 번째 방법은 숫자 함수를 사용하는 방법입니다. 숫자 함수를 사용할 경우 원하는 수식이 한 눈에 들어오지 않을 수 있으니 복잡한 수식의 경우 반드시 주석을 추가해 놓는 것이 좋습니다. 2. 식 노드(Expression Node) 사용하기 두 번째 방법은 식 노드를 사용하는 방법입니다. 식 노드는 입력 변수가 한 개일 때에만 사용할 수 있습니다. 예를 들어 아래와 같이 입력 변수가 x 하나인 수식에만 사용할 수 있습니다. 식 노드로 해당 식을 작성하..
안녕하세요. 지지비입니다. 이번 포스팅에서는 여러 열 리스트에 마우스가 올라간 부분의 행/열의 인덱스를 나타내는 프로그램을 만들어 보도록 하겠습니다. 응용하면 아래와 같이 마우스가 올라간 셀의 색깔을 바꿀 수 있습니다. 1. 이벤트 케이스 : 마우스 무브(Mouse Move) 이벤트 케이스의 이벤트는 Mouse Move를 사용합니다. 여러 열 리스트 위에서 마우스가 움직였을 때를 감지합니다. 2. 마우스 포인터의 위치를 행/열 인덱스로 변환 마우스 포인터의 위치를 행/열 인덱스로 변환하는 것은 이벤트 케이스 내에서 출력해주는 Coords(마우스의 위치)를 여러 열 리스트의 인보크 노드인 Point To Row Column을 사용합니다. 행/열 인덱스를 받아서 해당 셀의 색이 바뀌도록 해 주면 됩니다.
안녕하세요. 지지비입니다. 이번 시간에는 XY 그래프를 그림 파일로 저장하는 방법에 대해서 알아보도록 하겠습니다. 1. 그래프를 복사하여 붙여 넣기 첫 번째 방법은 프론트 패널에서 XY 그래프를 복사하여 붙여넣는 방법이 있습니다. 이 방법은 VI가 실행되지 않을 때에만 가능한 방법입니다. 그림판 같은 곳에 복사, 붙여넣기 후에 저장하는 방법입니다. 프론트 패널에서 XY 그래프를 클릭하여 선택한 후, 복사(Ctrl+c)를 해 줍니다. 원하는 곳에 붙여 넣기(Ctrl+v) 해 줍니다. 저는 엑셀에 붙여 넣기를 했습니다. 2. 인보크 노드를 이용하여 그림 파일로 저장하기 두 번째 방법은 인보크 노드(Invoke node)를 사용하여 XY 그래프를 그림 파일로 저장하는 방법입니다. 프론트 패널에서 XY 그래프를..
안녕하세요. 지지비입니다. 이번 포스팅에서는 이벤트 구조와 함께 E3631A를 GPIB 통신을 통해서 제어하는 방법에 대해서 알아보도록 하겠습니다. NI에서 제공하는 E3631A의 드라이버를 사용하지 않고 직접 SubVI를 만들어서 전압을 변경하는 프로그램을 만들어보도록 하겠습니다. 1. 프론트 패널 프론트 패널은 다음과 같이 만들어 보려고 합니다. 이 프로그램은 다음과 같은 기능이 있어야 할 것 같네요. [기능] 전압/전류 모니터링 기능 : 현재의 전압과 전류를 특정 시간 간격으로 읽어옵니다. 이벤트 구조의 timeout을 사용하면 되겠네요. 채널 선택 기능 : E3631A의 +6V, +25V, -25V 중 사용 할 채널을 선택할 수 있어야 합니다. 전압 설정 기능 이 기능은 곧 제가 만들어야 할 E3..
4K 해상도 모니터에서 랩뷰 2020 커뮤니티 에디션의 실행 화면입니다. (LG 27UL550 모델, 150%배율 사용) 시작 화면은 큰 문제가 없습니다. 사실 여기서부터 메뉴 글씨들이 약간 blur되어 있는 느낌입니다. 시작화면과 마찬가지로 메뉴 등의 글씨가 약간 뭉개져 있는 것 외에는 크게 문제될 만한 것은 없습니다. 고해상도에서 발생하는 아이콘이나 글씨가 엄청나게 작아지는 문제가 있지는 않은 것 같습니다. 프론트패널 및 블록 다이어그램에 코드를 추가해 보아도 괜찮아 보입니다. 하지만 NI MAX에서는 확실히 문제가 있어 보입니다. 왼쪽 디바이스 트리는 아주 작게 표시되고, 오른쪽 정보란은 글씨가 크게 표시되는 것을 볼 수 있습니다. 그래도 글씨가 작아서 UI가 깨져서 못쓰게 되는 정도는 아닙니다. ..
안녕하세요. 지지비입니다. 이번 포스팅에서는 E3631A라는 파워 서플라이를 원격으로 컨트롤하는 방법에 대해서 알아보도록 하겠습니다. Agilent E3631A는 랩뷰 드라이버를 지원하기 때문에 이전 포스팅 랩뷰 GPIB 통신 기초에서 랩뷰 드라이버를 다운로드하고 설치/사용하는 방법까지 작성해 두었습니다. 드라이버 다운로드와 설치 방법에 대해서는 해당 포스팅을 참고해 주시기 바랍니다. 먼저, 어떤 계측기이던간에 계측기 또는 구성한 시스템에 대한 이해가 필요합니다. E3631A는 Agilent(지금은 Keysight가 인수했지요.)의 대표적인 전력 공급기입니다. 6V,1A와 0~+/-25V, 1A의 총 3개의 출력이 가능한 파워 서플라이이고, 정전압 모드(Constant Voltage) 또는 정전류 모드(..
안녕하세요. 지지비입니다. 이번 포스팅에서는 NI-MAX를 이용하여 GPIB로 연결된 계측기가 랩뷰에서 잘 인식되는지를 확인하는 방법에 대해서 알아보도록 하겠습니다. 확인하기 전에 랩뷰에서 GPIB 통신을 위해서 준비해야 할 사항은 이전 포스팅 랩뷰 GPIB 통신 기초를 참고해 주시기 바랍니다. 1. 계측기 연결하기 먼저 계측기(E3631A)와 PC를 GPIB-USB-HS를 이용해서 연결해 주겠습니다. 아래 그림과 같이 연결했습니다. 2. NI-MAX 로 연결 확인하기 계측기를 연결하고 NI-MAX를 실행합니다. NI-MAX는 랩뷰를 설치할 때 자동으로 설치되기 때문에 따로 설치할 필요는 없습니다. 실행 창에 NI-MAX를 검색해서 실행합니다. 내 시스템 - 디바이스와 인터페이스 - NI GPIB-USB..
안녕하세요. 지지비입니다. 회사에서 자동화할 때 자주 사용하게 되는 바코드 리더기를 활용하는 방법에 대해서 알아보도록 하겠습니다. 1. 바코드 리더기 종료 문자 먼저 바코드 리더기에 대해서 알아보도록 하겠습니다. 대부분의 바코드 리더기는 종료 문자를 설정할 수 있도록 되어 있습니다. 예를 들어 '0353147' 라는 숫자형 문자열 바코드를 바코드 리더기로 찍었을 때, 맨 마지막에 엔터를 추가한다던가, 탭을 추가한다든가 하는 것입니다. '0353147(엔터)' 가 최종적으로 입력되는 것이지요. 엑셀에서 여러 개의 바코드를 연속으로 찍을 때에도 맨 마지막에 엔터가 들어가면 바로 밑의 셀에 연속해서 입력할 수 있으므로 유용한 기능입니다. 바코드 리더기의 종료 문자는 사용하고 있는 바코드 리더기의 메뉴얼을 보면..
이전 XY 그래프 만들기 글에서 아래와 같이 시프트 레지스터를 이용하여 데이터를 메모리에 저장하여 그래프를 그리는 방법을 소개했습니다. 이렇게 루프를 사용하여 측정을 하면서 XY 그래프를 그려야 하는 상황이 올 경우 for 루프나 while 루프 안에서 시프트 레지스터와 배열 인덱스, 클러스터 묶기 등으로 자리를 차지하는 경우 이것을 간단하게 상태 머신 SubVI를 통해서 간소화할 수 있습니다. 이렇게 상태머신을 활용한 SubVI를 제작하여 데이터를 메모리에 저장하고 그래프로 출력할 수 있습니다. 제가 사용한 SubVI의 내부 코드를 보면 아래와 같습니다. Write State Read State Init State
안녕하세요. 지지비입니다. 이번 포스팅에서는 함수 또는 루프의 실행 시간을 계산하는 방법에 대해서 알아보도록 하겠습니다. 1. 틱 카운트 (Tick Count) 함수나 루프의 실행시간을 측정하기 위해서 일반적으로 사용하는 함수는 틱 카운트(Tick Count (ms))함수입니다. 이전 포스팅에서 알아보았던 절대 시간을 얻는 함수(날짜/시간을 초로 얻기)와는 다르게, 틱 카운트 함수는 랩뷰에서 특정 시간이 지남에 따라 출력값이 증가합니다. 틱 카운트 함수의 값은 U32 숫자형으로 0~4,294,967,295 사이의 값을 일정하게 증가하면서 출력해주는 함수입니다. 최대값이 넘으면 다시 0이 됩니다. 즉, 이 함수로 측정할 수 있는 최대 시간은 0 ~ 4294967295 ms로 약 3000시간입니다. 따라서 ..