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 na wyjściu odbywa się za pomocą karty pomiarowej. Schemat takiego systemu pomiarowego przedstawia rysunek.
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.