MATLAB programowanie sprzętu - część 1

Zgodnie z tytułem: MATLAB programowanie sprzętu - obecnie zajmiemy się przygotowaniem MATLABa do programowania aparatury kontrolno-pomiarowej. Będzie więcej praktyki, a mniej teorii. Postawione zadanie jest proste: zbudować system pomiarowy do badania odpowiedzi obiektów elektrycznych na zadane wymuszenie. Z tego wpisu dowiecie się więc jak nawiązać połączenie z generatorem sygnałów oraz kartą pomiarową za pomocą programu MATLAB.

MATLAB programowanie sprzętu

Wprowadzenie do problematyki programowania sprzętu jest w poprzednim wpisie. Dzisiaj zajmiemy się konkretnym problemem.

Badanie właściwości obiektów i identyfikacja ich parametrów najczęściej polega na podaniu na wejście obiektu znanego sygnału wymuszającego i rejestracji jego odpowiedzi na wyjściu. W przypadku obiektów elektrycznych bądź elektronicznych, napięciowe sygnały wymuszające są generowane przez generatory arbitralne, a rejestracja sygnałów ma wyjściu odbywa się za pomocą karty pomiarowej. Schemat takiego systemu pomiarowego przedstawia rysunek.

MATLAB programowanie sprzętu

Tyle teorii. Za pomocą MATLABa chcemy przejąć kontrolę nad generatorem i kartą pomiarową, w taki sposób aby móc sterować obydwoma przyrządami i zarejestrować sygnały wejściowe i wyjściowe w celu ich analizy. Takie badanie dostarcza wiedzy na temat cech obiektu.

Krok 1: Instalacja sterowników

W MATLAB programowanie sprzętu wymaga poczynienia pewnych kroków przygotowawczych. W naszym systemie pomiarowym dysponujemy sprzętem różnych producentów, komunikującym się z komputerem za pomocą różnych interfejsów/protokołów. Generator to RIGOL DG1022, a karta pomiarowa to NI USB-6002. Zanim przejdziemy do programowania należy więc w systemie operacyjnym zainstalować sterowniki. Można to zrobić ściągając odpowiednie pliki ze strony producenta używanego sprzętu lub posłużyć się kreatorem z poziomu MATLABa. W naszym przypadku skorzystamy z drugiej, łatwiejszej opcji.

Przyrządy pomiarowe

Aby MATLAB (komputer) porozumiał się z generatorem, w systemie należy zainstalować sterowniki Virtual Instrument Software Architecture w skrócie VISA, które są interfejsem programowym (API) do komunikacji z aparaturą kontrolno-pomiarową. Można to zrobić z poziomu MATLABa klikając na Add-Ons, a następnie Get Hardware Support Packages. W polu wyszukiwania wpisujemy VISA i instalujemy pakiet National Instruments VISA and ICP Interfaces. Od tego momentu generator, jak również inna aparatura pomiarowa będzie widoczna z poziomu MATLABa i będzie można nawiązać komunikację przez interfejs VISA.

Karta pomiarowa

W przypadku karty pomiarowej NI-USB-6002 jak i każdej innej produkcji NI, postępujemy podobnie, tyle, że w oknie Add-Ons wyszukujemy pakiet NI-DAQmx. Zawiera on sterowniki do komunikacji z kartami akwizycji danych (DAQ) produkcji National Instruments. Po instalacji sterowników karta będzie widoczna w systemie operacyjnym i w MATLABie.

Zarówno instalację sterowników do aparatury pomiarowej jak i obsługi kart akwizycji danych można przeprowadzić niezależnie ściągając odpowiednie pliki ze strony producentów. Jest to alternatywny sposób, w przypadku gdy w natrafimy na problemy z instalacją w MATLABie, lub nie posiadamy dostępu do konta MathWorks z odpowiednią licencją. 

Krok 2: Testowanie połączenia

Najprostszą metodą sprawdzenia czy sterowniki są zainstalowane poprawnie, a urządzenie jest widoczne, jest użycie gotowych aplikacji, które znajdują się w zakładce APPS MATLABa: Test & Measurement Tool dla aparatury pomiarowej oraz Analog Input Recorder dla kart akwizycji danych. Z poziomu tych aplikacji można również przeprowadzić prostą konfiguracje przyrządów oraz wysłać polecenia sterujące. Na poniższym rysunku widać okno aplikacji do obsługi przyrządów pomiarowych z zaznaczonym identyfikatorem urządzenia oraz przyciskiem „połącz”. W przypadku gdy urządzenie jest niewidoczne, można użyć przycisku „odśwież” w lewym górnym rogu.

Przyrządy pomiarowe

O ile gotowe aplikacje pozwalają na testowanie połączenia z przyrządami to w większości przypadków budowa systemu pomiarowego będzie wymagać napisania skryptu. Funkcje Instrument Control Toolbox umożliwiają komunikację z przyrządami pomiarowymi takimi jak generatory (nasz przypadek), multimetry, oscyloskopy i inne.  Za pośrednictwem interfejsu VISA mamy możliwość komunikacji z urządzaniami za pomocą poleceń tekstowych ogólnie stosowanego standardu SCPI (Standard Commands for Programmable Instruments). Poniżej znajduje szkielet standardowego programu do nawiązania komunikacji z przyrządem pomiarowym.

% Informacja o interfejsie VISA
vinfo = instrhwinfo('visa','ni');

% Pobranie identyfikatora urządzenia
DeviceID = vinfo.ObjectConstructorName;
strDeviceID = char(DeviceID(1))
strDeviceID = [strDeviceID(13:47) '::0::INSTR']

% Utworzenie obiektu urządzenia o konkretnym identyfikatorze
obj1 = instrfind('Type', 'visa-usb', 'RsrcName', strDeviceID, 'Tag', '');

% Utworzenie aktywnego połączenia z urządzeniem 
fopen(obj1);

% Wysłanie komendy SCPI (generowanie sygnału sinusoidalnego o danych parametrach)
fprintf(obj1, ['APPL:SIN 50,4,0']); 

Składnia komend SCPI jest ustandaryzowana i zazwyczaj można ją znaleźć w instrukcji programowania danego przyrządu pomiarowego.

Karta pomiarowa

Do programowania kart akwizycji danych służą funkcje Data Acquisition Toolbox. Za ich pośrednictwem można skonfigurować kartę pomiarową, sterować procesem akwizycji i na bieżąco analizować dane pomiarowe. Standardowy zestaw instrukcji służący do nawiązania połączenia znajduje się poniżej.

% Zmienne definiowane przez użytkownika:
% analog_input_id = ... % numer wejścia analogowego np. ‘ai0’
% fpr = ... % częstotliwość próbkowania sygnału
% to = ... % czas obserwacji sygnału (okno czasowe)
% range = ... % zakres pomiarowy wejścia analogowego
% terminal_config = ‘...’ tryb pracy wejścia analogowego: SingleEnded lub Differential

% lista urządzeń DAQ i ich parametry
d = daq.getDevices;              

% utworzenie sesji do obsługi urządzeń DAQ
s = daq.createSession('ni');     
                                 

% Przez odwołania do obiektu 's' można zmieniać parametry akwizycji sygnału
s.Rate = fpr;                   % ustawienie częstotliwości próbkowania
s.DurationInSeconds = to;       % ustawienie czasu obserwacji sygnału
 
% otwarcie kanału akwizycji sygnału dla sesji 's' i urządzenia o identyfikatorze ID (odczytanego z pozycji ID sesji 's'), wejścia analogowego karty 'ai0' w trybie pomiaru napięcia 'Voltage'

ch = addAnalogInputChannel(s,d.ID,analog_input_id,'Voltage'); 

% ustawienie zakresu pomiarowego i trybu pracy wejścia
ch.Range = [-range, range]; 
ch.TerminalConfig = terminal_config;

% Rozpoczęcie akwizycji sygnału 
data = s.startForeground();         

Podsumowanie

To jest pierwsza część z cyklu MATLAB programowanie sprzętu. Praca ze aparaturą pomiarową jest specyficzna i trudno przedstawić uniwersalne reguły postępowania. Wszystko zależy od wybranego urządzenia, interfejsu i sposobu komunikacji. Powyżej zaprezentowano przykładowe rozwiązanie dla generatora RIGOL i karty pomiarowej NI. Należy traktować to jako przykład i punkt wyjścia, gdyż dla innego sprzętu konfiguracja może wyglądać nieco inaczej. W następnej części zostanie omówiony główny program do sterowania sprzętem oraz pętla do akwizycji i wizualizacji danych pomiarowych na bieżąco na ekranie monitora.  

(Visited 105 times, 1 visits today)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *