기능 프로토타이핑 시리즈: 알고리즘 엔지니어링

개요

기능 프로토타이핑 시리즈는 프로토타이핑 프로세스를 안내하는 문서 모음입니다. 주요 개념, 프로토타이핑의 이점, 제품 선택 관련 논의 및 추가 기술 리소스에 대해 읽어보십시오.

내용

알고리즘 엔지니어링

알고리즘 엔지니어링은 적용된 알고리즘 설계를 일컫는 용어입니다. 이는 대략적인 아이디어만 잡혀 있는 알고리즘을 사용하기 쉽고 강력하며 잘 테스트된 상태로 구현해 가는 프로세스를 나타냅니다. 프로토타입에서 원하는 기능을 제공하는 알고리즘을 구현하는 것은 전체 제품 개발 수명 주기에서 가장 어려운 부분일지 모르지만 가장 뿌듯한 일이기도 합니다. 실제 I/O를 적용하면 알고리즘의 기능이 눈 앞에서 실제로 구현되는 것을 볼 수 있습니다. 

이 문서에서는 개발자가 알고리즘을 설계할 때 경험할 수 있는 몇 가지 위험과 이러한 문제를 극복하는 데 Graphical System Design을 사용하면 어떤 이점이 있는지 살펴봅니다.

알고리즘 엔지니어링 과제 

기능 프로토타입에서 알고리즘 구현이 어려운 이유에는 여러 가지가 있습니다.

프로그래밍 제한.

FPGA (Field-Programmable Gate Arrays)와 같이 I/O 기능에 따라 선택되는 컨트롤 시스템 또는 프로세서는 개발자가 프로그래밍 제한을 받는 경우가 많습니다. 여러 플랫폼을 프로그래밍하려면 일반적으로 소수의 시스템 레벨 설계자만 능숙하게 다룰 수 있는 프로그래밍 지식이 필요합니다.

기본 알고리즘 구현

기본 기능을 위한 하위 레벨 알고리즘 구현에는 시간이 걸립니다. 프로토타이핑은 속도가 생명이기 때문에 일반적으로 설계자는 기존 코드 부족으로 인해 잘 알려진 알고리즘을 처음부터 구현하는 데 시간을 허비할 여유가 없습니다.

여러 플랫폼에 대해 알고리즘 재작업

기능 프로토타입은 발전하기 때문에 다른 유형의 시스템에 알고리즘을 이식하기 위해서는 알고리즘을 여러 번 다시 살펴봐야 합니다. 코드는 서로 다른 런타임 환경 간에 거의 작동하지 않기 때문에 프로토타이핑에서 배포에 이르기까지 어플리케이션을 확장하기 어렵습니다.

테스트 및 확인

시스템이 제품 개발 후반까지 필요한 기능을 모두 갖췄는지 여부를 확신하기 어렵고 처음부터 다시 시작하려면 비용이 많이 듭니다. 예를 들어 프로세서가 필요한 수의 병렬 작업을 충분히 빠르게 수행하지 못할 수 있습니다. 따라서 적절한 사이클 시간을 달성하지 못할 수 있습니다. 또한 프로세서 집약적인 분석을 리얼타임으로 처리하지 못할 수도 있습니다.

알고리즘 엔지니어링에 Graphical System Design 활용 시 얻을 수 있는 이점

Graphical System Design은 기능 프로토타입의 엔지니어링 알고리즘에 잠재된 여러 위험을 해결하고 완화합니다. Graphical System Design는 직관적인 그래픽 프로그래밍과 다양한 COTS (상용 기성품) 하드웨어를 결합하여 설계 과제를 해결하는 접근 방식입니다. 이 방식을 사용하면 설계의 모든 단계에서 단일 환경을 사용할 수 있습니다. 이제 이 접근 방식을 통해 위에서 제기한 과제를 구체적으로 어떻게 해결할 수 있는지 자세히 살펴보겠습니다.

다중 계산 모델

Graphical System Design의 장점 중 하나는 프로그래머가 구현된 계산 모델 (MoC)에 관계없이 알고리즘을 생성할 수 있다는 것입니다. 프로그래머는 알고리즘 코드가 계속해서 복잡해짐에 따라 코딩 기능을 확장하기 위해 다양한 MoC를 사용해야 합니다. 다음은 Graphical System Design에 사용할 수 있는 몇 가지 계산 모델입니다.

데이터 흐름

데이터 흐름은 NI LabVIEW 소프트웨어에서 가장 흔히 사용되는 MoC입니다. 데이터 흐름에서 작업을 수행하려면 작업을 실행하기 전에 개발자가 모든 입력에 데이터를 삽입해야 합니다. 데이터 흐름은 이를 통해 병렬 프로세스와 같은 어플리케이션을 쉽게 구현할 수 있는 직관적인 코딩 구조입니다.

텍스트 기반 연산

텍스트 기반 연산은 복잡한 함수를 쉽게 생성할 수 있는 또 다른 도구입니다. 텍스트 기반 연산은 스크립트 설명 형태로 작성하는 것이 더 쉬운 복잡한 알고리즘을 사람이 읽을 수 있도록 구현한 것입니다. 텍스트 기반 연산의 예로는 수식 노드와 MATLAB 스크립트 노드가 있습니다. LabVIEW를 사용하면 알고리즘 개발, 신호 처리 개념 탐색 또는 결과 분석 등 어떤 작업을 하든 알고리즘 개발에 가장 효과적인 구문을 선택할 수 있습니다.

C 코드

사용하는 알고리즘이 원래 C 또는 C++로 생성된 경우가 있습니다. 이 경우 더 이상 이전 작업을 버릴 필요가 없습니다. 대신 인라인 C 노드 또는 라이브러리 함수 호출 노드를 사용하여 LabVIEW 내에서 이전 코드를 직접 호출할 수 있습니다. 기존의 C 코드에 인라인 C 노드를 사용하거나 작은 숫자형 또는 배열 알고리즘을 구현하고 라이브러리 함수 호출 노드를 사용하여 DLL 또는 공유 라이브러리의 C 코드에 액세스합니다.

LabVIEW에서 Python, MathWorks® MATLAB® 소프트웨어 및 C/C++ 사용에 대해 자세히 알아보십시오

개방형 소프트웨어 아키텍처

LabVIEW 플랫폼은 수년 동안 수많은 설계 분야에서 광범위하게 사용되어 왔으며 그 결과 다양한 설계와 시뮬레이션 도구를 데이터와 통합해야 할 필요성이 대두되었습니다. LabVIEW는 다양한 통합 도구, 라이브러리, 파일 포맷과 상호 호환 가능합니다. 또한 LabVIEW는 다음을 비롯한 기타 소프트웨어 도구 및 측정 리소스와 광범위한 표준 통합이 가능합니다.

  • DLL, 공유 라이브러리
  • ActiveX, COM 및 .NET(Microsoft)
  • DDE, TCP/IP, UDP, Ethernet, Bluetooth
  • CAN, DeviceNet, Modbus, OPC
  • USB, IEEE 1394, RS232/485, GPIB
  • 데이터베이스(ADO, SQL 등)

이러한 도구를 사용하면 거의 모든 종류의 측정 및 컨트롤 디바이스의 데이터와 통합할 수 있습니다. 개발자는 LabVIEW를 하드웨어 통신용 범용 표준과 결합하여 향후 수년간 호환성과 확장성을 확보할 수 있습니다.

LabVIEW 접근 방식

연산, 신호 처리, 확률, 컨트롤의 다양한 기존 알고리즘을 다루는 LabVIEW의 수백 가지 함수는 모든 사용자 정의 알고리즘의 필수 구성 요소입니다. 이러한 함수를 이용하면 엔지니어가 하위 레벨 코드를 작성해야 하는 부담을 덜고 구현이 아니라 솔루션에 집중할 수 있는 시간을 벌 수 있습니다.

LabVIEW를 사용하면 실제 데이터를 쉽게 수집할 수 있기 때문에 사용자는 알고리즘을 튜닝하는 반복적인 접근 방식으로 실제 데이터를 사용하여 알고리즘을 테스트할 수 있습니다. 이 대화식 테스트 접근 방식을 통해 다양한 함수를 실험하여 필요한 예상 결과를 얻을 수 있는지 확인할 수 있습니다. 예를 들어 필터를 사용하여 신호를 처리할 때 다양한 솔루션 중에서 선택할 수 있고 필요한 실제 신호를 수집할 수 있으며 결과를 그래프나 파일로 볼 수 있습니다. 결과가 어플리케이션에 적합하지 않은 경우, 다른 필터를 선택할 수 있습니다. 종종 실제 신호를 수집하여 알고리즘에 적용한 후 시간을 들여 소프트웨어에서 시뮬레이션하는 것이 더 쉽습니다.

 

COTS 하드웨어

상용 기성품 하드웨어는 프로토타이핑을 신속하게 시작할 수 있는 경제적인 방법을 제공할 뿐만 아니라 Graphical System Design을 통해 통합 I/O를 사용하여 많은 수의 다른 타겟에서 기본 알고리즘을 구현하도록 지원하기도 합니다. NI CompactRIOPXI 플랫폼에 있는 것과 같은 리얼타임 프로세서를 사용하여 I/O를 결정성 높은 컨트롤과 통합하여 신뢰도를 높입니다. 이는 HIL (Hardware-in-the-loop) 어플리케이션과 같이 하드웨어와 소프트웨어를 긴밀하게 통합하여 컨트롤 알고리즘이 컨트롤하려는 환경을 동적으로 시뮬레이션해야 하는 경우 필수입니다.

FPGA와 함께 리얼타임 프로세서만 사용할 수 있다는 점 외에도 LabVIEW를 어플리케이션에 통합하여 각기 다른 타입의 COTS 하드웨어 간에 코드를 전송할 수 있습니다. 예를 들어 실제 I/O를 위해 데스크탑에서 신호를 분석하는 코드를 전송해 코드의 상당 부분을 다시 작성할 필요 없이 PXI 모듈 또는 임베디드 프로세서와 같은 폼 팩터에서 사용할 수 있습니다. 실제로 데스크탑에서 프로토타입을 먼저 설계하고 확인한 다음 임베디드 시스템에 배포하기 위해 32비트 프로세서로 전송하면 개발 시간을 크게 단축하고 설계 제약 조건을 간과해 발생하는 재작업으로 인한 비용을 절약할 수 있습니다.

시뮬레이션 및 컨트롤 설계용 도구

LabVIEW는 개방형 플랫폼이기 때문에 측정 데이터를 시뮬레이션된 결과에 매핑할 수 있습니다. 동작을 모델링하기 위해 시뮬레이션 데이터와 물리적 데이터를 교환할 수도 있습니다. 또한 시뮬레이션된 자극으로 물리적으로 테스트하여 강력한 테스트 환경을 만들 수 있습니다.

LabVIEW에서 시뮬레이션을 사용하여 설계 기준에 맞춰 성능을 확인하고 예측합니다. 초기에 설계를 평가할 수 있도록 설계를 별도의 시뮬레이션 도구로 가져올 수 있습니다. 다음 단계는 자동화된 레이아웃 또는 모델 형성과 빌드 프로세스를 자동화하는 도구를 포함합니다. 시스템 상태 정보와 출력 신호(해당되는 경우)를 저장하면 어플리케이션을 디버그하고 어플리케이션 성능의 스펙을 설정하는 데 도움이 됩니다.

LabVIEW Control Design and Simulation Module에 있는 것과 같은 컨트롤 블록다이어그램을 사용하여 선형, 비선형, 이산형 또는 연속형 컨트롤 시스템을 설계합니다. 이 추상화된 프로그래밍 스타일을 사용하면 전달 함수 블록, 적분기, 미분기, 피드백 루프와 같은 기존의 컨트롤 개념을 사용하여 프로그래밍할 수 있습니다. 이 상위 레벨의 블록다이어그램을 사용하여 개념 레벨에서 솔루션을 개발할 수 있으며, 이 레벨에서 시스템에 대한 이전의 경험과 지식을 활용할 수 있습니다.

그림 1. 컨트롤 설계와 시뮬레이션을 사용한 PID Control

 다음 단계

프로토타입의 기능을 구현하는 알고리즘 엔지니어링은 어려운 과정일 수 있습니다. Graphical System Design은 직관적인 그래픽 소프트웨어와 COTS 하드웨어 간의 긴밀한 통합을 통해 알고리즘 엔지니어링과 관련된 문제를 극복하여 프로토타입을 더 저렴한 비용으로 빠르게 가동할 수 있는 접근 방식입니다.

기존에 주먹구구식으로 설계하는 방식에서 소프트웨어를 사용하여 설계하는 방식으로 전환할 때 기술적인 면에 대해 자세히 알아보려면 아래의 관련 자료를 참조하십시오.