반응형
반응형

프로그래밍 115

파이썬 Python QT PyQt QGridLayout

PyQt QGridLayout 소개 QGridLayout를 사용하면 그리드의 균일한 행과 열에 위젯을 배치할 수 있습니다. 예를 들어 다음 그림에서는 4개의 열과 3개의 행으로 구성된 표를 보여 줍니다. 행과 열은 0부터 시작하는 인덱싱입니다. 즉, 첫 번째 행의 인덱스는 0이고 두 번째 행의 인덱스는 1입니다. 마찬가지로 첫 번째 열의 인덱스는 0이고 두 번째 열의 인덱스는 1입니다. 행과 열 사이의 교집합을 셀이라고 합니다. 셀은 위젯을 배치할 수 있는 공간입니다. 행과 열은 확장될 수 있습니다. 예를 들어 다음 그림에서는 첫 번째 행의 두 번째 열이 두 개의 열에 걸쳐 있고 두 번째 열의 두 번째 행이 두 개의 행에 걸쳐 있음을 보여 줍니다. 위젯이 포함된 셀보다 공간을 덜 차지하는 경우 다음 정렬..

파이썬 Python QT PyQt QFormLayout

PyQt QFormLayout 소개 데이터 입력 양식을 만들 때 필드를 행에 배치해야 하는 경우가 많습니다. 그리고 각 행에서 입력 위젯 옆에 레이블을 배치합니다. PyQt는 폼에 위젯을 정렬하는 편리한 2열 폼을 제공합니다. 왼쪽 열에는 레이블이 있고 오른쪽 열에는 입력 위젯이 있습니다. 양식 레이아웃을 만들려면 QFormLayout class를 사용합니다. layout = QFormLayout(self) self.setLayout(layout) # self is the parent widgetCode language: Python (python) 양식 레이아웃에 위젯을 추가하는 작업은 addRow()를 사용하여 수행할 수 있습니다. 예를 들어: layout.addRow('Field 1', input_..

파이썬 Python QT PyQt QPushButton

PyQt QPushButton 위젯 소개 PyQt 클래스를 사용하면 푸시 버튼 또는 토글 버튼이 될 수 있는 버튼 위젯을 만들 수 있습니다. 누름 단추를 만들려면 다음 단계를 수행합니다. 먼저 PyQt6.QtWidgets모듈에서 QPushButton를 가져옵니다. from PyQt6.QtWidgets import QPushButtonCode language: Parser3 (parser3) 둘째, 버튼에 나타나는 텍스트로 QPushButton()를 호출합니다. button = QPushButton('Click Me')Code language: Python (python) 셋째, clicked신호를 콜러블에 연결합니다. button.clicked.connect(self.on_clicked)Code lang..

파이썬 Python QT - PyQt QHBoxLayout

PyQt QHBoxLayout를 사용하여 위젯을 수평으로 정렬하는 방법을 알아봅니다. PyQt 레이아웃은 부모 위젯에 자식 위젯을 정렬하는 방법을 정의합니다. PyQt는 다양한 레이아웃 클래스를 지원하며 각 클래스에는 특정 상황에 맞는 레이아웃 전략이 있습니다. 레이아웃 클래스를 사용하는 단계는 다음과 같습니다. 먼저 레이아웃 클래스에서 레이아웃 개체를 만듭니다. 둘째, setLayout()메서드를 사용하여 레이아웃 개체를 부모 위젯의 layout 속성에 할당합니다. 셋째, layout 객체의 addWidget()방법을 사용하여 레이아웃에 위젯을 추가합니다. 또한 addLayout()를 사용하여 레이아웃에 레이아웃을 추가할 수 있습니다. 이렇게 하면 위젯을 정렬하기 위한 더 복잡한 레이아웃을 만들 수 있..

랩뷰 엑셀보고서 만들기

LabVIEW에서 Excel 파일 형태로 보고서를 작성하기 위한 Report Generation Toolkit에 대해서 소개해 드리겠습니다. LabVIEW 특정 버전까지는 관련 Toolkit을 별도로 다운로드해서 설치해 주어야 했지만, 최근 버전부터는 LabVIEW 설치할 때 default로 함께 설치됩니다. 관련 Toolkit이 설치되면 아래와 같은 경로에 lvlib 파일이 생기게 됩니다. 그리고 예제 탐색기에서 아래와 같은 위치에 "Excel 리포트" 예제 코드가 생깁니다. 관련 소스코드 위치는 아래와 같습니다. 참고로 ActiveX를 사용하여 Excel 데이터를 LabVIEW에서 사용할 수 있지만 개인적으로는 Report Generation Toolkit을 사용하는 게 좀 더 효율적이라고 생각합니다..

랩뷰 공유 라이브러리(Dll-Dynamic Link Library) 호출하기

DLL(Dynamic Linking Library) 파일 형태로 제공하는 API를 LabVIEW에서 호출하는 여러가지 방법들에 대해서 살펴보겠습니다. 이를 설명하기 위하여 Axsun사의 Laser를 USB 통신으로 전원 On/Off 해주는 프로그램 및 "user32.dll"을 이용하여 모니터 전원을 On/Off 해주는 프로그램을 구현해 보겠습니다. Axsun사에서는 자사의 Laser를 원격으로 제어할 수 있도록 "AxsunOCTControl.dll"을 제공합니다. 관련 DLL을 LabVIEW에서 호출할 때 프론트 패널 상에서 호출하는 방법을 살펴보겠습니다. 아래 그림에서와 같이 ".NET & Activex >> .NET 컨테이너"를 클릭합니다. 생성된 .NET 컨테이너 위에서 마우스 오른쪽을 클릭해서 "..

랩뷰 데이터 구조

문자열 데이터 타입 문자열은 디스플레이할 수 있거나 또는 디스플레이할 수 없는 일련의 ASCII 문자입니다. 문자열의 정보 및 데이터 포맷은 플랫폼에 의존적이지 않습니다. 일반적으로 문자열은 다음과 같은 작업에 사용됩니다: 단순 텍스트 메시지 생성. 인스트루먼트에 텍스트 명령을 보내 인스트루먼트를 통제하고, ASCII 또는 2진 문자열 형식으로 데이터 값을 반환한 후 이를 숫자형 값으로 변환. 숫자형 데이터를 디스크에 저장. ASCII 파일에 숫자형 데이터를 저장하려면, 디스크 파일에 데이터를 쓰기 전에 반드시 숫자형 데이터를 문자열로 변환해야 합니다. 대화 상자를 사용하여 사용자에게 지시 또는 입력요청. 프런트패널에서 문자열은 테이블, 문자 입력 박스 및 라벨로 나타납니다. LabVIEW에는 문자열 포..

랩뷰의 배열 및 클러스터

배열은 여러 원소와 차원으로 구성되며 컨트롤이나 인디케이터 둘 중 하나입니다. 배열 안에는 컨트롤과 인디케이터가 동시에 포함될 수 없습니다. 원소는 배열에 들어 있는 데이터 또는 값입니다. 차원은 배열의 길이, 높이 또는 폭입니다. 배열은 유사한 데이터의 모음을 다룰 때와 반복 수행한 계산 결과를 저장할 때 매우 유용합니다. 배열의 원소에는 순서가 있습니다. 배열의 각 원소에는 대응되는 인덱스 값이 있는데, 배열 인덱스를 사용해 그 배열의 특정 원소에 접근할 수 있습니다. NI LabVIEW 소프트웨어에서 배열 인덱스는 0을 기준으로 합니다. 즉, 1차원 (1D) 배열에 n개의 원소가 들어 있는 경우 인덱스 범위는 0에서 n – 1까지라는 뜻이며, 여기서 인덱스 0은 배열의 첫 번째 원소를 가리키고, 인..

랩뷰 시프트 레지스터 (Shift Register)

프로그래밍에서 루프를 사용할 때, 종종 이전에 LabVIEW에서 이미 실행된 루프 반복의 데이터를 사용해야 할 경우가 있습니다. 예를 들어 루프의 각 반복에서 데이터를 하나씩 수집하면서 가장 최근에 수집된 데이터 5 개의 평균을 계산해야 할 때, 루프의 이전 반복에서 나온 데이터를 간직하고 있어야 합니다. 시프트 레지스터 루프를 사용하여 이전 반복의 값을 다음 반복으로 전달하고자 할 때 시프트 레지스터를 사용합니다. 시프트 레지스터는 하나의 터미널 쌍으로 표시됩니다. 이 터미널 쌍은 루프 경계의 좌우의 세로선 상에서 정반대로 마주보며 위치하게 됩니다. 루프 오른쪽의 터미널에는 윗방향 화살표가 있고, 반복이 한 번 끝날 때마다 데이터를 저장합니다. 시프트 레지스터 오른쪽에 연결된 데이터는 LabVIEW에서..

랩뷰의 실행구조

실행 구조에는 그래픽 코드의 일부가 포함되어 있으며, 구조의 내부에서 코드가 실행되는 시기나 방법을 컨트롤합니다. 가장 일반적인 실행 구조는 While 루프, For 루프, 케이스 구조로써, 코드의 동일한 부분을 여러 번 실행하거나 일부 조건에 기반하여 코드의 다른 부분을 실행할 때 사용할 수 있습니다. 루프 While 루프 텍스트 기반 프로그래밍 언어의 Do 루프 또는 Repeat-Unitl 루프와 유사하게, While 루프는 그림 1에서 볼 수 있는 것과 같이 조건이 발생할 때까지 서브다이어그램을 실행합니다. (1) LabVIEW While 루프 | (2) 순서도 | (3) 유사 코드 그림 1은 LabVIEW의 While 루프, While 루프 기능을 나타내는 순서도와 While 루프와 유사한 기능을..

랩뷰의 디버깅 도구

LabVIEW에는 문제 코드 영역을 살펴보고 적절한 변경을 적용하기 위한 강력한 디버깅 도구가 포함되어 있습니다. 일반적으로 소프트웨어 버그에는 프로그램 실행을 중단시키는 버그와 나쁜 결과 또는 부정확한 동작을 발생시키는 두 가지 유형의 버그가 있습니다. 본 모듈은 두 가지 에러의 유형을 파악하고 문제를 해결하는 방법을 설명합니다. LabVIEW가 사용자의 VI를 실행할 수 없는 경우, LabVIEW는 실행 화살표를 깨진 아이콘으로 바꾸고 에러 리스트 윈도우에 VI가 깨진 특정한 이유를 나열합니다. 두번째 타입의 버그는 찾기가 더 어려지만, LabVIEW에는 사용자의 코드가 실행되는 것을 살펴볼 수 있는 여러 가지 도구가 제공되므로 보다 쉽게 확인 프로세스를 수행할 수 있습니다. 깨진 VI 수정하기 VI..

랩뷰의 기본적인 도구

LabVIEW 소프트웨어와 같은 그래픽 기반 프로그래밍 언어에서 마우스는 프로그래밍 환경과 연동할 수 있는 주요 수단입니다. 따라서 마우스 포인터는 선택, 와이어 연결, 텍스트 하이라이트 등 여러가지 작업을 수행해야 합니다. 본 모듈은 LabVIEW에서 마우스의 여러 기능 뿐 아니라 마우스로 태스크를 완성하는 방법에 대해 살펴봅니다. 또한 본 모듈에서는 VI를 변경할 수 있는 몇 가지 중요한 방법인 바로 가기 메뉴, 프로퍼티 대화 상자, 도구 모음 등을 설명합니다. 도구 선택하기 LabVIEW에 있는 도구를 사용하여 VI를 생성, 수정 및 디버깅할 수 있습니다. 마우스 커서의 특정한 작업 모드를 도구라고 함. 커서의 작업 모드는 선택한 도구의 아이콘 모양으로 표시됩니다. LabVIEW는 마우스의 현재 위..

그래픽기반 프로그래밍 언어 랩뷰

LabVIEW는 데이터 흐름 모델에 따라 VI를 실행합니다. 블록다이어그램 노드는 필요한 모든 입력을 받아야 실행될 수 있습니다. 노드가 실행되면, 출력 데이터를 생성한 후 이를 데이터 흐름 경로에 따라 다음 순서에 있는 노드로 전달합니다. 노드를 통과하는 데이터의 흐름은 블록다이어그램에 있는 VI 및 함수의 실행 순서를 결정합니다. Visual Basic, C++, Java 및 대부분의 텍스트 기반 프로그래밍 언어에서는 프로그램 실행에 있어 흐름 제어 모델을 따릅니다. 흐름 제어 모델에서는 프로그램 원소의 순서가 프로그램의 실행 순서를 결정합니다. 데이터 흐름 프로그래밍의 예로 그림 1과 같이 두 숫자를 더한 후에 그 합에서 50.00을 빼는 블록다이어그램의 경우를 생각해 보도록 합니다. 이 경우 블록..

LabVIEW 랩뷰 환경의 기본 사항

LabVIEW 프로그램이 버추얼 인스트루먼트 또는 VI로 불리는 이유는 오실로스코프 및 멀티미터와 같은 물리적인 인스트루먼트의 외형과 기능을 프로그램 내에서 구현하기 때문입니다. LabVIEW에는 데이터 수집, 분석, 디스플레이, 저장에 필요한 도구와 사용자가 작성한 코드의 문제를 해결하는데 도움이 되는 도구가 포괄적으로 들어있습니다. 새로운 VI를 생성하면 두 개의 윈도우 즉, 프런트패널 윈도우와 블록다이어그램이 나타납니다. 프런트패널 새 VI 또는 기존 VI를 열면 VI의 프런트패널 윈도우가 나타납니다. 프런트패널 윈도우는 VI의 사용자 인터페이스입니다. 그림 1은 프런트패널 윈도우의 예입니다. (1) 프런트패널 윈도우 | (2) 도구 모음 | (3) 컨트롤 팔레트 그림 1. 프런트패널의 예 컨트롤 ..

랩뷰를 이용하여 시리얼 통신하기

시리얼 통신은 RS-232, RS-485, RS-422등 다양한 종류가 있습니다. LabVIEW에서 제공하는 시리얼 통신을 하기 위한 VISA 함수를 이용하여 시리얼 통신 프로그램을 함께 구현해보겠습니다. VISA (Virtual Instrument Software Architecture)는 계측 시스템의 설정, 프로그래밍 및 문제 해결하기 위한 표준입니다. NI-VISA는 National Instruments에서 개발한 것으로, GPIB, VXI, PXI, 시리얼 (RS232/RS485), 이더넷/LXI, USB 및/또는 IEEE 1394 계측기와의 통신을 단일화하고 인스트루먼트 컨트롤 프로그램을 간소화시켜줍니다. 따라서 LabVIEW로 시리얼 통신을 하려면 반드시 NI-VISA 드라이버를 설치해야 합..

NI DAQ와 랩뷰를 이용한 구적 엔코더 측정 방법

엔코더는 동작이나 위치를 측정할 수 있는 전자 기계 장치입니다. 대부분의 엔코더는 광학 센서를 사용하여 펄스 트레인의 형태로 전기 신호를 제공하며, 이는 모션, 방향 또는 위치로 변환 될 수 있습니다. 로터리 엔코더는 샤프트의 회전 운동을 측정하는데 사용됩니다. 그림 1은 LED(Light-Emitting Diode), 디스크 및 디스크 반대쪽에 있는 광 감지기로 구성된 회전식 엔코더의 기본 구성 요소를 보여줍니다. 회전축에 장착된 디스크에는 디스크에 코딩된 불투명하고 투명한 섹터 패턴이 있습니다. 디스크가 회전하면 불투명 부분이 빛을 차단하고 유리가 투명한 곳에서는 빛이 통과 할 수 있습니다. 이것은 구형파 펄스를 생성하여 위치 또는 모션으로 해석할 수 있습니다. 엔코더는 일반적으로 회전당 100~6,..

랩뷰 디자인 패턴: 상태 머신

상태 머신은 LabVIEW 개발자들이 어플리케이션을 신속히 구축할 때 가장 자주 사용하는 기본적인 아키텍처 중 하나입니다. 상태 머신 아키텍처는 상태 다이어그램 또는 흐름 차트가 표현하는 복합 의사결정 알고리즘을 구현하는 데 사용할 수 있습니다. 보다 정확하게 설명하면, 상태 머신은 다이어그램의 각 상태에 대해 특정한 작업을 수행하는 “무어 머신”에 의해 표현되는 모든 알고리즘을 구현합니다. 상태 머신은 구분이 명확한 상태가 존재하는 어플리케이션에 사용됩니다. 각 상태는 하나 또는 여러 상태가 될 수 있으며, 프로세스 흐름을 끝마칠 수도 있습니다. 상태 머신은 사용자 입력 또는 상태 내부에 연산 결과에 따라 어떤 상태가 다음에 실행될지 결정됩니다. 대부분의 어플리케이션들에는 여러 동작이 수행될 수 있는 ..

랩뷰 디자인패턴 유형 및 구현방법

랩뷰에서 사용되는 디자인 패턴의 유형을 알아보고 각 디자인 패턴 구현방법에 대해 알아보겠습니다. LabVIEW에서는 다른 프로그램들처럼 Template 형태로 자주 사용하는 디자인 패턴들에 대해서 코드를 제공합니다. 아래 그림에서처럼 "파일>>새로 만들기"를 클릭하면 "새로 만들기"라고 하는 다이얼로그 창이 뜨면서 6가지의 디자인 패턴을 위한 Template을 제공합니다. 마스터/슬레이브 디자인 패턴 마스터/슬레이브 디자인 패턴은 알림자를 사용하는데, 이 경우 마스터 루프에 동기화되어서 슬레이브 루프가 실행이 되지만, 버퍼 구조를 가지고 있지 않기 때문에 동작 중에 데이터 손실이 발생할 수 있습니다. 따라서 이 디자인 패턴은 데이터 손실이 발생해도 상관없고, 하나의 마스터 루프에서 여러 개의 슬레이브 루..

PID 제어 이론

Proportional-Integral-Derivative(PID) 제어는 산업에서 가장 일반적으로 사용되는 제어 알고리즘이며 산업 제어에서 보편적으로 받아들여지고 있습니다. PID 컨트롤러의 인기는 부분적으로는 광범위한 작동 조건에서 강력한 성능에 기인할 수 있으며, 부분적으로는 엔지니어가 간단하고 간단한 방식으로 PID 컨트롤러를 작동할 수 있는 기능적 단순성에 기인할 수 있습니다. 이름에서 알 수 있듯이 PID 알고리즘은 최적의 반응을 얻기 위해 변동하는 세 가지 기본 계수, 즉 비례 계수, 적분 계수 및 미분 계수로 구성됩니다. 이 논문에서는 폐쇄 루프 시스템, 고전적 PID 이론 및 폐쇄 루프 제어 시스템 튜닝의 효과에 대해 설명을 하고 LabVIEW의 PID Toolkit에 대해서도 설명합니다..

랩뷰를 이용한 진동 분석 및 신호 처리

사운드 및 진동 트랜스듀서는 복잡한 시계열 파형을 생성하며, 여기에는 많은 특정 신호가 포함됩니다. 이러한 다양한 진동 시그니처를 이해하고 추세 분석을 위해 적절히 추출하는 방법을 이해하는 것이 중요합니다. 그림 1과 같이 다양한 소리와 진동 현상에 해당하는 다양한 유형의 신호 복잡성이 있습니다: 일부 신호는 지속 시간이 길지만 문지름 및 버즈 노이즈와 같은 대역폭이 좁습니다. 일부 신호는 지속 시간이 짧지만 충격 또는 과도 현상과 같은 넓은 대역폭을 갖습니다. 일부 신호는 감쇠된 공진과 같은 짧은 시간과 좁은 대역폭을 가지고 있습니다. 일부 신호에는 RPM 또는 기계 속도에 따라 노이즈를 생성하는 불균형 샤프트와 같이 시간에 따라 변하는 대역폭이 있습니다. 그림 1. 다양한 진동 신호 복잡성 유형 모든..

반응형
반응형